Fix OpenAI tool_call id length for OpenRouter
This commit is contained in:
committed by
Peter Steinberger
parent
1c7ac2a6ab
commit
04f1e767b2
@@ -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: {
|
||||||
|
|||||||
Reference in New Issue
Block a user