Commit graph

871 commits

Author SHA1 Message Date
Snider
fa3a7bcd83 feat(cli): add Go 1.26 iterators and modernise idioms
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 16s
- Add Children() iter.Seq on TreeNode for range-based traversal
- Add RegisteredCommands() iter.Seq on command registry (mutex-safe)
- Add Regions()/Slots() iterators on Composite layout
- Add Tasks()/Snapshots() iterators on TaskTracker (mutex-safe)
- Use strings.FieldsSeq, strings.SplitSeq in parseMultiSelection
- Use range-over-int where applicable

Co-Authored-By: Gemini <noreply@google.com>
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 04:57:24 +00:00
Snider
38765962f8 feat(cli): add Int64Flag, DurationFlag helpers; remove NewPassthrough
Add Int64Flag and DurationFlag to the flag helper set for commands
needing int64 seeds and time.Duration intervals. Remove NewPassthrough
which enabled the anti-pattern of bypassing cobra flag parsing with
stdlib flag.FlagSet.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 03:32:39 +00:00
Snider
0006650a10 docs: remove duplicate plan files
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 18s
Delete plans that exist as canonical copies in core repo:
- core-ide-job-runner-plan (canonical in core)
- mcp-integration (canonical in core)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:46:24 +00:00
Claude
9b568bd921
chore: refresh go.sum after upstream tag updates
Some checks failed
Deploy / build (push) Failing after 5s
Security Scan / security (push) Successful in 17s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:36:25 +00:00
Snider
5500c3912c feat(cli): add WithCommands lifecycle pattern for command registration
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 19s
Main() now accepts variadic framework.Option args, allowing commands
to register through the Core lifecycle via WithCommands(). This matches
the pattern from core/go and enables LEM and other consumers to use
the same API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:01:31 +00:00
Claude
e360115b66
chore: sync workspace dependency versions
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 17s
Run go work sync to align dependency versions across workspace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:41:04 +00:00
Claude
73723b6fb9
docs: add Frame bubbletea upgrade design and implementation plan
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 16s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:23:04 +00:00
Claude
f54876abb5
test(frame): add message routing edge case tests 2026-02-22 21:21:11 +00:00
Claude
cf6e4700c9
test(frame): add Navigate/Back tests with FrameModel 2026-02-22 21:20:47 +00:00
Claude
d540e5706b
test(frame): add spatial focus navigation tests 2026-02-22 21:20:24 +00:00
Claude
96b2cb6547
refactor(frame): unify String() with View() via viewLocked()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:18:55 +00:00
Claude
1c6e910251
feat(frame): replace raw ANSI runLive with tea.Program
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:16:48 +00:00
Claude
331bcd564d
feat(frame): implement tea.Model (Init, Update, View) with lipgloss layout
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:12:32 +00:00
Claude
acfbc2aaee
feat(frame): add focus management fields, Focused(), Focus(), WithKeyMap() 2026-02-22 21:07:32 +00:00
Claude
02e8343ee5
feat(frame): add KeyMap with default bindings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:03:50 +00:00
Claude
aa5cfc312d
feat(frame): add FrameModel interface and modelAdapter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:02:53 +00:00
Claude
762eadd736
deps: add bubbletea and lipgloss for Frame upgrade
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:00:18 +00:00
Claude
6a8bd92189
feat: add pkg/cli with TUI components (#14, #15)
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 15s
Move pkg/cli from core/go to core/cli. Includes Frame AppShell,
Stream, TaskTracker, Tree, Rich Table. Update imports to v0.0.1
tagged deps and fix openpgp import path for go-crypt split.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 20:42:00 +00:00
Snider
7303ba6f23 refactor: register commands through Core framework lifecycle
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 18s
Replace init() + cli.RegisterCommands() with cli.WithCommands() passed
to cli.Main(). Commands now register as framework services and receive
the root command during OnStartup — no global state, no blank imports.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 22:08:01 +00:00
Snider
800bb91601 refactor: remove ecosystem repo imports from CLI
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 18s
CLI now only includes its own local commands.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:48:49 +00:00
Snider
39d247ec9e style: clean up main.go imports
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 15s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:48:07 +00:00
Snider
b6468b8e6f refactor: move 9 cmd packages to ecosystem repos
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 15s
- cmd/go → core/go cmd/gocmd
- cmd/dev, setup, qa, docs, gitcmd, monitor → go-devops
- cmd/lab → go-ai
- cmd/workspace → go-agentic

CLI now imports commands from ecosystem repos via blank imports.
Remaining local: config, doctor, help, module, pkgcmd, plugin, session.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:46:24 +00:00
Snider
a9fe9fe04b refactor: move core-app, updater, vanity-import, community out of CLI
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 15s
- cmd/core-app/ → core framework repo (workspace module)
- cmd/updater/ → go-devops
- cmd/vanity-import/ → go-devops
- cmd/community/ → go-devops
- Remove stale Taskfile tasks for moved products (ide, app, bugseti)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:33:15 +00:00
Snider
1b99ea22f1 chore: remove stale docs, update installers to Forge
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 13s
Remove: Makefile, infra.yaml, GEMINI.md, AUDIT-DEPENDENCIES.md,
ISSUES_TRIAGE.md, github-projects-recovery.md

Update install.sh and install.bat to use forge.lthn.ai/core/cli
instead of dead github.com/host-uk/core.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:29:21 +00:00
Snider
fb52e03f50 chore: remove duplicate Taskfile.yaml
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 13s
Taskfile.yml has the full config; .yaml was a stale 3-line duplicate.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:25:34 +00:00
Snider
ad38551b4c chore: remove mkdocs.yml and stale test artifacts
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 15s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:24:30 +00:00
Snider
30311db9ea refactor: move scripts to go-ml and go-agent
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Failing after 8s
- setup-ubuntu.sh → go-ml/scripts/
- agent-runner.sh, agent-setup.sh, gemini-batch-runner.sh, ethics-ab/ → go-agent/scripts/

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:20:12 +00:00
Snider
5fc0c89542 refactor: move agent configs and CI pipelines to proper repos
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 15s
- .claude/, .gemini/ → go-agent (agent settings)
- .woodpecker/ → go-devops (Woodpecker CI pipelines)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:18:32 +00:00
Snider
236c498e76 refactor: move playbooks, plans, and RAG tools to proper repos
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 15s
- playbooks/ → go-devops/playbooks/ (Ansible playbooks)
- tasks/plans/ → go-devops/docs/plans/ (design/impl docs)
- tools/rag/ → go-rag/tools/rag/ (Python RAG scripts)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:16:50 +00:00
Snider
260dca0999 refactor: move PHP docker files to core-php, keep only CLI Dockerfile
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 14s
Move Dockerfile.app, Dockerfile.web, nginx/, php/, and docker-compose
to core-php where they belong. Promote Dockerfile.core to root Dockerfile.
Simplify deploy workflow to only build the CLI image.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:14:28 +00:00
Snider
c84ce5265f refactor(ci): use reusable docker-publish workflow, switch to Docker Hub
Some checks failed
Deploy / Test (push) Failing after 1s
Deploy / Build App Image (push) Has been skipped
Deploy / Build Web Image (push) Has been skipped
Deploy / Build Core Image (push) Has been skipped
Deploy / Deploy to Production (push) Has been skipped
Security Scan / security (push) Successful in 16s
Replace inline docker build/push jobs with shared workflow from go-devops.
Add proper multi-stage Dockerfile.core (was inline heredoc).
Switch registry from dappco.re/osi to docker.io/lthn/.

Requires org secrets: REGISTRY_USER, REGISTRY_TOKEN

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:04:44 +00:00
Snider
f72a7f603f chore(ci): use reusable security scan from go-devops
Some checks failed
Deploy / Test (push) Failing after 1s
Deploy / Build App Image (push) Has been skipped
Deploy / Build Web Image (push) Has been skipped
Security Scan / security (push) Successful in 21s
Deploy / Build Core Image (push) Failing after 1m42s
Deploy / Deploy to Production (push) Has been skipped
Replace inline govulncheck/gitleaks/trivy with shared workflow call.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:02:37 +00:00
Snider
4e76e96039 refactor: remove external repo imports and clean .core/
Some checks failed
Deploy / Test (push) Failing after 2s
Deploy / Build App Image (push) Has been skipped
Deploy / Build Web Image (push) Has been skipped
Deploy / Build Core Image (push) Failing after 2m8s
Deploy / Deploy to Production (push) Has been skipped
Security Scan / Secret Detection (push) Successful in 13s
Security Scan / Dependency & Config Scan (push) Successful in 19s
Security Scan / Go Vulnerability Check (push) Successful in 1m26s
Remove all external blank imports from main.go (go-ai, go-api, go-crypt,
go-devops, go-ml, go-netops, go-scm) and delete cmd/ai/. Business logic
moved to proper repos: go-agent, go-agentic, go-ai.

Clean .core/ — remove LinuxKit VM templates, Claude Code plugin, and
ephemeral issue plans. Keep only CLI build/release config.

Drops 504 lines from go.mod/go.sum. CLI no longer pulls ollama, qdrant,
duckdb, or other ML dependencies into its binary or security scan scope.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 20:51:24 +00:00
Snider
6292fa2c77 fix(ci): harden security scan and Dockerfiles
- Upgrade Go to 1.26, FrankenPHP to v1.11.2 (CVE-2026-24894)
- Add non-root USER to all Dockerfiles (Trivy misconfig)
- Upgrade gitleaks to v8.24.3 with arch detection

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 20:51:14 +00:00
Snider
74c61f3698 fix: resolve vet warnings and remove stale workflows
Some checks failed
Deploy / Test (push) Failing after 1s
Deploy / Build App Image (push) Has been skipped
Security Scan / Secret Detection (push) Successful in 21s
Deploy / Build Web Image (push) Has been skipped
Security Scan / Dependency & Config Scan (push) Failing after 20s
Deploy / Build Core Image (push) Failing after 10m18s
Deploy / Deploy to Production (push) Has been skipped
Security Scan / Go Vulnerability Check (push) Failing after 6m27s
- Fix 11 non-constant format string warnings in cmd/session
  (use cli.Print format args instead of fmt.Sprintf wrapper)
- Remove leftover .github/workflows/ from cmd/updater
  (ci.yml and release.yml from when updater was standalone)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 19:54:51 +00:00
Snider
4163aedec1 fix(ci): pin gitleaks version and harden install step
Some checks failed
Security Scan / Secret Detection (push) Successful in 12s
Security Scan / Go Vulnerability Check (push) Failing after 2m21s
Security Scan / Dependency & Config Scan (push) Failing after 21s
The gitleaks install was fragile: depended on GitHub API (rate limits),
jq being present, and hardcoded x64 arch. Now pins v8.24.3, detects
arch, uses curl -f for proper error handling, and verifies install.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 19:50:28 +00:00
Snider
cce9adc043 refactor: migrate 14 cmd packages to their go-* repos
Some checks failed
Security Scan / Dependency & Config Scan (push) Failing after 22s
Security Scan / Secret Detection (push) Failing after 8s
Security Scan / Go Vulnerability Check (push) Failing after 3m17s
Moved CLI command packages to their respective ecosystem repos:
- go-ai: daemon, mcpcmd, security
- go-api: api
- go-crypt: crypt, testcmd
- go-devops: deploy, prod, vm
- go-netops: unifi
- go-rag: rag
- go-scm: collect, forge, gitea

Updated main.go imports to reference external repos.
Updated cmd/ai to import rag from go-rag.
Deleted 14 cmd/ directories (9,421 lines removed).

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 19:42:16 +00:00
Snider
a7d09e4c67 refactor: migrate cmd/ml to go-ml, remove replaces and go.work
Some checks failed
Deploy / Deploy to Production (push) Has been skipped
Deploy / Test (push) Failing after 11s
Deploy / Build App Image (push) Has been skipped
Deploy / Build Web Image (push) Has been skipped
Security Scan / Secret Detection (push) Failing after 10s
Security Scan / Go Vulnerability Check (push) Failing after 10m20s
Security Scan / Dependency & Config Scan (push) Failing after 25s
Deploy / Build Core Image (push) Failing after 13m6s
- Move 40 ML command files to forge.lthn.ai/core/go-ml/cmd
- Remove all replace directives from go.mod
- Remove go.work (repos resolve from forge directly)
- Fix cache.New call to match updated API signature
- Update main.go import to forge.lthn.ai/core/go-ml/cmd

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 19:29:23 +00:00
Snider
2e24bb59f6 feat(docs): add --target hugo sync mode for core.help
Some checks failed
Security Scan / Dependency & Config Scan (push) Failing after 18s
Security Scan / Go Vulnerability Check (push) Failing after 1m16s
Security Scan / Secret Detection (push) Failing after 20s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 02:27:28 +00:00
Snider
349647d4aa feat(docs): scan KB/ directory alongside docs/
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 02:18:29 +00:00
Snider
d6eec4d240 feat(api): add core api spec and core api sdk commands
Some checks are pending
Security Scan / Go Vulnerability Check (push) Waiting to run
Security Scan / Dependency & Config Scan (push) Waiting to run
Security Scan / Secret Detection (push) Waiting to run
New command group for OpenAPI spec generation and SDK codegen:
- `core api spec` generates OpenAPI 3.1 spec (JSON/YAML) from route groups
- `core api sdk` generates client SDKs via openapi-generator-cli
- Adds go-api dependency for SpecBuilder, ExportSpec, SDKGenerator

Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 01:28:58 +00:00
Claude
f078871617
feat(dispatch): add rate-limit backoff and ticket requeue
Some checks are pending
Security Scan / Go Vulnerability Check (push) Waiting to run
Security Scan / Secret Detection (push) Waiting to run
Security Scan / Dependency & Config Scan (push) Waiting to run
When an agent job fails in under 30 seconds (indicating rate limiting
or auth rejection), the watcher now:
- Requeues the ticket back to the queue instead of marking it done
- Applies exponential backoff: 2x, 4x, 8x the base poll interval
- Resets backoff to 1x on successful job completion

This prevents burning through the entire queue during rate-limited
periods. Tested on Clotho (AU) with 15m base → 30m/60m/120m backoff.

Co-Authored-By: Charon <charon@lethean.io>
2026-02-20 13:59:30 +00:00
Claude
15d9d9483a
fix(dispatch): fall back to FORGE_TOKEN env when ticket has no token
Some checks are pending
Security Scan / Go Vulnerability Check (push) Waiting to run
Security Scan / Secret Detection (push) Waiting to run
Security Scan / Dependency & Config Scan (push) Waiting to run
Tickets generated by poll-forge.sh don't include forge_token.
The dispatch runner now checks FORGE_TOKEN env var as fallback,
and gracefully skips reporting if no token is available.

Co-Authored-By: Charon <charon@lethean.io>
2026-02-20 12:57:35 +00:00
Claude
a43cc099cd
feat(cli): migrate imports to split repos + wire go-agentic registry
Some checks are pending
Security Scan / Go Vulnerability Check (push) Waiting to run
Security Scan / Secret Detection (push) Waiting to run
Security Scan / Dependency & Config Scan (push) Waiting to run
Virgil split go-ai into standalone modules (go-agentic, go-ml, go-mlx,
go-rag). This migrates all CLI imports to the new module paths and fixes
API mismatches from the split.

Key changes:
- go-ai/agentic → go-agentic (cmd/ai, cmd/dev)
- go-ai/ml → go-ml (31 files in cmd/ml)
- go-ai/rag → go-rag (3 files in cmd/rag)
- go-ai/mlx → go-mlx (1 file)
- Fix go.work path (../core → ../go)
- Add all split repos to go.work and go.mod
- Simplify daemon to goroutine-based MCP (remove missing supervisor)
- Wire go-agentic SQLiteRegistry into dispatch watch (--agent-id flag)
- Add `core ai agent fleet` command for local registry status
- Fix rag collections API (PointCount, Status string)
- Fix ml live/expand-status to use available go-ml API

Co-Authored-By: Charon <charon@lethean.io>
2026-02-20 12:47:02 +00:00
Claude
41f786a222
feat(module): add CLI commands for marketplace module management
Some checks failed
Security Scan / Go Vulnerability Check (push) Has been cancelled
Security Scan / Secret Detection (push) Has been cancelled
Security Scan / Dependency & Config Scan (push) Has been cancelled
Wire `core module install/remove/list/update` commands to the
marketplace.Installer from pkg/marketplace. Follows the exact
pattern established by cmd/plugin/.

- install: clone from Git repo with optional ed25519 verification
- list: table output of installed modules
- update: pull latest + re-verify manifest (supports --all)
- remove: confirmation prompt then cleanup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 10:37:52 +00:00
61ecaa0c49 Merge pull request 'feat(ml): add live progress and expand-status commands' (#5) from dev-phase4 into dev
Some checks are pending
Security Scan / Go Vulnerability Check (push) Waiting to run
Security Scan / Secret Detection (push) Waiting to run
Security Scan / Dependency & Config Scan (push) Waiting to run
Reviewed-on: #5
2026-02-17 19:53:44 +00:00
Claude
2eb17db210
feat(ml): add live progress and expand-status commands
Final two Python pipeline gaps ported to Go — InfluxDB live generation
progress and DuckDB expansion pipeline status. Python scripts can now
be archived.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 19:53:07 +00:00
Snider
1bf130b25a chore: update module paths and daemon refactor
Some checks are pending
Security Scan / Go Vulnerability Check (push) Waiting to run
Security Scan / Secret Detection (push) Waiting to run
Security Scan / Dependency & Config Scan (push) Waiting to run
Sync CLI module imports across all command packages.
Refactor daemon command with expanded functionality.
Update go.mod and go.work dependencies.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-17 19:19:40 +00:00
Snider
e64fa7b4ff feat(ml): add context windowing, fix chat UI max-tokens
Some checks are pending
Security Scan / Go Vulnerability Check (push) Waiting to run
Security Scan / Secret Detection (push) Waiting to run
Security Scan / Dependency & Config Scan (push) Waiting to run
- Add --max-context flag to serve (sliding window, default 4 messages)
  to prevent KV-cache explosion on multi-turn conversations
- Pass server max-tokens to chat UI HTML attribute instead of
  hardcoded 2048 in JavaScript
- Add chat.js and chat_embed.go for embedded LEM chat UI

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-17 19:18:31 +00:00
Snider
c03c755104 feat(ml): add benchmark command for baseline vs trained model comparison
Some checks are pending
Security Scan / Go Vulnerability Check (push) Waiting to run
Security Scan / Secret Detection (push) Waiting to run
Security Scan / Dependency & Config Scan (push) Waiting to run
Runs the same prompts through baseline and fine-tuned models, scores
both with the heuristic scorer, and outputs a comparison report with
LEK score deltas and improvement/regression counts.

Uses built-in content probes by default, or custom prompts file.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-17 17:55:10 +00:00