refactor(plugin): update atlas references

Update plugin handlers, commands, and integration points to use 'atlas' agent name. Start-work command and config handler now reference 'atlas'.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
justsisyphus 2026-01-20 15:55:09 +09:00
parent c4b862cbc4
commit 52d9b30035
7 changed files with 29 additions and 15 deletions

View File

@ -55,7 +55,7 @@ ${REFACTOR_TEMPLATE}
}, },
"start-work": { "start-work": {
description: "(builtin) Start Sisyphus work session from Prometheus plan", description: "(builtin) Start Sisyphus work session from Prometheus plan",
agent: "orchestrator-sisyphus", agent: "atlas",
template: `<command-instruction> template: `<command-instruction>
${START_WORK_TEMPLATE} ${START_WORK_TEMPLATE}
</command-instruction> </command-instruction>

View File

@ -569,7 +569,7 @@ export function createSisyphusOrchestratorHook(
} }
if (!isCallerOrchestrator(sessionID)) { if (!isCallerOrchestrator(sessionID)) {
log(`[${HOOK_NAME}] Skipped: last agent is not orchestrator-sisyphus`, { sessionID }) log(`[${HOOK_NAME}] Skipped: last agent is not atlas`, { sessionID })
return return
} }

View File

@ -379,7 +379,7 @@ describe("start-work hook", () => {
}) })
describe("session agent management", () => { describe("session agent management", () => {
test("should update session agent to orchestrator-sisyphus when start-work command is triggered", async () => { test("should update session agent to atlas when start-work command is triggered", async () => {
// #given // #given
const updateSpy = spyOn(sessionState, "updateSessionAgent") const updateSpy = spyOn(sessionState, "updateSessionAgent")
@ -395,7 +395,7 @@ describe("start-work hook", () => {
) )
// #then // #then
expect(updateSpy).toHaveBeenCalledWith("ses-prometheus-to-sisyphus", "orchestrator-sisyphus") expect(updateSpy).toHaveBeenCalledWith("ses-prometheus-to-sisyphus", "atlas")
updateSpy.mockRestore() updateSpy.mockRestore()
}) })
}) })

View File

@ -71,7 +71,7 @@ export function createStartWorkHook(ctx: PluginInput) {
sessionID: input.sessionID, sessionID: input.sessionID,
}) })
updateSessionAgent(input.sessionID, "orchestrator-sisyphus") updateSessionAgent(input.sessionID, "atlas")
const existingState = readBoulderState(ctx.directory) const existingState = readBoulderState(ctx.directory)
const sessionId = input.sessionID const sessionId = input.sessionID

View File

@ -160,7 +160,7 @@ export function createConfigHandler(deps: ConfigHandlerDeps) {
explore?: { tools?: Record<string, unknown> }; explore?: { tools?: Record<string, unknown> };
librarian?: { tools?: Record<string, unknown> }; librarian?: { tools?: Record<string, unknown> };
"multimodal-looker"?: { tools?: Record<string, unknown> }; "multimodal-looker"?: { tools?: Record<string, unknown> };
"orchestrator-sisyphus"?: { tools?: Record<string, unknown> }; atlas?: { tools?: Record<string, unknown> };
Sisyphus?: { tools?: Record<string, unknown> }; Sisyphus?: { tools?: Record<string, unknown> };
}; };
const configAgent = config.agent as AgentConfig | undefined; const configAgent = config.agent as AgentConfig | undefined;
@ -319,8 +319,8 @@ export function createConfigHandler(deps: ConfigHandlerDeps) {
const agent = agentResult["multimodal-looker"] as AgentWithPermission; const agent = agentResult["multimodal-looker"] as AgentWithPermission;
agent.permission = { ...agent.permission, task: "deny", look_at: "deny" }; agent.permission = { ...agent.permission, task: "deny", look_at: "deny" };
} }
if (agentResult["orchestrator-sisyphus"]) { if (agentResult["atlas"]) {
const agent = agentResult["orchestrator-sisyphus"] as AgentWithPermission; const agent = agentResult["atlas"] as AgentWithPermission;
agent.permission = { ...agent.permission, task: "deny", call_omo_agent: "deny", delegate_task: "allow" }; agent.permission = { ...agent.permission, task: "deny", call_omo_agent: "deny", delegate_task: "allow" };
} }
if (agentResult.Sisyphus) { if (agentResult.Sisyphus) {

View File

@ -894,17 +894,29 @@ describe("sisyphus-task", () => {
}) })
describe("modelInfo detection via resolveCategoryConfig", () => { describe("modelInfo detection via resolveCategoryConfig", () => {
test("systemDefaultModel is used when no userModel and no inheritedModel", () => { test("catalog model is used for category with catalog entry", () => {
// #given - builtin category, no user model, no inherited model // #given - ultrabrain has catalog entry
const categoryName = "ultrabrain" const categoryName = "ultrabrain"
// #when // #when
const resolved = resolveCategoryConfig(categoryName, { systemDefaultModel: SYSTEM_DEFAULT_MODEL }) const resolved = resolveCategoryConfig(categoryName, { systemDefaultModel: SYSTEM_DEFAULT_MODEL })
// #then - actualModel should be systemDefaultModel (categories no longer have model defaults) // #then - catalog model is used
expect(resolved).not.toBeNull() expect(resolved).not.toBeNull()
const actualModel = resolved!.config.model expect(resolved!.config.model).toBe("openai/gpt-5.2-codex")
expect(actualModel).toBe(SYSTEM_DEFAULT_MODEL) expect(resolved!.config.variant).toBe("xhigh")
})
test("systemDefaultModel is used for category without catalog entry", () => {
// #given - general has no catalog entry
const categoryName = "general"
// #when
const resolved = resolveCategoryConfig(categoryName, { systemDefaultModel: SYSTEM_DEFAULT_MODEL })
// #then - systemDefaultModel is used
expect(resolved).not.toBeNull()
expect(resolved!.config.model).toBe(SYSTEM_DEFAULT_MODEL)
}) })
test("inheritedModel takes precedence over systemDefaultModel for builtin category", () => { test("inheritedModel takes precedence over systemDefaultModel for builtin category", () => {

View File

@ -118,22 +118,24 @@ export function resolveCategoryConfig(
const { userCategories, inheritedModel, systemDefaultModel } = options const { userCategories, inheritedModel, systemDefaultModel } = options
const defaultConfig = DEFAULT_CATEGORIES[categoryName] const defaultConfig = DEFAULT_CATEGORIES[categoryName]
const userConfig = userCategories?.[categoryName] const userConfig = userCategories?.[categoryName]
const catalogEntry = CATEGORY_MODEL_CATALOG[categoryName]
const defaultPromptAppend = CATEGORY_PROMPT_APPENDS[categoryName] ?? "" const defaultPromptAppend = CATEGORY_PROMPT_APPENDS[categoryName] ?? ""
if (!defaultConfig && !userConfig) { if (!defaultConfig && !userConfig) {
return null return null
} }
// Model priority: user override > inherited from parent > system default // Model priority: user override > inherited from parent > catalog default > system default
const model = resolveModel({ const model = resolveModel({
userModel: userConfig?.model, userModel: userConfig?.model,
inheritedModel, inheritedModel,
systemDefault: systemDefaultModel, systemDefault: catalogEntry?.model ?? systemDefaultModel,
}) })
const config: CategoryConfig = { const config: CategoryConfig = {
...defaultConfig, ...defaultConfig,
...userConfig, ...userConfig,
model, model,
variant: userConfig?.variant ?? catalogEntry?.variant,
} }
let promptAppend = defaultPromptAppend let promptAppend = defaultPromptAppend