AgentApiAuth middleware sets workspace_id attribute, not workspace.
Controllers were trying to read ->id on null.
Co-Authored-By: Virgil <virgil@lethean.io>
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>
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>
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>
- 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>
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>
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>
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>
- 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>
Remove claude/qa/ and claude/ci/ plugins (replaced by go-build and
go-devops repo-native plugins). Strip duplicate qa command from code
plugin. Marketplace now references plugins at their source repos.
Co-Authored-By: Virgil <virgil@lethean.io>
Go cmd_prep.go mirrors PHP PrepWorkspaceCommand — pulls wiki KB, copies
specs, generates TODO from issue, recalls context from OpenBrain. PHP
output dir changed from ./workspace/ to ./.core/ with lowercase filenames.
Co-Authored-By: Virgil <virgil@lethean.io>
- Update CI skill commands (status, fix, run, workflow) to detect Forge vs GitHub
and use Forge API with curl + FORGE_TOKEN instead of gh CLI
- Add detect-forge.sh script for CI provider detection from git remote
- Add hooks.json with PreToolUse, PostToolUse, PreCompact, SessionStart hooks
- Fix prefer-core.sh false positives: strip heredoc content before checking commands,
tighten wildcard matching for mv/cp to only block bare wildcards
- Update plugin.json: rename to "code", bump to v0.1.3, point URLs to Forge
- Update block-docs.sh with improved blocking rules
Co-Authored-By: Virgil <virgil@lethean.io>