Resolve stale forge.lthn.ai/core/cli v0.1.0 references (tag never existed,
earliest is v0.0.1) and regenerate go.sum via workspace-aware go mod tidy.
Co-Authored-By: Virgil <virgil@lethean.io>
Move mcp/, cmd/mcpcmd/, cmd/brain-seed/ to the new core/mcp repo.
Update daemon import to use forge.lthn.ai/core/mcp/pkg/mcp.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace 260+ lines of hand-rolled start/stop/status/run logic with a thin
wrapper delegating to cli.AddDaemonCommand(). The MCP-specific config,
transport constants, and startMCP() function are preserved.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add mutex to metrics.Record() for concurrent safety
- QueryRAGForTask returns (string, error) instead of silent empty string
- Default TCP transport binds to 127.0.0.1 instead of 0.0.0.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add go-devops build system configuration for standardised
build, test, and release workflows across the Go ecosystem.
Co-Authored-By: Virgil <virgil@lethean.io>
brain-seed imports Claude Code MEMORY.md files into OpenBrain by
embedding via Ollama and storing vectors in Qdrant. Supports dry-run,
plan docs, and configurable endpoints.
Also fixes embed-bench to use a shared HTTP client that trusts
self-signed certs for .lan domains behind Traefik.
Co-Authored-By: Virgil <virgil@lethean.io>
Benchmarks embedding models head-to-head using cosine similarity
on agent memory corpus. Tests cluster separation and query recall
accuracy across 4 topic groups and 8 queries.
Results: EmbeddingGemma has 2x better separation gap (0.197 vs
0.112) than nomic-embed-text, both achieve 100% top-1 recall.
Co-Authored-By: Virgil <virgil@lethean.io>
Add ToolsSeq iterator on MCP server, use slices.SortFunc in registry,
slices.ContainsFunc and strings.SplitSeq in security scanner,
range-over-int in metric benchmarks.
Co-Authored-By: Gemini <noreply@google.com>
Co-Authored-By: Virgil <virgil@lethean.io>
Uses reusable workflows from core/go-devops for Go testing
(with race detector and coverage) and security scanning
(govulncheck, gitleaks, trivy).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update imports from forge.lthn.ai/core/go/pkg/cli to
forge.lthn.ai/core/cli/pkg/cli following CLI package split.
Co-Authored-By: Virgil <virgil@lethean.io>
Go 1.26 rejects non-semver version strings (like 'main') in go.mod.
Tags v0.0.1 now exist on all forge repos — workspace still overrides
for local development.
Co-Authored-By: Virgil <virgil@lethean.io>
Forge module versions now use main branch resolution via ~/Code/go.work
workspace. Removes local replace directives — the central go.work handles
all cross-repo resolution during development.
Co-Authored-By: Virgil <virgil@lethean.io>
go-ml's Backend.Generate() and Backend.Chat() now return ml.Result{Text, Metrics}
instead of (string, error). Updated mlGenerate and mlProbe handlers to unwrap
result.Text, and updated test mocks to match the new interface.
Added local replace directives for go-inference, go-ml, go-mlx while
these changes propagate through the dependency chain.
Co-Authored-By: Virgil <virgil@lethean.io>
Commands now register through Core framework lifecycle via
cli.WithCommands() instead of side-channel init() functions.
Co-Authored-By: Virgil <virgil@lethean.io>
CLI should import RAG commands via go-ai (which already depends on
go-rag), not directly. This keeps the CLI's dependency tree clean.
Co-Authored-By: Virgil <virgil@lethean.io>
Bridge converts MCP ToolRecords into go-api ToolBridge entries,
making MCP tools accessible as REST POST endpoints with OpenAPI
metadata. Each tool's RESTHandler closure captures the generic
input type at registration time, enabling type-safe JSON
unmarshalling without runtime reflection.
Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduce ToolRecord type and addToolRecorded generic helper that
registers tools with the MCP SDK server while simultaneously recording
metadata (name, description, group, input/output JSON schemas) in a
parallel registry. This enables the upcoming REST bridge to enumerate
available tools and their schemas without depending on the SDK server's
unexported internals.
Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace internal task tracking (TODO.md, FINDINGS.md) with four
structured documentation files covering architecture, tool reference,
development guide, and project history. Trim CLAUDE.md to agent
instructions only — all detailed content now lives in docs/.
- docs/architecture.md: subsystem plugin model, transports, IDE bridge,
AI facade, full package layout
- docs/tools.md: all 49 MCP tools with parameters and descriptions
- docs/development.md: prerequisites, test patterns, adding tools/subsystems
- docs/history.md: split history, 5 phases with commit hashes, known issues
Co-Authored-By: Virgil <virgil@lethean.io>
Replace bare os.Stderr writes with mutex-protected diagPrintf helper.
Test captures output via setDiagWriter instead of swapping os.Stderr,
preventing races with concurrent ServeTCP goroutines.
Co-Authored-By: Virgil <virgil@lethean.io>