feat(agents): add Hephaestus - autonomous deep worker agent (#1287)

* 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>
This commit is contained in:
YeonGyu-Kim
2026-02-01 19:26:57 +09:00
committed by GitHub
parent 5f053cd75b
commit 64825158a7
45 changed files with 2617 additions and 970 deletions
@@ -10,6 +10,9 @@ exports[`generateModelConfig no providers available returns ULTIMATE_FALLBACK fo
"explore": {
"model": "opencode/glm-4.7-free",
},
"hephaestus": {
"model": "opencode/glm-4.7-free",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
@@ -28,9 +31,6 @@ exports[`generateModelConfig no providers available returns ULTIMATE_FALLBACK fo
"prometheus": {
"model": "opencode/glm-4.7-free",
},
"sisyphus": {
"model": "opencode/glm-4.7-free",
},
},
"categories": {
"artistry": {
@@ -94,18 +94,11 @@ exports[`generateModelConfig single native provider uses Claude models when only
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-sonnet-4-5",
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
"deep": {
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
@@ -168,14 +161,6 @@ exports[`generateModelConfig single native provider uses Claude models with isMa
},
},
"categories": {
"artistry": {
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
"deep": {
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
@@ -211,6 +196,10 @@ exports[`generateModelConfig single native provider uses OpenAI models when only
"explore": {
"model": "opencode/gpt-5-nano",
},
"hephaestus": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
@@ -233,15 +222,8 @@ exports[`generateModelConfig single native provider uses OpenAI models when only
"model": "openai/gpt-5.2",
"variant": "high",
},
"sisyphus": {
"model": "openai/gpt-5.2",
"variant": "high",
},
},
"categories": {
"artistry": {
"model": "openai/gpt-5.2",
},
"deep": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
@@ -281,6 +263,10 @@ exports[`generateModelConfig single native provider uses OpenAI models with isMa
"explore": {
"model": "opencode/gpt-5-nano",
},
"hephaestus": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
@@ -303,15 +289,8 @@ exports[`generateModelConfig single native provider uses OpenAI models with isMa
"model": "openai/gpt-5.2",
"variant": "high",
},
"sisyphus": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
},
},
"categories": {
"artistry": {
"model": "openai/gpt-5.2",
},
"deep": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
@@ -372,19 +351,12 @@ exports[`generateModelConfig single native provider uses Gemini models when only
"prometheus": {
"model": "google/gemini-3-pro",
},
"sisyphus": {
"model": "google/gemini-3-pro",
},
},
"categories": {
"artistry": {
"model": "google/gemini-3-pro",
"variant": "max",
},
"deep": {
"model": "google/gemini-3-pro",
"variant": "max",
},
"quick": {
"model": "google/gemini-3-flash",
},
@@ -439,19 +411,12 @@ exports[`generateModelConfig single native provider uses Gemini models with isMa
"prometheus": {
"model": "google/gemini-3-pro",
},
"sisyphus": {
"model": "google/gemini-3-pro",
},
},
"categories": {
"artistry": {
"model": "google/gemini-3-pro",
"variant": "max",
},
"deep": {
"model": "google/gemini-3-pro",
"variant": "max",
},
"quick": {
"model": "google/gemini-3-flash",
},
@@ -485,6 +450,10 @@ exports[`generateModelConfig all native providers uses preferred models from fal
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "anthropic/claude-sonnet-4-5",
},
@@ -508,7 +477,8 @@ exports[`generateModelConfig all native providers uses preferred models from fal
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-sonnet-4-5",
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
},
"categories": {
@@ -553,6 +523,10 @@ exports[`generateModelConfig all native providers uses preferred models with isM
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "anthropic/claude-sonnet-4-5",
},
@@ -623,6 +597,10 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models when on
"explore": {
"model": "opencode/claude-haiku-4-5",
},
"hephaestus": {
"model": "opencode/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
@@ -646,7 +624,8 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models when on
"variant": "max",
},
"sisyphus": {
"model": "opencode/claude-sonnet-4-5",
"model": "opencode/claude-opus-4-5",
"variant": "max",
},
},
"categories": {
@@ -691,6 +670,10 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models with is
"explore": {
"model": "opencode/claude-haiku-4-5",
},
"hephaestus": {
"model": "opencode/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
@@ -761,6 +744,10 @@ exports[`generateModelConfig fallback providers uses GitHub Copilot models when
"explore": {
"model": "github-copilot/gpt-5-mini",
},
"hephaestus": {
"model": "github-copilot/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "github-copilot/claude-sonnet-4.5",
},
@@ -784,7 +771,8 @@ exports[`generateModelConfig fallback providers uses GitHub Copilot models when
"variant": "max",
},
"sisyphus": {
"model": "github-copilot/claude-sonnet-4.5",
"model": "github-copilot/claude-opus-4.5",
"variant": "max",
},
},
"categories": {
@@ -829,6 +817,10 @@ exports[`generateModelConfig fallback providers uses GitHub Copilot models with
"explore": {
"model": "github-copilot/gpt-5-mini",
},
"hephaestus": {
"model": "github-copilot/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "github-copilot/claude-sonnet-4.5",
},
@@ -918,16 +910,10 @@ exports[`generateModelConfig fallback providers uses ZAI model for librarian whe
"model": "opencode/glm-4.7-free",
},
"sisyphus": {
"model": "opencode/glm-4.7-free",
"model": "zai-coding-plan/glm-4.7",
},
},
"categories": {
"artistry": {
"model": "opencode/glm-4.7-free",
},
"deep": {
"model": "opencode/glm-4.7-free",
},
"quick": {
"model": "opencode/glm-4.7-free",
},
@@ -983,12 +969,6 @@ exports[`generateModelConfig fallback providers uses ZAI model for librarian wit
},
},
"categories": {
"artistry": {
"model": "opencode/glm-4.7-free",
},
"deep": {
"model": "opencode/glm-4.7-free",
},
"quick": {
"model": "opencode/glm-4.7-free",
},
@@ -1021,6 +1001,10 @@ exports[`generateModelConfig mixed provider scenarios uses Claude + OpenCode Zen
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "opencode/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "opencode/glm-4.7-free",
},
@@ -1044,7 +1028,8 @@ exports[`generateModelConfig mixed provider scenarios uses Claude + OpenCode Zen
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-sonnet-4-5",
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
},
"categories": {
@@ -1089,6 +1074,10 @@ exports[`generateModelConfig mixed provider scenarios uses OpenAI + Copilot comb
"explore": {
"model": "github-copilot/gpt-5-mini",
},
"hephaestus": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "github-copilot/claude-sonnet-4.5",
},
@@ -1112,7 +1101,8 @@ exports[`generateModelConfig mixed provider scenarios uses OpenAI + Copilot comb
"variant": "max",
},
"sisyphus": {
"model": "github-copilot/claude-sonnet-4.5",
"model": "github-copilot/claude-opus-4.5",
"variant": "max",
},
},
"categories": {
@@ -1180,18 +1170,11 @@ exports[`generateModelConfig mixed provider scenarios uses Claude + ZAI combinat
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-sonnet-4-5",
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
},
"categories": {
"artistry": {
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
"deep": {
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
@@ -1249,7 +1232,8 @@ exports[`generateModelConfig mixed provider scenarios uses Gemini + Claude combi
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-sonnet-4-5",
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
},
"categories": {
@@ -1257,10 +1241,6 @@ exports[`generateModelConfig mixed provider scenarios uses Gemini + Claude combi
"model": "google/gemini-3-pro",
"variant": "max",
},
"deep": {
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
@@ -1294,6 +1274,10 @@ exports[`generateModelConfig mixed provider scenarios uses all fallback provider
"explore": {
"model": "opencode/claude-haiku-4-5",
},
"hephaestus": {
"model": "github-copilot/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "zai-coding-plan/glm-4.7",
},
@@ -1317,7 +1301,8 @@ exports[`generateModelConfig mixed provider scenarios uses all fallback provider
"variant": "max",
},
"sisyphus": {
"model": "github-copilot/claude-sonnet-4.5",
"model": "github-copilot/claude-opus-4.5",
"variant": "max",
},
},
"categories": {
@@ -1362,6 +1347,10 @@ exports[`generateModelConfig mixed provider scenarios uses all providers togethe
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "zai-coding-plan/glm-4.7",
},
@@ -1385,7 +1374,8 @@ exports[`generateModelConfig mixed provider scenarios uses all providers togethe
"variant": "max",
},
"sisyphus": {
"model": "anthropic/claude-sonnet-4-5",
"model": "anthropic/claude-opus-4-5",
"variant": "max",
},
},
"categories": {
@@ -1430,6 +1420,10 @@ exports[`generateModelConfig mixed provider scenarios uses all providers with is
"explore": {
"model": "anthropic/claude-haiku-4-5",
},
"hephaestus": {
"model": "openai/gpt-5.2-codex",
"variant": "medium",
},
"librarian": {
"model": "zai-coding-plan/glm-4.7",
},