

























@@ -666,6 +666,14 @@ describe("before_tool_call requireApproval handling", () => {
666666];
667667}
668668669+function requireGatewayCall(index: number): unknown[] {
670+const call = mockCallGateway.mock.calls[index] as unknown[] | undefined;
671+if (!call) {
672+throw new Error(`missing gateway call ${index + 1}`);
673+}
674+return call;
675+}
676+669677function expectRecordFields(record: Record<string, unknown>, fields: Record<string, unknown>) {
670678for (const [key, value] of Object.entries(fields)) {
671679expect(record[key]).toEqual(value);
@@ -1009,15 +1017,15 @@ describe("before_tool_call requireApproval handling", () => {
1009101710101018expect(result.blocked).toBe(false);
10111019expect(mockCallGateway).toHaveBeenCalledTimes(2);
1012-const requestCall = mockCallGateway.mock.calls.at(0);
1013-expect(requestCall?.[0]).toBe("plugin.approval.request");
1014-requireRecord(requestCall?.[1], "approval request gateway client");
1015-expect(requireRecord(requestCall?.[2], "approval request params").twoPhase).toBe(true);
1016-expect(requestCall?.[3]).toEqual({ expectFinal: false });
1017-const waitCall = mockCallGateway.mock.calls.at(1);
1018-expect(waitCall?.[0]).toBe("plugin.approval.waitDecision");
1019-requireRecord(waitCall?.[1], "approval wait gateway client");
1020-expect(waitCall?.[2]).toEqual({ id: "server-id-1" });
1020+const requestCall = requireGatewayCall(0);
1021+expect(requestCall[0]).toBe("plugin.approval.request");
1022+requireRecord(requestCall[1], "approval request gateway client");
1023+expect(requireRecord(requestCall[2], "approval request params").twoPhase).toBe(true);
1024+expect(requestCall[3]).toEqual({ expectFinal: false });
1025+const waitCall = requireGatewayCall(1);
1026+expect(waitCall[0]).toBe("plugin.approval.waitDecision");
1027+requireRecord(waitCall[1], "approval wait gateway client");
1028+expect(waitCall[2]).toEqual({ id: "server-id-1" });
10211029});
1022103010231031it("blocks on deny decision", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。