feat(proxy): add OpenAI Responses API compatibility for Open CoDesign

- Normalize Responses API tool format ({name, parameters} at top level)
  to Chat Completions format ({function: {name, parameters}})
- Handle 'developer' role as system prompt (OpenAI's newer equivalent)
- Add null/non-array guards to convertOpenAIPartsToAnthropicContent and
  extractOpenAITextContent to prevent 'content is not iterable' crashes
- Support input_text, output_text, and reasoning item types in Responses
  API input parsing
- Forward reasoning.effort to Claude adaptive thinking config
- Extend JSON schema sanitization blacklist with draft-2020 keywords
  (patternProperties, , unevaluatedProperties, etc.)
- Add fallback for untyped items with role/content in Responses API input
- Add diagnostic logging for /v1/responses input conversion
This commit is contained in:
Gemini Nexus Bot committed 2026-04-29 04:39:15 -03:00
1 parent 9bf7c46ff6
commit 68474b56dc
3 files changed
+253 -33

No files matched your search

+13
View File
@@ -162,6 +162,11 @@ function cleanJsonSchemaRecursive(value: any) {
// 4. Physically remove "hard" blacklist items that interfere with generation
const hardRemoveFields = [
'$schema',
'$id',
'$comment',
'$anchor',
'$dynamicRef',
'$dynamicAnchor',
'additionalProperties',
'enumCaseInsensitive',
'enumNormalizeWhitespace',
@@ -170,7 +175,15 @@ function cleanJsonSchemaRecursive(value: any) {
'const',
'examples',
// Advanced logic fields common in MCP tools but unsupported by Gemini
'patternProperties',
'propertyNames',
'additionalItems',
'prefixItems',
'contains',
'minContains',
'maxContains',
'unevaluatedProperties',
'unevaluatedItems',
'anyOf',
'oneOf',
'allOf',