Virgil
f9e2948176
feat(ai): make RAG facade fail soft
...
Security Scan / security (push) Successful in 10s
Test / test (push) Successful in 2m27s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 05:58:24 +00:00
Virgil
3c0d9f853c
feat(ai): add recent metrics events
...
Security Scan / security (push) Successful in 10s
Test / test (push) Successful in 1m16s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 05:35:56 +00:00
Snider
97b1854857
docs: add AX design principles RFC
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 06:06:04 +01:00
Claude
0d5d780bcc
chore: update dependencies to dappco.re tagged versions
...
Security Scan / security (push) Successful in 11s
Test / test (push) Successful in 2m37s
Security Scan / security (pull_request) Successful in 8s
Test / test (pull_request) Successful in 49s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 01:10:25 +00:00
Claude
8a68ed5160
chore: migrate to dappco.re vanity import path
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 23s
Module path: forge.lthn.ai/core/go-ai -> dappco.re/go/core/ai
Updated all .go imports for migrated sibling packages:
- forge.lthn.ai/core/go-log -> dappco.re/go/core/log
- forge.lthn.ai/core/go-io -> dappco.re/go/core/io
- forge.lthn.ai/core/go-i18n -> dappco.re/go/core/i18n
Added //go:build ignore to cmd/lab/cmd_lab.go (pre-existing broken
import: forge.lthn.ai/lthn/lem/pkg/lab was removed from LEM).
Packages not yet migrated (left as-is): cli, go-rag, go-scm,
go-process, mcp, api, go-crypt, go-inference, go-ml, go-mlx.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 23:52:57 +00:00
Snider
af8fd47e3f
chore(deps): bump ecosystem deps to latest
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 1m54s
go-crypt v0.1.10, go-i18n v0.1.6, go-io v0.1.5, go-log v0.0.4,
cli v0.3.5, go v0.3.1, go-inference v0.1.4
Note: cmd/lab and cmd/rag have unresolvable transitive deps
(lem/pkg/lab not published, go-rag still on old go/pkg/i18n path).
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 08:15:56 +00:00
5e76410342
Merge pull request '[agent/claude:opus] DX audit and fix. 1) Review CLAUDE.md — update any outdate...' ( #6 ) from agent/dx-audit-and-fix--1--review-claude-md into main
Security Scan / security (push) Successful in 9s
Test / test (push) Has been cancelled
2026-03-17 08:15:01 +00:00
Snider
569f553b1a
fix(ai): DX audit — update CLAUDE.md, add tests, fix io consistency
...
Security Scan / security (pull_request) Successful in 9s
Test / test (pull_request) Failing after 1m33s
- CLAUDE.md: remove deleted daemon/ entry, add embed-bench/ and lab/,
fix build commands for go workspace (./... → module path),
update error handling guidance to coreerr.E(), remove stale
cli.AddDaemonCommand reference
- Replace os.MkdirAll with coreio.Local.EnsureDir in bench/test code
- Add 14 unit tests for metrics (Record, ReadEvents, Summary, sortedMap,
readMetricsFile edge cases) — ai/ coverage 65.3% → 67.3%
- Add parseDuration tests for cmd/metrics — coverage 0% → 24.6%
- No fmt.Errorf or errors.New violations found
- No os.ReadFile/os.WriteFile violations found
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 08:01:21 +00:00
Snider
251d248026
refactor: replace fmt.Errorf/errors.New with coreerr.E()
...
Security Scan / security (push) Successful in 8s
Test / test (push) Failing after 1m15s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 21:59:21 +00:00
Snider
c9489fe3f6
fix: remove cmd/daemon (cli.AddDaemonCommand no longer exists)
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 1m21s
Daemon management moved to go-process. This cmd/ referenced a
function that was removed during the cli library cleanup.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 19:20:02 +00:00
Snider
02b04f9bb5
fix(ai): replace os.MkdirAll with coreio.Local.EnsureDir in metrics
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 1m12s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 18:31:36 +00:00
Snider
be522ad68f
chore: update dependencies
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 1m26s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:43:29 +00:00
Snider
890769734a
chore: sync go.mod dependencies
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:37:50 +00:00
Snider
aaececd903
chore: add .core/ and .idea/ to .gitignore
Security Scan / security (push) Successful in 11s
Test / test (push) Failing after 1m50s
2026-03-15 10:17:49 +00:00
Snider
18992a70d9
fix: align indirect dependency versions via go work sync
...
Security Scan / security (push) Successful in 8s
Test / test (push) Failing after 2m1s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 13:42:30 +00:00
Snider
94ec6e3e0a
fix: update stale import paths and dependency versions from extraction
...
Test / test (push) Waiting to run
Security Scan / security (push) Successful in 9s
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>
2026-03-14 13:38:59 +00:00
Snider
3f3faf3c9c
refactor(api): update import path from go-api to core/api
...
Security Scan / security (push) Successful in 11s
Test / test (push) Failing after 2m0s
Part of the polyglot merge — forge.lthn.ai/core/go-api is now
forge.lthn.ai/core/api.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 10:10:32 +00:00
Snider
9e06e3e1b1
docs: add CLAUDE.md project instructions
...
Security Scan / security (push) Successful in 10s
Test / test (push) Failing after 2m21s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:38:01 +00:00
Snider
6460301533
docs: add human-friendly documentation
...
Security Scan / security (push) Successful in 8s
Test / test (push) Failing after 2m1s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:02:39 +00:00
Snider
0202bec84a
refactor: extract MCP server to core/mcp
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 1m47s
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>
2026-03-09 18:40:50 +00:00
Snider
413c637d26
refactor: use generic cli.AddDaemonCommand, remove duplicated daemon lifecycle
...
Security Scan / security (push) Successful in 12s
Test / test (push) Failing after 2m2s
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>
2026-03-09 14:09:02 +00:00
Snider
021e73a3f6
fix: thread-safe metrics, error returns for RAG, TCP bind safety
...
Security Scan / security (push) Successful in 8s
Test / test (push) Failing after 2m28s
- 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>
2026-03-09 08:23:53 +00:00
Snider
e81f673448
chore: add .core/ build and release configs
...
Security Scan / security (push) Successful in 8s
Test / test (push) Failing after 2m20s
Add go-devops build system configuration for standardised
build, test, and release workflows across the Go ecosystem.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 18:52:36 +00:00
Snider
16f8ffc22c
chore: sync go.mod dependencies
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 2m28s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 15:22:46 +00:00
Snider
53c4f1d645
chore: remove boilerplate Taskfile
...
Security Scan / security (push) Successful in 8s
Test / test (push) Failing after 2m20s
All tasks (test, build, lint, fmt, vet, cov) are handled natively
by `core go` commands. Taskfile was redundant wrapper.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 14:45:49 +00:00
Snider
f032887827
docs: add angular-testing MCP guide from core/go
...
Security Scan / security (push) Successful in 8s
Test / test (push) Failing after 1m32s
MCP tools live in go-ai — this doc belongs here.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 14:24:41 +00:00
Snider
991c1f6bf3
refactor: swap pkg/framework imports to pkg/core
...
Security Scan / security (push) Successful in 7s
Test / test (push) Failing after 2m25s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 14:11:03 +00:00
Snider
badcfe9a78
refactor: swap pkg imports to standalone modules
...
Security Scan / security (push) Successful in 11s
Test / test (push) Failing after 1m37s
- pkg/ws → go-ws
- pkg/webview → go-webview
- pkg/lab → lthn/lem/pkg/lab
- pkg/process → go-process (from prior session)
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 13:48:09 +00:00
Snider
dfe474a239
refactor: swap pkg/{io,log,i18n} imports to go-io/go-log/go-i18n
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 3m8s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 12:35:42 +00:00
Snider
b36975097d
feat: add brain-seed tool + TLS support for .lan domains
...
Test / test (push) Failing after 43s
Security Scan / security (push) Failing after 14m3s
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>
2026-03-03 10:23:42 +00:00
Snider
ba6272d2aa
feat: add embed-bench tool for comparing embedding models
...
Security Scan / security (push) Successful in 7s
Test / test (push) Failing after 1m1s
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>
2026-03-03 10:10:08 +00:00
Snider
35246ff14e
feat(mcp): add brain subsystem for OpenBrain knowledge store
...
Security Scan / security (push) Successful in 7s
Test / test (push) Failing after 1m0s
Adds mcp/brain/ package with 4 MCP tools (brain_remember,
brain_recall, brain_forget, brain_list) that proxy to Laravel
php-agentic backend via the shared IDE WebSocket bridge.
13 tests passing (nil-bridge headless mode + struct round-trips).
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-03 09:52:08 +00:00
Snider
458ea3f3fa
test: add iterator and registry tag tests for MCP service
...
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 5m23s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-02 17:37:38 +00:00
Snider
a803603916
chore: bump forge.lthn.ai dep versions to latest tags
...
Security Scan / security (push) Successful in 22s
Test / test (push) Failing after 8m45s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-26 05:34:22 +00:00
42dabde28f
Merge pull request 'chore: Go 1.26 modernization' ( #5 ) from chore/go-1.26-modernization into main
Security Scan / security (push) Successful in 10s
Test / test (push) Failing after 1m32s
2026-02-24 18:01:43 +00:00
Claude
ee873fcab4
chore: extract repeated sentinel errors to package vars
...
Test / test (pull_request) Failing after 1m34s
Security Scan / security (pull_request) Failing after 11m52s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:04:11 +00:00
Claude
23d8cb4824
chore: fmt.Errorf(static) → errors.New
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:01:43 +00:00
Snider
6dcb39e0ae
chore: bump forge.lthn.ai dep versions to latest tags
...
Security Scan / security (push) Successful in 14s
Test / test (push) Successful in 7m21s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:49:37 +00:00
Snider
fdcd791b9b
chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig)
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:45:31 +00:00
Snider
bd2e2acd49
chore: refresh go.sum after upstream tag updates
...
Security Scan / security (push) Successful in 8s
Test / test (push) Failing after 35s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:35:18 +00:00
Snider
71abac6415
feat: modernise to Go 1.26 iterators and stdlib helpers
...
Security Scan / security (push) Successful in 12s
Test / test (push) Failing after 28s
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>
2026-02-23 05:59:29 +00:00
Claude
445e6ee375
ci: add Forgejo Actions test and security scan workflows
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 29s
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>
2026-02-23 03:28:02 +00:00
Claude
2537aea96a
chore: refresh go.sum after upstream tag updates
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:36:25 +00:00
Snider
8a21d750bb
refactor: migrate CLI imports from core/go to core/cli
...
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>
2026-02-22 23:29:44 +00:00
Claude
5f120f8e90
chore: sync workspace dependency versions
...
Run go work sync to align dependency versions across workspace.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:42:15 +00:00
Snider
dff5fb23c5
refactor: apply go fix modernizers for Go 1.26
...
Automated fixes: interface{} → any, range-over-int, t.Context(),
wg.Go(), strings.SplitSeq, strings.Builder, slices.Contains,
maps helpers, min/max builtins.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 21:00:16 +00:00
Snider
6d07388407
chore: bump go directive to 1.26.0
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 20:33:48 +00:00
Snider
b2b4982e3c
chore: pin forge deps to v0.0.1 tags for Go 1.26 compat
...
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>
2026-02-22 20:15:05 +00:00
Snider
ad865ab3b9
chore: use workspace-resolved versions, drop replace directives
...
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>
2026-02-22 19:49:36 +00:00
Snider
85e02297cc
fix: update ml tool handlers for Result return type
...
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>
2026-02-22 19:24:32 +00:00