diff --git a/src/agents/pi-embedded-runner/run/attempt.test.ts b/src/agents/pi-embedded-runner/run/attempt.test.ts index 39b2abe4da7..d4a651719fa 100644 --- a/src/agents/pi-embedded-runner/run/attempt.test.ts +++ b/src/agents/pi-embedded-runner/run/attempt.test.ts @@ -114,6 +114,34 @@ describe("resolvePromptBuildHookResult", () => { expect(result.prependContext).toBe("from-hook"); }); + it("includes legacy hook agent context fields only when present", async () => { + const hookRunner = createLegacyOnlyHookRunner(); + const messages = [{ role: "user", content: "ctx" }]; + + await resolvePromptBuildHookResult({ + prompt: "hello", + messages, + hookCtx: { + sessionKey: "agent:assistant-beta:main", + agentId: "assistant-beta", + }, + hookRunner, + }); + + expect(hookRunner.runBeforeAgentStart).toHaveBeenCalledWith( + { + prompt: "hello", + messages, + sessionKey: "agent:assistant-beta:main", + agentId: "assistant-beta", + }, + { + sessionKey: "agent:assistant-beta:main", + agentId: "assistant-beta", + }, + ); + }); + it("merges prompt-build and legacy context fields in deterministic order", async () => { const hookRunner = { hasHooks: vi.fn(() => true), diff --git a/src/agents/pi-embedded-runner/run/attempt.ts b/src/agents/pi-embedded-runner/run/attempt.ts index 080f49efea1..474841c10fb 100644 --- a/src/agents/pi-embedded-runner/run/attempt.ts +++ b/src/agents/pi-embedded-runner/run/attempt.ts @@ -1439,8 +1439,8 @@ export async function resolvePromptBuildHookResult(params: { { prompt: params.prompt, messages: params.messages, - sessionKey: params.hookCtx.sessionKey, - agentId: params.hookCtx.agentId, + ...(params.hookCtx.sessionKey ? { sessionKey: params.hookCtx.sessionKey } : {}), + ...(params.hookCtx.agentId ? { agentId: params.hookCtx.agentId } : {}), }, params.hookCtx, )