diff --git a/src/auto-reply/reply/agent-runner.heartbeat-typing.test.ts b/src/auto-reply/reply/agent-runner.heartbeat-typing.test.ts index b689a3549..5af29f6b4 100644 --- a/src/auto-reply/reply/agent-runner.heartbeat-typing.test.ts +++ b/src/auto-reply/reply/agent-runner.heartbeat-typing.test.ts @@ -47,9 +47,18 @@ vi.mock("./queue.js", async () => { import { runReplyAgent } from "./agent-runner.js"; type EmbeddedPiAgentParams = { - onPartialReply?: (payload: { text?: string; mediaUrls?: string[] }) => Promise | void; - onBlockReply?: (payload: { text?: string; mediaUrls?: string[] }) => Promise | void; - onToolResult?: (payload: { text?: string; mediaUrls?: string[] }) => Promise | void; + onPartialReply?: (payload: { + text?: string; + mediaUrls?: string[]; + }) => Promise | void; + onBlockReply?: (payload: { + text?: string; + mediaUrls?: string[]; + }) => Promise | void; + onToolResult?: (payload: { + text?: string; + mediaUrls?: string[]; + }) => Promise | void; }; function createMinimalRun(params?: { @@ -277,7 +286,13 @@ describe("runReplyAgent typing (heartbeat)", () => { await run(); expect(typing.startTypingOnText).toHaveBeenCalledWith("chunk"); - expect(onBlockReply).toHaveBeenCalledWith({ text: "chunk", mediaUrls: [] }); + expect(onBlockReply).toHaveBeenCalled(); + const [blockPayload, blockOpts] = onBlockReply.mock.calls[0] ?? []; + expect(blockPayload).toMatchObject({ text: "chunk", audioAsVoice: false }); + expect(blockOpts).toMatchObject({ + abortSignal: expect.any(AbortSignal), + timeoutMs: expect.any(Number), + }); }); it("signals typing on tool results", async () => { diff --git a/src/auto-reply/reply/directive-handling.ts b/src/auto-reply/reply/directive-handling.ts index c10040c94..9c7c48d8f 100644 --- a/src/auto-reply/reply/directive-handling.ts +++ b/src/auto-reply/reply/directive-handling.ts @@ -629,14 +629,14 @@ export async function applyInlineDirectivesFastLane(params: { provider: string; model: string; initialModelLabel: string; - formatModelSwitchEvent: (label: string, alias?: string) => string; - agentCfg?: NonNullable["defaults"]; - modelState: { - resolveDefaultThinkingLevel: () => Promise; - allowedModelKeys: Set; - allowedModelCatalog: Awaited< - ReturnType< - typeof import("../../agents/model-catalog.js").loadModelCatalog + formatModelSwitchEvent: (label: string, alias?: string) => string; + agentCfg?: NonNullable["defaults"]; + modelState: { + resolveDefaultThinkingLevel: () => Promise; + allowedModelKeys: Set; + allowedModelCatalog: Awaited< + ReturnType< + typeof import("../../agents/model-catalog.js").loadModelCatalog > >; resetModelOverride: boolean;