Commit graph

63 commits

Author SHA1 Message Date
Virgil
a84a610ae2 feat(agentic): add synchronous dispatch surface
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:34:04 +00:00
Virgil
2a7b8d2e25 feat(agentic): add review queue alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:25:39 +00:00
Virgil
dfd1640d37 feat(agentic): expose completion pipeline as MCP tool
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:22:00 +00:00
Virgil
44ae9bc4ec feat(agentic): add agentic:generate command alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:36:44 +00:00
Virgil
315326bdd6 feat(agentic): add agentic:plan alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:33:24 +00:00
Virgil
6e5f4c5d37 feat(agentic): add session command aliases
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:28:56 +00:00
Virgil
f4736bf759 feat(agentic): persist prompt snapshots
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:28:42 +00:00
Virgil
ce3039544e feat(agentic): add brain forget cli command
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:10:23 +00:00
Virgil
238be05fa8 feat(agentic): add issue report action
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:00:50 +00:00
Virgil
dfaf14f061 feat(agentic): add issue assignment action
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 16:50:26 +00:00
Virgil
ae910099c8 feat(agentic): add issue action aliases
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 16:43:47 +00:00
Virgil
ab0460da61 feat(agentic): add SetCore wiring
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 16:09:04 +00:00
Virgil
3c2ab16afb feat(agentic): add plan from issue command
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 15:42:26 +00:00
Virgil
28fbe8b988 feat(agentic): add SEO schema generation
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 15:34:37 +00:00
Virgil
00f37096fa feat(agentic): expose plan check action and tool
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 15:28:47 +00:00
Virgil
dc9a81e101 feat(agentic): add state delete action
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 13:58:16 +00:00
Virgil
c99a8d4d7e feat(agentic): add review-queue command alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 13:52:57 +00:00
Virgil
f4ce83d194 feat(agentic): add complete CLI command
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 13:38:03 +00:00
Virgil
2690778a02 feat(agentic): add prep-workspace command alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 13:02:15 +00:00
Virgil
cacb8977bf feat(agentic): add language detection tools
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 12:33:57 +00:00
Virgil
1cd9672179 feat(agentic): add prep test hooks
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 12:25:51 +00:00
Virgil
524810cbda feat(agentic): add brain list CLI command
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 11:54:44 +00:00
Virgil
a50248f5ae feat(agentic): add task create command
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 11:48:59 +00:00
Virgil
b3bb77570c feat(agentic): add task command surface
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 11:20:14 +00:00
Virgil
9f4c956393 feat(agentic): add brain ingest command alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 11:15:04 +00:00
Virgil
155230fb5b feat(agentic): add brain seed-memory command
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 11:04:36 +00:00
Virgil
8f8e0f09ca feat(agentic): add plan retention cleanup command
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 10:48:13 +00:00
Virgil
1fade56b17 feat(agentic): add content generate command
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 10:40:28 +00:00
Virgil
24bb3b26c6 feat(agentic): add forge PR close action
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 19:18:58 +00:00
Virgil
57ee930717 feat(agentic): add fleet event SSE surface
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 19:04:06 +00:00
Virgil
f45e8552ab feat(agentic): add RFC compatibility aliases
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 15:52:31 +00:00
Virgil
b84e5692a2 feat(agentic): add content platform compatibility surfaces
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 15:27:15 +00:00
Virgil
8ed911eb27 feat(agentic): add issue and sprint platform surfaces
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 15:12:33 +00:00
Virgil
27928fc9b4 feat(agentic): add platform auth compatibility surfaces
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 14:23:12 +00:00
Virgil
cccc02ed64 feat(agentic): add RFC plan compatibility surfaces
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 13:58:57 +00:00
Virgil
c27af1435d feat(agentic): add session replay and shared state tools
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 13:39:24 +00:00
Virgil
671a0872ef feat(agentic): add session lifecycle surfaces
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 12:06:40 +00:00
Virgil
2a1e13662d fix(agentic): align platform action aliases
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 11:42:02 +00:00
Virgil
f37980bd4a fix(agentic): register plan named actions
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 11:22:36 +00:00
Virgil
e8249c590e fix(ax): rename ambiguous prep helpers
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 06:12:53 +00:00
Virgil
2b7159da7f fix(ax): remove legacy core injection helpers
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 05:55:02 +00:00
Virgil
faf6b8b6fb fix(ax): unify home-path resolution
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-30 19:54:17 +01:00
Virgil
2f7ca89d80 fix(ax): name handlers and align process coverage
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-29 21:56:45 +00:00
Snider
537226bd4d feat: AX v0.8.0 upgrade — Core features + quality gates
AX Quality Gates (RFC-025):
- Eliminate os/exec from all test + production code (12+ files)
- Eliminate encoding/json from all test files (15 files, 66 occurrences)
- Eliminate os from all test files except TestMain (Go runtime contract)
- Eliminate path/filepath, net/url from all files
- String concat: 39 violations replaced with core.Concat()
- Test naming AX-7: 264 test functions renamed across all 6 packages
- Example test 1:1 coverage complete

Core Features Adopted:
- Task Composition: agent.completion pipeline (QA → PR → Verify → Ingest → Poke)
- PerformAsync: completion pipeline runs with WaitGroup + progress tracking
- Config: agents.yaml loaded once, feature flags (auto-qa/pr/merge/ingest)
- Named Locks: c.Lock("drain") for queue serialisation
- Registry: workspace state with cross-package QUERY access
- QUERY: c.QUERY(WorkspaceQuery{Status: "running"}) for cross-service queries
- Action descriptions: 25+ Actions self-documenting
- Data mounts: prompts/tasks/flows/personas/workspaces via c.Data()
- Content Actions: agentic.prompt/task/flow/persona callable via IPC
- Drive endpoints: forge + brain registered with tokens
- Drive REST helpers: DriveGet/DrivePost/DriveDo for Drive-aware HTTP
- HandleIPCEvents: auto-discovered by WithService (no manual wiring)
- Entitlement: frozen-queue gate on write Actions
- CLI dispatch: workspace dispatch wired to real dispatch method
- CLI: --quiet/-q and --debug/-d global flags
- CLI: banner, version, check (with service/action/command counts), env
- main.go: minimal — 5 services + c.Run(), no os import
- cmd tests: 84.2% coverage (was 0%)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-26 06:38:02 +00:00
Snider
23bb62a116 fix: eliminate path/filepath from all test files
29 test files migrated: filepath.Join→core.JoinPath,
filepath.Dir→core.PathDir, filepath.Base→core.PathBase,
filepath.IsAbs→core.PathIsAbs. Test dogfooding complete for filepath.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-26 01:39:41 +00:00
Snider
aafa63818f fix: remove dead client field from PrepSubsystem + test literals
client *http.Client removed — all HTTP routes through transport.go.
75 test struct literals cleaned, 3 test assertions updated.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-26 01:32:17 +00:00
Snider
f83c753277 feat(v0.8.0): full AX migration — ServiceRuntime, Actions, quality gates, transport
go-process:
- Register factory, Result lifecycle, 5 named Action handlers
- Start/Run/StartWithOptions/RunWithOptions all return core.Result
- core.ID() replaces fmt.Sprintf, core.As replaces errors.As

core/agent:
- PrepSubsystem + monitor.Subsystem + setup.Service embed ServiceRuntime[T]
- 22 named Actions + agent.completion Task pipeline in OnStartup
- ChannelNotifier removed — all IPC via c.ACTION(messages.X{})
- proc.go: all methods via s.Core().Process(), returns core.Result
- status.go: WriteAtomic + JSONMarshalString
- paths.go: Fs.NewUnrestricted() replaces unsafe.Pointer
- transport.go: ONE net/http file — HTTPGet/HTTPPost/HTTPDo/MCP transport
- All disallowed imports eliminated from source files (13 quality gates)
- String concat eliminated — core.Concat() throughout
- 1:1 _test.go + _example_test.go for every source file
- Reference docs synced from core/go v0.8.0
- RFC-025 updated with net/http, net/url, io/fs quality gates
- lib.go: io/fs eliminated via Data.ListNames, Array[T].Deduplicate

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-26 01:27:46 +00:00
Snider
d67336c761 test: batch 5 — proc.go GBU + getGitLog + runGoTests + prepWorkspace — 836 tests
New: proc_test.go with 28 tests for all proc.go helpers (runCmd, gitCmd,
gitOutput, processIsRunning, processKill, ensureProcess).

Plus: getGitLog GBU, runGoTests GBU, prepWorkspace Good,
listLocalRepos Ugly, loadRateLimitState Bad, runLoop skips.

AX-7: 501/543 filled (92%), 167/181 functions complete
Coverage: 78.5%, 836 tests

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-25 10:20:50 +00:00
Snider
c0bc7675a1 test: batch 4 — fill 36 testable gaps, 802 tests, AX-7 89%
- commands.go: factory wrapper Good/Bad/Ugly
- dispatch.go: containerCommand Bad
- queue.go: UnmarshalYAML/loadAgentsConfig Good/Bad/Ugly
- remote.go: resolveHost/remoteToken Bad/Ugly
- remote_client.go: setHeaders Bad
- prep.go: TestPrepWorkspace/TestBuildPrompt public API GBU
- prep.go: sanitise Good tests (collapseRepeatedRune, sanitisePlanSlug, trimRuneEdges)
- ingest.go: ingestFindings/createIssueViaAPI Ugly
- scan.go: scan Good
- runner.go: Poke Ugly, StartRunner Bad/Ugly
- process_register.go: ProcessRegister Good/Bad/Ugly

AX-7: 462/516 filled (89%), 152/172 functions complete
Coverage: 77.2%, 802 tests

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-25 09:31:38 +00:00
Snider
eeaed52256 test: batch 3 — add 73 Good/Bad/Ugly tests across 9 files
Fill missing categories for:
- prep.go: 25 lifecycle/detect/env tests
- prep_extra.go: pullWikiContent/renderPlan/brainRecall/findConsumers Ugly
- pr.go: buildPRBody/commentOnIssue/createPR/listPRs/listRepoPRs GBU
- epic.go: createEpic/createIssue/resolveLabelIDs/createLabel Ugly
- scan.go: scan/listOrgRepos/listRepoIssues GBU
- events (logic_test.go): emitStartEvent/emitCompletionEvent GBU
- review_queue_extra.go: buildReviewCommand/countFindings/parseRetryAfter/store/save/load
- watch.go: findActiveWorkspaces/resolveWorkspaceDir Bad/Ugly
- paths.go: newFs/parseInt Good
- plan_crud.go: generatePlanID/planList/writePlan Bad/Ugly

AX-7 scorecard: 425/516 categories filled (82%)
Gap: 166 → 91 missing categories
Tests: 690 → 765 (+75)
Coverage: 76.0% → 76.8%

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-25 09:19:05 +00:00