Commit Graph

662 Commits

Author SHA1 Message Date
Shaun Arman
af822d5d57 fix(ci): use public rust:1.82-bookworm image instead of custom image
Some checks failed
Test / frontend-typecheck (pull_request) Failing after 15s
Test / frontend-tests (pull_request) Failing after 19s
Test / rust-tests (pull_request) Failing after 1m42s
Test / rust-clippy (pull_request) Failing after 1m49s
Test / rust-fmt-check (pull_request) Failing after 1m57s
PR Review Automation / review (pull_request) Failing after 4m52s
Replace custom CI image with public rust image to fix workflow failures.
Add Node.js installation step for rust-fmt-check job.

The custom image (gitea.tftsr.com:3000/sarman/trcaa-linux-amd64:rust1.88-node22)
needs to be built via build-images workflow first.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 14:37:15 -05:00
Shaun Arman
093495a653 feat: full copy from apollo_nxt-trcaa with complete sanitization
Some checks failed
Test / rust-fmt-check (pull_request) Failing after 0s
Test / rust-clippy (pull_request) Failing after 1s
Test / rust-tests (pull_request) Failing after 0s
Test / frontend-typecheck (pull_request) Failing after 16s
Test / frontend-tests (pull_request) Failing after 18s
PR Review Automation / review (pull_request) Failing after 4m13s
Complete backport of all features from apollo_nxt-trcaa repository:
- Three-tier shell execution safety system (Tier 1: auto, Tier 2: approve, Tier 3: deny)
- Ollama function calling with tool use support
- AI provider tool calling auto-detection
- kubectl binary bundling and management
- kubeconfig upload and context management
- Shell approval modal with real-time UI
- MCP protocol HTTP transport with custom headers
- Enhanced security audit logging
- Comprehensive test coverage (275+ tests)
- Updated CI/CD workflows for Gitea Actions
- Complete documentation (ADRs, wiki, release notes)

Sanitization applied to all files:
- Removed all MSI, Motorola, VNXT, Vesta references
- Replaced internal infrastructure references with TFTSR equivalents
- Updated all URLs and API endpoints
- Sanitized commit history references in documentation

Technical changes:
- New modules: shell/classifier, shell/executor, shell/kubectl, shell/kubeconfig
- Enhanced AI providers: ollama.rs, openai.rs with function calling
- New Tauri commands: shell execution, kubeconfig management, tool calling detection
- Database migrations: shell_execution_audit table
- Frontend: ShellApprovalModal, ShellExecution, KubeconfigManager pages
- CI/CD: kubectl bundling, multi-platform builds, Gitea Actions integration

Version: 1.0.8

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 14:12:43 -05:00
036f1111f7 chore: create .renovatebot directory
All checks were successful
Auto Tag / autotag (push) Successful in 7s
Auto Tag / wiki-sync (push) Successful in 7s
Test / rust-fmt-check (push) Successful in 1m23s
Auto Tag / changelog (push) Successful in 1m27s
Test / frontend-typecheck (push) Successful in 1m34s
Test / frontend-tests (push) Successful in 1m33s
Test / rust-clippy (push) Successful in 4m5s
Test / rust-tests (push) Successful in 6m50s
Auto Tag / build-macos-arm64 (push) Successful in 9m40s
Auto Tag / build-linux-amd64 (push) Successful in 10m11s
Auto Tag / build-windows-amd64 (push) Successful in 12m17s
Auto Tag / build-linux-arm64 (push) Successful in 12m26s
2026-06-05 19:10:49 +00:00
68a1ce95a5 chore: add renovate bot workflow
Some checks failed
Auto Tag / changelog (push) Blocked by required conditions
Auto Tag / build-linux-amd64 (push) Blocked by required conditions
Auto Tag / build-windows-amd64 (push) Blocked by required conditions
Auto Tag / build-macos-arm64 (push) Blocked by required conditions
Auto Tag / build-linux-arm64 (push) Blocked by required conditions
Test / rust-clippy (push) Waiting to run
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / wiki-sync (push) Has been cancelled
Test / rust-fmt-check (push) Has been cancelled
Auto Tag / autotag (push) Has been cancelled
2026-06-05 19:10:44 +00:00
gitea-actions[bot]
1359e398de chore: update CHANGELOG.md for v1.0.8 [skip ci] 2026-06-05 18:40:05 +00:00
864e2da492 Merge pull request 'fix: align Tauri npm packages with Rust crate versions' (#68) from fix/tauri-version-mismatch into master
All checks were successful
Auto Tag / autotag (push) Successful in 6s
Auto Tag / wiki-sync (push) Successful in 6s
Test / rust-fmt-check (push) Successful in 1m22s
Auto Tag / changelog (push) Successful in 1m22s
Test / frontend-typecheck (push) Successful in 1m28s
Test / frontend-tests (push) Successful in 1m34s
Test / rust-clippy (push) Successful in 4m0s
Test / rust-tests (push) Successful in 6m30s
Auto Tag / build-linux-amd64 (push) Successful in 9m1s
Auto Tag / build-windows-amd64 (push) Successful in 11m18s
Auto Tag / build-linux-arm64 (push) Successful in 11m40s
Auto Tag / build-macos-arm64 (push) Successful in 5m22s
Reviewed-on: #68
2026-06-05 18:38:30 +00:00
Shaun Arman
19f277b6ec chore: pin all loose npm version ranges to locked minor versions
All checks were successful
Test / rust-fmt-check (pull_request) Successful in 1m22s
Test / rust-clippy (pull_request) Successful in 3m44s
Test / frontend-typecheck (pull_request) Successful in 2m37s
Test / frontend-tests (pull_request) Successful in 1m30s
PR Review Automation / review (pull_request) Successful in 6m26s
Test / rust-tests (pull_request) Successful in 6m0s
Replace "latest", "^2", "^3" etc. with explicit ^x.y.z ranges matching
what was already pinned in package-lock.json. Also aligns @tauri-apps/cli
to 2.11.0 to match the rest of the Tauri package family.

No functional change — lockfile already resolved these exact versions.
2026-06-05 13:28:09 -05:00
Shaun Arman
093efbd200 fix: pin plugin-stronghold npm version to match Rust crate (2.3.1)
All checks were successful
Test / rust-fmt-check (pull_request) Successful in 1m35s
Test / frontend-typecheck (pull_request) Successful in 1m34s
Test / frontend-tests (pull_request) Successful in 1m35s
Test / rust-clippy (pull_request) Successful in 3m24s
Test / rust-tests (pull_request) Successful in 6m1s
PR Review Automation / review (pull_request) Successful in 7m21s
Address automated review finding: "^2" was overly permissive and
inconsistent with other plugin version pins added in this PR.
2026-06-05 13:26:06 -05:00
Shaun Arman
fc6af60495 fix: align Tauri npm packages with Rust crate versions
All checks were successful
Test / rust-fmt-check (pull_request) Successful in 1m22s
Test / frontend-typecheck (pull_request) Successful in 1m35s
Test / frontend-tests (pull_request) Successful in 1m32s
Test / rust-clippy (pull_request) Successful in 3m13s
PR Review Automation / review (pull_request) Successful in 4m21s
Test / rust-tests (pull_request) Successful in 5m19s
Bump @tauri-apps/api 2.10.1→2.11.0, @tauri-apps/plugin-dialog 2.6.0→2.7.1,
and @tauri-apps/plugin-fs 2.4.5→2.5.1 to match the installed Rust crates
and resolve the tauri-cli version mismatch build failure.
2026-06-05 12:54:09 -05:00
17de277e77 Merge pull request 'chore: bump version to 1.0.8 in Cargo.toml and tauri.conf.json' (#67) from fix/version-1.0.8 into master
Some checks failed
Auto Tag / autotag (push) Successful in 6s
Auto Tag / wiki-sync (push) Successful in 8s
Test / rust-fmt-check (push) Successful in 1m16s
Test / frontend-typecheck (push) Successful in 1m22s
Test / frontend-tests (push) Successful in 1m28s
Auto Tag / changelog (push) Successful in 1m27s
Auto Tag / build-macos-arm64 (push) Failing after 16s
Auto Tag / build-linux-amd64 (push) Failing after 1m21s
Auto Tag / build-windows-amd64 (push) Failing after 1m15s
Auto Tag / build-linux-arm64 (push) Failing after 1m20s
Test / rust-clippy (push) Successful in 3m38s
Test / rust-tests (push) Successful in 5m47s
Reviewed-on: #67
2026-06-05 16:18:07 +00:00
Shaun Arman
2a0d1f42e6 chore: bump version to 1.0.8 in Cargo.toml and tauri.conf.json
All checks were successful
Test / rust-fmt-check (pull_request) Successful in 1m26s
Test / frontend-tests (pull_request) Successful in 1m33s
Test / frontend-typecheck (pull_request) Successful in 1m34s
Test / rust-clippy (pull_request) Successful in 3m26s
Test / rust-tests (pull_request) Successful in 5m17s
PR Review Automation / review (pull_request) Successful in 4m38s
Update version in all project files to 1.0.8:
- src-tauri/Cargo.toml: 0.3.0 → 1.0.8
- src-tauri/tauri.conf.json: 0.3.0 → 1.0.8
- package.json: already updated to 1.0.8
- Update Cargo.lock

This ensures auto-tag workflow creates correct v1.0.8 release tag.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 10:56:35 -05:00
gitea-actions[bot]
75daa03936 chore: update CHANGELOG.md for v0.3.12 [skip ci] 2026-06-05 15:31:54 +00:00
74f56b6a17 Merge pull request 'Backport: Agentic Shell Command Execution (v1.0.0 → v1.0.8)' (#66) from feature/agentic-shell-commands into master
All checks were successful
Auto Tag / autotag (push) Successful in 6s
Auto Tag / wiki-sync (push) Successful in 8s
Test / rust-fmt-check (push) Successful in 1m21s
Auto Tag / changelog (push) Successful in 1m18s
Test / frontend-typecheck (push) Successful in 1m29s
Test / frontend-tests (push) Successful in 1m32s
Test / rust-clippy (push) Successful in 3m42s
Auto Tag / build-macos-arm64 (push) Successful in 4m36s
Test / rust-tests (push) Successful in 5m55s
Auto Tag / build-linux-amd64 (push) Successful in 9m20s
Auto Tag / build-windows-amd64 (push) Successful in 11m14s
Auto Tag / build-linux-arm64 (push) Successful in 11m22s
Reviewed-on: #66
2026-06-05 15:30:27 +00:00
Shaun Arman
8c96bfcba2 fix: add missing @testing-library/dom dependency and fix clippy warning
All checks were successful
Test / rust-fmt-check (pull_request) Successful in 1m27s
Test / frontend-tests (pull_request) Successful in 1m30s
Test / frontend-typecheck (pull_request) Successful in 1m32s
Test / rust-clippy (pull_request) Successful in 3m25s
PR Review Automation / review (pull_request) Successful in 4m47s
Test / rust-tests (pull_request) Successful in 5m27s
- Add @testing-library/dom ^10.4.1 to devDependencies (required by @testing-library/react)
- Fix clippy::uninlined_format_args warning in shell.rs (use inline format)

Resolves CI test failures in frontend tests and rust-clippy job.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 10:11:41 -05:00
Shaun Arman
276fdae104 fix: address valid PR review findings
Some checks failed
Test / rust-fmt-check (pull_request) Successful in 2m19s
Test / rust-clippy (pull_request) Failing after 4m15s
Test / frontend-typecheck (pull_request) Successful in 2m35s
Test / frontend-tests (pull_request) Failing after 1m47s
Test / rust-tests (pull_request) Successful in 6m17s
PR Review Automation / review (pull_request) Successful in 8m17s
Fix two valid issues identified in automated code review:

1. Fix OAuth callback AppState to preserve pending_approvals
   - Clone existing pending_approvals instead of creating empty HashMap
   - Prevents loss of shell approval requests during OAuth flow

2. Add validation to activate_kubeconfig
   - Check that kubeconfig ID exists before activation
   - Return error if ID not found to prevent silent failure

Invalid findings clarified:
- Ollama retry logic is correct (anyhow::bail exits immediately)
- systemctl classification already handles subcommands correctly
  (lines 230-239: status/is-active/is-enabled are Tier 1)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 09:04:28 -05:00
Shaun Arman
b0961e7a60 fix(ci): fix YAML syntax error in test.yml
Some checks failed
Test / rust-fmt-check (pull_request) Successful in 1m53s
Test / frontend-typecheck (pull_request) Successful in 1m52s
Test / frontend-tests (pull_request) Failing after 1m50s
Test / rust-clippy (pull_request) Successful in 3m13s
Test / rust-tests (pull_request) Successful in 6m30s
PR Review Automation / review (pull_request) Successful in 8m56s
Quote shell:: argument to fix YAML parsing error at line 121.
The double colon was being interpreted as a YAML mapping value.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 09:01:16 -05:00
Shaun Arman
496177b9ec chore: trigger CI workflows
All checks were successful
PR Review Automation / review (pull_request) Successful in 2m30s
Empty commit to re-trigger test.yml workflow in PR #66.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:56:04 -05:00
Shaun Arman
57fff0c8a2 style: run cargo fmt to fix formatting
All checks were successful
PR Review Automation / review (pull_request) Successful in 2m19s
Fix formatting in integrations.rs and ollama/installer.rs per cargo fmt.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:43:50 -05:00
Shaun Arman
9b8f4fffe2 chore: update assets and version to 1.0.8
Updated icons, banner, version bump, changelog configuration.

- Update icon.png (336KB, updated design)
- Add new_banner.png (4MB promotional banner)
- Bump package.json version to 1.0.8
- Update package-lock.json
- Add cliff.toml for git-cliff changelog generation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:36:57 -05:00
Shaun Arman
71ff71833d ci: add shell module tests to Gitea Actions
Update test workflow with shell module tests.

- Add dedicated shell module test step to .gitea/workflows/test.yml
- Tests run with --test-threads=1 for consistency

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:26:44 -05:00
Shaun Arman
7b5f727da9 test: add shell execution and tool calling detection tests
Unit tests for shell classifier, executor, tool calling detection, and
frontend components.

- Add detectToolCalling.test.ts (136 lines)
- Add aiProvidersOllamaDropdown.test.tsx (129 lines)
- Add selectDropdownViewport.test.tsx (124 lines)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:26:22 -05:00
Shaun Arman
1400f43d7a feat: add kubectl binary bundling for cross-platform support
Download and package kubectl v1.30.0 binaries for Linux (amd64/arm64),
Windows, macOS.

- Add scripts/download-kubectl.sh for kubectl binary management
- Update Cargo.toml dependencies (http 1.4, thiserror 2, rand 0.8)
- Add ollama/installer::start_ollama_service() and find_ollama_binary()
- Fix rand API deprecation (thread_rng deprecated in favor of rng in 0.8)
- Fix AppState initialization in integrations.rs (add pending_approvals)
- Configure kubectl as Tauri sidecar (currently empty array for dev)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:22:54 -05:00
Shaun Arman
b23ba4430a docs: add v1.0.7 and v1.0.8 release notes
Release notes with sanitized content. Update CHANGELOG.md with merged
changes.

- Add v1.0.7-summary.md (Ollama function calling)
- Add v1.0.8-summary.md (Ollama reliability, auto-detection)
- Update CHANGELOG.md with release history

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:19:16 -05:00
Shaun Arman
40074b4202 docs: update wiki with shell execution, Ollama function calling, and CI/CD changes
Comprehensive wiki updates with sanitized content. Add new Shell-Execution
guide.

- Add Shell-Execution.md guide (665 lines, sanitized)
- Update AI-Providers.md with Ollama function calling
- Update Architecture.md with shell execution system
- Update IPC-Commands.md with shell commands
- Update Database.md with new tables
- Update CICD-Pipeline.md for Gitea Actions

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:17:19 -05:00
Shaun Arman
dd9e6c0d3d feat: add shell execution and kubeconfig management UI
Real-time approval modal, settings pages, tool calling auto-detect button,
and IPC command wrappers.

- Add ShellApprovalModal component for Tier 2 command approvals
- Add ShellExecution settings page
- Add KubeconfigManager settings page
- Update AIProviders page with tool calling detection button
- Add shell command wrappers to tauriCommands.ts
- Add routes for new settings pages

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:14:03 -05:00
Shaun Arman
117ab390a2 feat: add Ollama function calling and tool calling auto-detection
Enable Ollama models to execute shell commands. Add detection command
for provider capability testing.

- Replace ai/ollama.rs with function calling support (180s timeout, retry logic)
- Update ai/openai.rs with tool calling improvements
- Add detect_tool_calling_support() command to commands/ai.rs

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:13:51 -05:00
Shaun Arman
e5593cbfe2 docs: add ADRs for shell safety, MCP transport, kubectl bundling
Architecture decision records with sanitized content (proprietary
references removed).

- ADR-007: Three-Tier Shell Safety Classification
- ADR-008: MCP Protocol Integration (HTTP transport)
- ADR-009: Bundled kubectl Binary rationale

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:12:19 -05:00
Shaun Arman
ad2d1ced84 feat: add shell execution database migrations (migrations #24-28)
Add database schema for shell command execution, kubeconfig management,
and approval tracking.

- Migration 024: shell_commands table with tier classification
- Migration 025: kubeconfig_files table for encrypted kubeconfig storage
- Migration 026: command_executions table for execution audit trail
- Migration 027: approval_decisions table for session-based approval tracking
- Migration 028: supports_tool_calling column for AI provider capabilities

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 08:00:12 -05:00
Shaun Arman
ea170ab340 feat: add three-tier shell execution with kubectl support
Introduce shell classifier, executor, kubeconfig manager, and kubectl
binary management. Integrates with existing commands/agentic.rs primitives.

- Add shell/classifier.rs: Three-tier safety classification (Tier 1: auto-execute, Tier 2: approve, Tier 3: deny)
- Add shell/executor.rs: Command executor with approval gates
- Add shell/kubeconfig.rs: kubeconfig parsing and management
- Add shell/kubectl.rs: kubectl binary management
- Add commands/shell.rs: Tauri IPC commands for shell execution
- Update state.rs: Add pending_approvals field for approval flow
- Update lib.rs: Register shell module and commands

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-05 07:59:04 -05:00
f8bae30e58 chore: update CHANGELOG.md for v0.2.66 [skip ci] 2026-06-04 22:22:34 -05:00
b5254952f7 chore: update CHANGELOG.md for v0.2.66 [skip ci] 2026-06-04 22:22:34 -05:00
Shaun Arman
e32bc047a1 chore: retrigger auto-tag pipeline 2026-06-04 22:22:34 -05:00
Shaun Arman
14c9d9d2cc chore: retrigger build pipeline 2026-06-04 22:22:34 -05:00
Shaun Arman
3d864efa77 chore: trigger build pipeline 2026-06-04 22:22:34 -05:00
afc0b3ce28 chore: update CHANGELOG.md for v0.2.53 [skip ci] 2026-06-04 22:22:34 -05:00
Shaun Arman
4e7cd3927d chore: trigger release with fix 2026-06-04 22:22:34 -05:00
c75d286990 chore: update CHANGELOG.md for v0.2.53 [skip ci] 2026-06-04 22:22:34 -05:00
Shaun Arman
532b0b897f chore: trigger changelog update for AppImage removal 2026-06-04 22:22:34 -05:00
3d54d4a69d chore: update CHANGELOG.md for v0.2.53 [skip ci] 2026-06-04 22:22:34 -05:00
Shaun Arman
4f7dd086d5 chore: trigger changelog update for latest fixes 2026-06-04 22:22:34 -05:00
efe8d4caf0 chore: update CHANGELOG.md for v0.2.53 [skip ci] 2026-06-04 22:22:34 -05:00
3e4b044f7d chore: update CHANGELOG.md for v0.2.53 [skip ci] 2026-06-04 22:22:34 -05:00
Shaun Arman
620d597cbb ci: final test run — arm64 runner labels fixed (linux-arm64 only) 2026-06-04 22:22:34 -05:00
Shaun Arman
d918596c5b ci: retrigger after amd64 runner config fix (CONFIG_FILE env var) 2026-06-04 22:22:34 -05:00
Shaun Arman
e753df8eac ci: retrigger after runner capacity=1 fix 2026-06-04 22:22:34 -05:00
Shaun Arman
f2f622bcd0 ci: retrigger after act_runner host network fix 2026-06-04 22:22:34 -05:00
Shaun Arman
5d56a2dd94 ci: retrigger after making repo public 2026-06-04 22:22:34 -05:00
Shaun Arman
6a36e01f7b ci: retrigger test pipeline after act_runner network fix 2026-06-04 22:22:34 -05:00
gitea-actions[bot]
6105f5af2b chore: update CHANGELOG.md for v0.3.11 [skip ci] 2026-06-01 18:29:28 +00:00
590fec7dd4 Merge pull request 'fix(mcp): add environment variable support for stdio MCP servers' (#62) from bug/mcp-env-vars-support into master
All checks were successful
Auto Tag / autotag (push) Successful in 7s
Auto Tag / wiki-sync (push) Successful in 6s
Test / rust-fmt-check (push) Successful in 1m18s
Test / frontend-typecheck (push) Successful in 1m32s
Test / frontend-tests (push) Successful in 1m31s
Auto Tag / changelog (push) Successful in 1m29s
Test / rust-clippy (push) Successful in 3m52s
Test / rust-tests (push) Successful in 5m28s
Auto Tag / build-macos-arm64 (push) Successful in 5m46s
Auto Tag / build-linux-amd64 (push) Successful in 9m28s
Auto Tag / build-windows-amd64 (push) Successful in 11m20s
Auto Tag / build-linux-arm64 (push) Successful in 11m31s
Reviewed-on: #62
2026-06-01 18:27:58 +00:00