


















@@ -9,10 +9,10 @@ const hookCtx = {
99async function expectLlmHookCall(params: {
1010hookName: "model_call_started" | "model_call_ended" | "llm_input" | "llm_output";
1111event: Record<string, unknown>;
12-expectedEvent: Record<string, unknown>;
1312}) {
1413const handler = vi.fn();
1514const { runner } = createHookRunnerWithRegistry([{ hookName: params.hookName, handler }]);
15+let expectedEvent: Record<string, unknown> = params.event;
16161717if (params.hookName === "model_call_started") {
1818await runner.runModelCallStarted(
@@ -32,6 +32,10 @@ async function expectLlmHookCall(params: {
3232} as Parameters<typeof runner.runLlmInput>[0],
3333hookCtx,
3434);
35+expectedEvent = {
36+ ...params.event,
37+historyMessages: [...((params.event.historyMessages as unknown[] | undefined) ?? [])],
38+};
3539} else {
3640await runner.runLlmOutput(
3741{
@@ -40,12 +44,13 @@ async function expectLlmHookCall(params: {
4044} as Parameters<typeof runner.runLlmOutput>[0],
4145hookCtx,
4246);
47+expectedEvent = {
48+ ...params.event,
49+assistantTexts: [...((params.event.assistantTexts as string[] | undefined) ?? [])],
50+};
4351}
445245-expect(handler).toHaveBeenCalledWith(
46-expect.objectContaining(params.expectedEvent),
47-expect.objectContaining({ sessionId: "session-1" }),
48-);
53+expect(handler).toHaveBeenCalledWith(expectedEvent, hookCtx);
4954}
50555156describe("llm hook runner methods", () => {
@@ -63,7 +68,6 @@ describe("llm hook runner methods", () => {
6368api: "openai-responses",
6469transport: "http",
6570},
66-expectedEvent: { runId: "run-1", callId: "call-1", provider: "openai" },
6771},
6872{
6973name: "runModelCallEnded invokes registered model_call_ended hooks",
@@ -80,7 +84,6 @@ describe("llm hook runner methods", () => {
8084errorCategory: "TimeoutError",
8185upstreamRequestIdHash: "sha256:abcdef123456",
8286},
83-expectedEvent: { runId: "run-1", callId: "call-1", outcome: "error" },
8487},
8588{
8689name: "runLlmInput invokes registered llm_input hooks",
@@ -96,7 +99,6 @@ describe("llm hook runner methods", () => {
9699historyMessages: [],
97100imagesCount: 0,
98101},
99-expectedEvent: { runId: "run-1", prompt: "hello" },
100102},
101103{
102104name: "runLlmOutput invokes registered llm_output hooks",
@@ -115,10 +117,9 @@ describe("llm hook runner methods", () => {
115117total: 30,
116118},
117119},
118-expectedEvent: { runId: "run-1", assistantTexts: ["hi"] },
119120},
120-] as const)("$name", async ({ hookName, expectedEvent, event }) => {
121-await expectLlmHookCall({ hookName, event, expectedEvent });
121+] as const)("$name", async ({ hookName, event }) => {
122+await expectLlmHookCall({ hookName, event });
122123});
123124124125it("hasHooks returns true for registered llm hooks", () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。