SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
5f25733 verified
Raw
History Blame Contribute Delete
391 kB
# generated by datamodel-codegen:
# filename: codex_app_server_protocol.v2.schemas.json
from __future__ import annotations
from pydantic import BaseModel, ConfigDict, Field, RootModel
from typing import Annotated, Any, Literal
from enum import Enum
class CodexAppServerProtocolV2(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class AbsolutePathBuf(RootModel[str]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
str,
Field(
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."
),
]
class ApiKeyAccount(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["apiKey"], Field(title="ApiKeyAccountType")]
class AmazonBedrockAccount(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["amazonBedrock"], Field(title="AmazonBedrockAccountType")]
uses_codex_managed_credentials: Annotated[
bool | None, Field(alias="usesCodexManagedCredentials")
] = False
class AccountRoutingOverride(Enum):
no_constraint = "NO_CONSTRAINT"
us = "us"
us_cr = "us_cr"
class AccountTokenUsageDailyBucket(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
start_date: Annotated[str, Field(alias="startDate")]
tokens: int
class AccountTokenUsageSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
current_streak_days: Annotated[int | None, Field(alias="currentStreakDays")] = None
lifetime_tokens: Annotated[int | None, Field(alias="lifetimeTokens")] = None
longest_running_turn_sec: Annotated[int | None, Field(alias="longestRunningTurnSec")] = None
longest_streak_days: Annotated[int | None, Field(alias="longestStreakDays")] = None
peak_daily_tokens: Annotated[int | None, Field(alias="peakDailyTokens")] = None
class ActivePermissionProfile(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
extends: Annotated[
str | None,
Field(
description="Parent profile identifier from the selected permissions profile's `extends` setting, when present."
),
] = None
id: Annotated[
str,
Field(
description="Identifier from `default_permissions` or the implicit built-in default, such as `:workspace` or a user-defined `[permissions.<id>]` profile."
),
]
class AddCreditsNudgeCreditType(Enum):
credits = "credits"
usage_limit = "usage_limit"
class AddCreditsNudgeEmailStatus(Enum):
sent = "sent"
cooldown_active = "cooldown_active"
class AdditionalContextKind(Enum):
untrusted = "untrusted"
application = "application"
class AdditionalNetworkPermissions(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
enabled: bool | None = None
class AgentMessageDelivery(RootModel[Literal["async"]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Literal["async"]
class AgentMessageDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
delta: str
item_id: Annotated[str, Field(alias="itemId")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class InputTextAgentMessageInputContent(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
text: str
type: Annotated[Literal["input_text"], Field(title="InputTextAgentMessageInputContentType")]
class EncryptedContentAgentMessageInputContent(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
encrypted_content: str
type: Annotated[
Literal["encrypted_content"], Field(title="EncryptedContentAgentMessageInputContentType")
]
class AgentMessageInputContent(
RootModel[InputTextAgentMessageInputContent | EncryptedContentAgentMessageInputContent]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: InputTextAgentMessageInputContent | EncryptedContentAgentMessageInputContent
class AgentPath(RootModel[str]):
model_config = ConfigDict(
populate_by_name=True,
)
root: str
class AllowDenyRequirement(Enum):
allow = "allow"
deny = "deny"
class AnalyticsConfig(BaseModel):
model_config = ConfigDict(
extra="allow",
populate_by_name=True,
)
enabled: bool | None = None
class AppBranding(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
category: str | None = None
developer: str | None = None
is_discoverable_app: Annotated[bool, Field(alias="isDiscoverableApp")]
privacy_policy: Annotated[str | None, Field(alias="privacyPolicy")] = None
terms_of_service: Annotated[str | None, Field(alias="termsOfService")] = None
website: str | None = None
class AppLinksConfig(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class AppReview(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
status: str
class AppScreenshot(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
file_id: Annotated[str | None, Field(alias="fileId")] = None
url: str | None = None
user_prompt: Annotated[str, Field(alias="userPrompt")]
class AppSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
category: str | None = None
description: str | None = None
id: str
install_url: Annotated[str | None, Field(alias="installUrl")] = None
name: str
class AppTemplateUnavailableReason(Enum):
not_configured_for_workspace = "NOT_CONFIGURED_FOR_WORKSPACE"
no_active_workspace = "NO_ACTIVE_WORKSPACE"
class AppToolApproval(Enum):
auto = "auto"
prompt = "prompt"
writes = "writes"
approve = "approve"
class AppToolConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approval_mode: AppToolApproval | None = None
enabled: bool | None = None
class AppToolSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
description: str
disabled_reason: Annotated[str | None, Field(alias="disabledReason")] = None
is_enabled: Annotated[bool | None, Field(alias="isEnabled")] = True
is_read_only: Annotated[bool | None, Field(alias="isReadOnly")] = False
name: str
title: str | None = None
class AppToolsConfig(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ApprovalsReviewer(Enum):
user = "user"
auto_review = "auto_review"
guardian_subagent = "guardian_subagent"
class AppsDefaultConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approvals_reviewer: ApprovalsReviewer | None = None
default_tools_approval_mode: AppToolApproval | None = None
destructive_enabled: bool | None = True
enabled: bool | None = True
open_world_enabled: bool | None = True
class AppsInstalledParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
force_refresh: Annotated[
bool | None,
Field(
alias="forceRefresh",
description="When true and Apps are permitted, refresh and publish the hosted connector runtime tool snapshot first.",
),
] = None
thread_id: Annotated[
str | None,
Field(
alias="threadId",
description="Optional loaded thread id used to evaluate effective app configuration.",
),
] = None
class AppsListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: Annotated[
str | None, Field(description="Opaque pagination cursor returned by a previous call.")
] = None
force_refetch: Annotated[
bool | None,
Field(
alias="forceRefetch",
description="When true, bypass app caches and fetch the latest data from sources.",
),
] = None
limit: Annotated[
int | None,
Field(description="Optional page size; defaults to a reasonable server-side value.", ge=0),
] = None
thread_id: Annotated[
str | None,
Field(
alias="threadId",
description="Optional thread id used to evaluate app feature gating from that thread's config.",
),
] = None
class AppsReadParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
app_ids: Annotated[
list[str],
Field(
alias="appIds",
description="App ids to read. The server accepts at most 100 ids and deduplicates repeated ids while preserving their first-request order.",
),
]
include_tools: Annotated[
bool | None,
Field(
alias="includeTools",
description="When true, include display-only public tool summaries in the returned metadata.",
),
] = None
thread_id: Annotated[
str | None,
Field(
alias="threadId",
description="Optional loaded thread id used to evaluate effective app configuration.",
),
] = None
class AskForApprovalValue(Enum):
untrusted = "untrusted"
on_request = "on-request"
never = "never"
class Granular(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
mcp_elicitations: bool
request_permissions: bool | None = False
rules: bool
sandbox_approval: bool
skill_approval: bool | None = False
class GranularAskForApproval(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
granular: Granular
class AskForApproval(RootModel[AskForApprovalValue | GranularAskForApproval]):
model_config = ConfigDict(
populate_by_name=True,
)
root: AskForApprovalValue | GranularAskForApproval
class AsyncUserInputQuestion(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
options: list[str] | None = None
title: str
class AuthMode(Enum):
apikey = "apikey"
chatgpt = "chatgpt"
chatgpt_auth_tokens = "chatgptAuthTokens"
headers = "headers"
agent_identity = "agentIdentity"
personal_access_token = "personalAccessToken"
bedrock_api_key = "bedrockApiKey"
bedrock_access_keys = "bedrockAccessKeys"
class AuthRecoveryNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: str
provider: str
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class AutoCompactTokenLimitScope(Enum):
total = "total"
body_after_prefix = "body_after_prefix"
class AutoReviewDecisionSource(RootModel[Literal["agent"]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
Literal["agent"],
Field(
description="[UNSTABLE] Source that produced a terminal approval auto-review decision."
),
]
class AutoReviewRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
ignore_rules: Annotated[list[str] | None, Field(alias="ignoreRules")] = None
required_on_models: Annotated[list[str] | None, Field(alias="requiredOnModels")] = None
class BrowserUseAccessApprovalLifetime(Enum):
turn = "turn"
thread = "thread"
class BrowserUseOriginPolicy(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
access: AllowDenyRequirement | None = None
access_approval_lifetime: Annotated[
BrowserUseAccessApprovalLifetime | None, Field(alias="accessApprovalLifetime")
] = None
auto_review: Annotated[AllowDenyRequirement | None, Field(alias="autoReview")] = None
downloads: AllowDenyRequirement | None = None
full_cdp_access: Annotated[AllowDenyRequirement | None, Field(alias="fullCdpAccess")] = None
persistent_approval: Annotated[bool | None, Field(alias="persistentApproval")] = None
uploads: AllowDenyRequirement | None = None
class BrowserUseOriginPolicyConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
access: AllowDenyRequirement | None = None
downloads: AllowDenyRequirement | None = None
full_cdp_access: AllowDenyRequirement | None = None
uploads: AllowDenyRequirement | None = None
class BrowserUseRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
allow_global_persistent_approval: Annotated[
bool | None, Field(alias="allowGlobalPersistentApproval")
] = None
allow_history_access: Annotated[bool | None, Field(alias="allowHistoryAccess")] = None
allow_webmcp: Annotated[bool | None, Field(alias="allowWebmcp")] = None
default_origin_policy: Annotated[
BrowserUseOriginPolicy | None, Field(alias="defaultOriginPolicy")
] = None
disable_auto_review: Annotated[bool | None, Field(alias="disableAutoReview")] = None
origins: dict[str, Any] | None = None
class ByteRange(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
end: Annotated[int, Field(ge=0)]
start: Annotated[int, Field(ge=0)]
class CancelLoginAccountParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
login_id: Annotated[str, Field(alias="loginId")]
class CancelLoginAccountStatus(Enum):
canceled = "canceled"
not_found = "notFound"
class EnvironmentCapabilityRootLocation(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
environment_id: Annotated[str, Field(alias="environmentId")]
path: Annotated[
str, Field(description="Absolute path for the root in the selected environment.")
]
type: Annotated[Literal["environment"], Field(title="EnvironmentCapabilityRootLocationType")]
class CapabilityRootLocation(RootModel[EnvironmentCapabilityRootLocation]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
EnvironmentCapabilityRootLocation,
Field(description="Location used to resolve a selected capability root."),
]
class CliAuthCredentialsStoreMode(Enum):
file = "file"
keyring = "keyring"
auto = "auto"
ephemeral = "ephemeral"
class ClientInfo(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
title: str | None = None
version: str
class CodexErrorInfoValue(Enum):
context_window_exceeded = "contextWindowExceeded"
session_budget_exceeded = "sessionBudgetExceeded"
usage_limit_exceeded = "usageLimitExceeded"
rate_limit_exceeded = "rateLimitExceeded"
server_overloaded = "serverOverloaded"
cyber_policy = "cyberPolicy"
misalignment_policy_violation = "misalignmentPolicyViolation"
internal_server_error = "internalServerError"
unauthorized = "unauthorized"
bad_request = "badRequest"
thread_rollback_failed = "threadRollbackFailed"
sandbox_error = "sandboxError"
other = "other"
class HttpConnectionFailed(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
http_status_code: Annotated[int | None, Field(alias="httpStatusCode", ge=0)] = None
class HttpConnectionFailedCodexErrorInfo(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
http_connection_failed: Annotated[HttpConnectionFailed, Field(alias="httpConnectionFailed")]
class ResponseStreamConnectionFailed(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
http_status_code: Annotated[int | None, Field(alias="httpStatusCode", ge=0)] = None
class ResponseStreamConnectionFailedCodexErrorInfo(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
response_stream_connection_failed: Annotated[
ResponseStreamConnectionFailed, Field(alias="responseStreamConnectionFailed")
]
class ResponseStreamDisconnected(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
http_status_code: Annotated[int | None, Field(alias="httpStatusCode", ge=0)] = None
class ResponseStreamDisconnectedCodexErrorInfo(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
response_stream_disconnected: Annotated[
ResponseStreamDisconnected, Field(alias="responseStreamDisconnected")
]
class ResponseTooManyFailedAttempts(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
http_status_code: Annotated[int | None, Field(alias="httpStatusCode", ge=0)] = None
class ResponseTooManyFailedAttemptsCodexErrorInfo(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
response_too_many_failed_attempts: Annotated[
ResponseTooManyFailedAttempts, Field(alias="responseTooManyFailedAttempts")
]
class CodexResponseHandoffMode(Enum):
thinking = "thinking"
commentary = "commentary"
bem_tags = "bemTags"
class CollabAgentStatus(Enum):
pending_init = "pendingInit"
running = "running"
interrupted = "interrupted"
completed = "completed"
errored = "errored"
shutdown = "shutdown"
not_found = "notFound"
class CollabAgentTool(Enum):
spawn_agent = "spawnAgent"
send_input = "sendInput"
resume_agent = "resumeAgent"
wait = "wait"
close_agent = "closeAgent"
send_message = "sendMessage"
followup_task = "followupTask"
interrupt_agent = "interruptAgent"
list_agents = "listAgents"
class CollabAgentToolCallStatus(Enum):
in_progress = "inProgress"
completed = "completed"
failed = "failed"
interrupted = "interrupted"
class ListFilesCommandAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
command: str
path: str | None = None
type: Annotated[Literal["listFiles"], Field(title="ListFilesCommandActionType")]
class SearchCommandAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
command: str
path: str | None = None
query: str | None = None
type: Annotated[Literal["search"], Field(title="SearchCommandActionType")]
class UnknownCommandAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
command: str
type: Annotated[Literal["unknown"], Field(title="UnknownCommandActionType")]
class CommandExecOutputStream(Enum):
stdout = "stdout"
stderr = "stderr"
class CommandExecResizeResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class CommandExecResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
exit_code: Annotated[int, Field(alias="exitCode", description="Process exit code.")]
stderr: Annotated[
str,
Field(
description="Buffered stderr capture.\n\nEmpty when stderr was streamed via `command/exec/outputDelta`."
),
]
stdout: Annotated[
str,
Field(
description="Buffered stdout capture.\n\nEmpty when stdout was streamed via `command/exec/outputDelta`."
),
]
class CommandExecTerminalSize(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cols: Annotated[int, Field(description="Terminal width in character cells.", ge=0)]
rows: Annotated[int, Field(description="Terminal height in character cells.", ge=0)]
class CommandExecTerminateParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
process_id: Annotated[
str,
Field(
alias="processId",
description="Client-supplied, connection-scoped `processId` from the original `command/exec` request.",
),
]
class CommandExecTerminateResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class CommandExecWriteParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
close_stdin: Annotated[
bool | None,
Field(
alias="closeStdin", description="Close stdin after writing `deltaBase64`, if present."
),
] = None
delta_base64: Annotated[
str | None,
Field(alias="deltaBase64", description="Optional base64-encoded stdin bytes to write."),
] = None
process_id: Annotated[
str,
Field(
alias="processId",
description="Client-supplied, connection-scoped `processId` from the original `command/exec` request.",
),
]
class CommandExecWriteResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class CommandExecutionOutputDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
delta: str
item_id: Annotated[str, Field(alias="itemId")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class CommandExecutionSource(Enum):
agent = "agent"
user_shell = "userShell"
unified_exec_startup = "unifiedExecStartup"
unified_exec_interaction = "unifiedExecInteraction"
class CommandExecutionStatus(Enum):
in_progress = "inProgress"
completed = "completed"
failed = "failed"
declined = "declined"
class CommandMigration(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
class ComputerUseMacosConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
bundle_ids: dict[str, Any] | None = None
class ComputerUseMacosRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
bundle_ids: Annotated[dict[str, Any] | None, Field(alias="bundleIds")] = None
class ComputerUseWindowsExeConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
access: AllowDenyRequirement
binary_name: str | None = None
product_name: str
publisher_name: str
class ComputerUseWindowsExeRequirement(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
access: AllowDenyRequirement
binary_name: Annotated[str | None, Field(alias="binaryName")] = None
product_name: Annotated[str, Field(alias="productName")]
publisher_name: Annotated[str, Field(alias="publisherName")]
class ComputerUseWindowsRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
aumids: dict[str, Any] | None = None
exes: list[ComputerUseWindowsExeRequirement] | None = None
class PackagedDefaultsConfigLayerSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
file: Annotated[
AbsolutePathBuf, Field(description="Path to the packaged default configuration file.")
]
type: Annotated[
Literal["packagedDefaults"], Field(title="PackagedDefaultsConfigLayerSourceType")
]
class MdmConfigLayerSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
domain: str
key: str
type: Annotated[Literal["mdm"], Field(title="MdmConfigLayerSourceType")]
class SystemConfigLayerSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
file: Annotated[
AbsolutePathBuf,
Field(
description="This is the path to the system config.toml file, though it is not guaranteed to exist."
),
]
type: Annotated[Literal["system"], Field(title="SystemConfigLayerSourceType")]
class EnterpriseManagedConfigLayerSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: Annotated[str, Field(description="Stable identifier for the delivered layer.")]
name: Annotated[
str,
Field(
description="Admin-facing name for the delivered layer. This is surfaced in diagnostics so users know which cloud layer needs administrator attention."
),
]
type: Annotated[
Literal["enterpriseManaged"], Field(title="EnterpriseManagedConfigLayerSourceType")
]
class UserConfigLayerSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
file: Annotated[
AbsolutePathBuf,
Field(
description="This is the path to the user's config.toml file, though it is not guaranteed to exist."
),
]
profile: Annotated[
str | None,
Field(
description="Name of the selected profile-v2 config layered on top of the base user config, when this layer represents one."
),
] = None
type: Annotated[Literal["user"], Field(title="UserConfigLayerSourceType")]
class ProjectConfigLayerSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
dot_codex_folder: Annotated[AbsolutePathBuf, Field(alias="dotCodexFolder")]
type: Annotated[Literal["project"], Field(title="ProjectConfigLayerSourceType")]
class SessionFlagsConfigLayerSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["sessionFlags"], Field(title="SessionFlagsConfigLayerSourceType")]
class LegacyManagedConfigTomlFromFileConfigLayerSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
file: AbsolutePathBuf
type: Annotated[
Literal["legacyManagedConfigTomlFromFile"],
Field(title="LegacyManagedConfigTomlFromFileConfigLayerSourceType"),
]
class LegacyManagedConfigTomlFromMdmConfigLayerSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[
Literal["legacyManagedConfigTomlFromMdm"],
Field(title="LegacyManagedConfigTomlFromMdmConfigLayerSourceType"),
]
class ConfigLayerSource(
RootModel[
PackagedDefaultsConfigLayerSource
| MdmConfigLayerSource
| SystemConfigLayerSource
| EnterpriseManagedConfigLayerSource
| UserConfigLayerSource
| ProjectConfigLayerSource
| SessionFlagsConfigLayerSource
| LegacyManagedConfigTomlFromFileConfigLayerSource
| LegacyManagedConfigTomlFromMdmConfigLayerSource
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
PackagedDefaultsConfigLayerSource
| MdmConfigLayerSource
| SystemConfigLayerSource
| EnterpriseManagedConfigLayerSource
| UserConfigLayerSource
| ProjectConfigLayerSource
| SessionFlagsConfigLayerSource
| LegacyManagedConfigTomlFromFileConfigLayerSource
| LegacyManagedConfigTomlFromMdmConfigLayerSource
)
class ConfigReadParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: Annotated[
str | None,
Field(
description="Optional working directory to resolve project config layers. If specified, return the effective config as seen from that directory (i.e., including any project layers between `cwd` and the project/repo root)."
),
] = None
include_layers: Annotated[bool | None, Field(alias="includeLayers")] = None
class CommandConfiguredHookHandler(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
additional_context_limit: Annotated[
int | None,
Field(
alias="additionalContextLimit",
description="Approximate token threshold for spilling this hook's `additionalContext` to disk. `null` uses 2,500 tokens; `0` disables spilling for this hook. The threshold is evaluated against the original context; a spilled preview also includes recovery metadata.",
ge=0,
),
] = None
async_: Annotated[bool, Field(alias="async")]
command: str
command_windows: Annotated[str | None, Field(alias="commandWindows")] = None
status_message: Annotated[str | None, Field(alias="statusMessage")] = None
timeout_sec: Annotated[int | None, Field(alias="timeoutSec", ge=0)] = None
type: Annotated[Literal["command"], Field(title="CommandConfiguredHookHandlerType")]
class McpToolConfiguredHookHandler(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
input: dict[str, Any]
server: str
status_message: Annotated[str | None, Field(alias="statusMessage")] = None
timeout_sec: Annotated[int | None, Field(alias="timeoutSec", ge=0)] = None
tool: str
type: Annotated[Literal["mcp_tool"], Field(title="McpToolConfiguredHookHandlerType")]
class PromptConfiguredHookHandler(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["prompt"], Field(title="PromptConfiguredHookHandlerType")]
class AgentConfiguredHookHandler(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["agent"], Field(title="AgentConfiguredHookHandlerType")]
class ConfiguredHookHandler(
RootModel[
CommandConfiguredHookHandler
| McpToolConfiguredHookHandler
| PromptConfiguredHookHandler
| AgentConfiguredHookHandler
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
CommandConfiguredHookHandler
| McpToolConfiguredHookHandler
| PromptConfiguredHookHandler
| AgentConfiguredHookHandler
)
class ConfiguredHookMatcherGroup(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
hooks: list[ConfiguredHookHandler]
matcher: str | None = None
class ConnectorMetadata(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
description: str | None = None
distribution_channel: Annotated[str | None, Field(alias="distributionChannel")] = None
icon_url: Annotated[str | None, Field(alias="iconUrl")] = None
icon_url_dark: Annotated[str | None, Field(alias="iconUrlDark")] = None
id: str
install_url: Annotated[str | None, Field(alias="installUrl")] = None
name: str
plugin_display_names: Annotated[list[str] | None, Field(alias="pluginDisplayNames")] = []
tool_summaries: Annotated[list[AppToolSummary] | None, Field(alias="toolSummaries")] = None
class ConsumeAccountRateLimitResetCreditOutcome(Enum):
reset = "reset"
nothing_to_reset = "nothingToReset"
no_credit = "noCredit"
already_redeemed = "alreadyRedeemed"
class ConsumeAccountRateLimitResetCreditParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
credit_id: Annotated[
str | None,
Field(
alias="creditId",
description="Opaque reset-credit identifier to redeem. When omitted, the backend selects the next available credit.",
),
] = None
idempotency_key: Annotated[
str,
Field(
alias="idempotencyKey",
description="Identifies one logical reset attempt. A UUID is recommended; reuse the same value when retrying that attempt.",
),
]
class ConsumeAccountRateLimitResetCreditResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
outcome: ConsumeAccountRateLimitResetCreditOutcome
class InputTextContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
text: str
type: Annotated[Literal["input_text"], Field(title="InputTextContentItemType")]
class InputAudioContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
audio_url: str
type: Annotated[Literal["input_audio"], Field(title="InputAudioContentItemType")]
class OutputTextContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
text: str
type: Annotated[Literal["output_text"], Field(title="OutputTextContentItemType")]
class ContextCompactedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class ConversationTextRole(Enum):
user = "user"
developer = "developer"
assistant = "assistant"
class CreditsSnapshot(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
balance: str | None = None
has_credits: Annotated[bool, Field(alias="hasCredits")]
unlimited: bool
class CyberAccessProgram(Enum):
standard = "standard"
daybreak_blue = "daybreakBlue"
daybreak_red = "daybreakRed"
class DeprecationNoticeNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
details: Annotated[
str | None,
Field(description="Optional extra guidance, such as migration steps or rationale."),
] = None
summary: Annotated[str, Field(description="Concise summary of what is deprecated.")]
class DesktopOnboardingEntrypoint(RootModel[Literal["life_sciences"]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Literal["life_sciences"]
class InputTextDynamicToolCallOutputContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
text: str
type: Annotated[
Literal["inputText"], Field(title="InputTextDynamicToolCallOutputContentItemType")
]
class InputImageDynamicToolCallOutputContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
image_url: Annotated[str, Field(alias="imageUrl")]
type: Annotated[
Literal["inputImage"], Field(title="InputImageDynamicToolCallOutputContentItemType")
]
class InputAudioDynamicToolCallOutputContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
audio_url: Annotated[str, Field(alias="audioUrl")]
type: Annotated[
Literal["inputAudio"], Field(title="InputAudioDynamicToolCallOutputContentItemType")
]
class DynamicToolCallOutputContentItem(
RootModel[
InputTextDynamicToolCallOutputContentItem
| InputImageDynamicToolCallOutputContentItem
| InputAudioDynamicToolCallOutputContentItem
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
InputTextDynamicToolCallOutputContentItem
| InputImageDynamicToolCallOutputContentItem
| InputAudioDynamicToolCallOutputContentItem
)
class DynamicToolCallStatus(Enum):
in_progress = "inProgress"
completed = "completed"
failed = "failed"
class FunctionDynamicToolNamespaceTool(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
defer_loading: Annotated[bool | None, Field(alias="deferLoading")] = None
description: str
input_schema: Annotated[Any, Field(alias="inputSchema")]
name: str
type: Annotated[Literal["function"], Field(title="FunctionDynamicToolNamespaceToolType")]
class DynamicToolNamespaceTool(RootModel[FunctionDynamicToolNamespaceTool]):
model_config = ConfigDict(
populate_by_name=True,
)
root: FunctionDynamicToolNamespaceTool
class FunctionDynamicToolSpec(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
defer_loading: Annotated[bool | None, Field(alias="deferLoading")] = None
description: str
input_schema: Annotated[Any, Field(alias="inputSchema")]
name: str
type: Annotated[Literal["function"], Field(title="FunctionDynamicToolSpecType")]
class NamespaceDynamicToolSpec(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
description: str
name: str
tools: list[DynamicToolNamespaceTool]
type: Annotated[Literal["namespace"], Field(title="NamespaceDynamicToolSpecType")]
class DynamicToolSpec(RootModel[FunctionDynamicToolSpec | NamespaceDynamicToolSpec]):
model_config = ConfigDict(
populate_by_name=True,
)
root: FunctionDynamicToolSpec | NamespaceDynamicToolSpec
class EnvironmentConnectionNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
environment_id: Annotated[str, Field(alias="environmentId")]
thread_id: Annotated[str, Field(alias="threadId")]
class ExperimentalFeatureEnablementSetParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
enablement: Annotated[
dict[str, bool],
Field(
description="Process-wide runtime feature enablement keyed by canonical feature name.\n\nOnly named features are updated. Omitted features are left unchanged. Send an empty map for a no-op."
),
]
class ExperimentalFeatureEnablementSetResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
enablement: Annotated[
dict[str, bool], Field(description="Feature enablement entries updated by this request.")
]
class ExperimentalFeatureListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: Annotated[
str | None, Field(description="Opaque pagination cursor returned by a previous call.")
] = None
limit: Annotated[
int | None,
Field(description="Optional page size; defaults to a reasonable server-side value.", ge=0),
] = None
thread_id: Annotated[
str | None,
Field(
alias="threadId",
description="Optional loaded thread id. Pass this when showing feature state for an existing thread so enablement is computed from that thread's refreshed config, including project-local config for the thread's cwd.",
),
] = None
class ExperimentalFeatureStage(Enum):
beta = "beta"
under_development = "underDevelopment"
stable = "stable"
deprecated = "deprecated"
removed = "removed"
class ExternalAgentConfigDetectParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwds: Annotated[
list[str] | None,
Field(description="Zero or more working directories to include for repo-scoped detection."),
] = None
include_home: Annotated[
bool | None,
Field(
alias="includeHome",
description="If true, include detection under the user's home directory.",
),
] = None
max_session_age_days: Annotated[
int | None,
Field(
alias="maxSessionAgeDays",
description="Maximum age in days for detected sessions. Missing values use the default limit.",
ge=0,
),
] = None
max_sessions: Annotated[
int | None,
Field(
alias="maxSessions",
description="Maximum number of sessions to detect. Missing values use the default limit.",
ge=0,
),
] = None
migration_source: Annotated[
str | None,
Field(
alias="migrationSource",
description="Optional migration-source selector. Missing or unrecognized values use the default source.",
),
] = None
source: Annotated[
str | None,
Field(
description="Deprecated field retained for compatibility. This field is ignored; use `migrationSource` to select the migration source."
),
] = None
class ExternalAgentConfigImportHistoryRecordResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
import_id: Annotated[str, Field(alias="importId")]
class ExternalAgentConfigImportResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
import_id: Annotated[str, Field(alias="importId")]
class ExternalAgentConfigMigrationItemType(Enum):
agents_md = "AGENTS_MD"
config = "CONFIG"
skills = "SKILLS"
plugins = "PLUGINS"
mcp_server_config = "MCP_SERVER_CONFIG"
subagents = "SUBAGENTS"
hooks = "HOOKS"
commands = "COMMANDS"
memory = "MEMORY"
sessions = "SESSIONS"
class ExternalAgentDetectedConnectorSource(Enum):
remote_mcp_servers_config = "remoteMcpServersConfig"
session_tool_use = "sessionToolUse"
class ExternalAgentImportedConnectorSource(RootModel[Literal["remoteMcpServersConfig"]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Literal["remoteMcpServersConfig"]
class FeedbackRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
enabled: bool | None = None
class FeedbackUploadParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
classification: str
extra_log_files: Annotated[list[str] | None, Field(alias="extraLogFiles")] = None
include_logs: Annotated[bool | None, Field(alias="includeLogs")] = None
reason: str | None = None
tags: dict[str, Any] | None = None
thread_id: Annotated[str | None, Field(alias="threadId")] = None
class FeedbackUploadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
prompt_hash: Annotated[
str | None,
Field(
alias="promptHash",
description="Whitespace-normalized SHA-256 of the session base instructions, matching the uploaded `prompt_hash` tag. Does not include later developer messages. Null when the reported rollout has no prompt metadata.",
),
] = None
thread_id: Annotated[str, Field(alias="threadId")]
class FileChangeOutputDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
delta: str
item_id: Annotated[str, Field(alias="itemId")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class FileSystemAccessMode(Enum):
read = "read"
write = "write"
deny = "deny"
class GlobPatternFileSystemPath(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
pattern: str
type: Annotated[Literal["glob_pattern"], Field(title="GlobPatternFileSystemPathType")]
class RootFileSystemSpecialPath(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
kind: Literal["root"]
class MinimalFileSystemSpecialPath(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
kind: Literal["minimal"]
class TmpdirFileSystemSpecialPath(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
kind: Literal["tmpdir"]
class SlashTmpFileSystemSpecialPath(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
kind: Literal["slash_tmp"]
class ForcedChatgptWorkspaceIds(RootModel[str | list[str]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
str | list[str],
Field(
description="Backward-compatible API shape for ChatGPT workspace login restrictions."
),
]
class ForcedLoginMethod(Enum):
chatgpt = "chatgpt"
api = "api"
class FsChangedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
changed_paths: Annotated[
list[AbsolutePathBuf],
Field(
alias="changedPaths", description="File or directory paths associated with this event."
),
]
watch_id: Annotated[
str,
Field(alias="watchId", description="Watch identifier previously provided to `fs/watch`."),
]
class FsCopyParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
destination_path: Annotated[
AbsolutePathBuf, Field(alias="destinationPath", description="Absolute destination path.")
]
recursive: Annotated[
bool | None, Field(description="Required for directory copies; ignored for file copies.")
] = None
source_path: Annotated[
AbsolutePathBuf, Field(alias="sourcePath", description="Absolute source path.")
]
class FsCopyResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class FsCreateDirectoryParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: Annotated[AbsolutePathBuf, Field(description="Absolute directory path to create.")]
recursive: Annotated[
bool | None,
Field(description="Whether parent directories should also be created. Defaults to `true`."),
] = None
class FsCreateDirectoryResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class FsGetMetadataParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: Annotated[AbsolutePathBuf, Field(description="Absolute path to inspect.")]
class FsGetMetadataResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
created_at_ms: Annotated[
int,
Field(
alias="createdAtMs",
description="File creation time in Unix milliseconds when available, otherwise `0`.",
),
]
is_directory: Annotated[
bool, Field(alias="isDirectory", description="Whether the path resolves to a directory.")
]
is_file: Annotated[
bool, Field(alias="isFile", description="Whether the path resolves to a regular file.")
]
is_symlink: Annotated[
bool, Field(alias="isSymlink", description="Whether the path itself is a symbolic link.")
]
modified_at_ms: Annotated[
int,
Field(
alias="modifiedAtMs",
description="File modification time in Unix milliseconds when available, otherwise `0`.",
),
]
class FsReadDirectoryEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
file_name: Annotated[
str,
Field(
alias="fileName",
description="Direct child entry name only, not an absolute or relative path.",
),
]
is_directory: Annotated[
bool, Field(alias="isDirectory", description="Whether this entry resolves to a directory.")
]
is_file: Annotated[
bool, Field(alias="isFile", description="Whether this entry resolves to a regular file.")
]
class FsReadDirectoryParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: Annotated[AbsolutePathBuf, Field(description="Absolute directory path to read.")]
class FsReadDirectoryResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
entries: Annotated[
list[FsReadDirectoryEntry],
Field(description="Direct child entries in the requested directory."),
]
class FsReadFileParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: Annotated[AbsolutePathBuf, Field(description="Absolute path to read.")]
class FsReadFileResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data_base64: Annotated[
str, Field(alias="dataBase64", description="File contents encoded as base64.")
]
class FsRemoveParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
force: Annotated[
bool | None,
Field(description="Whether missing paths should be ignored. Defaults to `true`."),
] = None
path: Annotated[AbsolutePathBuf, Field(description="Absolute path to remove.")]
recursive: Annotated[
bool | None,
Field(description="Whether directory removal should recurse. Defaults to `true`."),
] = None
class FsRemoveResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class FsUnwatchParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
watch_id: Annotated[
str,
Field(alias="watchId", description="Watch identifier previously provided to `fs/watch`."),
]
class FsUnwatchResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class FsWatchParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: Annotated[AbsolutePathBuf, Field(description="Absolute file or directory path to watch.")]
watch_id: Annotated[
str,
Field(
alias="watchId",
description="Connection-scoped watch identifier used for `fs/unwatch` and `fs/changed`.",
),
]
class FsWatchResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: Annotated[
AbsolutePathBuf, Field(description="Canonicalized path associated with the watch.")
]
class FsWriteFileParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data_base64: Annotated[
str, Field(alias="dataBase64", description="File contents encoded as base64.")
]
path: Annotated[AbsolutePathBuf, Field(description="Absolute path to write.")]
class FsWriteFileResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class InputTextFunctionCallOutputContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
text: str
type: Annotated[
Literal["input_text"], Field(title="InputTextFunctionCallOutputContentItemType")
]
class InputAudioFunctionCallOutputContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
audio_url: str
type: Annotated[
Literal["input_audio"], Field(title="InputAudioFunctionCallOutputContentItemType")
]
class EncryptedContentFunctionCallOutputContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
encrypted_content: str
type: Annotated[
Literal["encrypted_content"],
Field(title="EncryptedContentFunctionCallOutputContentItemType"),
]
class FuzzyFileSearchMatchType(Enum):
file = "file"
directory = "directory"
class FuzzyFileSearchParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cancellation_token: Annotated[str | None, Field(alias="cancellationToken")] = None
query: str
roots: list[str]
class Indice(RootModel[int]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[int, Field(ge=0)]
class FuzzyFileSearchResult(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
file_name: str
indices: list[Indice] | None = None
match_type: FuzzyFileSearchMatchType
path: str
root: str
score: Annotated[int, Field(ge=0)]
class FuzzyFileSearchSessionCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
session_id: Annotated[str, Field(alias="sessionId")]
class FuzzyFileSearchSessionUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
files: list[FuzzyFileSearchResult]
query: str
session_id: Annotated[str, Field(alias="sessionId")]
class GetAccountParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
refresh_token: Annotated[
bool | None,
Field(
alias="refreshToken",
description="When `true`, requests a proactive token refresh before returning.\n\nIn managed auth mode this triggers the normal refresh-token flow. In external auth mode this flag is ignored. Clients should refresh tokens themselves and call `account/login/start` with `chatgptAuthTokens`.",
),
] = None
class GetAccountRateLimitsParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
exclude_reset_credit_details: Annotated[
bool | None,
Field(
alias="excludeResetCreditDetails",
description="Skip the separate reset-credit detail lookup for background usage polls. The usage response still includes the available count; omitted/false preserves detailed reads.",
),
] = None
supports_luna_reserve: Annotated[
bool | None,
Field(
alias="supportsLunaReserve",
description="The client supports automatic Luna Reserve fallback. For eligible ChatGPT CLI users, allow the backend to record experiment exposure after ordinary usage is blocked.",
),
] = None
class GetAccountTokenUsageParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[
str | None,
Field(
alias="threadId",
description="When present, read estimated usage for this thread instead of account-wide token activity.",
),
] = None
class GitInfo(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
branch: str | None = None
origin_url: Annotated[str | None, Field(alias="originUrl")] = None
sha: str | None = None
class ApplyPatchGuardianApprovalReviewAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: AbsolutePathBuf
files: list[AbsolutePathBuf]
type: Annotated[
Literal["applyPatch"], Field(title="ApplyPatchGuardianApprovalReviewActionType")
]
class McpToolCallGuardianApprovalReviewAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
connector_id: Annotated[str | None, Field(alias="connectorId")] = None
connector_name: Annotated[str | None, Field(alias="connectorName")] = None
server: str
tool_name: Annotated[str, Field(alias="toolName")]
tool_title: Annotated[str | None, Field(alias="toolTitle")] = None
type: Annotated[
Literal["mcpToolCall"], Field(title="McpToolCallGuardianApprovalReviewActionType")
]
class GuardianApprovalReviewStatus(Enum):
in_progress = "inProgress"
approved = "approved"
denied = "denied"
timed_out = "timedOut"
aborted = "aborted"
class GuardianCommandSource(Enum):
shell = "shell"
unified_exec = "unifiedExec"
class GuardianRiskLevel(Enum):
low = "low"
medium = "medium"
high = "high"
critical = "critical"
class GuardianUserAuthorization(Enum):
unknown = "unknown"
low = "low"
medium = "medium"
high = "high"
class GuardianWarningNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: Annotated[str, Field(description="Concise guardian warning message for the user.")]
thread_id: Annotated[
str, Field(alias="threadId", description="Thread target for the guardian warning.")
]
class HookErrorInfo(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: str
path: str
class HookEventName(Enum):
pre_tool_use = "preToolUse"
permission_request = "permissionRequest"
post_tool_use = "postToolUse"
pre_compact = "preCompact"
post_compact = "postCompact"
session_start = "sessionStart"
session_end = "sessionEnd"
user_prompt_submit = "userPromptSubmit"
subagent_start = "subagentStart"
subagent_stop = "subagentStop"
stop = "stop"
interrupt = "interrupt"
class HookExecutionMode(Enum):
sync = "sync"
async_ = "async"
class HookHandlerType(Enum):
command = "command"
mcp_tool = "mcpTool"
prompt = "prompt"
agent = "agent"
class HookMigration(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
class HookOutputEntryKind(Enum):
warning = "warning"
stop = "stop"
feedback = "feedback"
context = "context"
error = "error"
class HookPromptFragment(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
hook_run_id: Annotated[str, Field(alias="hookRunId")]
text: str
class HookRunStatus(Enum):
running = "running"
completed = "completed"
failed = "failed"
blocked = "blocked"
stopped = "stopped"
class HookScope(Enum):
thread = "thread"
turn = "turn"
class HookSource(Enum):
system = "system"
user = "user"
project = "project"
mdm = "mdm"
session_flags = "sessionFlags"
plugin = "plugin"
cloud_requirements = "cloudRequirements"
cloud_managed_config = "cloudManagedConfig"
legacy_managed_config_file = "legacyManagedConfigFile"
legacy_managed_config_mdm = "legacyManagedConfigMdm"
unknown = "unknown"
class HookTrustStatus(Enum):
managed = "managed"
untrusted = "untrusted"
trusted = "trusted"
modified = "modified"
class HooksListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwds: Annotated[
list[str] | None,
Field(description="When empty, defaults to the current session working directory."),
] = None
class ImageDetail(Enum):
auto = "auto"
low = "low"
high = "high"
original = "original"
class UsageLimitExceededImageGenerationFailure(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
limit_id: Annotated[str, Field(alias="limitId")]
resets_at: Annotated[int | None, Field(alias="resetsAt")] = None
type: Annotated[
Literal["usageLimitExceeded"], Field(title="UsageLimitExceededImageGenerationFailureType")
]
class ImageGenerationFailure(RootModel[UsageLimitExceededImageGenerationFailure]):
model_config = ConfigDict(
populate_by_name=True,
)
root: UsageLimitExceededImageGenerationFailure
class InAppBrowserRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
allow_external_browser_settings_import: Annotated[
bool | None, Field(alias="allowExternalBrowserSettingsImport")
] = None
class InitializeCapabilities(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
experimental_api: Annotated[
bool | None,
Field(
alias="experimentalApi",
description="Opt into receiving experimental API methods and fields.",
),
] = False
extensions: Annotated[
dict[str, Any] | None,
Field(description="MCP extension settings declared by the app-server client."),
] = None
mcp_server_openai_form_elicitation: Annotated[
bool | None,
Field(
alias="mcpServerOpenaiFormElicitation",
description="Legacy opt-in for the `openai/form` MCP extension.\n\nNew clients should declare `openai/form` in [`Self::extensions`].",
),
] = None
opt_out_notification_methods: Annotated[
list[str] | None,
Field(
alias="optOutNotificationMethods",
description="Exact notification method names that should be suppressed for this connection (for example `thread/started`).",
),
] = None
request_attestation: Annotated[
bool | None,
Field(
alias="requestAttestation",
description="Opt into `attestation/generate` requests for upstream `x-oai-attestation`.",
),
] = False
class InitializeParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
capabilities: InitializeCapabilities | None = None
client_info: Annotated[ClientInfo, Field(alias="clientInfo")]
class InputModality(Enum):
text = "text"
image = "image"
audio = "audio"
class InstalledApp(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
callable: Annotated[
bool,
Field(
description="Whether the connector is enabled and has a non-synthetic, model-visible tool allowed by effective MCP and app/tool policy in the committed runtime snapshot."
),
]
enabled: Annotated[
bool,
Field(
description="Effective enabled state after applying global, workspace, local, and managed configuration at read time."
),
]
id: str
runtime_name: Annotated[
str | None,
Field(
alias="runtimeName",
description="Best-effort name carried by the runtime tool catalog. Canonical app metadata remains owned by `app/read`.",
),
] = None
class InternalChatMessageMetadataPassthrough(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
turn_id: str | None = None
class LegacyAppPathString(RootModel[str]):
model_config = ConfigDict(
populate_by_name=True,
)
root: str
class ExecLocalShellAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
command: list[str]
env: dict[str, Any] | None = None
timeout_ms: Annotated[int | None, Field(ge=0)] = None
type: Annotated[Literal["exec"], Field(title="ExecLocalShellActionType")]
user: str | None = None
working_directory: str | None = None
class LocalShellAction(RootModel[ExecLocalShellAction]):
model_config = ConfigDict(
populate_by_name=True,
)
root: ExecLocalShellAction
class LocalShellStatus(Enum):
completed = "completed"
in_progress = "in_progress"
incomplete = "incomplete"
class ApiKeyLoginAccountParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
api_key: Annotated[str, Field(alias="apiKey")]
type: Annotated[Literal["apiKey"], Field(title="ApiKeyv2::LoginAccountParamsType")]
class ChatgptDeviceCodeLoginAccountParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[
Literal["chatgptDeviceCode"], Field(title="ChatgptDeviceCodev2::LoginAccountParamsType")
]
class ChatgptAuthTokensLoginAccountParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
access_token: Annotated[
str,
Field(
alias="accessToken",
description="Access token (JWT) supplied by the client. This token is used for backend API requests and email extraction.",
),
]
chatgpt_account_id: Annotated[
str,
Field(
alias="chatgptAccountId",
description="Workspace/account identifier supplied by the client.",
),
]
chatgpt_plan_type: Annotated[
str | None,
Field(
alias="chatgptPlanType",
description="Optional plan type supplied by the client.\n\nWhen `null`, Codex attempts to derive the plan type from access-token claims. If unavailable, the plan defaults to `unknown`.",
),
] = None
type: Annotated[
Literal["chatgptAuthTokens"], Field(title="ChatgptAuthTokensv2::LoginAccountParamsType")
]
class AmazonBedrockLoginAccountParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
api_key: Annotated[str, Field(alias="apiKey")]
region: str
type: Annotated[
Literal["amazonBedrock"], Field(title="AmazonBedrockv2::LoginAccountParamsType")
]
class AmazonBedrockAccessKeysLoginAccountParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
access_key_id: Annotated[str, Field(alias="accessKeyId")]
region: str
secret_access_key: Annotated[str, Field(alias="secretAccessKey")]
session_token: Annotated[str | None, Field(alias="sessionToken")] = None
type: Annotated[
Literal["amazonBedrockAccessKeys"],
Field(title="AmazonBedrockAccessKeysv2::LoginAccountParamsType"),
]
class ApiKeyLoginAccountResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["apiKey"], Field(title="ApiKeyv2::LoginAccountResponseType")]
class ChatgptLoginAccountResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
auth_url: Annotated[
str,
Field(
alias="authUrl",
description="URL the client should open in a browser to initiate the OAuth flow.",
),
]
login_id: Annotated[str, Field(alias="loginId")]
type: Annotated[Literal["chatgpt"], Field(title="Chatgptv2::LoginAccountResponseType")]
class ChatgptDeviceCodeLoginAccountResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
login_id: Annotated[str, Field(alias="loginId")]
type: Annotated[
Literal["chatgptDeviceCode"], Field(title="ChatgptDeviceCodev2::LoginAccountResponseType")
]
user_code: Annotated[
str,
Field(alias="userCode", description="One-time code the user must enter after signing in."),
]
verification_url: Annotated[
str,
Field(
alias="verificationUrl",
description="URL the client should open in a browser to complete device code authorization.",
),
]
class ChatgptAuthTokensLoginAccountResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[
Literal["chatgptAuthTokens"], Field(title="ChatgptAuthTokensv2::LoginAccountResponseType")
]
class AmazonBedrockLoginAccountResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[
Literal["amazonBedrock"], Field(title="AmazonBedrockv2::LoginAccountResponseType")
]
class LoginAccountResponse(
RootModel[
ApiKeyLoginAccountResponse
| ChatgptLoginAccountResponse
| ChatgptDeviceCodeLoginAccountResponse
| ChatgptAuthTokensLoginAccountResponse
| AmazonBedrockLoginAccountResponse
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
ApiKeyLoginAccountResponse
| ChatgptLoginAccountResponse
| ChatgptDeviceCodeLoginAccountResponse
| ChatgptAuthTokensLoginAccountResponse
| AmazonBedrockLoginAccountResponse,
Field(title="LoginAccountResponse"),
]
class LoginAppBrand(Enum):
codex = "codex"
chatgpt = "chatgpt"
class LogoutAccountResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ManagedHooksRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
interrupt: Annotated[list[ConfiguredHookMatcherGroup] | None, Field(alias="Interrupt")] = []
permission_request: Annotated[
list[ConfiguredHookMatcherGroup], Field(alias="PermissionRequest")
]
post_compact: Annotated[list[ConfiguredHookMatcherGroup], Field(alias="PostCompact")]
post_tool_use: Annotated[list[ConfiguredHookMatcherGroup], Field(alias="PostToolUse")]
pre_compact: Annotated[list[ConfiguredHookMatcherGroup], Field(alias="PreCompact")]
pre_tool_use: Annotated[list[ConfiguredHookMatcherGroup], Field(alias="PreToolUse")]
session_end: Annotated[list[ConfiguredHookMatcherGroup] | None, Field(alias="SessionEnd")] = []
session_start: Annotated[list[ConfiguredHookMatcherGroup], Field(alias="SessionStart")]
stop: Annotated[list[ConfiguredHookMatcherGroup], Field(alias="Stop")]
subagent_start: Annotated[list[ConfiguredHookMatcherGroup], Field(alias="SubagentStart")]
subagent_stop: Annotated[list[ConfiguredHookMatcherGroup], Field(alias="SubagentStop")]
user_prompt_submit: Annotated[list[ConfiguredHookMatcherGroup], Field(alias="UserPromptSubmit")]
managed_dir: Annotated[str | None, Field(alias="managedDir")] = None
windows_managed_dir: Annotated[str | None, Field(alias="windowsManagedDir")] = None
class MarketplaceAddParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
ref_name: Annotated[str | None, Field(alias="refName")] = None
source: str
sparse_paths: Annotated[list[str] | None, Field(alias="sparsePaths")] = None
class MarketplaceAddResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
already_added: Annotated[bool, Field(alias="alreadyAdded")]
installed_root: Annotated[AbsolutePathBuf, Field(alias="installedRoot")]
marketplace_name: Annotated[str, Field(alias="marketplaceName")]
class MarketplaceInterface(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
display_name: Annotated[str | None, Field(alias="displayName")] = None
class MarketplaceLoadErrorInfo(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
marketplace_path: Annotated[AbsolutePathBuf, Field(alias="marketplacePath")]
message: str
class MarketplaceRemoveParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
marketplace_name: Annotated[str, Field(alias="marketplaceName")]
class MarketplaceRemoveResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
installed_root: Annotated[AbsolutePathBuf | None, Field(alias="installedRoot")] = None
marketplace_name: Annotated[str, Field(alias="marketplaceName")]
class MarketplaceUpgradeErrorInfo(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
marketplace_name: Annotated[str, Field(alias="marketplaceName")]
message: str
class MarketplaceUpgradeParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
marketplace_name: Annotated[str | None, Field(alias="marketplaceName")] = None
class MarketplaceUpgradeResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
errors: list[MarketplaceUpgradeErrorInfo]
selected_marketplaces: Annotated[list[str], Field(alias="selectedMarketplaces")]
upgraded_roots: Annotated[list[AbsolutePathBuf], Field(alias="upgradedRoots")]
class McpAppDisplayMode(Enum):
inline = "inline"
fullscreen = "fullscreen"
class McpAppUi(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
preferred_model_display_mode: Annotated[
McpAppDisplayMode, Field(alias="preferredModelDisplayMode")
]
resource_uri: Annotated[str, Field(alias="resourceUri")]
class McpAuthStatus(Enum):
unknown = "unknown"
unsupported = "unsupported"
not_logged_in = "notLoggedIn"
bearer_token = "bearerToken"
o_auth = "oAuth"
class McpResourceReadParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
connector_id: Annotated[str | None, Field(alias="connectorId")] = None
origin_call_id: Annotated[
str | None,
Field(
alias="originCallId",
description="Originating MCP tool call used to select the resource's app.",
),
] = None
server: str
thread_id: Annotated[str | None, Field(alias="threadId")] = None
uri: str
class McpServerConnectionStatus(Enum):
not_started = "notStarted"
starting = "starting"
connected = "connected"
authentication_required = "authenticationRequired"
failed = "failed"
cancelled = "cancelled"
disabled = "disabled"
class McpServerEventNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
method: str
params: Any
class McpServerEventStreamNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
notification: McpServerEventNotification
subscription_id: Annotated[str, Field(alias="subscriptionId")]
class McpServerInfo(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
description: str | None = None
icons: list | None = None
name: str
title: str | None = None
version: str
website_url: Annotated[str | None, Field(alias="websiteUrl")] = None
class McpServerMigration(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
class McpServerOauthClientRegistration(Enum):
auto = "auto"
cimd = "cimd"
dcr = "dcr"
class McpServerOauthLoginCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
error: str | None = None
name: str
success: bool
thread_id: Annotated[str | None, Field(alias="threadId")] = None
class McpServerOauthLoginParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
client_registration: Annotated[
McpServerOauthClientRegistration | None,
Field(
alias="clientRegistration",
description="Registration strategy for this login only; omission selects automatic discovery.",
),
] = None
name: str
scopes: list[str] | None = None
thread_id: Annotated[str | None, Field(alias="threadId")] = None
timeout_secs: Annotated[int | None, Field(alias="timeoutSecs")] = None
class McpServerOauthLoginResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
authorization_url: Annotated[str, Field(alias="authorizationUrl")]
class McpServerRefreshResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class McpServerStartupFailureReason(RootModel[Literal["reauthenticationRequired"]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Literal["reauthenticationRequired"]
class McpServerStartupState(Enum):
starting = "starting"
ready = "ready"
failed = "failed"
cancelled = "cancelled"
class McpServerStatusDetail(Enum):
full = "full"
tools_and_auth_only = "toolsAndAuthOnly"
class McpServerStatusUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
error: str | None = None
failure_reason: Annotated[
McpServerStartupFailureReason | None, Field(alias="failureReason")
] = None
name: str
status: McpServerStartupState
thread_id: Annotated[str | None, Field(alias="threadId")] = None
class McpServerToolCallParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
field_meta: Annotated[Any | None, Field(alias="_meta")] = None
arguments: Any | None = None
server: str
thread_id: Annotated[str, Field(alias="threadId")]
tool: str
class McpServerToolCallResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
field_meta: Annotated[Any | None, Field(alias="_meta")] = None
content: list
is_error: Annotated[bool | None, Field(alias="isError")] = None
structured_content: Annotated[Any | None, Field(alias="structuredContent")] = None
class McpToolCallAppContext(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
action_name: Annotated[str | None, Field(alias="actionName")] = None
app_name: Annotated[str | None, Field(alias="appName")] = None
connector_id: Annotated[str, Field(alias="connectorId")]
link_id: Annotated[str | None, Field(alias="linkId")] = None
resource_uri: Annotated[str | None, Field(alias="resourceUri")] = None
class McpToolCallError(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: str
class McpToolCallProgressNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item_id: Annotated[str, Field(alias="itemId")]
message: str
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class McpToolCallResult(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
field_meta: Annotated[Any | None, Field(alias="_meta")] = None
content: list
structured_content: Annotated[Any | None, Field(alias="structuredContent")] = None
class McpToolCallStatus(Enum):
in_progress = "inProgress"
completed = "completed"
failed = "failed"
class MemoryCitationEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
line_end: Annotated[int, Field(alias="lineEnd", ge=0)]
line_start: Annotated[int, Field(alias="lineStart", ge=0)]
note: str
path: str
class MergeStrategy(Enum):
replace = "replace"
upsert = "upsert"
class MessagePhase(Enum):
commentary = "commentary"
final_answer = "final_answer"
class MisalignmentSteer(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: str
class ModeKind(Enum):
plan = "plan"
default = "default"
class ModelAccessPrograms(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cyber: Annotated[list[CyberAccessProgram], Field(description="Accepted explicit selections.")]
class ModelAvailabilityNux(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: str
class ModelListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: Annotated[
str | None, Field(description="Opaque pagination cursor returned by a previous call.")
] = None
include_hidden: Annotated[
bool | None,
Field(
alias="includeHidden",
description="When true, include models that are hidden from the default picker list.",
),
] = None
limit: Annotated[
int | None,
Field(description="Optional page size; defaults to a reasonable server-side value.", ge=0),
] = None
class ModelProviderCapabilitiesReadParams(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ModelProviderCapabilitiesReadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
image_generation: Annotated[bool, Field(alias="imageGeneration")]
namespace_tools: Annotated[bool, Field(alias="namespaceTools")]
web_search: Annotated[bool, Field(alias="webSearch")]
class ModelRerouteReason(RootModel[Literal["highRiskCyberActivity"]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Literal["highRiskCyberActivity"]
class ModelReroutedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
from_model: Annotated[str, Field(alias="fromModel")]
reason: ModelRerouteReason
thread_id: Annotated[str, Field(alias="threadId")]
to_model: Annotated[str, Field(alias="toModel")]
turn_id: Annotated[str, Field(alias="turnId")]
class ModelSafetyBufferingUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
faster_model: Annotated[str | None, Field(alias="fasterModel")] = None
model: str
reasons: list[str]
show_buffering_ui: Annotated[bool, Field(alias="showBufferingUi")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
use_cases: Annotated[list[str], Field(alias="useCases")]
class ModelServiceTier(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
description: str
id: str
name: str
class ModelUpgradeInfo(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
migration_markdown: Annotated[str | None, Field(alias="migrationMarkdown")] = None
model: str
model_link: Annotated[str | None, Field(alias="modelLink")] = None
retirement_at: Annotated[
int | None,
Field(
alias="retirementAt",
description="Informational Unix timestamp for this upgrade's scheduled retirement, if known.",
),
] = None
upgrade_copy: Annotated[str | None, Field(alias="upgradeCopy")] = None
class ModelVerification(RootModel[Literal["trustedAccessForCyber"]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Literal["trustedAccessForCyber"]
class ModelVerificationNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
verifications: list[ModelVerification]
class MultiAgentModeValue(Enum):
explicit_request_only = "explicitRequestOnly"
proactive = "proactive"
class CustomMultiAgentMode(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
custom: str
class MultiAgentMode(RootModel[MultiAgentModeValue | CustomMultiAgentMode]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
MultiAgentModeValue | CustomMultiAgentMode,
Field(
description="Controls the effective multi-agent delegation instructions for a turn. `custom` means the configured mode hint defines the policy instead of a built-in policy."
),
]
class MultiAgentVersion(Enum):
disabled = "disabled"
v1 = "v1"
v2 = "v2"
class NetworkAccess(Enum):
restricted = "restricted"
enabled = "enabled"
class NetworkApprovalProtocol(Enum):
http = "http"
https = "https"
socks5_tcp = "socks5Tcp"
socks5_udp = "socks5Udp"
class NetworkDomainPermission(Enum):
allow = "allow"
deny = "deny"
class NetworkRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
allow_local_binding: Annotated[bool | None, Field(alias="allowLocalBinding")] = None
allow_unix_sockets: Annotated[
list[str] | None,
Field(
alias="allowUnixSockets",
description="Legacy compatibility view derived from `unix_sockets`.",
),
] = None
allow_upstream_proxy: Annotated[bool | None, Field(alias="allowUpstreamProxy")] = None
allowed_domains: Annotated[
list[str] | None,
Field(
alias="allowedDomains", description="Legacy compatibility view derived from `domains`."
),
] = None
dangerously_allow_all_unix_sockets: Annotated[
bool | None, Field(alias="dangerouslyAllowAllUnixSockets")
] = None
dangerously_allow_non_loopback_proxy: Annotated[
bool | None, Field(alias="dangerouslyAllowNonLoopbackProxy")
] = None
denied_domains: Annotated[
list[str] | None,
Field(
alias="deniedDomains", description="Legacy compatibility view derived from `domains`."
),
] = None
domains: Annotated[
dict[str, Any] | None,
Field(description="Canonical network permission map for `experimental_network`."),
] = None
enabled: bool | None = None
http_port: Annotated[int | None, Field(alias="httpPort", ge=0)] = None
managed_allowed_domains_only: Annotated[
bool | None,
Field(
alias="managedAllowedDomainsOnly",
description="When true, only managed allowlist entries are respected while managed network enforcement is active.",
),
] = None
socks_port: Annotated[int | None, Field(alias="socksPort", ge=0)] = None
unix_sockets: Annotated[
dict[str, Any] | None,
Field(
alias="unixSockets",
description="Canonical unix socket permission map for `experimental_network`.",
),
] = None
class NetworkUnixSocketPermission(Enum):
allow = "allow"
deny = "deny"
class NonSteerableTurnKind(Enum):
review = "review"
compact = "compact"
class NullableGetAccountRateLimitsParams(RootModel[GetAccountRateLimitsParams | None]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
GetAccountRateLimitsParams | None, Field(title="Nullable_GetAccountRateLimitsParams")
]
class NullableGetAccountTokenUsageParams(RootModel[GetAccountTokenUsageParams | None]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
GetAccountTokenUsageParams | None, Field(title="Nullable_GetAccountTokenUsageParams")
]
class PatchApplyStatus(Enum):
in_progress = "inProgress"
completed = "completed"
failed = "failed"
declined = "declined"
class AddPatchChangeKind(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["add"], Field(title="AddPatchChangeKindType")]
class DeletePatchChangeKind(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["delete"], Field(title="DeletePatchChangeKindType")]
class UpdatePatchChangeKind(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
move_path: str | None = None
type: Annotated[Literal["update"], Field(title="UpdatePatchChangeKindType")]
class PatchChangeKind(
RootModel[AddPatchChangeKind | DeletePatchChangeKind | UpdatePatchChangeKind]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: AddPatchChangeKind | DeletePatchChangeKind | UpdatePatchChangeKind
class PathUri(RootModel[str]):
model_config = ConfigDict(
populate_by_name=True,
)
root: str
class PermissionProfileListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: Annotated[
str | None, Field(description="Opaque pagination cursor returned by a previous call.")
] = None
cwd: Annotated[
str | None,
Field(description="Optional working directory to resolve project config layers."),
] = None
limit: Annotated[
int | None, Field(description="Optional page size; defaults to the full result set.", ge=0)
] = None
class PermissionProfileSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
allowed: Annotated[
bool, Field(description="Whether the effective requirements allow selecting this profile.")
]
description: Annotated[
str | None, Field(description="Optional user-facing description for display in clients.")
] = None
id: Annotated[str, Field(description="Available permission profile identifier.")]
class Personality(Enum):
none = "none"
friendly = "friendly"
pragmatic = "pragmatic"
class PlanDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
delta: str
item_id: Annotated[str, Field(alias="itemId")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class PlanType(str, Enum):
free = "free"
go = "go"
plus = "plus"
pro = "pro"
prolite = "prolite"
team = "team"
self_serve_business_prolite = "self_serve_business_prolite"
self_serve_business_usage_based = "self_serve_business_usage_based"
business = "business"
ent26 = "ent26"
enterprise_cbp_automation = "enterprise_cbp_automation"
enterprise_cbp_usage_based = "enterprise_cbp_usage_based"
enterprise = "enterprise"
edu = "edu"
edu_plus = "edu_plus"
edu_pro = "edu_pro"
unknown = "unknown"
@classmethod
def _missing_(cls, value: object) -> PlanType | None:
if not isinstance(value, str) or not value:
return None
member = str.__new__(cls, value)
member._name_ = value
member._value_ = value
return member
class PluginAuthPolicy(Enum):
on_install = "ON_INSTALL"
on_use = "ON_USE"
class PluginAvailability(Enum):
disabled_by_admin = "DISABLED_BY_ADMIN"
available = "AVAILABLE"
class PluginDisabledReason(Enum):
disabled_by_admin = "disabled_by_admin"
plan_not_eligible = "plan_not_eligible"
required_app_unavailable = "required_app_unavailable"
unknown = "unknown"
class PluginHookSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
event_name: Annotated[HookEventName, Field(alias="eventName")]
key: str
class PluginInstallParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
install_attempt_id: Annotated[
str | None,
Field(
alias="installAttemptId",
description="Client-generated identifier used to correlate one installation attempt.",
),
] = None
marketplace_path: Annotated[AbsolutePathBuf | None, Field(alias="marketplacePath")] = None
plugin_name: Annotated[str, Field(alias="pluginName")]
remote_marketplace_name: Annotated[str | None, Field(alias="remoteMarketplaceName")] = None
class PluginInstallPolicy(Enum):
not_available = "NOT_AVAILABLE"
available = "AVAILABLE"
installed_by_default = "INSTALLED_BY_DEFAULT"
class PluginInstallPolicySource(Enum):
workspace_setting = "WORKSPACE_SETTING"
implicit_canonical_app = "IMPLICIT_CANONICAL_APP"
class PluginInstallResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
apps_needing_auth: Annotated[list[AppSummary], Field(alias="appsNeedingAuth")]
auth_policy: Annotated[PluginAuthPolicy, Field(alias="authPolicy")]
class PluginInstalledParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwds: Annotated[
list[AbsolutePathBuf] | None,
Field(description="Optional working directories used to discover repo marketplaces."),
] = None
install_suggestion_plugin_names: Annotated[
list[str] | None,
Field(
alias="installSuggestionPluginNames",
description="Additional uninstalled plugin names that should be returned when present locally. This is used by mention surfaces that intentionally expose install entrypoints.",
),
] = None
class PluginInterface(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
brand_color: Annotated[str | None, Field(alias="brandColor")] = None
capabilities: list[str]
category: str | None = None
composer_icon: Annotated[
AbsolutePathBuf | None,
Field(
alias="composerIcon",
description="Local composer icon path, resolved from the installed plugin package.",
),
] = None
composer_icon_url: Annotated[
str | None,
Field(
alias="composerIconUrl", description="Remote composer icon URL from the plugin catalog."
),
] = None
default_prompt: Annotated[
list[str] | None,
Field(
alias="defaultPrompt",
description="Starter prompts for the plugin. Capped at 3 entries with a maximum of 128 characters per entry.",
),
] = None
developer_name: Annotated[str | None, Field(alias="developerName")] = None
display_name: Annotated[str | None, Field(alias="displayName")] = None
logo: Annotated[
AbsolutePathBuf | None,
Field(description="Local logo path, resolved from the installed plugin package."),
] = None
logo_dark: Annotated[
AbsolutePathBuf | None,
Field(
alias="logoDark",
description="Local dark-mode logo path, resolved from the installed plugin package.",
),
] = None
logo_url: Annotated[
str | None, Field(alias="logoUrl", description="Remote logo URL from the plugin catalog.")
] = None
logo_url_dark: Annotated[
str | None,
Field(
alias="logoUrlDark", description="Remote dark-mode logo URL from the plugin catalog."
),
] = None
long_description: Annotated[str | None, Field(alias="longDescription")] = None
privacy_policy_url: Annotated[str | None, Field(alias="privacyPolicyUrl")] = None
screenshot_urls: Annotated[
list[str],
Field(
alias="screenshotUrls", description="Remote screenshot URLs from the plugin catalog."
),
]
screenshots: Annotated[
list[AbsolutePathBuf],
Field(description="Local screenshot paths, resolved from the installed plugin package."),
]
short_description: Annotated[str | None, Field(alias="shortDescription")] = None
terms_of_service_url: Annotated[str | None, Field(alias="termsOfServiceUrl")] = None
website_url: Annotated[str | None, Field(alias="websiteUrl")] = None
class PluginListMarketplaceKind(Enum):
local = "local"
vertical = "vertical"
workspace_directory = "workspace-directory"
shared_with_me = "shared-with-me"
created_by_me_remote = "created-by-me-remote"
class PluginListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwds: Annotated[
list[AbsolutePathBuf] | None,
Field(
description="Optional working directories used to discover repo marketplaces. When omitted, only home-scoped marketplaces and the official curated marketplace are considered."
),
] = None
force_refetch: Annotated[
bool | None,
Field(
alias="forceRefetch",
description="Whether the client requests a fresh remote plugin catalog fetch.",
),
] = None
marketplace_kinds: Annotated[
list[PluginListMarketplaceKind] | None,
Field(
alias="marketplaceKinds",
description="Optional marketplace kind filter. When omitted, only local marketplaces are queried, plus the default remote catalog when enabled by feature flag.",
),
] = None
class PluginReadParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
marketplace_path: Annotated[AbsolutePathBuf | None, Field(alias="marketplacePath")] = None
plugin_name: Annotated[str, Field(alias="pluginName")]
remote_marketplace_name: Annotated[str | None, Field(alias="remoteMarketplaceName")] = None
class PluginReconcileChangedPlugin(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
has_apps: Annotated[bool, Field(alias="hasApps")]
has_hooks: Annotated[bool, Field(alias="hasHooks")]
has_mcps: Annotated[bool, Field(alias="hasMcps")]
has_skills: Annotated[
bool,
Field(
alias="hasSkills",
description="Whether either bundle declares skill roots; not a validated inventory of enabled skills.",
),
]
id: Annotated[
str, Field(description="Local plugin ID (`name@marketplace`), matching `PluginSummary.id`.")
]
class PluginReconcileParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
reason: Annotated[
str | None,
Field(
description="Optional client-provided reason recorded with the reconciliation attempt."
),
] = None
class PluginReconcileResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
changed_plugins: Annotated[
list[PluginReconcileChangedPlugin],
Field(
alias="changedPlugins",
description="Plugins affected by bundle changes, enablement changes, or removals. Installed-state changes compare against the previous cached snapshot, including cached reinstalls. Removal hints survive cache cleanup failures; unchanged plugins are omitted.",
),
]
failed_materialization_remote_plugin_ids: Annotated[
list[str],
Field(
alias="failedMaterializationRemotePluginIds",
description="Subset of failures for which the requested bundle could not be materialized. A previously cached version may still be available.",
),
]
failed_remote_plugin_ids: Annotated[
list[str],
Field(
alias="failedRemotePluginIds",
description="Backend remote plugin IDs whose bundle or identity update failed.",
),
]
class PluginSearchScope(Enum):
global_ = "global"
workspace = "workspace"
personal = "personal"
class PluginShareCheckoutParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
remote_plugin_id: Annotated[str, Field(alias="remotePluginId")]
class PluginShareCheckoutResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
marketplace_name: Annotated[str, Field(alias="marketplaceName")]
marketplace_path: Annotated[AbsolutePathBuf, Field(alias="marketplacePath")]
plugin_id: Annotated[str, Field(alias="pluginId")]
plugin_name: Annotated[str, Field(alias="pluginName")]
plugin_path: Annotated[AbsolutePathBuf, Field(alias="pluginPath")]
remote_plugin_id: Annotated[str, Field(alias="remotePluginId")]
remote_version: Annotated[str | None, Field(alias="remoteVersion")] = None
class PluginShareDeleteParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
remote_plugin_id: Annotated[str, Field(alias="remotePluginId")]
class PluginShareDeleteResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class PluginShareDiscoverability(Enum):
listed = "LISTED"
unlisted = "UNLISTED"
private = "PRIVATE"
class PluginShareListParams(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class PluginSharePrincipalRole(Enum):
reader = "reader"
editor = "editor"
owner = "owner"
class PluginSharePrincipalType(Enum):
user = "user"
group = "group"
workspace = "workspace"
class PluginShareSaveResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
can_publish_to_workspace: Annotated[bool | None, Field(alias="canPublishToWorkspace")] = None
remote_plugin_id: Annotated[str, Field(alias="remotePluginId")]
share_url: Annotated[str, Field(alias="shareUrl")]
class PluginShareTargetRole(Enum):
reader = "reader"
editor = "editor"
class PluginShareUpdateDiscoverability(Enum):
unlisted = "UNLISTED"
private = "PRIVATE"
listed = "LISTED"
class PluginSkillReadParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
remote_marketplace_name: Annotated[str, Field(alias="remoteMarketplaceName")]
remote_plugin_id: Annotated[str, Field(alias="remotePluginId")]
skill_name: Annotated[str, Field(alias="skillName")]
class PluginSkillReadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
contents: str | None = None
class LocalPluginSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: AbsolutePathBuf
type: Annotated[Literal["local"], Field(title="LocalPluginSourceType")]
class GitPluginSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: str | None = None
ref_name: Annotated[str | None, Field(alias="refName")] = None
sha: str | None = None
type: Annotated[Literal["git"], Field(title="GitPluginSourceType")]
url: str
class NpmPluginSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
package: str
registry: Annotated[
str | None,
Field(
description="Optional HTTPS registry URL. Authentication stays in the user's npm config."
),
] = None
type: Annotated[Literal["npm"], Field(title="NpmPluginSourceType")]
version: Annotated[str | None, Field(description="Optional npm version or version range.")] = (
None
)
class RemotePluginSource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["remote"], Field(title="RemotePluginSourceType")]
class PluginSource(
RootModel[LocalPluginSource | GitPluginSource | NpmPluginSource | RemotePluginSource]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: LocalPluginSource | GitPluginSource | NpmPluginSource | RemotePluginSource
class PluginUninstallParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
plugin_id: Annotated[str, Field(alias="pluginId")]
class PluginUninstallResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class PluginsMigration(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
marketplace_name: Annotated[str, Field(alias="marketplaceName")]
plugin_names: Annotated[list[str], Field(alias="pluginNames")]
class ProcessExitedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
exit_code: Annotated[int, Field(alias="exitCode", description="Process exit code.")]
process_handle: Annotated[
str,
Field(
alias="processHandle",
description="Client-supplied, connection-scoped `processHandle` from `process/spawn`.",
),
]
stderr: Annotated[
str,
Field(
description="Buffered stderr capture.\n\nEmpty when stderr was streamed via `process/outputDelta`."
),
]
stderr_cap_reached: Annotated[
bool,
Field(
alias="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.",
),
]
stdout: Annotated[
str,
Field(
description="Buffered stdout capture.\n\nEmpty when stdout was streamed via `process/outputDelta`."
),
]
stdout_cap_reached: Annotated[
bool,
Field(
alias="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.",
),
]
class ProcessOutputStream(Enum):
stdout = "stdout"
stderr = "stderr"
class ProcessTerminalSize(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cols: Annotated[int, Field(description="Terminal width in character cells.", ge=0)]
rows: Annotated[int, Field(description="Terminal height in character cells.", ge=0)]
class ProjectChangeType(Enum):
created = "created"
updated = "updated"
deleted = "deleted"
class ProjectChangedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
change_type: Annotated[ProjectChangeType, Field(alias="changeType")]
project_id: Annotated[str, Field(alias="projectId")]
class ProjectRoot(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: AbsolutePathBuf
class ProjectSortKey(Enum):
position = "position"
recency_at = "recencyAt"
class RateLimitReachedType(Enum):
rate_limit_reached = "rate_limit_reached"
workspace_owner_credits_depleted = "workspace_owner_credits_depleted"
workspace_member_credits_depleted = "workspace_member_credits_depleted"
workspace_owner_usage_limit_reached = "workspace_owner_usage_limit_reached"
workspace_member_usage_limit_reached = "workspace_member_usage_limit_reached"
class RateLimitResetCreditStatus(Enum):
available = "available"
redeeming = "redeeming"
redeemed = "redeemed"
unknown = "unknown"
class RateLimitResetType(Enum):
codex_rate_limits = "codexRateLimits"
unknown = "unknown"
class RateLimitWindow(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
resets_at: Annotated[int | None, Field(alias="resetsAt")] = None
used_percent: Annotated[int, Field(alias="usedPercent")]
window_duration_mins: Annotated[int | None, Field(alias="windowDurationMins")] = None
class RealtimeConversationVersion(Enum):
v1 = "v1"
v2 = "v2"
v3 = "v3"
class RealtimeOutputModality(Enum):
text = "text"
audio = "audio"
class RealtimeVoice(Enum):
alloy = "alloy"
arbor = "arbor"
ash = "ash"
ballad = "ballad"
breeze = "breeze"
cedar = "cedar"
coral = "coral"
cove = "cove"
echo = "echo"
ember = "ember"
juniper = "juniper"
maple = "maple"
marin = "marin"
sage = "sage"
shimmer = "shimmer"
sol = "sol"
spruce = "spruce"
vale = "vale"
verse = "verse"
class RealtimeVoicesList(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
default_v1: Annotated[RealtimeVoice, Field(alias="defaultV1")]
default_v2: Annotated[RealtimeVoice, Field(alias="defaultV2")]
v1: list[RealtimeVoice]
v2: list[RealtimeVoice]
class ReasoningEffort(str, Enum):
none = "none"
minimal = "minimal"
low = "low"
medium = "medium"
high = "high"
xhigh = "xhigh"
max = "max"
ultra = "ultra"
@classmethod
def _missing_(cls, value: object) -> ReasoningEffort | None:
if not isinstance(value, str) or not value:
return None
member = str.__new__(cls, value)
member._name_ = value
member._value_ = value
return member
class ReasoningEffortOption(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
description: str
reasoning_effort: Annotated[ReasoningEffort, Field(alias="reasoningEffort")]
class ReasoningTextReasoningItemContent(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
text: str
type: Annotated[Literal["reasoning_text"], Field(title="ReasoningTextReasoningItemContentType")]
class TextReasoningItemContent(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
text: str
type: Annotated[Literal["text"], Field(title="TextReasoningItemContentType")]
class ReasoningItemContent(RootModel[ReasoningTextReasoningItemContent | TextReasoningItemContent]):
model_config = ConfigDict(
populate_by_name=True,
)
root: ReasoningTextReasoningItemContent | TextReasoningItemContent
class SummaryTextReasoningItemReasoningSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
text: str
type: Annotated[
Literal["summary_text"], Field(title="SummaryTextReasoningItemReasoningSummaryType")
]
class ReasoningItemReasoningSummary(RootModel[SummaryTextReasoningItemReasoningSummary]):
model_config = ConfigDict(
populate_by_name=True,
)
root: SummaryTextReasoningItemReasoningSummary
class ReasoningSummaryValue(Enum):
auto = "auto"
concise = "concise"
detailed = "detailed"
class ReasoningSummary(RootModel[ReasoningSummaryValue | Literal["none"]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
ReasoningSummaryValue | Literal["none"],
Field(
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"
),
]
class ReasoningSummaryPartAddedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item_id: Annotated[str, Field(alias="itemId")]
summary_index: Annotated[int, Field(alias="summaryIndex")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class ReasoningSummaryTextDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
delta: str
item_id: Annotated[str, Field(alias="itemId")]
summary_index: Annotated[int, Field(alias="summaryIndex")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class ReasoningTextDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
content_index: Annotated[int, Field(alias="contentIndex")]
delta: str
item_id: Annotated[str, Field(alias="itemId")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class RemoteControlConnectionStatus(Enum):
disabled = "disabled"
connecting = "connecting"
connected = "connected"
errored = "errored"
class RemoteControlDisableParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
ephemeral: bool | None = None
class RemoteControlEnableParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
ephemeral: bool | None = None
class RemoteControlStatusChangedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
environment_id: Annotated[str | None, Field(alias="environmentId")] = None
installation_id: Annotated[str, Field(alias="installationId")]
server_name: Annotated[str, Field(alias="serverName")]
status: RemoteControlConnectionStatus
class RequestId(RootModel[str | int]):
model_config = ConfigDict(
populate_by_name=True,
)
root: str | int
class ResidencyRequirement(RootModel[Literal["us"]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Literal["us"]
class Resource(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
field_meta: Annotated[Any | None, Field(alias="_meta")] = None
annotations: Any | None = None
description: str | None = None
icons: list | None = None
mime_type: Annotated[str | None, Field(alias="mimeType")] = None
name: str
size: int | None = None
title: str | None = None
uri: str
class ResourceContent1(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
field_meta: Annotated[Any | None, Field(alias="_meta")] = None
mime_type: Annotated[str | None, Field(alias="mimeType")] = None
text: str
uri: Annotated[str, Field(description="The URI of this resource.")]
class ResourceContent2(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
field_meta: Annotated[Any | None, Field(alias="_meta")] = None
blob: str
mime_type: Annotated[str | None, Field(alias="mimeType")] = None
uri: Annotated[str, Field(description="The URI of this resource.")]
class ResourceContent(RootModel[ResourceContent1 | ResourceContent2]):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
ResourceContent1 | ResourceContent2,
Field(description="Contents returned when reading a resource from an MCP server."),
]
class ResourceTemplate(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
annotations: Any | None = None
description: str | None = None
mime_type: Annotated[str | None, Field(alias="mimeType")] = None
name: str
title: str | None = None
uri_template: Annotated[str, Field(alias="uriTemplate")]
class AgentMessageResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
author: str
content: list[AgentMessageInputContent]
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
recipient: str
type: Annotated[Literal["agent_message"], Field(title="AgentMessageResponseItemType")]
class ReasoningResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
content: list[ReasoningItemContent] | None = None
encrypted_content: str | None = None
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
summary: list[ReasoningItemReasoningSummary]
type: Annotated[Literal["reasoning"], Field(title="ReasoningResponseItemType")]
class LocalShellCallResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
action: LocalShellAction
call_id: Annotated[str | None, Field(description="Set when using the Responses API.")] = None
id: Annotated[
str | None,
Field(description="Legacy id field retained for compatibility with older payloads."),
] = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
status: LocalShellStatus
type: Annotated[Literal["local_shell_call"], Field(title="LocalShellCallResponseItemType")]
class FunctionCallResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
arguments: str
call_id: str
encrypted_function_args: list[str] | None = None
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
name: str
namespace: str | None = None
type: Annotated[Literal["function_call"], Field(title="FunctionCallResponseItemType")]
class ToolSearchCallResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
arguments: Any
call_id: str | None = None
execution: str
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
status: str | None = None
type: Annotated[Literal["tool_search_call"], Field(title="ToolSearchCallResponseItemType")]
class CustomToolCallResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
call_id: str
id: str | None = None
input: str
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
name: str
namespace: str | None = None
status: str | None = None
type: Annotated[Literal["custom_tool_call"], Field(title="CustomToolCallResponseItemType")]
class ToolSearchOutputResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
call_id: str | None = None
execution: str
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
status: str
tools: list
type: Annotated[Literal["tool_search_output"], Field(title="ToolSearchOutputResponseItemType")]
class ImageGenerationCallResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
result: str
revised_prompt: str | None = None
status: str
type: Annotated[
Literal["image_generation_call"], Field(title="ImageGenerationCallResponseItemType")
]
class CompactionResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
encrypted_content: str
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
type: Annotated[Literal["compaction"], Field(title="CompactionResponseItemType")]
class CompactionTriggerResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["compaction_trigger"], Field(title="CompactionTriggerResponseItemType")]
class ContextCompactionResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
encrypted_content: str | None = None
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
type: Annotated[Literal["context_compaction"], Field(title="ContextCompactionResponseItemType")]
class OtherResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["other"], Field(title="OtherResponseItemType")]
class ResponseUsageMetadata(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
amount: str | None = None
metadata: Any | None = None
class SearchResponsesApiWebSearchAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
queries: list[str] | None = None
query: str | None = None
type: Annotated[Literal["search"], Field(title="SearchResponsesApiWebSearchActionType")]
class OpenPageResponsesApiWebSearchAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["open_page"], Field(title="OpenPageResponsesApiWebSearchActionType")]
url: str | None = None
class FindInPageResponsesApiWebSearchAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
pattern: str | None = None
type: Annotated[
Literal["find_in_page"], Field(title="FindInPageResponsesApiWebSearchActionType")
]
url: str | None = None
class OtherResponsesApiWebSearchAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["other"], Field(title="OtherResponsesApiWebSearchActionType")]
class ResponsesApiWebSearchAction(
RootModel[
SearchResponsesApiWebSearchAction
| OpenPageResponsesApiWebSearchAction
| FindInPageResponsesApiWebSearchAction
| OtherResponsesApiWebSearchAction
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
SearchResponsesApiWebSearchAction
| OpenPageResponsesApiWebSearchAction
| FindInPageResponsesApiWebSearchAction
| OtherResponsesApiWebSearchAction
)
class ReviewDelivery(Enum):
inline = "inline"
detached = "detached"
class UncommittedChangesReviewTarget(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[
Literal["uncommittedChanges"], Field(title="UncommittedChangesReviewTargetType")
]
class BaseBranchReviewTarget(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
branch: str
type: Annotated[Literal["baseBranch"], Field(title="BaseBranchReviewTargetType")]
class CommitReviewTarget(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
sha: str
title: Annotated[
str | None,
Field(description="Optional human-readable label (e.g., commit subject) for UIs."),
] = None
type: Annotated[Literal["commit"], Field(title="CommitReviewTargetType")]
class CustomReviewTarget(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
instructions: str
type: Annotated[Literal["custom"], Field(title="CustomReviewTargetType")]
class ReviewTarget(
RootModel[
UncommittedChangesReviewTarget
| BaseBranchReviewTarget
| CommitReviewTarget
| CustomReviewTarget
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
UncommittedChangesReviewTarget
| BaseBranchReviewTarget
| CommitReviewTarget
| CustomReviewTarget
)
class SandboxMode(Enum):
read_only = "read-only"
workspace_write = "workspace-write"
danger_full_access = "danger-full-access"
class DangerFullAccessSandboxPolicy(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["dangerFullAccess"], Field(title="DangerFullAccessSandboxPolicyType")]
class ReadOnlySandboxPolicy(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
network_access: Annotated[bool | None, Field(alias="networkAccess")] = False
type: Annotated[Literal["readOnly"], Field(title="ReadOnlySandboxPolicyType")]
class ExternalSandboxSandboxPolicy(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
network_access: Annotated[NetworkAccess | None, Field(alias="networkAccess")] = "restricted"
type: Annotated[Literal["externalSandbox"], Field(title="ExternalSandboxSandboxPolicyType")]
class WorkspaceWriteSandboxPolicy(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
exclude_slash_tmp: Annotated[bool | None, Field(alias="excludeSlashTmp")] = False
exclude_tmpdir_env_var: Annotated[bool | None, Field(alias="excludeTmpdirEnvVar")] = False
network_access: Annotated[bool | None, Field(alias="networkAccess")] = False
type: Annotated[Literal["workspaceWrite"], Field(title="WorkspaceWriteSandboxPolicyType")]
writable_roots: Annotated[list[AbsolutePathBuf] | None, Field(alias="writableRoots")] = []
class SandboxPolicy(
RootModel[
DangerFullAccessSandboxPolicy
| ReadOnlySandboxPolicy
| ExternalSandboxSandboxPolicy
| WorkspaceWriteSandboxPolicy
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
DangerFullAccessSandboxPolicy
| ReadOnlySandboxPolicy
| ExternalSandboxSandboxPolicy
| WorkspaceWriteSandboxPolicy
)
class SandboxWorkspaceWrite(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
exclude_slash_tmp: bool | None = False
exclude_tmpdir_env_var: bool | None = False
network_access: bool | None = False
writable_roots: list[str] | None = []
class DailyScheduledTaskSchedule(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
time: str
type: Annotated[Literal["daily"], Field(title="DailyScheduledTaskScheduleType")]
class WeekdaysScheduledTaskSchedule(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
time: str
type: Annotated[Literal["weekdays"], Field(title="WeekdaysScheduledTaskScheduleType")]
class ScheduledTaskWeekday(Enum):
mo = "MO"
tu = "TU"
we = "WE"
th = "TH"
fr = "FR"
sa = "SA"
su = "SU"
class SelectedCapabilityRoot(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: Annotated[
str, Field(description="Stable identifier supplied by the capability selection platform.")
]
location: Annotated[
CapabilityRootLocation, Field(description="Where the selected root can be resolved.")
]
class SendAddCreditsNudgeEmailParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
credit_type: Annotated[AddCreditsNudgeCreditType, Field(alias="creditType")]
class SendAddCreditsNudgeEmailResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
status: AddCreditsNudgeEmailStatus
class ServerDiagnosticsGauge(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
value: Annotated[int, Field(ge=0)]
class ServerDiagnosticsProcess(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: Annotated[int, Field(ge=0)]
physical_footprint_bytes: Annotated[int | None, Field(alias="physicalFootprintBytes", ge=0)] = (
None
)
resident_memory_bytes: Annotated[int | None, Field(alias="residentMemoryBytes", ge=0)] = None
class ProjectChangedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["project/changed"], Field(title="Project/changedNotificationMethod")]
params: ProjectChangedNotification
class ThreadEnvironmentConnectedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/environment/connected"],
Field(title="Thread/environment/connectedNotificationMethod"),
]
params: EnvironmentConnectionNotification
class ThreadEnvironmentDisconnectedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/environment/disconnected"],
Field(title="Thread/environment/disconnectedNotificationMethod"),
]
params: EnvironmentConnectionNotification
class ItemAgentMessageDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/agentMessage/delta"], Field(title="Item/agentMessage/deltaNotificationMethod")
]
params: AgentMessageDeltaNotification
class ItemPlanDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["item/plan/delta"], Field(title="Item/plan/deltaNotificationMethod")]
params: PlanDeltaNotification
class ProcessExitedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["process/exited"], Field(title="Process/exitedNotificationMethod")]
params: ProcessExitedNotification
class ItemCommandExecutionOutputDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/commandExecution/outputDelta"],
Field(title="Item/commandExecution/outputDeltaNotificationMethod"),
]
params: CommandExecutionOutputDeltaNotification
class ItemFileChangeOutputDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/fileChange/outputDelta"],
Field(title="Item/fileChange/outputDeltaNotificationMethod"),
]
params: FileChangeOutputDeltaNotification
class ItemMcpToolCallProgressServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/mcpToolCall/progress"],
Field(title="Item/mcpToolCall/progressNotificationMethod"),
]
params: McpToolCallProgressNotification
class McpServerOauthLoginCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["mcpServer/oauthLogin/completed"],
Field(title="McpServer/oauthLogin/completedNotificationMethod"),
]
params: McpServerOauthLoginCompletedNotification
class McpServerStartupStatusUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["mcpServer/startupStatus/updated"],
Field(title="McpServer/startupStatus/updatedNotificationMethod"),
]
params: McpServerStatusUpdatedNotification
class McpServerEventStreamNotificationServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["mcpServer/event/stream/notification"],
Field(title="McpServer/event/stream/notificationNotificationMethod"),
]
params: McpServerEventStreamNotification
class RemoteControlStatusChangedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["remoteControl/status/changed"],
Field(title="RemoteControl/status/changedNotificationMethod"),
]
params: RemoteControlStatusChangedNotification
class FsChangedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["fs/changed"], Field(title="Fs/changedNotificationMethod")]
params: FsChangedNotification
class ItemReasoningSummaryTextDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/reasoning/summaryTextDelta"],
Field(title="Item/reasoning/summaryTextDeltaNotificationMethod"),
]
params: ReasoningSummaryTextDeltaNotification
class ItemReasoningSummaryPartAddedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/reasoning/summaryPartAdded"],
Field(title="Item/reasoning/summaryPartAddedNotificationMethod"),
]
params: ReasoningSummaryPartAddedNotification
class ItemReasoningTextDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/reasoning/textDelta"],
Field(title="Item/reasoning/textDeltaNotificationMethod"),
]
params: ReasoningTextDeltaNotification
class ThreadCompactedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/compacted"], Field(title="Thread/compactedNotificationMethod")
]
params: ContextCompactedNotification
class ModelReroutedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["model/rerouted"], Field(title="Model/reroutedNotificationMethod")]
params: ModelReroutedNotification
class ModelVerificationServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["model/verification"], Field(title="Model/verificationNotificationMethod")
]
params: ModelVerificationNotification
class ModelProviderAuthRecoveryStartedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["modelProvider/authRecoveryStarted"],
Field(title="ModelProvider/authRecoveryStartedNotificationMethod"),
]
params: AuthRecoveryNotification
class ModelProviderAuthRecoveryCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["modelProvider/authRecoveryCompleted"],
Field(title="ModelProvider/authRecoveryCompletedNotificationMethod"),
]
params: AuthRecoveryNotification
class ModelSafetyBufferingUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["model/safetyBuffering/updated"],
Field(title="Model/safetyBuffering/updatedNotificationMethod"),
]
params: ModelSafetyBufferingUpdatedNotification
class GuardianWarningServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["guardianWarning"], Field(title="GuardianWarningNotificationMethod")]
params: GuardianWarningNotification
class DeprecationNoticeServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["deprecationNotice"], Field(title="DeprecationNoticeNotificationMethod")
]
params: DeprecationNoticeNotification
class FuzzyFileSearchSessionUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["fuzzyFileSearch/sessionUpdated"],
Field(title="FuzzyFileSearch/sessionUpdatedNotificationMethod"),
]
params: FuzzyFileSearchSessionUpdatedNotification
class FuzzyFileSearchSessionCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["fuzzyFileSearch/sessionCompleted"],
Field(title="FuzzyFileSearch/sessionCompletedNotificationMethod"),
]
params: FuzzyFileSearchSessionCompletedNotification
class ServerRequestResolvedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
request_id: Annotated[RequestId, Field(alias="requestId")]
thread_id: Annotated[str, Field(alias="threadId")]
class SessionMigration(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: str
path: str
title: str | None = None
class SessionSourceValue(Enum):
cli = "cli"
vscode = "vscode"
exec = "exec"
app_server = "appServer"
unknown = "unknown"
class CustomSessionSource(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
custom: str
class Settings(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
developer_instructions: str | None = None
model: str
reasoning_effort: ReasoningEffort | None = None
class SkillErrorInfo(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: str
path: str
class SkillInterface(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
brand_color: Annotated[str | None, Field(alias="brandColor")] = None
default_prompt: Annotated[str | None, Field(alias="defaultPrompt")] = None
display_name: Annotated[str | None, Field(alias="displayName")] = None
icon_large: Annotated[AbsolutePathBuf | None, Field(alias="iconLarge")] = None
icon_large_url: Annotated[
str | None,
Field(alias="iconLargeUrl", description="Remote large icon URL from the plugin catalog."),
] = None
icon_small: Annotated[AbsolutePathBuf | None, Field(alias="iconSmall")] = None
icon_small_url: Annotated[
str | None,
Field(alias="iconSmallUrl", description="Remote small icon URL from the plugin catalog."),
] = None
short_description: Annotated[str | None, Field(alias="shortDescription")] = None
class SkillMigration(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
class SkillScope(Enum):
user = "user"
repo = "repo"
system = "system"
admin = "admin"
class SkillSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
description: str
enabled: bool
interface: SkillInterface | None = None
name: str
path: AbsolutePathBuf | None = None
short_description: Annotated[str | None, Field(alias="shortDescription")] = None
class SkillToolDependency(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
command: str | None = None
description: str | None = None
transport: str | None = None
type: str
url: str | None = None
value: str
class SkillsChangedNotification(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class SkillsConfigWriteParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
enabled: bool
name: Annotated[str | None, Field(description="Name-based selector.")] = None
path: Annotated[AbsolutePathBuf | None, Field(description="Path-based selector.")] = None
class SkillsConfigWriteResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
effective_enabled: Annotated[bool, Field(alias="effectiveEnabled")]
class SkillsExtraRootsSetParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
extra_roots: Annotated[list[AbsolutePathBuf], Field(alias="extraRoots")]
class SkillsExtraRootsSetResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class SkillsListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwds: Annotated[
list[str] | None,
Field(description="When empty, defaults to the current session working directory."),
] = None
force_reload: Annotated[
bool | None,
Field(
alias="forceReload",
description="When true, bypass the skills cache and re-scan skills from disk.",
),
] = None
class SortDirection(Enum):
asc = "asc"
desc = "desc"
class SpendControlLimitSnapshot(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
limit: str
remaining_percent: Annotated[int, Field(alias="remainingPercent")]
resets_at: Annotated[int, Field(alias="resetsAt")]
used: str
class StrictReviewRequiredNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
started_at_ms: Annotated[
int,
Field(
alias="startedAtMs",
description="Unix timestamp (in milliseconds) when this review started.",
),
]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class SubAgentActivityKind(Enum):
started = "started"
interacted = "interacted"
interrupted = "interrupted"
completed = "completed"
class SubAgentSourceValue(Enum):
review = "review"
compact = "compact"
memory_consolidation = "memory_consolidation"
class OtherSubAgentSource(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
other: str
class SubagentMigration(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
class TerminalInteractionNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item_id: Annotated[str, Field(alias="itemId")]
process_id: Annotated[str, Field(alias="processId")]
stdin: str
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class TextElement(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
byte_range: Annotated[
ByteRange,
Field(
alias="byteRange",
description="Byte range in the parent `text` buffer that this element occupies.",
),
]
placeholder: Annotated[
str | None,
Field(
description="Optional human-readable placeholder for the element, displayed in the UI."
),
] = None
class TextPosition(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
column: Annotated[
int, Field(description="1-based column number (in Unicode scalar values).", ge=0)
]
line: Annotated[int, Field(description="1-based line number.", ge=0)]
class TextRange(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
end: TextPosition
start: TextPosition
class ThreadActiveFlag(Enum):
waiting_on_approval = "waitingOnApproval"
waiting_on_user_input = "waitingOnUserInput"
class ThreadApproveGuardianDeniedActionParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
event: Annotated[
Any, Field(description="Serialized `codex_protocol::protocol::GuardianAssessmentEvent`.")
]
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadApproveGuardianDeniedActionResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadArchiveParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadArchiveResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadArchivedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadAttachment(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
attachment_type: Annotated[str, Field(alias="attachmentType")]
created_at: Annotated[int, Field(alias="createdAt")]
id: str
identity_key: Annotated[str, Field(alias="identityKey")]
payload: Any
class ThreadAttachmentAddOutcome(Enum):
created = "created"
existing = "existing"
class ThreadAttachmentAddParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
attachment_type: Annotated[str, Field(alias="attachmentType")]
identity_key: Annotated[str, Field(alias="identityKey")]
payload: Any
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadAttachmentAddResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
attachment: ThreadAttachment
outcome: ThreadAttachmentAddOutcome
class ThreadAttachmentListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: str | None = None
limit: Annotated[int | None, Field(ge=0)] = None
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadAttachmentListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[ThreadAttachment]
next_cursor: Annotated[str | None, Field(alias="nextCursor")] = None
class ThreadAttachmentOperation(Enum):
created = "created"
deleted = "deleted"
class ThreadAttachmentRemoveParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
attachment_type: Annotated[str, Field(alias="attachmentType")]
identity_key: Annotated[str, Field(alias="identityKey")]
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadAttachmentRemoveResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadAttachmentUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
attachment_id: Annotated[str, Field(alias="attachmentId")]
attachment_type: Annotated[str, Field(alias="attachmentType")]
identity_key: Annotated[str, Field(alias="identityKey")]
operation: ThreadAttachmentOperation
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadClosedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadCompactStartParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadCompactStartResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadDeleteParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadDeleteResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadDeletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadEnvironment(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: LegacyAppPathString
environment_id: Annotated[str, Field(alias="environmentId")]
runtime_workspace_roots: Annotated[
list[LegacyAppPathString], Field(alias="runtimeWorkspaceRoots")
]
class ThreadExtra(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadGoalClearParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadGoalClearResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cleared: bool
class ThreadGoalClearedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadGoalGetParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadGoalStatus(Enum):
active = "active"
paused = "paused"
blocked = "blocked"
usage_limited = "usageLimited"
budget_limited = "budgetLimited"
complete = "complete"
class ThreadHistoryMode(Enum):
legacy = "legacy"
paginated = "paginated"
class ThreadId(RootModel[str]):
model_config = ConfigDict(
populate_by_name=True,
)
root: str
class ThreadInjectItemsParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
items: Annotated[
list,
Field(
description="Raw Responses API items to append to the thread's model-visible history."
),
]
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadInjectItemsResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class HookPromptThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
fragments: list[HookPromptFragment]
id: str
type: Annotated[Literal["hookPrompt"], Field(title="HookPromptThreadItemType")]
class PlanThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
text: str
type: Annotated[Literal["plan"], Field(title="PlanThreadItemType")]
class ReasoningThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
content: list[str] | None = []
id: str
summary: list[str] | None = []
type: Annotated[Literal["reasoning"], Field(title="ReasoningThreadItemType")]
class McpToolCallThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
app_context: Annotated[McpToolCallAppContext | None, Field(alias="appContext")] = None
arguments: Any
duration_ms: Annotated[
int | None,
Field(alias="durationMs", description="The duration of the MCP tool call in milliseconds."),
] = None
error: McpToolCallError | None = None
id: str
mcp_app_resource_uri: Annotated[
str | None,
Field(
alias="mcpAppResourceUri",
description="Legacy compatibility field; prefer `mcpAppUi.resourceUri` when available.",
),
] = None
mcp_app_ui: Annotated[
McpAppUi | None,
Field(
alias="mcpAppUi",
description="Presentation captured from the invoked descriptor; absent in older history.",
),
] = None
plugin_id: Annotated[str | None, Field(alias="pluginId")] = None
read_only_hint: Annotated[bool | None, Field(alias="readOnlyHint")] = None
result: McpToolCallResult | None = None
server: str
status: McpToolCallStatus
tool: str
type: Annotated[Literal["mcpToolCall"], Field(title="McpToolCallThreadItemType")]
class DynamicToolCallThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
arguments: Any
content_items: Annotated[
list[DynamicToolCallOutputContentItem] | None, Field(alias="contentItems")
] = None
duration_ms: Annotated[
int | None,
Field(
alias="durationMs", description="The duration of the dynamic tool call in milliseconds."
),
] = None
id: str
namespace: str | None = None
status: DynamicToolCallStatus
success: bool | None = None
tool: str
type: Annotated[Literal["dynamicToolCall"], Field(title="DynamicToolCallThreadItemType")]
class SubAgentActivityThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
agent_path: Annotated[str, Field(alias="agentPath")]
agent_thread_id: Annotated[str, Field(alias="agentThreadId")]
id: str
kind: SubAgentActivityKind
type: Annotated[Literal["subAgentActivity"], Field(title="SubAgentActivityThreadItemType")]
class ImageViewThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
path: LegacyAppPathString
type: Annotated[Literal["imageView"], Field(title="ImageViewThreadItemType")]
class SleepThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
duration_ms: Annotated[int, Field(alias="durationMs", ge=0)]
id: str
type: Annotated[Literal["sleep"], Field(title="SleepThreadItemType")]
class ImageGenerationThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
failure: ImageGenerationFailure | None = None
id: str
result: str
revised_prompt: Annotated[str | None, Field(alias="revisedPrompt")] = None
saved_path: Annotated[AbsolutePathBuf | None, Field(alias="savedPath")] = None
status: str
transparent_background: Annotated[bool | None, Field(alias="transparentBackground")] = None
type: Annotated[Literal["imageGeneration"], Field(title="ImageGenerationThreadItemType")]
class EnteredReviewModeThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
review: str
type: Annotated[Literal["enteredReviewMode"], Field(title="EnteredReviewModeThreadItemType")]
class ExitedReviewModeThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
review: str
type: Annotated[Literal["exitedReviewMode"], Field(title="ExitedReviewModeThreadItemType")]
class ContextCompactionThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
type: Annotated[Literal["contextCompaction"], Field(title="ContextCompactionThreadItemType")]
class ThreadItemsListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: Annotated[
str | None,
Field(
description="Opaque cursor to pass to the next call to continue after the last item."
),
] = None
limit: Annotated[int | None, Field(description="Optional item page size.", ge=0)] = None
sort_direction: Annotated[
SortDirection | None,
Field(
alias="sortDirection",
description="Optional item pagination direction; defaults to ascending.",
),
] = None
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[
str | None,
Field(
alias="turnId",
description="Optional turn id to filter by. When omitted, returns items across the thread.",
),
] = None
class ThreadListCwdFilter(RootModel[str | list[str]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: str | list[str]
class ThreadLoadedListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: Annotated[
str | None, Field(description="Opaque pagination cursor returned by a previous call.")
] = None
limit: Annotated[
int | None, Field(description="Optional page size; defaults to no limit.", ge=0)
] = None
class ThreadLoadedListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: Annotated[
list[str], Field(description="Thread ids for sessions currently loaded in memory.")
]
next_cursor: Annotated[
str | None,
Field(
alias="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.",
),
] = None
class ThreadMemoryMode(Enum):
enabled = "enabled"
disabled = "disabled"
class ThreadMetadataGitInfoUpdateParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
branch: Annotated[
str | None,
Field(
description="Omit to leave the stored branch unchanged, set to `null` to clear it, or provide a non-empty string to replace it."
),
] = None
origin_url: Annotated[
str | None,
Field(
alias="originUrl",
description="Omit to leave the stored origin URL unchanged, set to `null` to clear it, or provide a non-empty string to replace it.",
),
] = None
sha: Annotated[
str | None,
Field(
description="Omit to leave the stored commit unchanged, set to `null` to clear it, or provide a non-empty string to replace it."
),
] = None
class ThreadMetadataUpdateParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
git_info: Annotated[
ThreadMetadataGitInfoUpdateParams | None,
Field(
alias="gitInfo",
description="Patch the stored Git metadata for this thread. Omit a field to leave it unchanged, set it to `null` to clear it, or provide a string to replace the stored value.",
),
] = None
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadNameUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
thread_name: Annotated[str | None, Field(alias="threadName")] = None
class ThreadProjectUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
project_id: Annotated[str | None, Field(alias="projectId")] = None
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadQueueChangedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadReadParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
include_turns: Annotated[
bool | None,
Field(
alias="includeTurns",
description="When true, include turns and their items from rollout history. Full-history hydration is deprecated for paginated threads; prefer a metadata-only read and page with `thread/turns/list` and `thread/items/list`.",
),
] = None
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeAudioChunk(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: str
item_id: Annotated[str | None, Field(alias="itemId")] = None
num_channels: Annotated[int, Field(alias="numChannels", ge=0)]
sample_rate: Annotated[int, Field(alias="sampleRate", ge=0)]
samples_per_channel: Annotated[int | None, Field(alias="samplesPerChannel", ge=0)] = None
class WholeItemThreadRealtimeBemItemPresentation(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[
Literal["wholeItem"], Field(title="WholeItemThreadRealtimeBemItemPresentationType")
]
class InlineMarkdownThreadRealtimeBemItemPresentation(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[
Literal["inlineMarkdown"],
Field(title="InlineMarkdownThreadRealtimeBemItemPresentationType"),
]
class InlineVisualizationThreadRealtimeBemItemPresentation(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
index: Annotated[int, Field(ge=0)]
type: Annotated[
Literal["inlineVisualization"],
Field(title="InlineVisualizationThreadRealtimeBemItemPresentationType"),
]
class ThreadRealtimeBemItemPresentation(
RootModel[
WholeItemThreadRealtimeBemItemPresentation
| InlineMarkdownThreadRealtimeBemItemPresentation
| InlineVisualizationThreadRealtimeBemItemPresentation
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
WholeItemThreadRealtimeBemItemPresentation
| InlineMarkdownThreadRealtimeBemItemPresentation
| InlineVisualizationThreadRealtimeBemItemPresentation,
Field(
description="EXPERIMENTAL - how an existing agent item appears in a realtime conversation."
),
]
class ThreadRealtimeClosedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
reason: str | None = None
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeErrorNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: str
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeInitialItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
role: ConversationTextRole
text: str
class RealtimeSessionStartedThreadRealtimeItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
realtime_session_id: Annotated[str, Field(alias="realtimeSessionId")]
type: Annotated[
Literal["realtimeSessionStarted"],
Field(title="RealtimeSessionStartedThreadRealtimeItemType"),
]
class BemItemPromotedThreadRealtimeItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
realtime_session_id: Annotated[str, Field(alias="realtimeSessionId")]
item_id: str
presentation: ThreadRealtimeBemItemPresentation
turn_id: str
type: Annotated[
Literal["bemItemPromoted"], Field(title="BemItemPromotedThreadRealtimeItemType")
]
class ThreadRealtimeItemAddedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item: Any
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeItemTranscriptDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
delta: str
item_id: Annotated[str, Field(alias="itemId")]
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeOutputAudioDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
audio: ThreadRealtimeAudioChunk
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeSdpNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
sdp: str
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeSessionOutcome(Enum):
ended = "ended"
failed = "failed"
class WebsocketThreadRealtimeStartTransport(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["websocket"], Field(title="WebsocketThreadRealtimeStartTransportType")]
class WebrtcThreadRealtimeStartTransport(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
sdp: Annotated[
str,
Field(
description="SDP offer generated by a WebRTC RTCPeerConnection after configuring audio and the realtime events data channel."
),
]
type: Annotated[Literal["webrtc"], Field(title="WebrtcThreadRealtimeStartTransportType")]
class ExistingCallThreadRealtimeStartTransport(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
call_id: Annotated[
str,
Field(
alias="callId",
description="Identifier of a realtime call already created and negotiated by the client.",
),
]
type: Annotated[
Literal["existingCall"], Field(title="ExistingCallThreadRealtimeStartTransportType")
]
class ThreadRealtimeStartTransport(
RootModel[
WebsocketThreadRealtimeStartTransport
| WebrtcThreadRealtimeStartTransport
| ExistingCallThreadRealtimeStartTransport
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
WebsocketThreadRealtimeStartTransport
| WebrtcThreadRealtimeStartTransport
| ExistingCallThreadRealtimeStartTransport,
Field(description="EXPERIMENTAL - transport used by thread realtime."),
]
class ThreadRealtimeStartedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
realtime_session_id: Annotated[str | None, Field(alias="realtimeSessionId")] = None
thread_id: Annotated[str, Field(alias="threadId")]
version: RealtimeConversationVersion
class ThreadRealtimeTranscriptDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
delta: Annotated[str, Field(description="Live transcript delta from the realtime event.")]
role: str
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeTranscriptDoneNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
role: str
text: Annotated[str, Field(description="Final complete text for the transcript part.")]
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeTranscriptRole(Enum):
user = "user"
assistant = "assistant"
class ThreadResumeParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approval_policy: Annotated[AskForApproval | None, Field(alias="approvalPolicy")] = None
approvals_reviewer: Annotated[
ApprovalsReviewer | None,
Field(
alias="approvalsReviewer",
description="Override where approval requests are routed for review on this thread and subsequent turns.",
),
] = None
base_instructions: Annotated[str | None, Field(alias="baseInstructions")] = None
config: dict[str, Any] | None = None
cwd: str | None = None
developer_instructions: Annotated[str | None, Field(alias="developerInstructions")] = None
exclude_turns: Annotated[
bool | None,
Field(
alias="excludeTurns",
description="When true, return only thread metadata and live-resume state without populating `thread.turns`. This is useful when the client plans to call `thread/turns/list` immediately after resuming. Full-history hydration is deprecated for paginated threads; use this with `thread/turns/list` and `thread/items/list` instead.",
),
] = None
model: Annotated[
str | None, Field(description="Configuration overrides for the resumed thread, if any.")
] = None
model_provider: Annotated[str | None, Field(alias="modelProvider")] = None
personality: Annotated[
Personality | None,
Field(
description="@deprecated `friendly` and `pragmatic` no longer select a style. Changing this does not rewrite the thread's existing instructions."
),
] = None
sandbox: SandboxMode | None = None
service_tier: Annotated[str | None, Field(alias="serviceTier")] = None
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRevertParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
before_turn_id: Annotated[
str,
Field(
alias="beforeTurnId",
description="Turn excluded from the replacement history, together with every later turn.",
),
]
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRevertedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadSearchSortKey(Enum):
created_at = "created_at"
updated_at = "updated_at"
recency_at = "recency_at"
class ThreadSectionAppearance(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
color: str | None = None
icon: str | None = None
class ThreadSectionCreateParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
appearance: ThreadSectionAppearance | None = None
name: Annotated[str, Field(description="The user-visible name of the section.")]
class ThreadSectionDeleteParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
section_id: Annotated[
str,
Field(
alias="sectionId",
description="The stable, server-generated identity of the section to delete.",
),
]
class ThreadSectionDeleteResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadSectionListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: Annotated[
str | None, Field(description="Opaque pagination cursor returned by a previous call.")
] = None
limit: Annotated[
int | None, Field(description="Maximum number of sections to return.", ge=0)
] = None
class ThreadSectionMoveParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
before_thread_id: Annotated[
str | None,
Field(
alias="beforeThreadId",
description="Existing thread to insert before; omission or null appends to the section.",
),
] = None
section_id: Annotated[
str | None,
Field(
alias="sectionId",
description="Destination section, or `null` to remove the thread from its section.",
),
] = None
thread_id: Annotated[
str,
Field(alias="threadId", description="Thread to move into, within, or out of a section."),
]
class ThreadSectionMoveResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadSectionUpdateParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
appearance: Annotated[
ThreadSectionAppearance | None,
Field(
description="Omit to preserve appearance, use `null` to clear it, or provide a replacement."
),
] = None
name: Annotated[str, Field(description="The updated user-visible name of the section.")]
section_id: Annotated[
str,
Field(
alias="sectionId",
description="The stable, server-generated identity of the section to update.",
),
]
class ThreadSetNameParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadSetNameResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadShellCommandParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
command: Annotated[
str,
Field(
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."
),
]
thread_id: Annotated[str, Field(alias="threadId")]
timeout_ms: Annotated[
int | None,
Field(
alias="timeoutMs",
description="Maximum execution time in milliseconds. Defaults to one hour when omitted or null. Must be non-negative; zero requests an immediate timeout, not unlimited execution. Does not affect the immediate RPC acknowledgement.",
),
] = None
class ThreadShellCommandResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class ThreadSortKey(Enum):
created_at = "created_at"
updated_at = "updated_at"
recency_at = "recency_at"
section_position = "section_position"
class ThreadSource(str, Enum):
user = "user"
subagent = "subagent"
memory_consolidation = "memory_consolidation"
@classmethod
def _missing_(cls, value: object) -> ThreadSource | None:
if not isinstance(value, str):
return None
member = str.__new__(cls, value)
member._name_ = value
member._value_ = value
return member
class ThreadSourceKind(Enum):
cli = "cli"
vscode = "vscode"
exec = "exec"
app_server = "appServer"
sub_agent = "subAgent"
sub_agent_review = "subAgentReview"
sub_agent_compact = "subAgentCompact"
sub_agent_thread_spawn = "subAgentThreadSpawn"
sub_agent_other = "subAgentOther"
unknown = "unknown"
class ThreadStartSource(Enum):
startup = "startup"
clear = "clear"
class NotLoadedThreadStatus(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["notLoaded"], Field(title="NotLoadedThreadStatusType")]
class IdleThreadStatus(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["idle"], Field(title="IdleThreadStatusType")]
class SystemErrorThreadStatus(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["systemError"], Field(title="SystemErrorThreadStatusType")]
class ActiveThreadStatus(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
active_flags: Annotated[list[ThreadActiveFlag], Field(alias="activeFlags")]
type: Annotated[Literal["active"], Field(title="ActiveThreadStatusType")]
class ThreadStatus(
RootModel[
NotLoadedThreadStatus | IdleThreadStatus | SystemErrorThreadStatus | ActiveThreadStatus
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: NotLoadedThreadStatus | IdleThreadStatus | SystemErrorThreadStatus | ActiveThreadStatus
class ThreadStatusChangedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
status: ThreadStatus
thread_id: Annotated[str, Field(alias="threadId")]
class TurnStartedThreadTimelineEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
position: Annotated[int, Field(ge=0)]
started_at: int | None = None
turn_id: str
type: Annotated[Literal["turnStarted"], Field(title="TurnStartedThreadTimelineEntryType")]
class ThreadUnarchiveParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadUnarchivedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadUnsubscribeParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadUnsubscribeStatus(Enum):
not_loaded = "notLoaded"
not_subscribed = "notSubscribed"
unsubscribed = "unsubscribed"
class ThreadUsageBreakdownGroup(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cached_input_tokens: Annotated[int | None, Field(alias="cachedInputTokens")] = None
estimated_usage_credits_micros: Annotated[int, Field(alias="estimatedUsageCreditsMicros")]
input_tokens: Annotated[int | None, Field(alias="inputTokens")] = None
model: str | None = None
net_new_input_tokens: Annotated[int | None, Field(alias="netNewInputTokens")] = None
output_tokens: Annotated[int | None, Field(alias="outputTokens")] = None
reasoning_effort: Annotated[str | None, Field(alias="reasoningEffort")] = None
speed: str | None = None
total_tokens: Annotated[int | None, Field(alias="totalTokens")] = None
class TokenUsageBreakdown(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cache_write_input_tokens: Annotated[int | None, Field(alias="cacheWriteInputTokens")] = 0
cached_input_tokens: Annotated[int, Field(alias="cachedInputTokens")]
input_tokens: Annotated[int, Field(alias="inputTokens")]
output_tokens: Annotated[int, Field(alias="outputTokens")]
reasoning_output_tokens: Annotated[int, Field(alias="reasoningOutputTokens")]
total_tokens: Annotated[int, Field(alias="totalTokens")]
class Tool(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
field_meta: Annotated[Any | None, Field(alias="_meta")] = None
annotations: Any | None = None
description: str | None = None
icons: list | None = None
input_schema: Annotated[Any, Field(alias="inputSchema")]
name: str
output_schema: Annotated[Any | None, Field(alias="outputSchema")] = None
title: str | None = None
class TurnDiffUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
diff: str
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class TurnEnvironmentParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: LegacyAppPathString
environment_id: Annotated[str, Field(alias="environmentId")]
runtime_workspace_roots: Annotated[
list[LegacyAppPathString] | None,
Field(
alias="runtimeWorkspaceRoots",
description="Environment-native runtime workspace roots. Omitted defaults to `cwd`.",
),
] = None
class TurnInterruptParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class TurnInterruptResponse(BaseModel):
pass
model_config = ConfigDict(
populate_by_name=True,
)
class TurnItemsView(Enum):
not_loaded = "notLoaded"
summary = "summary"
full = "full"
class TurnModerationMetadataNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
metadata: Any
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class TurnPlanStepStatus(Enum):
pending = "pending"
in_progress = "inProgress"
completed = "completed"
class TurnStatus(Enum):
completed = "completed"
interrupted = "interrupted"
failed = "failed"
in_progress = "inProgress"
class TurnSteerResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
turn_id: Annotated[str, Field(alias="turnId")]
class TextUserInput(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
text: str
text_elements: Annotated[
list[TextElement] | None,
Field(
description="UI-defined spans within `text` used to render or persist special elements."
),
] = []
type: Annotated[Literal["text"], Field(title="TextUserInputType")]
class ImageUserInput(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
detail: ImageDetail | None = None
type: Annotated[Literal["image"], Field(title="ImageUserInputType")]
url: str
class FileIdUserInput(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
detail: ImageDetail | None = None
type: Annotated[Literal["image"], Field(title="ImageUserInputType")]
file_id: Annotated[str, Field(alias="fileId")]
class LocalImageUserInput(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
detail: ImageDetail | None = None
path: str
type: Annotated[Literal["localImage"], Field(title="LocalImageUserInputType")]
class AudioUserInput(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["audio"], Field(title="AudioUserInputType")]
url: str
class LocalAudioUserInput(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: str
type: Annotated[Literal["localAudio"], Field(title="LocalAudioUserInputType")]
class SkillUserInput(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
path: str
type: Annotated[Literal["skill"], Field(title="SkillUserInputType")]
class MentionUserInput(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
path: str
type: Annotated[Literal["mention"], Field(title="MentionUserInputType")]
class UserInput(
RootModel[
TextUserInput
| ImageUserInput
| FileIdUserInput
| LocalImageUserInput
| AudioUserInput
| LocalAudioUserInput
| SkillUserInput
| MentionUserInput
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
TextUserInput
| ImageUserInput
| FileIdUserInput
| LocalImageUserInput
| AudioUserInput
| LocalAudioUserInput
| SkillUserInput
| MentionUserInput
)
class Verbosity(Enum):
low = "low"
medium = "medium"
high = "high"
class WarningNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: Annotated[str, Field(description="Concise warning message for the user.")]
thread_id: Annotated[
str | None,
Field(
alias="threadId",
description="Optional thread target when the warning applies to a specific thread.",
),
] = None
class SearchWebSearchAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
queries: list[str] | None = None
query: str | None = None
type: Annotated[Literal["search"], Field(title="SearchWebSearchActionType")]
class OpenPageWebSearchAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["openPage"], Field(title="OpenPageWebSearchActionType")]
url: str | None = None
class FindInPageWebSearchAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
pattern: str | None = None
type: Annotated[Literal["findInPage"], Field(title="FindInPageWebSearchActionType")]
url: str | None = None
class OtherWebSearchAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["other"], Field(title="OtherWebSearchActionType")]
class WebSearchAction(
RootModel[
SearchWebSearchAction
| OpenPageWebSearchAction
| FindInPageWebSearchAction
| OtherWebSearchAction
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
SearchWebSearchAction
| OpenPageWebSearchAction
| FindInPageWebSearchAction
| OtherWebSearchAction
)
class WebSearchContextSize(Enum):
low = "low"
medium = "medium"
high = "high"
class WebSearchLocation(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
city: str | None = None
country: str | None = None
region: str | None = None
timezone: str | None = None
class WebSearchMode(Enum):
disabled = "disabled"
cached = "cached"
indexed = "indexed"
live = "live"
class WebSearchToolConfig(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
allowed_domains: list[str] | None = None
context_size: WebSearchContextSize | None = None
location: WebSearchLocation | None = None
class WindowsSandboxImplementation(Enum):
elevated = "elevated"
unelevated = "unelevated"
mxc = "mxc"
class WindowsSandboxReadiness(Enum):
ready = "ready"
not_configured = "notConfigured"
update_required = "updateRequired"
class WindowsSandboxReadinessResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
status: WindowsSandboxReadiness
class WindowsSandboxSetupMode(Enum):
elevated = "elevated"
unelevated = "unelevated"
class WindowsSandboxSetupStartParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: AbsolutePathBuf | None = None
mode: WindowsSandboxSetupMode
class WindowsSandboxSetupStartResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
started: bool
class WindowsWorldWritableWarningNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
extra_count: Annotated[int, Field(alias="extraCount", ge=0)]
failed_scan: Annotated[bool, Field(alias="failedScan")]
sample_paths: Annotated[list[str], Field(alias="samplePaths")]
class WorkspaceMessageType(Enum):
headline = "headline"
announcement = "announcement"
unknown = "unknown"
class WorkspaceRouting(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
account_routing_override: Annotated[
AccountRoutingOverride, Field(alias="accountRoutingOverride")
]
backend_origin: Annotated[str, Field(alias="backendOrigin")]
chatgpt_account_id: Annotated[str, Field(alias="chatgptAccountId")]
class WriteStatus(Enum):
ok = "ok"
ok_overridden = "okOverridden"
class ChatgptAccount(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
email: str | None
plan_type: Annotated[PlanType, Field(alias="planType")]
type: Annotated[Literal["chatgpt"], Field(title="ChatgptAccountType")]
class Account(RootModel[ApiKeyAccount | ChatgptAccount | AmazonBedrockAccount]):
model_config = ConfigDict(
populate_by_name=True,
)
root: ApiKeyAccount | ChatgptAccount | AmazonBedrockAccount
class AccountLoginCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
error: str | None = None
login_id: Annotated[str | None, Field(alias="loginId")] = None
onboarding_entrypoint: Annotated[
DesktopOnboardingEntrypoint | None, Field(alias="onboardingEntrypoint")
] = None
success: bool
class AccountUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
auth_mode: Annotated[AuthMode | None, Field(alias="authMode")] = None
plan_type: Annotated[PlanType | None, Field(alias="planType")] = None
class AdditionalContextEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
kind: AdditionalContextKind
value: str
class AppConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approvals_reviewer: ApprovalsReviewer | None = None
default_tools_approval_mode: AppToolApproval | None = None
default_tools_enabled: bool | None = None
destructive_enabled: bool | None = None
enabled: bool | None = True
links: Annotated[
AppLinksConfig | None, Field(description="Per-account approval settings keyed by link ID.")
] = None
open_world_enabled: bool | None = None
tools: AppToolsConfig | None = None
class AppLinkConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approvals_reviewer: ApprovalsReviewer | None = None
default_tools_approval_mode: AppToolApproval | None = None
class AppMetadata(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
categories: list[str] | None = None
developer: str | None = None
first_party_requires_install: Annotated[
bool | None, Field(alias="firstPartyRequiresInstall")
] = None
review: AppReview | None = None
screenshots: list[AppScreenshot] | None = None
seo_description: Annotated[str | None, Field(alias="seoDescription")] = None
show_in_composer_when_unlinked: Annotated[
bool | None, Field(alias="showInComposerWhenUnlinked")
] = None
sub_categories: Annotated[list[str] | None, Field(alias="subCategories")] = None
version: str | None = None
version_id: Annotated[str | None, Field(alias="versionId")] = None
version_notes: Annotated[str | None, Field(alias="versionNotes")] = None
class AppTemplateSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
canonical_connector_id: Annotated[str | None, Field(alias="canonicalConnectorId")] = None
category: str | None = None
description: str | None = None
logo_url: Annotated[str | None, Field(alias="logoUrl")] = None
logo_url_dark: Annotated[str | None, Field(alias="logoUrlDark")] = None
materialized_app_ids: Annotated[list[str], Field(alias="materializedAppIds")]
name: str
reason: AppTemplateUnavailableReason | None = None
template_id: Annotated[str, Field(alias="templateId")]
class ApplicationNetworkRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
domains: dict[str, NetworkDomainPermission]
enabled: Annotated[
bool,
Field(description="When enabled, only explicitly allowed exact domains may be contacted."),
]
class ApplicationRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
network: ApplicationNetworkRequirements | None = None
class AppsConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
field_default: Annotated[AppsDefaultConfig | None, Field(alias="_default")] = None
class AppsInstalledResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
apps: list[InstalledApp]
class AppsReadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
apps: list[ConnectorMetadata]
missing_app_ids: Annotated[list[str], Field(alias="missingAppIds")]
class BrowserUseConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
allow_history_access: bool | None = None
default_origin_policy: BrowserUseOriginPolicyConfig | None = None
origins: dict[str, Any] | None = None
class CancelLoginAccountResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
status: CancelLoginAccountStatus
class InitializeRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["initialize"], Field(title="InitializeRequestMethod")]
params: InitializeParams
class ThreadResumeRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/resume"], Field(title="Thread/resumeRequestMethod")]
params: ThreadResumeParams
class ThreadArchiveRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/archive"], Field(title="Thread/archiveRequestMethod")]
params: ThreadArchiveParams
class ThreadDeleteRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/delete"], Field(title="Thread/deleteRequestMethod")]
params: ThreadDeleteParams
class ThreadUnsubscribeRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/unsubscribe"], Field(title="Thread/unsubscribeRequestMethod")]
params: ThreadUnsubscribeParams
class ThreadNameSetRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/name/set"], Field(title="Thread/name/setRequestMethod")]
params: ThreadSetNameParams
class ThreadGoalGetRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/goal/get"], Field(title="Thread/goal/getRequestMethod")]
params: ThreadGoalGetParams
class ThreadGoalClearRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/goal/clear"], Field(title="Thread/goal/clearRequestMethod")]
params: ThreadGoalClearParams
class ThreadMetadataUpdateRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["thread/metadata/update"], Field(title="Thread/metadata/updateRequestMethod")
]
params: ThreadMetadataUpdateParams
class ThreadAttachmentAddRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["thread/attachment/add"], Field(title="Thread/attachment/addRequestMethod")
]
params: ThreadAttachmentAddParams
class ThreadAttachmentListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["thread/attachment/list"], Field(title="Thread/attachment/listRequestMethod")
]
params: ThreadAttachmentListParams
class ThreadAttachmentRemoveRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["thread/attachment/remove"], Field(title="Thread/attachment/removeRequestMethod")
]
params: ThreadAttachmentRemoveParams
class ThreadSectionMoveRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["thread/section/move"], Field(title="Thread/section/moveRequestMethod")
]
params: ThreadSectionMoveParams
class ThreadUnarchiveRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/unarchive"], Field(title="Thread/unarchiveRequestMethod")]
params: ThreadUnarchiveParams
class ThreadCompactStartRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["thread/compact/start"], Field(title="Thread/compact/startRequestMethod")
]
params: ThreadCompactStartParams
class ThreadShellCommandRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["thread/shellCommand"], Field(title="Thread/shellCommandRequestMethod")
]
params: ThreadShellCommandParams
class ThreadApproveGuardianDeniedActionRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["thread/approveGuardianDeniedAction"],
Field(title="Thread/approveGuardianDeniedActionRequestMethod"),
]
params: ThreadApproveGuardianDeniedActionParams
class ThreadRevertRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/revert"], Field(title="Thread/revertRequestMethod")]
params: ThreadRevertParams
class ThreadSectionListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["threadSection/list"], Field(title="ThreadSection/listRequestMethod")]
params: ThreadSectionListParams
class ThreadSectionCreateRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["threadSection/create"], Field(title="ThreadSection/createRequestMethod")
]
params: ThreadSectionCreateParams
class ThreadSectionUpdateRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["threadSection/update"], Field(title="ThreadSection/updateRequestMethod")
]
params: ThreadSectionUpdateParams
class ThreadSectionDeleteRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["threadSection/delete"], Field(title="ThreadSection/deleteRequestMethod")
]
params: ThreadSectionDeleteParams
class ThreadLoadedListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/loaded/list"], Field(title="Thread/loaded/listRequestMethod")]
params: ThreadLoadedListParams
class ThreadReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/read"], Field(title="Thread/readRequestMethod")]
params: ThreadReadParams
class ThreadItemsListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/items/list"], Field(title="Thread/items/listRequestMethod")]
params: ThreadItemsListParams
class ThreadInjectItemsRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["thread/inject_items"], Field(title="Thread/injectItemsRequestMethod")
]
params: ThreadInjectItemsParams
class SkillsListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["skills/list"], Field(title="Skills/listRequestMethod")]
params: SkillsListParams
class SkillsExtraRootsSetRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["skills/extraRoots/set"], Field(title="Skills/extraRoots/setRequestMethod")
]
params: SkillsExtraRootsSetParams
class HooksListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["hooks/list"], Field(title="Hooks/listRequestMethod")]
params: HooksListParams
class MarketplaceAddRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["marketplace/add"], Field(title="Marketplace/addRequestMethod")]
params: MarketplaceAddParams
class MarketplaceRemoveRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["marketplace/remove"], Field(title="Marketplace/removeRequestMethod")]
params: MarketplaceRemoveParams
class MarketplaceUpgradeRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["marketplace/upgrade"], Field(title="Marketplace/upgradeRequestMethod")
]
params: MarketplaceUpgradeParams
class PluginListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["plugin/list"], Field(title="Plugin/listRequestMethod")]
params: PluginListParams
class PluginInstalledRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["plugin/installed"], Field(title="Plugin/installedRequestMethod")]
params: PluginInstalledParams
class PluginReconcileRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["plugin/reconcile"], Field(title="Plugin/reconcileRequestMethod")]
params: PluginReconcileParams
class PluginReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["plugin/read"], Field(title="Plugin/readRequestMethod")]
params: PluginReadParams
class PluginSkillReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["plugin/skill/read"], Field(title="Plugin/skill/readRequestMethod")]
params: PluginSkillReadParams
class PluginShareListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["plugin/share/list"], Field(title="Plugin/share/listRequestMethod")]
params: PluginShareListParams
class PluginShareCheckoutRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["plugin/share/checkout"], Field(title="Plugin/share/checkoutRequestMethod")
]
params: PluginShareCheckoutParams
class PluginShareDeleteRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["plugin/share/delete"], Field(title="Plugin/share/deleteRequestMethod")
]
params: PluginShareDeleteParams
class AppReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["app/read"], Field(title="App/readRequestMethod")]
params: AppsReadParams
class AppListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["app/list"], Field(title="App/listRequestMethod")]
params: AppsListParams
class AppInstalledRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["app/installed"], Field(title="App/installedRequestMethod")]
params: AppsInstalledParams
class FsReadFileRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fs/readFile"], Field(title="Fs/readFileRequestMethod")]
params: FsReadFileParams
class FsWriteFileRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fs/writeFile"], Field(title="Fs/writeFileRequestMethod")]
params: FsWriteFileParams
class FsCreateDirectoryRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fs/createDirectory"], Field(title="Fs/createDirectoryRequestMethod")]
params: FsCreateDirectoryParams
class FsGetMetadataRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fs/getMetadata"], Field(title="Fs/getMetadataRequestMethod")]
params: FsGetMetadataParams
class FsReadDirectoryRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fs/readDirectory"], Field(title="Fs/readDirectoryRequestMethod")]
params: FsReadDirectoryParams
class FsRemoveRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fs/remove"], Field(title="Fs/removeRequestMethod")]
params: FsRemoveParams
class FsCopyRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fs/copy"], Field(title="Fs/copyRequestMethod")]
params: FsCopyParams
class FsWatchRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fs/watch"], Field(title="Fs/watchRequestMethod")]
params: FsWatchParams
class FsUnwatchRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fs/unwatch"], Field(title="Fs/unwatchRequestMethod")]
params: FsUnwatchParams
class SkillsConfigWriteRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["skills/config/write"], Field(title="Skills/config/writeRequestMethod")
]
params: SkillsConfigWriteParams
class PluginInstallRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["plugin/install"], Field(title="Plugin/installRequestMethod")]
params: PluginInstallParams
class PluginUninstallRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["plugin/uninstall"], Field(title="Plugin/uninstallRequestMethod")]
params: PluginUninstallParams
class TurnInterruptRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["turn/interrupt"], Field(title="Turn/interruptRequestMethod")]
params: TurnInterruptParams
class ModelListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["model/list"], Field(title="Model/listRequestMethod")]
params: ModelListParams
class ModelProviderCapabilitiesReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["modelProvider/capabilities/read"],
Field(title="ModelProvider/capabilities/readRequestMethod"),
]
params: ModelProviderCapabilitiesReadParams
class ExperimentalFeatureListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["experimentalFeature/list"], Field(title="ExperimentalFeature/listRequestMethod")
]
params: ExperimentalFeatureListParams
class PermissionProfileListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["permissionProfile/list"], Field(title="PermissionProfile/listRequestMethod")
]
params: PermissionProfileListParams
class ExperimentalFeatureEnablementSetRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["experimentalFeature/enablement/set"],
Field(title="ExperimentalFeature/enablement/setRequestMethod"),
]
params: ExperimentalFeatureEnablementSetParams
class McpServerOauthLoginRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["mcpServer/oauth/login"], Field(title="McpServer/oauth/loginRequestMethod")
]
params: McpServerOauthLoginParams
class ConfigMcpServerReloadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["config/mcpServer/reload"], Field(title="Config/mcpServer/reloadRequestMethod")
]
params: None = None
class McpServerResourceReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["mcpServer/resource/read"], Field(title="McpServer/resource/readRequestMethod")
]
params: McpResourceReadParams
class McpServerToolCallRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["mcpServer/tool/call"], Field(title="McpServer/tool/callRequestMethod")
]
params: McpServerToolCallParams
class WindowsSandboxSetupStartRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["windowsSandbox/setupStart"], Field(title="WindowsSandbox/setupStartRequestMethod")
]
params: WindowsSandboxSetupStartParams
class WindowsSandboxReadinessRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["windowsSandbox/readiness"], Field(title="WindowsSandbox/readinessRequestMethod")
]
params: None = None
class AccountLoginCancelRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["account/login/cancel"], Field(title="Account/login/cancelRequestMethod")
]
params: CancelLoginAccountParams
class AccountLogoutRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["account/logout"], Field(title="Account/logoutRequestMethod")]
params: None = None
class AccountRateLimitsReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["account/rateLimits/read"], Field(title="Account/rateLimits/readRequestMethod")
]
params: GetAccountRateLimitsParams | None = None
class AccountRateLimitResetCreditConsumeRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["account/rateLimitResetCredit/consume"],
Field(title="Account/rateLimitResetCredit/consumeRequestMethod"),
]
params: ConsumeAccountRateLimitResetCreditParams
class AccountUsageReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["account/usage/read"], Field(title="Account/usage/readRequestMethod")]
params: GetAccountTokenUsageParams | None = None
class AccountWorkspaceMessagesReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["account/workspaceMessages/read"],
Field(title="Account/workspaceMessages/readRequestMethod"),
]
params: None = None
class AccountSendAddCreditsNudgeEmailRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["account/sendAddCreditsNudgeEmail"],
Field(title="Account/sendAddCreditsNudgeEmailRequestMethod"),
]
params: SendAddCreditsNudgeEmailParams
class FeedbackUploadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["feedback/upload"], Field(title="Feedback/uploadRequestMethod")]
params: FeedbackUploadParams
class CommandExecWriteRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["command/exec/write"], Field(title="Command/exec/writeRequestMethod")]
params: CommandExecWriteParams
class CommandExecTerminateRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["command/exec/terminate"], Field(title="Command/exec/terminateRequestMethod")
]
params: CommandExecTerminateParams
class ConfigReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["config/read"], Field(title="Config/readRequestMethod")]
params: ConfigReadParams
class ExternalAgentConfigDetectRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["externalAgentConfig/detect"],
Field(title="ExternalAgentConfig/detectRequestMethod"),
]
params: ExternalAgentConfigDetectParams
class ExternalAgentConfigImportReadHistoriesRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["externalAgentConfig/import/readHistories"],
Field(title="ExternalAgentConfig/import/readHistoriesRequestMethod"),
]
params: None = None
class ConfigRequirementsReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["configRequirements/read"], Field(title="ConfigRequirements/readRequestMethod")
]
params: None = None
class AccountReadRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["account/read"], Field(title="Account/readRequestMethod")]
params: GetAccountParams
class FuzzyFileSearchRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["fuzzyFileSearch"], Field(title="FuzzyFileSearchRequestMethod")]
params: FuzzyFileSearchParams
class ActiveTurnNotSteerable(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
turn_kind: Annotated[NonSteerableTurnKind, Field(alias="turnKind")]
class ActiveTurnNotSteerableCodexErrorInfo(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
active_turn_not_steerable: Annotated[
ActiveTurnNotSteerable, Field(alias="activeTurnNotSteerable")
]
class CodexErrorInfo(
RootModel[
CodexErrorInfoValue
| HttpConnectionFailedCodexErrorInfo
| ResponseStreamConnectionFailedCodexErrorInfo
| ResponseStreamDisconnectedCodexErrorInfo
| ResponseTooManyFailedAttemptsCodexErrorInfo
| ActiveTurnNotSteerableCodexErrorInfo
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
CodexErrorInfoValue
| HttpConnectionFailedCodexErrorInfo
| ResponseStreamConnectionFailedCodexErrorInfo
| ResponseStreamDisconnectedCodexErrorInfo
| ResponseTooManyFailedAttemptsCodexErrorInfo
| ActiveTurnNotSteerableCodexErrorInfo,
Field(
description="This translation layer make sure that we expose codex error code in camel case.\n\nWhen an upstream HTTP status is available (for example, from the Responses API or a provider), it is forwarded in `httpStatusCode` on the relevant `codexErrorInfo` variant."
),
]
class CollabAgentState(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
message: str | None = None
status: CollabAgentStatus
class CollaborationMode(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
mode: ModeKind
settings: Settings
class CollaborationModeMask(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
mode: ModeKind | None = None
model: str | None = None
name: str
reasoning_effort: ReasoningEffort | None = None
class ReadCommandAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
command: str
name: str
path: LegacyAppPathString
type: Annotated[Literal["read"], Field(title="ReadCommandActionType")]
class CommandAction(
RootModel[
ReadCommandAction | ListFilesCommandAction | SearchCommandAction | UnknownCommandAction
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: ReadCommandAction | ListFilesCommandAction | SearchCommandAction | UnknownCommandAction
class CommandExecOutputDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cap_reached: Annotated[
bool,
Field(
alias="capReached",
description="`true` on the final streamed chunk for a stream when `outputBytesCap` truncated later output on that stream.",
),
]
delta_base64: Annotated[
str, Field(alias="deltaBase64", description="Base64-encoded output bytes.")
]
process_id: Annotated[
str,
Field(
alias="processId",
description="Client-supplied, connection-scoped `processId` from the original `command/exec` request.",
),
]
stream: Annotated[CommandExecOutputStream, Field(description="Output stream for this chunk.")]
class CommandExecParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
command: Annotated[
list[str], Field(description="Command argv vector. Empty arrays are rejected.")
]
cwd: Annotated[
str | None, Field(description="Optional working directory. Defaults to the server cwd.")
] = None
disable_output_cap: Annotated[
bool | None,
Field(
alias="disableOutputCap",
description="Disable stdout/stderr capture truncation for this request.\n\nCannot be combined with `outputBytesCap`.",
),
] = None
disable_timeout: Annotated[
bool | None,
Field(
alias="disableTimeout",
description="Disable the timeout entirely for this request.\n\nCannot be combined with `timeoutMs`.",
),
] = None
env: Annotated[
dict[str, Any] | None,
Field(
description="Optional environment overrides merged into the server-computed environment.\n\nMatching names override inherited values. Set a key to `null` to unset an inherited variable."
),
] = None
output_bytes_cap: Annotated[
int | None,
Field(
alias="outputBytesCap",
description="Optional per-stream stdout/stderr capture cap in bytes.\n\nWhen omitted, the server default applies. Cannot be combined with `disableOutputCap`.",
ge=0,
),
] = None
process_id: Annotated[
str | None,
Field(
alias="processId",
description="Optional client-supplied, connection-scoped process id.\n\nRequired for `tty`, `streamStdin`, `streamStdoutStderr`, and follow-up `command/exec/write`, `command/exec/resize`, and `command/exec/terminate` calls. When omitted, buffered execution gets an internal id that is not exposed to the client.",
),
] = None
sandbox_policy: Annotated[
SandboxPolicy | None,
Field(
alias="sandboxPolicy",
description="Optional sandbox policy for this command.\n\nUses the same shape as thread/turn execution sandbox configuration and defaults to the user's configured policy when omitted. Cannot be combined with `permissionProfile`.",
),
] = None
size: Annotated[
CommandExecTerminalSize | None,
Field(
description="Optional initial PTY size in character cells. Only valid when `tty` is true."
),
] = None
stream_stdin: Annotated[
bool | None,
Field(
alias="streamStdin",
description="Allow follow-up `command/exec/write` requests to write stdin bytes.\n\nRequires a client-supplied `processId`.",
),
] = None
stream_stdout_stderr: Annotated[
bool | None,
Field(
alias="streamStdoutStderr",
description="Stream stdout/stderr via `command/exec/outputDelta` notifications.\n\nStreamed bytes are not duplicated into the final response and require a client-supplied `processId`.",
),
] = None
timeout_ms: Annotated[
int | None,
Field(
alias="timeoutMs",
description="Optional timeout in milliseconds.\n\nWhen omitted, the server default applies. Cannot be combined with `disableTimeout`.",
),
] = None
tty: Annotated[
bool | None,
Field(
description="Enable PTY mode.\n\nThis implies `streamStdin` and `streamStdoutStderr`."
),
] = None
class CommandExecResizeParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
process_id: Annotated[
str,
Field(
alias="processId",
description="Client-supplied, connection-scoped `processId` from the original `command/exec` request.",
),
]
size: Annotated[CommandExecTerminalSize, Field(description="New PTY size in character cells.")]
class ComputerUseRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
allow_locked_computer_use: Annotated[bool | None, Field(alias="allowLockedComputerUse")] = None
allow_persistent_approval: Annotated[bool | None, Field(alias="allowPersistentApproval")] = None
default_app_access: Annotated[AllowDenyRequirement | None, Field(alias="defaultAppAccess")] = (
None
)
macos: ComputerUseMacosRequirements | None = None
windows: ComputerUseWindowsRequirements | None = None
class ComputerUseWindowsConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
aumids: dict[str, Any] | None = None
exes: list[ComputerUseWindowsExeConfig] | None = None
class ConfigEdit(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
key_path: Annotated[str, Field(alias="keyPath")]
merge_strategy: Annotated[MergeStrategy, Field(alias="mergeStrategy")]
value: Any
class ConfigLayer(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
config: Any
disabled_reason: Annotated[str | None, Field(alias="disabledReason")] = None
name: ConfigLayerSource
version: str
class ConfigLayerMetadata(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: ConfigLayerSource
version: str
class ConfigValueWriteParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
expected_version: Annotated[str | None, Field(alias="expectedVersion")] = None
file_path: Annotated[
str | None,
Field(
alias="filePath",
description="Path to the config file to write; defaults to the user's `config.toml` when omitted.",
),
] = None
key_path: Annotated[str, Field(alias="keyPath")]
merge_strategy: Annotated[MergeStrategy, Field(alias="mergeStrategy")]
value: Any
class ConfigWarningNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
details: Annotated[
str | None, Field(description="Optional extra guidance or error details.")
] = None
path: Annotated[
str | None,
Field(description="Optional path to the config file that triggered the warning."),
] = None
range: Annotated[
TextRange | None,
Field(description="Optional range for the error location inside the config file."),
] = None
summary: Annotated[str, Field(description="Concise summary of the warning.")]
class ConfigurationReasoning(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
effort: ReasoningEffort
class InputImageContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
detail: ImageDetail | None = None
type: Annotated[Literal["input_image"], Field(title="InputImageContentItemType")]
image_url: str
class FileIdContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
detail: ImageDetail | None = None
type: Annotated[Literal["input_image"], Field(title="InputImageContentItemType")]
file_id: str
class ContentItem(
RootModel[
InputTextContentItem
| InputImageContentItem
| FileIdContentItem
| InputAudioContentItem
| OutputTextContentItem
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
InputTextContentItem
| InputImageContentItem
| FileIdContentItem
| InputAudioContentItem
| OutputTextContentItem
)
class ExperimentalFeature(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
announcement: Annotated[
str | None,
Field(
description="Announcement copy shown to users when the feature is introduced. Null when this feature is not in beta."
),
] = None
default_enabled: Annotated[
bool,
Field(alias="defaultEnabled", description="Whether this feature is enabled by default."),
]
description: Annotated[
str | None,
Field(
description="Short summary describing what the feature does. Null when this feature is not in beta."
),
] = None
display_name: Annotated[
str | None,
Field(
alias="displayName",
description="User-facing display name shown in the experimental features UI. Null when this feature is not in beta.",
),
] = None
enabled: Annotated[
bool, Field(description="Whether this feature is currently enabled in the loaded config.")
]
name: Annotated[str, Field(description="Stable key used in config.toml and CLI flag toggles.")]
stage: Annotated[
ExperimentalFeatureStage, Field(description="Lifecycle stage of this feature flag.")
]
class ExperimentalFeatureListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[ExperimentalFeature]
next_cursor: Annotated[
str | None,
Field(
alias="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.",
),
] = None
class ExternalAgentConfigImportHistoryRecordSuccessParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: str | None = None
item_type: Annotated[ExternalAgentConfigMigrationItemType, Field(alias="itemType")]
source: str | None = None
target: str | None = None
title: Annotated[
str | None, Field(description="Original title for an imported session, when available.")
] = None
class ExternalAgentConfigImportItemTypeFailure(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: str | None = None
error_type: Annotated[str | None, Field(alias="errorType")] = None
failure_stage: Annotated[str, Field(alias="failureStage")]
item_type: Annotated[ExternalAgentConfigMigrationItemType, Field(alias="itemType")]
message: str
source: str | None = None
sub_error_type: Annotated[str | None, Field(alias="subErrorType")] = None
class ExternalAgentConfigImportItemTypeSuccess(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: str | None = None
item_type: Annotated[ExternalAgentConfigMigrationItemType, Field(alias="itemType")]
source: str | None = None
target: str | None = None
title: Annotated[
str | None,
Field(description="Original title for an imported session; null for other item types."),
] = None
class ExternalAgentConfigImportTypeResult(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
failures: list[ExternalAgentConfigImportItemTypeFailure]
item_type: Annotated[ExternalAgentConfigMigrationItemType, Field(alias="itemType")]
successes: list[ExternalAgentConfigImportItemTypeSuccess]
class ExternalAgentDetectedConnectorCandidate(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
session_count: Annotated[int, Field(alias="sessionCount", ge=0)]
source: ExternalAgentDetectedConnectorSource
class ExternalAgentImportedConnectorCandidate(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
session_count: Annotated[int, Field(alias="sessionCount", ge=0)]
source: ExternalAgentImportedConnectorSource
class PathFileSystemPath(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
path: LegacyAppPathString
type: Annotated[Literal["path"], Field(title="PathFileSystemPathType")]
class KindFileSystemSpecialPath(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
kind: Literal["project_roots"]
subpath: LegacyAppPathString | None = None
class FileSystemSpecialPath1(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
kind: Literal["unknown"]
path: str
subpath: LegacyAppPathString | None = None
class FileSystemSpecialPath(
RootModel[
RootFileSystemSpecialPath
| MinimalFileSystemSpecialPath
| KindFileSystemSpecialPath
| TmpdirFileSystemSpecialPath
| SlashTmpFileSystemSpecialPath
| FileSystemSpecialPath1
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
RootFileSystemSpecialPath
| MinimalFileSystemSpecialPath
| KindFileSystemSpecialPath
| TmpdirFileSystemSpecialPath
| SlashTmpFileSystemSpecialPath
| FileSystemSpecialPath1
)
class FileUpdateChange(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
diff: str
kind: PatchChangeKind
path: str
class InputImageFunctionCallOutputContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
detail: ImageDetail | None = None
type: Annotated[
Literal["input_image"], Field(title="InputImageFunctionCallOutputContentItemType")
]
image_url: str
class FileIdFunctionCallOutputContentItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
detail: ImageDetail | None = None
type: Annotated[
Literal["input_image"], Field(title="InputImageFunctionCallOutputContentItemType")
]
file_id: str
class FunctionCallOutputContentItem(
RootModel[
InputTextFunctionCallOutputContentItem
| InputImageFunctionCallOutputContentItem
| FileIdFunctionCallOutputContentItem
| InputAudioFunctionCallOutputContentItem
| EncryptedContentFunctionCallOutputContentItem
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
InputTextFunctionCallOutputContentItem
| InputImageFunctionCallOutputContentItem
| FileIdFunctionCallOutputContentItem
| InputAudioFunctionCallOutputContentItem
| EncryptedContentFunctionCallOutputContentItem,
Field(
description="Responses API compatible content items that can be returned by a tool call. This is a subset of ContentItem with the types we support as function call outputs."
),
]
class GetAccountResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
account: Account | None = None
requires_openai_auth: Annotated[bool, Field(alias="requiresOpenaiAuth")]
class GuardianApprovalReview(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
rationale: str | None = None
risk_level: Annotated[GuardianRiskLevel | None, Field(alias="riskLevel")] = None
status: GuardianApprovalReviewStatus
user_authorization: Annotated[
GuardianUserAuthorization | None, Field(alias="userAuthorization")
] = None
class CommandGuardianApprovalReviewAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
command: str
cwd: AbsolutePathBuf
source: GuardianCommandSource
type: Annotated[Literal["command"], Field(title="CommandGuardianApprovalReviewActionType")]
class ExecveGuardianApprovalReviewAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
argv: list[str]
cwd: AbsolutePathBuf
program: str
source: GuardianCommandSource
type: Annotated[Literal["execve"], Field(title="ExecveGuardianApprovalReviewActionType")]
class WriteStdinGuardianApprovalReviewAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approval_id: Annotated[str, Field(alias="approvalId")]
cwd: LegacyAppPathString
process_id: Annotated[str, Field(alias="processId")]
stdin: str
type: Annotated[
Literal["writeStdin"], Field(title="WriteStdinGuardianApprovalReviewActionType")
]
class NetworkAccessGuardianApprovalReviewAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
host: str
port: Annotated[int, Field(ge=0)]
protocol: NetworkApprovalProtocol
target: str
type: Annotated[
Literal["networkAccess"], Field(title="NetworkAccessGuardianApprovalReviewActionType")
]
class HookMetadata1(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
additional_context_limit: Annotated[
int | None,
Field(
alias="additionalContextLimit",
description="Configured `additionalContext` spill threshold. `null` uses 2,500 tokens; `0` disables spilling.",
ge=0,
),
] = None
current_hash: Annotated[str, Field(alias="currentHash")]
display_order: Annotated[int, Field(alias="displayOrder")]
enabled: bool
event_name: Annotated[HookEventName, Field(alias="eventName")]
is_managed: Annotated[bool, Field(alias="isManaged")]
key: str
matcher: str | None = None
plugin_id: Annotated[str | None, Field(alias="pluginId")] = None
source: HookSource
source_path: Annotated[AbsolutePathBuf, Field(alias="sourcePath")]
status_message: Annotated[str | None, Field(alias="statusMessage")] = None
timeout_sec: Annotated[int, Field(alias="timeoutSec", ge=0)]
trust_status: Annotated[HookTrustStatus, Field(alias="trustStatus")]
async_: Annotated[bool | None, Field(alias="async")] = False
command: str
handler_type: Annotated[Literal["command"], Field(alias="handlerType")]
class HookMetadata2(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
additional_context_limit: Annotated[
int | None,
Field(
alias="additionalContextLimit",
description="Configured `additionalContext` spill threshold. `null` uses 2,500 tokens; `0` disables spilling.",
ge=0,
),
] = None
current_hash: Annotated[str, Field(alias="currentHash")]
display_order: Annotated[int, Field(alias="displayOrder")]
enabled: bool
event_name: Annotated[HookEventName, Field(alias="eventName")]
is_managed: Annotated[bool, Field(alias="isManaged")]
key: str
matcher: str | None = None
plugin_id: Annotated[str | None, Field(alias="pluginId")] = None
source: HookSource
source_path: Annotated[AbsolutePathBuf, Field(alias="sourcePath")]
status_message: Annotated[str | None, Field(alias="statusMessage")] = None
timeout_sec: Annotated[int, Field(alias="timeoutSec", ge=0)]
trust_status: Annotated[HookTrustStatus, Field(alias="trustStatus")]
handler_type: Annotated[Literal["mcpTool"], Field(alias="handlerType")]
server: str
tool: str
class PromptHookMetadata(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
additional_context_limit: Annotated[
int | None,
Field(
alias="additionalContextLimit",
description="Configured `additionalContext` spill threshold. `null` uses 2,500 tokens; `0` disables spilling.",
ge=0,
),
] = None
current_hash: Annotated[str, Field(alias="currentHash")]
display_order: Annotated[int, Field(alias="displayOrder")]
enabled: bool
event_name: Annotated[HookEventName, Field(alias="eventName")]
is_managed: Annotated[bool, Field(alias="isManaged")]
key: str
matcher: str | None = None
plugin_id: Annotated[str | None, Field(alias="pluginId")] = None
source: HookSource
source_path: Annotated[AbsolutePathBuf, Field(alias="sourcePath")]
status_message: Annotated[str | None, Field(alias="statusMessage")] = None
timeout_sec: Annotated[int, Field(alias="timeoutSec", ge=0)]
trust_status: Annotated[HookTrustStatus, Field(alias="trustStatus")]
handler_type: Annotated[Literal["prompt"], Field(alias="handlerType")]
class AgentHookMetadata(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
additional_context_limit: Annotated[
int | None,
Field(
alias="additionalContextLimit",
description="Configured `additionalContext` spill threshold. `null` uses 2,500 tokens; `0` disables spilling.",
ge=0,
),
] = None
current_hash: Annotated[str, Field(alias="currentHash")]
display_order: Annotated[int, Field(alias="displayOrder")]
enabled: bool
event_name: Annotated[HookEventName, Field(alias="eventName")]
is_managed: Annotated[bool, Field(alias="isManaged")]
key: str
matcher: str | None = None
plugin_id: Annotated[str | None, Field(alias="pluginId")] = None
source: HookSource
source_path: Annotated[AbsolutePathBuf, Field(alias="sourcePath")]
status_message: Annotated[str | None, Field(alias="statusMessage")] = None
timeout_sec: Annotated[int, Field(alias="timeoutSec", ge=0)]
trust_status: Annotated[HookTrustStatus, Field(alias="trustStatus")]
handler_type: Annotated[Literal["agent"], Field(alias="handlerType")]
class HookMetadata(
RootModel[HookMetadata1 | HookMetadata2 | PromptHookMetadata | AgentHookMetadata]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: HookMetadata1 | HookMetadata2 | PromptHookMetadata | AgentHookMetadata
class HookOutputEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
kind: HookOutputEntryKind
text: str
class HookRunSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
completed_at: Annotated[int | None, Field(alias="completedAt")] = None
display_order: Annotated[int, Field(alias="displayOrder")]
duration_ms: Annotated[int | None, Field(alias="durationMs")] = None
entries: list[HookOutputEntry]
event_name: Annotated[HookEventName, Field(alias="eventName")]
execution_mode: Annotated[HookExecutionMode, Field(alias="executionMode")]
handler_type: Annotated[HookHandlerType, Field(alias="handlerType")]
id: str
scope: HookScope
source: HookSource | None = "unknown"
source_path: Annotated[AbsolutePathBuf, Field(alias="sourcePath")]
started_at: Annotated[int, Field(alias="startedAt")]
status: HookRunStatus
status_message: Annotated[str | None, Field(alias="statusMessage")] = None
class HookStartedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
run: HookRunSummary
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str | None, Field(alias="turnId")] = None
class HooksListEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: str
errors: list[HookErrorInfo]
hooks: list[HookMetadata]
warnings: list[str]
class HooksListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[HooksListEntry]
class ListMcpServerStatusParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: Annotated[
str | None, Field(description="Opaque pagination cursor returned by a previous call.")
] = None
detail: Annotated[
McpServerStatusDetail | None,
Field(
description="Controls how much MCP inventory data to fetch for each server. Defaults to `Full` when omitted."
),
] = None
limit: Annotated[
int | None,
Field(description="Optional page size; defaults to a server-defined value.", ge=0),
] = None
thread_id: Annotated[str | None, Field(alias="threadId")] = None
class ChatgptLoginAccountParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
app_brand: Annotated[LoginAppBrand | None, Field(alias="appBrand")] = None
codex_streamlined_login: Annotated[bool | None, Field(alias="codexStreamlinedLogin")] = None
type: Annotated[Literal["chatgpt"], Field(title="Chatgptv2::LoginAccountParamsType")]
use_hosted_login_success_page: Annotated[
bool | None, Field(alias="useHostedLoginSuccessPage")
] = None
class LoginAccountParams(
RootModel[
ApiKeyLoginAccountParams
| ChatgptLoginAccountParams
| ChatgptDeviceCodeLoginAccountParams
| ChatgptAuthTokensLoginAccountParams
| AmazonBedrockLoginAccountParams
| AmazonBedrockAccessKeysLoginAccountParams
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
ApiKeyLoginAccountParams
| ChatgptLoginAccountParams
| ChatgptDeviceCodeLoginAccountParams
| ChatgptAuthTokensLoginAccountParams
| AmazonBedrockLoginAccountParams
| AmazonBedrockAccessKeysLoginAccountParams,
Field(title="LoginAccountParams"),
]
class McpResourceReadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
contents: list[ResourceContent]
origin_call_id: Annotated[
str | None,
Field(
alias="originCallId",
description="Originating call when the server applied app-specific resource scoping.",
),
] = None
class McpServerStatus(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
auth_status: Annotated[McpAuthStatus, Field(alias="authStatus")]
name: str
plugin_id: Annotated[str | None, Field(alias="pluginId")] = None
resource_templates: Annotated[list[ResourceTemplate], Field(alias="resourceTemplates")]
resources: list[Resource]
runtime_status: Annotated[
McpServerConnectionStatus | None,
Field(
alias="runtimeStatus",
description="Current thread-runtime connection state; null when unavailable or the configuration changed.",
),
] = None
server_capabilities: Annotated[
Any | None,
Field(
alias="serverCapabilities",
description="Capabilities advertised by the initialized MCP server; null when unavailable.",
),
] = None
server_info: Annotated[McpServerInfo | None, Field(alias="serverInfo")] = None
tools: dict[str, Tool]
tools_error: Annotated[
str | None,
Field(
alias="toolsError",
description="Tool discovery failed and no catalog was returned. Null when a catalog is returned, including cached or empty catalogs.",
),
] = None
class MemoryCitation(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
entries: list[MemoryCitationEntry]
thread_ids: Annotated[list[str], Field(alias="threadIds")]
class MigrationDetails(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
commands: list[CommandMigration] | None = []
hooks: list[HookMigration] | None = []
mcp_servers: Annotated[list[McpServerMigration] | None, Field(alias="mcpServers")] = []
memory: list[str] | None = None
plugins: list[PluginsMigration] | None = []
sessions: list[SessionMigration] | None = []
skills: list[SkillMigration] | None = []
subagents: list[SubagentMigration] | None = []
class MisalignmentErrorDetails(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
detailed_explanation: Annotated[
str | None,
Field(
alias="detailedExplanation",
description="A substantive localized explanation is required before offering continuation.",
),
] = None
error_type: Annotated[
str | None,
Field(
alias="errorType",
description="Open-ended classification; clients must accept categories added by Responses.",
),
] = None
steer: Annotated[
MisalignmentSteer | None,
Field(
description="Instruction to submit as the next turn's user input if continuation is confirmed."
),
] = None
class Model(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
additional_speed_tiers: Annotated[
list[str] | None,
Field(alias="additionalSpeedTiers", description="Deprecated: use `serviceTiers` instead."),
] = []
availability_nux: Annotated[ModelAvailabilityNux | None, Field(alias="availabilityNux")] = None
available_access_programs: Annotated[
ModelAccessPrograms | None,
Field(
alias="availableAccessPrograms",
description="Null when the catalog does not provide access-program metadata.",
),
] = None
default_reasoning_effort: Annotated[ReasoningEffort, Field(alias="defaultReasoningEffort")]
default_service_tier: Annotated[
str | None,
Field(
alias="defaultServiceTier",
description="Catalog default service tier id for this model, when one is configured.",
),
] = None
description: str
display_name: Annotated[str, Field(alias="displayName")]
hidden: bool
id: str
input_modalities: Annotated[list[InputModality] | None, Field(alias="inputModalities")] = [
"text",
"image",
]
is_default: Annotated[bool, Field(alias="isDefault")]
model: str
model_specialty: Annotated[str | None, Field(alias="modelSpecialty")] = None
multi_agent_version: Annotated[
MultiAgentVersion | None,
Field(
alias="multiAgentVersion",
description="Multi-agent runtime declared by this model, when available.",
),
] = None
service_tiers: Annotated[list[ModelServiceTier] | None, Field(alias="serviceTiers")] = []
supported_reasoning_efforts: Annotated[
list[ReasoningEffortOption], Field(alias="supportedReasoningEfforts")
]
supports_personality: Annotated[
bool | None,
Field(
alias="supportsPersonality",
description="@deprecated Always false; models no longer support personality selection.",
),
] = False
upgrade: str | None = None
upgrade_info: Annotated[ModelUpgradeInfo | None, Field(alias="upgradeInfo")] = None
class ModelListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[Model]
next_cursor: Annotated[
str | None,
Field(
alias="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.",
),
] = None
class NewThreadModelDefaults(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
model: str | None = None
model_reasoning_effort: Annotated[
ReasoningEffort | None, Field(alias="modelReasoningEffort")
] = None
service_tier: Annotated[str | None, Field(alias="serviceTier")] = None
class OverriddenMetadata(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
effective_value: Annotated[Any, Field(alias="effectiveValue")]
message: str
overriding_layer: Annotated[ConfigLayerMetadata, Field(alias="overridingLayer")]
class PermissionProfileListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[PermissionProfileSummary]
next_cursor: Annotated[
str | None,
Field(
alias="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.",
),
] = None
class PluginSharePrincipal(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
principal_id: Annotated[str, Field(alias="principalId")]
principal_type: Annotated[PluginSharePrincipalType, Field(alias="principalType")]
role: PluginSharePrincipalRole
class PluginShareTarget(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
principal_id: Annotated[str, Field(alias="principalId")]
principal_type: Annotated[PluginSharePrincipalType, Field(alias="principalType")]
role: PluginShareTargetRole
class PluginShareUpdateTargetsParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
discoverability: PluginShareUpdateDiscoverability
remote_plugin_id: Annotated[str, Field(alias="remotePluginId")]
share_targets: Annotated[list[PluginShareTarget], Field(alias="shareTargets")]
class PluginShareUpdateTargetsResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
discoverability: PluginShareDiscoverability
principals: list[PluginSharePrincipal]
class ProcessOutputDeltaNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cap_reached: Annotated[
bool,
Field(
alias="capReached",
description="True on the final streamed chunk for this stream when output was truncated by `outputBytesCap`.",
),
]
delta_base64: Annotated[
str, Field(alias="deltaBase64", description="Base64-encoded output bytes.")
]
process_handle: Annotated[
str,
Field(
alias="processHandle",
description="Client-supplied, connection-scoped `processHandle` from `process/spawn`.",
),
]
stream: Annotated[
ProcessOutputStream, Field(description="Output stream this chunk belongs to.")
]
class Project(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
created_at: Annotated[int, Field(alias="createdAt")]
id: str
metadata: dict[str, str]
name: str
position: int
recency_at: Annotated[
int | None,
Field(
alias="recencyAt",
description="Newest non-archived member thread's recency, in Unix seconds; null when none exist.",
),
] = None
roots: list[ProjectRoot]
updated_at: Annotated[int, Field(alias="updatedAt")]
class QueuedSubmission(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
client_user_message_id: Annotated[str, Field(alias="clientUserMessageId")]
id: str
input: list[UserInput]
class RateLimitResetCredit(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
description: Annotated[
str | None,
Field(
description="Backend-provided display description for this credit, or `null` when unavailable."
),
] = None
expires_at: Annotated[
int | None,
Field(
alias="expiresAt",
description="Unix timestamp in seconds when the credit expires, or `null` if it does not expire.",
),
] = None
granted_at: Annotated[
int,
Field(
alias="grantedAt", description="Unix timestamp in seconds when the credit was granted."
),
]
id: Annotated[str, Field(description="Opaque backend identifier for this reset credit.")]
reset_type: Annotated[RateLimitResetType, Field(alias="resetType")]
status: RateLimitResetCreditStatus
title: Annotated[
str | None,
Field(
description="Backend-provided display title for this credit, or `null` when unavailable."
),
] = None
class RateLimitResetCreditsSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
available_count: Annotated[int, Field(alias="availableCount")]
credits: Annotated[
list[RateLimitResetCredit] | None,
Field(
description="Detail rows for available reset credits, when the backend provides them.\n\n`null` means only `availableCount` is known, while an empty array means details were fetched and no available credits were returned. The backend may cap this list, so its length can be less than `availableCount`."
),
] = None
class RateLimitSnapshot(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
credits: CreditsSnapshot | None = None
individual_limit: Annotated[
SpendControlLimitSnapshot | None, Field(alias="individualLimit")
] = None
limit_id: Annotated[str | None, Field(alias="limitId")] = None
limit_name: Annotated[str | None, Field(alias="limitName")] = None
normal_model_slug: Annotated[
str | None,
Field(
alias="normalModelSlug",
description="Normal model whose display name and reasoning options describe this quota alias.",
),
] = None
plan_type: Annotated[PlanType | None, Field(alias="planType")] = None
primary: RateLimitWindow | None = None
rate_limit_reached_type: Annotated[
RateLimitReachedType | None, Field(alias="rateLimitReachedType")
] = None
secondary: RateLimitWindow | None = None
spend_control_reached: Annotated[
bool | None,
Field(
alias="spendControlReached",
description="Backend-reported spend-control state. `None` is unavailable, not a sparse-update recovery.",
),
] = None
class RawResponseCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
response_id: Annotated[str, Field(alias="responseId")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
usage: TokenUsageBreakdown | None = None
usage_metadata: Annotated[ResponseUsageMetadata | None, Field(alias="usageMetadata")] = None
class MessageResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
content: list[ContentItem]
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
phase: MessagePhase | None = None
role: str
type: Annotated[Literal["message"], Field(title="MessageResponseItemType")]
class WebSearchCallResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
action: ResponsesApiWebSearchAction | None = None
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
status: str | None = None
type: Annotated[Literal["web_search_call"], Field(title="WebSearchCallResponseItemType")]
class ConfigurationUpdateResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
reasoning: ConfigurationReasoning
type: Annotated[
Literal["configuration_update"], Field(title="ConfigurationUpdateResponseItemType")
]
class ReviewStartParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
delivery: Annotated[
ReviewDelivery | None,
Field(
description="Where to run the review: inline (default) on the current thread or detached on a new thread (returned in `reviewThreadId`). Detached delivery is deprecated and emits `deprecationNotice`. Use `thread/start` followed by an inline review for a separate review thread."
),
] = None
target: ReviewTarget
thread_id: Annotated[str, Field(alias="threadId")]
class HourlyScheduledTaskSchedule(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
days: list[ScheduledTaskWeekday] | None = None
interval_hours: Annotated[int, Field(alias="intervalHours", ge=0)]
type: Annotated[Literal["hourly"], Field(title="HourlyScheduledTaskScheduleType")]
class WeeklyScheduledTaskSchedule(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
days: list[ScheduledTaskWeekday]
time: str
type: Annotated[Literal["weekly"], Field(title="WeeklyScheduledTaskScheduleType")]
class ScheduledTaskSchedule(
RootModel[
HourlyScheduledTaskSchedule
| DailyScheduledTaskSchedule
| WeekdaysScheduledTaskSchedule
| WeeklyScheduledTaskSchedule
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
HourlyScheduledTaskSchedule
| DailyScheduledTaskSchedule
| WeekdaysScheduledTaskSchedule
| WeeklyScheduledTaskSchedule
)
class ScheduledTaskSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
key: str
name: str
prompt: str
schedule: ScheduledTaskSchedule
class ThreadStatusChangedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/status/changed"], Field(title="Thread/status/changedNotificationMethod")
]
params: ThreadStatusChangedNotification
class ThreadArchivedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["thread/archived"], Field(title="Thread/archivedNotificationMethod")]
params: ThreadArchivedNotification
class ThreadDeletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["thread/deleted"], Field(title="Thread/deletedNotificationMethod")]
params: ThreadDeletedNotification
class ThreadUnarchivedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/unarchived"], Field(title="Thread/unarchivedNotificationMethod")
]
params: ThreadUnarchivedNotification
class ThreadClosedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["thread/closed"], Field(title="Thread/closedNotificationMethod")]
params: ThreadClosedNotification
class ThreadRevertedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["thread/reverted"], Field(title="Thread/revertedNotificationMethod")]
params: ThreadRevertedNotification
class SkillsChangedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["skills/changed"], Field(title="Skills/changedNotificationMethod")]
params: SkillsChangedNotification
class ThreadNameUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/name/updated"], Field(title="Thread/name/updatedNotificationMethod")
]
params: ThreadNameUpdatedNotification
class ThreadAttachmentUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/attachment/updated"],
Field(title="Thread/attachment/updatedNotificationMethod"),
]
params: ThreadAttachmentUpdatedNotification
class ThreadGoalClearedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/goal/cleared"], Field(title="Thread/goal/clearedNotificationMethod")
]
params: ThreadGoalClearedNotification
class ThreadQueueChangedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/queue/changed"], Field(title="Thread/queue/changedNotificationMethod")
]
params: ThreadQueueChangedNotification
class ThreadProjectUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/project/updated"], Field(title="Thread/project/updatedNotificationMethod")
]
params: ThreadProjectUpdatedNotification
class HookStartedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["hook/started"], Field(title="Hook/startedNotificationMethod")]
params: HookStartedNotification
class TurnDiffUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["turn/diff/updated"], Field(title="Turn/diff/updatedNotificationMethod")
]
params: TurnDiffUpdatedNotification
class AutoApprovalReviewStrictReviewRequiredServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["autoApprovalReview/strictReviewRequired"],
Field(title="AutoApprovalReview/strictReviewRequiredNotificationMethod"),
]
params: StrictReviewRequiredNotification
class CommandExecOutputDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["command/exec/outputDelta"],
Field(title="Command/exec/outputDeltaNotificationMethod"),
]
params: CommandExecOutputDeltaNotification
class ProcessOutputDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["process/outputDelta"], Field(title="Process/outputDeltaNotificationMethod")
]
params: ProcessOutputDeltaNotification
class ItemCommandExecutionTerminalInteractionServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/commandExecution/terminalInteraction"],
Field(title="Item/commandExecution/terminalInteractionNotificationMethod"),
]
params: TerminalInteractionNotification
class ServerRequestResolvedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["serverRequest/resolved"], Field(title="ServerRequest/resolvedNotificationMethod")
]
params: ServerRequestResolvedNotification
class AccountUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["account/updated"], Field(title="Account/updatedNotificationMethod")]
params: AccountUpdatedNotification
class TurnModerationMetadataServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["turn/moderationMetadata"], Field(title="Turn/moderationMetadataNotificationMethod")
]
params: TurnModerationMetadataNotification
class WarningServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["warning"], Field(title="WarningNotificationMethod")]
params: WarningNotification
class ConfigWarningServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["configWarning"], Field(title="ConfigWarningNotificationMethod")]
params: ConfigWarningNotification
class ThreadRealtimeStartedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/started"], Field(title="Thread/realtime/startedNotificationMethod")
]
params: ThreadRealtimeStartedNotification
class ThreadRealtimeItemAddedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/itemAdded"],
Field(title="Thread/realtime/itemAddedNotificationMethod"),
]
params: ThreadRealtimeItemAddedNotification
class ThreadRealtimeItemTranscriptDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/item/transcript/delta"],
Field(title="Thread/realtime/item/transcript/deltaNotificationMethod"),
]
params: ThreadRealtimeItemTranscriptDeltaNotification
class ThreadRealtimeTranscriptDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/transcript/delta"],
Field(title="Thread/realtime/transcript/deltaNotificationMethod"),
]
params: ThreadRealtimeTranscriptDeltaNotification
class ThreadRealtimeTranscriptDoneServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/transcript/done"],
Field(title="Thread/realtime/transcript/doneNotificationMethod"),
]
params: ThreadRealtimeTranscriptDoneNotification
class ThreadRealtimeOutputAudioDeltaServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/outputAudio/delta"],
Field(title="Thread/realtime/outputAudio/deltaNotificationMethod"),
]
params: ThreadRealtimeOutputAudioDeltaNotification
class ThreadRealtimeSdpServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/sdp"], Field(title="Thread/realtime/sdpNotificationMethod")
]
params: ThreadRealtimeSdpNotification
class ThreadRealtimeErrorServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/error"], Field(title="Thread/realtime/errorNotificationMethod")
]
params: ThreadRealtimeErrorNotification
class ThreadRealtimeClosedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/closed"], Field(title="Thread/realtime/closedNotificationMethod")
]
params: ThreadRealtimeClosedNotification
class WindowsWorldWritableWarningServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["windows/worldWritableWarning"],
Field(title="Windows/worldWritableWarningNotificationMethod"),
]
params: WindowsWorldWritableWarningNotification
class AccountLoginCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["account/login/completed"], Field(title="Account/login/completedNotificationMethod")
]
params: AccountLoginCompletedNotification
class SkillDependencies(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
tools: list[SkillToolDependency]
class SkillMetadata(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
dependencies: SkillDependencies | None = None
description: str
enabled: bool
interface: SkillInterface | None = None
name: str
path: AbsolutePathBuf
plugin_id: Annotated[
str | None,
Field(
alias="pluginId",
description="Owning plugin ID, matching `PluginSummary.id`, when known.",
),
] = None
scope: SkillScope
short_description: Annotated[
str | None,
Field(
alias="shortDescription",
description="Legacy short_description from SKILL.md. Prefer SKILL.json interface.short_description.",
),
] = None
class SkillsListEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: str
errors: list[SkillErrorInfo]
skills: list[SkillMetadata]
class SkillsListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[SkillsListEntry]
class ThreadSpawn(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
agent_nickname: str | None = None
agent_path: AgentPath | None = None
agent_role: str | None = None
depth: int
parent_thread_id: ThreadId
class ThreadSpawnSubAgentSource(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
thread_spawn: ThreadSpawn
class SubAgentSource(
RootModel[SubAgentSourceValue | ThreadSpawnSubAgentSource | OtherSubAgentSource]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: SubAgentSourceValue | ThreadSpawnSubAgentSource | OtherSubAgentSource
class ThreadForkParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approval_policy: Annotated[AskForApproval | None, Field(alias="approvalPolicy")] = None
approvals_reviewer: Annotated[
ApprovalsReviewer | None,
Field(
alias="approvalsReviewer",
description="Override where approval requests are routed for review on this thread and subsequent turns.",
),
] = None
base_instructions: Annotated[str | None, Field(alias="baseInstructions")] = None
config: dict[str, Any] | None = None
cwd: str | None = None
developer_instructions: Annotated[str | None, Field(alias="developerInstructions")] = None
ephemeral: bool | None = None
exclude_turns: Annotated[
bool | None,
Field(
alias="excludeTurns",
description="When true, return only thread metadata and live fork state without populating `thread.turns`. This is useful when the client plans to call `thread/turns/list` immediately after forking. Full-history hydration is deprecated for paginated threads; use this with `thread/turns/list` and `thread/items/list` instead.",
),
] = None
last_turn_id: Annotated[
str | None,
Field(
alias="lastTurnId",
description="Optional last turn id to fork through, inclusive.\n\nWhen specified, turns after `last_turn_id` are omitted from the fork. The referenced turn cannot be in progress.",
),
] = None
model: Annotated[
str | None, Field(description="Configuration overrides for the forked thread, if any.")
] = None
model_provider: Annotated[str | None, Field(alias="modelProvider")] = None
sandbox: SandboxMode | None = None
service_tier: Annotated[str | None, Field(alias="serviceTier")] = None
thread_id: Annotated[str, Field(alias="threadId")]
thread_source: Annotated[
ThreadSource | None,
Field(
alias="threadSource",
description="Optional client-supplied analytics source classification for this forked thread.",
),
] = None
class ThreadGoal(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
created_at: Annotated[int, Field(alias="createdAt")]
objective: str
status: ThreadGoalStatus
thread_id: Annotated[str, Field(alias="threadId")]
time_used_seconds: Annotated[int, Field(alias="timeUsedSeconds")]
token_budget: Annotated[int | None, Field(alias="tokenBudget")] = None
tokens_used: Annotated[int, Field(alias="tokensUsed")]
updated_at: Annotated[int, Field(alias="updatedAt")]
class ThreadGoalGetResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
goal: ThreadGoal | None = None
class ThreadGoalSetParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
objective: str | None = None
status: ThreadGoalStatus | None = None
thread_id: Annotated[str, Field(alias="threadId")]
token_budget: Annotated[int | None, Field(alias="tokenBudget")] = None
class ThreadGoalSetResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
goal: ThreadGoal
class ThreadGoalUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
goal: ThreadGoal
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str | None, Field(alias="turnId")] = None
class UserMessageThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
client_id: Annotated[str | None, Field(alias="clientId")] = None
content: list[UserInput]
id: str
type: Annotated[Literal["userMessage"], Field(title="UserMessageThreadItemType")]
class AgentMessageThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
delivery: AgentMessageDelivery | None = None
id: str
memory_citation: Annotated[MemoryCitation | None, Field(alias="memoryCitation")] = None
phase: MessagePhase | None = None
questions: list[AsyncUserInputQuestion] | None = None
text: str
type: Annotated[Literal["agentMessage"], Field(title="AgentMessageThreadItemType")]
class CommandExecutionThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
aggregated_output: Annotated[
str | None,
Field(
alias="aggregatedOutput",
description="The command's output, aggregated from stdout and stderr.",
),
] = None
command: Annotated[str, Field(description="The command to be executed.")]
command_actions: Annotated[
list[CommandAction],
Field(
alias="commandActions",
description="A best-effort parsing of the command to understand the action(s) it will perform. This returns a list of CommandAction objects because a single shell command may be composed of many commands piped together.",
),
]
cwd: Annotated[LegacyAppPathString, Field(description="The command's working directory.")]
duration_ms: Annotated[
int | None,
Field(
alias="durationMs", description="The duration of the command execution in milliseconds."
),
] = None
exit_code: Annotated[
int | None, Field(alias="exitCode", description="The command's exit code.")
] = None
id: str
plugin_id: Annotated[
str | None,
Field(
alias="pluginId",
description="Trusted first-party plugin id when this command resolves to one plugin script.",
),
] = None
process_id: Annotated[
str | None,
Field(
alias="processId",
description="Identifier for the underlying PTY process (when available).",
),
] = None
script_path: Annotated[
str | None,
Field(
alias="scriptPath",
description="Safe plugin-relative path when this command resolves to one plugin script.",
),
] = None
source: CommandExecutionSource | None = "agent"
status: CommandExecutionStatus
type: Annotated[Literal["commandExecution"], Field(title="CommandExecutionThreadItemType")]
class FileChangeThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
changes: list[FileUpdateChange]
id: str
status: PatchApplyStatus
type: Annotated[Literal["fileChange"], Field(title="FileChangeThreadItemType")]
class CollabAgentToolCallThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
agents_states: Annotated[
dict[str, CollabAgentState],
Field(
alias="agentsStates",
description="Last known status of the target agents, when available.",
),
]
id: Annotated[str, Field(description="Unique identifier for this collab tool call.")]
model: Annotated[
str | None, Field(description="Model requested for the spawned agent, when applicable.")
] = None
prompt: Annotated[
str | None,
Field(description="Prompt text sent as part of the collab tool call, when available."),
] = None
reasoning_effort: Annotated[
ReasoningEffort | None,
Field(
alias="reasoningEffort",
description="Reasoning effort requested for the spawned agent, when applicable.",
),
] = None
receiver_thread_ids: Annotated[
list[str],
Field(
alias="receiverThreadIds",
description="Thread ID of the receiving agent, when applicable. In case of spawn operation, this corresponds to the newly spawned agent.",
),
]
sender_thread_id: Annotated[
str,
Field(
alias="senderThreadId", description="Thread ID of the agent issuing the collab request."
),
]
status: Annotated[
CollabAgentToolCallStatus, Field(description="Current status of the collab tool call.")
]
tool: Annotated[CollabAgentTool, Field(description="Name of the collab tool that was invoked.")]
type: Annotated[
Literal["collabAgentToolCall"], Field(title="CollabAgentToolCallThreadItemType")
]
class WebSearchThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
action: WebSearchAction | None = None
id: str
query: str
results: Annotated[
list | None,
Field(
description="Structured search results returned out-of-band by standalone web search.\n\nThese stay as opaque JSON at the extension/app-server boundary so new result fields and result types can pass through without a Codex release."
),
] = None
type: Annotated[Literal["webSearch"], Field(title="WebSearchThreadItemType")]
class ThreadListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
archived: Annotated[
bool | None,
Field(
description="Optional archived filter; when set to true, only archived threads are returned. If false or null, only non-archived threads are returned."
),
] = None
cursor: Annotated[
str | None, Field(description="Opaque pagination cursor returned by a previous call.")
] = None
cwd: Annotated[
ThreadListCwdFilter | None,
Field(
description="Optional cwd filter or filters; when set, only threads whose session cwd exactly matches one of these paths are returned."
),
] = None
limit: Annotated[
int | None,
Field(description="Optional page size; defaults to a reasonable server-side value.", ge=0),
] = None
model_providers: Annotated[
list[str] | None,
Field(
alias="modelProviders",
description="Optional provider filter; when set, only sessions recorded under these providers are returned. When present but empty, includes all providers.",
),
] = None
originators: Annotated[
list[str] | None,
Field(
description="Optional originator allowlist, matching any supplied value exactly. Supported by hosted backends only; the local app-server rejects a nonempty list. Omitted or empty lists leave originators unrestricted."
),
] = None
search_term: Annotated[
str | None,
Field(
alias="searchTerm",
description="Optional substring filter for the extracted thread title.",
),
] = None
section_id: Annotated[
str | None,
Field(
alias="sectionId",
description="Omit to include every section, set to `null` for unsectioned threads, or provide a section ID to return only threads in that section.",
),
] = None
sort_direction: Annotated[
SortDirection | None,
Field(
alias="sortDirection",
description="Optional sort direction; defaults to descending (newest first).",
),
] = None
sort_key: Annotated[
ThreadSortKey | None,
Field(alias="sortKey", description="Optional sort key; defaults to created_at."),
] = None
source_kinds: Annotated[
list[ThreadSourceKind] | None,
Field(
alias="sourceKinds",
description="Optional source filter; when set, only sessions from these source kinds are returned. When omitted or empty, defaults to interactive sources.",
),
] = None
use_state_db_only: Annotated[
bool | None,
Field(
alias="useStateDbOnly",
description="If true, return from the state DB without scanning JSONL rollouts to repair thread metadata. Omitted or false preserves scan-and-repair behavior.",
),
] = None
class TranscriptSegmentThreadRealtimeItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
realtime_session_id: Annotated[str, Field(alias="realtimeSessionId")]
role: ThreadRealtimeTranscriptRole
text: str
type: Annotated[
Literal["transcriptSegment"], Field(title="TranscriptSegmentThreadRealtimeItemType")
]
class RealtimeSessionClosedThreadRealtimeItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
realtime_session_id: Annotated[str, Field(alias="realtimeSessionId")]
outcome: ThreadRealtimeSessionOutcome
type: Annotated[
Literal["realtimeSessionClosed"], Field(title="RealtimeSessionClosedThreadRealtimeItemType")
]
class ThreadRealtimeItem(
RootModel[
RealtimeSessionStartedThreadRealtimeItem
| TranscriptSegmentThreadRealtimeItem
| BemItemPromotedThreadRealtimeItem
| RealtimeSessionClosedThreadRealtimeItem
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
RealtimeSessionStartedThreadRealtimeItem
| TranscriptSegmentThreadRealtimeItem
| BemItemPromotedThreadRealtimeItem
| RealtimeSessionClosedThreadRealtimeItem,
Field(
description="EXPERIMENTAL - a thread-scoped realtime item in the canonical timeline."
),
]
class ThreadRealtimeItemCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item: ThreadRealtimeItem
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadRealtimeItemStartedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item: ThreadRealtimeItem
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadResumeInitialTurnsPageParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
items_view: Annotated[
TurnItemsView | None,
Field(
alias="itemsView",
description="How much item detail to include for each returned turn; defaults to summary.",
),
] = None
limit: Annotated[int | None, Field(description="Optional turn page size.", ge=0)] = None
sort_direction: Annotated[
SortDirection | None,
Field(
alias="sortDirection",
description="Optional turn pagination direction; defaults to descending.",
),
] = None
class ThreadSection(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
appearance: Annotated[
ThreadSectionAppearance | None,
Field(description="Optional appearance synchronized across clients."),
] = None
id: Annotated[
str,
Field(
description="Opaque UUIDv7 identity that remains stable when the section is renamed."
),
]
name: Annotated[str, Field(description="The current user-visible section name.")]
class ThreadSectionCreateResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
section: ThreadSection
class ThreadSectionListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[ThreadSection]
next_cursor: Annotated[
str | None,
Field(
alias="nextCursor",
description="Opaque cursor for the next page, or `null` when no sections remain.",
),
] = None
class ThreadSectionUpdateResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
section: ThreadSection
class ThreadSettings(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
active_permission_profile: Annotated[
ActivePermissionProfile | None, Field(alias="activePermissionProfile")
] = None
approval_policy: Annotated[AskForApproval, Field(alias="approvalPolicy")]
approvals_reviewer: Annotated[ApprovalsReviewer, Field(alias="approvalsReviewer")]
collaboration_mode: Annotated[CollaborationMode, Field(alias="collaborationMode")]
cwd: AbsolutePathBuf
disabled_plugin_ids: Annotated[
list[str] | None,
Field(
alias="disabledPluginIds",
description="Saved list of disabled plugin IDs. Does not yet filter plugin capabilities.",
),
] = []
effort: ReasoningEffort | None = None
model: str
model_provider: Annotated[str, Field(alias="modelProvider")]
personality: Annotated[
Personality | None,
Field(
description="@deprecated Reports the saved setting; `friendly` and `pragmatic` no longer select a style."
),
] = None
sandbox_policy: Annotated[SandboxPolicy, Field(alias="sandboxPolicy")]
service_tier: Annotated[str | None, Field(alias="serviceTier")] = None
summary: ReasoningSummary | None = None
class ThreadSettingsUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
thread_settings: Annotated[ThreadSettings, Field(alias="threadSettings")]
class ThreadStartParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approval_policy: Annotated[AskForApproval | None, Field(alias="approvalPolicy")] = None
approvals_reviewer: Annotated[
ApprovalsReviewer | None,
Field(
alias="approvalsReviewer",
description="Override where approval requests are routed for review on this thread and subsequent turns.",
),
] = None
base_instructions: Annotated[str | None, Field(alias="baseInstructions")] = None
config: dict[str, Any] | None = None
cwd: str | None = None
developer_instructions: Annotated[str | None, Field(alias="developerInstructions")] = None
ephemeral: bool | None = None
model: str | None = None
model_provider: Annotated[str | None, Field(alias="modelProvider")] = None
personality: Annotated[
Personality | None,
Field(description="@deprecated `friendly` and `pragmatic` no longer select a style."),
] = None
sandbox: SandboxMode | None = None
service_name: Annotated[str | None, Field(alias="serviceName")] = None
service_tier: Annotated[str | None, Field(alias="serviceTier")] = None
session_start_source: Annotated[ThreadStartSource | None, Field(alias="sessionStartSource")] = (
None
)
thread_source: Annotated[
ThreadSource | None,
Field(
alias="threadSource",
description="Optional client-supplied analytics source classification for this thread.",
),
] = None
class RealtimeThreadTimelineEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item: ThreadRealtimeItem
position: Annotated[int, Field(ge=0)]
type: Annotated[Literal["realtime"], Field(title="RealtimeThreadTimelineEntryType")]
class ThreadTokenUsage(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
last: TokenUsageBreakdown
model_context_window: Annotated[int | None, Field(alias="modelContextWindow")] = None
total: TokenUsageBreakdown
class ThreadTokenUsageUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
token_usage: Annotated[ThreadTokenUsage, Field(alias="tokenUsage")]
turn_id: Annotated[str, Field(alias="turnId")]
class ThreadTurnsListParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cursor: Annotated[
str | None,
Field(
description="Opaque cursor to pass to the next call to continue after the last turn."
),
] = None
items_view: Annotated[
TurnItemsView | None,
Field(
alias="itemsView",
description="How much item detail to include for each returned turn; defaults to summary.",
),
] = None
limit: Annotated[int | None, Field(description="Optional turn page size.", ge=0)] = None
sort_direction: Annotated[
SortDirection | None,
Field(
alias="sortDirection",
description="Optional turn pagination direction; defaults to descending.",
),
] = None
thread_id: Annotated[str, Field(alias="threadId")]
class ThreadUnsubscribeResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
status: ThreadUnsubscribeStatus
class ThreadUsage(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
estimated_usage_credits_micros: Annotated[int, Field(alias="estimatedUsageCreditsMicros")]
estimated_usage_usd_micros: Annotated[int | None, Field(alias="estimatedUsageUsdMicros")] = None
groups: list[ThreadUsageBreakdownGroup]
thread_id: Annotated[str, Field(alias="threadId")]
class ToolsV2(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
web_search: WebSearchToolConfig | None = None
class TurnError(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
additional_details: Annotated[str | None, Field(alias="additionalDetails")] = None
codex_error_info: Annotated[CodexErrorInfo | None, Field(alias="codexErrorInfo")] = None
message: str
misalignment: Annotated[
MisalignmentErrorDetails | None,
Field(
description="Optional public explanation and continuation instruction for a misalignment block."
),
] = None
class TurnPlanStep(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
status: TurnPlanStepStatus
step: str
class TurnPlanUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
explanation: str | None = None
plan: list[TurnPlanStep]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class TurnSteerParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
client_user_message_id: Annotated[str | None, Field(alias="clientUserMessageId")] = None
expected_turn_id: Annotated[
str,
Field(
alias="expectedTurnId",
description="Required active turn id precondition. The request fails when it does not match the currently active turn.",
),
]
input: list[UserInput]
thread_id: Annotated[str, Field(alias="threadId")]
class WindowsSandboxSetupCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
error: str | None = None
mode: WindowsSandboxSetupMode
success: bool
class WorkspaceMessage(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
archived_at: Annotated[
int | None,
Field(
alias="archivedAt",
description="Unix timestamp (in seconds) when the message was archived.",
),
] = None
created_at: Annotated[
int | None,
Field(
alias="createdAt",
description="Unix timestamp (in seconds) when the message was created.",
),
] = None
message_body: Annotated[str, Field(alias="messageBody")]
message_id: Annotated[str, Field(alias="messageId")]
message_type: Annotated[WorkspaceMessageType, Field(alias="messageType")]
class AccountRateLimitsUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
rate_limits: Annotated[RateLimitSnapshot, Field(alias="rateLimits")]
class AppInfo(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
app_metadata: Annotated[AppMetadata | None, Field(alias="appMetadata")] = None
branding: AppBranding | None = None
description: str | None = None
distribution_channel: Annotated[str | None, Field(alias="distributionChannel")] = None
icon_assets: Annotated[dict[str, Any] | None, Field(alias="iconAssets")] = None
icon_dark_assets: Annotated[dict[str, Any] | None, Field(alias="iconDarkAssets")] = None
id: str
install_url: Annotated[str | None, Field(alias="installUrl")] = None
is_accessible: Annotated[bool | None, Field(alias="isAccessible")] = False
is_enabled: Annotated[
bool | None,
Field(
alias="isEnabled",
description="Whether this app is enabled in config.toml. Example: ```toml [apps.bad_app] enabled = false ```",
),
] = True
labels: dict[str, Any] | None = None
logo_url: Annotated[str | None, Field(alias="logoUrl")] = None
logo_url_dark: Annotated[str | None, Field(alias="logoUrlDark")] = None
name: str
plugin_display_names: Annotated[list[str] | None, Field(alias="pluginDisplayNames")] = []
class AppListUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[AppInfo]
class AppsListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[AppInfo]
next_cursor: Annotated[
str | None,
Field(
alias="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.",
),
] = None
class ThreadStartRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/start"], Field(title="Thread/startRequestMethod")]
params: ThreadStartParams
class ThreadForkRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/fork"], Field(title="Thread/forkRequestMethod")]
params: ThreadForkParams
class ThreadGoalSetRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/goal/set"], Field(title="Thread/goal/setRequestMethod")]
params: ThreadGoalSetParams
class ThreadListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/list"], Field(title="Thread/listRequestMethod")]
params: ThreadListParams
class ThreadTurnsListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["thread/turns/list"], Field(title="Thread/turns/listRequestMethod")]
params: ThreadTurnsListParams
class PluginShareUpdateTargetsRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["plugin/share/updateTargets"],
Field(title="Plugin/share/updateTargetsRequestMethod"),
]
params: PluginShareUpdateTargetsParams
class TurnSteerRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["turn/steer"], Field(title="Turn/steerRequestMethod")]
params: TurnSteerParams
class ReviewStartRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["review/start"], Field(title="Review/startRequestMethod")]
params: ReviewStartParams
class McpServerStatusListRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["mcpServerStatus/list"], Field(title="McpServerStatus/listRequestMethod")
]
params: ListMcpServerStatusParams
class AccountLoginStartRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["account/login/start"], Field(title="Account/login/startRequestMethod")
]
params: LoginAccountParams
class CommandExecRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["command/exec"], Field(title="Command/execRequestMethod")]
params: CommandExecParams
class CommandExecResizeRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["command/exec/resize"], Field(title="Command/exec/resizeRequestMethod")
]
params: CommandExecResizeParams
class ConfigValueWriteRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["config/value/write"], Field(title="Config/value/writeRequestMethod")]
params: ConfigValueWriteParams
class ComputerUseConfig(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
default_app_access: AllowDenyRequirement | None = None
macos: ComputerUseMacosConfig | None = None
windows: ComputerUseWindowsConfig | None = None
class Config(BaseModel):
model_config = ConfigDict(
extra="allow",
populate_by_name=True,
)
analytics: AnalyticsConfig | None = None
approval_policy: AskForApproval | None = None
approvals_reviewer: Annotated[
ApprovalsReviewer | None,
Field(
description="[UNSTABLE] Optional default for where approval requests are routed for review."
),
] = None
browser_use: BrowserUseConfig | None = None
compact_prompt: str | None = None
computer_use: ComputerUseConfig | None = None
desktop: dict[str, Any] | None = None
developer_instructions: str | None = None
forced_chatgpt_workspace_id: ForcedChatgptWorkspaceIds | None = None
forced_login_method: ForcedLoginMethod | None = None
instructions: str | None = None
model: str | None = None
model_auto_compact_token_limit: int | None = None
model_auto_compact_token_limit_scope: AutoCompactTokenLimitScope | None = None
model_context_window: int | None = None
model_provider: str | None = None
model_reasoning_effort: ReasoningEffort | None = None
model_reasoning_summary: ReasoningSummary | None = None
model_verbosity: Verbosity | None = None
review_model: str | None = None
sandbox_mode: SandboxMode | None = None
sandbox_workspace_write: SandboxWorkspaceWrite | None = None
service_tier: str | None = None
tools: ToolsV2 | None = None
web_search: WebSearchMode | None = None
class ConfigBatchWriteParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
edits: list[ConfigEdit]
expected_version: Annotated[str | None, Field(alias="expectedVersion")] = None
file_path: Annotated[
str | None,
Field(
alias="filePath",
description="Path to the config file to write; defaults to the user's `config.toml` when omitted.",
),
] = None
reload_user_config: Annotated[
bool | None,
Field(
alias="reloadUserConfig",
description="When true, hot-reload updated runtime settings into loaded threads after writing. Session-static model, reasoning-effort, Plan-mode reasoning-effort, and service-tier defaults are not reloaded. The deprecated personality setting is also not reloaded.",
),
] = None
class ConfigReadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
config: Config
layers: list[ConfigLayer] | None = None
origins: dict[str, ConfigLayerMetadata]
class ConfigWriteResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
file_path: Annotated[
AbsolutePathBuf,
Field(alias="filePath", description="Canonical path to the config file that was written."),
]
overridden_metadata: Annotated[OverriddenMetadata | None, Field(alias="overriddenMetadata")] = (
None
)
status: WriteStatus
version: str
class ErrorNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
error: TurnError
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
will_retry: Annotated[bool, Field(alias="willRetry")]
class ExternalAgentConfigImportCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
import_id: Annotated[str, Field(alias="importId")]
item_type_results: Annotated[
list[ExternalAgentConfigImportTypeResult], Field(alias="itemTypeResults")
]
class ExternalAgentConfigImportHistory(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
completed_at_ms: Annotated[int, Field(alias="completedAtMs")]
failures: list[ExternalAgentConfigImportItemTypeFailure]
import_id: Annotated[str, Field(alias="importId")]
provider_id: Annotated[str | None, Field(alias="providerId")] = None
successes: list[ExternalAgentConfigImportItemTypeSuccess]
class ExternalAgentConfigImportHistoryRecordTypeResultParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
failures: list[ExternalAgentConfigImportItemTypeFailure]
item_type: Annotated[ExternalAgentConfigMigrationItemType, Field(alias="itemType")]
successes: list[ExternalAgentConfigImportHistoryRecordSuccessParams]
class ExternalAgentConfigImportProgressNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
import_id: Annotated[str, Field(alias="importId")]
item_type_results: Annotated[
list[ExternalAgentConfigImportTypeResult], Field(alias="itemTypeResults")
]
class ExternalAgentConfigMigrationItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
cwd: Annotated[
str | None,
Field(
description="Null or empty means home-scoped migration; non-empty means repo-scoped migration."
),
] = None
description: str
details: MigrationDetails | None = None
item_type: Annotated[ExternalAgentConfigMigrationItemType, Field(alias="itemType")]
class FileChangePatchUpdatedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
changes: list[FileUpdateChange]
item_id: Annotated[str, Field(alias="itemId")]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class SpecialFileSystemPath(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
type: Annotated[Literal["special"], Field(title="SpecialFileSystemPathType")]
value: FileSystemSpecialPath
class FileSystemPath(
RootModel[PathFileSystemPath | GlobPatternFileSystemPath | SpecialFileSystemPath]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: PathFileSystemPath | GlobPatternFileSystemPath | SpecialFileSystemPath
class FileSystemSandboxEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
access: FileSystemAccessMode
path: FileSystemPath
class FunctionCallOutputBody(RootModel[str | list[FunctionCallOutputContentItem]]):
model_config = ConfigDict(
populate_by_name=True,
)
root: str | list[FunctionCallOutputContentItem]
class GetAccountRateLimitsResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
account_id: Annotated[
str | None,
Field(
alias="accountId",
description="Account associated with this usage snapshot, when supplied by the backend.",
),
] = None
ordinary_usage_allowed: Annotated[
bool | None,
Field(
alias="ordinaryUsageAllowed",
description="Backend permission for ordinary included usage, validated against the active account. Null means unavailable; clients must not infer recovery from percentages or reset times.",
),
] = None
rate_limit_reset_credits: Annotated[
RateLimitResetCreditsSummary | None, Field(alias="rateLimitResetCredits")
] = None
rate_limit_upsell: Annotated[
Any | None,
Field(
alias="rateLimitUpsell",
description="Optional backend-owned banner from the same usage read. Its nested keys retain the backend's snake_case contract; an absent banner leaves the client's existing UI unchanged.",
),
] = None
rate_limits: Annotated[
RateLimitSnapshot,
Field(
alias="rateLimits",
description="Backward-compatible single-bucket view; mirrors the historical payload.",
),
]
rate_limits_by_limit_id: Annotated[
dict[str, Any] | None,
Field(
alias="rateLimitsByLimitId",
description="Multi-bucket view keyed by metered `limit_id` (for example, `codex`).",
),
] = None
class GetAccountTokenUsageResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
daily_usage_buckets: Annotated[
list[AccountTokenUsageDailyBucket] | None, Field(alias="dailyUsageBuckets")
] = None
summary: AccountTokenUsageSummary
thread_usage: Annotated[
ThreadUsage | None,
Field(
alias="threadUsage",
description="Estimated usage when a thread was requested and its billing route is available.",
),
] = None
class GetWorkspaceMessagesResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
feature_enabled: Annotated[
bool,
Field(
alias="featureEnabled",
description="Whether the workspace-message backend route is available for this client.",
),
]
messages: Annotated[
list[WorkspaceMessage],
Field(description="Active workspace messages returned by the backend."),
]
class HookCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
run: HookRunSummary
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str | None, Field(alias="turnId")] = None
class ListMcpServerStatusResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[McpServerStatus]
next_cursor: Annotated[
str | None,
Field(
alias="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.",
),
] = None
class ModelsRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
new_thread: Annotated[NewThreadModelDefaults | None, Field(alias="newThread")] = None
class PluginShareContext(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
can_publish_to_workspace: Annotated[bool | None, Field(alias="canPublishToWorkspace")] = None
creator_account_user_id: Annotated[str | None, Field(alias="creatorAccountUserId")] = None
creator_name: Annotated[str | None, Field(alias="creatorName")] = None
discoverability: PluginShareDiscoverability | None = None
remote_plugin_id: Annotated[str, Field(alias="remotePluginId")]
remote_version: Annotated[
str | None,
Field(
alias="remoteVersion",
description="Version of the remote shared plugin release when available.",
),
] = None
share_principals: Annotated[
list[PluginSharePrincipal] | None, Field(alias="sharePrincipals")
] = None
share_url: Annotated[str | None, Field(alias="shareUrl")] = None
class PluginShareSaveParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
discoverability: PluginShareDiscoverability | None = None
plugin_path: Annotated[AbsolutePathBuf, Field(alias="pluginPath")]
remote_plugin_id: Annotated[str | None, Field(alias="remotePluginId")] = None
share_targets: Annotated[list[PluginShareTarget] | None, Field(alias="shareTargets")] = None
class PluginSummary(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
auth_policy: Annotated[PluginAuthPolicy, Field(alias="authPolicy")]
availability: Annotated[
PluginAvailability | None,
Field(description="Availability state for installing and using the plugin."),
] = "AVAILABLE"
disabled_reason: Annotated[
PluginDisabledReason | None,
Field(
alias="disabledReason",
description="Why the remote plugin is unavailable, when provided by plugin-service.",
),
] = None
eligible_plan_types: Annotated[
list[str] | None,
Field(
alias="eligiblePlanTypes",
description="Raw plugin-service plan identifiers eligible to install the plugin.",
),
] = None
enabled: bool
id: str
install_policy: Annotated[PluginInstallPolicy, Field(alias="installPolicy")]
install_policy_source: Annotated[
PluginInstallPolicySource | None, Field(alias="installPolicySource")
] = None
installed: bool
installed_at: Annotated[
int | None,
Field(
alias="installedAt",
description="Unix timestamp in seconds when the remote plugin was installed, when available.",
),
] = None
interface: PluginInterface | None = None
keywords: list[str] | None = []
local_version: Annotated[
str | None,
Field(
alias="localVersion",
description="Version of the locally materialized plugin package when available.",
),
] = None
must_show_installation_interstitial: Annotated[
bool | None, Field(alias="mustShowInstallationInterstitial")
] = None
name: str
remote_plugin_id: Annotated[
str | None,
Field(
alias="remotePluginId", description="Backend remote plugin identifier when available."
),
] = None
share_context: Annotated[
PluginShareContext | None,
Field(
alias="shareContext",
description="Remote sharing context associated with this plugin when available.",
),
] = None
source: PluginSource
version: Annotated[
str | None,
Field(description="Version advertised by the remote marketplace backend when available."),
] = None
class FunctionCallOutputResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
call_id: str | None = None
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
name: str | None = None
namespace: str | None = None
output: FunctionCallOutputBody
type: Annotated[
Literal["function_call_output"], Field(title="FunctionCallOutputResponseItemType")
]
class CustomToolCallOutputResponseItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
call_id: str
id: str | None = None
internal_chat_message_metadata_passthrough: InternalChatMessageMetadataPassthrough | None = None
name: str | None = None
output: FunctionCallOutputBody
type: Annotated[
Literal["custom_tool_call_output"], Field(title="CustomToolCallOutputResponseItemType")
]
class ResponseItem(
RootModel[
MessageResponseItem
| AgentMessageResponseItem
| ReasoningResponseItem
| LocalShellCallResponseItem
| FunctionCallResponseItem
| ToolSearchCallResponseItem
| FunctionCallOutputResponseItem
| CustomToolCallResponseItem
| CustomToolCallOutputResponseItem
| ToolSearchOutputResponseItem
| WebSearchCallResponseItem
| ImageGenerationCallResponseItem
| CompactionResponseItem
| ConfigurationUpdateResponseItem
| CompactionTriggerResponseItem
| ContextCompactionResponseItem
| OtherResponseItem
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
MessageResponseItem
| AgentMessageResponseItem
| ReasoningResponseItem
| LocalShellCallResponseItem
| FunctionCallResponseItem
| ToolSearchCallResponseItem
| FunctionCallOutputResponseItem
| CustomToolCallResponseItem
| CustomToolCallOutputResponseItem
| ToolSearchOutputResponseItem
| WebSearchCallResponseItem
| ImageGenerationCallResponseItem
| CompactionResponseItem
| ConfigurationUpdateResponseItem
| CompactionTriggerResponseItem
| ContextCompactionResponseItem
| OtherResponseItem
)
class ErrorServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["error"], Field(title="ErrorNotificationMethod")]
params: ErrorNotification
class ThreadGoalUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/goal/updated"], Field(title="Thread/goal/updatedNotificationMethod")
]
params: ThreadGoalUpdatedNotification
class ThreadSettingsUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/settings/updated"], Field(title="Thread/settings/updatedNotificationMethod")
]
params: ThreadSettingsUpdatedNotification
class ThreadTokenUsageUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/tokenUsage/updated"],
Field(title="Thread/tokenUsage/updatedNotificationMethod"),
]
params: ThreadTokenUsageUpdatedNotification
class HookCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["hook/completed"], Field(title="Hook/completedNotificationMethod")]
params: HookCompletedNotification
class TurnPlanUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["turn/plan/updated"], Field(title="Turn/plan/updatedNotificationMethod")
]
params: TurnPlanUpdatedNotification
class ItemFileChangePatchUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/fileChange/patchUpdated"],
Field(title="Item/fileChange/patchUpdatedNotificationMethod"),
]
params: FileChangePatchUpdatedNotification
class AccountRateLimitsUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["account/rateLimits/updated"],
Field(title="Account/rateLimits/updatedNotificationMethod"),
]
params: AccountRateLimitsUpdatedNotification
class AppListUpdatedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["app/list/updated"], Field(title="App/list/updatedNotificationMethod")
]
params: AppListUpdatedNotification
class ExternalAgentConfigImportProgressServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["externalAgentConfig/import/progress"],
Field(title="ExternalAgentConfig/import/progressNotificationMethod"),
]
params: ExternalAgentConfigImportProgressNotification
class ExternalAgentConfigImportCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["externalAgentConfig/import/completed"],
Field(title="ExternalAgentConfig/import/completedNotificationMethod"),
]
params: ExternalAgentConfigImportCompletedNotification
class ThreadRealtimeItemStartedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/item/started"],
Field(title="Thread/realtime/item/startedNotificationMethod"),
]
params: ThreadRealtimeItemStartedNotification
class ThreadRealtimeItemCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["thread/realtime/item/completed"],
Field(title="Thread/realtime/item/completedNotificationMethod"),
]
params: ThreadRealtimeItemCompletedNotification
class WindowsSandboxSetupCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["windowsSandbox/setupCompleted"],
Field(title="WindowsSandbox/setupCompletedNotificationMethod"),
]
params: WindowsSandboxSetupCompletedNotification
class SubAgentSessionSource(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
sub_agent: Annotated[SubAgentSource, Field(alias="subAgent")]
class SessionSource(RootModel[SessionSourceValue | CustomSessionSource | SubAgentSessionSource]):
model_config = ConfigDict(
populate_by_name=True,
)
root: SessionSourceValue | CustomSessionSource | SubAgentSessionSource
class FunctionCallOutputThreadItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: str
name: str
namespace: str | None = None
output: FunctionCallOutputBody
type: Annotated[Literal["functionCallOutput"], Field(title="FunctionCallOutputThreadItemType")]
class ThreadItem(
RootModel[
UserMessageThreadItem
| HookPromptThreadItem
| AgentMessageThreadItem
| FunctionCallOutputThreadItem
| PlanThreadItem
| ReasoningThreadItem
| CommandExecutionThreadItem
| FileChangeThreadItem
| McpToolCallThreadItem
| DynamicToolCallThreadItem
| CollabAgentToolCallThreadItem
| SubAgentActivityThreadItem
| WebSearchThreadItem
| ImageViewThreadItem
| SleepThreadItem
| ImageGenerationThreadItem
| EnteredReviewModeThreadItem
| ExitedReviewModeThreadItem
| ContextCompactionThreadItem
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
UserMessageThreadItem
| HookPromptThreadItem
| AgentMessageThreadItem
| FunctionCallOutputThreadItem
| PlanThreadItem
| ReasoningThreadItem
| CommandExecutionThreadItem
| FileChangeThreadItem
| McpToolCallThreadItem
| DynamicToolCallThreadItem
| CollabAgentToolCallThreadItem
| SubAgentActivityThreadItem
| WebSearchThreadItem
| ImageViewThreadItem
| SleepThreadItem
| ImageGenerationThreadItem
| EnteredReviewModeThreadItem
| ExitedReviewModeThreadItem
| ContextCompactionThreadItem
)
class ThreadItemEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item: ThreadItem
turn_id: Annotated[str, Field(alias="turnId", description="Turn containing this item.")]
class ThreadItemsListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
backwards_cursor: Annotated[
str | None,
Field(
alias="backwardsCursor",
description="Opaque cursor to pass as `cursor` when reversing `sortDirection`. This is only populated when the page contains at least one item.",
),
] = None
data: list[ThreadItemEntry]
next_cursor: Annotated[
str | None,
Field(
alias="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.",
),
] = None
class ItemThreadTimelineEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item: ThreadItem
position: Annotated[int, Field(ge=0)]
turn_id: Annotated[str, Field(alias="turnId")]
type: Annotated[Literal["item"], Field(title="ItemThreadTimelineEntryType")]
class TurnCompletedThreadTimelineEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
completed_at: int | None = None
duration_ms: int | None = None
error: TurnError | None = None
position: Annotated[int, Field(ge=0)]
started_at: int | None = None
status: TurnStatus
turn_id: str
type: Annotated[Literal["turnCompleted"], Field(title="TurnCompletedThreadTimelineEntryType")]
class ThreadTimelineEntry(
RootModel[
ItemThreadTimelineEntry
| RealtimeThreadTimelineEntry
| TurnStartedThreadTimelineEntry
| TurnCompletedThreadTimelineEntry
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
ItemThreadTimelineEntry
| RealtimeThreadTimelineEntry
| TurnStartedThreadTimelineEntry
| TurnCompletedThreadTimelineEntry,
Field(description="EXPERIMENTAL - one item or turn boundary in canonical rollout order."),
]
class Turn(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
completed_at: Annotated[
int | None,
Field(
alias="completedAt", description="Unix timestamp (in seconds) when the turn completed."
),
] = None
duration_ms: Annotated[
int | None,
Field(
alias="durationMs",
description="Duration between turn start and completion in milliseconds, if known.",
),
] = None
error: Annotated[
TurnError | None, Field(description="Only populated when the Turn's status is failed.")
] = None
id: Annotated[
str, Field(description="Identifier for this turn. Codex-generated turn IDs are UUIDv7.")
]
items: Annotated[
list[ThreadItem], Field(description="Thread items currently included in this turn payload.")
]
items_view: Annotated[
TurnItemsView | None,
Field(
alias="itemsView",
description="Describes how much of `items` has been loaded for this turn.",
),
] = "full"
started_at: Annotated[
int | None,
Field(alias="startedAt", description="Unix timestamp (in seconds) when the turn started."),
] = None
status: TurnStatus
class TurnCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
turn: Turn
class TurnStartResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
turn: Turn
class TurnStartedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread_id: Annotated[str, Field(alias="threadId")]
turn: Turn
class TurnToolOutput(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
name: str
namespace: str | None = None
output: FunctionCallOutputBody
class TurnsPage(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
backwards_cursor: Annotated[str | None, Field(alias="backwardsCursor")] = None
data: list[Turn]
next_cursor: Annotated[str | None, Field(alias="nextCursor")] = None
class AdditionalFileSystemPermissions(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
entries: list[FileSystemSandboxEntry] | None = None
glob_scan_max_depth: Annotated[int | None, Field(alias="globScanMaxDepth", ge=1)] = None
read: Annotated[
list[LegacyAppPathString] | None,
Field(description="This will be removed in favor of `entries`."),
] = None
write: Annotated[
list[LegacyAppPathString] | None,
Field(description="This will be removed in favor of `entries`."),
] = None
class PluginShareSaveRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["plugin/share/save"], Field(title="Plugin/share/saveRequestMethod")]
params: PluginShareSaveParams
class ConfigBatchWriteRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["config/batchWrite"], Field(title="Config/batchWriteRequestMethod")]
params: ConfigBatchWriteParams
class ConfigRequirements(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
additional_developer_instructions: Annotated[
str | None, Field(alias="additionalDeveloperInstructions")
] = None
allow_appshots: Annotated[bool | None, Field(alias="allowAppshots")] = None
allow_browser_and_computer_use: Annotated[
bool | None, Field(alias="allowBrowserAndComputerUse")
] = None
allow_login_shell: Annotated[bool | None, Field(alias="allowLoginShell")] = None
allow_managed_hooks_only: Annotated[bool | None, Field(alias="allowManagedHooksOnly")] = None
allow_remote_control: Annotated[bool | None, Field(alias="allowRemoteControl")] = None
allowed_approval_policies: Annotated[
list[AskForApproval] | None, Field(alias="allowedApprovalPolicies")
] = None
allowed_login_methods: Annotated[
list[ForcedLoginMethod] | None,
Field(
alias="allowedLoginMethods",
description="Effective login methods after managed, forced-login, and workspace restrictions. An empty list permits no login method. Older servers may omit this field.",
),
] = None
allowed_permission_profiles: Annotated[
dict[str, Any] | None, Field(alias="allowedPermissionProfiles")
] = None
allowed_sandbox_modes: Annotated[
list[SandboxMode] | None, Field(alias="allowedSandboxModes")
] = None
allowed_web_search_modes: Annotated[
list[WebSearchMode] | None, Field(alias="allowedWebSearchModes")
] = None
allowed_windows_sandbox_implementations: Annotated[
list[WindowsSandboxImplementation] | None,
Field(alias="allowedWindowsSandboxImplementations"),
] = None
auto_review: Annotated[AutoReviewRequirements | None, Field(alias="autoReview")] = None
browser_use: Annotated[BrowserUseRequirements | None, Field(alias="browserUse")] = None
chatgpt_base_url: Annotated[str | None, Field(alias="chatgptBaseUrl")] = None
check_for_update_on_startup: Annotated[bool | None, Field(alias="checkForUpdateOnStartup")] = (
None
)
cli_auth_credentials_store: Annotated[
CliAuthCredentialsStoreMode | None, Field(alias="cliAuthCredentialsStore")
] = None
computer_use: Annotated[ComputerUseRequirements | None, Field(alias="computerUse")] = None
default_permissions: Annotated[str | None, Field(alias="defaultPermissions")] = None
enforce_residency: Annotated[ResidencyRequirement | None, Field(alias="enforceResidency")] = (
None
)
feature_requirements: Annotated[dict[str, Any] | None, Field(alias="featureRequirements")] = (
None
)
feedback: FeedbackRequirements | None = None
in_app_browser: Annotated[InAppBrowserRequirements | None, Field(alias="inAppBrowser")] = None
log_dir: Annotated[str | None, Field(alias="logDir")] = None
model_catalog_json: Annotated[str | None, Field(alias="modelCatalogJson")] = None
model_provider: Annotated[
str | None,
Field(
alias="modelProvider",
description="Exact provider selection required by managed policy.",
),
] = None
model_providers: Annotated[
dict[str, Any] | None,
Field(
alias="modelProviders",
description="Complete required provider definitions, using config.toml field names.",
),
] = None
models: ModelsRequirements | None = None
sqlite_home: Annotated[str | None, Field(alias="sqliteHome")] = None
windows_sandbox_private_desktop: Annotated[
bool | None, Field(alias="windowsSandboxPrivateDesktop")
] = None
class ConfigRequirementsReadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
requirements: Annotated[
ConfigRequirements | None,
Field(
description="Null if no requirements are configured (e.g. no requirements.toml/MDM entries)."
),
] = None
class ExternalAgentConfigDetectResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
connectors: list[ExternalAgentDetectedConnectorCandidate] | None = []
items: list[ExternalAgentConfigMigrationItem]
class ExternalAgentConfigImportHistoriesReadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
connectors: list[ExternalAgentImportedConnectorCandidate]
data: list[ExternalAgentConfigImportHistory]
class ExternalAgentConfigImportHistoryRecordParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item_type_results: Annotated[
list[ExternalAgentConfigImportHistoryRecordTypeResultParams],
Field(
alias="itemTypeResults", description="Completed results grouped by imported item type."
),
]
provider_id: Annotated[
str,
Field(
alias="providerId",
description="Opaque provider identifier for the externally completed import.",
),
]
class ExternalAgentConfigImportParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
migration_items: Annotated[
list[ExternalAgentConfigMigrationItem], Field(alias="migrationItems")
]
migration_source: Annotated[
str | None,
Field(
alias="migrationSource",
description="Migration-source selector used to produce the migration items. Pass the same value to detection and import; missing or unrecognized values use the default source.",
),
] = None
provider_id: Annotated[
str | None,
Field(
alias="providerId",
description="Opaque provider identifier supplied by the caller for analytics attribution and import history display. This does not select the migration source.",
),
] = None
source: Annotated[
str | None,
Field(description="Optional identifier for the product that initiated the import."),
] = None
class ItemCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
completed_at_ms: Annotated[
int,
Field(
alias="completedAtMs",
description="Unix timestamp (in milliseconds) when this item lifecycle completed.",
),
]
item: ThreadItem
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class ItemStartedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item: ThreadItem
started_at_ms: Annotated[
int,
Field(
alias="startedAtMs",
description="Unix timestamp (in milliseconds) when this item lifecycle started.",
),
]
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class PluginDetail(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
app_templates: Annotated[list[AppTemplateSummary], Field(alias="appTemplates")]
apps: list[AppSummary]
description: str | None = None
hooks: list[PluginHookSummary]
marketplace_name: Annotated[str, Field(alias="marketplaceName")]
marketplace_path: Annotated[AbsolutePathBuf | None, Field(alias="marketplacePath")] = None
mcp_servers: Annotated[list[str], Field(alias="mcpServers")]
scheduled_tasks: Annotated[list[ScheduledTaskSummary] | None, Field(alias="scheduledTasks")] = (
None
)
share_url: Annotated[str | None, Field(alias="shareUrl")] = None
skills: list[SkillSummary]
summary: PluginSummary
class PluginMarketplaceEntry(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
interface: MarketplaceInterface | None = None
name: str
path: Annotated[
AbsolutePathBuf | None,
Field(
description="Local marketplace file path when the marketplace is backed by a local file. Remote-only catalog marketplaces do not have a local path."
),
] = None
plugins: list[PluginSummary]
class PluginReadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
plugin: PluginDetail
class PluginSearchResult(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
marketplace_name: Annotated[str, Field(alias="marketplaceName")]
marketplace_path: Annotated[AbsolutePathBuf | None, Field(alias="marketplacePath")] = None
plugin: PluginSummary
class PluginShareListItem(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
local_plugin_path: Annotated[AbsolutePathBuf | None, Field(alias="localPluginPath")] = None
plugin: PluginSummary
class PluginShareListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
data: list[PluginShareListItem]
class RawResponseItemCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
item: ResponseItem
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class RequestPermissionProfile(BaseModel):
model_config = ConfigDict(
extra="forbid",
populate_by_name=True,
)
file_system: Annotated[AdditionalFileSystemPermissions | None, Field(alias="fileSystem")] = None
network: AdditionalNetworkPermissions | None = None
class ReviewStartResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
review_thread_id: Annotated[
str,
Field(
alias="reviewThreadId",
description="Identifies the thread where the review runs.\n\nFor inline reviews, this is the original thread id. For detached reviews, this is the id of the new review thread.",
),
]
turn: Turn
class TurnStartedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["turn/started"], Field(title="Turn/startedNotificationMethod")]
params: TurnStartedNotification
class TurnCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["turn/completed"], Field(title="Turn/completedNotificationMethod")]
params: TurnCompletedNotification
class ItemStartedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["item/started"], Field(title="Item/startedNotificationMethod")]
params: ItemStartedNotification
class ItemCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["item/completed"], Field(title="Item/completedNotificationMethod")]
params: ItemCompletedNotification
class Thread(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
agent_nickname: Annotated[
str | None,
Field(
alias="agentNickname",
description="Optional random unique nickname assigned to an AgentControl-spawned sub-agent.",
),
] = None
agent_role: Annotated[
str | None,
Field(
alias="agentRole",
description="Optional role (agent_role) assigned to an AgentControl-spawned sub-agent.",
),
] = None
cli_version: Annotated[
str, Field(alias="cliVersion", description="Version of the CLI that created the thread.")
]
created_at: Annotated[
int,
Field(
alias="createdAt",
description="Unix timestamp (in seconds) when the thread was created.",
),
]
cwd: Annotated[AbsolutePathBuf, Field(description="Working directory captured for the thread.")]
ephemeral: Annotated[
bool,
Field(
description="Whether the thread is ephemeral and should not be materialized on disk."
),
]
forked_from_id: Annotated[
str | None,
Field(
alias="forkedFromId",
description="Source thread id when this thread was created by forking another thread.",
),
] = None
git_info: Annotated[
GitInfo | None,
Field(
alias="gitInfo",
description="Optional Git metadata captured when the thread was created.",
),
] = None
history_mode: Annotated[
ThreadHistoryMode | None,
Field(
alias="historyMode",
description="Persisted thread history contract selected when this thread was created.",
),
] = "legacy"
id: Annotated[
str, Field(description="Identifier for this thread. Codex-generated thread IDs are UUIDv7.")
]
model: Annotated[
str | None,
Field(
description="Current configured model when loaded, otherwise the latest persisted model. Null when unavailable. This is not per-turn execution telemetry."
),
] = None
model_provider: Annotated[
str,
Field(
alias="modelProvider",
description="Model provider used for this thread (for example, 'openai').",
),
]
name: Annotated[str | None, Field(description="Optional user-facing thread title.")] = None
originator: Annotated[
str | None,
Field(
description="Originator recorded when the thread was created, independent of its current client or executor. Null when the recorded originator is unavailable."
),
] = None
parent_thread_id: Annotated[
str | None,
Field(
alias="parentThreadId",
description="The ID of the parent thread. This will only be set if this thread is a subagent.",
),
] = None
path: Annotated[str | None, Field(description="[UNSTABLE] Path to the thread on disk.")] = None
preview: Annotated[
str, Field(description="Usually the first user message in the thread, if available.")
]
project_id: Annotated[
str | None,
Field(
alias="projectId",
description="Canonical project assignment owned by app-server, if any.",
),
] = None
reasoning_effort: Annotated[
ReasoningEffort | None,
Field(
alias="reasoningEffort",
description="Current configured reasoning effort when loaded, otherwise the latest persisted effort. Null when unset or unavailable. This is not per-turn execution telemetry.",
),
] = None
recency_at: Annotated[
int | None,
Field(
alias="recencyAt",
description="Unix timestamp (in seconds) used for thread recency ordering.",
),
] = None
section: Annotated[
ThreadSection | None,
Field(description="The independently persisted section selected for this thread, if any."),
] = None
section_entered_at: Annotated[
int | None,
Field(
alias="sectionEnteredAt",
description="Unix timestamp in seconds when the thread entered its current section.",
),
] = None
session_id: Annotated[
str,
Field(
alias="sessionId",
description="Session id shared by threads that belong to the same session tree.",
),
]
source: Annotated[
SessionSource,
Field(
description="Origin of the thread (CLI, VSCode, codex exec, codex app-server, etc.)."
),
]
status: Annotated[ThreadStatus, Field(description="Current runtime status for the thread.")]
thread_source: Annotated[
ThreadSource | None,
Field(
alias="threadSource",
description="Optional analytics source classification for this thread.",
),
] = None
turns: Annotated[
list[Turn],
Field(
description="Only populated on `thread/resume`, `thread/fork`, and `thread/read` (when `includeTurns` is true) responses. For all other responses and notifications returning a Thread, the turns field will be an empty list."
),
]
updated_at: Annotated[
int,
Field(
alias="updatedAt",
description="Unix timestamp (in seconds) when the thread was last updated.",
),
]
class ThreadForkResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approval_policy: Annotated[AskForApproval, Field(alias="approvalPolicy")]
approvals_reviewer: Annotated[
ApprovalsReviewer,
Field(
alias="approvalsReviewer",
description="Reviewer currently used for approval requests on this thread.",
),
]
cwd: AbsolutePathBuf
disabled_plugin_ids: Annotated[
list[str] | None,
Field(
alias="disabledPluginIds",
description="Saved list of disabled plugin IDs. Does not yet filter plugin capabilities.",
),
] = []
instruction_sources: Annotated[
list[LegacyAppPathString] | None,
Field(
alias="instructionSources",
description="Environment-native paths to instruction source files currently loaded for this thread.",
),
] = []
model: str
model_provider: Annotated[str, Field(alias="modelProvider")]
reasoning_effort: Annotated[ReasoningEffort | None, Field(alias="reasoningEffort")] = None
sandbox: Annotated[
SandboxPolicy,
Field(
description="Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance."
),
]
service_tier: Annotated[str | None, Field(alias="serviceTier")] = None
thread: Thread
class ThreadListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
backwards_cursor: Annotated[
str | None,
Field(
alias="backwardsCursor",
description="Opaque cursor to pass as `cursor` when reversing `sortDirection`. This is only populated when the page contains at least one thread. Use it with the opposite `sortDirection`; for timestamp sorts it anchors at the start of the page timestamp so same-second updates are not skipped.",
),
] = None
data: list[Thread]
next_cursor: Annotated[
str | None,
Field(
alias="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.",
),
] = None
class ThreadMetadataUpdateResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread: Thread
class ThreadReadResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread: Thread
class ThreadResumeResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approval_policy: Annotated[AskForApproval, Field(alias="approvalPolicy")]
approvals_reviewer: Annotated[
ApprovalsReviewer,
Field(
alias="approvalsReviewer",
description="Reviewer currently used for approval requests on this thread.",
),
]
collaboration_mode: Annotated[
CollaborationMode | None,
Field(
alias="collaborationMode",
description="Effective collaboration mode. Absent when resuming from an older server.",
),
] = None
cwd: AbsolutePathBuf
disabled_plugin_ids: Annotated[
list[str] | None,
Field(
alias="disabledPluginIds",
description="Saved list of disabled plugin IDs. Does not yet filter plugin capabilities.",
),
] = []
instruction_sources: Annotated[
list[LegacyAppPathString] | None,
Field(
alias="instructionSources",
description="Environment-native paths to instruction source files currently loaded for this thread.",
),
] = []
items_backwards_cursor: Annotated[
str | None,
Field(
alias="itemsBackwardsCursor",
description='Opaque cursor for hydrating paginated items backwards.\n\nPass this as `cursor` to `thread/items/list` with `sortDirection: "desc"`. The first page includes the item identified by the cursor.',
),
] = None
model: str
model_provider: Annotated[str, Field(alias="modelProvider")]
reasoning_effort: Annotated[ReasoningEffort | None, Field(alias="reasoningEffort")] = None
sandbox: Annotated[
SandboxPolicy,
Field(
description="Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance."
),
]
service_tier: Annotated[str | None, Field(alias="serviceTier")] = None
thread: Thread
turns_backwards_cursor: Annotated[
str | None,
Field(
alias="turnsBackwardsCursor",
description='Opaque cursor for hydrating paginated turns backwards.\n\nPass this as `cursor` to `thread/turns/list` with `sortDirection: "desc"`. The first page includes the turn identified by the cursor.',
),
] = None
class ThreadRevertResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
items_backwards_cursor: Annotated[
str | None,
Field(
alias="itemsBackwardsCursor",
description='Opaque cursor for hydrating paginated items backwards.\n\nPass this as `cursor` to `thread/items/list` with `sortDirection: "desc"`. The first page includes the item identified by the cursor.',
),
] = None
thread: Annotated[
Thread,
Field(
description="Updated loaded thread metadata. `turns` is always empty; hydrate retained history through `thread/turns/list`."
),
]
turns_backwards_cursor: Annotated[
str | None,
Field(
alias="turnsBackwardsCursor",
description='Opaque cursor for hydrating paginated turns backwards.\n\nPass this as `cursor` to `thread/turns/list` with `sortDirection: "desc"`. The first page includes the turn identified by the cursor.',
),
] = None
class ThreadSearchResult(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
snippet: str
thread: Thread
class ThreadStartResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approval_policy: Annotated[AskForApproval, Field(alias="approvalPolicy")]
approvals_reviewer: Annotated[
ApprovalsReviewer,
Field(
alias="approvalsReviewer",
description="Reviewer currently used for approval requests on this thread.",
),
]
cwd: AbsolutePathBuf
disabled_plugin_ids: Annotated[
list[str] | None,
Field(
alias="disabledPluginIds",
description="Saved list of disabled plugin IDs. Does not yet filter plugin capabilities.",
),
] = []
instruction_sources: Annotated[
list[LegacyAppPathString] | None,
Field(
alias="instructionSources",
description="Environment-native paths to instruction source files currently loaded for this thread.",
),
] = []
model: str
model_provider: Annotated[str, Field(alias="modelProvider")]
reasoning_effort: Annotated[ReasoningEffort | None, Field(alias="reasoningEffort")] = None
sandbox: Annotated[
SandboxPolicy,
Field(
description="Legacy sandbox policy retained for compatibility. Experimental clients should prefer `activePermissionProfile` for profile provenance."
),
]
service_tier: Annotated[str | None, Field(alias="serviceTier")] = None
thread: Thread
class ThreadStartedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread: Thread
class ThreadTurnsListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
backwards_cursor: Annotated[
str | None,
Field(
alias="backwardsCursor",
description="Opaque cursor to pass as `cursor` when reversing `sortDirection`. This is only populated when the page contains at least one turn. Use it with the opposite `sortDirection` to include the anchor turn again and catch updates to that turn.",
),
] = None
data: list[Turn]
next_cursor: Annotated[
str | None,
Field(
alias="nextCursor",
description="Opaque cursor to pass to the next call to continue after the last turn. if None, there are no more turns to return.",
),
] = None
class ThreadUnarchiveResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
thread: Thread
class TurnStartParams(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
approval_policy: Annotated[
AskForApproval | None,
Field(
alias="approvalPolicy",
description="Override the approval policy for this turn and subsequent turns.",
),
] = None
approvals_reviewer: Annotated[
ApprovalsReviewer | None,
Field(
alias="approvalsReviewer",
description="Override where approval requests are routed for review on this turn and subsequent turns.",
),
] = None
client_user_message_id: Annotated[str | None, Field(alias="clientUserMessageId")] = None
cwd: Annotated[
str | None,
Field(description="Override the working directory for this turn and subsequent turns."),
] = None
disabled_plugin_ids: Annotated[
list[str] | None,
Field(
alias="disabledPluginIds",
description="Replace this thread's disabled plugin IDs. Omitted/null preserves the list; [] clears it.",
),
] = None
effort: Annotated[
ReasoningEffort | None,
Field(description="Override the reasoning effort for this turn and subsequent turns."),
] = None
input: list[UserInput]
model: Annotated[
str | None, Field(description="Override the model for this turn and subsequent turns.")
] = None
output_schema: Annotated[
Any | None,
Field(
alias="outputSchema",
description="Optional JSON Schema used to constrain the final assistant message for this turn.",
),
] = None
personality: Annotated[
Personality | None,
Field(
description="@deprecated `friendly` and `pragmatic` no longer select a style. Changing this does not rewrite the thread's existing instructions."
),
] = None
sandbox_policy: Annotated[
SandboxPolicy | None,
Field(
alias="sandboxPolicy",
description="Override the sandbox policy for this turn and subsequent turns.",
),
] = None
service_tier: Annotated[
str | None,
Field(
alias="serviceTier",
description="Override the service tier for this turn and subsequent turns.",
),
] = None
service_tier_for_turn: Annotated[
str | None,
Field(
alias="serviceTierForTurn",
description="Override the service tier only when this request starts a new turn. Use \"default\" for standard speed. Omitted or null inherits the thread's tier. Does not change the thread's tier or a turn being steered.",
),
] = None
summary: Annotated[
ReasoningSummary | None,
Field(description="Override the reasoning summary for this turn and subsequent turns."),
] = None
thread_id: Annotated[str, Field(alias="threadId")]
tool_output: Annotated[TurnToolOutput | None, Field(alias="toolOutput")] = None
turn_trigger: Annotated[
str | None,
Field(
alias="turnTrigger",
description="Optional source classification for the caller that starts this turn. Ignored when this request steers an already-active turn.",
),
] = None
class TurnStartRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[Literal["turn/start"], Field(title="Turn/startRequestMethod")]
params: TurnStartParams
class ExternalAgentConfigImportRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["externalAgentConfig/import"],
Field(title="ExternalAgentConfig/importRequestMethod"),
]
params: ExternalAgentConfigImportParams
class ExternalAgentConfigImportRecordHistoryRequest(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
id: RequestId
method: Annotated[
Literal["externalAgentConfig/import/recordHistory"],
Field(title="ExternalAgentConfig/import/recordHistoryRequestMethod"),
]
params: ExternalAgentConfigImportHistoryRecordParams
class ClientRequest(
RootModel[
InitializeRequest
| ThreadStartRequest
| ThreadResumeRequest
| ThreadForkRequest
| ThreadArchiveRequest
| ThreadDeleteRequest
| ThreadUnsubscribeRequest
| ThreadNameSetRequest
| ThreadGoalSetRequest
| ThreadGoalGetRequest
| ThreadGoalClearRequest
| ThreadMetadataUpdateRequest
| ThreadAttachmentAddRequest
| ThreadAttachmentListRequest
| ThreadAttachmentRemoveRequest
| ThreadSectionMoveRequest
| ThreadUnarchiveRequest
| ThreadCompactStartRequest
| ThreadShellCommandRequest
| ThreadApproveGuardianDeniedActionRequest
| ThreadRevertRequest
| ThreadListRequest
| ThreadSectionListRequest
| ThreadSectionCreateRequest
| ThreadSectionUpdateRequest
| ThreadSectionDeleteRequest
| ThreadLoadedListRequest
| ThreadReadRequest
| ThreadTurnsListRequest
| ThreadItemsListRequest
| ThreadInjectItemsRequest
| SkillsListRequest
| SkillsExtraRootsSetRequest
| HooksListRequest
| MarketplaceAddRequest
| MarketplaceRemoveRequest
| MarketplaceUpgradeRequest
| PluginListRequest
| PluginInstalledRequest
| PluginReconcileRequest
| PluginReadRequest
| PluginSkillReadRequest
| PluginShareSaveRequest
| PluginShareUpdateTargetsRequest
| PluginShareListRequest
| PluginShareCheckoutRequest
| PluginShareDeleteRequest
| AppReadRequest
| AppListRequest
| AppInstalledRequest
| FsReadFileRequest
| FsWriteFileRequest
| FsCreateDirectoryRequest
| FsGetMetadataRequest
| FsReadDirectoryRequest
| FsRemoveRequest
| FsCopyRequest
| FsWatchRequest
| FsUnwatchRequest
| SkillsConfigWriteRequest
| PluginInstallRequest
| PluginUninstallRequest
| TurnStartRequest
| TurnSteerRequest
| TurnInterruptRequest
| ReviewStartRequest
| ModelListRequest
| ModelProviderCapabilitiesReadRequest
| ExperimentalFeatureListRequest
| PermissionProfileListRequest
| ExperimentalFeatureEnablementSetRequest
| McpServerOauthLoginRequest
| ConfigMcpServerReloadRequest
| McpServerStatusListRequest
| McpServerResourceReadRequest
| McpServerToolCallRequest
| WindowsSandboxSetupStartRequest
| WindowsSandboxReadinessRequest
| AccountLoginStartRequest
| AccountLoginCancelRequest
| AccountLogoutRequest
| AccountRateLimitsReadRequest
| AccountRateLimitResetCreditConsumeRequest
| AccountUsageReadRequest
| AccountWorkspaceMessagesReadRequest
| AccountSendAddCreditsNudgeEmailRequest
| FeedbackUploadRequest
| CommandExecRequest
| CommandExecWriteRequest
| CommandExecTerminateRequest
| CommandExecResizeRequest
| ConfigReadRequest
| ExternalAgentConfigDetectRequest
| ExternalAgentConfigImportRequest
| ExternalAgentConfigImportRecordHistoryRequest
| ExternalAgentConfigImportReadHistoriesRequest
| ConfigValueWriteRequest
| ConfigBatchWriteRequest
| ConfigRequirementsReadRequest
| AccountReadRequest
| FuzzyFileSearchRequest
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
InitializeRequest
| ThreadStartRequest
| ThreadResumeRequest
| ThreadForkRequest
| ThreadArchiveRequest
| ThreadDeleteRequest
| ThreadUnsubscribeRequest
| ThreadNameSetRequest
| ThreadGoalSetRequest
| ThreadGoalGetRequest
| ThreadGoalClearRequest
| ThreadMetadataUpdateRequest
| ThreadAttachmentAddRequest
| ThreadAttachmentListRequest
| ThreadAttachmentRemoveRequest
| ThreadSectionMoveRequest
| ThreadUnarchiveRequest
| ThreadCompactStartRequest
| ThreadShellCommandRequest
| ThreadApproveGuardianDeniedActionRequest
| ThreadRevertRequest
| ThreadListRequest
| ThreadSectionListRequest
| ThreadSectionCreateRequest
| ThreadSectionUpdateRequest
| ThreadSectionDeleteRequest
| ThreadLoadedListRequest
| ThreadReadRequest
| ThreadTurnsListRequest
| ThreadItemsListRequest
| ThreadInjectItemsRequest
| SkillsListRequest
| SkillsExtraRootsSetRequest
| HooksListRequest
| MarketplaceAddRequest
| MarketplaceRemoveRequest
| MarketplaceUpgradeRequest
| PluginListRequest
| PluginInstalledRequest
| PluginReconcileRequest
| PluginReadRequest
| PluginSkillReadRequest
| PluginShareSaveRequest
| PluginShareUpdateTargetsRequest
| PluginShareListRequest
| PluginShareCheckoutRequest
| PluginShareDeleteRequest
| AppReadRequest
| AppListRequest
| AppInstalledRequest
| FsReadFileRequest
| FsWriteFileRequest
| FsCreateDirectoryRequest
| FsGetMetadataRequest
| FsReadDirectoryRequest
| FsRemoveRequest
| FsCopyRequest
| FsWatchRequest
| FsUnwatchRequest
| SkillsConfigWriteRequest
| PluginInstallRequest
| PluginUninstallRequest
| TurnStartRequest
| TurnSteerRequest
| TurnInterruptRequest
| ReviewStartRequest
| ModelListRequest
| ModelProviderCapabilitiesReadRequest
| ExperimentalFeatureListRequest
| PermissionProfileListRequest
| ExperimentalFeatureEnablementSetRequest
| McpServerOauthLoginRequest
| ConfigMcpServerReloadRequest
| McpServerStatusListRequest
| McpServerResourceReadRequest
| McpServerToolCallRequest
| WindowsSandboxSetupStartRequest
| WindowsSandboxReadinessRequest
| AccountLoginStartRequest
| AccountLoginCancelRequest
| AccountLogoutRequest
| AccountRateLimitsReadRequest
| AccountRateLimitResetCreditConsumeRequest
| AccountUsageReadRequest
| AccountWorkspaceMessagesReadRequest
| AccountSendAddCreditsNudgeEmailRequest
| FeedbackUploadRequest
| CommandExecRequest
| CommandExecWriteRequest
| CommandExecTerminateRequest
| CommandExecResizeRequest
| ConfigReadRequest
| ExternalAgentConfigDetectRequest
| ExternalAgentConfigImportRequest
| ExternalAgentConfigImportRecordHistoryRequest
| ExternalAgentConfigImportReadHistoriesRequest
| ConfigValueWriteRequest
| ConfigBatchWriteRequest
| ConfigRequirementsReadRequest
| AccountReadRequest
| FuzzyFileSearchRequest,
Field(description="Request from the client to the server.", title="ClientRequest"),
]
class RequestPermissionsGuardianApprovalReviewAction(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
permissions: RequestPermissionProfile
reason: str | None = None
type: Annotated[
Literal["requestPermissions"],
Field(title="RequestPermissionsGuardianApprovalReviewActionType"),
]
class GuardianApprovalReviewAction(
RootModel[
CommandGuardianApprovalReviewAction
| ExecveGuardianApprovalReviewAction
| WriteStdinGuardianApprovalReviewAction
| ApplyPatchGuardianApprovalReviewAction
| NetworkAccessGuardianApprovalReviewAction
| McpToolCallGuardianApprovalReviewAction
| RequestPermissionsGuardianApprovalReviewAction
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: (
CommandGuardianApprovalReviewAction
| ExecveGuardianApprovalReviewAction
| WriteStdinGuardianApprovalReviewAction
| ApplyPatchGuardianApprovalReviewAction
| NetworkAccessGuardianApprovalReviewAction
| McpToolCallGuardianApprovalReviewAction
| RequestPermissionsGuardianApprovalReviewAction
)
class ItemGuardianApprovalReviewCompletedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
action: GuardianApprovalReviewAction
completed_at_ms: Annotated[
int,
Field(
alias="completedAtMs",
description="Unix timestamp (in milliseconds) when this review completed.",
),
]
decision_source: Annotated[AutoReviewDecisionSource, Field(alias="decisionSource")]
review: GuardianApprovalReview
review_id: Annotated[
str, Field(alias="reviewId", description="Stable identifier for this review.")
]
started_at_ms: Annotated[
int,
Field(
alias="startedAtMs",
description="Unix timestamp (in milliseconds) when this review started.",
),
]
target_item_id: Annotated[
str | None,
Field(
alias="targetItemId",
description="Identifier for the reviewed item or tool call when one exists.\n\nIn most cases, one review maps to one target item. The exceptions are - execve reviews, where a single command may contain multiple execve calls to review (only possible when using the shell_zsh_fork feature) - stdin reviews, which refer to the existing parent command item and have a separate approval ID in the action payload - network policy reviews, where there is no target item\n\nA network call is triggered by a CommandExecution item, so having a target_item_id set to the CommandExecution item would be misleading because the review is about the network call, not the command execution. Therefore, target_item_id is set to None for network policy reviews.",
),
] = None
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class ItemGuardianApprovalReviewStartedNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
action: GuardianApprovalReviewAction
review: GuardianApprovalReview
review_id: Annotated[
str, Field(alias="reviewId", description="Stable identifier for this review.")
]
started_at_ms: Annotated[
int,
Field(
alias="startedAtMs",
description="Unix timestamp (in milliseconds) when this review started.",
),
]
target_item_id: Annotated[
str | None,
Field(
alias="targetItemId",
description="Identifier for the reviewed item or tool call when one exists.\n\nIn most cases, one review maps to one target item. The exceptions are - execve reviews, where a single command may contain multiple execve calls to review (only possible when using the shell_zsh_fork feature) - stdin reviews, which refer to the existing parent command item and have a separate approval ID in the action payload - network policy reviews, where there is no target item\n\nA network call is triggered by a CommandExecution item, so having a target_item_id set to the CommandExecution item would be misleading because the review is about the network call, not the command execution. Therefore, target_item_id is set to None for network policy reviews.",
),
] = None
thread_id: Annotated[str, Field(alias="threadId")]
turn_id: Annotated[str, Field(alias="turnId")]
class PluginInstalledResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
marketplace_load_errors: Annotated[
list[MarketplaceLoadErrorInfo] | None, Field(alias="marketplaceLoadErrors")
] = []
marketplaces: list[PluginMarketplaceEntry]
class PluginListResponse(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
featured_plugin_ids: Annotated[list[str] | None, Field(alias="featuredPluginIds")] = []
marketplace_load_errors: Annotated[
list[MarketplaceLoadErrorInfo] | None, Field(alias="marketplaceLoadErrors")
] = []
marketplaces: list[PluginMarketplaceEntry]
class ThreadStartedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[Literal["thread/started"], Field(title="Thread/startedNotificationMethod")]
params: ThreadStartedNotification
class ItemAutoApprovalReviewStartedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/autoApprovalReview/started"],
Field(title="Item/autoApprovalReview/startedNotificationMethod"),
]
params: ItemGuardianApprovalReviewStartedNotification
class ItemAutoApprovalReviewCompletedServerNotification(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
emitted_at_ms: Annotated[
int | None,
Field(
alias="emittedAtMs",
description="Unix timestamp (in milliseconds) when app-server emitted this notification.",
),
] = None
method: Annotated[
Literal["item/autoApprovalReview/completed"],
Field(title="Item/autoApprovalReview/completedNotificationMethod"),
]
params: ItemGuardianApprovalReviewCompletedNotification
class ServerNotification(
RootModel[
ErrorServerNotification
| ThreadStartedServerNotification
| ThreadStatusChangedServerNotification
| ThreadArchivedServerNotification
| ThreadDeletedServerNotification
| ThreadUnarchivedServerNotification
| ThreadClosedServerNotification
| ThreadRevertedServerNotification
| SkillsChangedServerNotification
| ThreadNameUpdatedServerNotification
| ThreadAttachmentUpdatedServerNotification
| ThreadGoalUpdatedServerNotification
| ThreadGoalClearedServerNotification
| ThreadQueueChangedServerNotification
| ProjectChangedServerNotification
| ThreadProjectUpdatedServerNotification
| ThreadEnvironmentConnectedServerNotification
| ThreadEnvironmentDisconnectedServerNotification
| ThreadSettingsUpdatedServerNotification
| ThreadTokenUsageUpdatedServerNotification
| TurnStartedServerNotification
| HookStartedServerNotification
| TurnCompletedServerNotification
| HookCompletedServerNotification
| TurnDiffUpdatedServerNotification
| TurnPlanUpdatedServerNotification
| ItemStartedServerNotification
| ItemAutoApprovalReviewStartedServerNotification
| ItemAutoApprovalReviewCompletedServerNotification
| AutoApprovalReviewStrictReviewRequiredServerNotification
| ItemCompletedServerNotification
| ItemAgentMessageDeltaServerNotification
| ItemPlanDeltaServerNotification
| CommandExecOutputDeltaServerNotification
| ProcessOutputDeltaServerNotification
| ProcessExitedServerNotification
| ItemCommandExecutionOutputDeltaServerNotification
| ItemCommandExecutionTerminalInteractionServerNotification
| ItemFileChangeOutputDeltaServerNotification
| ItemFileChangePatchUpdatedServerNotification
| ServerRequestResolvedServerNotification
| ItemMcpToolCallProgressServerNotification
| McpServerOauthLoginCompletedServerNotification
| McpServerStartupStatusUpdatedServerNotification
| McpServerEventStreamNotificationServerNotification
| AccountUpdatedServerNotification
| AccountRateLimitsUpdatedServerNotification
| AppListUpdatedServerNotification
| RemoteControlStatusChangedServerNotification
| ExternalAgentConfigImportProgressServerNotification
| ExternalAgentConfigImportCompletedServerNotification
| FsChangedServerNotification
| ItemReasoningSummaryTextDeltaServerNotification
| ItemReasoningSummaryPartAddedServerNotification
| ItemReasoningTextDeltaServerNotification
| ThreadCompactedServerNotification
| ModelReroutedServerNotification
| ModelVerificationServerNotification
| ModelProviderAuthRecoveryStartedServerNotification
| ModelProviderAuthRecoveryCompletedServerNotification
| TurnModerationMetadataServerNotification
| ModelSafetyBufferingUpdatedServerNotification
| WarningServerNotification
| GuardianWarningServerNotification
| DeprecationNoticeServerNotification
| ConfigWarningServerNotification
| FuzzyFileSearchSessionUpdatedServerNotification
| FuzzyFileSearchSessionCompletedServerNotification
| ThreadRealtimeStartedServerNotification
| ThreadRealtimeItemAddedServerNotification
| ThreadRealtimeItemStartedServerNotification
| ThreadRealtimeItemTranscriptDeltaServerNotification
| ThreadRealtimeItemCompletedServerNotification
| ThreadRealtimeTranscriptDeltaServerNotification
| ThreadRealtimeTranscriptDoneServerNotification
| ThreadRealtimeOutputAudioDeltaServerNotification
| ThreadRealtimeSdpServerNotification
| ThreadRealtimeErrorServerNotification
| ThreadRealtimeClosedServerNotification
| WindowsWorldWritableWarningServerNotification
| WindowsSandboxSetupCompletedServerNotification
| AccountLoginCompletedServerNotification
]
):
model_config = ConfigDict(
populate_by_name=True,
)
root: Annotated[
ErrorServerNotification
| ThreadStartedServerNotification
| ThreadStatusChangedServerNotification
| ThreadArchivedServerNotification
| ThreadDeletedServerNotification
| ThreadUnarchivedServerNotification
| ThreadClosedServerNotification
| ThreadRevertedServerNotification
| SkillsChangedServerNotification
| ThreadNameUpdatedServerNotification
| ThreadAttachmentUpdatedServerNotification
| ThreadGoalUpdatedServerNotification
| ThreadGoalClearedServerNotification
| ThreadQueueChangedServerNotification
| ProjectChangedServerNotification
| ThreadProjectUpdatedServerNotification
| ThreadEnvironmentConnectedServerNotification
| ThreadEnvironmentDisconnectedServerNotification
| ThreadSettingsUpdatedServerNotification
| ThreadTokenUsageUpdatedServerNotification
| TurnStartedServerNotification
| HookStartedServerNotification
| TurnCompletedServerNotification
| HookCompletedServerNotification
| TurnDiffUpdatedServerNotification
| TurnPlanUpdatedServerNotification
| ItemStartedServerNotification
| ItemAutoApprovalReviewStartedServerNotification
| ItemAutoApprovalReviewCompletedServerNotification
| AutoApprovalReviewStrictReviewRequiredServerNotification
| ItemCompletedServerNotification
| ItemAgentMessageDeltaServerNotification
| ItemPlanDeltaServerNotification
| CommandExecOutputDeltaServerNotification
| ProcessOutputDeltaServerNotification
| ProcessExitedServerNotification
| ItemCommandExecutionOutputDeltaServerNotification
| ItemCommandExecutionTerminalInteractionServerNotification
| ItemFileChangeOutputDeltaServerNotification
| ItemFileChangePatchUpdatedServerNotification
| ServerRequestResolvedServerNotification
| ItemMcpToolCallProgressServerNotification
| McpServerOauthLoginCompletedServerNotification
| McpServerStartupStatusUpdatedServerNotification
| McpServerEventStreamNotificationServerNotification
| AccountUpdatedServerNotification
| AccountRateLimitsUpdatedServerNotification
| AppListUpdatedServerNotification
| RemoteControlStatusChangedServerNotification
| ExternalAgentConfigImportProgressServerNotification
| ExternalAgentConfigImportCompletedServerNotification
| FsChangedServerNotification
| ItemReasoningSummaryTextDeltaServerNotification
| ItemReasoningSummaryPartAddedServerNotification
| ItemReasoningTextDeltaServerNotification
| ThreadCompactedServerNotification
| ModelReroutedServerNotification
| ModelVerificationServerNotification
| ModelProviderAuthRecoveryStartedServerNotification
| ModelProviderAuthRecoveryCompletedServerNotification
| TurnModerationMetadataServerNotification
| ModelSafetyBufferingUpdatedServerNotification
| WarningServerNotification
| GuardianWarningServerNotification
| DeprecationNoticeServerNotification
| ConfigWarningServerNotification
| FuzzyFileSearchSessionUpdatedServerNotification
| FuzzyFileSearchSessionCompletedServerNotification
| ThreadRealtimeStartedServerNotification
| ThreadRealtimeItemAddedServerNotification
| ThreadRealtimeItemStartedServerNotification
| ThreadRealtimeItemTranscriptDeltaServerNotification
| ThreadRealtimeItemCompletedServerNotification
| ThreadRealtimeTranscriptDeltaServerNotification
| ThreadRealtimeTranscriptDoneServerNotification
| ThreadRealtimeOutputAudioDeltaServerNotification
| ThreadRealtimeSdpServerNotification
| ThreadRealtimeErrorServerNotification
| ThreadRealtimeClosedServerNotification
| WindowsWorldWritableWarningServerNotification
| WindowsSandboxSetupCompletedServerNotification
| AccountLoginCompletedServerNotification,
Field(
description="Notification sent from the server to the client.",
title="ServerNotification",
),
]