64825158a7
* refactor(keyword-detector): split constants into domain-specific modules * feat(shared): add requiresAnyModel and isAnyFallbackModelAvailable * feat(config): add hephaestus to agent schemas * feat(agents): add Hephaestus autonomous deep worker * feat(cli): update model-fallback for hephaestus support * feat(plugin): add hephaestus to config handler with ordering * test(delegate-task): update tests for hephaestus agent * docs: update AGENTS.md files for hephaestus * docs: add hephaestus to READMEs * chore: regenerate config schema * fix(delegate-task): bypass requiresModel check when user provides explicit config * docs(hephaestus): add 4-part context structure for explore/librarian prompts * docs: fix review comments from cubic (non-breaking changes) - Move Hephaestus from Primary Agents to Subagents (uses own fallback chain) - Fix Hephaestus fallback chain documentation (claude-opus-4-5 → gemini-3-pro) - Add settings.local.json to claude-code-hooks config sources - Fix delegate_task parameters in ultrawork prompt (agent→subagent_type, background→run_in_background, add load_skills) - Update line counts in AGENTS.md (index.ts: 788, manager.ts: 1440) * docs: fix additional documentation inconsistencies from oracle review - Fix delegate_task parameters in Background Agents example (docs/features.md) - Fix Hephaestus fallback chain in root AGENTS.md to match model-requirements.ts * docs: clarify Hephaestus has no fallback (requires gpt-5.2-codex only) Hephaestus uses requiresModel constraint - it only activates when gpt-5.2-codex is available. The fallback chain in code is unreachable, so documentation should not mention fallbacks. * fix(hephaestus): remove unreachable fallback chain entries Hephaestus has requiresModel: gpt-5.2-codex which means the agent only activates when that specific model is available. The fallback entries (claude-opus-4-5, gemini-3-pro) were unreachable and misleading. --------- Co-authored-by: justsisyphus <justsisyphus@users.noreply.github.com>
2.7 KiB
2.7 KiB
FEATURES KNOWLEDGE BASE
OVERVIEW
20 feature modules: background agents, skill MCPs, builtin skills/commands, Claude Code compatibility layer.
Feature Types: Task orchestration, Skill definitions, Command templates, Claude Code loaders, Supporting utilities
STRUCTURE
features/
├── background-agent/ # Task lifecycle (1418 lines)
│ ├── manager.ts # Launch → poll → complete
│ └── concurrency.ts # Per-provider limits
├── builtin-skills/ # Core skills (1729 lines)
│ └── skills.ts # playwright, dev-browser, frontend-ui-ux, git-master, typescript-programmer
├── builtin-commands/ # ralph-loop, refactor, ulw-loop, init-deep, start-work, cancel-ralph, stop-continuation
├── claude-code-agent-loader/ # ~/.claude/agents/*.md
├── claude-code-command-loader/ # ~/.claude/commands/*.md
├── claude-code-mcp-loader/ # .mcp.json with ${VAR} expansion
├── claude-code-plugin-loader/ # installed_plugins.json
├── claude-code-session-state/ # Session persistence
├── opencode-skill-loader/ # Skills from 6 directories
├── context-injector/ # AGENTS.md/README.md injection
├── boulder-state/ # Todo state persistence
├── hook-message-injector/ # Message injection
├── task-toast-manager/ # Background task notifications
├── skill-mcp-manager/ # MCP client lifecycle (617 lines)
├── tmux-subagent/ # Tmux session management
├── mcp-oauth/ # MCP OAuth handling
├── sisyphus-swarm/ # Swarm coordination
└── sisyphus-tasks/ # Task tracking
LOADER PRIORITY
| Type | Priority (highest first) |
|---|---|
| Commands | .opencode/command/ > ~/.config/opencode/command/ > .claude/commands/ |
| Skills | .opencode/skills/ > ~/.config/opencode/skills/ > .claude/skills/ |
| MCPs | .claude/.mcp.json > .mcp.json > ~/.claude/.mcp.json |
BACKGROUND AGENT
- Lifecycle:
launch→poll(2s) →complete - Stability: 3 consecutive polls = idle
- Concurrency: Per-provider/model limits via
ConcurrencyManager - Cleanup: 30m TTL, 3m stale timeout
- State: Per-session Maps, cleaned on
session.deleted
SKILL MCP
- Lazy: Clients created on first call
- Transports: stdio, http (SSE/Streamable)
- Lifecycle: 5m idle cleanup
ANTI-PATTERNS
- Sequential delegation: Use
delegate_taskparallel - Trust self-reports: ALWAYS verify
- Main thread blocks: No heavy I/O in loader init
- Direct state mutation: Use managers for boulder/session state