diff --git a/internal/telegram/bot.go b/internal/telegram/bot.go index 85147f8..6022c73 100644 --- a/internal/telegram/bot.go +++ b/internal/telegram/bot.go @@ -1657,6 +1657,19 @@ func (b *Bot) handleCodexNotification(ctx context.Context, event codexapp.Event) } return b.store.SyncThreadTitleByCodexID(ctx, params.ThreadID, title) } + case "thread/settings/updated": + var params struct { + ThreadID string `json:"threadId"` + ThreadSettings struct { + CWD string `json:"cwd"` + } `json:"threadSettings"` + } + if err := json.Unmarshal(event.Params, ¶ms); err != nil { + return err + } + if params.ThreadID != "" { + return b.syncThreadWorkspaceFromCWD(ctx, params.ThreadID, params.ThreadSettings.CWD) + } case "serverRequest/resolved": var params struct { ThreadID string `json:"threadId"` @@ -1667,6 +1680,34 @@ func (b *Bot) handleCodexNotification(ctx context.Context, event codexapp.Event) return nil } +func (b *Bot) syncThreadWorkspaceFromCWD(ctx context.Context, codexThreadID, cwd string) error { + thread, err := b.store.GetThreadByCodexID(ctx, codexThreadID) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + return nil + } + return err + } + workspace, ok, err := b.workspaceForCodexCWD(ctx, cwd) + if err != nil || !ok { + return err + } + if workspace.ID == thread.WorkspaceID { + return nil + } + if err := b.store.SyncThreadWorkspace(ctx, thread.TelegramUserID, thread.ID, workspace.ID); err != nil { + return err + } + session, err := b.store.GetSession(ctx, thread.TelegramUserID) + if err != nil { + return err + } + if session.ActiveThreadID == thread.ID { + return b.store.SetSessionWorkspace(ctx, thread.TelegramUserID, workspace.ID) + } + return nil +} + func (b *Bot) handleCodexServerRequest(ctx context.Context, event codexapp.Event) error { if event.ID == nil { return nil diff --git a/schemas/ClientRequest.json b/schemas/ClientRequest.json index 41b06e9..3b8bba7 100644 --- a/schemas/ClientRequest.json +++ b/schemas/ClientRequest.json @@ -172,6 +172,78 @@ }, "title": "Thread/name/setRequest" }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "thread/goal/set" + ], + "title": "Thread/goal/setRequestMethod" + }, + "params": { + "$ref": "#/definitions/ThreadGoalSetParams" + } + }, + "title": "Thread/goal/setRequest" + }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "thread/goal/get" + ], + "title": "Thread/goal/getRequestMethod" + }, + "params": { + "$ref": "#/definitions/ThreadGoalGetParams" + } + }, + "title": "Thread/goal/getRequest" + }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "thread/goal/clear" + ], + "title": "Thread/goal/clearRequestMethod" + }, + "params": { + "$ref": "#/definitions/ThreadGoalClearParams" + } + }, + "title": "Thread/goal/clearRequest" + }, { "type": "object", "required": [ @@ -1229,6 +1301,30 @@ }, "title": "ExperimentalFeature/listRequest" }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "permissionProfile/list" + ], + "title": "PermissionProfile/listRequestMethod" + }, + "params": { + "$ref": "#/definitions/PermissionProfileListParams" + } + }, + "title": "PermissionProfile/listRequest" + }, { "type": "object", "required": [ @@ -1858,26 +1954,6 @@ "description": "A path that is guaranteed to be absolute and normalized (though it is not guaranteed to be canonicalized or exist on the filesystem).\n\nIMPORTANT: When deserializing an `AbsolutePathBuf`, a base path must be set using [AbsolutePathBufGuard::new]. If no base path is set, the deserialization will fail unless the path being deserialized is already absolute.", "type": "string" }, - "ActivePermissionProfile": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "extends": { - "description": "Parent profile identifier once permissions profiles support inheritance. This is currently always `null`.", - "default": null, - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Identifier from `default_permissions` or the implicit built-in default, such as `:workspace` or a user-defined `[permissions.]` profile.", - "type": "string" - } - } - }, "AddCreditsNudgeCreditType": { "type": "string", "enum": [ @@ -2885,6 +2961,26 @@ } }, "title": "InputImageFunctionCallOutputContentItem" + }, + { + "type": "object", + "required": [ + "encrypted_content", + "type" + ], + "properties": { + "encrypted_content": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "encrypted_content" + ], + "title": "EncryptedContentFunctionCallOutputContentItemType" + } + }, + "title": "EncryptedContentFunctionCallOutputContentItem" } ] }, @@ -3150,11 +3246,11 @@ "outputSchema": { "description": "Optional JSON Schema used to constrain the final assistant message for this turn." }, - "summary": { - "description": "Override the reasoning summary for this turn and subsequent turns.", + "sandboxPolicy": { + "description": "Override the sandbox policy for this turn and subsequent turns.", "anyOf": [ { - "$ref": "#/definitions/ReasoningSummary" + "$ref": "#/definitions/SandboxPolicy" }, { "type": "null" @@ -3172,11 +3268,11 @@ } ] }, - "sandboxPolicy": { - "description": "Override the sandbox policy for this turn and subsequent turns.", + "summary": { + "description": "Override the reasoning summary for this turn and subsequent turns.", "anyOf": [ { - "$ref": "#/definitions/SandboxPolicy" + "$ref": "#/definitions/ReasoningSummary" }, { "type": "null" @@ -3740,6 +3836,34 @@ "enabled" ] }, + "PermissionProfileListParams": { + "type": "object", + "properties": { + "cursor": { + "description": "Opaque pagination cursor returned by a previous call.", + "type": [ + "string", + "null" + ] + }, + "cwd": { + "description": "Optional working directory to resolve project config layers.", + "type": [ + "string", + "null" + ] + }, + "limit": { + "description": "Optional page size; defaults to the full result set.", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + } + } + }, "Personality": { "type": "string", "enum": [ @@ -3804,6 +3928,7 @@ "type": "string", "enum": [ "local", + "vertical", "workspace-directory", "shared-with-me" ] @@ -5247,7 +5372,7 @@ } }, "ThreadResumeParams": { - "description": "There are three ways to resume a thread: 1. By thread_id: load the thread from disk by thread_id and resume it. 2. By history: instantiate the thread from memory and resume it. 3. By path: load the thread from disk by path and resume it.\n\nThe precedence is: history > path > thread_id. If using history or path, the thread_id param will be ignored.\n\nPrefer using thread_id whenever possible.", + "description": "There are three ways to resume a thread: 1. By thread_id: load the thread from disk by thread_id and resume it. 2. By history: instantiate the thread from memory and resume it. 3. By path: load the thread from disk by path and resume it.\n\nFor non-running threads, the precedence is: history > non-empty path > thread_id. If using history or a non-empty path for a non-running thread, the thread_id param will be ignored.\n\nIf thread_id identifies a running thread, app-server rejoins that thread and treats a non-empty path as a consistency check against the active rollout path. Empty string path values are treated as absent.\n\nPrefer using thread_id whenever possible.", "type": "object", "required": [ "threadId" @@ -5299,6 +5424,16 @@ "null" ] }, + "personality": { + "anyOf": [ + { + "$ref": "#/definitions/Personality" + }, + { + "type": "null" + } + ] + }, "sandbox": { "anyOf": [ { @@ -5309,12 +5444,6 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] - }, "model": { "description": "Configuration overrides for the resumed thread, if any.", "type": [ @@ -5328,14 +5457,10 @@ "null" ] }, - "personality": { - "anyOf": [ - { - "$ref": "#/definitions/Personality" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "threadId": { @@ -5354,50 +5479,26 @@ } } }, - "ThreadRealtimeStartTransport": { - "description": "EXPERIMENTAL - transport used by thread realtime.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "websocket" - ], - "title": "WebsocketThreadRealtimeStartTransportType" - } - }, - "title": "WebsocketThreadRealtimeStartTransport" + "ThreadRollbackParams": { + "type": "object", + "required": [ + "numTurns", + "threadId" + ], + "properties": { + "numTurns": { + "description": "The number of turns to drop from the end of the thread. Must be >= 1.\n\nThis only modifies the thread's history and does not revert local file changes that have been made by the agent. Clients are responsible for reverting these changes.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 }, - { - "type": "object", - "required": [ - "sdp", - "type" - ], - "properties": { - "sdp": { - "description": "SDP offer generated by a WebRTC RTCPeerConnection after configuring audio and the realtime events data channel.", - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "webrtc" - ], - "title": "WebrtcThreadRealtimeStartTransportType" - } - }, - "title": "WebrtcThreadRealtimeStartTransport" + "threadId": { + "type": "string" } - ] + } }, "ThreadForkParams": { - "description": "There are two ways to fork a thread: 1. By thread_id: load the thread from disk by thread_id and fork it into a new thread. 2. By path: load the thread from disk by path and fork it into a new thread.\n\nIf using path, the thread_id param will be ignored.\n\nPrefer using thread_id whenever possible.", + "description": "There are two ways to fork a thread: 1. By thread_id: load the thread from disk by thread_id and fork it into a new thread. 2. By path: load the thread from disk by path and fork it into a new thread.\n\nIf using a non-empty path, the thread_id param will be ignored. Empty string path values are treated as absent.\n\nPrefer using thread_id whenever possible.", "type": "object", "required": [ "threadId" @@ -5452,11 +5553,10 @@ "ephemeral": { "type": "boolean" }, - "threadSource": { - "description": "Optional client-supplied analytics source classification for this forked thread.", + "sandbox": { "anyOf": [ { - "$ref": "#/definitions/ThreadSource" + "$ref": "#/definitions/SandboxMode" }, { "type": "null" @@ -5476,10 +5576,66 @@ "null" ] }, - "sandbox": { + "serviceTier": { + "type": [ + "string", + "null" + ] + }, + "threadId": { + "type": "string" + }, + "threadSource": { + "description": "Optional client-supplied analytics source classification for this forked thread.", "anyOf": [ { - "$ref": "#/definitions/SandboxMode" + "$ref": "#/definitions/ThreadSource" + }, + { + "type": "null" + } + ] + } + } + }, + "ThreadGoalClearParams": { + "type": "object", + "required": [ + "threadId" + ], + "properties": { + "threadId": { + "type": "string" + } + } + }, + "ThreadGoalGetParams": { + "type": "object", + "required": [ + "threadId" + ], + "properties": { + "threadId": { + "type": "string" + } + } + }, + "ThreadGoalSetParams": { + "type": "object", + "required": [ + "threadId" + ], + "properties": { + "objective": { + "type": [ + "string", + "null" + ] + }, + "status": { + "anyOf": [ + { + "$ref": "#/definitions/ThreadGoalStatus" }, { "type": "null" @@ -5489,158 +5645,15 @@ "threadId": { "type": "string" }, - "serviceTier": { + "tokenBudget": { "type": [ - "string", - "null" - ] - } - } - }, - "ThreadStartSource": { - "type": "string", - "enum": [ - "startup", - "clear" - ] - }, - "ThreadStartParams": { - "type": "object", - "properties": { - "approvalPolicy": { - "anyOf": [ - { - "$ref": "#/definitions/AskForApproval" - }, - { - "type": "null" - } - ] - }, - "approvalsReviewer": { - "description": "Override where approval requests are routed for review on this thread and subsequent turns.", - "anyOf": [ - { - "$ref": "#/definitions/ApprovalsReviewer" - }, - { - "type": "null" - } - ] - }, - "baseInstructions": { - "type": [ - "string", - "null" - ] - }, - "config": { - "type": [ - "object", + "integer", "null" ], - "additionalProperties": true - }, - "cwd": { - "type": [ - "string", - "null" - ] - }, - "developerInstructions": { - "type": [ - "string", - "null" - ] - }, - "sandbox": { - "anyOf": [ - { - "$ref": "#/definitions/SandboxMode" - }, - { - "type": "null" - } - ] - }, - "sessionStartSource": { - "anyOf": [ - { - "$ref": "#/definitions/ThreadStartSource" - }, - { - "type": "null" - } - ] - }, - "ephemeral": { - "type": [ - "boolean", - "null" - ] - }, - "threadSource": { - "description": "Optional client-supplied analytics source classification for this thread.", - "anyOf": [ - { - "$ref": "#/definitions/ThreadSource" - }, - { - "type": "null" - } - ] - }, - "personality": { - "anyOf": [ - { - "$ref": "#/definitions/Personality" - }, - { - "type": "null" - } - ] - }, - "model": { - "type": [ - "string", - "null" - ] - }, - "modelProvider": { - "type": [ - "string", - "null" - ] - }, - "serviceName": { - "type": [ - "string", - "null" - ] - }, - "serviceTier": { - "type": [ - "string", - "null" - ] + "format": "int64" } } }, - "ThreadSourceKind": { - "type": "string", - "enum": [ - "cli", - "vscode", - "exec", - "appServer", - "subAgent", - "subAgentReview", - "subAgentCompact", - "subAgentThreadSpawn", - "subAgentOther", - "unknown" - ] - }, "ThreadGoalStatus": { "type": "string", "enum": [ @@ -5652,12 +5665,11 @@ "complete" ] }, - "ThreadSource": { + "ThreadStartSource": { "type": "string", "enum": [ - "user", - "subagent", - "memory_consolidation" + "startup", + "clear" ] }, "ThreadInjectItemsParams": { @@ -5810,12 +5822,127 @@ "disabled" ] }, - "ThreadSortKey": { - "type": "string", - "enum": [ - "created_at", - "updated_at" - ] + "ThreadStartParams": { + "type": "object", + "properties": { + "approvalPolicy": { + "anyOf": [ + { + "$ref": "#/definitions/AskForApproval" + }, + { + "type": "null" + } + ] + }, + "approvalsReviewer": { + "description": "Override where approval requests are routed for review on this thread and subsequent turns.", + "anyOf": [ + { + "$ref": "#/definitions/ApprovalsReviewer" + }, + { + "type": "null" + } + ] + }, + "baseInstructions": { + "type": [ + "string", + "null" + ] + }, + "config": { + "type": [ + "object", + "null" + ], + "additionalProperties": true + }, + "cwd": { + "type": [ + "string", + "null" + ] + }, + "developerInstructions": { + "type": [ + "string", + "null" + ] + }, + "sandbox": { + "anyOf": [ + { + "$ref": "#/definitions/SandboxMode" + }, + { + "type": "null" + } + ] + }, + "threadSource": { + "description": "Optional client-supplied analytics source classification for this thread.", + "anyOf": [ + { + "$ref": "#/definitions/ThreadSource" + }, + { + "type": "null" + } + ] + }, + "ephemeral": { + "type": [ + "boolean", + "null" + ] + }, + "serviceTier": { + "type": [ + "string", + "null" + ] + }, + "personality": { + "anyOf": [ + { + "$ref": "#/definitions/Personality" + }, + { + "type": "null" + } + ] + }, + "model": { + "type": [ + "string", + "null" + ] + }, + "modelProvider": { + "type": [ + "string", + "null" + ] + }, + "sessionStartSource": { + "anyOf": [ + { + "$ref": "#/definitions/ThreadStartSource" + }, + { + "type": "null" + } + ] + }, + "serviceName": { + "type": [ + "string", + "null" + ] + } + } }, "ThreadMetadataGitInfoUpdateParams": { "type": "object", @@ -5881,36 +6008,28 @@ } } }, - "ThreadShellCommandParams": { - "type": "object", - "required": [ - "command", - "threadId" - ], - "properties": { - "command": { - "description": "Shell command string evaluated by the thread's configured shell. Unlike `command/exec`, this intentionally preserves shell syntax such as pipes, redirects, and quoting. This runs unsandboxed with full access rather than inheriting the thread sandbox policy.", - "type": "string" - }, - "threadId": { - "type": "string" - } - } + "ThreadSourceKind": { + "type": "string", + "enum": [ + "cli", + "vscode", + "exec", + "appServer", + "subAgent", + "subAgentReview", + "subAgentCompact", + "subAgentThreadSpawn", + "subAgentOther", + "unknown" + ] }, - "ThreadSetNameParams": { - "type": "object", - "required": [ - "name", - "threadId" - ], - "properties": { - "name": { - "type": "string" - }, - "threadId": { - "type": "string" - } - } + "ThreadSource": { + "type": "string", + "enum": [ + "user", + "subagent", + "memory_consolidation" + ] }, "ThreadRealtimeAudioChunk": { "description": "EXPERIMENTAL - thread realtime audio chunk.", @@ -5950,18 +6069,80 @@ } } }, - "ThreadRollbackParams": { + "ThreadSortKey": { + "type": "string", + "enum": [ + "created_at", + "updated_at" + ] + }, + "ThreadShellCommandParams": { "type": "object", "required": [ - "numTurns", + "command", "threadId" ], "properties": { - "numTurns": { - "description": "The number of turns to drop from the end of the thread. Must be >= 1.\n\nThis only modifies the thread's history and does not revert local file changes that have been made by the agent. Clients are responsible for reverting these changes.", - "type": "integer", - "format": "uint32", - "minimum": 0.0 + "command": { + "description": "Shell command string evaluated by the thread's configured shell. Unlike `command/exec`, this intentionally preserves shell syntax such as pipes, redirects, and quoting. This runs unsandboxed with full access rather than inheriting the thread sandbox policy.", + "type": "string" + }, + "threadId": { + "type": "string" + } + } + }, + "ThreadRealtimeStartTransport": { + "description": "EXPERIMENTAL - transport used by thread realtime.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "websocket" + ], + "title": "WebsocketThreadRealtimeStartTransportType" + } + }, + "title": "WebsocketThreadRealtimeStartTransport" + }, + { + "type": "object", + "required": [ + "sdp", + "type" + ], + "properties": { + "sdp": { + "description": "SDP offer generated by a WebRTC RTCPeerConnection after configuring audio and the realtime events data channel.", + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "webrtc" + ], + "title": "WebrtcThreadRealtimeStartTransportType" + } + }, + "title": "WebrtcThreadRealtimeStartTransport" + } + ] + }, + "ThreadSetNameParams": { + "type": "object", + "required": [ + "name", + "threadId" + ], + "properties": { + "name": { + "type": "string" }, "threadId": { "type": "string" diff --git a/schemas/CommandExecutionRequestApprovalParams.json b/schemas/CommandExecutionRequestApprovalParams.json index 2044038..884a9d7 100644 --- a/schemas/CommandExecutionRequestApprovalParams.json +++ b/schemas/CommandExecutionRequestApprovalParams.json @@ -375,7 +375,7 @@ "enum": [ "read", "write", - "none" + "deny" ] }, "FileSystemPath": { diff --git a/schemas/PermissionsRequestApprovalParams.json b/schemas/PermissionsRequestApprovalParams.json index f0c2208..6e6c016 100644 --- a/schemas/PermissionsRequestApprovalParams.json +++ b/schemas/PermissionsRequestApprovalParams.json @@ -101,7 +101,7 @@ "enum": [ "read", "write", - "none" + "deny" ] }, "FileSystemPath": { diff --git a/schemas/PermissionsRequestApprovalResponse.json b/schemas/PermissionsRequestApprovalResponse.json index 5b527c8..557ad0f 100644 --- a/schemas/PermissionsRequestApprovalResponse.json +++ b/schemas/PermissionsRequestApprovalResponse.json @@ -88,7 +88,7 @@ "enum": [ "read", "write", - "none" + "deny" ] }, "FileSystemPath": { diff --git a/schemas/ServerNotification.json b/schemas/ServerNotification.json index 49b7f14..ee011d7 100644 --- a/schemas/ServerNotification.json +++ b/schemas/ServerNotification.json @@ -204,6 +204,26 @@ }, "title": "Thread/goal/clearedNotification" }, + { + "type": "object", + "required": [ + "method", + "params" + ], + "properties": { + "method": { + "type": "string", + "enum": [ + "thread/settings/updated" + ], + "title": "Thread/settings/updatedNotificationMethod" + }, + "params": { + "$ref": "#/definitions/ThreadSettingsUpdatedNotification" + } + }, + "title": "Thread/settings/updatedNotification" + }, { "type": "object", "required": [ @@ -1336,6 +1356,26 @@ } } }, + "ActivePermissionProfile": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "extends": { + "description": "Parent profile identifier from the selected permissions profile's `extends` setting, when present.", + "default": null, + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Identifier from `default_permissions` or the implicit built-in default, such as `:workspace` or a user-defined `[permissions.]` profile.", + "type": "string" + } + } + }, "AdditionalFileSystemPermissions": { "type": "object", "properties": { @@ -1687,6 +1727,65 @@ } } }, + "ApprovalsReviewer": { + "description": "Configures who approval requests are routed to for review. Examples include sandbox escapes, blocked network access, MCP approval prompts, and ARC escalations. Defaults to `user`. `auto_review` uses a carefully prompted subagent to gather relevant context and apply a risk-based decision framework before approving or denying the request. The legacy value `guardian_subagent` is accepted for compatibility.", + "type": "string", + "enum": [ + "user", + "auto_review", + "guardian_subagent" + ] + }, + "AskForApproval": { + "oneOf": [ + { + "type": "string", + "enum": [ + "untrusted", + "on-failure", + "on-request", + "never" + ] + }, + { + "type": "object", + "required": [ + "granular" + ], + "properties": { + "granular": { + "type": "object", + "required": [ + "mcp_elicitations", + "rules", + "sandbox_approval" + ], + "properties": { + "mcp_elicitations": { + "type": "boolean" + }, + "request_permissions": { + "default": false, + "type": "boolean" + }, + "rules": { + "type": "boolean" + }, + "sandbox_approval": { + "type": "boolean" + }, + "skill_approval": { + "default": false, + "type": "boolean" + } + } + } + }, + "additionalProperties": false, + "title": "GranularAskForApproval" + } + ] + }, "AuthMode": { "description": "Authentication mode for OpenAI-backed providers.", "oneOf": [ @@ -1930,6 +2029,22 @@ "failed" ] }, + "CollaborationMode": { + "description": "Collaboration mode for a Codex session.", + "type": "object", + "required": [ + "mode", + "settings" + ], + "properties": { + "mode": { + "$ref": "#/definitions/ModeKind" + }, + "settings": { + "$ref": "#/definitions/Settings" + } + } + }, "CommandAction": { "oneOf": [ { @@ -2358,7 +2473,7 @@ "enum": [ "read", "write", - "none" + "deny" ] }, "FileSystemPath": { @@ -3013,6 +3128,8 @@ "postCompact", "sessionStart", "userPromptSubmit", + "subagentStart", + "subagentStop", "stop" ] }, @@ -3529,6 +3646,14 @@ } ] }, + "ModeKind": { + "description": "Initial collaboration mode to use when the TUI starts.", + "type": "string", + "enum": [ + "plan", + "default" + ] + }, "ModelRerouteReason": { "type": "string", "enum": [ @@ -3590,6 +3715,13 @@ } } }, + "NetworkAccess": { + "type": "string", + "enum": [ + "restricted", + "enabled" + ] + }, "NetworkApprovalProtocol": { "type": "string", "enum": [ @@ -3673,6 +3805,14 @@ } ] }, + "Personality": { + "type": "string", + "enum": [ + "none", + "friendly", + "pragmatic" + ] + }, "PlanDeltaNotification": { "description": "EXPERIMENTAL - proposed plan streaming deltas for plan items. Clients should not assume concatenated deltas match the completed plan item content.", "type": "object", @@ -3926,6 +4066,26 @@ "xhigh" ] }, + "ReasoningSummary": { + "description": "A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries", + "oneOf": [ + { + "type": "string", + "enum": [ + "auto", + "concise", + "detailed" + ] + }, + { + "description": "Option to disable reasoning summaries.", + "type": "string", + "enum": [ + "none" + ] + } + ] + }, "ReasoningSummaryPartAddedNotification": { "type": "object", "required": [ @@ -4078,6 +4238,105 @@ }, "additionalProperties": false }, + "SandboxPolicy": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "dangerFullAccess" + ], + "title": "DangerFullAccessSandboxPolicyType" + } + }, + "title": "DangerFullAccessSandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "networkAccess": { + "default": false, + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "readOnly" + ], + "title": "ReadOnlySandboxPolicyType" + } + }, + "title": "ReadOnlySandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "networkAccess": { + "default": "restricted", + "allOf": [ + { + "$ref": "#/definitions/NetworkAccess" + } + ] + }, + "type": { + "type": "string", + "enum": [ + "externalSandbox" + ], + "title": "ExternalSandboxSandboxPolicyType" + } + }, + "title": "ExternalSandboxSandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "excludeSlashTmp": { + "default": false, + "type": "boolean" + }, + "excludeTmpdirEnvVar": { + "default": false, + "type": "boolean" + }, + "networkAccess": { + "default": false, + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "workspaceWrite" + ], + "title": "WorkspaceWriteSandboxPolicyType" + }, + "writableRoots": { + "default": [], + "type": "array", + "items": { + "$ref": "#/definitions/AbsolutePathBuf" + } + } + }, + "title": "WorkspaceWriteSandboxPolicy" + } + ] + }, "ServerRequestResolvedNotification": { "type": "object", "required": [ @@ -4133,6 +4392,34 @@ } ] }, + "Settings": { + "description": "Settings for a collaboration mode.", + "type": "object", + "required": [ + "model" + ], + "properties": { + "developer_instructions": { + "type": [ + "string", + "null" + ] + }, + "model": { + "type": "string" + }, + "reasoning_effort": { + "anyOf": [ + { + "$ref": "#/definitions/ReasoningEffort" + }, + { + "type": "null" + } + ] + } + } + }, "SkillsChangedNotification": { "description": "Notification emitted when watched local skill files change.\n\nTreat this as an invalidation signal and re-run `skills/list` with the client's current parameters when refreshed skill metadata is needed.", "type": "object" @@ -4875,6 +5162,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { @@ -5419,6 +5712,102 @@ } } }, + "ThreadSettings": { + "type": "object", + "required": [ + "approvalPolicy", + "approvalsReviewer", + "collaborationMode", + "cwd", + "model", + "modelProvider", + "sandboxPolicy" + ], + "properties": { + "activePermissionProfile": { + "anyOf": [ + { + "$ref": "#/definitions/ActivePermissionProfile" + }, + { + "type": "null" + } + ] + }, + "approvalPolicy": { + "$ref": "#/definitions/AskForApproval" + }, + "approvalsReviewer": { + "$ref": "#/definitions/ApprovalsReviewer" + }, + "collaborationMode": { + "$ref": "#/definitions/CollaborationMode" + }, + "cwd": { + "$ref": "#/definitions/AbsolutePathBuf" + }, + "effort": { + "anyOf": [ + { + "$ref": "#/definitions/ReasoningEffort" + }, + { + "type": "null" + } + ] + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "personality": { + "anyOf": [ + { + "$ref": "#/definitions/Personality" + }, + { + "type": "null" + } + ] + }, + "sandboxPolicy": { + "$ref": "#/definitions/SandboxPolicy" + }, + "serviceTier": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "anyOf": [ + { + "$ref": "#/definitions/ReasoningSummary" + }, + { + "type": "null" + } + ] + } + } + }, + "ThreadSettingsUpdatedNotification": { + "type": "object", + "required": [ + "threadId", + "threadSettings" + ], + "properties": { + "threadId": { + "type": "string" + }, + "threadSettings": { + "$ref": "#/definitions/ThreadSettings" + } + } + }, "ThreadSource": { "type": "string", "enum": [ diff --git a/schemas/ServerRequest.json b/schemas/ServerRequest.json index 5655d27..b40fb96 100644 --- a/schemas/ServerRequest.json +++ b/schemas/ServerRequest.json @@ -885,7 +885,7 @@ "enum": [ "read", "write", - "none" + "deny" ] }, "FileSystemPath": { diff --git a/schemas/codex_app_server_protocol.schemas.json b/schemas/codex_app_server_protocol.schemas.json index ebfd9ce..24c6d88 100644 --- a/schemas/codex_app_server_protocol.schemas.json +++ b/schemas/codex_app_server_protocol.schemas.json @@ -533,6 +533,78 @@ }, "title": "Thread/name/setRequest" }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/v2/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "thread/goal/set" + ], + "title": "Thread/goal/setRequestMethod" + }, + "params": { + "$ref": "#/definitions/v2/ThreadGoalSetParams" + } + }, + "title": "Thread/goal/setRequest" + }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/v2/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "thread/goal/get" + ], + "title": "Thread/goal/getRequestMethod" + }, + "params": { + "$ref": "#/definitions/v2/ThreadGoalGetParams" + } + }, + "title": "Thread/goal/getRequest" + }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/v2/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "thread/goal/clear" + ], + "title": "Thread/goal/clearRequestMethod" + }, + "params": { + "$ref": "#/definitions/v2/ThreadGoalClearParams" + } + }, + "title": "Thread/goal/clearRequest" + }, { "type": "object", "required": [ @@ -1590,6 +1662,30 @@ }, "title": "ExperimentalFeature/listRequest" }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/v2/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "permissionProfile/list" + ], + "title": "PermissionProfile/listRequestMethod" + }, + "params": { + "$ref": "#/definitions/v2/PermissionProfileListParams" + } + }, + "title": "PermissionProfile/listRequest" + }, { "type": "object", "required": [ @@ -4135,6 +4231,26 @@ }, "title": "Thread/goal/clearedNotification" }, + { + "type": "object", + "required": [ + "method", + "params" + ], + "properties": { + "method": { + "type": "string", + "enum": [ + "thread/settings/updated" + ], + "title": "Thread/settings/updatedNotificationMethod" + }, + "params": { + "$ref": "#/definitions/v2/ThreadSettingsUpdatedNotification" + } + }, + "title": "Thread/settings/updatedNotification" + }, { "type": "object", "required": [ @@ -5401,10 +5517,11 @@ } ] }, - "sessionStartSource": { + "threadSource": { + "description": "Optional client-supplied analytics source classification for this thread.", "anyOf": [ { - "$ref": "#/definitions/v2/ThreadStartSource" + "$ref": "#/definitions/v2/ThreadSource" }, { "type": "null" @@ -5417,15 +5534,10 @@ "null" ] }, - "threadSource": { - "description": "Optional client-supplied analytics source classification for this thread.", - "anyOf": [ - { - "$ref": "#/definitions/v2/ThreadSource" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "personality": { @@ -5450,13 +5562,17 @@ "null" ] }, - "serviceName": { - "type": [ - "string", - "null" + "sessionStartSource": { + "anyOf": [ + { + "$ref": "#/definitions/v2/ThreadStartSource" + }, + { + "type": "null" + } ] }, - "serviceTier": { + "serviceName": { "type": [ "string", "null" @@ -5603,6 +5719,26 @@ } }, "title": "InputImageFunctionCallOutputContentItem" + }, + { + "type": "object", + "required": [ + "encrypted_content", + "type" + ], + "properties": { + "encrypted_content": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "encrypted_content" + ], + "title": "EncryptedContentFunctionCallOutputContentItemType" + } + }, + "title": "EncryptedContentFunctionCallOutputContentItem" } ] }, @@ -6353,7 +6489,7 @@ "ThreadResumeParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadResumeParams", - "description": "There are three ways to resume a thread: 1. By thread_id: load the thread from disk by thread_id and resume it. 2. By history: instantiate the thread from memory and resume it. 3. By path: load the thread from disk by path and resume it.\n\nThe precedence is: history > path > thread_id. If using history or path, the thread_id param will be ignored.\n\nPrefer using thread_id whenever possible.", + "description": "There are three ways to resume a thread: 1. By thread_id: load the thread from disk by thread_id and resume it. 2. By history: instantiate the thread from memory and resume it. 3. By path: load the thread from disk by path and resume it.\n\nFor non-running threads, the precedence is: history > non-empty path > thread_id. If using history or a non-empty path for a non-running thread, the thread_id param will be ignored.\n\nIf thread_id identifies a running thread, app-server rejoins that thread and treats a non-empty path as a consistency check against the active rollout path. Empty string path values are treated as absent.\n\nPrefer using thread_id whenever possible.", "type": "object", "required": [ "threadId" @@ -6405,6 +6541,16 @@ "null" ] }, + "personality": { + "anyOf": [ + { + "$ref": "#/definitions/v2/Personality" + }, + { + "type": "null" + } + ] + }, "sandbox": { "anyOf": [ { @@ -6415,12 +6561,6 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] - }, "model": { "description": "Configuration overrides for the resumed thread, if any.", "type": [ @@ -6434,14 +6574,10 @@ "null" ] }, - "personality": { - "anyOf": [ - { - "$ref": "#/definitions/v2/Personality" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "threadId": { @@ -6452,7 +6588,7 @@ "ThreadForkParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadForkParams", - "description": "There are two ways to fork a thread: 1. By thread_id: load the thread from disk by thread_id and fork it into a new thread. 2. By path: load the thread from disk by path and fork it into a new thread.\n\nIf using path, the thread_id param will be ignored.\n\nPrefer using thread_id whenever possible.", + "description": "There are two ways to fork a thread: 1. By thread_id: load the thread from disk by thread_id and fork it into a new thread. 2. By path: load the thread from disk by path and fork it into a new thread.\n\nIf using a non-empty path, the thread_id param will be ignored. Empty string path values are treated as absent.\n\nPrefer using thread_id whenever possible.", "type": "object", "required": [ "threadId" @@ -6507,11 +6643,10 @@ "ephemeral": { "type": "boolean" }, - "threadSource": { - "description": "Optional client-supplied analytics source classification for this forked thread.", + "sandbox": { "anyOf": [ { - "$ref": "#/definitions/v2/ThreadSource" + "$ref": "#/definitions/v2/SandboxMode" }, { "type": "null" @@ -6531,23 +6666,24 @@ "null" ] }, - "sandbox": { - "anyOf": [ - { - "$ref": "#/definitions/v2/SandboxMode" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "threadId": { "type": "string" }, - "serviceTier": { - "type": [ - "string", - "null" + "threadSource": { + "description": "Optional client-supplied analytics source classification for this forked thread.", + "anyOf": [ + { + "$ref": "#/definitions/v2/ThreadSource" + }, + { + "type": "null" + } ] } } @@ -6654,65 +6790,63 @@ "complete" ] }, - "WindowsWorldWritableWarningNotification": { + "ThreadGoalSetParams": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "WindowsWorldWritableWarningNotification", - "type": "object", - "required": [ - "extraCount", - "failedScan", - "samplePaths" - ], - "properties": { - "extraCount": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "failedScan": { - "type": "boolean" - }, - "samplePaths": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "ThreadRealtimeClosedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeClosedNotification", - "description": "EXPERIMENTAL - emitted when thread realtime transport closes.", + "title": "ThreadGoalSetParams", "type": "object", "required": [ "threadId" ], "properties": { - "reason": { + "objective": { "type": [ "string", "null" ] }, + "status": { + "anyOf": [ + { + "$ref": "#/definitions/v2/ThreadGoalStatus" + }, + { + "type": "null" + } + ] + }, + "threadId": { + "type": "string" + }, + "tokenBudget": { + "type": [ + "integer", + "null" + ], + "format": "int64" + } + } + }, + "ThreadGoalGetParams": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalGetParams", + "type": "object", + "required": [ + "threadId" + ], + "properties": { "threadId": { "type": "string" } } }, - "ThreadRealtimeErrorNotification": { + "ThreadGoalClearParams": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeErrorNotification", - "description": "EXPERIMENTAL - emitted when thread realtime encounters an error.", + "title": "ThreadGoalClearParams", "type": "object", "required": [ - "message", "threadId" ], "properties": { - "message": { - "type": "string" - }, "threadId": { "type": "string" } @@ -6768,6 +6902,222 @@ } } }, + "CollaborationMode": { + "description": "Collaboration mode for a Codex session.", + "type": "object", + "required": [ + "mode", + "settings" + ], + "properties": { + "mode": { + "$ref": "#/definitions/v2/ModeKind" + }, + "settings": { + "$ref": "#/definitions/v2/Settings" + } + } + }, + "ModeKind": { + "description": "Initial collaboration mode to use when the TUI starts.", + "type": "string", + "enum": [ + "plan", + "default" + ] + }, + "NetworkAccess": { + "type": "string", + "enum": [ + "restricted", + "enabled" + ] + }, + "ReasoningEffort": { + "description": "See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning", + "type": "string", + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + "ReasoningSummary": { + "description": "A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries", + "oneOf": [ + { + "type": "string", + "enum": [ + "auto", + "concise", + "detailed" + ] + }, + { + "description": "Option to disable reasoning summaries.", + "type": "string", + "enum": [ + "none" + ] + } + ] + }, + "SandboxPolicy": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "dangerFullAccess" + ], + "title": "DangerFullAccessSandboxPolicyType" + } + }, + "title": "DangerFullAccessSandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "networkAccess": { + "default": false, + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "readOnly" + ], + "title": "ReadOnlySandboxPolicyType" + } + }, + "title": "ReadOnlySandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "networkAccess": { + "default": "restricted", + "allOf": [ + { + "$ref": "#/definitions/v2/NetworkAccess" + } + ] + }, + "type": { + "type": "string", + "enum": [ + "externalSandbox" + ], + "title": "ExternalSandboxSandboxPolicyType" + } + }, + "title": "ExternalSandboxSandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "excludeSlashTmp": { + "default": false, + "type": "boolean" + }, + "excludeTmpdirEnvVar": { + "default": false, + "type": "boolean" + }, + "networkAccess": { + "default": false, + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "workspaceWrite" + ], + "title": "WorkspaceWriteSandboxPolicyType" + }, + "writableRoots": { + "default": [], + "type": "array", + "items": { + "$ref": "#/definitions/v2/AbsolutePathBuf" + } + } + }, + "title": "WorkspaceWriteSandboxPolicy" + } + ] + }, + "Settings": { + "description": "Settings for a collaboration mode.", + "type": "object", + "required": [ + "model" + ], + "properties": { + "developer_instructions": { + "type": [ + "string", + "null" + ] + }, + "model": { + "type": "string" + }, + "reasoning_effort": { + "anyOf": [ + { + "$ref": "#/definitions/v2/ReasoningEffort" + }, + { + "type": "null" + } + ] + } + } + }, + "WindowsWorldWritableWarningNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "WindowsWorldWritableWarningNotification", + "type": "object", + "required": [ + "extraCount", + "failedScan", + "samplePaths" + ], + "properties": { + "extraCount": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "failedScan": { + "type": "boolean" + }, + "samplePaths": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "ThreadMemoryMode": { "type": "string", "enum": [ @@ -6775,18 +7125,20 @@ "disabled" ] }, - "ThreadRealtimeSdpNotification": { + "ThreadRealtimeClosedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeSdpNotification", - "description": "EXPERIMENTAL - emitted with the remote SDP for a WebRTC realtime session.", + "title": "ThreadRealtimeClosedNotification", + "description": "EXPERIMENTAL - emitted when thread realtime transport closes.", "type": "object", "required": [ - "sdp", "threadId" ], "properties": { - "sdp": { - "type": "string" + "reason": { + "type": [ + "string", + "null" + ] }, "threadId": { "type": "string" @@ -6854,18 +7206,18 @@ } } }, - "ThreadRealtimeOutputAudioDeltaNotification": { + "ThreadRealtimeErrorNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeOutputAudioDeltaNotification", - "description": "EXPERIMENTAL - streamed output audio emitted by thread realtime.", + "title": "ThreadRealtimeErrorNotification", + "description": "EXPERIMENTAL - emitted when thread realtime encounters an error.", "type": "object", "required": [ - "audio", + "message", "threadId" ], "properties": { - "audio": { - "$ref": "#/definitions/v2/ThreadRealtimeAudioChunk" + "message": { + "type": "string" }, "threadId": { "type": "string" @@ -7094,22 +7446,17 @@ } ] }, - "ThreadRealtimeTranscriptDoneNotification": { + "ThreadRealtimeSdpNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeTranscriptDoneNotification", - "description": "EXPERIMENTAL - final transcript text emitted when realtime completes a transcript part.", + "title": "ThreadRealtimeSdpNotification", + "description": "EXPERIMENTAL - emitted with the remote SDP for a WebRTC realtime session.", "type": "object", "required": [ - "role", - "text", + "sdp", "threadId" ], "properties": { - "role": { - "type": "string" - }, - "text": { - "description": "Final complete text for the transcript part.", + "sdp": { "type": "string" }, "threadId": { @@ -7117,23 +7464,18 @@ } } }, - "ThreadRealtimeTranscriptDeltaNotification": { + "ThreadRealtimeOutputAudioDeltaNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeTranscriptDeltaNotification", - "description": "EXPERIMENTAL - flat transcript delta emitted whenever realtime transcript text changes.", + "title": "ThreadRealtimeOutputAudioDeltaNotification", + "description": "EXPERIMENTAL - streamed output audio emitted by thread realtime.", "type": "object", "required": [ - "delta", - "role", + "audio", "threadId" ], "properties": { - "delta": { - "description": "Live transcript delta from the realtime event.", - "type": "string" - }, - "role": { - "type": "string" + "audio": { + "$ref": "#/definitions/v2/ThreadRealtimeAudioChunk" }, "threadId": { "type": "string" @@ -7249,6 +7591,7 @@ "type": "string", "enum": [ "local", + "vertical", "workspace-directory", "shared-with-me" ] @@ -7837,196 +8180,6 @@ } } }, - "CollaborationMode": { - "description": "Collaboration mode for a Codex session.", - "type": "object", - "required": [ - "mode", - "settings" - ], - "properties": { - "mode": { - "$ref": "#/definitions/v2/ModeKind" - }, - "settings": { - "$ref": "#/definitions/v2/Settings" - } - } - }, - "ModeKind": { - "description": "Initial collaboration mode to use when the TUI starts.", - "type": "string", - "enum": [ - "plan", - "default" - ] - }, - "NetworkAccess": { - "type": "string", - "enum": [ - "restricted", - "enabled" - ] - }, - "ReasoningEffort": { - "description": "See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning", - "type": "string", - "enum": [ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh" - ] - }, - "ReasoningSummary": { - "description": "A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries", - "oneOf": [ - { - "type": "string", - "enum": [ - "auto", - "concise", - "detailed" - ] - }, - { - "description": "Option to disable reasoning summaries.", - "type": "string", - "enum": [ - "none" - ] - } - ] - }, - "SandboxPolicy": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "dangerFullAccess" - ], - "title": "DangerFullAccessSandboxPolicyType" - } - }, - "title": "DangerFullAccessSandboxPolicy" - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "networkAccess": { - "default": false, - "type": "boolean" - }, - "type": { - "type": "string", - "enum": [ - "readOnly" - ], - "title": "ReadOnlySandboxPolicyType" - } - }, - "title": "ReadOnlySandboxPolicy" - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "networkAccess": { - "default": "restricted", - "allOf": [ - { - "$ref": "#/definitions/v2/NetworkAccess" - } - ] - }, - "type": { - "type": "string", - "enum": [ - "externalSandbox" - ], - "title": "ExternalSandboxSandboxPolicyType" - } - }, - "title": "ExternalSandboxSandboxPolicy" - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "excludeSlashTmp": { - "default": false, - "type": "boolean" - }, - "excludeTmpdirEnvVar": { - "default": false, - "type": "boolean" - }, - "networkAccess": { - "default": false, - "type": "boolean" - }, - "type": { - "type": "string", - "enum": [ - "workspaceWrite" - ], - "title": "WorkspaceWriteSandboxPolicyType" - }, - "writableRoots": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/v2/AbsolutePathBuf" - } - } - }, - "title": "WorkspaceWriteSandboxPolicy" - } - ] - }, - "Settings": { - "description": "Settings for a collaboration mode.", - "type": "object", - "required": [ - "model" - ], - "properties": { - "developer_instructions": { - "type": [ - "string", - "null" - ] - }, - "model": { - "type": "string" - }, - "reasoning_effort": { - "anyOf": [ - { - "$ref": "#/definitions/v2/ReasoningEffort" - }, - { - "type": "null" - } - ] - } - } - }, "TextElement": { "type": "object", "required": [ @@ -8267,11 +8420,11 @@ "outputSchema": { "description": "Optional JSON Schema used to constrain the final assistant message for this turn." }, - "summary": { - "description": "Override the reasoning summary for this turn and subsequent turns.", + "sandboxPolicy": { + "description": "Override the sandbox policy for this turn and subsequent turns.", "anyOf": [ { - "$ref": "#/definitions/v2/ReasoningSummary" + "$ref": "#/definitions/v2/SandboxPolicy" }, { "type": "null" @@ -8289,11 +8442,11 @@ } ] }, - "sandboxPolicy": { - "description": "Override the sandbox policy for this turn and subsequent turns.", + "summary": { + "description": "Override the reasoning summary for this turn and subsequent turns.", "anyOf": [ { - "$ref": "#/definitions/v2/SandboxPolicy" + "$ref": "#/definitions/v2/ReasoningSummary" }, { "type": "null" @@ -8417,17 +8570,24 @@ } ] }, - "ThreadRealtimeItemAddedNotification": { + "ThreadRealtimeTranscriptDoneNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeItemAddedNotification", - "description": "EXPERIMENTAL - raw non-audio thread realtime item emitted by the backend.", + "title": "ThreadRealtimeTranscriptDoneNotification", + "description": "EXPERIMENTAL - final transcript text emitted when realtime completes a transcript part.", "type": "object", "required": [ - "item", + "role", + "text", "threadId" ], "properties": { - "item": true, + "role": { + "type": "string" + }, + "text": { + "description": "Final complete text for the transcript part.", + "type": "string" + }, "threadId": { "type": "string" } @@ -8471,6 +8631,45 @@ } } }, + "ThreadRealtimeTranscriptDeltaNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadRealtimeTranscriptDeltaNotification", + "description": "EXPERIMENTAL - flat transcript delta emitted whenever realtime transcript text changes.", + "type": "object", + "required": [ + "delta", + "role", + "threadId" + ], + "properties": { + "delta": { + "description": "Live transcript delta from the realtime event.", + "type": "string" + }, + "role": { + "type": "string" + }, + "threadId": { + "type": "string" + } + } + }, + "ThreadRealtimeItemAddedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadRealtimeItemAddedNotification", + "description": "EXPERIMENTAL - raw non-audio thread realtime item emitted by the backend.", + "type": "object", + "required": [ + "item", + "threadId" + ], + "properties": { + "item": true, + "threadId": { + "type": "string" + } + } + }, "ThreadRealtimeStartedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadRealtimeStartedNotification", @@ -8502,60 +8701,6 @@ "v2" ] }, - "ConfigWarningNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigWarningNotification", - "type": "object", - "required": [ - "summary" - ], - "properties": { - "details": { - "description": "Optional extra guidance or error details.", - "type": [ - "string", - "null" - ] - }, - "path": { - "description": "Optional path to the config file that triggered the warning.", - "type": [ - "string", - "null" - ] - }, - "range": { - "description": "Optional range for the error location inside the config file.", - "anyOf": [ - { - "$ref": "#/definitions/v2/TextRange" - }, - { - "type": "null" - } - ] - }, - "summary": { - "description": "Concise summary of the warning.", - "type": "string" - } - } - }, - "TextRange": { - "type": "object", - "required": [ - "end", - "start" - ], - "properties": { - "end": { - "$ref": "#/definitions/v2/TextPosition" - }, - "start": { - "$ref": "#/definitions/v2/TextPosition" - } - } - }, "ReviewDelivery": { "type": "string", "enum": [ @@ -8748,6 +8893,36 @@ } } }, + "PermissionProfileListParams": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PermissionProfileListParams", + "type": "object", + "properties": { + "cursor": { + "description": "Opaque pagination cursor returned by a previous call.", + "type": [ + "string", + "null" + ] + }, + "cwd": { + "description": "Optional working directory to resolve project config layers.", + "type": [ + "string", + "null" + ] + }, + "limit": { + "description": "Optional page size; defaults to the full result set.", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + } + } + }, "ExperimentalFeatureEnablementSetParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExperimentalFeatureEnablementSetParams", @@ -8765,6 +8940,60 @@ } } }, + "ConfigWarningNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigWarningNotification", + "type": "object", + "required": [ + "summary" + ], + "properties": { + "details": { + "description": "Optional extra guidance or error details.", + "type": [ + "string", + "null" + ] + }, + "path": { + "description": "Optional path to the config file that triggered the warning.", + "type": [ + "string", + "null" + ] + }, + "range": { + "description": "Optional range for the error location inside the config file.", + "anyOf": [ + { + "$ref": "#/definitions/v2/TextRange" + }, + { + "type": "null" + } + ] + }, + "summary": { + "description": "Concise summary of the warning.", + "type": "string" + } + } + }, + "TextRange": { + "type": "object", + "required": [ + "end", + "start" + ], + "properties": { + "end": { + "$ref": "#/definitions/v2/TextPosition" + }, + "start": { + "$ref": "#/definitions/v2/TextPosition" + } + } + }, "TextPosition": { "type": "object", "required": [ @@ -8786,46 +9015,6 @@ } } }, - "DeprecationNoticeNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "DeprecationNoticeNotification", - "type": "object", - "required": [ - "summary" - ], - "properties": { - "details": { - "description": "Optional extra guidance, such as migration steps or rationale.", - "type": [ - "string", - "null" - ] - }, - "summary": { - "description": "Concise summary of what is deprecated.", - "type": "string" - } - } - }, - "GuardianWarningNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "GuardianWarningNotification", - "type": "object", - "required": [ - "message", - "threadId" - ], - "properties": { - "message": { - "description": "Concise guardian warning message for the user.", - "type": "string" - }, - "threadId": { - "description": "Thread target for the guardian warning.", - "type": "string" - } - } - }, "McpServerOauthLoginParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "McpServerOauthLoginParams", @@ -9147,26 +9336,6 @@ } } }, - "ActivePermissionProfile": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "extends": { - "description": "Parent profile identifier once permissions profiles support inheritance. This is currently always `null`.", - "default": null, - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Identifier from `default_permissions` or the implicit built-in default, such as `:workspace` or a user-defined `[permissions.]` profile.", - "type": "string" - } - } - }, "CommandExecTerminalSize": { "description": "PTY size in character cells for `command/exec` PTY sessions.", "type": "object", @@ -9380,6 +9549,46 @@ } } }, + "DeprecationNoticeNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "DeprecationNoticeNotification", + "type": "object", + "required": [ + "summary" + ], + "properties": { + "details": { + "description": "Optional extra guidance, such as migration steps or rationale.", + "type": [ + "string", + "null" + ] + }, + "summary": { + "description": "Concise summary of what is deprecated.", + "type": "string" + } + } + }, + "GuardianWarningNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "GuardianWarningNotification", + "type": "object", + "required": [ + "message", + "threadId" + ], + "properties": { + "message": { + "description": "Concise guardian warning message for the user.", + "type": "string" + }, + "threadId": { + "description": "Thread target for the guardian warning.", + "type": "string" + } + } + }, "WarningNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "WarningNotification", @@ -9425,41 +9634,6 @@ } } }, - "ModelVerification": { - "type": "string", - "enum": [ - "trustedAccessForCyber" - ] - }, - "ModelReroutedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ModelReroutedNotification", - "type": "object", - "required": [ - "fromModel", - "reason", - "threadId", - "toModel", - "turnId" - ], - "properties": { - "fromModel": { - "type": "string" - }, - "reason": { - "$ref": "#/definitions/v2/ModelRerouteReason" - }, - "threadId": { - "type": "string" - }, - "toModel": { - "type": "string" - }, - "turnId": { - "type": "string" - } - } - }, "ConfigReadParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ConfigReadParams", @@ -9792,6 +9966,26 @@ } } }, + "ActivePermissionProfile": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "extends": { + "description": "Parent profile identifier from the selected permissions profile's `extends` setting, when present.", + "default": null, + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Identifier from `default_permissions` or the implicit built-in default, such as `:workspace` or a user-defined `[permissions.]` profile.", + "type": "string" + } + } + }, "AgentPath": { "type": "string" }, @@ -10952,6 +11146,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { @@ -11591,8 +11791,11 @@ "thread" ], "properties": { - "thread": { - "$ref": "#/definitions/v2/Thread" + "serviceTier": { + "type": [ + "string", + "null" + ] }, "approvalPolicy": { "$ref": "#/definitions/v2/AskForApproval" @@ -11632,11 +11835,8 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] + "thread": { + "$ref": "#/definitions/v2/Thread" }, "sandbox": { "description": "Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance.", @@ -11662,8 +11862,11 @@ "thread" ], "properties": { - "thread": { - "$ref": "#/definitions/v2/Thread" + "serviceTier": { + "type": [ + "string", + "null" + ] }, "approvalPolicy": { "$ref": "#/definitions/v2/AskForApproval" @@ -11703,11 +11906,8 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] + "thread": { + "$ref": "#/definitions/v2/Thread" }, "sandbox": { "description": "Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance.", @@ -11733,11 +11933,8 @@ "thread" ], "properties": { - "serviceTier": { - "type": [ - "string", - "null" - ] + "thread": { + "$ref": "#/definitions/v2/Thread" }, "approvalPolicy": { "$ref": "#/definitions/v2/AskForApproval" @@ -11777,8 +11974,11 @@ } ] }, - "thread": { - "$ref": "#/definitions/v2/Thread" + "serviceTier": { + "type": [ + "string", + "null" + ] }, "sandbox": { "description": "Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance.", @@ -11816,25 +12016,36 @@ } } }, - "ModelRerouteReason": { + "ModelVerification": { "type": "string", "enum": [ - "highRiskCyberActivity" + "trustedAccessForCyber" ] }, - "ContextCompactedNotification": { + "ModelReroutedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ContextCompactedNotification", - "description": "Deprecated: Use `ContextCompaction` item type instead.", + "title": "ModelReroutedNotification", "type": "object", "required": [ + "fromModel", + "reason", "threadId", + "toModel", "turnId" ], "properties": { + "fromModel": { + "type": "string" + }, + "reason": { + "$ref": "#/definitions/v2/ModelRerouteReason" + }, "threadId": { "type": "string" }, + "toModel": { + "type": "string" + }, "turnId": { "type": "string" } @@ -11891,6 +12102,86 @@ } } }, + "ThreadGoalSetResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalSetResponse", + "type": "object", + "required": [ + "goal" + ], + "properties": { + "goal": { + "$ref": "#/definitions/v2/ThreadGoal" + } + } + }, + "ThreadGoalGetResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalGetResponse", + "type": "object", + "properties": { + "goal": { + "anyOf": [ + { + "$ref": "#/definitions/v2/ThreadGoal" + }, + { + "type": "null" + } + ] + } + } + }, + "ThreadGoalClearResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalClearResponse", + "type": "object", + "required": [ + "cleared" + ], + "properties": { + "cleared": { + "type": "boolean" + } + } + }, + "ThreadMetadataUpdateResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadMetadataUpdateResponse", + "type": "object", + "required": [ + "thread" + ], + "properties": { + "thread": { + "$ref": "#/definitions/v2/Thread" + } + } + }, + "ModelRerouteReason": { + "type": "string", + "enum": [ + "highRiskCyberActivity" + ] + }, + "ContextCompactedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ContextCompactedNotification", + "description": "Deprecated: Use `ContextCompaction` item type instead.", + "type": "object", + "required": [ + "threadId", + "turnId" + ], + "properties": { + "threadId": { + "type": "string" + }, + "turnId": { + "type": "string" + } + } + }, "ReasoningTextDeltaNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ReasoningTextDeltaNotification", @@ -11921,103 +12212,6 @@ } } }, - "ReasoningSummaryPartAddedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReasoningSummaryPartAddedNotification", - "type": "object", - "required": [ - "itemId", - "summaryIndex", - "threadId", - "turnId" - ], - "properties": { - "itemId": { - "type": "string" - }, - "summaryIndex": { - "type": "integer", - "format": "int64" - }, - "threadId": { - "type": "string" - }, - "turnId": { - "type": "string" - } - } - }, - "ReasoningSummaryTextDeltaNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReasoningSummaryTextDeltaNotification", - "type": "object", - "required": [ - "delta", - "itemId", - "summaryIndex", - "threadId", - "turnId" - ], - "properties": { - "delta": { - "type": "string" - }, - "itemId": { - "type": "string" - }, - "summaryIndex": { - "type": "integer", - "format": "int64" - }, - "threadId": { - "type": "string" - }, - "turnId": { - "type": "string" - } - } - }, - "ThreadMetadataUpdateResponse": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadMetadataUpdateResponse", - "type": "object", - "required": [ - "thread" - ], - "properties": { - "thread": { - "$ref": "#/definitions/v2/Thread" - } - } - }, - "FsChangedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "FsChangedNotification", - "description": "Filesystem watch notification emitted for `fs/watch` subscribers.", - "type": "object", - "required": [ - "changedPaths", - "watchId" - ], - "properties": { - "changedPaths": { - "description": "File or directory paths associated with this event.", - "type": "array", - "items": { - "$ref": "#/definitions/v2/AbsolutePathBuf" - } - }, - "watchId": { - "description": "Watch identifier previously provided to `fs/watch`.", - "type": "string" - } - } - }, - "ExternalAgentConfigImportCompletedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExternalAgentConfigImportCompletedNotification", - "type": "object" - }, "ThreadUnarchiveResponse": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadUnarchiveResponse", @@ -12046,31 +12240,29 @@ "title": "ThreadApproveGuardianDeniedActionResponse", "type": "object" }, - "RemoteControlStatusChangedNotification": { + "ReasoningSummaryPartAddedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "RemoteControlStatusChangedNotification", - "description": "Current remote-control connection status and remote identity exposed to clients.", + "title": "ReasoningSummaryPartAddedNotification", "type": "object", "required": [ - "installationId", - "serverName", - "status" + "itemId", + "summaryIndex", + "threadId", + "turnId" ], "properties": { - "environmentId": { - "type": [ - "string", - "null" - ] - }, - "installationId": { + "itemId": { "type": "string" }, - "serverName": { + "summaryIndex": { + "type": "integer", + "format": "int64" + }, + "threadId": { "type": "string" }, - "status": { - "$ref": "#/definitions/v2/RemoteControlConnectionStatus" + "turnId": { + "type": "string" } } }, @@ -12159,33 +12351,56 @@ } } }, - "AppListUpdatedNotification": { + "ReasoningSummaryTextDeltaNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AppListUpdatedNotification", - "description": "EXPERIMENTAL - notification emitted when the app list changes.", + "title": "ReasoningSummaryTextDeltaNotification", "type": "object", "required": [ - "data" + "delta", + "itemId", + "summaryIndex", + "threadId", + "turnId" ], "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/v2/AppInfo" - } + "delta": { + "type": "string" + }, + "itemId": { + "type": "string" + }, + "summaryIndex": { + "type": "integer", + "format": "int64" + }, + "threadId": { + "type": "string" + }, + "turnId": { + "type": "string" } } }, - "AccountRateLimitsUpdatedNotification": { + "FsChangedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AccountRateLimitsUpdatedNotification", + "title": "FsChangedNotification", + "description": "Filesystem watch notification emitted for `fs/watch` subscribers.", "type": "object", "required": [ - "rateLimits" + "changedPaths", + "watchId" ], "properties": { - "rateLimits": { - "$ref": "#/definitions/v2/RateLimitSnapshot" + "changedPaths": { + "description": "File or directory paths associated with this event.", + "type": "array", + "items": { + "$ref": "#/definitions/v2/AbsolutePathBuf" + } + }, + "watchId": { + "description": "Watch identifier previously provided to `fs/watch`.", + "type": "string" } } }, @@ -12440,6 +12655,8 @@ "postCompact", "sessionStart", "userPromptSubmit", + "subagentStart", + "subagentStop", "stop" ] }, @@ -14010,97 +14227,68 @@ "title": "TurnInterruptResponse", "type": "object" }, - "AccountUpdatedNotification": { + "ExternalAgentConfigImportCompletedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AccountUpdatedNotification", - "type": "object", - "properties": { - "authMode": { - "anyOf": [ - { - "$ref": "#/definitions/v2/AuthMode" - }, - { - "type": "null" - } - ] - }, - "planType": { - "anyOf": [ - { - "$ref": "#/definitions/v2/PlanType" - }, - { - "type": "null" - } - ] - } - } + "title": "ExternalAgentConfigImportCompletedNotification", + "type": "object" }, - "AuthMode": { - "description": "Authentication mode for OpenAI-backed providers.", - "oneOf": [ - { - "description": "OpenAI API key provided by the caller and stored by Codex.", - "type": "string", - "enum": [ - "apikey" - ] - }, - { - "description": "ChatGPT OAuth managed by Codex (tokens persisted and refreshed by Codex).", - "type": "string", - "enum": [ - "chatgpt" - ] - }, - { - "description": "[UNSTABLE] FOR OPENAI INTERNAL USE ONLY - DO NOT USE.\n\nChatGPT auth tokens are supplied by an external host app and are only stored in memory. Token refresh must be handled by the external host app.", - "type": "string", - "enum": [ - "chatgptAuthTokens" - ] - }, - { - "description": "Programmatic Codex auth backed by a registered Agent Identity.", - "type": "string", - "enum": [ - "agentIdentity" - ] - } - ] - }, - "McpServerStatusUpdatedNotification": { + "RemoteControlStatusChangedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "McpServerStatusUpdatedNotification", + "title": "RemoteControlStatusChangedNotification", + "description": "Current remote-control connection status and remote identity exposed to clients.", "type": "object", "required": [ - "name", + "installationId", + "serverName", "status" ], "properties": { - "error": { + "environmentId": { "type": [ "string", "null" ] }, - "name": { + "installationId": { + "type": "string" + }, + "serverName": { "type": "string" }, "status": { - "$ref": "#/definitions/v2/McpServerStartupState" + "$ref": "#/definitions/v2/RemoteControlConnectionStatus" } } }, - "McpServerStartupState": { - "type": "string", - "enum": [ - "starting", - "ready", - "failed", - "cancelled" - ] + "AppListUpdatedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AppListUpdatedNotification", + "description": "EXPERIMENTAL - notification emitted when the app list changes.", + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/v2/AppInfo" + } + } + } + }, + "AccountRateLimitsUpdatedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AccountRateLimitsUpdatedNotification", + "type": "object", + "required": [ + "rateLimits" + ], + "properties": { + "rateLimits": { + "$ref": "#/definitions/v2/RateLimitSnapshot" + } + } }, "RealtimeVoicesList": { "type": "object", @@ -14131,26 +14319,30 @@ } } }, - "McpServerOauthLoginCompletedNotification": { + "AccountUpdatedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "McpServerOauthLoginCompletedNotification", + "title": "AccountUpdatedNotification", "type": "object", - "required": [ - "name", - "success" - ], "properties": { - "error": { - "type": [ - "string", - "null" + "authMode": { + "anyOf": [ + { + "$ref": "#/definitions/v2/AuthMode" + }, + { + "type": "null" + } ] }, - "name": { - "type": "string" - }, - "success": { - "type": "boolean" + "planType": { + "anyOf": [ + { + "$ref": "#/definitions/v2/PlanType" + }, + { + "type": "null" + } + ] } } }, @@ -14225,6 +14417,14 @@ "defaultReasoningEffort": { "$ref": "#/definitions/v2/ReasoningEffort" }, + "defaultServiceTier": { + "description": "Catalog default service tier id for this model, when one is configured.", + "default": null, + "type": [ + "string", + "null" + ] + }, "description": { "type": "string" }, @@ -14520,6 +14720,48 @@ } } }, + "PermissionProfileSummary": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "description": { + "description": "Optional user-facing description for display in clients.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Available permission profile identifier.", + "type": "string" + } + } + }, + "PermissionProfileListResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PermissionProfileListResponse", + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/v2/PermissionProfileSummary" + } + }, + "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" + ] + } + } + }, "ExperimentalFeatureEnablementSetResponse": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExperimentalFeatureEnablementSetResponse", @@ -14546,57 +14788,69 @@ "errored" ] }, - "McpToolCallProgressNotification": { + "AuthMode": { + "description": "Authentication mode for OpenAI-backed providers.", + "oneOf": [ + { + "description": "OpenAI API key provided by the caller and stored by Codex.", + "type": "string", + "enum": [ + "apikey" + ] + }, + { + "description": "ChatGPT OAuth managed by Codex (tokens persisted and refreshed by Codex).", + "type": "string", + "enum": [ + "chatgpt" + ] + }, + { + "description": "[UNSTABLE] FOR OPENAI INTERNAL USE ONLY - DO NOT USE.\n\nChatGPT auth tokens are supplied by an external host app and are only stored in memory. Token refresh must be handled by the external host app.", + "type": "string", + "enum": [ + "chatgptAuthTokens" + ] + }, + { + "description": "Programmatic Codex auth backed by a registered Agent Identity.", + "type": "string", + "enum": [ + "agentIdentity" + ] + } + ] + }, + "McpServerStatusUpdatedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "McpToolCallProgressNotification", + "title": "McpServerStatusUpdatedNotification", "type": "object", "required": [ - "itemId", - "message", - "threadId", - "turnId" + "name", + "status" ], "properties": { - "itemId": { + "error": { + "type": [ + "string", + "null" + ] + }, + "name": { "type": "string" }, - "message": { - "type": "string" - }, - "threadId": { - "type": "string" - }, - "turnId": { - "type": "string" + "status": { + "$ref": "#/definitions/v2/McpServerStartupState" } } }, - "ServerRequestResolvedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ServerRequestResolvedNotification", - "type": "object", - "required": [ - "requestId", - "threadId" - ], - "properties": { - "requestId": { - "$ref": "#/definitions/v2/RequestId" - }, - "threadId": { - "type": "string" - } - } - }, - "RequestId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer", - "format": "int64" - } + "McpServerStartupState": { + "type": "string", + "enum": [ + "starting", + "ready", + "failed", + "cancelled" ] }, "CollaborationModeMask": { @@ -14644,26 +14898,46 @@ } } }, - "FileChangePatchUpdatedNotification": { + "McpServerOauthLoginCompletedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "FileChangePatchUpdatedNotification", + "title": "McpServerOauthLoginCompletedNotification", + "type": "object", + "required": [ + "name", + "success" + ], + "properties": { + "error": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": "string" + }, + "success": { + "type": "boolean" + } + } + }, + "McpToolCallProgressNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "McpToolCallProgressNotification", "type": "object", "required": [ - "changes", "itemId", + "message", "threadId", "turnId" ], "properties": { - "changes": { - "type": "array", - "items": { - "$ref": "#/definitions/v2/FileUpdateChange" - } - }, "itemId": { "type": "string" }, + "message": { + "type": "string" + }, "threadId": { "type": "string" }, @@ -14672,58 +14946,20 @@ } } }, - "FileChangeOutputDeltaNotification": { + "ServerRequestResolvedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "FileChangeOutputDeltaNotification", - "description": "Deprecated legacy notification for `apply_patch` textual output.\n\nThe server no longer emits this notification.", + "title": "ServerRequestResolvedNotification", "type": "object", "required": [ - "delta", - "itemId", - "threadId", - "turnId" + "requestId", + "threadId" ], "properties": { - "delta": { - "type": "string" - }, - "itemId": { - "type": "string" + "requestId": { + "$ref": "#/definitions/v2/RequestId" }, "threadId": { "type": "string" - }, - "turnId": { - "type": "string" - } - } - }, - "TerminalInteractionNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "TerminalInteractionNotification", - "type": "object", - "required": [ - "itemId", - "processId", - "stdin", - "threadId", - "turnId" - ], - "properties": { - "itemId": { - "type": "string" - }, - "processId": { - "type": "string" - }, - "stdin": { - "type": "string" - }, - "threadId": { - "type": "string" - }, - "turnId": { - "type": "string" } } }, @@ -15421,9 +15657,49 @@ "description": "Empty success response for `command/exec/resize`.", "type": "object" }, - "CommandExecutionOutputDeltaNotification": { + "RequestId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer", + "format": "int64" + } + ] + }, + "FileChangePatchUpdatedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CommandExecutionOutputDeltaNotification", + "title": "FileChangePatchUpdatedNotification", + "type": "object", + "required": [ + "changes", + "itemId", + "threadId", + "turnId" + ], + "properties": { + "changes": { + "type": "array", + "items": { + "$ref": "#/definitions/v2/FileUpdateChange" + } + }, + "itemId": { + "type": "string" + }, + "threadId": { + "type": "string" + }, + "turnId": { + "type": "string" + } + } + }, + "FileChangeOutputDeltaNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "FileChangeOutputDeltaNotification", + "description": "Deprecated legacy notification for `apply_patch` textual output.\n\nThe server no longer emits this notification.", "type": "object", "required": [ "delta", @@ -15446,100 +15722,35 @@ } } }, - "ProcessExitedNotification": { + "TerminalInteractionNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ProcessExitedNotification", - "description": "Final process exit notification for `process/spawn`.", + "title": "TerminalInteractionNotification", "type": "object", "required": [ - "exitCode", - "processHandle", - "stderr", - "stderrCapReached", - "stdout", - "stdoutCapReached" + "itemId", + "processId", + "stdin", + "threadId", + "turnId" ], "properties": { - "exitCode": { - "description": "Process exit code.", - "type": "integer", - "format": "int32" - }, - "processHandle": { - "description": "Client-supplied, connection-scoped `processHandle` from `process/spawn`.", + "itemId": { "type": "string" }, - "stderr": { - "description": "Buffered stderr capture.\n\nEmpty when stderr was streamed via `process/outputDelta`.", + "processId": { "type": "string" }, - "stderrCapReached": { - "description": "Whether stderr reached `outputBytesCap`.\n\nIn streaming mode, stderr is empty and cap state is also reported on the final stderr `process/outputDelta` notification.", - "type": "boolean" - }, - "stdout": { - "description": "Buffered stdout capture.\n\nEmpty when stdout was streamed via `process/outputDelta`.", + "stdin": { "type": "string" }, - "stdoutCapReached": { - "description": "Whether stdout reached `outputBytesCap`.\n\nIn streaming mode, stdout is empty and cap state is also reported on the final stdout `process/outputDelta` notification.", - "type": "boolean" + "threadId": { + "type": "string" + }, + "turnId": { + "type": "string" } } }, - "ProcessOutputDeltaNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ProcessOutputDeltaNotification", - "description": "Base64-encoded output chunk emitted for a streaming `process/spawn` request.", - "type": "object", - "required": [ - "capReached", - "deltaBase64", - "processHandle", - "stream" - ], - "properties": { - "capReached": { - "description": "True on the final streamed chunk for this stream when output was truncated by `outputBytesCap`.", - "type": "boolean" - }, - "deltaBase64": { - "description": "Base64-encoded output bytes.", - "type": "string" - }, - "processHandle": { - "description": "Client-supplied, connection-scoped `processHandle` from `process/spawn`.", - "type": "string" - }, - "stream": { - "description": "Output stream this chunk belongs to.", - "allOf": [ - { - "$ref": "#/definitions/v2/ProcessOutputStream" - } - ] - } - } - }, - "ProcessOutputStream": { - "description": "Stream label for `process/outputDelta` notifications.", - "oneOf": [ - { - "description": "stdout stream. PTY mode multiplexes terminal output here.", - "type": "string", - "enum": [ - "stdout" - ] - }, - { - "description": "stderr stream.", - "type": "string", - "enum": [ - "stderr" - ] - } - ] - }, "AnalyticsConfig": { "type": "object", "properties": { @@ -15664,6 +15875,25 @@ } } }, + "AutoCompactTokenLimitScope": { + "description": "Selects which part of the active context is charged against `model_auto_compact_token_limit`.", + "oneOf": [ + { + "description": "Count the full active context against the limit.", + "type": "string", + "enum": [ + "total" + ] + }, + { + "description": "Count sampled output and later growth after the carried window prefix.", + "type": "string", + "enum": [ + "body_after_prefix" + ] + } + ] + }, "Config": { "type": "object", "properties": { @@ -15766,6 +15996,16 @@ ], "format": "int64" }, + "model_auto_compact_token_limit_scope": { + "anyOf": [ + { + "$ref": "#/definitions/v2/AutoCompactTokenLimitScope" + }, + { + "type": "null" + } + ] + }, "model_context_window": { "type": [ "integer", @@ -16429,6 +16669,17 @@ } } }, + "ComputerUseRequirements": { + "type": "object", + "properties": { + "allowLockedComputerUse": { + "type": [ + "boolean", + "null" + ] + } + } + }, "ConfigRequirements": { "type": "object", "properties": { @@ -16456,6 +16707,15 @@ "type": "boolean" } }, + "allowedPermissions": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, "allowedSandboxModes": { "type": [ "array", @@ -16474,6 +16734,16 @@ "$ref": "#/definitions/v2/WebSearchMode" } }, + "computerUse": { + "anyOf": [ + { + "$ref": "#/definitions/v2/ComputerUseRequirements" + }, + { + "type": "null" + } + ] + }, "enforceResidency": { "anyOf": [ { @@ -16596,6 +16866,8 @@ "PreToolUse", "SessionStart", "Stop", + "SubagentStart", + "SubagentStop", "UserPromptSubmit" ], "properties": { @@ -16641,6 +16913,18 @@ "$ref": "#/definitions/v2/ConfiguredHookMatcherGroup" } }, + "SubagentStart": { + "type": "array", + "items": { + "$ref": "#/definitions/v2/ConfiguredHookMatcherGroup" + } + }, + "SubagentStop": { + "type": "array", + "items": { + "$ref": "#/definitions/v2/ConfiguredHookMatcherGroup" + } + }, "UserPromptSubmit": { "type": "array", "items": { @@ -17045,6 +17329,104 @@ } } }, + "ThreadSettings": { + "type": "object", + "required": [ + "approvalPolicy", + "approvalsReviewer", + "collaborationMode", + "cwd", + "model", + "modelProvider", + "sandboxPolicy" + ], + "properties": { + "activePermissionProfile": { + "anyOf": [ + { + "$ref": "#/definitions/v2/ActivePermissionProfile" + }, + { + "type": "null" + } + ] + }, + "approvalPolicy": { + "$ref": "#/definitions/v2/AskForApproval" + }, + "approvalsReviewer": { + "$ref": "#/definitions/v2/ApprovalsReviewer" + }, + "collaborationMode": { + "$ref": "#/definitions/v2/CollaborationMode" + }, + "cwd": { + "$ref": "#/definitions/v2/AbsolutePathBuf" + }, + "effort": { + "anyOf": [ + { + "$ref": "#/definitions/v2/ReasoningEffort" + }, + { + "type": "null" + } + ] + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "personality": { + "anyOf": [ + { + "$ref": "#/definitions/v2/Personality" + }, + { + "type": "null" + } + ] + }, + "sandboxPolicy": { + "$ref": "#/definitions/v2/SandboxPolicy" + }, + "serviceTier": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "anyOf": [ + { + "$ref": "#/definitions/v2/ReasoningSummary" + }, + { + "type": "null" + } + ] + } + } + }, + "ThreadSettingsUpdatedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadSettingsUpdatedNotification", + "type": "object", + "required": [ + "threadId", + "threadSettings" + ], + "properties": { + "threadId": { + "type": "string" + }, + "threadSettings": { + "$ref": "#/definitions/v2/ThreadSettings" + } + } + }, "ThreadTokenUsage": { "type": "object", "required": [ @@ -17489,7 +17871,7 @@ "enum": [ "read", "write", - "none" + "deny" ] }, "FileSystemPath": { @@ -18243,6 +18625,125 @@ ] } } + }, + "ProcessOutputStream": { + "description": "Stream label for `process/outputDelta` notifications.", + "oneOf": [ + { + "description": "stdout stream. PTY mode multiplexes terminal output here.", + "type": "string", + "enum": [ + "stdout" + ] + }, + { + "description": "stderr stream.", + "type": "string", + "enum": [ + "stderr" + ] + } + ] + }, + "ProcessOutputDeltaNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ProcessOutputDeltaNotification", + "description": "Base64-encoded output chunk emitted for a streaming `process/spawn` request.", + "type": "object", + "required": [ + "capReached", + "deltaBase64", + "processHandle", + "stream" + ], + "properties": { + "capReached": { + "description": "True on the final streamed chunk for this stream when output was truncated by `outputBytesCap`.", + "type": "boolean" + }, + "deltaBase64": { + "description": "Base64-encoded output bytes.", + "type": "string" + }, + "processHandle": { + "description": "Client-supplied, connection-scoped `processHandle` from `process/spawn`.", + "type": "string" + }, + "stream": { + "description": "Output stream this chunk belongs to.", + "allOf": [ + { + "$ref": "#/definitions/v2/ProcessOutputStream" + } + ] + } + } + }, + "ProcessExitedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ProcessExitedNotification", + "description": "Final process exit notification for `process/spawn`.", + "type": "object", + "required": [ + "exitCode", + "processHandle", + "stderr", + "stderrCapReached", + "stdout", + "stdoutCapReached" + ], + "properties": { + "exitCode": { + "description": "Process exit code.", + "type": "integer", + "format": "int32" + }, + "processHandle": { + "description": "Client-supplied, connection-scoped `processHandle` from `process/spawn`.", + "type": "string" + }, + "stderr": { + "description": "Buffered stderr capture.\n\nEmpty when stderr was streamed via `process/outputDelta`.", + "type": "string" + }, + "stderrCapReached": { + "description": "Whether stderr reached `outputBytesCap`.\n\nIn streaming mode, stderr is empty and cap state is also reported on the final stderr `process/outputDelta` notification.", + "type": "boolean" + }, + "stdout": { + "description": "Buffered stdout capture.\n\nEmpty when stdout was streamed via `process/outputDelta`.", + "type": "string" + }, + "stdoutCapReached": { + "description": "Whether stdout reached `outputBytesCap`.\n\nIn streaming mode, stdout is empty and cap state is also reported on the final stdout `process/outputDelta` notification.", + "type": "boolean" + } + } + }, + "CommandExecutionOutputDeltaNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CommandExecutionOutputDeltaNotification", + "type": "object", + "required": [ + "delta", + "itemId", + "threadId", + "turnId" + ], + "properties": { + "delta": { + "type": "string" + }, + "itemId": { + "type": "string" + }, + "threadId": { + "type": "string" + }, + "turnId": { + "type": "string" + } + } } }, "AbsolutePathBuf": { diff --git a/schemas/codex_app_server_protocol.v2.schemas.json b/schemas/codex_app_server_protocol.v2.schemas.json index 6c86f90..b188f7e 100644 --- a/schemas/codex_app_server_protocol.v2.schemas.json +++ b/schemas/codex_app_server_protocol.v2.schemas.json @@ -199,10 +199,11 @@ } ] }, - "sessionStartSource": { + "threadSource": { + "description": "Optional client-supplied analytics source classification for this thread.", "anyOf": [ { - "$ref": "#/definitions/ThreadStartSource" + "$ref": "#/definitions/ThreadSource" }, { "type": "null" @@ -215,15 +216,10 @@ "null" ] }, - "threadSource": { - "description": "Optional client-supplied analytics source classification for this thread.", - "anyOf": [ - { - "$ref": "#/definitions/ThreadSource" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "personality": { @@ -248,13 +244,17 @@ "null" ] }, - "serviceName": { - "type": [ - "string", - "null" + "sessionStartSource": { + "anyOf": [ + { + "$ref": "#/definitions/ThreadStartSource" + }, + { + "type": "null" + } ] }, - "serviceTier": { + "serviceName": { "type": [ "string", "null" @@ -401,6 +401,26 @@ } }, "title": "InputImageFunctionCallOutputContentItem" + }, + { + "type": "object", + "required": [ + "encrypted_content", + "type" + ], + "properties": { + "encrypted_content": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "encrypted_content" + ], + "title": "EncryptedContentFunctionCallOutputContentItemType" + } + }, + "title": "EncryptedContentFunctionCallOutputContentItem" } ] }, @@ -1151,7 +1171,7 @@ "ThreadResumeParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadResumeParams", - "description": "There are three ways to resume a thread: 1. By thread_id: load the thread from disk by thread_id and resume it. 2. By history: instantiate the thread from memory and resume it. 3. By path: load the thread from disk by path and resume it.\n\nThe precedence is: history > path > thread_id. If using history or path, the thread_id param will be ignored.\n\nPrefer using thread_id whenever possible.", + "description": "There are three ways to resume a thread: 1. By thread_id: load the thread from disk by thread_id and resume it. 2. By history: instantiate the thread from memory and resume it. 3. By path: load the thread from disk by path and resume it.\n\nFor non-running threads, the precedence is: history > non-empty path > thread_id. If using history or a non-empty path for a non-running thread, the thread_id param will be ignored.\n\nIf thread_id identifies a running thread, app-server rejoins that thread and treats a non-empty path as a consistency check against the active rollout path. Empty string path values are treated as absent.\n\nPrefer using thread_id whenever possible.", "type": "object", "required": [ "threadId" @@ -1203,6 +1223,16 @@ "null" ] }, + "personality": { + "anyOf": [ + { + "$ref": "#/definitions/Personality" + }, + { + "type": "null" + } + ] + }, "sandbox": { "anyOf": [ { @@ -1213,12 +1243,6 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] - }, "model": { "description": "Configuration overrides for the resumed thread, if any.", "type": [ @@ -1232,14 +1256,10 @@ "null" ] }, - "personality": { - "anyOf": [ - { - "$ref": "#/definitions/Personality" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "threadId": { @@ -1250,7 +1270,7 @@ "ThreadForkParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadForkParams", - "description": "There are two ways to fork a thread: 1. By thread_id: load the thread from disk by thread_id and fork it into a new thread. 2. By path: load the thread from disk by path and fork it into a new thread.\n\nIf using path, the thread_id param will be ignored.\n\nPrefer using thread_id whenever possible.", + "description": "There are two ways to fork a thread: 1. By thread_id: load the thread from disk by thread_id and fork it into a new thread. 2. By path: load the thread from disk by path and fork it into a new thread.\n\nIf using a non-empty path, the thread_id param will be ignored. Empty string path values are treated as absent.\n\nPrefer using thread_id whenever possible.", "type": "object", "required": [ "threadId" @@ -1305,11 +1325,10 @@ "ephemeral": { "type": "boolean" }, - "threadSource": { - "description": "Optional client-supplied analytics source classification for this forked thread.", + "sandbox": { "anyOf": [ { - "$ref": "#/definitions/ThreadSource" + "$ref": "#/definitions/SandboxMode" }, { "type": "null" @@ -1329,23 +1348,24 @@ "null" ] }, - "sandbox": { - "anyOf": [ - { - "$ref": "#/definitions/SandboxMode" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "threadId": { "type": "string" }, - "serviceTier": { - "type": [ - "string", - "null" + "threadSource": { + "description": "Optional client-supplied analytics source classification for this forked thread.", + "anyOf": [ + { + "$ref": "#/definitions/ThreadSource" + }, + { + "type": "null" + } ] } } @@ -1452,65 +1472,63 @@ "complete" ] }, - "WindowsWorldWritableWarningNotification": { + "ThreadGoalSetParams": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "WindowsWorldWritableWarningNotification", - "type": "object", - "required": [ - "extraCount", - "failedScan", - "samplePaths" - ], - "properties": { - "extraCount": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "failedScan": { - "type": "boolean" - }, - "samplePaths": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "ThreadRealtimeClosedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeClosedNotification", - "description": "EXPERIMENTAL - emitted when thread realtime transport closes.", + "title": "ThreadGoalSetParams", "type": "object", "required": [ "threadId" ], "properties": { - "reason": { + "objective": { "type": [ "string", "null" ] }, + "status": { + "anyOf": [ + { + "$ref": "#/definitions/ThreadGoalStatus" + }, + { + "type": "null" + } + ] + }, + "threadId": { + "type": "string" + }, + "tokenBudget": { + "type": [ + "integer", + "null" + ], + "format": "int64" + } + } + }, + "ThreadGoalGetParams": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalGetParams", + "type": "object", + "required": [ + "threadId" + ], + "properties": { "threadId": { "type": "string" } } }, - "ThreadRealtimeErrorNotification": { + "ThreadGoalClearParams": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeErrorNotification", - "description": "EXPERIMENTAL - emitted when thread realtime encounters an error.", + "title": "ThreadGoalClearParams", "type": "object", "required": [ - "message", "threadId" ], "properties": { - "message": { - "type": "string" - }, "threadId": { "type": "string" } @@ -1566,6 +1584,222 @@ } } }, + "CollaborationMode": { + "description": "Collaboration mode for a Codex session.", + "type": "object", + "required": [ + "mode", + "settings" + ], + "properties": { + "mode": { + "$ref": "#/definitions/ModeKind" + }, + "settings": { + "$ref": "#/definitions/Settings" + } + } + }, + "ModeKind": { + "description": "Initial collaboration mode to use when the TUI starts.", + "type": "string", + "enum": [ + "plan", + "default" + ] + }, + "NetworkAccess": { + "type": "string", + "enum": [ + "restricted", + "enabled" + ] + }, + "ReasoningEffort": { + "description": "See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning", + "type": "string", + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + "ReasoningSummary": { + "description": "A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries", + "oneOf": [ + { + "type": "string", + "enum": [ + "auto", + "concise", + "detailed" + ] + }, + { + "description": "Option to disable reasoning summaries.", + "type": "string", + "enum": [ + "none" + ] + } + ] + }, + "SandboxPolicy": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "dangerFullAccess" + ], + "title": "DangerFullAccessSandboxPolicyType" + } + }, + "title": "DangerFullAccessSandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "networkAccess": { + "default": false, + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "readOnly" + ], + "title": "ReadOnlySandboxPolicyType" + } + }, + "title": "ReadOnlySandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "networkAccess": { + "default": "restricted", + "allOf": [ + { + "$ref": "#/definitions/NetworkAccess" + } + ] + }, + "type": { + "type": "string", + "enum": [ + "externalSandbox" + ], + "title": "ExternalSandboxSandboxPolicyType" + } + }, + "title": "ExternalSandboxSandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "excludeSlashTmp": { + "default": false, + "type": "boolean" + }, + "excludeTmpdirEnvVar": { + "default": false, + "type": "boolean" + }, + "networkAccess": { + "default": false, + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "workspaceWrite" + ], + "title": "WorkspaceWriteSandboxPolicyType" + }, + "writableRoots": { + "default": [], + "type": "array", + "items": { + "$ref": "#/definitions/AbsolutePathBuf" + } + } + }, + "title": "WorkspaceWriteSandboxPolicy" + } + ] + }, + "Settings": { + "description": "Settings for a collaboration mode.", + "type": "object", + "required": [ + "model" + ], + "properties": { + "developer_instructions": { + "type": [ + "string", + "null" + ] + }, + "model": { + "type": "string" + }, + "reasoning_effort": { + "anyOf": [ + { + "$ref": "#/definitions/ReasoningEffort" + }, + { + "type": "null" + } + ] + } + } + }, + "WindowsWorldWritableWarningNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "WindowsWorldWritableWarningNotification", + "type": "object", + "required": [ + "extraCount", + "failedScan", + "samplePaths" + ], + "properties": { + "extraCount": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "failedScan": { + "type": "boolean" + }, + "samplePaths": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "ThreadMemoryMode": { "type": "string", "enum": [ @@ -1573,18 +1807,20 @@ "disabled" ] }, - "ThreadRealtimeSdpNotification": { + "ThreadRealtimeClosedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeSdpNotification", - "description": "EXPERIMENTAL - emitted with the remote SDP for a WebRTC realtime session.", + "title": "ThreadRealtimeClosedNotification", + "description": "EXPERIMENTAL - emitted when thread realtime transport closes.", "type": "object", "required": [ - "sdp", "threadId" ], "properties": { - "sdp": { - "type": "string" + "reason": { + "type": [ + "string", + "null" + ] }, "threadId": { "type": "string" @@ -1652,18 +1888,18 @@ } } }, - "ThreadRealtimeOutputAudioDeltaNotification": { + "ThreadRealtimeErrorNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeOutputAudioDeltaNotification", - "description": "EXPERIMENTAL - streamed output audio emitted by thread realtime.", + "title": "ThreadRealtimeErrorNotification", + "description": "EXPERIMENTAL - emitted when thread realtime encounters an error.", "type": "object", "required": [ - "audio", + "message", "threadId" ], "properties": { - "audio": { - "$ref": "#/definitions/ThreadRealtimeAudioChunk" + "message": { + "type": "string" }, "threadId": { "type": "string" @@ -1892,22 +2128,17 @@ } ] }, - "ThreadRealtimeTranscriptDoneNotification": { + "ThreadRealtimeSdpNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeTranscriptDoneNotification", - "description": "EXPERIMENTAL - final transcript text emitted when realtime completes a transcript part.", + "title": "ThreadRealtimeSdpNotification", + "description": "EXPERIMENTAL - emitted with the remote SDP for a WebRTC realtime session.", "type": "object", "required": [ - "role", - "text", + "sdp", "threadId" ], "properties": { - "role": { - "type": "string" - }, - "text": { - "description": "Final complete text for the transcript part.", + "sdp": { "type": "string" }, "threadId": { @@ -1915,23 +2146,18 @@ } } }, - "ThreadRealtimeTranscriptDeltaNotification": { + "ThreadRealtimeOutputAudioDeltaNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeTranscriptDeltaNotification", - "description": "EXPERIMENTAL - flat transcript delta emitted whenever realtime transcript text changes.", + "title": "ThreadRealtimeOutputAudioDeltaNotification", + "description": "EXPERIMENTAL - streamed output audio emitted by thread realtime.", "type": "object", "required": [ - "delta", - "role", + "audio", "threadId" ], "properties": { - "delta": { - "description": "Live transcript delta from the realtime event.", - "type": "string" - }, - "role": { - "type": "string" + "audio": { + "$ref": "#/definitions/ThreadRealtimeAudioChunk" }, "threadId": { "type": "string" @@ -2047,6 +2273,7 @@ "type": "string", "enum": [ "local", + "vertical", "workspace-directory", "shared-with-me" ] @@ -2635,196 +2862,6 @@ } } }, - "CollaborationMode": { - "description": "Collaboration mode for a Codex session.", - "type": "object", - "required": [ - "mode", - "settings" - ], - "properties": { - "mode": { - "$ref": "#/definitions/ModeKind" - }, - "settings": { - "$ref": "#/definitions/Settings" - } - } - }, - "ModeKind": { - "description": "Initial collaboration mode to use when the TUI starts.", - "type": "string", - "enum": [ - "plan", - "default" - ] - }, - "NetworkAccess": { - "type": "string", - "enum": [ - "restricted", - "enabled" - ] - }, - "ReasoningEffort": { - "description": "See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning", - "type": "string", - "enum": [ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh" - ] - }, - "ReasoningSummary": { - "description": "A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries", - "oneOf": [ - { - "type": "string", - "enum": [ - "auto", - "concise", - "detailed" - ] - }, - { - "description": "Option to disable reasoning summaries.", - "type": "string", - "enum": [ - "none" - ] - } - ] - }, - "SandboxPolicy": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "dangerFullAccess" - ], - "title": "DangerFullAccessSandboxPolicyType" - } - }, - "title": "DangerFullAccessSandboxPolicy" - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "networkAccess": { - "default": false, - "type": "boolean" - }, - "type": { - "type": "string", - "enum": [ - "readOnly" - ], - "title": "ReadOnlySandboxPolicyType" - } - }, - "title": "ReadOnlySandboxPolicy" - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "networkAccess": { - "default": "restricted", - "allOf": [ - { - "$ref": "#/definitions/NetworkAccess" - } - ] - }, - "type": { - "type": "string", - "enum": [ - "externalSandbox" - ], - "title": "ExternalSandboxSandboxPolicyType" - } - }, - "title": "ExternalSandboxSandboxPolicy" - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "excludeSlashTmp": { - "default": false, - "type": "boolean" - }, - "excludeTmpdirEnvVar": { - "default": false, - "type": "boolean" - }, - "networkAccess": { - "default": false, - "type": "boolean" - }, - "type": { - "type": "string", - "enum": [ - "workspaceWrite" - ], - "title": "WorkspaceWriteSandboxPolicyType" - }, - "writableRoots": { - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/AbsolutePathBuf" - } - } - }, - "title": "WorkspaceWriteSandboxPolicy" - } - ] - }, - "Settings": { - "description": "Settings for a collaboration mode.", - "type": "object", - "required": [ - "model" - ], - "properties": { - "developer_instructions": { - "type": [ - "string", - "null" - ] - }, - "model": { - "type": "string" - }, - "reasoning_effort": { - "anyOf": [ - { - "$ref": "#/definitions/ReasoningEffort" - }, - { - "type": "null" - } - ] - } - } - }, "TextElement": { "type": "object", "required": [ @@ -3065,11 +3102,11 @@ "outputSchema": { "description": "Optional JSON Schema used to constrain the final assistant message for this turn." }, - "summary": { - "description": "Override the reasoning summary for this turn and subsequent turns.", + "sandboxPolicy": { + "description": "Override the sandbox policy for this turn and subsequent turns.", "anyOf": [ { - "$ref": "#/definitions/ReasoningSummary" + "$ref": "#/definitions/SandboxPolicy" }, { "type": "null" @@ -3087,11 +3124,11 @@ } ] }, - "sandboxPolicy": { - "description": "Override the sandbox policy for this turn and subsequent turns.", + "summary": { + "description": "Override the reasoning summary for this turn and subsequent turns.", "anyOf": [ { - "$ref": "#/definitions/SandboxPolicy" + "$ref": "#/definitions/ReasoningSummary" }, { "type": "null" @@ -3215,17 +3252,24 @@ } ] }, - "ThreadRealtimeItemAddedNotification": { + "ThreadRealtimeTranscriptDoneNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadRealtimeItemAddedNotification", - "description": "EXPERIMENTAL - raw non-audio thread realtime item emitted by the backend.", + "title": "ThreadRealtimeTranscriptDoneNotification", + "description": "EXPERIMENTAL - final transcript text emitted when realtime completes a transcript part.", "type": "object", "required": [ - "item", + "role", + "text", "threadId" ], "properties": { - "item": true, + "role": { + "type": "string" + }, + "text": { + "description": "Final complete text for the transcript part.", + "type": "string" + }, "threadId": { "type": "string" } @@ -3269,6 +3313,45 @@ } } }, + "ThreadRealtimeTranscriptDeltaNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadRealtimeTranscriptDeltaNotification", + "description": "EXPERIMENTAL - flat transcript delta emitted whenever realtime transcript text changes.", + "type": "object", + "required": [ + "delta", + "role", + "threadId" + ], + "properties": { + "delta": { + "description": "Live transcript delta from the realtime event.", + "type": "string" + }, + "role": { + "type": "string" + }, + "threadId": { + "type": "string" + } + } + }, + "ThreadRealtimeItemAddedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadRealtimeItemAddedNotification", + "description": "EXPERIMENTAL - raw non-audio thread realtime item emitted by the backend.", + "type": "object", + "required": [ + "item", + "threadId" + ], + "properties": { + "item": true, + "threadId": { + "type": "string" + } + } + }, "ThreadRealtimeStartedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadRealtimeStartedNotification", @@ -3300,60 +3383,6 @@ "v2" ] }, - "ConfigWarningNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ConfigWarningNotification", - "type": "object", - "required": [ - "summary" - ], - "properties": { - "details": { - "description": "Optional extra guidance or error details.", - "type": [ - "string", - "null" - ] - }, - "path": { - "description": "Optional path to the config file that triggered the warning.", - "type": [ - "string", - "null" - ] - }, - "range": { - "description": "Optional range for the error location inside the config file.", - "anyOf": [ - { - "$ref": "#/definitions/TextRange" - }, - { - "type": "null" - } - ] - }, - "summary": { - "description": "Concise summary of the warning.", - "type": "string" - } - } - }, - "TextRange": { - "type": "object", - "required": [ - "end", - "start" - ], - "properties": { - "end": { - "$ref": "#/definitions/TextPosition" - }, - "start": { - "$ref": "#/definitions/TextPosition" - } - } - }, "ReviewDelivery": { "type": "string", "enum": [ @@ -3546,6 +3575,36 @@ } } }, + "PermissionProfileListParams": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PermissionProfileListParams", + "type": "object", + "properties": { + "cursor": { + "description": "Opaque pagination cursor returned by a previous call.", + "type": [ + "string", + "null" + ] + }, + "cwd": { + "description": "Optional working directory to resolve project config layers.", + "type": [ + "string", + "null" + ] + }, + "limit": { + "description": "Optional page size; defaults to the full result set.", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + } + } + }, "ExperimentalFeatureEnablementSetParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExperimentalFeatureEnablementSetParams", @@ -3563,6 +3622,60 @@ } } }, + "ConfigWarningNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigWarningNotification", + "type": "object", + "required": [ + "summary" + ], + "properties": { + "details": { + "description": "Optional extra guidance or error details.", + "type": [ + "string", + "null" + ] + }, + "path": { + "description": "Optional path to the config file that triggered the warning.", + "type": [ + "string", + "null" + ] + }, + "range": { + "description": "Optional range for the error location inside the config file.", + "anyOf": [ + { + "$ref": "#/definitions/TextRange" + }, + { + "type": "null" + } + ] + }, + "summary": { + "description": "Concise summary of the warning.", + "type": "string" + } + } + }, + "TextRange": { + "type": "object", + "required": [ + "end", + "start" + ], + "properties": { + "end": { + "$ref": "#/definitions/TextPosition" + }, + "start": { + "$ref": "#/definitions/TextPosition" + } + } + }, "TextPosition": { "type": "object", "required": [ @@ -3584,46 +3697,6 @@ } } }, - "DeprecationNoticeNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "DeprecationNoticeNotification", - "type": "object", - "required": [ - "summary" - ], - "properties": { - "details": { - "description": "Optional extra guidance, such as migration steps or rationale.", - "type": [ - "string", - "null" - ] - }, - "summary": { - "description": "Concise summary of what is deprecated.", - "type": "string" - } - } - }, - "GuardianWarningNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "GuardianWarningNotification", - "type": "object", - "required": [ - "message", - "threadId" - ], - "properties": { - "message": { - "description": "Concise guardian warning message for the user.", - "type": "string" - }, - "threadId": { - "description": "Thread target for the guardian warning.", - "type": "string" - } - } - }, "McpServerOauthLoginParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "McpServerOauthLoginParams", @@ -3945,26 +4018,6 @@ } } }, - "ActivePermissionProfile": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "extends": { - "description": "Parent profile identifier once permissions profiles support inheritance. This is currently always `null`.", - "default": null, - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Identifier from `default_permissions` or the implicit built-in default, such as `:workspace` or a user-defined `[permissions.]` profile.", - "type": "string" - } - } - }, "CommandExecTerminalSize": { "description": "PTY size in character cells for `command/exec` PTY sessions.", "type": "object", @@ -4178,6 +4231,46 @@ } } }, + "DeprecationNoticeNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "DeprecationNoticeNotification", + "type": "object", + "required": [ + "summary" + ], + "properties": { + "details": { + "description": "Optional extra guidance, such as migration steps or rationale.", + "type": [ + "string", + "null" + ] + }, + "summary": { + "description": "Concise summary of what is deprecated.", + "type": "string" + } + } + }, + "GuardianWarningNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "GuardianWarningNotification", + "type": "object", + "required": [ + "message", + "threadId" + ], + "properties": { + "message": { + "description": "Concise guardian warning message for the user.", + "type": "string" + }, + "threadId": { + "description": "Thread target for the guardian warning.", + "type": "string" + } + } + }, "WarningNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "WarningNotification", @@ -4223,41 +4316,6 @@ } } }, - "ModelVerification": { - "type": "string", - "enum": [ - "trustedAccessForCyber" - ] - }, - "ModelReroutedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ModelReroutedNotification", - "type": "object", - "required": [ - "fromModel", - "reason", - "threadId", - "toModel", - "turnId" - ], - "properties": { - "fromModel": { - "type": "string" - }, - "reason": { - "$ref": "#/definitions/ModelRerouteReason" - }, - "threadId": { - "type": "string" - }, - "toModel": { - "type": "string" - }, - "turnId": { - "type": "string" - } - } - }, "ConfigReadParams": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ConfigReadParams", @@ -4590,6 +4648,26 @@ } } }, + "ActivePermissionProfile": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "extends": { + "description": "Parent profile identifier from the selected permissions profile's `extends` setting, when present.", + "default": null, + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Identifier from `default_permissions` or the implicit built-in default, such as `:workspace` or a user-defined `[permissions.]` profile.", + "type": "string" + } + } + }, "AgentPath": { "type": "string" }, @@ -5750,6 +5828,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { @@ -6389,8 +6473,11 @@ "thread" ], "properties": { - "thread": { - "$ref": "#/definitions/Thread" + "serviceTier": { + "type": [ + "string", + "null" + ] }, "approvalPolicy": { "$ref": "#/definitions/AskForApproval" @@ -6430,11 +6517,8 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] + "thread": { + "$ref": "#/definitions/Thread" }, "sandbox": { "description": "Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance.", @@ -6460,8 +6544,11 @@ "thread" ], "properties": { - "thread": { - "$ref": "#/definitions/Thread" + "serviceTier": { + "type": [ + "string", + "null" + ] }, "approvalPolicy": { "$ref": "#/definitions/AskForApproval" @@ -6501,11 +6588,8 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] + "thread": { + "$ref": "#/definitions/Thread" }, "sandbox": { "description": "Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance.", @@ -6531,11 +6615,8 @@ "thread" ], "properties": { - "serviceTier": { - "type": [ - "string", - "null" - ] + "thread": { + "$ref": "#/definitions/Thread" }, "approvalPolicy": { "$ref": "#/definitions/AskForApproval" @@ -6575,8 +6656,11 @@ } ] }, - "thread": { - "$ref": "#/definitions/Thread" + "serviceTier": { + "type": [ + "string", + "null" + ] }, "sandbox": { "description": "Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance.", @@ -6614,25 +6698,36 @@ } } }, - "ModelRerouteReason": { + "ModelVerification": { "type": "string", "enum": [ - "highRiskCyberActivity" + "trustedAccessForCyber" ] }, - "ContextCompactedNotification": { + "ModelReroutedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ContextCompactedNotification", - "description": "Deprecated: Use `ContextCompaction` item type instead.", + "title": "ModelReroutedNotification", "type": "object", "required": [ + "fromModel", + "reason", "threadId", + "toModel", "turnId" ], "properties": { + "fromModel": { + "type": "string" + }, + "reason": { + "$ref": "#/definitions/ModelRerouteReason" + }, "threadId": { "type": "string" }, + "toModel": { + "type": "string" + }, "turnId": { "type": "string" } @@ -6689,6 +6784,86 @@ } } }, + "ThreadGoalSetResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalSetResponse", + "type": "object", + "required": [ + "goal" + ], + "properties": { + "goal": { + "$ref": "#/definitions/ThreadGoal" + } + } + }, + "ThreadGoalGetResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalGetResponse", + "type": "object", + "properties": { + "goal": { + "anyOf": [ + { + "$ref": "#/definitions/ThreadGoal" + }, + { + "type": "null" + } + ] + } + } + }, + "ThreadGoalClearResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalClearResponse", + "type": "object", + "required": [ + "cleared" + ], + "properties": { + "cleared": { + "type": "boolean" + } + } + }, + "ThreadMetadataUpdateResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadMetadataUpdateResponse", + "type": "object", + "required": [ + "thread" + ], + "properties": { + "thread": { + "$ref": "#/definitions/Thread" + } + } + }, + "ModelRerouteReason": { + "type": "string", + "enum": [ + "highRiskCyberActivity" + ] + }, + "ContextCompactedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ContextCompactedNotification", + "description": "Deprecated: Use `ContextCompaction` item type instead.", + "type": "object", + "required": [ + "threadId", + "turnId" + ], + "properties": { + "threadId": { + "type": "string" + }, + "turnId": { + "type": "string" + } + } + }, "ReasoningTextDeltaNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ReasoningTextDeltaNotification", @@ -6719,103 +6894,6 @@ } } }, - "ReasoningSummaryPartAddedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReasoningSummaryPartAddedNotification", - "type": "object", - "required": [ - "itemId", - "summaryIndex", - "threadId", - "turnId" - ], - "properties": { - "itemId": { - "type": "string" - }, - "summaryIndex": { - "type": "integer", - "format": "int64" - }, - "threadId": { - "type": "string" - }, - "turnId": { - "type": "string" - } - } - }, - "ReasoningSummaryTextDeltaNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ReasoningSummaryTextDeltaNotification", - "type": "object", - "required": [ - "delta", - "itemId", - "summaryIndex", - "threadId", - "turnId" - ], - "properties": { - "delta": { - "type": "string" - }, - "itemId": { - "type": "string" - }, - "summaryIndex": { - "type": "integer", - "format": "int64" - }, - "threadId": { - "type": "string" - }, - "turnId": { - "type": "string" - } - } - }, - "ThreadMetadataUpdateResponse": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ThreadMetadataUpdateResponse", - "type": "object", - "required": [ - "thread" - ], - "properties": { - "thread": { - "$ref": "#/definitions/Thread" - } - } - }, - "FsChangedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "FsChangedNotification", - "description": "Filesystem watch notification emitted for `fs/watch` subscribers.", - "type": "object", - "required": [ - "changedPaths", - "watchId" - ], - "properties": { - "changedPaths": { - "description": "File or directory paths associated with this event.", - "type": "array", - "items": { - "$ref": "#/definitions/AbsolutePathBuf" - } - }, - "watchId": { - "description": "Watch identifier previously provided to `fs/watch`.", - "type": "string" - } - } - }, - "ExternalAgentConfigImportCompletedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExternalAgentConfigImportCompletedNotification", - "type": "object" - }, "ThreadUnarchiveResponse": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadUnarchiveResponse", @@ -6844,31 +6922,29 @@ "title": "ThreadApproveGuardianDeniedActionResponse", "type": "object" }, - "RemoteControlStatusChangedNotification": { + "ReasoningSummaryPartAddedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "RemoteControlStatusChangedNotification", - "description": "Current remote-control connection status and remote identity exposed to clients.", + "title": "ReasoningSummaryPartAddedNotification", "type": "object", "required": [ - "installationId", - "serverName", - "status" + "itemId", + "summaryIndex", + "threadId", + "turnId" ], "properties": { - "environmentId": { - "type": [ - "string", - "null" - ] - }, - "installationId": { + "itemId": { "type": "string" }, - "serverName": { + "summaryIndex": { + "type": "integer", + "format": "int64" + }, + "threadId": { "type": "string" }, - "status": { - "$ref": "#/definitions/RemoteControlConnectionStatus" + "turnId": { + "type": "string" } } }, @@ -6957,33 +7033,56 @@ } } }, - "AppListUpdatedNotification": { + "ReasoningSummaryTextDeltaNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AppListUpdatedNotification", - "description": "EXPERIMENTAL - notification emitted when the app list changes.", + "title": "ReasoningSummaryTextDeltaNotification", "type": "object", "required": [ - "data" + "delta", + "itemId", + "summaryIndex", + "threadId", + "turnId" ], "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/AppInfo" - } + "delta": { + "type": "string" + }, + "itemId": { + "type": "string" + }, + "summaryIndex": { + "type": "integer", + "format": "int64" + }, + "threadId": { + "type": "string" + }, + "turnId": { + "type": "string" } } }, - "AccountRateLimitsUpdatedNotification": { + "FsChangedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AccountRateLimitsUpdatedNotification", + "title": "FsChangedNotification", + "description": "Filesystem watch notification emitted for `fs/watch` subscribers.", "type": "object", "required": [ - "rateLimits" + "changedPaths", + "watchId" ], "properties": { - "rateLimits": { - "$ref": "#/definitions/RateLimitSnapshot" + "changedPaths": { + "description": "File or directory paths associated with this event.", + "type": "array", + "items": { + "$ref": "#/definitions/AbsolutePathBuf" + } + }, + "watchId": { + "description": "Watch identifier previously provided to `fs/watch`.", + "type": "string" } } }, @@ -7238,6 +7337,8 @@ "postCompact", "sessionStart", "userPromptSubmit", + "subagentStart", + "subagentStop", "stop" ] }, @@ -8808,97 +8909,68 @@ "title": "TurnInterruptResponse", "type": "object" }, - "AccountUpdatedNotification": { + "ExternalAgentConfigImportCompletedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AccountUpdatedNotification", - "type": "object", - "properties": { - "authMode": { - "anyOf": [ - { - "$ref": "#/definitions/AuthMode" - }, - { - "type": "null" - } - ] - }, - "planType": { - "anyOf": [ - { - "$ref": "#/definitions/PlanType" - }, - { - "type": "null" - } - ] - } - } + "title": "ExternalAgentConfigImportCompletedNotification", + "type": "object" }, - "AuthMode": { - "description": "Authentication mode for OpenAI-backed providers.", - "oneOf": [ - { - "description": "OpenAI API key provided by the caller and stored by Codex.", - "type": "string", - "enum": [ - "apikey" - ] - }, - { - "description": "ChatGPT OAuth managed by Codex (tokens persisted and refreshed by Codex).", - "type": "string", - "enum": [ - "chatgpt" - ] - }, - { - "description": "[UNSTABLE] FOR OPENAI INTERNAL USE ONLY - DO NOT USE.\n\nChatGPT auth tokens are supplied by an external host app and are only stored in memory. Token refresh must be handled by the external host app.", - "type": "string", - "enum": [ - "chatgptAuthTokens" - ] - }, - { - "description": "Programmatic Codex auth backed by a registered Agent Identity.", - "type": "string", - "enum": [ - "agentIdentity" - ] - } - ] - }, - "McpServerStatusUpdatedNotification": { + "RemoteControlStatusChangedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "McpServerStatusUpdatedNotification", + "title": "RemoteControlStatusChangedNotification", + "description": "Current remote-control connection status and remote identity exposed to clients.", "type": "object", "required": [ - "name", + "installationId", + "serverName", "status" ], "properties": { - "error": { + "environmentId": { "type": [ "string", "null" ] }, - "name": { + "installationId": { + "type": "string" + }, + "serverName": { "type": "string" }, "status": { - "$ref": "#/definitions/McpServerStartupState" + "$ref": "#/definitions/RemoteControlConnectionStatus" } } }, - "McpServerStartupState": { - "type": "string", - "enum": [ - "starting", - "ready", - "failed", - "cancelled" - ] + "AppListUpdatedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AppListUpdatedNotification", + "description": "EXPERIMENTAL - notification emitted when the app list changes.", + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/AppInfo" + } + } + } + }, + "AccountRateLimitsUpdatedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AccountRateLimitsUpdatedNotification", + "type": "object", + "required": [ + "rateLimits" + ], + "properties": { + "rateLimits": { + "$ref": "#/definitions/RateLimitSnapshot" + } + } }, "RealtimeVoicesList": { "type": "object", @@ -8929,26 +9001,30 @@ } } }, - "McpServerOauthLoginCompletedNotification": { + "AccountUpdatedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "McpServerOauthLoginCompletedNotification", + "title": "AccountUpdatedNotification", "type": "object", - "required": [ - "name", - "success" - ], "properties": { - "error": { - "type": [ - "string", - "null" + "authMode": { + "anyOf": [ + { + "$ref": "#/definitions/AuthMode" + }, + { + "type": "null" + } ] }, - "name": { - "type": "string" - }, - "success": { - "type": "boolean" + "planType": { + "anyOf": [ + { + "$ref": "#/definitions/PlanType" + }, + { + "type": "null" + } + ] } } }, @@ -9023,6 +9099,14 @@ "defaultReasoningEffort": { "$ref": "#/definitions/ReasoningEffort" }, + "defaultServiceTier": { + "description": "Catalog default service tier id for this model, when one is configured.", + "default": null, + "type": [ + "string", + "null" + ] + }, "description": { "type": "string" }, @@ -9318,6 +9402,48 @@ } } }, + "PermissionProfileSummary": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "description": { + "description": "Optional user-facing description for display in clients.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Available permission profile identifier.", + "type": "string" + } + } + }, + "PermissionProfileListResponse": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PermissionProfileListResponse", + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/PermissionProfileSummary" + } + }, + "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" + ] + } + } + }, "ExperimentalFeatureEnablementSetResponse": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExperimentalFeatureEnablementSetResponse", @@ -9344,57 +9470,69 @@ "errored" ] }, - "McpToolCallProgressNotification": { + "AuthMode": { + "description": "Authentication mode for OpenAI-backed providers.", + "oneOf": [ + { + "description": "OpenAI API key provided by the caller and stored by Codex.", + "type": "string", + "enum": [ + "apikey" + ] + }, + { + "description": "ChatGPT OAuth managed by Codex (tokens persisted and refreshed by Codex).", + "type": "string", + "enum": [ + "chatgpt" + ] + }, + { + "description": "[UNSTABLE] FOR OPENAI INTERNAL USE ONLY - DO NOT USE.\n\nChatGPT auth tokens are supplied by an external host app and are only stored in memory. Token refresh must be handled by the external host app.", + "type": "string", + "enum": [ + "chatgptAuthTokens" + ] + }, + { + "description": "Programmatic Codex auth backed by a registered Agent Identity.", + "type": "string", + "enum": [ + "agentIdentity" + ] + } + ] + }, + "McpServerStatusUpdatedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "McpToolCallProgressNotification", + "title": "McpServerStatusUpdatedNotification", "type": "object", "required": [ - "itemId", - "message", - "threadId", - "turnId" + "name", + "status" ], "properties": { - "itemId": { + "error": { + "type": [ + "string", + "null" + ] + }, + "name": { "type": "string" }, - "message": { - "type": "string" - }, - "threadId": { - "type": "string" - }, - "turnId": { - "type": "string" + "status": { + "$ref": "#/definitions/McpServerStartupState" } } }, - "ServerRequestResolvedNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ServerRequestResolvedNotification", - "type": "object", - "required": [ - "requestId", - "threadId" - ], - "properties": { - "requestId": { - "$ref": "#/definitions/RequestId" - }, - "threadId": { - "type": "string" - } - } - }, - "RequestId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer", - "format": "int64" - } + "McpServerStartupState": { + "type": "string", + "enum": [ + "starting", + "ready", + "failed", + "cancelled" ] }, "CollaborationModeMask": { @@ -9442,26 +9580,46 @@ } } }, - "FileChangePatchUpdatedNotification": { + "McpServerOauthLoginCompletedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "FileChangePatchUpdatedNotification", + "title": "McpServerOauthLoginCompletedNotification", + "type": "object", + "required": [ + "name", + "success" + ], + "properties": { + "error": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": "string" + }, + "success": { + "type": "boolean" + } + } + }, + "McpToolCallProgressNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "McpToolCallProgressNotification", "type": "object", "required": [ - "changes", "itemId", + "message", "threadId", "turnId" ], "properties": { - "changes": { - "type": "array", - "items": { - "$ref": "#/definitions/FileUpdateChange" - } - }, "itemId": { "type": "string" }, + "message": { + "type": "string" + }, "threadId": { "type": "string" }, @@ -9470,58 +9628,20 @@ } } }, - "FileChangeOutputDeltaNotification": { + "ServerRequestResolvedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "FileChangeOutputDeltaNotification", - "description": "Deprecated legacy notification for `apply_patch` textual output.\n\nThe server no longer emits this notification.", + "title": "ServerRequestResolvedNotification", "type": "object", "required": [ - "delta", - "itemId", - "threadId", - "turnId" + "requestId", + "threadId" ], "properties": { - "delta": { - "type": "string" - }, - "itemId": { - "type": "string" + "requestId": { + "$ref": "#/definitions/RequestId" }, "threadId": { "type": "string" - }, - "turnId": { - "type": "string" - } - } - }, - "TerminalInteractionNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "TerminalInteractionNotification", - "type": "object", - "required": [ - "itemId", - "processId", - "stdin", - "threadId", - "turnId" - ], - "properties": { - "itemId": { - "type": "string" - }, - "processId": { - "type": "string" - }, - "stdin": { - "type": "string" - }, - "threadId": { - "type": "string" - }, - "turnId": { - "type": "string" } } }, @@ -10219,9 +10339,49 @@ "description": "Empty success response for `command/exec/resize`.", "type": "object" }, - "CommandExecutionOutputDeltaNotification": { + "RequestId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer", + "format": "int64" + } + ] + }, + "FileChangePatchUpdatedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CommandExecutionOutputDeltaNotification", + "title": "FileChangePatchUpdatedNotification", + "type": "object", + "required": [ + "changes", + "itemId", + "threadId", + "turnId" + ], + "properties": { + "changes": { + "type": "array", + "items": { + "$ref": "#/definitions/FileUpdateChange" + } + }, + "itemId": { + "type": "string" + }, + "threadId": { + "type": "string" + }, + "turnId": { + "type": "string" + } + } + }, + "FileChangeOutputDeltaNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "FileChangeOutputDeltaNotification", + "description": "Deprecated legacy notification for `apply_patch` textual output.\n\nThe server no longer emits this notification.", "type": "object", "required": [ "delta", @@ -10244,100 +10404,35 @@ } } }, - "ProcessExitedNotification": { + "TerminalInteractionNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ProcessExitedNotification", - "description": "Final process exit notification for `process/spawn`.", + "title": "TerminalInteractionNotification", "type": "object", "required": [ - "exitCode", - "processHandle", - "stderr", - "stderrCapReached", - "stdout", - "stdoutCapReached" + "itemId", + "processId", + "stdin", + "threadId", + "turnId" ], "properties": { - "exitCode": { - "description": "Process exit code.", - "type": "integer", - "format": "int32" - }, - "processHandle": { - "description": "Client-supplied, connection-scoped `processHandle` from `process/spawn`.", + "itemId": { "type": "string" }, - "stderr": { - "description": "Buffered stderr capture.\n\nEmpty when stderr was streamed via `process/outputDelta`.", + "processId": { "type": "string" }, - "stderrCapReached": { - "description": "Whether stderr reached `outputBytesCap`.\n\nIn streaming mode, stderr is empty and cap state is also reported on the final stderr `process/outputDelta` notification.", - "type": "boolean" - }, - "stdout": { - "description": "Buffered stdout capture.\n\nEmpty when stdout was streamed via `process/outputDelta`.", + "stdin": { "type": "string" }, - "stdoutCapReached": { - "description": "Whether stdout reached `outputBytesCap`.\n\nIn streaming mode, stdout is empty and cap state is also reported on the final stdout `process/outputDelta` notification.", - "type": "boolean" + "threadId": { + "type": "string" + }, + "turnId": { + "type": "string" } } }, - "ProcessOutputDeltaNotification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ProcessOutputDeltaNotification", - "description": "Base64-encoded output chunk emitted for a streaming `process/spawn` request.", - "type": "object", - "required": [ - "capReached", - "deltaBase64", - "processHandle", - "stream" - ], - "properties": { - "capReached": { - "description": "True on the final streamed chunk for this stream when output was truncated by `outputBytesCap`.", - "type": "boolean" - }, - "deltaBase64": { - "description": "Base64-encoded output bytes.", - "type": "string" - }, - "processHandle": { - "description": "Client-supplied, connection-scoped `processHandle` from `process/spawn`.", - "type": "string" - }, - "stream": { - "description": "Output stream this chunk belongs to.", - "allOf": [ - { - "$ref": "#/definitions/ProcessOutputStream" - } - ] - } - } - }, - "ProcessOutputStream": { - "description": "Stream label for `process/outputDelta` notifications.", - "oneOf": [ - { - "description": "stdout stream. PTY mode multiplexes terminal output here.", - "type": "string", - "enum": [ - "stdout" - ] - }, - { - "description": "stderr stream.", - "type": "string", - "enum": [ - "stderr" - ] - } - ] - }, "AnalyticsConfig": { "type": "object", "properties": { @@ -10462,6 +10557,25 @@ } } }, + "AutoCompactTokenLimitScope": { + "description": "Selects which part of the active context is charged against `model_auto_compact_token_limit`.", + "oneOf": [ + { + "description": "Count the full active context against the limit.", + "type": "string", + "enum": [ + "total" + ] + }, + { + "description": "Count sampled output and later growth after the carried window prefix.", + "type": "string", + "enum": [ + "body_after_prefix" + ] + } + ] + }, "Config": { "type": "object", "properties": { @@ -10564,6 +10678,16 @@ ], "format": "int64" }, + "model_auto_compact_token_limit_scope": { + "anyOf": [ + { + "$ref": "#/definitions/AutoCompactTokenLimitScope" + }, + { + "type": "null" + } + ] + }, "model_context_window": { "type": [ "integer", @@ -11227,6 +11351,17 @@ } } }, + "ComputerUseRequirements": { + "type": "object", + "properties": { + "allowLockedComputerUse": { + "type": [ + "boolean", + "null" + ] + } + } + }, "ConfigRequirements": { "type": "object", "properties": { @@ -11254,6 +11389,15 @@ "type": "boolean" } }, + "allowedPermissions": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, "allowedSandboxModes": { "type": [ "array", @@ -11272,6 +11416,16 @@ "$ref": "#/definitions/WebSearchMode" } }, + "computerUse": { + "anyOf": [ + { + "$ref": "#/definitions/ComputerUseRequirements" + }, + { + "type": "null" + } + ] + }, "enforceResidency": { "anyOf": [ { @@ -11394,6 +11548,8 @@ "PreToolUse", "SessionStart", "Stop", + "SubagentStart", + "SubagentStop", "UserPromptSubmit" ], "properties": { @@ -11439,6 +11595,18 @@ "$ref": "#/definitions/ConfiguredHookMatcherGroup" } }, + "SubagentStart": { + "type": "array", + "items": { + "$ref": "#/definitions/ConfiguredHookMatcherGroup" + } + }, + "SubagentStop": { + "type": "array", + "items": { + "$ref": "#/definitions/ConfiguredHookMatcherGroup" + } + }, "UserPromptSubmit": { "type": "array", "items": { @@ -11843,6 +12011,104 @@ } } }, + "ThreadSettings": { + "type": "object", + "required": [ + "approvalPolicy", + "approvalsReviewer", + "collaborationMode", + "cwd", + "model", + "modelProvider", + "sandboxPolicy" + ], + "properties": { + "activePermissionProfile": { + "anyOf": [ + { + "$ref": "#/definitions/ActivePermissionProfile" + }, + { + "type": "null" + } + ] + }, + "approvalPolicy": { + "$ref": "#/definitions/AskForApproval" + }, + "approvalsReviewer": { + "$ref": "#/definitions/ApprovalsReviewer" + }, + "collaborationMode": { + "$ref": "#/definitions/CollaborationMode" + }, + "cwd": { + "$ref": "#/definitions/AbsolutePathBuf" + }, + "effort": { + "anyOf": [ + { + "$ref": "#/definitions/ReasoningEffort" + }, + { + "type": "null" + } + ] + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "personality": { + "anyOf": [ + { + "$ref": "#/definitions/Personality" + }, + { + "type": "null" + } + ] + }, + "sandboxPolicy": { + "$ref": "#/definitions/SandboxPolicy" + }, + "serviceTier": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "anyOf": [ + { + "$ref": "#/definitions/ReasoningSummary" + }, + { + "type": "null" + } + ] + } + } + }, + "ThreadSettingsUpdatedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadSettingsUpdatedNotification", + "type": "object", + "required": [ + "threadId", + "threadSettings" + ], + "properties": { + "threadId": { + "type": "string" + }, + "threadSettings": { + "$ref": "#/definitions/ThreadSettings" + } + } + }, "ThreadTokenUsage": { "type": "object", "required": [ @@ -12287,7 +12553,7 @@ "enum": [ "read", "write", - "none" + "deny" ] }, "FileSystemPath": { @@ -13042,52 +13308,121 @@ } } }, - "InitializeCapabilities": { - "description": "Client-declared capabilities negotiated during initialize.", + "ProcessOutputStream": { + "description": "Stream label for `process/outputDelta` notifications.", + "oneOf": [ + { + "description": "stdout stream. PTY mode multiplexes terminal output here.", + "type": "string", + "enum": [ + "stdout" + ] + }, + { + "description": "stderr stream.", + "type": "string", + "enum": [ + "stderr" + ] + } + ] + }, + "ProcessOutputDeltaNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ProcessOutputDeltaNotification", + "description": "Base64-encoded output chunk emitted for a streaming `process/spawn` request.", "type": "object", + "required": [ + "capReached", + "deltaBase64", + "processHandle", + "stream" + ], "properties": { - "experimentalApi": { - "description": "Opt into receiving experimental API methods and fields.", - "default": false, + "capReached": { + "description": "True on the final streamed chunk for this stream when output was truncated by `outputBytesCap`.", "type": "boolean" }, - "optOutNotificationMethods": { - "description": "Exact notification method names that should be suppressed for this connection (for example `thread/started`).", - "type": [ - "array", - "null" - ], - "items": { - "type": "string" - } + "deltaBase64": { + "description": "Base64-encoded output bytes.", + "type": "string" }, - "requestAttestation": { - "description": "Opt into `attestation/generate` requests for upstream `x-oai-attestation`.", - "default": false, + "processHandle": { + "description": "Client-supplied, connection-scoped `processHandle` from `process/spawn`.", + "type": "string" + }, + "stream": { + "description": "Output stream this chunk belongs to.", + "allOf": [ + { + "$ref": "#/definitions/ProcessOutputStream" + } + ] + } + } + }, + "ProcessExitedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ProcessExitedNotification", + "description": "Final process exit notification for `process/spawn`.", + "type": "object", + "required": [ + "exitCode", + "processHandle", + "stderr", + "stderrCapReached", + "stdout", + "stdoutCapReached" + ], + "properties": { + "exitCode": { + "description": "Process exit code.", + "type": "integer", + "format": "int32" + }, + "processHandle": { + "description": "Client-supplied, connection-scoped `processHandle` from `process/spawn`.", + "type": "string" + }, + "stderr": { + "description": "Buffered stderr capture.\n\nEmpty when stderr was streamed via `process/outputDelta`.", + "type": "string" + }, + "stderrCapReached": { + "description": "Whether stderr reached `outputBytesCap`.\n\nIn streaming mode, stderr is empty and cap state is also reported on the final stderr `process/outputDelta` notification.", + "type": "boolean" + }, + "stdout": { + "description": "Buffered stdout capture.\n\nEmpty when stdout was streamed via `process/outputDelta`.", + "type": "string" + }, + "stdoutCapReached": { + "description": "Whether stdout reached `outputBytesCap`.\n\nIn streaming mode, stdout is empty and cap state is also reported on the final stdout `process/outputDelta` notification.", "type": "boolean" } } }, - "FuzzyFileSearchSessionUpdatedNotification": { + "CommandExecutionOutputDeltaNotification": { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "FuzzyFileSearchSessionUpdatedNotification", + "title": "CommandExecutionOutputDeltaNotification", "type": "object", "required": [ - "files", - "query", - "sessionId" + "delta", + "itemId", + "threadId", + "turnId" ], "properties": { - "files": { - "type": "array", - "items": { - "$ref": "#/definitions/FuzzyFileSearchResult" - } - }, - "query": { + "delta": { "type": "string" }, - "sessionId": { + "itemId": { + "type": "string" + }, + "threadId": { + "type": "string" + }, + "turnId": { "type": "string" } } @@ -13125,6 +13460,32 @@ "directory" ] }, + "InitializeCapabilities": { + "description": "Client-declared capabilities negotiated during initialize.", + "type": "object", + "properties": { + "experimentalApi": { + "description": "Opt into receiving experimental API methods and fields.", + "default": false, + "type": "boolean" + }, + "optOutNotificationMethods": { + "description": "Exact notification method names that should be suppressed for this connection (for example `thread/started`).", + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, + "requestAttestation": { + "description": "Opt into `attestation/generate` requests for upstream `x-oai-attestation`.", + "default": false, + "type": "boolean" + } + } + }, "ClientInfo": { "type": "object", "required": [ @@ -13146,29 +13507,6 @@ } } }, - "InitializeParams": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InitializeParams", - "type": "object", - "required": [ - "clientInfo" - ], - "properties": { - "capabilities": { - "anyOf": [ - { - "$ref": "#/definitions/InitializeCapabilities" - }, - { - "type": "null" - } - ] - }, - "clientInfo": { - "$ref": "#/definitions/ClientInfo" - } - } - }, "FuzzyFileSearchResult": { "description": "Superset of [`codex_file_search::FileMatch`]", "type": "object", @@ -13223,6 +13561,53 @@ } } }, + "FuzzyFileSearchSessionUpdatedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "FuzzyFileSearchSessionUpdatedNotification", + "type": "object", + "required": [ + "files", + "query", + "sessionId" + ], + "properties": { + "files": { + "type": "array", + "items": { + "$ref": "#/definitions/FuzzyFileSearchResult" + } + }, + "query": { + "type": "string" + }, + "sessionId": { + "type": "string" + } + } + }, + "InitializeParams": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InitializeParams", + "type": "object", + "required": [ + "clientInfo" + ], + "properties": { + "capabilities": { + "anyOf": [ + { + "$ref": "#/definitions/InitializeCapabilities" + }, + { + "type": "null" + } + ] + }, + "clientInfo": { + "$ref": "#/definitions/ClientInfo" + } + } + }, "ClientRequest": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ClientRequest", @@ -13397,6 +13782,78 @@ }, "title": "Thread/name/setRequest" }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "thread/goal/set" + ], + "title": "Thread/goal/setRequestMethod" + }, + "params": { + "$ref": "#/definitions/ThreadGoalSetParams" + } + }, + "title": "Thread/goal/setRequest" + }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "thread/goal/get" + ], + "title": "Thread/goal/getRequestMethod" + }, + "params": { + "$ref": "#/definitions/ThreadGoalGetParams" + } + }, + "title": "Thread/goal/getRequest" + }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "thread/goal/clear" + ], + "title": "Thread/goal/clearRequestMethod" + }, + "params": { + "$ref": "#/definitions/ThreadGoalClearParams" + } + }, + "title": "Thread/goal/clearRequest" + }, { "type": "object", "required": [ @@ -14454,6 +14911,30 @@ }, "title": "ExperimentalFeature/listRequest" }, + { + "type": "object", + "required": [ + "id", + "method", + "params" + ], + "properties": { + "id": { + "$ref": "#/definitions/RequestId" + }, + "method": { + "type": "string", + "enum": [ + "permissionProfile/list" + ], + "title": "PermissionProfile/listRequestMethod" + }, + "params": { + "$ref": "#/definitions/PermissionProfileListParams" + } + }, + "title": "PermissionProfile/listRequest" + }, { "type": "object", "required": [ @@ -15285,6 +15766,26 @@ }, "title": "Thread/goal/clearedNotification" }, + { + "type": "object", + "required": [ + "method", + "params" + ], + "properties": { + "method": { + "type": "string", + "enum": [ + "thread/settings/updated" + ], + "title": "Thread/settings/updatedNotificationMethod" + }, + "params": { + "$ref": "#/definitions/ThreadSettingsUpdatedNotification" + } + }, + "title": "Thread/settings/updatedNotification" + }, { "type": "object", "required": [ diff --git a/schemas/v2/CommandExecParams.json b/schemas/v2/CommandExecParams.json index a2edc43..12aedb9 100644 --- a/schemas/v2/CommandExecParams.json +++ b/schemas/v2/CommandExecParams.json @@ -106,26 +106,6 @@ "description": "A path that is guaranteed to be absolute and normalized (though it is not guaranteed to be canonicalized or exist on the filesystem).\n\nIMPORTANT: When deserializing an `AbsolutePathBuf`, a base path must be set using [AbsolutePathBufGuard::new]. If no base path is set, the deserialization will fail unless the path being deserialized is already absolute.", "type": "string" }, - "ActivePermissionProfile": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "extends": { - "description": "Parent profile identifier once permissions profiles support inheritance. This is currently always `null`.", - "default": null, - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Identifier from `default_permissions` or the implicit built-in default, such as `:workspace` or a user-defined `[permissions.]` profile.", - "type": "string" - } - } - }, "CommandExecTerminalSize": { "description": "PTY size in character cells for `command/exec` PTY sessions.", "type": "object", diff --git a/schemas/v2/ConfigReadResponse.json b/schemas/v2/ConfigReadResponse.json index ae3c397..60c2ad4 100644 --- a/schemas/v2/ConfigReadResponse.json +++ b/schemas/v2/ConfigReadResponse.json @@ -214,6 +214,25 @@ } ] }, + "AutoCompactTokenLimitScope": { + "description": "Selects which part of the active context is charged against `model_auto_compact_token_limit`.", + "oneOf": [ + { + "description": "Count the full active context against the limit.", + "type": "string", + "enum": [ + "total" + ] + }, + { + "description": "Count sampled output and later growth after the carried window prefix.", + "type": "string", + "enum": [ + "body_after_prefix" + ] + } + ] + }, "Config": { "type": "object", "properties": { @@ -316,6 +335,16 @@ ], "format": "int64" }, + "model_auto_compact_token_limit_scope": { + "anyOf": [ + { + "$ref": "#/definitions/AutoCompactTokenLimitScope" + }, + { + "type": "null" + } + ] + }, "model_context_window": { "type": [ "integer", diff --git a/schemas/v2/ConfigRequirementsReadResponse.json b/schemas/v2/ConfigRequirementsReadResponse.json index c630b1c..a43d2e8 100644 --- a/schemas/v2/ConfigRequirementsReadResponse.json +++ b/schemas/v2/ConfigRequirementsReadResponse.json @@ -75,6 +75,17 @@ } ] }, + "ComputerUseRequirements": { + "type": "object", + "properties": { + "allowLockedComputerUse": { + "type": [ + "boolean", + "null" + ] + } + } + }, "ConfigRequirements": { "type": "object", "properties": { @@ -102,6 +113,15 @@ "type": "boolean" } }, + "allowedPermissions": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, "allowedSandboxModes": { "type": [ "array", @@ -120,6 +140,16 @@ "$ref": "#/definitions/WebSearchMode" } }, + "computerUse": { + "anyOf": [ + { + "$ref": "#/definitions/ComputerUseRequirements" + }, + { + "type": "null" + } + ] + }, "enforceResidency": { "anyOf": [ { @@ -242,6 +272,8 @@ "PreToolUse", "SessionStart", "Stop", + "SubagentStart", + "SubagentStop", "UserPromptSubmit" ], "properties": { @@ -287,6 +319,18 @@ "$ref": "#/definitions/ConfiguredHookMatcherGroup" } }, + "SubagentStart": { + "type": "array", + "items": { + "$ref": "#/definitions/ConfiguredHookMatcherGroup" + } + }, + "SubagentStop": { + "type": "array", + "items": { + "$ref": "#/definitions/ConfiguredHookMatcherGroup" + } + }, "UserPromptSubmit": { "type": "array", "items": { diff --git a/schemas/v2/HookCompletedNotification.json b/schemas/v2/HookCompletedNotification.json index ff57009..a96edc2 100644 --- a/schemas/v2/HookCompletedNotification.json +++ b/schemas/v2/HookCompletedNotification.json @@ -35,6 +35,8 @@ "postCompact", "sessionStart", "userPromptSubmit", + "subagentStart", + "subagentStop", "stop" ] }, diff --git a/schemas/v2/HookStartedNotification.json b/schemas/v2/HookStartedNotification.json index 67a9556..ba17617 100644 --- a/schemas/v2/HookStartedNotification.json +++ b/schemas/v2/HookStartedNotification.json @@ -35,6 +35,8 @@ "postCompact", "sessionStart", "userPromptSubmit", + "subagentStart", + "subagentStop", "stop" ] }, diff --git a/schemas/v2/HooksListResponse.json b/schemas/v2/HooksListResponse.json index 77372f2..8a9d4ab 100644 --- a/schemas/v2/HooksListResponse.json +++ b/schemas/v2/HooksListResponse.json @@ -43,6 +43,8 @@ "postCompact", "sessionStart", "userPromptSubmit", + "subagentStart", + "subagentStop", "stop" ] }, diff --git a/schemas/v2/ItemCompletedNotification.json b/schemas/v2/ItemCompletedNotification.json index aec6ec7..ec79969 100644 --- a/schemas/v2/ItemCompletedNotification.json +++ b/schemas/v2/ItemCompletedNotification.json @@ -833,6 +833,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ItemGuardianApprovalReviewCompletedNotification.json b/schemas/v2/ItemGuardianApprovalReviewCompletedNotification.json index ab3a22e..686dba7 100644 --- a/schemas/v2/ItemGuardianApprovalReviewCompletedNotification.json +++ b/schemas/v2/ItemGuardianApprovalReviewCompletedNotification.json @@ -121,7 +121,7 @@ "enum": [ "read", "write", - "none" + "deny" ] }, "FileSystemPath": { diff --git a/schemas/v2/ItemGuardianApprovalReviewStartedNotification.json b/schemas/v2/ItemGuardianApprovalReviewStartedNotification.json index a3d4723..1014307 100644 --- a/schemas/v2/ItemGuardianApprovalReviewStartedNotification.json +++ b/schemas/v2/ItemGuardianApprovalReviewStartedNotification.json @@ -104,7 +104,7 @@ "enum": [ "read", "write", - "none" + "deny" ] }, "FileSystemPath": { diff --git a/schemas/v2/ItemStartedNotification.json b/schemas/v2/ItemStartedNotification.json index 65b0d3c..38c0dd7 100644 --- a/schemas/v2/ItemStartedNotification.json +++ b/schemas/v2/ItemStartedNotification.json @@ -833,6 +833,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ModelListResponse.json b/schemas/v2/ModelListResponse.json index 9d67a1a..ec873b0 100644 --- a/schemas/v2/ModelListResponse.json +++ b/schemas/v2/ModelListResponse.json @@ -74,6 +74,14 @@ "defaultReasoningEffort": { "$ref": "#/definitions/ReasoningEffort" }, + "defaultServiceTier": { + "description": "Catalog default service tier id for this model, when one is configured.", + "default": null, + "type": [ + "string", + "null" + ] + }, "description": { "type": "string" }, diff --git a/schemas/v2/PermissionProfileListParams.json b/schemas/v2/PermissionProfileListParams.json new file mode 100644 index 0000000..18d3e65 --- /dev/null +++ b/schemas/v2/PermissionProfileListParams.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PermissionProfileListParams", + "type": "object", + "properties": { + "cursor": { + "description": "Opaque pagination cursor returned by a previous call.", + "type": [ + "string", + "null" + ] + }, + "cwd": { + "description": "Optional working directory to resolve project config layers.", + "type": [ + "string", + "null" + ] + }, + "limit": { + "description": "Optional page size; defaults to the full result set.", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + } + } +} \ No newline at end of file diff --git a/schemas/v2/PermissionProfileListResponse.json b/schemas/v2/PermissionProfileListResponse.json new file mode 100644 index 0000000..50cde49 --- /dev/null +++ b/schemas/v2/PermissionProfileListResponse.json @@ -0,0 +1,44 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PermissionProfileListResponse", + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/PermissionProfileSummary" + } + }, + "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" + ] + } + }, + "definitions": { + "PermissionProfileSummary": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "description": { + "description": "Optional user-facing description for display in clients.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Available permission profile identifier.", + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/schemas/v2/PluginListParams.json b/schemas/v2/PluginListParams.json index 3012ccd..58ee564 100644 --- a/schemas/v2/PluginListParams.json +++ b/schemas/v2/PluginListParams.json @@ -33,6 +33,7 @@ "type": "string", "enum": [ "local", + "vertical", "workspace-directory", "shared-with-me" ] diff --git a/schemas/v2/PluginReadResponse.json b/schemas/v2/PluginReadResponse.json index a45edd5..ae6f01d 100644 --- a/schemas/v2/PluginReadResponse.json +++ b/schemas/v2/PluginReadResponse.json @@ -57,6 +57,8 @@ "postCompact", "sessionStart", "userPromptSubmit", + "subagentStart", + "subagentStop", "stop" ] }, diff --git a/schemas/v2/RawResponseItemCompletedNotification.json b/schemas/v2/RawResponseItemCompletedNotification.json index 997f18a..dc35459 100644 --- a/schemas/v2/RawResponseItemCompletedNotification.json +++ b/schemas/v2/RawResponseItemCompletedNotification.json @@ -158,6 +158,26 @@ } }, "title": "InputImageFunctionCallOutputContentItem" + }, + { + "type": "object", + "required": [ + "encrypted_content", + "type" + ], + "properties": { + "encrypted_content": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "encrypted_content" + ], + "title": "EncryptedContentFunctionCallOutputContentItemType" + } + }, + "title": "EncryptedContentFunctionCallOutputContentItem" } ] }, diff --git a/schemas/v2/ReviewStartResponse.json b/schemas/v2/ReviewStartResponse.json index c1dcc2d..4f96e52 100644 --- a/schemas/v2/ReviewStartResponse.json +++ b/schemas/v2/ReviewStartResponse.json @@ -968,6 +968,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ThreadForkParams.json b/schemas/v2/ThreadForkParams.json index 533918d..a7ff4ea 100644 --- a/schemas/v2/ThreadForkParams.json +++ b/schemas/v2/ThreadForkParams.json @@ -1,7 +1,7 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadForkParams", - "description": "There are two ways to fork a thread: 1. By thread_id: load the thread from disk by thread_id and fork it into a new thread. 2. By path: load the thread from disk by path and fork it into a new thread.\n\nIf using path, the thread_id param will be ignored.\n\nPrefer using thread_id whenever possible.", + "description": "There are two ways to fork a thread: 1. By thread_id: load the thread from disk by thread_id and fork it into a new thread. 2. By path: load the thread from disk by path and fork it into a new thread.\n\nIf using a non-empty path, the thread_id param will be ignored. Empty string path values are treated as absent.\n\nPrefer using thread_id whenever possible.", "type": "object", "required": [ "threadId" @@ -56,11 +56,10 @@ "ephemeral": { "type": "boolean" }, - "threadSource": { - "description": "Optional client-supplied analytics source classification for this forked thread.", + "sandbox": { "anyOf": [ { - "$ref": "#/definitions/ThreadSource" + "$ref": "#/definitions/SandboxMode" }, { "type": "null" @@ -80,23 +79,24 @@ "null" ] }, - "sandbox": { - "anyOf": [ - { - "$ref": "#/definitions/SandboxMode" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "threadId": { "type": "string" }, - "serviceTier": { - "type": [ - "string", - "null" + "threadSource": { + "description": "Optional client-supplied analytics source classification for this forked thread.", + "anyOf": [ + { + "$ref": "#/definitions/ThreadSource" + }, + { + "type": "null" + } ] } }, diff --git a/schemas/v2/ThreadForkResponse.json b/schemas/v2/ThreadForkResponse.json index 8ab1348..991bd84 100644 --- a/schemas/v2/ThreadForkResponse.json +++ b/schemas/v2/ThreadForkResponse.json @@ -12,11 +12,8 @@ "thread" ], "properties": { - "serviceTier": { - "type": [ - "string", - "null" - ] + "thread": { + "$ref": "#/definitions/Thread" }, "approvalPolicy": { "$ref": "#/definitions/AskForApproval" @@ -56,8 +53,11 @@ } ] }, - "thread": { - "$ref": "#/definitions/Thread" + "serviceTier": { + "type": [ + "string", + "null" + ] }, "sandbox": { "description": "Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance.", @@ -80,7 +80,7 @@ ], "properties": { "extends": { - "description": "Parent profile identifier once permissions profiles support inheritance. This is currently always `null`.", + "description": "Parent profile identifier from the selected permissions profile's `extends` setting, when present.", "default": null, "type": [ "string", @@ -1498,6 +1498,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ThreadGoalClearParams.json b/schemas/v2/ThreadGoalClearParams.json new file mode 100644 index 0000000..3ddb666 --- /dev/null +++ b/schemas/v2/ThreadGoalClearParams.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalClearParams", + "type": "object", + "required": [ + "threadId" + ], + "properties": { + "threadId": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/schemas/v2/ThreadGoalClearResponse.json b/schemas/v2/ThreadGoalClearResponse.json new file mode 100644 index 0000000..5bdb02a --- /dev/null +++ b/schemas/v2/ThreadGoalClearResponse.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalClearResponse", + "type": "object", + "required": [ + "cleared" + ], + "properties": { + "cleared": { + "type": "boolean" + } + } +} \ No newline at end of file diff --git a/schemas/v2/ThreadGoalGetParams.json b/schemas/v2/ThreadGoalGetParams.json new file mode 100644 index 0000000..6d6ac5a --- /dev/null +++ b/schemas/v2/ThreadGoalGetParams.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalGetParams", + "type": "object", + "required": [ + "threadId" + ], + "properties": { + "threadId": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/schemas/v2/ThreadGoalGetResponse.json b/schemas/v2/ThreadGoalGetResponse.json new file mode 100644 index 0000000..59fe746 --- /dev/null +++ b/schemas/v2/ThreadGoalGetResponse.json @@ -0,0 +1,76 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalGetResponse", + "type": "object", + "properties": { + "goal": { + "anyOf": [ + { + "$ref": "#/definitions/ThreadGoal" + }, + { + "type": "null" + } + ] + } + }, + "definitions": { + "ThreadGoal": { + "type": "object", + "required": [ + "createdAt", + "objective", + "status", + "threadId", + "timeUsedSeconds", + "tokensUsed", + "updatedAt" + ], + "properties": { + "createdAt": { + "type": "integer", + "format": "int64" + }, + "objective": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/ThreadGoalStatus" + }, + "threadId": { + "type": "string" + }, + "timeUsedSeconds": { + "type": "integer", + "format": "int64" + }, + "tokenBudget": { + "type": [ + "integer", + "null" + ], + "format": "int64" + }, + "tokensUsed": { + "type": "integer", + "format": "int64" + }, + "updatedAt": { + "type": "integer", + "format": "int64" + } + } + }, + "ThreadGoalStatus": { + "type": "string", + "enum": [ + "active", + "paused", + "blocked", + "usageLimited", + "budgetLimited", + "complete" + ] + } + } +} \ No newline at end of file diff --git a/schemas/v2/ThreadGoalSetParams.json b/schemas/v2/ThreadGoalSetParams.json new file mode 100644 index 0000000..73bc484 --- /dev/null +++ b/schemas/v2/ThreadGoalSetParams.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalSetParams", + "type": "object", + "required": [ + "threadId" + ], + "properties": { + "objective": { + "type": [ + "string", + "null" + ] + }, + "status": { + "anyOf": [ + { + "$ref": "#/definitions/ThreadGoalStatus" + }, + { + "type": "null" + } + ] + }, + "threadId": { + "type": "string" + }, + "tokenBudget": { + "type": [ + "integer", + "null" + ], + "format": "int64" + } + }, + "definitions": { + "ThreadGoalStatus": { + "type": "string", + "enum": [ + "active", + "paused", + "blocked", + "usageLimited", + "budgetLimited", + "complete" + ] + } + } +} \ No newline at end of file diff --git a/schemas/v2/ThreadGoalSetResponse.json b/schemas/v2/ThreadGoalSetResponse.json new file mode 100644 index 0000000..c89cd49 --- /dev/null +++ b/schemas/v2/ThreadGoalSetResponse.json @@ -0,0 +1,72 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadGoalSetResponse", + "type": "object", + "required": [ + "goal" + ], + "properties": { + "goal": { + "$ref": "#/definitions/ThreadGoal" + } + }, + "definitions": { + "ThreadGoal": { + "type": "object", + "required": [ + "createdAt", + "objective", + "status", + "threadId", + "timeUsedSeconds", + "tokensUsed", + "updatedAt" + ], + "properties": { + "createdAt": { + "type": "integer", + "format": "int64" + }, + "objective": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/ThreadGoalStatus" + }, + "threadId": { + "type": "string" + }, + "timeUsedSeconds": { + "type": "integer", + "format": "int64" + }, + "tokenBudget": { + "type": [ + "integer", + "null" + ], + "format": "int64" + }, + "tokensUsed": { + "type": "integer", + "format": "int64" + }, + "updatedAt": { + "type": "integer", + "format": "int64" + } + } + }, + "ThreadGoalStatus": { + "type": "string", + "enum": [ + "active", + "paused", + "blocked", + "usageLimited", + "budgetLimited", + "complete" + ] + } + } +} \ No newline at end of file diff --git a/schemas/v2/ThreadListResponse.json b/schemas/v2/ThreadListResponse.json index 36df4f9..fa1f70e 100644 --- a/schemas/v2/ThreadListResponse.json +++ b/schemas/v2/ThreadListResponse.json @@ -1272,6 +1272,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ThreadMetadataUpdateResponse.json b/schemas/v2/ThreadMetadataUpdateResponse.json index e9a63d3..a3f99f3 100644 --- a/schemas/v2/ThreadMetadataUpdateResponse.json +++ b/schemas/v2/ThreadMetadataUpdateResponse.json @@ -1255,6 +1255,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ThreadReadResponse.json b/schemas/v2/ThreadReadResponse.json index 03f087c..86abebe 100644 --- a/schemas/v2/ThreadReadResponse.json +++ b/schemas/v2/ThreadReadResponse.json @@ -1255,6 +1255,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ThreadResumeParams.json b/schemas/v2/ThreadResumeParams.json index 4d1aade..c233f0a 100644 --- a/schemas/v2/ThreadResumeParams.json +++ b/schemas/v2/ThreadResumeParams.json @@ -1,7 +1,7 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ThreadResumeParams", - "description": "There are three ways to resume a thread: 1. By thread_id: load the thread from disk by thread_id and resume it. 2. By history: instantiate the thread from memory and resume it. 3. By path: load the thread from disk by path and resume it.\n\nThe precedence is: history > path > thread_id. If using history or path, the thread_id param will be ignored.\n\nPrefer using thread_id whenever possible.", + "description": "There are three ways to resume a thread: 1. By thread_id: load the thread from disk by thread_id and resume it. 2. By history: instantiate the thread from memory and resume it. 3. By path: load the thread from disk by path and resume it.\n\nFor non-running threads, the precedence is: history > non-empty path > thread_id. If using history or a non-empty path for a non-running thread, the thread_id param will be ignored.\n\nIf thread_id identifies a running thread, app-server rejoins that thread and treats a non-empty path as a consistency check against the active rollout path. Empty string path values are treated as absent.\n\nPrefer using thread_id whenever possible.", "type": "object", "required": [ "threadId" @@ -53,6 +53,16 @@ "null" ] }, + "personality": { + "anyOf": [ + { + "$ref": "#/definitions/Personality" + }, + { + "type": "null" + } + ] + }, "sandbox": { "anyOf": [ { @@ -63,12 +73,6 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] - }, "model": { "description": "Configuration overrides for the resumed thread, if any.", "type": [ @@ -82,14 +86,10 @@ "null" ] }, - "personality": { - "anyOf": [ - { - "$ref": "#/definitions/Personality" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "threadId": { @@ -295,6 +295,26 @@ } }, "title": "InputImageFunctionCallOutputContentItem" + }, + { + "type": "object", + "required": [ + "encrypted_content", + "type" + ], + "properties": { + "encrypted_content": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "encrypted_content" + ], + "title": "EncryptedContentFunctionCallOutputContentItemType" + } + }, + "title": "EncryptedContentFunctionCallOutputContentItem" } ] }, diff --git a/schemas/v2/ThreadResumeResponse.json b/schemas/v2/ThreadResumeResponse.json index 811e092..022a873 100644 --- a/schemas/v2/ThreadResumeResponse.json +++ b/schemas/v2/ThreadResumeResponse.json @@ -12,8 +12,11 @@ "thread" ], "properties": { - "thread": { - "$ref": "#/definitions/Thread" + "serviceTier": { + "type": [ + "string", + "null" + ] }, "approvalPolicy": { "$ref": "#/definitions/AskForApproval" @@ -53,11 +56,8 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] + "thread": { + "$ref": "#/definitions/Thread" }, "sandbox": { "description": "Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance.", @@ -80,7 +80,7 @@ ], "properties": { "extends": { - "description": "Parent profile identifier once permissions profiles support inheritance. This is currently always `null`.", + "description": "Parent profile identifier from the selected permissions profile's `extends` setting, when present.", "default": null, "type": [ "string", @@ -1498,6 +1498,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ThreadRollbackResponse.json b/schemas/v2/ThreadRollbackResponse.json index 474c8f2..dc37812 100644 --- a/schemas/v2/ThreadRollbackResponse.json +++ b/schemas/v2/ThreadRollbackResponse.json @@ -1260,6 +1260,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ThreadSettingsUpdatedNotification.json b/schemas/v2/ThreadSettingsUpdatedNotification.json new file mode 100644 index 0000000..2459779 --- /dev/null +++ b/schemas/v2/ThreadSettingsUpdatedNotification.json @@ -0,0 +1,381 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ThreadSettingsUpdatedNotification", + "type": "object", + "required": [ + "threadId", + "threadSettings" + ], + "properties": { + "threadId": { + "type": "string" + }, + "threadSettings": { + "$ref": "#/definitions/ThreadSettings" + } + }, + "definitions": { + "AbsolutePathBuf": { + "description": "A path that is guaranteed to be absolute and normalized (though it is not guaranteed to be canonicalized or exist on the filesystem).\n\nIMPORTANT: When deserializing an `AbsolutePathBuf`, a base path must be set using [AbsolutePathBufGuard::new]. If no base path is set, the deserialization will fail unless the path being deserialized is already absolute.", + "type": "string" + }, + "ActivePermissionProfile": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "extends": { + "description": "Parent profile identifier from the selected permissions profile's `extends` setting, when present.", + "default": null, + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Identifier from `default_permissions` or the implicit built-in default, such as `:workspace` or a user-defined `[permissions.]` profile.", + "type": "string" + } + } + }, + "ApprovalsReviewer": { + "description": "Configures who approval requests are routed to for review. Examples include sandbox escapes, blocked network access, MCP approval prompts, and ARC escalations. Defaults to `user`. `auto_review` uses a carefully prompted subagent to gather relevant context and apply a risk-based decision framework before approving or denying the request. The legacy value `guardian_subagent` is accepted for compatibility.", + "type": "string", + "enum": [ + "user", + "auto_review", + "guardian_subagent" + ] + }, + "AskForApproval": { + "oneOf": [ + { + "type": "string", + "enum": [ + "untrusted", + "on-failure", + "on-request", + "never" + ] + }, + { + "type": "object", + "required": [ + "granular" + ], + "properties": { + "granular": { + "type": "object", + "required": [ + "mcp_elicitations", + "rules", + "sandbox_approval" + ], + "properties": { + "mcp_elicitations": { + "type": "boolean" + }, + "request_permissions": { + "default": false, + "type": "boolean" + }, + "rules": { + "type": "boolean" + }, + "sandbox_approval": { + "type": "boolean" + }, + "skill_approval": { + "default": false, + "type": "boolean" + } + } + } + }, + "additionalProperties": false, + "title": "GranularAskForApproval" + } + ] + }, + "CollaborationMode": { + "description": "Collaboration mode for a Codex session.", + "type": "object", + "required": [ + "mode", + "settings" + ], + "properties": { + "mode": { + "$ref": "#/definitions/ModeKind" + }, + "settings": { + "$ref": "#/definitions/Settings" + } + } + }, + "ModeKind": { + "description": "Initial collaboration mode to use when the TUI starts.", + "type": "string", + "enum": [ + "plan", + "default" + ] + }, + "NetworkAccess": { + "type": "string", + "enum": [ + "restricted", + "enabled" + ] + }, + "Personality": { + "type": "string", + "enum": [ + "none", + "friendly", + "pragmatic" + ] + }, + "ReasoningEffort": { + "description": "See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning", + "type": "string", + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + "ReasoningSummary": { + "description": "A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries", + "oneOf": [ + { + "type": "string", + "enum": [ + "auto", + "concise", + "detailed" + ] + }, + { + "description": "Option to disable reasoning summaries.", + "type": "string", + "enum": [ + "none" + ] + } + ] + }, + "SandboxPolicy": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "dangerFullAccess" + ], + "title": "DangerFullAccessSandboxPolicyType" + } + }, + "title": "DangerFullAccessSandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "networkAccess": { + "default": false, + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "readOnly" + ], + "title": "ReadOnlySandboxPolicyType" + } + }, + "title": "ReadOnlySandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "networkAccess": { + "default": "restricted", + "allOf": [ + { + "$ref": "#/definitions/NetworkAccess" + } + ] + }, + "type": { + "type": "string", + "enum": [ + "externalSandbox" + ], + "title": "ExternalSandboxSandboxPolicyType" + } + }, + "title": "ExternalSandboxSandboxPolicy" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "excludeSlashTmp": { + "default": false, + "type": "boolean" + }, + "excludeTmpdirEnvVar": { + "default": false, + "type": "boolean" + }, + "networkAccess": { + "default": false, + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "workspaceWrite" + ], + "title": "WorkspaceWriteSandboxPolicyType" + }, + "writableRoots": { + "default": [], + "type": "array", + "items": { + "$ref": "#/definitions/AbsolutePathBuf" + } + } + }, + "title": "WorkspaceWriteSandboxPolicy" + } + ] + }, + "Settings": { + "description": "Settings for a collaboration mode.", + "type": "object", + "required": [ + "model" + ], + "properties": { + "developer_instructions": { + "type": [ + "string", + "null" + ] + }, + "model": { + "type": "string" + }, + "reasoning_effort": { + "anyOf": [ + { + "$ref": "#/definitions/ReasoningEffort" + }, + { + "type": "null" + } + ] + } + } + }, + "ThreadSettings": { + "type": "object", + "required": [ + "approvalPolicy", + "approvalsReviewer", + "collaborationMode", + "cwd", + "model", + "modelProvider", + "sandboxPolicy" + ], + "properties": { + "activePermissionProfile": { + "anyOf": [ + { + "$ref": "#/definitions/ActivePermissionProfile" + }, + { + "type": "null" + } + ] + }, + "approvalPolicy": { + "$ref": "#/definitions/AskForApproval" + }, + "approvalsReviewer": { + "$ref": "#/definitions/ApprovalsReviewer" + }, + "collaborationMode": { + "$ref": "#/definitions/CollaborationMode" + }, + "cwd": { + "$ref": "#/definitions/AbsolutePathBuf" + }, + "effort": { + "anyOf": [ + { + "$ref": "#/definitions/ReasoningEffort" + }, + { + "type": "null" + } + ] + }, + "model": { + "type": "string" + }, + "modelProvider": { + "type": "string" + }, + "personality": { + "anyOf": [ + { + "$ref": "#/definitions/Personality" + }, + { + "type": "null" + } + ] + }, + "sandboxPolicy": { + "$ref": "#/definitions/SandboxPolicy" + }, + "serviceTier": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "anyOf": [ + { + "$ref": "#/definitions/ReasoningSummary" + }, + { + "type": "null" + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/schemas/v2/ThreadStartParams.json b/schemas/v2/ThreadStartParams.json index 53e3741..4074b13 100644 --- a/schemas/v2/ThreadStartParams.json +++ b/schemas/v2/ThreadStartParams.json @@ -59,10 +59,11 @@ } ] }, - "sessionStartSource": { + "threadSource": { + "description": "Optional client-supplied analytics source classification for this thread.", "anyOf": [ { - "$ref": "#/definitions/ThreadStartSource" + "$ref": "#/definitions/ThreadSource" }, { "type": "null" @@ -75,15 +76,10 @@ "null" ] }, - "threadSource": { - "description": "Optional client-supplied analytics source classification for this thread.", - "anyOf": [ - { - "$ref": "#/definitions/ThreadSource" - }, - { - "type": "null" - } + "serviceTier": { + "type": [ + "string", + "null" ] }, "personality": { @@ -108,13 +104,17 @@ "null" ] }, - "serviceName": { - "type": [ - "string", - "null" + "sessionStartSource": { + "anyOf": [ + { + "$ref": "#/definitions/ThreadStartSource" + }, + { + "type": "null" + } ] }, - "serviceTier": { + "serviceName": { "type": [ "string", "null" diff --git a/schemas/v2/ThreadStartResponse.json b/schemas/v2/ThreadStartResponse.json index ca63870..63617b1 100644 --- a/schemas/v2/ThreadStartResponse.json +++ b/schemas/v2/ThreadStartResponse.json @@ -12,8 +12,11 @@ "thread" ], "properties": { - "thread": { - "$ref": "#/definitions/Thread" + "serviceTier": { + "type": [ + "string", + "null" + ] }, "approvalPolicy": { "$ref": "#/definitions/AskForApproval" @@ -53,11 +56,8 @@ } ] }, - "serviceTier": { - "type": [ - "string", - "null" - ] + "thread": { + "$ref": "#/definitions/Thread" }, "sandbox": { "description": "Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance.", @@ -80,7 +80,7 @@ ], "properties": { "extends": { - "description": "Parent profile identifier once permissions profiles support inheritance. This is currently always `null`.", + "description": "Parent profile identifier from the selected permissions profile's `extends` setting, when present.", "default": null, "type": [ "string", @@ -1498,6 +1498,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ThreadStartedNotification.json b/schemas/v2/ThreadStartedNotification.json index 59785fb..fa82ed8 100644 --- a/schemas/v2/ThreadStartedNotification.json +++ b/schemas/v2/ThreadStartedNotification.json @@ -1255,6 +1255,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/ThreadUnarchiveResponse.json b/schemas/v2/ThreadUnarchiveResponse.json index ea5922c..dacf0d9 100644 --- a/schemas/v2/ThreadUnarchiveResponse.json +++ b/schemas/v2/ThreadUnarchiveResponse.json @@ -1255,6 +1255,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/TurnCompletedNotification.json b/schemas/v2/TurnCompletedNotification.json index 7dc7c57..0e9f6c1 100644 --- a/schemas/v2/TurnCompletedNotification.json +++ b/schemas/v2/TurnCompletedNotification.json @@ -967,6 +967,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/TurnStartParams.json b/schemas/v2/TurnStartParams.json index 16edece..b89b998 100644 --- a/schemas/v2/TurnStartParams.json +++ b/schemas/v2/TurnStartParams.json @@ -73,11 +73,11 @@ "outputSchema": { "description": "Optional JSON Schema used to constrain the final assistant message for this turn." }, - "summary": { - "description": "Override the reasoning summary for this turn and subsequent turns.", + "sandboxPolicy": { + "description": "Override the sandbox policy for this turn and subsequent turns.", "anyOf": [ { - "$ref": "#/definitions/ReasoningSummary" + "$ref": "#/definitions/SandboxPolicy" }, { "type": "null" @@ -95,11 +95,11 @@ } ] }, - "sandboxPolicy": { - "description": "Override the sandbox policy for this turn and subsequent turns.", + "summary": { + "description": "Override the reasoning summary for this turn and subsequent turns.", "anyOf": [ { - "$ref": "#/definitions/SandboxPolicy" + "$ref": "#/definitions/ReasoningSummary" }, { "type": "null" diff --git a/schemas/v2/TurnStartResponse.json b/schemas/v2/TurnStartResponse.json index 36a3075..bdf1f0d 100644 --- a/schemas/v2/TurnStartResponse.json +++ b/schemas/v2/TurnStartResponse.json @@ -963,6 +963,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ { diff --git a/schemas/v2/TurnStartedNotification.json b/schemas/v2/TurnStartedNotification.json index aff1def..18d4722 100644 --- a/schemas/v2/TurnStartedNotification.json +++ b/schemas/v2/TurnStartedNotification.json @@ -967,6 +967,12 @@ "null" ] }, + "pluginId": { + "type": [ + "string", + "null" + ] + }, "result": { "anyOf": [ {