diff --git a/src/agents/pi-embedded-runner-extraparams.test.ts b/src/agents/pi-embedded-runner-extraparams.test.ts index 7a29f30f9eb..f452d3edc12 100644 --- a/src/agents/pi-embedded-runner-extraparams.test.ts +++ b/src/agents/pi-embedded-runner-extraparams.test.ts @@ -412,6 +412,49 @@ describe("applyExtraParamsToAgent", () => { expect(payloads[0]).not.toHaveProperty("reasoning_effort"); }); + it("removes unsupported function.strict from xAI tool payloads", () => { + const payloads: Record[] = []; + const baseStreamFn: StreamFn = (_model, _context, options) => { + const payload: Record = { + tools: [ + { + type: "function", + function: { + name: "write", + parameters: { type: "object", properties: {} }, + strict: false, + }, + }, + ], + }; + options?.onPayload?.(payload, _model); + payloads.push(payload); + return {} as ReturnType; + }; + const agent = { streamFn: baseStreamFn }; + + applyExtraParamsToAgent(agent, undefined, "xai", "grok-4.1-fast"); + + const model = { + api: "openai-completions", + provider: "xai", + id: "grok-4.1-fast", + } as Model<"openai-completions">; + const context: Context = { messages: [] }; + void agent.streamFn?.(model, context, {}); + + expect(payloads).toHaveLength(1); + expect(payloads[0]?.tools).toEqual([ + { + type: "function", + function: { + name: "write", + parameters: { type: "object", properties: {} }, + }, + }, + ]); + }); + it("injects parallel_tool_calls for openai-completions payloads when configured", () => { const payload = runParallelToolCallsPayloadMutationCase({ applyProvider: "nvidia-nim",