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:
1 parent
9bf7c46ff6
commit
68474b56dc
3 files changed
+253
-33
No files matched your search
@@ -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',
|
||||
|
||||
Reference in new issue
Block a user