From 04f1e767b2644667f5831d60737d0c025521057a Mon Sep 17 00:00:00 2001 From: Josh Phillips <1442552485+j1philli@users.noreply.github.com> Date: Tue, 13 Jan 2026 22:55:57 +0000 Subject: [PATCH] Fix OpenAI tool_call id length for OpenRouter --- src/agents/tool-call-id.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/agents/tool-call-id.ts b/src/agents/tool-call-id.ts index a3bfab131..c4aec7e5b 100644 --- a/src/agents/tool-call-id.ts +++ b/src/agents/tool-call-id.ts @@ -24,21 +24,25 @@ function shortHash(text: string): string { } function makeUniqueToolId(params: { id: string; used: Set }): string { - const base = sanitizeToolCallId(params.id); + const MAX_LEN = 40; + + const base = sanitizeToolCallId(params.id).slice(0, MAX_LEN); if (!params.used.has(base)) return base; const hash = shortHash(params.id); - const maxBaseLen = 64 - 1 - hash.length; + const maxBaseLen = MAX_LEN - 1 - hash.length; const clippedBase = base.length > maxBaseLen ? base.slice(0, maxBaseLen) : base; const candidate = `${clippedBase}_${hash}`; if (!params.used.has(candidate)) return candidate; for (let i = 2; i < 1000; i += 1) { - const next = `${candidate}_${i}`; + const suffix = `_${i}`; + const next = `${candidate.slice(0, MAX_LEN - suffix.length)}${suffix}`; if (!params.used.has(next)) return next; } - return `${candidate}_${Date.now()}`; + const ts = `_${Date.now()}`; + return `${candidate.slice(0, MAX_LEN - ts.length)}${ts}`; } function rewriteAssistantToolCallIds(params: {