diff --git a/src/gateway/server-methods/tools-effective.test.ts b/src/gateway/server-methods/tools-effective.test.ts index 86361f9319a..a9c28347f69 100644 --- a/src/gateway/server-methods/tools-effective.test.ts +++ b/src/gateway/server-methods/tools-effective.test.ts @@ -60,6 +60,15 @@ const runtimeMocks = vi.hoisted(() => ({ vi.mock("./tools-effective.runtime.js", () => runtimeMocks); type RespondCall = [boolean, unknown?, { code: number; message: string }?]; +type ToolsEffectivePayload = { + agentId?: string; + profile?: string; + groups?: Array<{ + id?: string; + source?: string; + tools?: Array<{ id?: string; source?: string }>; + }>; +}; function createInvokeParams(params: Record) { const respond = vi.fn(); @@ -77,6 +86,13 @@ function createInvokeParams(params: Record) { }; } +function resolveEffectiveToolInventoryArg(callIndex = 0): Record | undefined { + const calls = runtimeMocks.resolveEffectiveToolInventory.mock.calls as unknown as Array< + [Record] + >; + return calls[callIndex]?.[0]; +} + describe("tools.effective handler", () => { beforeEach(() => { vi.clearAllMocks(); @@ -146,32 +162,25 @@ describe("tools.effective handler", () => { await invoke(); const call = respond.mock.calls[0] as RespondCall | undefined; expect(call?.[0]).toBe(true); - expect(call?.[1]).toMatchObject({ - agentId: "main", - profile: "coding", - groups: [ - { - id: "core", - source: "core", - tools: [{ id: "exec", source: "core" }], - }, - ], - }); - expect(runtimeMocks.resolveEffectiveToolInventory).toHaveBeenCalledWith( - expect.objectContaining({ - senderIsOwner: false, - currentChannelId: "channel-1", - currentThreadTs: "thread-2", - accountId: "acct-1", - groupId: "group-4", - groupChannel: "#ops", - groupSpace: "workspace-5", - replyToMode: "first", - messageProvider: "telegram", - modelProvider: "openai", - modelId: "gpt-4.1", - }), - ); + const payload = call?.[1] as ToolsEffectivePayload | undefined; + expect(payload?.agentId).toBe("main"); + expect(payload?.profile).toBe("coding"); + expect(payload?.groups?.[0]?.id).toBe("core"); + expect(payload?.groups?.[0]?.source).toBe("core"); + expect(payload?.groups?.[0]?.tools?.[0]?.id).toBe("exec"); + expect(payload?.groups?.[0]?.tools?.[0]?.source).toBe("core"); + const inventoryParams = resolveEffectiveToolInventoryArg(); + expect(inventoryParams?.senderIsOwner).toBe(false); + expect(inventoryParams?.currentChannelId).toBe("channel-1"); + expect(inventoryParams?.currentThreadTs).toBe("thread-2"); + expect(inventoryParams?.accountId).toBe("acct-1"); + expect(inventoryParams?.groupId).toBe("group-4"); + expect(inventoryParams?.groupChannel).toBe("#ops"); + expect(inventoryParams?.groupSpace).toBe("workspace-5"); + expect(inventoryParams?.replyToMode).toBe("first"); + expect(inventoryParams?.messageProvider).toBe("telegram"); + expect(inventoryParams?.modelProvider).toBe("openai"); + expect(inventoryParams?.modelId).toBe("gpt-4.1"); }); it("serves repeated requests from the fresh inventory cache", async () => { @@ -306,11 +315,7 @@ describe("tools.effective handler", () => { const { respond, invoke } = createInvokeParams({ sessionKey: "main:abc" }); await invoke(); - expect(runtimeMocks.resolveEffectiveToolInventory).toHaveBeenCalledWith( - expect.objectContaining({ - currentThreadTs: "42", - }), - ); + expect(resolveEffectiveToolInventoryArg()?.currentThreadTs).toBe("42"); expect((respond.mock.calls[0] as RespondCall | undefined)?.[0]).toBe(true); }); @@ -326,9 +331,7 @@ describe("tools.effective handler", () => { req: { type: "req", id: "req-1", method: "tools.effective" }, isWebchatConnect: () => false, }); - expect(runtimeMocks.resolveEffectiveToolInventory).toHaveBeenCalledWith( - expect.objectContaining({ senderIsOwner: true }), - ); + expect(resolveEffectiveToolInventoryArg()?.senderIsOwner).toBe(true); }); it("rejects agent ids that do not match the session agent", async () => {