diff --git a/open-sse/translator/formats.js b/open-sse/translator/formats.js index 6828868..ebfed28 100644 --- a/open-sse/translator/formats.js +++ b/open-sse/translator/formats.js @@ -21,6 +21,9 @@ export function detectFormatByEndpoint(pathname, body) { // /v1/responses is always openai-responses if (pathname.includes("/v1/responses")) return FORMATS.OPENAI_RESPONSES; + // /v1/messages is always Claude + if (pathname.includes("/v1/messages")) return FORMATS.CLAUDE; + // /v1/chat/completions + input[] → treat as openai (Cursor CLI sends Responses body via chat endpoint) if (pathname.includes("/v1/chat/completions") && Array.isArray(body?.input)) { return FORMATS.OPENAI; diff --git a/open-sse/translator/helpers/openaiHelper.js b/open-sse/translator/helpers/openaiHelper.js index 90879b9..1872393 100644 --- a/open-sse/translator/helpers/openaiHelper.js +++ b/open-sse/translator/helpers/openaiHelper.js @@ -87,7 +87,7 @@ export function filterToOpenAIFormat(body) { type: "function", function: { name: tool.name, - description: tool.description || "", + description: String(tool.description || ""), parameters: tool.input_schema || { type: "object", properties: {} } } }; @@ -99,7 +99,7 @@ export function filterToOpenAIFormat(body) { type: "function", function: { name: fn.name, - description: fn.description || "", + description: String(fn.description || ""), parameters: fn.parameters || { type: "object", properties: {} } } })); diff --git a/open-sse/translator/request/claude-to-openai.js b/open-sse/translator/request/claude-to-openai.js index d954593..0bb284e 100644 --- a/open-sse/translator/request/claude-to-openai.js +++ b/open-sse/translator/request/claude-to-openai.js @@ -59,7 +59,7 @@ export function claudeToOpenAIRequest(model, body, stream) { type: "function", function: { name: tool.name, - description: tool.description, + description: String(tool.description || ""), parameters: tool.input_schema || { type: "object", properties: {} } } })); diff --git a/open-sse/translator/request/openai-responses.js b/open-sse/translator/request/openai-responses.js index 3468ac8..4501a33 100644 --- a/open-sse/translator/request/openai-responses.js +++ b/open-sse/translator/request/openai-responses.js @@ -138,7 +138,7 @@ export function openaiResponsesToOpenAIRequest(model, body, stream, credentials) type: "function", function: { name, - description: tool.description, + description: String(tool.description || ""), parameters: tool.parameters, strict: tool.strict } @@ -259,7 +259,7 @@ export function openaiToOpenAIResponsesRequest(model, body, stream, credentials) return { type: "function", name: tool.function.name, - description: tool.function.description, + description: String(tool.function.description || ""), parameters: tool.function.parameters, strict: tool.function.strict };