- Make go-inference a direct dependency (was indirect) - Rewrite mlBackends() to use inference.List()/Get()/Default() instead of ml.Service.Backends()/Backend()/DefaultBackend() - Add documentation comments clarifying generation flow - mlGenerate/mlScore/mlProbe unchanged (work via go-ml.Service) Co-Authored-By: Virgil <virgil@lethean.io>
3 KiB
3 KiB
TODO — go-ai
Virgil dispatches tasks. Mark [x] when done, note commit hash.
Phase 1: Post-Split Cleanup
- Remove
test-mlx.go— Deleted standalone test script from module root. - Verify
go build ./...passes — Clean build, no stale import paths. - Verify
go vet ./...passes — No vet warnings. - Run full test suite — All tests pass. Fixed
TestSandboxing_Symlinks_Blocked(renamed; asserts sandbox blocks symlink escape) andTestNewTCPTransport_Warning(added missing security warning toNewTCPTransport).
Phase 2: go-inference Migration
go-ml is migrating to use go-inference shared interfaces. Once that's done, go-ai's ML subsystem should use go-inference too.
- Update
tools_ml.goMLSubsystem — mlGenerate/mlScore/mlProbe unchanged (work correctly via go-ml.Service → InferenceAdapter → inference.TextModel). Added flow documentation comments. - Update
ml_backendstool — Rewritten to useinference.List()/Get()/Default()instead ofml.Service.Backends()/Backend()/DefaultBackend(). - Update
ml_scoreandml_probe— Kept go-ml dependency for scoring/probes (that's where the scoring engine lives). Generation flows through go-inference via InferenceAdapter. Added documentation comments. - Add go-inference to go.mod — Promoted from indirect to direct require. Replace directive already present.
Phase 3: MCP Transport Testing
- Stdio transport e2e — Test
core mcp serveover stdin/stdout with a mock MCP client. Verify tool discovery + file_read round-trip. - TCP transport e2e — Test
MCP_ADDR=:9100 core mcp serve. Connect, list tools, callfile_read, verify response. - Unix transport — Currently untested. Add basic connect + tool call test.
- Webview tools CI guard —
tools_webview.gotools require Chrome. Addtesting.Short()skip or build tag so CI doesn't fail.
Phase 4: IDE Subsystem Hardening
- Bridge reconnection test — Kill mock Laravel WS server, verify exponential backoff + reconnect in
bridge.go. - Add auth to bridge —
bridge.goconnects unauthenticated. Add token header on WebSocket upgrade. - Dashboard tools beyond stubs —
tools_dashboard.goreturns empty data. Implement real data fetching or document as stub.
Phase 5: Testing Gaps
- Process tools CI tests —
tools_process.goneeds CI-safe tests (start/stop lightweight processes likeechoorsleep). - RAG tools mock —
tools_rag.goneeds Qdrant + Ollama mocks for CI. Testrag_query,rag_ingest,rag_collectionswithout live services. - ML tools mock —
tools_ml.goneeds mock backend for CI. No real inference in tests. - Metrics benchmark — Benchmark
metrics_record+metrics_queryat scale (10K+ JSONL events).
Workflow
- Virgil in core/go writes tasks here after research
- This repo's session picks up tasks in phase order
- Mark
[x]when done, note commit hash - New discoveries → add tasks, flag in FINDINGS.md