refactor(categories): rename high-iq to ultrabrain

This commit is contained in:
YeonGyu-Kim
2026-01-08 11:30:45 +09:00
parent 1fe6c7e508
commit cfb6980493
8 changed files with 25 additions and 25 deletions

View File

@@ -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, CategoryConfig>): 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

View File

@@ -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,

View File

@@ -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) {

View File

@@ -160,7 +160,7 @@ export const CategoryConfigSchema = z.object({
export const BuiltinCategoryNameSchema = z.enum([
"visual-engineering",
"high-iq",
"ultrabrain",
"artistry",
"quick",
"most-capable",

View File

@@ -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<string, unknown>
expect(agents.oracle).toBeDefined()
expect((agents.oracle as Record<string, unknown>).category).toBe("high-iq")
expect((agents.oracle as Record<string, unknown>).category).toBe("ultrabrain")
expect((agents.oracle as Record<string, unknown>).temperature).toBe(0.5)
expect((agents.oracle as Record<string, unknown>).model).toBeUndefined()

View File

@@ -31,7 +31,7 @@ export const HOOK_NAME_MAP: Record<string, string> = {
// Model to category mapping for auto-migration
export const MODEL_TO_CATEGORY_MAP: Record<string, string> = {
"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",

View File

@@ -188,7 +188,7 @@ export const DEFAULT_CATEGORIES: Record<string, CategoryConfig> = {
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<string, CategoryConfig> = {
export const CATEGORY_PROMPT_APPENDS: Record<string, string> = {
"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<string, string> = {
export const CATEGORY_DESCRIPTIONS: Record<string, string> = {
"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",

View File

@@ -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")