mirror of
https://github.com/openai/codex.git
synced 2026-10-23 18:08:45 +00:00
## Why Provider errors with code `model_not_found` should end the turn immediately and preserve the provider's message instead of triggering retries. ## What changed - Recognize `model_not_found` in HTTP 400, 403, and 404 responses and in streamed `error` and `response.failed` events. - Preserve the provider message and any available HTTP status, and expose `modelNotFound` through the app-server protocol and generated schemas and SDK types. ## Testing Add coverage for HTTP classification, statusless stream errors, and terminal failures without retries across HTTP, SSE, and WebSocket responses. Verify that `thread/read` preserves the error reported by the live notification. GitOrigin-RevId: 88f824ac03c8c9669915b1e40c67b76c08326fbe
271 lines
7.1 KiB
JSON
Generated
271 lines
7.1 KiB
JSON
Generated
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"CodexErrorInfo": {
|
|
"anyOf": [
|
|
{
|
|
"enum": [
|
|
"contextWindowExceeded",
|
|
"sessionBudgetExceeded",
|
|
"usageLimitExceeded",
|
|
"rateLimitExceeded",
|
|
"flexUnavailable",
|
|
"serverOverloaded",
|
|
"modelNotFound",
|
|
"cyberPolicy",
|
|
"misalignmentPolicyViolation",
|
|
"tooManyDenials",
|
|
"internalServerError",
|
|
"unauthorized",
|
|
"badRequest",
|
|
"threadRollbackFailed",
|
|
"sandboxError",
|
|
"other"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"httpConnectionFailed": {
|
|
"properties": {
|
|
"httpStatusCode": {
|
|
"format": "uint16",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"httpConnectionFailed"
|
|
],
|
|
"title": "HttpConnectionFailedCodexErrorInfo",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Failed to connect to the response SSE stream.",
|
|
"properties": {
|
|
"responseStreamConnectionFailed": {
|
|
"properties": {
|
|
"httpStatusCode": {
|
|
"format": "uint16",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"responseStreamConnectionFailed"
|
|
],
|
|
"title": "ResponseStreamConnectionFailedCodexErrorInfo",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "The response SSE stream disconnected in the middle of a turn before completion.",
|
|
"properties": {
|
|
"responseStreamDisconnected": {
|
|
"properties": {
|
|
"httpStatusCode": {
|
|
"format": "uint16",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"responseStreamDisconnected"
|
|
],
|
|
"title": "ResponseStreamDisconnectedCodexErrorInfo",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Reached the retry limit for responses.",
|
|
"properties": {
|
|
"responseTooManyFailedAttempts": {
|
|
"properties": {
|
|
"httpStatusCode": {
|
|
"format": "uint16",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"responseTooManyFailedAttempts"
|
|
],
|
|
"title": "ResponseTooManyFailedAttemptsCodexErrorInfo",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "Returned when `turn/start` or `turn/steer` is submitted while the current active turn cannot accept same-turn steering, for example `/review` or manual `/compact`.",
|
|
"properties": {
|
|
"activeTurnNotSteerable": {
|
|
"properties": {
|
|
"turnKind": {
|
|
"$ref": "#/definitions/NonSteerableTurnKind"
|
|
}
|
|
},
|
|
"required": [
|
|
"turnKind"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"activeTurnNotSteerable"
|
|
],
|
|
"title": "ActiveTurnNotSteerableCodexErrorInfo",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"type": [
|
|
"string",
|
|
"object"
|
|
]
|
|
}
|
|
],
|
|
"description": "This translation layer make sure that we expose codex error code in camel case.\n\nWhen an upstream HTTP status is available (for example, from the Responses API or a provider), it is forwarded in `httpStatusCode` on the relevant `codexErrorInfo` variant."
|
|
},
|
|
"MisalignmentErrorDetails": {
|
|
"properties": {
|
|
"detailedExplanation": {
|
|
"description": "A substantive localized explanation is required before offering continuation.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"errorType": {
|
|
"description": "Open-ended classification; clients must accept categories added by Responses.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"reviewTarget": {
|
|
"description": "Opaque server-issued block target. Presence alone does not enable target-based continuation.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"steer": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/MisalignmentSteer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Instruction to submit as the next turn's user input if continuation is confirmed."
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"MisalignmentSteer": {
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"message"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"NonSteerableTurnKind": {
|
|
"enum": [
|
|
"review",
|
|
"compact"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"TurnError": {
|
|
"properties": {
|
|
"additionalDetails": {
|
|
"default": null,
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"codexErrorInfo": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/CodexErrorInfo"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"misalignment": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/MisalignmentErrorDetails"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Optional public explanation and continuation instruction for a misalignment block."
|
|
}
|
|
},
|
|
"required": [
|
|
"message"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"error": {
|
|
"$ref": "#/definitions/TurnError"
|
|
},
|
|
"threadId": {
|
|
"type": "string"
|
|
},
|
|
"turnId": {
|
|
"type": "string"
|
|
},
|
|
"willRetry": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"error",
|
|
"threadId",
|
|
"turnId",
|
|
"willRetry"
|
|
],
|
|
"title": "ErrorNotification",
|
|
"type": "object"
|
|
} |