mirror of
https://github.com/openai/codex.git
synced 2026-09-13 11:47:17 +00:00
## Why Keep Python protocol models aligned with the checked-in app-server schemas and preserve reviewed generated artifacts when staging SDK releases. ## What changed - Generate SDK types from the schema directory configured in `pyproject.toml`, with a `--schema-dir` override, instead of invoking the pinned runtime binary. - Refresh Python artifacts through `just write-app-server-schema` for standard repository exports. Skip SDK updates for scratch and experimental exports. - Regenerate protocol models and notification dispatch, deriving the known payload union from the registry so `Notification.payload` covers every registered event. - Explicitly allowlist convenience API parameters so new protocol fields do not silently expand method signatures. Preserve existing approval path wrappers. - Stage SDK releases using checked-in generated files without regenerating them. ## Testing Add coverage for schema selection, refresh gating and failure handling, release artifact preservation, notification payload typing, and approval path compatibility. Update the generation drift test to use repository schemas. GitOrigin-RevId: fab350b07cf170258b91fbafa8da384aeb2e3bd7
12495 lines
373 KiB
Python
12495 lines
373 KiB
Python
# 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 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,
|
|
)
|
|
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 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 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 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="Deprecated: use `appContext.resourceUri` instead.",
|
|
),
|
|
] = 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: Personality | None = 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 ThreadRollbackParams(BaseModel):
|
|
model_config = ConfigDict(
|
|
populate_by_name=True,
|
|
)
|
|
num_turns: Annotated[
|
|
int,
|
|
Field(
|
|
alias="numTurns",
|
|
description="The number of turns to drop from the end of the thread. Must be >= 1.\n\nThis only modifies the thread's history and does not revert local file changes that have been made by the agent. Clients are responsible for reverting these changes.",
|
|
ge=0,
|
|
),
|
|
]
|
|
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 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
|
|
| LocalImageUserInput
|
|
| AudioUserInput
|
|
| LocalAudioUserInput
|
|
| SkillUserInput
|
|
| MentionUserInput
|
|
]
|
|
):
|
|
model_config = ConfigDict(
|
|
populate_by_name=True,
|
|
)
|
|
root: (
|
|
TextUserInput
|
|
| ImageUserInput
|
|
| 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 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 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 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 ThreadRollbackRequest(BaseModel):
|
|
model_config = ConfigDict(
|
|
populate_by_name=True,
|
|
)
|
|
id: RequestId
|
|
method: Annotated[Literal["thread/rollback"], Field(title="Thread/rollbackRequestMethod")]
|
|
params: ThreadRollbackParams
|
|
|
|
|
|
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
|
|
image_url: str
|
|
type: Annotated[Literal["input_image"], Field(title="InputImageContentItemType")]
|
|
|
|
|
|
class ContentItem(
|
|
RootModel[
|
|
InputTextContentItem | InputImageContentItem | InputAudioContentItem | OutputTextContentItem
|
|
]
|
|
):
|
|
model_config = ConfigDict(
|
|
populate_by_name=True,
|
|
)
|
|
root: (
|
|
InputTextContentItem | InputImageContentItem | 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
|
|
image_url: str
|
|
type: Annotated[
|
|
Literal["input_image"], Field(title="InputImageFunctionCallOutputContentItemType")
|
|
]
|
|
|
|
|
|
class FunctionCallOutputContentItem(
|
|
RootModel[
|
|
InputTextFunctionCallOutputContentItem
|
|
| InputImageFunctionCallOutputContentItem
|
|
| InputAudioFunctionCallOutputContentItem
|
|
| EncryptedContentFunctionCallOutputContentItem
|
|
]
|
|
):
|
|
model_config = ConfigDict(
|
|
populate_by_name=True,
|
|
)
|
|
root: Annotated[
|
|
InputTextFunctionCallOutputContentItem
|
|
| InputImageFunctionCallOutputContentItem
|
|
| 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_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
|
|
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")] = 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 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
|
|
effort: ReasoningEffort | None = None
|
|
model: str
|
|
model_provider: Annotated[str, Field(alias="modelProvider")]
|
|
personality: Personality | None = 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: Personality | None = 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, service-tier, and personality defaults are 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_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[WindowsSandboxSetupMode] | 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
|
|
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/rollback`, `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
|
|
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.",
|
|
),
|
|
]
|
|
cwd: AbsolutePathBuf
|
|
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 ThreadRollbackResponse(BaseModel):
|
|
model_config = ConfigDict(
|
|
populate_by_name=True,
|
|
)
|
|
thread: Annotated[
|
|
Thread,
|
|
Field(
|
|
description="The updated thread after applying the rollback, with `turns` populated.\n\nThe ThreadItems stored in each Turn are lossy since we explicitly do not persist all agent interactions, such as command executions. This is the same behavior as `thread/resume`."
|
|
),
|
|
]
|
|
|
|
|
|
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
|
|
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
|
|
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="Override the personality for this turn and subsequent turns."),
|
|
] = 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
|
|
| ThreadSectionMoveRequest
|
|
| ThreadUnarchiveRequest
|
|
| ThreadCompactStartRequest
|
|
| ThreadShellCommandRequest
|
|
| ThreadApproveGuardianDeniedActionRequest
|
|
| ThreadRollbackRequest
|
|
| 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
|
|
| ThreadSectionMoveRequest
|
|
| ThreadUnarchiveRequest
|
|
| ThreadCompactStartRequest
|
|
| ThreadShellCommandRequest
|
|
| ThreadApproveGuardianDeniedActionRequest
|
|
| ThreadRollbackRequest
|
|
| 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
|
|
| 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
|
|
| 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",
|
|
),
|
|
]
|