mirror of
https://github.com/openai/codex.git
synced 2026-04-25 07:05:38 +00:00
Similar to what @sayan-oai did in openai/codex#8956 for `config.schema.json`, this PR updates the repo so that it includes the output of `codex app-server generate-json-schema` and `codex app-server generate-ts` and adds a test to verify it is in sync with the current code. Motivation: - This makes any schema changes introduced by a PR transparent during code review. - In particular, this should help us catch PRs that would introduce a non-backwards-compatible change to the app schema (eventually, this should also be enforced by tooling). - Once https://github.com/openai/codex/pull/10231 is in to formalize the notion of "experimental" fields, we can work on ensuring the non-experimental bits are backwards-compatible. `codex-rs/app-server-protocol/tests/schema_fixtures.rs` was added as the test and `just write-app-server-schema` can be use to generate the vendored schema files. Incidentally, when I run: ``` rg _ codex-rs/app-server-protocol/schema/typescript/v2 ``` I see a number of `snake_case` names that should be `camelCase`.
915 lines
21 KiB
JSON
915 lines
21 KiB
JSON
{
|
||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||
"definitions": {
|
||
"AskForApproval": {
|
||
"description": "Determines the conditions under which the user is consulted to approve running the command proposed by Codex.",
|
||
"oneOf": [
|
||
{
|
||
"description": "Under this policy, only \"known safe\" commands—as determined by `is_safe_command()`—that **only read files** are auto‑approved. Everything else will ask the user to approve.",
|
||
"enum": [
|
||
"untrusted"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "*All* commands are auto‑approved, but they are expected to run inside a sandbox where network access is disabled and writes are confined to a specific set of paths. If the command fails, it will be escalated to the user to approve execution without a sandbox.",
|
||
"enum": [
|
||
"on-failure"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "The model decides when to ask the user for approval.",
|
||
"enum": [
|
||
"on-request"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Never ask the user to approve commands. Failures are immediately returned to the model, and never escalated to the user for approval.",
|
||
"enum": [
|
||
"never"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"ContentItem": {
|
||
"oneOf": [
|
||
{
|
||
"properties": {
|
||
"text": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"input_text"
|
||
],
|
||
"title": "InputTextContentItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"text",
|
||
"type"
|
||
],
|
||
"title": "InputTextContentItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"image_url": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"input_image"
|
||
],
|
||
"title": "InputImageContentItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"image_url",
|
||
"type"
|
||
],
|
||
"title": "InputImageContentItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"text": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"output_text"
|
||
],
|
||
"title": "OutputTextContentItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"text",
|
||
"type"
|
||
],
|
||
"title": "OutputTextContentItem",
|
||
"type": "object"
|
||
}
|
||
]
|
||
},
|
||
"FunctionCallOutputContentItem": {
|
||
"description": "Responses API compatible content items that can be returned by a tool call. This is a subset of ContentItem with the types we support as function call outputs.",
|
||
"oneOf": [
|
||
{
|
||
"properties": {
|
||
"text": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"input_text"
|
||
],
|
||
"title": "InputTextFunctionCallOutputContentItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"text",
|
||
"type"
|
||
],
|
||
"title": "InputTextFunctionCallOutputContentItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"image_url": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"input_image"
|
||
],
|
||
"title": "InputImageFunctionCallOutputContentItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"image_url",
|
||
"type"
|
||
],
|
||
"title": "InputImageFunctionCallOutputContentItem",
|
||
"type": "object"
|
||
}
|
||
]
|
||
},
|
||
"FunctionCallOutputPayload": {
|
||
"description": "The payload we send back to OpenAI when reporting a tool call result.\n\n`content` preserves the historical plain-string payload so downstream integrations (tests, logging, etc.) can keep treating tool output as `String`. When an MCP server returns richer data we additionally populate `content_items` with the structured form that the Responses/Chat Completions APIs understand.",
|
||
"properties": {
|
||
"content": {
|
||
"type": "string"
|
||
},
|
||
"content_items": {
|
||
"items": {
|
||
"$ref": "#/definitions/FunctionCallOutputContentItem"
|
||
},
|
||
"type": [
|
||
"array",
|
||
"null"
|
||
]
|
||
},
|
||
"success": {
|
||
"type": [
|
||
"boolean",
|
||
"null"
|
||
]
|
||
}
|
||
},
|
||
"required": [
|
||
"content"
|
||
],
|
||
"type": "object"
|
||
},
|
||
"GhostCommit": {
|
||
"description": "Details of a ghost commit created from a repository state.",
|
||
"properties": {
|
||
"id": {
|
||
"type": "string"
|
||
},
|
||
"parent": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"preexisting_untracked_dirs": {
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"preexisting_untracked_files": {
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
}
|
||
},
|
||
"required": [
|
||
"id",
|
||
"preexisting_untracked_dirs",
|
||
"preexisting_untracked_files"
|
||
],
|
||
"type": "object"
|
||
},
|
||
"LocalShellAction": {
|
||
"oneOf": [
|
||
{
|
||
"properties": {
|
||
"command": {
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"env": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"type": [
|
||
"object",
|
||
"null"
|
||
]
|
||
},
|
||
"timeout_ms": {
|
||
"format": "uint64",
|
||
"minimum": 0.0,
|
||
"type": [
|
||
"integer",
|
||
"null"
|
||
]
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"exec"
|
||
],
|
||
"title": "ExecLocalShellActionType",
|
||
"type": "string"
|
||
},
|
||
"user": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"working_directory": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
}
|
||
},
|
||
"required": [
|
||
"command",
|
||
"type"
|
||
],
|
||
"title": "ExecLocalShellAction",
|
||
"type": "object"
|
||
}
|
||
]
|
||
},
|
||
"LocalShellStatus": {
|
||
"enum": [
|
||
"completed",
|
||
"in_progress",
|
||
"incomplete"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"NewConversationParams": {
|
||
"properties": {
|
||
"approvalPolicy": {
|
||
"anyOf": [
|
||
{
|
||
"$ref": "#/definitions/AskForApproval"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
]
|
||
},
|
||
"baseInstructions": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"compactPrompt": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"config": {
|
||
"additionalProperties": true,
|
||
"type": [
|
||
"object",
|
||
"null"
|
||
]
|
||
},
|
||
"cwd": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"developerInstructions": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"includeApplyPatchTool": {
|
||
"type": [
|
||
"boolean",
|
||
"null"
|
||
]
|
||
},
|
||
"model": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"modelProvider": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"profile": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"sandbox": {
|
||
"anyOf": [
|
||
{
|
||
"$ref": "#/definitions/SandboxMode"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"ReasoningItemContent": {
|
||
"oneOf": [
|
||
{
|
||
"properties": {
|
||
"text": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"reasoning_text"
|
||
],
|
||
"title": "ReasoningTextReasoningItemContentType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"text",
|
||
"type"
|
||
],
|
||
"title": "ReasoningTextReasoningItemContent",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"text": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"text"
|
||
],
|
||
"title": "TextReasoningItemContentType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"text",
|
||
"type"
|
||
],
|
||
"title": "TextReasoningItemContent",
|
||
"type": "object"
|
||
}
|
||
]
|
||
},
|
||
"ReasoningItemReasoningSummary": {
|
||
"oneOf": [
|
||
{
|
||
"properties": {
|
||
"text": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"summary_text"
|
||
],
|
||
"title": "SummaryTextReasoningItemReasoningSummaryType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"text",
|
||
"type"
|
||
],
|
||
"title": "SummaryTextReasoningItemReasoningSummary",
|
||
"type": "object"
|
||
}
|
||
]
|
||
},
|
||
"ResponseItem": {
|
||
"oneOf": [
|
||
{
|
||
"properties": {
|
||
"content": {
|
||
"items": {
|
||
"$ref": "#/definitions/ContentItem"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"end_turn": {
|
||
"type": [
|
||
"boolean",
|
||
"null"
|
||
]
|
||
},
|
||
"id": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
],
|
||
"writeOnly": true
|
||
},
|
||
"role": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"message"
|
||
],
|
||
"title": "MessageResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"content",
|
||
"role",
|
||
"type"
|
||
],
|
||
"title": "MessageResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"content": {
|
||
"default": null,
|
||
"items": {
|
||
"$ref": "#/definitions/ReasoningItemContent"
|
||
},
|
||
"type": [
|
||
"array",
|
||
"null"
|
||
]
|
||
},
|
||
"encrypted_content": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"id": {
|
||
"type": "string",
|
||
"writeOnly": true
|
||
},
|
||
"summary": {
|
||
"items": {
|
||
"$ref": "#/definitions/ReasoningItemReasoningSummary"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"reasoning"
|
||
],
|
||
"title": "ReasoningResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"id",
|
||
"summary",
|
||
"type"
|
||
],
|
||
"title": "ReasoningResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"action": {
|
||
"$ref": "#/definitions/LocalShellAction"
|
||
},
|
||
"call_id": {
|
||
"description": "Set when using the Responses API.",
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"id": {
|
||
"description": "Set when using the chat completions API.",
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
],
|
||
"writeOnly": true
|
||
},
|
||
"status": {
|
||
"$ref": "#/definitions/LocalShellStatus"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"local_shell_call"
|
||
],
|
||
"title": "LocalShellCallResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"action",
|
||
"status",
|
||
"type"
|
||
],
|
||
"title": "LocalShellCallResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"arguments": {
|
||
"type": "string"
|
||
},
|
||
"call_id": {
|
||
"type": "string"
|
||
},
|
||
"id": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
],
|
||
"writeOnly": true
|
||
},
|
||
"name": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"function_call"
|
||
],
|
||
"title": "FunctionCallResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"arguments",
|
||
"call_id",
|
||
"name",
|
||
"type"
|
||
],
|
||
"title": "FunctionCallResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"call_id": {
|
||
"type": "string"
|
||
},
|
||
"output": {
|
||
"$ref": "#/definitions/FunctionCallOutputPayload"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"function_call_output"
|
||
],
|
||
"title": "FunctionCallOutputResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"call_id",
|
||
"output",
|
||
"type"
|
||
],
|
||
"title": "FunctionCallOutputResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"call_id": {
|
||
"type": "string"
|
||
},
|
||
"id": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
],
|
||
"writeOnly": true
|
||
},
|
||
"input": {
|
||
"type": "string"
|
||
},
|
||
"name": {
|
||
"type": "string"
|
||
},
|
||
"status": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"custom_tool_call"
|
||
],
|
||
"title": "CustomToolCallResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"call_id",
|
||
"input",
|
||
"name",
|
||
"type"
|
||
],
|
||
"title": "CustomToolCallResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"call_id": {
|
||
"type": "string"
|
||
},
|
||
"output": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"custom_tool_call_output"
|
||
],
|
||
"title": "CustomToolCallOutputResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"call_id",
|
||
"output",
|
||
"type"
|
||
],
|
||
"title": "CustomToolCallOutputResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"action": {
|
||
"anyOf": [
|
||
{
|
||
"$ref": "#/definitions/WebSearchAction"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
]
|
||
},
|
||
"id": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
],
|
||
"writeOnly": true
|
||
},
|
||
"status": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"web_search_call"
|
||
],
|
||
"title": "WebSearchCallResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"type"
|
||
],
|
||
"title": "WebSearchCallResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"ghost_commit": {
|
||
"$ref": "#/definitions/GhostCommit"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"ghost_snapshot"
|
||
],
|
||
"title": "GhostSnapshotResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"ghost_commit",
|
||
"type"
|
||
],
|
||
"title": "GhostSnapshotResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"encrypted_content": {
|
||
"type": "string"
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"compaction"
|
||
],
|
||
"title": "CompactionResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"encrypted_content",
|
||
"type"
|
||
],
|
||
"title": "CompactionResponseItem",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"type": {
|
||
"enum": [
|
||
"other"
|
||
],
|
||
"title": "OtherResponseItemType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"type"
|
||
],
|
||
"title": "OtherResponseItem",
|
||
"type": "object"
|
||
}
|
||
]
|
||
},
|
||
"SandboxMode": {
|
||
"enum": [
|
||
"read-only",
|
||
"workspace-write",
|
||
"danger-full-access"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"ThreadId": {
|
||
"type": "string"
|
||
},
|
||
"WebSearchAction": {
|
||
"oneOf": [
|
||
{
|
||
"properties": {
|
||
"queries": {
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": [
|
||
"array",
|
||
"null"
|
||
]
|
||
},
|
||
"query": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"search"
|
||
],
|
||
"title": "SearchWebSearchActionType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"type"
|
||
],
|
||
"title": "SearchWebSearchAction",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"type": {
|
||
"enum": [
|
||
"open_page"
|
||
],
|
||
"title": "OpenPageWebSearchActionType",
|
||
"type": "string"
|
||
},
|
||
"url": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
}
|
||
},
|
||
"required": [
|
||
"type"
|
||
],
|
||
"title": "OpenPageWebSearchAction",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"pattern": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
},
|
||
"type": {
|
||
"enum": [
|
||
"find_in_page"
|
||
],
|
||
"title": "FindInPageWebSearchActionType",
|
||
"type": "string"
|
||
},
|
||
"url": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
}
|
||
},
|
||
"required": [
|
||
"type"
|
||
],
|
||
"title": "FindInPageWebSearchAction",
|
||
"type": "object"
|
||
},
|
||
{
|
||
"properties": {
|
||
"type": {
|
||
"enum": [
|
||
"other"
|
||
],
|
||
"title": "OtherWebSearchActionType",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"type"
|
||
],
|
||
"title": "OtherWebSearchAction",
|
||
"type": "object"
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"properties": {
|
||
"conversationId": {
|
||
"anyOf": [
|
||
{
|
||
"$ref": "#/definitions/ThreadId"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
]
|
||
},
|
||
"history": {
|
||
"items": {
|
||
"$ref": "#/definitions/ResponseItem"
|
||
},
|
||
"type": [
|
||
"array",
|
||
"null"
|
||
]
|
||
},
|
||
"overrides": {
|
||
"anyOf": [
|
||
{
|
||
"$ref": "#/definitions/NewConversationParams"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
]
|
||
},
|
||
"path": {
|
||
"type": [
|
||
"string",
|
||
"null"
|
||
]
|
||
}
|
||
},
|
||
"title": "ResumeConversationParams",
|
||
"type": "object"
|
||
} |