Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/agents/builtin-agents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -41,6 +42,7 @@ const agentSources: Record<BuiltinAgentName, AgentSource> = {
// 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,
}

/**
Expand Down
1 change: 1 addition & 0 deletions src/agents/builtin-agents/general-agents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
1 change: 1 addition & 0 deletions src/agents/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
3 changes: 2 additions & 1 deletion src/agents/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ export type BuiltinAgentName =
| "multimodal-looker"
| "metis"
| "momus"
| "atlas";
| "atlas"
| "sisyphus-junior";

export type OverridableAgentName = "build" | BuiltinAgentName;

Expand Down
1 change: 1 addition & 0 deletions src/config/schema/agent-names.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export const BuiltinAgentNameSchema = z.enum([
"metis",
"momus",
"atlas",
"sisyphus-junior",
])

export const BuiltinSkillNameSchema = z.enum([
Expand Down
7 changes: 4 additions & 3 deletions src/shared/model-requirements.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
expect(hephaestus.requiresModel).toBeUndefined()
})

test("all 10 builtin agents have valid fallbackChain arrays", () => {
// #given - list of 10 agent names
test("all 11 builtin agents have valid fallbackChain arrays", () => {
// #given - list of 11 agent names
const expectedAgents = [
"sisyphus",
"hephaestus",
Expand All @@ -204,13 +204,14 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
"metis",
"momus",
"atlas",
"sisyphus-junior",
]

// when - checking AGENT_MODEL_REQUIREMENTS
const definedAgents = Object.keys(AGENT_MODEL_REQUIREMENTS)

// #then - all agents present with valid fallbackChain
expect(definedAgents).toHaveLength(10)
expect(definedAgents).toHaveLength(11)
for (const agent of expectedAgents) {
const requirement = AGENT_MODEL_REQUIREMENTS[agent]
expect(requirement).toBeDefined()
Expand Down
13 changes: 13 additions & 0 deletions src/shared/model-requirements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,19 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
{ 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<string, ModelRequirement> = {
Expand Down