## Why `PermissionProfile` should describe filesystem roots as absolute paths at the type level. Using `PathBuf` in `FileSystemPermissions` made the shared type too permissive and blurred together three different deserialization cases: - skill metadata in `agents/openai.yaml`, where relative paths should resolve against the skill directory - app-server API payloads, where callers should have to send absolute paths - local tool-call payloads for commands like `shell_command` and `exec_command`, where `additional_permissions.file_system` may legitimately be relative to the command `workdir` This change tightens the shared model without regressing the existing local command flow. ## What Changed - changed `protocol::models::FileSystemPermissions` and the app-server `AdditionalFileSystemPermissions` mirror to use `AbsolutePathBuf` - wrapped skill metadata deserialization in `AbsolutePathBufGuard`, so relative permission roots in `agents/openai.yaml` resolve against the containing skill directory - kept app-server/API deserialization strict, so relative `additionalPermissions.fileSystem.*` paths are rejected at the boundary - restored cwd/workdir-relative deserialization for local tool-call payloads by parsing `shell`, `shell_command`, and `exec_command` arguments under an `AbsolutePathBufGuard` rooted at the resolved command working directory - simplified runtime additional-permission normalization so it only canonicalizes and deduplicates absolute roots instead of trying to recover relative ones later - updated the app-server schema fixtures, `app-server/README.md`, and the affected transport/TUI tests to match the final behavior
1070 lines
No EOL
26 KiB
JSON
1070 lines
No EOL
26 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"AbsolutePathBuf": {
|
|
"description": "A path that is guaranteed to be absolute and normalized (though it is not guaranteed to be canonicalized or exist on the filesystem).\n\nIMPORTANT: When deserializing an `AbsolutePathBuf`, a base path must be set using [AbsolutePathBufGuard::new]. If no base path is set, the deserialization will fail unless the path being deserialized is already absolute.",
|
|
"type": "string"
|
|
},
|
|
"AdditionalFileSystemPermissions": {
|
|
"properties": {
|
|
"read": {
|
|
"items": {
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"write": {
|
|
"items": {
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"AdditionalMacOsPermissions": {
|
|
"properties": {
|
|
"accessibility": {
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
},
|
|
"automations": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/MacOsAutomationValue"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"calendar": {
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
},
|
|
"preferences": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/MacOsPreferencesValue"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"AdditionalPermissionProfile": {
|
|
"properties": {
|
|
"fileSystem": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AdditionalFileSystemPermissions"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"macos": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AdditionalMacOsPermissions"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"network": {
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"ApplyPatchApprovalParams": {
|
|
"properties": {
|
|
"callId": {
|
|
"description": "Use to correlate this with [codex_protocol::protocol::PatchApplyBeginEvent] and [codex_protocol::protocol::PatchApplyEndEvent].",
|
|
"type": "string"
|
|
},
|
|
"conversationId": {
|
|
"$ref": "#/definitions/ThreadId"
|
|
},
|
|
"fileChanges": {
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/FileChange"
|
|
},
|
|
"type": "object"
|
|
},
|
|
"grantRoot": {
|
|
"description": "When set, the agent is asking the user to allow writes under this root for the remainder of the session (unclear if this is honored today).",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"reason": {
|
|
"description": "Optional explanatory reason (e.g. request for extra write access).",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"callId",
|
|
"conversationId",
|
|
"fileChanges"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ChatgptAuthTokensRefreshParams": {
|
|
"properties": {
|
|
"previousAccountId": {
|
|
"description": "Workspace/account identifier that Codex was previously using.\n\nClients that manage multiple accounts/workspaces can use this as a hint to refresh the token for the correct workspace.\n\nThis may be `null` when the prior auth state did not include a workspace identifier (`chatgpt_account_id`).",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"reason": {
|
|
"$ref": "#/definitions/ChatgptAuthTokensRefreshReason"
|
|
}
|
|
},
|
|
"required": [
|
|
"reason"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ChatgptAuthTokensRefreshReason": {
|
|
"oneOf": [
|
|
{
|
|
"description": "Codex attempted a backend request and received `401 Unauthorized`.",
|
|
"enum": [
|
|
"unauthorized"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"CommandAction": {
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"read"
|
|
],
|
|
"title": "ReadCommandActionType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"command",
|
|
"name",
|
|
"path",
|
|
"type"
|
|
],
|
|
"title": "ReadCommandAction",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"listFiles"
|
|
],
|
|
"title": "ListFilesCommandActionType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"command",
|
|
"type"
|
|
],
|
|
"title": "ListFilesCommandAction",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"query": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"search"
|
|
],
|
|
"title": "SearchCommandActionType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"command",
|
|
"type"
|
|
],
|
|
"title": "SearchCommandAction",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"unknown"
|
|
],
|
|
"title": "UnknownCommandActionType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"command",
|
|
"type"
|
|
],
|
|
"title": "UnknownCommandAction",
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"CommandExecutionApprovalDecision": {
|
|
"oneOf": [
|
|
{
|
|
"description": "User approved the command.",
|
|
"enum": [
|
|
"accept"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "User approved the command and future prompts in the same session-scoped approval cache should run without prompting.",
|
|
"enum": [
|
|
"acceptForSession"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "User approved the command, and wants to apply the proposed execpolicy amendment so future matching commands can run without prompting.",
|
|
"properties": {
|
|
"acceptWithExecpolicyAmendment": {
|
|
"properties": {
|
|
"execpolicy_amendment": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"execpolicy_amendment"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"acceptWithExecpolicyAmendment"
|
|
],
|
|
"title": "AcceptWithExecpolicyAmendmentCommandExecutionApprovalDecision",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "User chose a persistent network policy rule (allow/deny) for this host.",
|
|
"properties": {
|
|
"applyNetworkPolicyAmendment": {
|
|
"properties": {
|
|
"network_policy_amendment": {
|
|
"$ref": "#/definitions/NetworkPolicyAmendment"
|
|
}
|
|
},
|
|
"required": [
|
|
"network_policy_amendment"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"applyNetworkPolicyAmendment"
|
|
],
|
|
"title": "ApplyNetworkPolicyAmendmentCommandExecutionApprovalDecision",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "User denied the command. The agent will continue the turn.",
|
|
"enum": [
|
|
"decline"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "User denied the command. The turn will also be immediately interrupted.",
|
|
"enum": [
|
|
"cancel"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"CommandExecutionRequestApprovalParams": {
|
|
"properties": {
|
|
"approvalId": {
|
|
"description": "Unique identifier for this specific approval callback.\n\nFor regular shell/unified_exec approvals, this is null.\n\nFor zsh-exec-bridge subcommand approvals, multiple callbacks can belong to one parent `itemId`, so `approvalId` is a distinct opaque callback id (a UUID) used to disambiguate routing.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"command": {
|
|
"description": "The command to be executed.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"commandActions": {
|
|
"description": "Best-effort parsed command actions for friendly display.",
|
|
"items": {
|
|
"$ref": "#/definitions/CommandAction"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"cwd": {
|
|
"description": "The command's working directory.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"itemId": {
|
|
"type": "string"
|
|
},
|
|
"networkApprovalContext": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/NetworkApprovalContext"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Optional context for a managed-network approval prompt."
|
|
},
|
|
"proposedExecpolicyAmendment": {
|
|
"description": "Optional proposed execpolicy amendment to allow similar commands without prompting.",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"proposedNetworkPolicyAmendments": {
|
|
"description": "Optional proposed network policy amendments (allow/deny host) for future requests.",
|
|
"items": {
|
|
"$ref": "#/definitions/NetworkPolicyAmendment"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"reason": {
|
|
"description": "Optional explanatory reason (e.g. request for network access).",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"threadId": {
|
|
"type": "string"
|
|
},
|
|
"turnId": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"itemId",
|
|
"threadId",
|
|
"turnId"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"DynamicToolCallParams": {
|
|
"properties": {
|
|
"arguments": true,
|
|
"callId": {
|
|
"type": "string"
|
|
},
|
|
"threadId": {
|
|
"type": "string"
|
|
},
|
|
"tool": {
|
|
"type": "string"
|
|
},
|
|
"turnId": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"arguments",
|
|
"callId",
|
|
"threadId",
|
|
"tool",
|
|
"turnId"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ExecCommandApprovalParams": {
|
|
"properties": {
|
|
"approvalId": {
|
|
"description": "Identifier for this specific approval callback.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"callId": {
|
|
"description": "Use to correlate this with [codex_protocol::protocol::ExecCommandBeginEvent] and [codex_protocol::protocol::ExecCommandEndEvent].",
|
|
"type": "string"
|
|
},
|
|
"command": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"conversationId": {
|
|
"$ref": "#/definitions/ThreadId"
|
|
},
|
|
"cwd": {
|
|
"type": "string"
|
|
},
|
|
"parsedCmd": {
|
|
"items": {
|
|
"$ref": "#/definitions/ParsedCommand"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"reason": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"callId",
|
|
"command",
|
|
"conversationId",
|
|
"cwd",
|
|
"parsedCmd"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"FileChange": {
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"add"
|
|
],
|
|
"title": "AddFileChangeType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"content",
|
|
"type"
|
|
],
|
|
"title": "AddFileChange",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"delete"
|
|
],
|
|
"title": "DeleteFileChangeType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"content",
|
|
"type"
|
|
],
|
|
"title": "DeleteFileChange",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"move_path": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"update"
|
|
],
|
|
"title": "UpdateFileChangeType",
|
|
"type": "string"
|
|
},
|
|
"unified_diff": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"unified_diff"
|
|
],
|
|
"title": "UpdateFileChange",
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"FileChangeRequestApprovalParams": {
|
|
"properties": {
|
|
"grantRoot": {
|
|
"description": "[UNSTABLE] When set, the agent is asking the user to allow writes under this root for the remainder of the session (unclear if this is honored today).",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"itemId": {
|
|
"type": "string"
|
|
},
|
|
"reason": {
|
|
"description": "Optional explanatory reason (e.g. request for extra write access).",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"threadId": {
|
|
"type": "string"
|
|
},
|
|
"turnId": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"itemId",
|
|
"threadId",
|
|
"turnId"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"MacOsAutomationValue": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
}
|
|
]
|
|
},
|
|
"MacOsPreferencesValue": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"NetworkApprovalContext": {
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"$ref": "#/definitions/NetworkApprovalProtocol"
|
|
}
|
|
},
|
|
"required": [
|
|
"host",
|
|
"protocol"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"NetworkApprovalProtocol": {
|
|
"enum": [
|
|
"http",
|
|
"https",
|
|
"socks5Tcp",
|
|
"socks5Udp"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"NetworkPolicyAmendment": {
|
|
"properties": {
|
|
"action": {
|
|
"$ref": "#/definitions/NetworkPolicyRuleAction"
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"host"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"NetworkPolicyRuleAction": {
|
|
"enum": [
|
|
"allow",
|
|
"deny"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ParsedCommand": {
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"cmd": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"description": "(Best effort) Path to the file being read by the command. When possible, this is an absolute path, though when relative, it should be resolved against the `cwd`` that will be used to run the command to derive the absolute path.",
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"read"
|
|
],
|
|
"title": "ReadParsedCommandType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"cmd",
|
|
"name",
|
|
"path",
|
|
"type"
|
|
],
|
|
"title": "ReadParsedCommand",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"cmd": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"list_files"
|
|
],
|
|
"title": "ListFilesParsedCommandType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"cmd",
|
|
"type"
|
|
],
|
|
"title": "ListFilesParsedCommand",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"cmd": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"query": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"search"
|
|
],
|
|
"title": "SearchParsedCommandType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"cmd",
|
|
"type"
|
|
],
|
|
"title": "SearchParsedCommand",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"cmd": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"unknown"
|
|
],
|
|
"title": "UnknownParsedCommandType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"cmd",
|
|
"type"
|
|
],
|
|
"title": "UnknownParsedCommand",
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"RequestId": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"format": "int64",
|
|
"type": "integer"
|
|
}
|
|
]
|
|
},
|
|
"ThreadId": {
|
|
"type": "string"
|
|
},
|
|
"ToolRequestUserInputOption": {
|
|
"description": "EXPERIMENTAL. Defines a single selectable option for request_user_input.",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"label": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"label"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ToolRequestUserInputParams": {
|
|
"description": "EXPERIMENTAL. Params sent with a request_user_input event.",
|
|
"properties": {
|
|
"itemId": {
|
|
"type": "string"
|
|
},
|
|
"questions": {
|
|
"items": {
|
|
"$ref": "#/definitions/ToolRequestUserInputQuestion"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"threadId": {
|
|
"type": "string"
|
|
},
|
|
"turnId": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"itemId",
|
|
"questions",
|
|
"threadId",
|
|
"turnId"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ToolRequestUserInputQuestion": {
|
|
"description": "EXPERIMENTAL. Represents one request_user_input question and its required options.",
|
|
"properties": {
|
|
"header": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"isOther": {
|
|
"default": false,
|
|
"type": "boolean"
|
|
},
|
|
"isSecret": {
|
|
"default": false,
|
|
"type": "boolean"
|
|
},
|
|
"options": {
|
|
"items": {
|
|
"$ref": "#/definitions/ToolRequestUserInputOption"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"question": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"header",
|
|
"id",
|
|
"question"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"description": "Request initiated from the server and sent to the client.",
|
|
"oneOf": [
|
|
{
|
|
"description": "NEW APIs Sent when approval is requested for a specific command execution. This request is used for Turns started via turn/start.",
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/definitions/RequestId"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"item/commandExecution/requestApproval"
|
|
],
|
|
"title": "Item/commandExecution/requestApprovalRequestMethod",
|
|
"type": "string"
|
|
},
|
|
"params": {
|
|
"$ref": "#/definitions/CommandExecutionRequestApprovalParams"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"method",
|
|
"params"
|
|
],
|
|
"title": "Item/commandExecution/requestApprovalRequest",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Sent when approval is requested for a specific file change. This request is used for Turns started via turn/start.",
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/definitions/RequestId"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"item/fileChange/requestApproval"
|
|
],
|
|
"title": "Item/fileChange/requestApprovalRequestMethod",
|
|
"type": "string"
|
|
},
|
|
"params": {
|
|
"$ref": "#/definitions/FileChangeRequestApprovalParams"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"method",
|
|
"params"
|
|
],
|
|
"title": "Item/fileChange/requestApprovalRequest",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "EXPERIMENTAL - Request input from the user for a tool call.",
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/definitions/RequestId"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"item/tool/requestUserInput"
|
|
],
|
|
"title": "Item/tool/requestUserInputRequestMethod",
|
|
"type": "string"
|
|
},
|
|
"params": {
|
|
"$ref": "#/definitions/ToolRequestUserInputParams"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"method",
|
|
"params"
|
|
],
|
|
"title": "Item/tool/requestUserInputRequest",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Execute a dynamic tool call on the client.",
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/definitions/RequestId"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"item/tool/call"
|
|
],
|
|
"title": "Item/tool/callRequestMethod",
|
|
"type": "string"
|
|
},
|
|
"params": {
|
|
"$ref": "#/definitions/DynamicToolCallParams"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"method",
|
|
"params"
|
|
],
|
|
"title": "Item/tool/callRequest",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/definitions/RequestId"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"account/chatgptAuthTokens/refresh"
|
|
],
|
|
"title": "Account/chatgptAuthTokens/refreshRequestMethod",
|
|
"type": "string"
|
|
},
|
|
"params": {
|
|
"$ref": "#/definitions/ChatgptAuthTokensRefreshParams"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"method",
|
|
"params"
|
|
],
|
|
"title": "Account/chatgptAuthTokens/refreshRequest",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "DEPRECATED APIs below Request to approve a patch. This request is used for Turns started via the legacy APIs (i.e. SendUserTurn, SendUserMessage).",
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/definitions/RequestId"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"applyPatchApproval"
|
|
],
|
|
"title": "ApplyPatchApprovalRequestMethod",
|
|
"type": "string"
|
|
},
|
|
"params": {
|
|
"$ref": "#/definitions/ApplyPatchApprovalParams"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"method",
|
|
"params"
|
|
],
|
|
"title": "ApplyPatchApprovalRequest",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "Request to exec a command. This request is used for Turns started via the legacy APIs (i.e. SendUserTurn, SendUserMessage).",
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/definitions/RequestId"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"execCommandApproval"
|
|
],
|
|
"title": "ExecCommandApprovalRequestMethod",
|
|
"type": "string"
|
|
},
|
|
"params": {
|
|
"$ref": "#/definitions/ExecCommandApprovalParams"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"method",
|
|
"params"
|
|
],
|
|
"title": "ExecCommandApprovalRequest",
|
|
"type": "object"
|
|
}
|
|
],
|
|
"title": "ServerRequest"
|
|
} |