Fix OpenAI tool_call id length for OpenRouter

This commit is contained in:
Josh Phillips
2026-01-13 22:55:57 +00:00
committed by Peter Steinberger
parent 1c7ac2a6ab
commit 04f1e767b2

View File

@@ -24,21 +24,25 @@ function shortHash(text: string): string {
} }
function makeUniqueToolId(params: { id: string; used: Set<string> }): string { function makeUniqueToolId(params: { id: string; used: Set<string> }): 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; if (!params.used.has(base)) return base;
const hash = shortHash(params.id); 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 clippedBase = base.length > maxBaseLen ? base.slice(0, maxBaseLen) : base;
const candidate = `${clippedBase}_${hash}`; const candidate = `${clippedBase}_${hash}`;
if (!params.used.has(candidate)) return candidate; if (!params.used.has(candidate)) return candidate;
for (let i = 2; i < 1000; i += 1) { 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; 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: { function rewriteAssistantToolCallIds(params: {