From cfe0f9f7f60a8efd1fc35e89e67e985e2ee4930a Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Thu, 21 May 2026 15:39:57 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A1=20fix:=20Respect=20Custom=20Endpoi?= =?UTF-8?q?nt=20Stream=20Usage=20Opt-In=20(#13237)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__tests__/run-summarization.test.ts | 33 +++++++++++++++++++ packages/api/src/agents/run.ts | 8 ++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/packages/api/src/agents/__tests__/run-summarization.test.ts b/packages/api/src/agents/__tests__/run-summarization.test.ts index 7d22511c21..ba31a0cdac 100644 --- a/packages/api/src/agents/__tests__/run-summarization.test.ts +++ b/packages/api/src/agents/__tests__/run-summarization.test.ts @@ -205,6 +205,39 @@ beforeEach(() => { jest.clearAllMocks(); }); +// --------------------------------------------------------------------------- +// Suite: custom endpoint stream usage defaults +// --------------------------------------------------------------------------- +describe('custom endpoint stream usage defaults', () => { + it('disables streamUsage by default for OpenAI-compatible custom endpoints', async () => { + const agents = await callAndCapture({ + agents: [makeAgent({ endpoint: 'LiteLLM' })], + }); + const clientOptions = agents[0].clientOptions as Record; + + expect(clientOptions.streamUsage).toBe(false); + expect(clientOptions.usage).toBe(true); + }); + + it('respects explicit streamUsage from endpoint-resolved model parameters', async () => { + const agents = await callAndCapture({ + agents: [ + makeAgent({ + endpoint: 'LiteLLM', + model_parameters: { + model: 'gpt-4o', + streamUsage: true, + }, + }), + ], + }); + const clientOptions = agents[0].clientOptions as Record; + + expect(clientOptions.streamUsage).toBe(true); + expect(clientOptions.usage).toBe(true); + }); +}); + // --------------------------------------------------------------------------- // Suite 1: reserveRatio // --------------------------------------------------------------------------- diff --git a/packages/api/src/agents/run.ts b/packages/api/src/agents/run.ts index b0cc3105b6..e01f123e6a 100644 --- a/packages/api/src/agents/run.ts +++ b/packages/api/src/agents/run.ts @@ -804,6 +804,10 @@ export async function createRun({ ); const modelParameters = normalizeAgentModelParameters(agent.model_parameters); + const hasExplicitStreamUsage = Object.prototype.hasOwnProperty.call( + modelParameters ?? {}, + 'streamUsage', + ); const llmConfig = Object.assign( { provider, @@ -847,7 +851,9 @@ export async function createRun({ customProviders.has(agent.provider) || (agent.provider === Providers.OPENAI && agent.endpoint !== agent.provider) ) { - llmConfig.streamUsage = false; + if (!hasExplicitStreamUsage) { + llmConfig.streamUsage = false; + } llmConfig.usage = true; }