diff --git a/src/agents/builtin-agents.ts b/src/agents/builtin-agents.ts index 57e859c75..2d74a33dd 100644 --- a/src/agents/builtin-agents.ts +++ b/src/agents/builtin-agents.ts @@ -12,6 +12,7 @@ import { createMetisAgent, metisPromptMetadata } from "./metis" import { createAtlasAgent, atlasPromptMetadata } from "./atlas" import { createMomusAgent, momusPromptMetadata } from "./momus" import { createHephaestusAgent } from "./hephaestus" +import { createSisyphusJuniorAgentWithOverrides } from "./sisyphus-junior" import type { AvailableCategory } from "./dynamic-agent-prompt-builder" import { fetchAvailableModels, @@ -41,6 +42,7 @@ const agentSources: Record = { // Note: Atlas is handled specially in createBuiltinAgents() // because it needs OrchestratorContext, not just a model string atlas: createAtlasAgent as AgentFactory, + "sisyphus-junior": createSisyphusJuniorAgentWithOverrides as unknown as AgentFactory, } /** diff --git a/src/agents/builtin-agents/general-agents.ts b/src/agents/builtin-agents/general-agents.ts index 54f2ae3fb..e75baa146 100644 --- a/src/agents/builtin-agents/general-agents.ts +++ b/src/agents/builtin-agents/general-agents.ts @@ -50,6 +50,7 @@ export function collectPendingBuiltinAgents(input: { if (agentName === "sisyphus") continue if (agentName === "hephaestus") continue if (agentName === "atlas") continue + if (agentName === "sisyphus-junior") continue if (disabledAgents.some((name) => name.toLowerCase() === agentName.toLowerCase())) continue const override = agentOverrides[agentName] diff --git a/src/agents/index.ts b/src/agents/index.ts index 1eee7c3b2..6f2bbc1e7 100644 --- a/src/agents/index.ts +++ b/src/agents/index.ts @@ -2,3 +2,4 @@ export * from "./types" export { createBuiltinAgents } from "./builtin-agents" export type { AvailableAgent, AvailableCategory, AvailableSkill } from "./dynamic-agent-prompt-builder" export type { PrometheusPromptSource } from "./prometheus" +export { createSisyphusJuniorAgentWithOverrides, SISYPHUS_JUNIOR_DEFAULTS } from "./sisyphus-junior" diff --git a/src/agents/types.ts b/src/agents/types.ts index 63e09b3f6..acf490007 100644 --- a/src/agents/types.ts +++ b/src/agents/types.ts @@ -113,7 +113,8 @@ export type BuiltinAgentName = | "multimodal-looker" | "metis" | "momus" - | "atlas"; + | "atlas" + | "sisyphus-junior"; export type OverridableAgentName = "build" | BuiltinAgentName; diff --git a/src/config/schema/agent-names.ts b/src/config/schema/agent-names.ts index 814077d88..73e4f1f80 100644 --- a/src/config/schema/agent-names.ts +++ b/src/config/schema/agent-names.ts @@ -11,6 +11,7 @@ export const BuiltinAgentNameSchema = z.enum([ "metis", "momus", "atlas", + "sisyphus-junior", ]) export const BuiltinSkillNameSchema = z.enum([ diff --git a/src/shared/model-requirements.ts b/src/shared/model-requirements.ts index 84ade0801..4c3f33b23 100644 --- a/src/shared/model-requirements.ts +++ b/src/shared/model-requirements.ts @@ -157,6 +157,19 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.4", variant: "medium" }, ], }, + "sisyphus-junior": { + fallbackChain: [ + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-sonnet-4-6", + }, + { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.4", variant: "medium" }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, + ], + }, }; export const CATEGORY_MODEL_REQUIREMENTS: Record = {