From 7ebafe226739f94be46e420ef5c4734ac48de47d Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Tue, 3 Feb 2026 12:11:49 +0900 Subject: [PATCH] refactor(config-handler): separate plan prompt into dedicated configuration (#1413) Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- src/plugin-handlers/config-handler.test.ts | 4 +++- src/plugin-handlers/config-handler.ts | 18 ++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/plugin-handlers/config-handler.test.ts b/src/plugin-handlers/config-handler.test.ts index db855263..7c095101 100644 --- a/src/plugin-handlers/config-handler.test.ts +++ b/src/plugin-handlers/config-handler.test.ts @@ -176,10 +176,12 @@ describe("Plan agent demote behavior", () => { await handler(config) // then - const agents = config.agent as Record + const agents = config.agent as Record expect(agents.plan).toBeDefined() expect(agents.plan.mode).toBe("subagent") expect(agents.plan.name).toBe("plan") + expect(agents.plan.prompt).toBe("original plan prompt") + expect(agents.plan.prompt).not.toBe(agents.prometheus?.prompt) }) test("prometheus should have mode 'all' to be callable via delegate_task", async () => { diff --git a/src/plugin-handlers/config-handler.ts b/src/plugin-handlers/config-handler.ts index 19c6dd02..15dc7732 100644 --- a/src/plugin-handlers/config-handler.ts +++ b/src/plugin-handlers/config-handler.ts @@ -210,6 +210,12 @@ export function createConfigHandler(deps: ConfigHandlerDeps) { }; const configAgent = config.agent as AgentConfig | undefined; + const { name: _planName, mode: _planMode, ...planConfigWithoutName } = + configAgent?.plan ?? {}; + const planPrompt = (migrateAgentConfig( + planConfigWithoutName as Record + ) as { prompt?: string }).prompt; + if (isSisyphusEnabled && builtinAgents.sisyphus) { (config as { default_agent?: string }).default_agent = "sisyphus"; @@ -241,11 +247,6 @@ export function createConfigHandler(deps: ConfigHandlerDeps) { } if (plannerEnabled) { - const { name: _planName, mode: _planMode, ...planConfigWithoutName } = - configAgent?.plan ?? {}; - const migratedPlanConfig = migrateAgentConfig( - planConfigWithoutName as Record - ); const prometheusOverride = pluginConfig.agents?.["prometheus"] as | (Record & { @@ -362,10 +363,11 @@ export function createConfigHandler(deps: ConfigHandlerDeps) { : {}; const planDemoteConfig = replacePlan && agentConfig["prometheus"] - ? { + ? { ...agentConfig["prometheus"], - name: "plan", - mode: "subagent" as const + name: "plan", + mode: "subagent" as const, + ...(planPrompt ? { prompt: planPrompt } : {}), } : undefined;