Snider
85dd0555ac
fix(brain): shared brain — don't filter by agent_id on recall
...
Was forcing agent isolation. Now all agents see all memories by default.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 11:50:20 +00:00
Snider
5fbaf4f211
fix(brain): use hostname-based agent_id instead of hardcoded cladius
...
Charon gets agent_id 'charon', Cladius gets 'cladius'.
Override with AGENT_NAME env var.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 11:24:59 +00:00
Snider
2ea50959f2
refactor: move brain + agentic packages into core/agent, use core/cli
...
Brain and agentic subsystems now live in core/agent/pkg/ instead of
core/mcp/pkg/mcp/. core-agent binary uses core/cli for proper command
framework. Usage: core-agent mcp
One repo, one clone, everything works.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 11:10:33 +00:00
Snider
84e2b62beb
feat: core-agent MCP binary using core/mcp subsystems
...
Replaces old mcp-go based server with core/mcp (brain + agentic).
Single binary: go install ./cmd/core-agent/
Provides: brain_recall, brain_remember, brain_forget, agentic_dispatch,
agentic_status, agentic_resume, agentic_scan, agentic_create_pr, etc.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 10:58:25 +00:00
Snider
0f12156104
docs: Charon onboarding guide — ecosystem changes March 2026
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 09:04:28 +00:00
Snider
e359522c97
feat(issues): add epic type
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 08:36:25 +00:00
Snider
a389388b9d
feat(ui): core-agent-panel Lit custom element
...
Dashboard showing issues + sprint progress. Works in:
- core/ide (Wails desktop via provider system)
- lthn.sh (Laravel web via Blade component)
- Standalone browser (index.html)
Auto-refreshes every 30s. Accepts api-url and api-key attributes.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 08:16:30 +00:00
Snider
d1537879b3
fix: add keep_alive to local-agent.sh — unloads model after 5m idle
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 07:48:42 +00:00
Snider
796eb83204
feat: add local-agent.sh wrapper + local concurrency config
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 07:35:34 +00:00
Snider
d659f1c2c9
chore: reduce gemini concurrency to 1 (free tier quota)
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 06:36:28 +00:00
Snider
0b8d7b13ed
fix(issues): use workspace_id from middleware, not workspace object
...
AgentApiAuth middleware sets workspace_id attribute, not workspace.
Controllers were trying to read ->id on null.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 06:16:29 +00:00
Snider
12a22aa892
test(issues): phase 5 — feature tests for Issue and Sprint models and actions
...
IssueTest covers: model CRUD, status transitions, slug generation,
sprint association, comments, label management, scopes, MCP context,
and all Issue Action classes with validation.
SprintTest covers: model lifecycle, progress calculation, scopes,
MCP context, and all Sprint Action classes with validation.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 06:02:08 +00:00
Snider
5a0b126f51
feat(issues): phase 3 — Actions and API controllers for issues and sprints
...
Issue Actions: CreateIssue, GetIssue, ListIssues, UpdateIssue,
ArchiveIssue, AddIssueComment with full validation and workspace scoping.
Sprint Actions: CreateSprint, GetSprint, ListSprints, UpdateSprint,
ArchiveSprint with status lifecycle management.
IssueController: REST endpoints with filtering by status, type,
priority, sprint, and label. Comment sub-resource endpoints.
SprintController: REST endpoints with progress tracking.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 06:02:08 +00:00
Snider
225b0b4812
feat(issues): phase 2 — migration, models, routes for issue tracker
...
Add Issue, Sprint, IssueComment models with workspace scoping,
soft deletes, activity logging, and MCP context support.
Migration creates issues, sprints, and issue_comments tables.
API routes registered with read/write permission scopes.
Controller stubs for IssueController and SprintController.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 06:02:08 +00:00
Snider
54e9fe0b61
chore: bump core plugin to v0.4.0 (hook cleanup)
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 05:42:25 +00:00
Snider
88e5fc6f49
refactor(plugin): remove restrictive hooks, clean up orphaned scripts
...
Removed:
- prefer-core.sh: blocked raw go/php commands unnecessarily
- post-commit-check.sh: noisy warnings after every commit
- block-docs.sh: blocked writing specs and RFCs
- capture-context.sh, extract-actionables.sh, pr-created.sh,
suggest-compact.sh: orphaned scripts not referenced by any hook
Kept:
- go-format.sh, php-format.sh: auto-format after edits (helpful)
- check-debug.sh: warns about dd()/fmt.Print* (lightweight)
- session-start.sh, pre-compact.sh, session-save.sh: essential
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 05:37:52 +00:00
Snider
cce41faa39
fix(plugin): remove block-docs hook — was blocking specs and RFCs
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 05:32:21 +00:00
Snider
670e4c9a10
feat(templates): add 5 audit templates for self-healing codebase
...
New scan templates:
- dependency-audit: find code rolling its own vs using framework
- dead-code: unreachable functions, unused exports, orphaned files
- test-gaps: untested functions, missing error path coverage
- api-consistency: endpoint naming, response shapes, error formats
- doc-sync: documentation vs code drift
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 18:33:52 +00:00
Snider
e6dbce3a78
feat: rate config for quota-aware scheduling — gemini burst/sustained modes
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 17:56:04 +00:00
Snider
e77140a58f
feat: per-agent concurrency — claude: 1, gemini: 3, codex: 1
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 17:33:26 +00:00
Snider
73212624a3
fix(plugin): update marketplace listing code → core, bump to v0.3.0
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 17:11:09 +00:00
Snider
86040da16a
chore(plugin): bump version to 0.3.0 for core/ rename
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 17:07:47 +00:00
Snider
fd7be94b2c
fix(plugin): rename plugin from code → core for /core: namespace
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 17:03:58 +00:00
Snider
afbc915db3
rename: claude/code → claude/core for /core: command namespace
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 16:59:01 +00:00
Snider
4373af173b
fix(plugin): use bare command names — plugin adds code: prefix automatically
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 16:58:23 +00:00
Snider
4d43b4c9bf
fix(plugin): restore core: prefix on commands
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 16:54:53 +00:00
Snider
03b77bd9db
fix(plugin): drop core: prefix — commands use code: namespace from dir
...
Plugin commands derive namespace from directory (claude/code/) not
the name field. Commands now: /code:dispatch, /code:status, /code:recall,
/code:review, /code:sweep, /code:scan.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 16:51:40 +00:00
Snider
290a582656
feat(plugin): add review and sweep commands, update dispatch with persona
...
New commands:
- /core:review — review agent workspace output, diff, merge options
- /core:sweep — batch dispatch audit across all Go repos
Updated /core:dispatch with persona argument support.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 16:45:39 +00:00
Snider
99e8456c57
feat: add agents.yaml config for dispatch concurrency control
...
max_concurrent: 2 limits parallel agent processes.
Agent identities: cladius (dispatch/review), athena (worker),
charon (worker/review, inactive), clotho (worker, inactive).
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 16:03:21 +00:00
Snider
f0cb5dd2bd
chore: update dependencies
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:43:31 +00:00
Snider
3ac81d47cb
chore: sync go.mod dependencies
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:28:58 +00:00
Snider
4c0c5f6572
chore: update GEMINI.md
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:10:57 +00:00
Snider
d3bbda3698
fix(plugin): prefix commands with core: namespace to avoid clashes
...
/dispatch → /core:dispatch, /status → /core:status, etc.
Prevents collision with built-in Claude commands.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 14:50:35 +00:00
Snider
6045805dfc
feat(plugin): add dispatch, status, recall, scan commands
...
New slash commands for the agentic system:
- /dispatch — dispatch subagent to sandboxed workspace
- /status — show workspace status (running/blocked/completed)
- /recall — search OpenBrain memories
- /scan — find actionable Forge issues
Fix MCP URL: api.lthn.sh/mcp → mcp.lthn.sh (subdomain routing).
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 14:47:17 +00:00
Snider
7da0294100
refactor: restructure agents → prompts/personas, add plan templates
...
Move agent persona definitions from agents/ to prompts/personas/.
Add plan templates (bug-fix, code-review, feature-port, new-feature,
refactor) from the PHP PlanTemplateService into prompts/templates/.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 13:55:25 +00:00
Snider
9df5ed10f6
feat(docker): local development stack for community onboarding
...
Multistage Dockerfile (FrankenPHP + Octane + Horizon + Reverb) with
docker-compose wiring 6 services: app, mariadb, qdrant, ollama, redis,
traefik. All data mounts to .core/vm/mnt/{config,data,log}. Traefik
routes *.lthn.sh with self-signed TLS. Setup script handles first-run
bootstrap including cert generation and embedding model pull.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 13:15:05 +00:00
Snider
9f2253cd9b
fix(brain): improve session-start recall queries with type filters
...
Tuned OpenBrain recall queries to use type-filtered searches (decision,
plan, convention) instead of generic keyword matching. Increased content
truncation from 300 to 600 chars. Added roadmap/priorities query.
Renamed MCP server from openbrain to core in mcp.json.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 13:14:58 +00:00
Snider
b317064c51
chore: add .core/ and .idea/ to .gitignore
2026-03-15 10:17:49 +00:00
Snider
c5c50f310c
feat(brain): improve recall quality and ingest deduplication
...
- Add source field to brain_memories (manual, ingest:claude-md, etc.)
- Pass Qdrant similarity scores through to API response
- Minimum 50-char content length filter during ingest
- Content hash deduplication prevents duplicate memories on re-ingest
- Update VALID_TYPES to include all 13 memory types
- Include score and source in toMcpContext response
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 07:42:38 +00:00
Snider
116fecb0d6
fix: align indirect dependency versions via go work sync
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 13:42:30 +00:00
Snider
3a2bc7c1f5
fix: update stale import paths and dependency versions from extraction
...
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:58 +00:00
Snider
8e63c19137
fix: debounce session-save hook to once per 10 minutes
...
Prevents flooding OpenBrain with near-identical context memories
during long sessions. Uses per-project timestamp file for debounce.
Also includes recent commits in saved context.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 11:50:49 +00:00
Snider
93415257f3
feat: OpenBrain integration for session hooks
...
SessionStart: query OpenBrain for recent activity + project context,
inject into Claude's context window on every new session.
Stop: async save session context to OpenBrain when git changes exist.
PreCompact: save working state to OpenBrain before context compaction.
API key read from ~/.claude/brain.key or CORE_BRAIN_KEY env var.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 11:44:04 +00:00
Snider
2e8e071d75
fix: reduce hook false positives
...
- Allow go mod tidy, go work sync, go get, go run (no core wrapper)
- Only block sed -i on local files (allow via ssh/docker)
- grep -l only blocked when piped to destructive commands
- Remove sed > and awk > blocks (too aggressive)
- check-debug: only flag fmt.Print* not log.Println (go-log is valid)
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 11:39:23 +00:00
Snider
6442cb85ad
refactor: update import path from go-config to core/config
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 10:22:39 +00:00
Snider
9071f28eb9
refactor(api): update import path from go-api to core/api
...
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:39 +00:00
Snider
ad00214104
fix: remove block-docs hook — blocks legitimate spec/doc work
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 10:05:15 +00:00
Snider
72c097ebcc
docs: remove completed plan files
...
Webhook (implemented in core/php), review pipeline (commands + skills
exist), and OpenBrain (BrainService, BrainMemory, 4 MCP tools, Actions,
Commands all implemented) plans are all completed.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 08:21:58 +00:00
Snider
0a81a6046f
feat(marketplace): add npm packages, revert to git URL for local use
...
Published @lthn/core-agent on npm. External plugins use git URLs
locally, npm for public distribution.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 10:49:19 +00:00
Snider
f0a5af2d93
fix(marketplace): use HTTPS URLs for external plugin sources
...
Claude Code uses git over HTTPS for plugin installation.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 10:18:44 +00:00