mirror of
https://github.com/openai/codex.git
synced 2026-05-23 20:44:50 +00:00
## Why Model catalog responses can now advertise a nullable `default_service_tier` for each model. Codex needs to preserve three distinct states all the way from config/app-server inputs to inference: - no explicit service tier, so the client may apply the current model catalog default when FastMode is enabled - explicit `default`, meaning the user intentionally wants standard routing - explicit catalog tier ids such as `priority`, `flex`, or future tiers Keeping those states distinct prevents the UI from showing one tier while core sends another, especially after model switches or app-server `thread/start` / `turn/start` updates. ## What Changed - Plumbed `default_service_tier` through model catalog protocol types, app-server model responses, generated schemas, model cache fixtures, and provider/model-manager conversions. - Added the request-only `default` service tier sentinel and normalized legacy config spelling so `fast` in `config.toml` still materializes as the runtime/request id `priority`. - Moved catalog default resolution to the TUI/client side, including recomputing the effective service tier when model/FastMode-dependent surfaces change. - Updated app-server thread lifecycle config construction so `serviceTier: null` preserves explicit standard-routing intent by mapping to `default` instead of internal `None`. - Kept core responsible for validating explicit tiers against the current model and stripping `default` before `/v1/responses`, without applying catalog defaults itself. ## Validation - `CARGO_INCREMENTAL=0 cargo build -p codex-cli` - `CARGO_INCREMENTAL=0 cargo test -p codex-app-server model_list` - `cargo test -p codex-tui service_tier` - `cargo test -p codex-protocol service_tier_for_request` - `cargo test -p codex-core get_service_tier` - `RUST_MIN_STACK=8388608 CARGO_INCREMENTAL=0 cargo test -p codex-core service_tier`
235 lines
5.0 KiB
JSON
Generated
235 lines
5.0 KiB
JSON
Generated
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"InputModality": {
|
|
"description": "Canonical user-input modality tags advertised by a model.",
|
|
"oneOf": [
|
|
{
|
|
"description": "Plain text turns and tool payloads.",
|
|
"enum": [
|
|
"text"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Image attachments included in user turns.",
|
|
"enum": [
|
|
"image"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"Model": {
|
|
"properties": {
|
|
"additionalSpeedTiers": {
|
|
"default": [],
|
|
"description": "Deprecated: use `serviceTiers` instead.",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"availabilityNux": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/ModelAvailabilityNux"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"defaultReasoningEffort": {
|
|
"$ref": "#/definitions/ReasoningEffort"
|
|
},
|
|
"defaultServiceTier": {
|
|
"default": null,
|
|
"description": "Catalog default service tier id for this model, when one is configured.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"displayName": {
|
|
"type": "string"
|
|
},
|
|
"hidden": {
|
|
"type": "boolean"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"inputModalities": {
|
|
"default": [
|
|
"text",
|
|
"image"
|
|
],
|
|
"items": {
|
|
"$ref": "#/definitions/InputModality"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"isDefault": {
|
|
"type": "boolean"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"serviceTiers": {
|
|
"default": [],
|
|
"items": {
|
|
"$ref": "#/definitions/ModelServiceTier"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"supportedReasoningEfforts": {
|
|
"items": {
|
|
"$ref": "#/definitions/ReasoningEffortOption"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"supportsPersonality": {
|
|
"default": false,
|
|
"type": "boolean"
|
|
},
|
|
"upgrade": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"upgradeInfo": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/ModelUpgradeInfo"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"defaultReasoningEffort",
|
|
"description",
|
|
"displayName",
|
|
"hidden",
|
|
"id",
|
|
"isDefault",
|
|
"model",
|
|
"supportedReasoningEfforts"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ModelAvailabilityNux": {
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"message"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ModelServiceTier": {
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"id",
|
|
"name"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ModelUpgradeInfo": {
|
|
"properties": {
|
|
"migrationMarkdown": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"modelLink": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"upgradeCopy": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"model"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ReasoningEffort": {
|
|
"description": "See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning",
|
|
"enum": [
|
|
"none",
|
|
"minimal",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"xhigh"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ReasoningEffortOption": {
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"reasoningEffort": {
|
|
"$ref": "#/definitions/ReasoningEffort"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"reasoningEffort"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"data": {
|
|
"items": {
|
|
"$ref": "#/definitions/Model"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"nextCursor": {
|
|
"description": "Opaque cursor to pass to the next call to continue after the last item. If None, there are no more items to return.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"data"
|
|
],
|
|
"title": "ModelListResponse",
|
|
"type": "object"
|
|
} |