diff --git a/src/agents/orchestrator-sisyphus.ts b/src/agents/orchestrator-sisyphus.ts index 861055998..afb8a4b0b 100644 --- a/src/agents/orchestrator-sisyphus.ts +++ b/src/agents/orchestrator-sisyphus.ts @@ -65,7 +65,7 @@ ${categoryRows.join("\n")} \`\`\`typescript sisyphus_task(category="visual-engineering", prompt="...") // UI/frontend work -sisyphus_task(category="high-iq", prompt="...") // Backend/strategic work +sisyphus_task(category="ultrabrain", prompt="...") // Backend/strategic work \`\`\`` } @@ -108,11 +108,11 @@ sisyphus_task(category="visual-engineering", skills=["frontend-ui-ux", "playwrig function buildDecisionMatrix(agents: AvailableAgent[], userCategories?: Record): string { const allCategories = { ...DEFAULT_CATEGORIES, ...userCategories } const hasVisual = "visual-engineering" in allCategories - const hasStrategic = "high-iq" in allCategories + const hasStrategic = "ultrabrain" in allCategories const rows: string[] = [] if (hasVisual) rows.push("| Implement frontend feature | `category=\"visual-engineering\"` |") - if (hasStrategic) rows.push("| Implement backend feature | `category=\"high-iq\"` |") + if (hasStrategic) rows.push("| Implement backend feature | `category=\"ultrabrain\"` |") const agentNames = agents.map((a) => a.name) if (agentNames.includes("oracle")) rows.push("| Code review / architecture | `agent=\"oracle\"` |") @@ -702,13 +702,13 @@ When calling \`sisyphus_task()\`, your prompt MUST be: **BAD (will fail):** \`\`\` -sisyphus_task(category="high-iq", prompt="Fix the auth bug") +sisyphus_task(category="ultrabrain", prompt="Fix the auth bug") \`\`\` **GOOD (will succeed):** \`\`\` sisyphus_task( - category="high-iq", + category="ultrabrain", prompt=""" ## TASK Fix authentication token expiry bug in src/auth/token.ts @@ -1235,7 +1235,7 @@ The answer is almost always YES. - [X] Git commits (delegate to git-master) **DELEGATION TARGETS:** -- \`sisyphus_task(category="high-iq", background=false)\` → backend/logic implementation +- \`sisyphus_task(category="ultrabrain", background=false)\` → backend/logic implementation - \`sisyphus_task(category="visual-engineering", background=false)\` → frontend/UI implementation - \`sisyphus_task(agent="git-master", background=false)\` → ALL git commits - \`sisyphus_task(agent="document-writer", background=false)\` → documentation diff --git a/src/agents/utils.test.ts b/src/agents/utils.test.ts index 68245b814..9f5e2d3cb 100644 --- a/src/agents/utils.test.ts +++ b/src/agents/utils.test.ts @@ -193,7 +193,7 @@ describe("buildAgent with category and skills", () => { "test-agent": () => ({ description: "Test agent", - category: "high-iq", + category: "ultrabrain", skills: ["frontend-ui-ux"], prompt: "Task description", }) as AgentConfig, diff --git a/src/config/schema.test.ts b/src/config/schema.test.ts index 6218cf8f9..6c935d2ac 100644 --- a/src/config/schema.test.ts +++ b/src/config/schema.test.ts @@ -245,7 +245,7 @@ describe("AgentOverrideConfigSchema", () => { // #given - category should take precedence at runtime, but both should validate const config = { model: "openai/gpt-5.2", - category: "high-iq" + category: "ultrabrain" } // #when @@ -255,7 +255,7 @@ describe("AgentOverrideConfigSchema", () => { expect(result.success).toBe(true) if (result.success) { expect(result.data.model).toBe("openai/gpt-5.2") - expect(result.data.category).toBe("high-iq") + expect(result.data.category).toBe("ultrabrain") } }) }) @@ -282,7 +282,7 @@ describe("AgentOverrideConfigSchema", () => { test("accepts category with skills and other fields", () => { // #given const config = { - category: "high-iq", + category: "ultrabrain", skills: ["code-reviewer"], temperature: 0.3, prompt_append: "Extra instructions" @@ -294,7 +294,7 @@ describe("AgentOverrideConfigSchema", () => { // #then expect(result.success).toBe(true) if (result.success) { - expect(result.data.category).toBe("high-iq") + expect(result.data.category).toBe("ultrabrain") expect(result.data.skills).toEqual(["code-reviewer"]) expect(result.data.temperature).toBe(0.3) expect(result.data.prompt_append).toBe("Extra instructions") @@ -306,7 +306,7 @@ describe("AgentOverrideConfigSchema", () => { describe("BuiltinCategoryNameSchema", () => { test("accepts all builtin category names", () => { // #given - const categories = ["visual-engineering", "high-iq", "artistry", "quick", "most-capable", "writing", "general"] + const categories = ["visual-engineering", "ultrabrain", "artistry", "quick", "most-capable", "writing", "general"] // #when / #then for (const cat of categories) { diff --git a/src/config/schema.ts b/src/config/schema.ts index f0e7fa46b..5a3aec51f 100644 --- a/src/config/schema.ts +++ b/src/config/schema.ts @@ -160,7 +160,7 @@ export const CategoryConfigSchema = z.object({ export const BuiltinCategoryNameSchema = z.enum([ "visual-engineering", - "high-iq", + "ultrabrain", "artistry", "quick", "most-capable", diff --git a/src/shared/migration.test.ts b/src/shared/migration.test.ts index dc3b9c5dc..ed0c3f8d2 100644 --- a/src/shared/migration.test.ts +++ b/src/shared/migration.test.ts @@ -308,7 +308,7 @@ describe("migrateAgentConfigToCategory", () => { { model: "anthropic/claude-sonnet-4-5" }, ] - const expectedCategories = ["visual-engineering", "high-iq", "quick", "most-capable", "general"] + const expectedCategories = ["visual-engineering", "ultrabrain", "quick", "most-capable", "general"] // #when: Migrate each config const results = configs.map(migrateAgentConfigToCategory) @@ -335,7 +335,7 @@ describe("migrateAgentConfigToCategory", () => { const { migrated } = migrateAgentConfigToCategory(config) // #then: All non-model fields should be preserved - expect(migrated.category).toBe("high-iq") + expect(migrated.category).toBe("ultrabrain") expect(migrated.temperature).toBe(0.1) expect(migrated.top_p).toBe(0.95) expect(migrated.maxTokens).toBe(4096) @@ -398,7 +398,7 @@ describe("shouldDeleteAgentConfig", () => { test("handles different categories with their defaults", () => { // #given: Configs for different categories const configs = [ - { category: "high-iq", temperature: 0.1 }, + { category: "ultrabrain", temperature: 0.1 }, { category: "quick", temperature: 0.3 }, { category: "most-capable", temperature: 0.1 }, { category: "general", temperature: 0.3 }, @@ -547,7 +547,7 @@ describe("migrateConfigFile with backup", () => { const migratedConfig = JSON.parse(fs.readFileSync(testConfigPath, "utf-8")) const agents = migratedConfig.agents as Record expect(agents.oracle).toBeDefined() - expect((agents.oracle as Record).category).toBe("high-iq") + expect((agents.oracle as Record).category).toBe("ultrabrain") expect((agents.oracle as Record).temperature).toBe(0.5) expect((agents.oracle as Record).model).toBeUndefined() diff --git a/src/shared/migration.ts b/src/shared/migration.ts index 36d711be7..c0904e69b 100644 --- a/src/shared/migration.ts +++ b/src/shared/migration.ts @@ -31,7 +31,7 @@ export const HOOK_NAME_MAP: Record = { // Model to category mapping for auto-migration export const MODEL_TO_CATEGORY_MAP: Record = { "google/gemini-3-pro-preview": "visual-engineering", - "openai/gpt-5.2": "high-iq", + "openai/gpt-5.2": "ultrabrain", "anthropic/claude-haiku-4-5": "quick", "anthropic/claude-opus-4-5": "most-capable", "anthropic/claude-sonnet-4-5": "general", diff --git a/src/tools/sisyphus-task/constants.ts b/src/tools/sisyphus-task/constants.ts index c5a5d8fcf..4919b6556 100644 --- a/src/tools/sisyphus-task/constants.ts +++ b/src/tools/sisyphus-task/constants.ts @@ -188,7 +188,7 @@ export const DEFAULT_CATEGORIES: Record = { model: "google/gemini-3-pro-preview", temperature: 0.7, }, - "high-iq": { + ultrabrain: { model: "openai/gpt-5.2", temperature: 0.1, }, @@ -216,7 +216,7 @@ export const DEFAULT_CATEGORIES: Record = { export const CATEGORY_PROMPT_APPENDS: Record = { "visual-engineering": VISUAL_CATEGORY_PROMPT_APPEND, - "high-iq": STRATEGIC_CATEGORY_PROMPT_APPEND, + ultrabrain: STRATEGIC_CATEGORY_PROMPT_APPEND, artistry: ARTISTRY_CATEGORY_PROMPT_APPEND, quick: QUICK_CATEGORY_PROMPT_APPEND, "most-capable": MOST_CAPABLE_CATEGORY_PROMPT_APPEND, @@ -226,7 +226,7 @@ export const CATEGORY_PROMPT_APPENDS: Record = { export const CATEGORY_DESCRIPTIONS: Record = { "visual-engineering": "Frontend, UI/UX, design, styling, animation", - "high-iq": "Strict architecture design, very complex business logic", + ultrabrain: "Strict architecture design, very complex business logic", artistry: "Highly creative/artistic tasks, novel ideas", quick: "Cheap & fast - small tasks with minimal overhead, budget-friendly", "most-capable": "Complex tasks requiring maximum capability", diff --git a/src/tools/sisyphus-task/tools.test.ts b/src/tools/sisyphus-task/tools.test.ts index 05964e57f..d3df07682 100644 --- a/src/tools/sisyphus-task/tools.test.ts +++ b/src/tools/sisyphus-task/tools.test.ts @@ -42,9 +42,9 @@ describe("sisyphus-task", () => { expect(category.temperature).toBe(0.7) }) - test("high-iq category has gpt model", () => { + test("ultrabrain category has gpt model", () => { // #given - const category = DEFAULT_CATEGORIES["high-iq"] + const category = DEFAULT_CATEGORIES["ultrabrain"] // #when / #then expect(category).toBeDefined() @@ -63,9 +63,9 @@ describe("sisyphus-task", () => { expect(promptAppend).toContain("Design-first") }) - test("high-iq category has strategic prompt", () => { + test("ultrabrain category has strategic prompt", () => { // #given - const promptAppend = CATEGORY_PROMPT_APPENDS["high-iq"] + const promptAppend = CATEGORY_PROMPT_APPENDS["ultrabrain"] // #when / #then expect(promptAppend).toContain("BUSINESS LOGIC")