fix(background-agent): preserve parent model in notifyParentSession
Fixes model switching bug where sisyphus_task with category would change the main session's model after completion. - Add parentModel to session.prompt body in notifyParentSession - Add test verifying model is included when parentModel is defined
This commit is contained in:
parent
22619d137e
commit
66f8946ff1
@ -675,7 +675,32 @@ describe("LaunchInput.skillContent", () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe("BackgroundManager.notifyParentSession - agent context preservation", () => {
|
||||
describe("BackgroundManager.notifyParentSession - model/agent context preservation", () => {
|
||||
test("should include model field in session.prompt when parentModel is defined", async () => {
|
||||
// #given
|
||||
const task: BackgroundTask = {
|
||||
id: "task-with-model",
|
||||
sessionID: "session-child",
|
||||
parentSessionID: "session-parent",
|
||||
parentMessageID: "msg-parent",
|
||||
description: "task with model context",
|
||||
prompt: "test",
|
||||
agent: "explore",
|
||||
status: "completed",
|
||||
startedAt: new Date(),
|
||||
completedAt: new Date(),
|
||||
parentAgent: "Sisyphus",
|
||||
parentModel: { providerID: "anthropic", modelID: "claude-opus-4-5" },
|
||||
}
|
||||
|
||||
// #when
|
||||
const promptBody = buildNotificationPromptBody(task)
|
||||
|
||||
// #then - model MUST be included when parentModel is defined
|
||||
expect(promptBody.model).toEqual({ providerID: "anthropic", modelID: "claude-opus-4-5" })
|
||||
expect(promptBody.agent).toBe("Sisyphus")
|
||||
})
|
||||
|
||||
test("should not pass agent field when parentAgent is undefined", async () => {
|
||||
// #given
|
||||
const task: BackgroundTask = {
|
||||
|
||||
@ -639,12 +639,16 @@ Use \`background_output(task_id="${task.id}")\` to retrieve this result when rea
|
||||
}
|
||||
|
||||
// Inject notification via session.prompt with noReply
|
||||
// Preserve parent session's model/agent context to prevent model switching
|
||||
try {
|
||||
await this.client.session.prompt({
|
||||
path: { id: task.parentSessionID },
|
||||
body: {
|
||||
noReply: !allComplete, // Silent unless all complete
|
||||
agent: task.parentAgent,
|
||||
noReply: !allComplete,
|
||||
...(task.parentAgent !== undefined ? { agent: task.parentAgent } : {}),
|
||||
...(task.parentModel?.providerID && task.parentModel?.modelID
|
||||
? { model: { providerID: task.parentModel.providerID, modelID: task.parentModel.modelID } }
|
||||
: {}),
|
||||
parts: [{ type: "text", text: notification }],
|
||||
},
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user