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 {
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: {