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 <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim 2026-02-03 12:11:49 +09:00 committed by GitHub
parent e36dde6e64
commit 7ebafe2267
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 9 deletions

View File

@ -176,10 +176,12 @@ describe("Plan agent demote behavior", () => {
await handler(config)
// then
const agents = config.agent as Record<string, { mode?: string; name?: string }>
const agents = config.agent as Record<string, { mode?: string; name?: string; prompt?: string }>
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 () => {

View File

@ -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<string, unknown>
) 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<string, unknown>
);
const prometheusOverride =
pluginConfig.agents?.["prometheus"] as
| (Record<string, unknown> & {
@ -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;