From 2042687e3035c5a86d7f6aa66306d87abcc10f2d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 23 Apr 2026 23:20:16 +0100 Subject: [PATCH] Vendor Codex and land Phase 1 Epiphany state slice --- .gitmodules | 3 - state/evidence.jsonl | 3 + state/map.yaml | 7 +- vendor/codex | 1 - vendor/codex/.bazelignore | 4 + vendor/codex/.bazelrc | 165 + vendor/codex/.bazelversion | 1 + vendor/codex/.codespellignore | 6 + vendor/codex/.codespellrc | 6 + .../codex/.codex/skills/babysit-pr/SKILL.md | 187 + .../skills/babysit-pr/agents/openai.yaml | 4 + .../babysit-pr/references/github-api-notes.md | 72 + .../babysit-pr/references/heuristics.md | 58 + .../skills/babysit-pr/scripts/gh_pr_watch.py | 806 + .../babysit-pr/scripts/test_gh_pr_watch.py | 155 + .../code-review-breaking-changes/SKILL.md | 12 + .../skills/code-review-change-size/SKILL.md | 11 + .../skills/code-review-context/SKILL.md | 13 + .../skills/code-review-testing/SKILL.md | 14 + .../codex/.codex/skills/code-review/SKILL.md | 14 + vendor/codex/.codex/skills/codex-bug/SKILL.md | 48 + .../.codex/skills/codex-pr-body/SKILL.md | 59 + .../codex/.codex/skills/remote-tests/SKILL.md | 16 + vendor/codex/.codex/skills/test-tui/SKILL.md | 14 + vendor/codex/.devcontainer/Dockerfile | 27 + vendor/codex/.devcontainer/Dockerfile.secure | 74 + vendor/codex/.devcontainer/README.md | 49 + vendor/codex/.devcontainer/devcontainer.json | 27 + .../.devcontainer/devcontainer.secure.json | 83 + vendor/codex/.devcontainer/init-firewall.sh | 170 + vendor/codex/.devcontainer/post-start.sh | 36 + vendor/codex/.devcontainer/post_install.py | 113 + vendor/codex/.gitattributes | 1 + vendor/codex/.github/CODEOWNERS | 5 + .../.github/ISSUE_TEMPLATE/1-codex-app.yml | 54 + .../.github/ISSUE_TEMPLATE/2-extension.yml | 61 + vendor/codex/.github/ISSUE_TEMPLATE/3-cli.yml | 70 + .../.github/ISSUE_TEMPLATE/4-bug-report.yml | 37 + .../ISSUE_TEMPLATE/5-feature-request.yml | 32 + .../.github/ISSUE_TEMPLATE/6-docs-issue.yml | 27 + .../actions/linux-code-sign/action.yml | 45 + .../actions/macos-code-sign/action.yml | 253 + .../macos-code-sign/codex.entitlements.plist | 8 + .../actions/macos-code-sign/notary_helpers.sh | 46 + .../actions/prepare-bazel-ci/action.yml | 64 + .../run-argument-comment-lint/action.yml | 54 + .../.github/actions/setup-bazel-ci/action.yml | 128 + .../actions/setup-rusty-v8-musl/action.yml | 49 + .../actions/windows-code-sign/action.yml | 57 + vendor/codex/.github/blob-size-allowlist.txt | 10 + vendor/codex/.github/codex-cli-splash.png | Bin 0 -> 838131 bytes vendor/codex/.github/codex/home/config.toml | 3 + .../.github/codex/labels/codex-attempt.md | 9 + .../.github/codex/labels/codex-review.md | 7 + .../.github/codex/labels/codex-rust-review.md | 139 + .../.github/codex/labels/codex-triage.md | 7 + vendor/codex/.github/dependabot.yaml | 30 + ...dotslash-argument-comment-lint-config.json | 24 + vendor/codex/.github/dotslash-config.json | 84 + vendor/codex/.github/dotslash-zsh-config.json | 23 + vendor/codex/.github/pull_request_template.md | 8 + .../scripts/build-zsh-release-artifact.sh | 61 + .../scripts/install-musl-build-tools.sh | 279 + .../run-argument-comment-lint-bazel.sh | 115 + vendor/codex/.github/scripts/run-bazel-ci.sh | 404 + .../codex/.github/scripts/rusty_v8_bazel.py | 358 + .../.github/scripts/rusty_v8_module_bazel.py | 230 + .../.github/scripts/test_rusty_v8_bazel.py | 126 + .../scripts/verify_bazel_clippy_lints.py | 234 + .../verify_cargo_workspace_manifests.py | 388 + .../scripts/verify_tui_core_boundary.py | 89 + .../codex/.github/workflows/Dockerfile.bazel | 36 + vendor/codex/.github/workflows/README.md | 33 + vendor/codex/.github/workflows/bazel.yml | 292 + .../.github/workflows/blob-size-policy.yml | 32 + vendor/codex/.github/workflows/cargo-deny.yml | 26 + vendor/codex/.github/workflows/ci.yml | 70 + vendor/codex/.github/workflows/cla.yml | 49 + .../workflows/close-stale-contributor-prs.yml | 107 + vendor/codex/.github/workflows/codespell.yml | 27 + .../.github/workflows/issue-deduplicator.yml | 402 + .../codex/.github/workflows/issue-labeler.yml | 143 + .../codex/.github/workflows/rust-ci-full.yml | 774 + vendor/codex/.github/workflows/rust-ci.yml | 222 + .../rust-release-argument-comment-lint.yml | 106 + .../workflows/rust-release-prepare.yml | 53 + .../workflows/rust-release-windows.yml | 264 + .../.github/workflows/rust-release-zsh.yml | 95 + .../codex/.github/workflows/rust-release.yml | 707 + .../.github/workflows/rusty-v8-release.yml | 188 + vendor/codex/.github/workflows/sdk.yml | 122 + vendor/codex/.github/workflows/v8-canary.yml | 132 + vendor/codex/.github/workflows/zstd | 46 + vendor/codex/.gitignore | 94 + vendor/codex/.markdownlint-cli2.yaml | 6 + vendor/codex/.npmrc | 4 + vendor/codex/.prettierignore | 7 + vendor/codex/.prettierrc.toml | 8 + vendor/codex/AGENTS.md | 213 + vendor/codex/BUILD.bazel | 42 + vendor/codex/CHANGELOG.md | 1 + vendor/codex/LICENSE | 201 + vendor/codex/MODULE.bazel | 519 + vendor/codex/MODULE.bazel.lock | 1958 ++ vendor/codex/NOTICE | 9 + vendor/codex/README.md | 60 + vendor/codex/SECURITY.md | 17 + vendor/codex/announcement_tip.toml | 17 + vendor/codex/cliff.toml | 46 + vendor/codex/codex-cli/.dockerignore | 1 + vendor/codex/codex-cli/.gitignore | 1 + vendor/codex/codex-cli/Dockerfile | 59 + vendor/codex/codex-cli/bin/codex.js | 229 + vendor/codex/codex-cli/bin/rg | 79 + vendor/codex/codex-cli/package.json | 22 + vendor/codex/codex-cli/scripts/README.md | 23 + .../codex-cli/scripts/build_container.sh | 16 + .../codex-cli/scripts/build_npm_package.py | 453 + .../codex/codex-cli/scripts/init_firewall.sh | 115 + .../codex-cli/scripts/install_native_deps.py | 475 + .../codex-cli/scripts/run_in_container.sh | 95 + vendor/codex/codex-rs/.cargo/audit.toml | 9 + vendor/codex/codex-rs/.cargo/config.toml | 11 + vendor/codex/codex-rs/.config/nextest.toml | 46 + .../.github/workflows/cargo-audit.yml | 26 + vendor/codex/codex-rs/.gitignore | 8 + vendor/codex/codex-rs/BUILD.bazel | 18 + vendor/codex/codex-rs/Cargo.lock | 14847 +++++++++++++ vendor/codex/codex-rs/Cargo.toml | 485 + vendor/codex/codex-rs/README.md | 102 + .../codex/codex-rs/agent-identity/BUILD.bazel | 6 + .../codex/codex-rs/agent-identity/Cargo.toml | 29 + .../codex/codex-rs/agent-identity/src/lib.rs | 414 + vendor/codex/codex-rs/analytics/BUILD.bazel | 6 + vendor/codex/codex-rs/analytics/Cargo.toml | 33 + .../analytics/src/analytics_client_tests.rs | 2423 +++ vendor/codex/codex-rs/analytics/src/client.rs | 351 + vendor/codex/codex-rs/analytics/src/events.rs | 757 + vendor/codex/codex-rs/analytics/src/facts.rs | 351 + vendor/codex/codex-rs/analytics/src/lib.rs | 53 + .../codex/codex-rs/analytics/src/reducer.rs | 1052 + vendor/codex/codex-rs/ansi-escape/BUILD.bazel | 6 + vendor/codex/codex-rs/ansi-escape/Cargo.toml | 20 + vendor/codex/codex-rs/ansi-escape/README.md | 15 + vendor/codex/codex-rs/ansi-escape/src/lib.rs | 58 + .../codex-rs/app-server-client/BUILD.bazel | 6 + .../codex-rs/app-server-client/Cargo.toml | 36 + .../codex-rs/app-server-client/README.md | 67 + .../codex-rs/app-server-client/src/lib.rs | 2025 ++ .../codex-rs/app-server-client/src/remote.rs | 856 + .../codex-rs/app-server-protocol/BUILD.bazel | 7 + .../codex-rs/app-server-protocol/Cargo.toml | 43 + .../schema/json/ApplyPatchApprovalParams.json | 114 + .../json/ApplyPatchApprovalResponse.json | 124 + .../json/ChatgptAuthTokensRefreshParams.json | 33 + .../ChatgptAuthTokensRefreshResponse.json | 23 + .../schema/json/ClientNotification.json | 22 + .../schema/json/ClientRequest.json | 6066 ++++++ ...CommandExecutionRequestApprovalParams.json | 622 + ...mmandExecutionRequestApprovalResponse.json | 116 + .../schema/json/DynamicToolCallParams.json | 33 + .../schema/json/DynamicToolCallResponse.json | 66 + .../json/ExecCommandApprovalParams.json | 165 + .../json/ExecCommandApprovalResponse.json | 124 + .../json/FileChangeRequestApprovalParams.json | 35 + .../FileChangeRequestApprovalResponse.json | 47 + .../schema/json/FuzzyFileSearchParams.json | 26 + .../schema/json/FuzzyFileSearchResponse.json | 66 + ...ileSearchSessionCompletedNotification.json | 13 + ...yFileSearchSessionUpdatedNotification.json | 74 + .../schema/json/JSONRPCError.json | 48 + .../schema/json/JSONRPCErrorError.json | 19 + .../schema/json/JSONRPCMessage.json | 137 + .../schema/json/JSONRPCNotification.json | 15 + .../schema/json/JSONRPCRequest.json | 60 + .../schema/json/JSONRPCResponse.json | 29 + .../McpServerElicitationRequestParams.json | 609 + .../McpServerElicitationRequestResponse.json | 29 + .../PermissionsRequestApprovalParams.json | 329 + .../PermissionsRequestApprovalResponse.json | 328 + .../schema/json/RequestId.json | 13 + .../schema/json/ServerNotification.json | 5685 +++++ .../schema/json/ServerRequest.json | 1967 ++ .../json/ToolRequestUserInputParams.json | 84 + .../json/ToolRequestUserInputResponse.json | 34 + .../codex_app_server_protocol.schemas.json | 17300 ++++++++++++++++ .../codex_app_server_protocol.v2.schemas.json | 15186 ++++++++++++++ .../schema/json/v1/InitializeParams.json | 67 + .../schema/json/v1/InitializeResponse.json | 38 + .../v2/AccountLoginCompletedNotification.json | 25 + .../AccountRateLimitsUpdatedNotification.json | 156 + .../json/v2/AccountUpdatedNotification.json | 79 + .../v2/AgentMessageDeltaNotification.json | 25 + .../json/v2/AppListUpdatedNotification.json | 276 + .../schema/json/v2/AppsListParams.json | 35 + .../schema/json/v2/AppsListResponse.json | 283 + .../json/v2/CancelLoginAccountParams.json | 13 + .../json/v2/CancelLoginAccountResponse.json | 22 + .../CommandExecOutputDeltaNotification.json | 55 + .../schema/json/v2/CommandExecParams.json | 305 + .../json/v2/CommandExecResizeParams.json | 48 + .../json/v2/CommandExecResizeResponse.json | 6 + .../schema/json/v2/CommandExecResponse.json | 26 + .../json/v2/CommandExecTerminateParams.json | 15 + .../json/v2/CommandExecTerminateResponse.json | 6 + .../json/v2/CommandExecWriteParams.json | 26 + .../json/v2/CommandExecWriteResponse.json | 6 + ...mmandExecutionOutputDeltaNotification.json | 25 + .../json/v2/ConfigBatchWriteParams.json | 59 + .../schema/json/v2/ConfigReadParams.json | 18 + .../schema/json/v2/ConfigReadResponse.json | 902 + .../v2/ConfigRequirementsReadResponse.json | 274 + .../json/v2/ConfigValueWriteParams.json | 41 + .../json/v2/ConfigWarningNotification.json | 77 + .../schema/json/v2/ConfigWriteResponse.json | 237 + .../json/v2/ContextCompactedNotification.json | 18 + .../v2/DeprecationNoticeNotification.json | 21 + .../schema/json/v2/DeviceKeyCreateParams.json | 39 + .../json/v2/DeviceKeyCreateResponse.json | 45 + .../schema/json/v2/DeviceKeyPublicParams.json | 14 + .../json/v2/DeviceKeyPublicResponse.json | 45 + .../schema/json/v2/DeviceKeySignParams.json | 165 + .../schema/json/v2/DeviceKeySignResponse.json | 33 + .../schema/json/v2/ErrorNotification.json | 198 + ...xperimentalFeatureEnablementSetParams.json | 17 + ...erimentalFeatureEnablementSetResponse.json | 17 + .../v2/ExperimentalFeatureListParams.json | 23 + .../v2/ExperimentalFeatureListResponse.json | 116 + .../v2/ExternalAgentConfigDetectParams.json | 21 + .../v2/ExternalAgentConfigDetectResponse.json | 92 + ...gentConfigImportCompletedNotification.json | 5 + .../v2/ExternalAgentConfigImportParams.json | 92 + .../v2/ExternalAgentConfigImportResponse.json | 5 + .../schema/json/v2/FeedbackUploadParams.json | 47 + .../json/v2/FeedbackUploadResponse.json | 13 + .../v2/FileChangeOutputDeltaNotification.json | 25 + .../FileChangePatchUpdatedNotification.json | 107 + .../schema/json/v2/FsChangedNotification.json | 29 + .../schema/json/v2/FsCopyParams.json | 38 + .../schema/json/v2/FsCopyResponse.json | 6 + .../json/v2/FsCreateDirectoryParams.json | 32 + .../json/v2/FsCreateDirectoryResponse.json | 6 + .../schema/json/v2/FsGetMetadataParams.json | 25 + .../schema/json/v2/FsGetMetadataResponse.json | 37 + .../schema/json/v2/FsReadDirectoryParams.json | 25 + .../json/v2/FsReadDirectoryResponse.json | 43 + .../schema/json/v2/FsReadFileParams.json | 25 + .../schema/json/v2/FsReadFileResponse.json | 15 + .../schema/json/v2/FsRemoveParams.json | 39 + .../schema/json/v2/FsRemoveResponse.json | 6 + .../schema/json/v2/FsUnwatchParams.json | 15 + .../schema/json/v2/FsUnwatchResponse.json | 6 + .../schema/json/v2/FsWatchParams.json | 30 + .../schema/json/v2/FsWatchResponse.json | 25 + .../schema/json/v2/FsWriteFileParams.json | 30 + .../schema/json/v2/FsWriteFileResponse.json | 6 + .../schema/json/v2/GetAccountParams.json | 12 + .../json/v2/GetAccountRateLimitsResponse.json | 171 + .../schema/json/v2/GetAccountResponse.json | 86 + .../json/v2/GuardianWarningNotification.json | 19 + .../json/v2/HookCompletedNotification.json | 190 + .../json/v2/HookStartedNotification.json | 190 + .../json/v2/ItemCompletedNotification.json | 1390 ++ ...anApprovalReviewCompletedNotification.json | 624 + ...dianApprovalReviewStartedNotification.json | 613 + .../json/v2/ItemStartedNotification.json | 1390 ++ .../json/v2/ListMcpServerStatusParams.json | 43 + .../json/v2/ListMcpServerStatusResponse.json | 191 + .../schema/json/v2/LoginAccountParams.json | 92 + .../schema/json/v2/LoginAccountResponse.json | 93 + .../schema/json/v2/LogoutAccountResponse.json | 5 + .../schema/json/v2/MarketplaceAddParams.json | 28 + .../json/v2/MarketplaceAddResponse.json | 27 + .../json/v2/MarketplaceRemoveParams.json | 13 + .../json/v2/MarketplaceRemoveResponse.json | 29 + .../schema/json/v2/McpResourceReadParams.json | 23 + .../json/v2/McpResourceReadResponse.json | 69 + ...ServerOauthLoginCompletedNotification.json | 23 + .../json/v2/McpServerOauthLoginParams.json | 29 + .../json/v2/McpServerOauthLoginResponse.json | 13 + .../json/v2/McpServerRefreshResponse.json | 5 + .../McpServerStatusUpdatedNotification.json | 34 + .../json/v2/McpServerToolCallParams.json | 23 + .../json/v2/McpServerToolCallResponse.json | 22 + .../v2/McpToolCallProgressNotification.json | 25 + .../schema/json/v2/ModelListParams.json | 30 + .../schema/json/v2/ModelListResponse.json | 200 + .../json/v2/ModelReroutedNotification.json | 37 + .../schema/json/v2/PlanDeltaNotification.json | 26 + .../schema/json/v2/PluginInstallParams.json | 35 + .../schema/json/v2/PluginInstallResponse.json | 61 + .../schema/json/v2/PluginListParams.json | 23 + .../schema/json/v2/PluginListResponse.json | 370 + .../schema/json/v2/PluginReadParams.json | 35 + .../schema/json/v2/PluginReadResponse.json | 466 + .../schema/json/v2/PluginUninstallParams.json | 13 + .../json/v2/PluginUninstallResponse.json | 5 + .../RawResponseItemCompletedNotification.json | 931 + ...ReasoningSummaryPartAddedNotification.json | 26 + ...ReasoningSummaryTextDeltaNotification.json | 30 + .../v2/ReasoningTextDeltaNotification.json | 30 + .../schema/json/v2/ReviewStartParams.json | 129 + .../schema/json/v2/ReviewStartResponse.json | 1625 ++ .../v2/SendAddCreditsNudgeEmailParams.json | 22 + .../v2/SendAddCreditsNudgeEmailResponse.json | 22 + .../v2/ServerRequestResolvedNotification.json | 30 + .../json/v2/SkillsChangedNotification.json | 6 + .../json/v2/SkillsConfigWriteParams.json | 37 + .../json/v2/SkillsConfigWriteResponse.json | 13 + .../schema/json/v2/SkillsListParams.json | 49 + .../schema/json/v2/SkillsListResponse.json | 227 + .../v2/TerminalInteractionNotification.json | 29 + ...readApproveGuardianDeniedActionParams.json | 17 + ...adApproveGuardianDeniedActionResponse.json | 5 + .../schema/json/v2/ThreadArchiveParams.json | 13 + .../schema/json/v2/ThreadArchiveResponse.json | 5 + .../json/v2/ThreadArchivedNotification.json | 13 + .../json/v2/ThreadClosedNotification.json | 13 + .../json/v2/ThreadCompactStartParams.json | 13 + .../json/v2/ThreadCompactStartResponse.json | 5 + .../schema/json/v2/ThreadForkParams.json | 463 + .../schema/json/v2/ThreadForkResponse.json | 2553 +++ .../json/v2/ThreadInjectItemsParams.json | 19 + .../json/v2/ThreadInjectItemsResponse.json | 5 + .../schema/json/v2/ThreadListParams.json | 138 + .../schema/json/v2/ThreadListResponse.json | 1988 ++ .../json/v2/ThreadLoadedListParams.json | 23 + .../json/v2/ThreadLoadedListResponse.json | 24 + .../json/v2/ThreadMetadataUpdateParams.json | 52 + .../json/v2/ThreadMetadataUpdateResponse.json | 1971 ++ .../v2/ThreadNameUpdatedNotification.json | 19 + .../schema/json/v2/ThreadReadParams.json | 18 + .../schema/json/v2/ThreadReadResponse.json | 1971 ++ .../v2/ThreadRealtimeClosedNotification.json | 20 + .../v2/ThreadRealtimeErrorNotification.json | 18 + .../ThreadRealtimeItemAddedNotification.json | 16 + ...dRealtimeOutputAudioDeltaNotification.json | 58 + .../v2/ThreadRealtimeSdpNotification.json | 18 + .../v2/ThreadRealtimeStartedNotification.json | 33 + ...adRealtimeTranscriptDeltaNotification.json | 23 + ...eadRealtimeTranscriptDoneNotification.json | 23 + .../schema/json/v2/ThreadResumeParams.json | 1386 ++ .../schema/json/v2/ThreadResumeResponse.json | 2553 +++ .../schema/json/v2/ThreadRollbackParams.json | 20 + .../json/v2/ThreadRollbackResponse.json | 1976 ++ .../schema/json/v2/ThreadSetNameParams.json | 17 + .../schema/json/v2/ThreadSetNameResponse.json | 5 + .../json/v2/ThreadShellCommandParams.json | 18 + .../json/v2/ThreadShellCommandResponse.json | 5 + .../schema/json/v2/ThreadStartParams.json | 525 + .../schema/json/v2/ThreadStartResponse.json | 2553 +++ .../json/v2/ThreadStartedNotification.json | 1971 ++ .../v2/ThreadStatusChangedNotification.json | 101 + .../ThreadTokenUsageUpdatedNotification.json | 77 + .../schema/json/v2/ThreadTurnsListParams.json | 49 + .../json/v2/ThreadTurnsListResponse.json | 1637 ++ .../schema/json/v2/ThreadUnarchiveParams.json | 13 + .../json/v2/ThreadUnarchiveResponse.json | 1971 ++ .../json/v2/ThreadUnarchivedNotification.json | 13 + .../json/v2/ThreadUnsubscribeParams.json | 13 + .../json/v2/ThreadUnsubscribeResponse.json | 23 + .../json/v2/TurnCompletedNotification.json | 1624 ++ .../json/v2/TurnDiffUpdatedNotification.json | 22 + .../schema/json/v2/TurnInterruptParams.json | 17 + .../schema/json/v2/TurnInterruptResponse.json | 5 + .../json/v2/TurnPlanUpdatedNotification.json | 55 + .../schema/json/v2/TurnStartParams.json | 915 + .../schema/json/v2/TurnStartResponse.json | 1620 ++ .../json/v2/TurnStartedNotification.json | 1624 ++ .../schema/json/v2/TurnSteerParams.json | 189 + .../schema/json/v2/TurnSteerResponse.json | 13 + .../schema/json/v2/WarningNotification.json | 21 + ...dowsSandboxSetupCompletedNotification.json | 32 + .../v2/WindowsSandboxSetupStartParams.json | 36 + .../v2/WindowsSandboxSetupStartResponse.json | 13 + ...ndowsWorldWritableWarningNotification.json | 26 + .../schema/typescript/AbsolutePathBuf.ts | 14 + .../schema/typescript/AgentPath.ts | 5 + .../typescript/ApplyPatchApprovalParams.ts | 21 + .../typescript/ApplyPatchApprovalResponse.ts | 6 + .../schema/typescript/AuthMode.ts | 8 + .../schema/typescript/ClientInfo.ts | 5 + .../schema/typescript/ClientNotification.ts | 5 + .../schema/typescript/ClientRequest.ts | 78 + .../schema/typescript/CollaborationMode.ts | 10 + .../schema/typescript/ContentItem.ts | 6 + .../schema/typescript/ConversationGitInfo.ts | 5 + .../schema/typescript/ConversationSummary.ts | 8 + .../typescript/ExecCommandApprovalParams.ts | 16 + .../typescript/ExecCommandApprovalResponse.ts | 6 + .../schema/typescript/ExecPolicyAmendment.ts | 12 + .../schema/typescript/FileChange.ts | 5 + .../schema/typescript/ForcedLoginMethod.ts | 5 + .../typescript/FunctionCallOutputBody.ts | 6 + .../FunctionCallOutputContentItem.ts | 10 + .../typescript/FuzzyFileSearchMatchType.ts | 5 + .../typescript/FuzzyFileSearchParams.ts | 5 + .../typescript/FuzzyFileSearchResponse.ts | 6 + .../typescript/FuzzyFileSearchResult.ts | 9 + ...yFileSearchSessionCompletedNotification.ts | 5 + ...zzyFileSearchSessionUpdatedNotification.ts | 6 + .../schema/typescript/GetAuthStatusParams.ts | 5 + .../typescript/GetAuthStatusResponse.ts | 6 + .../GetConversationSummaryParams.ts | 6 + .../GetConversationSummaryResponse.ts | 6 + .../schema/typescript/GhostCommit.ts | 8 + .../typescript/GitDiffToRemoteParams.ts | 5 + .../typescript/GitDiffToRemoteResponse.ts | 6 + .../schema/typescript/GitSha.ts | 5 + .../schema/typescript/ImageDetail.ts | 5 + .../typescript/InitializeCapabilities.ts | 17 + .../schema/typescript/InitializeParams.ts | 7 + .../schema/typescript/InitializeResponse.ts | 20 + .../schema/typescript/InputModality.ts | 8 + .../schema/typescript/LocalShellAction.ts | 6 + .../schema/typescript/LocalShellExecAction.ts | 5 + .../schema/typescript/LocalShellStatus.ts | 5 + .../schema/typescript/MessagePhase.ts | 11 + .../schema/typescript/ModeKind.ts | 8 + .../typescript/NetworkPolicyAmendment.ts | 6 + .../typescript/NetworkPolicyRuleAction.ts | 5 + .../schema/typescript/ParsedCommand.ts | 12 + .../schema/typescript/Personality.ts | 5 + .../schema/typescript/PlanType.ts | 5 + .../typescript/RealtimeConversationVersion.ts | 5 + .../typescript/RealtimeOutputModality.ts | 5 + .../schema/typescript/RealtimeVoice.ts | 5 + .../schema/typescript/RealtimeVoicesList.ts | 6 + .../schema/typescript/ReasoningEffort.ts | 8 + .../schema/typescript/ReasoningItemContent.ts | 5 + .../ReasoningItemReasoningSummary.ts | 5 + .../schema/typescript/ReasoningSummary.ts | 10 + .../schema/typescript/RequestId.ts | 5 + .../schema/typescript/Resource.ts | 9 + .../schema/typescript/ResourceContent.ts | 17 + .../schema/typescript/ResourceTemplate.ts | 9 + .../schema/typescript/ResponseItem.ts | 18 + .../schema/typescript/ReviewDecision.ts | 10 + .../schema/typescript/ServerNotification.ts | 66 + .../schema/typescript/ServerRequest.ts | 18 + .../schema/typescript/ServiceTier.ts | 5 + .../schema/typescript/SessionSource.ts | 6 + .../schema/typescript/Settings.ts | 9 + .../schema/typescript/SubAgentSource.ts | 7 + .../schema/typescript/ThreadId.ts | 5 + .../schema/typescript/ThreadMemoryMode.ts | 5 + .../schema/typescript/Tool.ts | 9 + .../schema/typescript/Verbosity.ts | 9 + .../schema/typescript/WebSearchAction.ts | 5 + .../schema/typescript/WebSearchContextSize.ts | 5 + .../schema/typescript/WebSearchLocation.ts | 5 + .../schema/typescript/WebSearchMode.ts | 5 + .../schema/typescript/WebSearchToolConfig.ts | 7 + .../schema/typescript/index.ts | 80 + .../schema/typescript/serde_json/JsonValue.ts | 5 + .../schema/typescript/v2/Account.ts | 6 + .../v2/AccountLoginCompletedNotification.ts | 5 + .../AccountRateLimitsUpdatedNotification.ts | 6 + .../v2/AccountUpdatedNotification.ts | 7 + .../v2/AddCreditsNudgeCreditType.ts | 5 + .../v2/AddCreditsNudgeEmailStatus.ts | 5 + .../v2/AdditionalFileSystemPermissions.ts | 7 + .../v2/AdditionalNetworkPermissions.ts | 5 + .../v2/AdditionalPermissionProfile.ts | 7 + .../v2/AgentMessageDeltaNotification.ts | 5 + .../schema/typescript/v2/AnalyticsConfig.ts | 6 + .../schema/typescript/v2/AppBranding.ts | 8 + .../schema/typescript/v2/AppInfo.ts | 19 + .../v2/AppListUpdatedNotification.ts | 9 + .../schema/typescript/v2/AppMetadata.ts | 7 + .../schema/typescript/v2/AppReview.ts | 5 + .../schema/typescript/v2/AppScreenshot.ts | 5 + .../schema/typescript/v2/AppSummary.ts | 8 + .../schema/typescript/v2/AppToolApproval.ts | 5 + .../schema/typescript/v2/AppToolsConfig.ts | 6 + .../schema/typescript/v2/ApprovalsReviewer.ts | 12 + .../schema/typescript/v2/AppsConfig.ts | 8 + .../schema/typescript/v2/AppsDefaultConfig.ts | 5 + .../schema/typescript/v2/AppsListParams.ts | 24 + .../schema/typescript/v2/AppsListResponse.ts | 14 + .../schema/typescript/v2/AskForApproval.ts | 5 + .../typescript/v2/AutoReviewDecisionSource.ts | 8 + .../schema/typescript/v2/ByteRange.ts | 5 + .../typescript/v2/CancelLoginAccountParams.ts | 5 + .../v2/CancelLoginAccountResponse.ts | 6 + .../typescript/v2/CancelLoginAccountStatus.ts | 5 + .../v2/ChatgptAuthTokensRefreshParams.ts | 16 + .../v2/ChatgptAuthTokensRefreshReason.ts | 5 + .../v2/ChatgptAuthTokensRefreshResponse.ts | 5 + .../schema/typescript/v2/CodexErrorInfo.ts | 12 + .../schema/typescript/v2/CollabAgentState.ts | 6 + .../schema/typescript/v2/CollabAgentStatus.ts | 5 + .../schema/typescript/v2/CollabAgentTool.ts | 5 + .../v2/CollabAgentToolCallStatus.ts | 5 + .../typescript/v2/CollaborationModeMask.ts | 10 + .../schema/typescript/v2/CommandAction.ts | 6 + .../v2/CommandExecOutputDeltaNotification.ts | 30 + .../typescript/v2/CommandExecOutputStream.ts | 8 + .../schema/typescript/v2/CommandExecParams.ts | 97 + .../typescript/v2/CommandExecResizeParams.ts | 18 + .../v2/CommandExecResizeResponse.ts | 8 + .../typescript/v2/CommandExecResponse.ts | 24 + .../typescript/v2/CommandExecTerminalSize.ts | 16 + .../v2/CommandExecTerminateParams.ts | 13 + .../v2/CommandExecTerminateResponse.ts | 8 + .../typescript/v2/CommandExecWriteParams.ts | 22 + .../typescript/v2/CommandExecWriteResponse.ts | 8 + .../v2/CommandExecutionApprovalDecision.ts | 7 + ...CommandExecutionOutputDeltaNotification.ts | 5 + .../CommandExecutionRequestApprovalParams.ts | 58 + ...CommandExecutionRequestApprovalResponse.ts | 6 + .../typescript/v2/CommandExecutionSource.ts | 5 + .../typescript/v2/CommandExecutionStatus.ts | 5 + .../schema/typescript/v2/Config.ts | 23 + .../typescript/v2/ConfigBatchWriteParams.ts | 14 + .../schema/typescript/v2/ConfigEdit.ts | 7 + .../schema/typescript/v2/ConfigLayer.ts | 7 + .../typescript/v2/ConfigLayerMetadata.ts | 6 + .../schema/typescript/v2/ConfigLayerSource.ts | 16 + .../schema/typescript/v2/ConfigReadParams.ts | 11 + .../typescript/v2/ConfigReadResponse.ts | 8 + .../typescript/v2/ConfigRequirements.ts | 9 + .../v2/ConfigRequirementsReadResponse.ts | 10 + .../typescript/v2/ConfigValueWriteParams.ts | 11 + .../v2/ConfigWarningNotification.ts | 22 + .../typescript/v2/ConfigWriteResponse.ts | 12 + .../v2/ContextCompactedNotification.ts | 8 + .../schema/typescript/v2/CreditsSnapshot.ts | 5 + .../v2/DeprecationNoticeNotification.ts | 13 + .../typescript/v2/DeviceKeyAlgorithm.ts | 8 + .../typescript/v2/DeviceKeyCreateParams.ts | 13 + .../typescript/v2/DeviceKeyCreateResponse.ts | 14 + .../typescript/v2/DeviceKeyProtectionClass.ts | 8 + .../v2/DeviceKeyProtectionPolicy.ts | 8 + .../typescript/v2/DeviceKeyPublicParams.ts | 8 + .../typescript/v2/DeviceKeyPublicResponse.ts | 14 + .../typescript/v2/DeviceKeySignParams.ts | 9 + .../typescript/v2/DeviceKeySignPayload.ts | 54 + .../typescript/v2/DeviceKeySignResponse.ts | 18 + .../v2/DynamicToolCallOutputContentItem.ts | 5 + .../typescript/v2/DynamicToolCallParams.ts | 6 + .../typescript/v2/DynamicToolCallResponse.ts | 6 + .../typescript/v2/DynamicToolCallStatus.ts | 5 + .../schema/typescript/v2/DynamicToolSpec.ts | 6 + .../schema/typescript/v2/ErrorNotification.ts | 6 + .../typescript/v2/ExecPolicyAmendment.ts | 5 + .../typescript/v2/ExperimentalFeature.ts | 37 + .../ExperimentalFeatureEnablementSetParams.ts | 12 + ...xperimentalFeatureEnablementSetResponse.ts | 9 + .../v2/ExperimentalFeatureListParams.ts | 13 + .../v2/ExperimentalFeatureListResponse.ts | 11 + .../typescript/v2/ExperimentalFeatureStage.ts | 5 + .../v2/ExternalAgentConfigDetectParams.ts | 13 + .../v2/ExternalAgentConfigDetectResponse.ts | 6 + ...lAgentConfigImportCompletedNotification.ts | 5 + .../v2/ExternalAgentConfigImportParams.ts | 6 + .../v2/ExternalAgentConfigImportResponse.ts | 5 + .../v2/ExternalAgentConfigMigrationItem.ts | 11 + .../ExternalAgentConfigMigrationItemType.ts | 5 + .../typescript/v2/FeedbackUploadParams.ts | 5 + .../typescript/v2/FeedbackUploadResponse.ts | 5 + .../v2/FileChangeApprovalDecision.ts | 5 + .../v2/FileChangeOutputDeltaNotification.ts | 5 + .../v2/FileChangePatchUpdatedNotification.ts | 6 + .../v2/FileChangeRequestApprovalParams.ts | 14 + .../v2/FileChangeRequestApprovalResponse.ts | 6 + .../typescript/v2/FileSystemAccessMode.ts | 5 + .../schema/typescript/v2/FileSystemPath.ts | 7 + .../typescript/v2/FileSystemSandboxEntry.ts | 7 + .../typescript/v2/FileSystemSpecialPath.ts | 5 + .../schema/typescript/v2/FileUpdateChange.ts | 6 + .../typescript/v2/FsChangedNotification.ts | 17 + .../schema/typescript/v2/FsCopyParams.ts | 21 + .../schema/typescript/v2/FsCopyResponse.ts | 8 + .../typescript/v2/FsCreateDirectoryParams.ts | 17 + .../v2/FsCreateDirectoryResponse.ts | 8 + .../typescript/v2/FsGetMetadataParams.ts | 13 + .../typescript/v2/FsGetMetadataResponse.ts | 28 + .../typescript/v2/FsReadDirectoryEntry.ts | 20 + .../typescript/v2/FsReadDirectoryParams.ts | 13 + .../typescript/v2/FsReadDirectoryResponse.ts | 13 + .../schema/typescript/v2/FsReadFileParams.ts | 13 + .../typescript/v2/FsReadFileResponse.ts | 12 + .../schema/typescript/v2/FsRemoveParams.ts | 21 + .../schema/typescript/v2/FsRemoveResponse.ts | 8 + .../schema/typescript/v2/FsUnwatchParams.ts | 12 + .../schema/typescript/v2/FsUnwatchResponse.ts | 8 + .../schema/typescript/v2/FsWatchParams.ts | 17 + .../schema/typescript/v2/FsWatchResponse.ts | 13 + .../schema/typescript/v2/FsWriteFileParams.ts | 17 + .../typescript/v2/FsWriteFileResponse.ts | 8 + .../schema/typescript/v2/GetAccountParams.ts | 13 + .../v2/GetAccountRateLimitsResponse.ts | 14 + .../typescript/v2/GetAccountResponse.ts | 6 + .../schema/typescript/v2/GitInfo.ts | 5 + .../typescript/v2/GrantedPermissionProfile.ts | 7 + .../typescript/v2/GuardianApprovalReview.ts | 13 + .../v2/GuardianApprovalReviewAction.ts | 9 + .../v2/GuardianApprovalReviewStatus.ts | 8 + .../typescript/v2/GuardianCommandSource.ts | 5 + .../schema/typescript/v2/GuardianRiskLevel.ts | 8 + .../v2/GuardianUserAuthorization.ts | 8 + .../v2/GuardianWarningNotification.ts | 13 + .../v2/HookCompletedNotification.ts | 6 + .../schema/typescript/v2/HookEventName.ts | 5 + .../schema/typescript/v2/HookExecutionMode.ts | 5 + .../schema/typescript/v2/HookHandlerType.ts | 5 + .../schema/typescript/v2/HookOutputEntry.ts | 6 + .../typescript/v2/HookOutputEntryKind.ts | 5 + .../typescript/v2/HookPromptFragment.ts | 5 + .../schema/typescript/v2/HookRunStatus.ts | 5 + .../schema/typescript/v2/HookRunSummary.ts | 13 + .../schema/typescript/v2/HookScope.ts | 5 + .../schema/typescript/v2/HookSource.ts | 5 + .../typescript/v2/HookStartedNotification.ts | 6 + .../v2/ItemCompletedNotification.ts | 6 + ...dianApprovalReviewCompletedNotification.ts | 30 + ...ardianApprovalReviewStartedNotification.ts | 29 + .../typescript/v2/ItemStartedNotification.ts | 6 + .../v2/ListMcpServerStatusParams.ts | 19 + .../v2/ListMcpServerStatusResponse.ts | 11 + .../typescript/v2/LoginAccountParams.ts | 21 + .../typescript/v2/LoginAccountResponse.ts | 17 + .../typescript/v2/LogoutAccountResponse.ts | 5 + .../typescript/v2/MarketplaceAddParams.ts | 5 + .../typescript/v2/MarketplaceAddResponse.ts | 6 + .../typescript/v2/MarketplaceInterface.ts | 5 + .../typescript/v2/MarketplaceLoadErrorInfo.ts | 6 + .../typescript/v2/MarketplaceRemoveParams.ts | 5 + .../v2/MarketplaceRemoveResponse.ts | 6 + .../schema/typescript/v2/McpAuthStatus.ts | 5 + .../typescript/v2/McpElicitationArrayType.ts | 5 + .../v2/McpElicitationBooleanSchema.ts | 6 + .../v2/McpElicitationBooleanType.ts | 5 + .../v2/McpElicitationConstOption.ts | 5 + .../typescript/v2/McpElicitationEnumSchema.ts | 8 + .../McpElicitationLegacyTitledEnumSchema.ts | 6 + .../v2/McpElicitationMultiSelectEnumSchema.ts | 7 + .../v2/McpElicitationNumberSchema.ts | 6 + .../typescript/v2/McpElicitationNumberType.ts | 5 + .../typescript/v2/McpElicitationObjectType.ts | 5 + .../v2/McpElicitationPrimitiveSchema.ts | 9 + .../typescript/v2/McpElicitationSchema.ts | 13 + .../McpElicitationSingleSelectEnumSchema.ts | 7 + .../v2/McpElicitationStringFormat.ts | 5 + .../v2/McpElicitationStringSchema.ts | 7 + .../typescript/v2/McpElicitationStringType.ts | 5 + .../v2/McpElicitationTitledEnumItems.ts | 6 + ...pElicitationTitledMultiSelectEnumSchema.ts | 7 + ...ElicitationTitledSingleSelectEnumSchema.ts | 7 + .../v2/McpElicitationUntitledEnumItems.ts | 6 + ...licitationUntitledMultiSelectEnumSchema.ts | 7 + ...icitationUntitledSingleSelectEnumSchema.ts | 6 + .../typescript/v2/McpResourceReadParams.ts | 5 + .../typescript/v2/McpResourceReadResponse.ts | 6 + .../v2/McpServerElicitationAction.ts | 5 + .../v2/McpServerElicitationRequestParams.ts | 16 + .../v2/McpServerElicitationRequestResponse.ts | 17 + ...cpServerOauthLoginCompletedNotification.ts | 5 + .../v2/McpServerOauthLoginParams.ts | 5 + .../v2/McpServerOauthLoginResponse.ts | 5 + .../typescript/v2/McpServerRefreshResponse.ts | 5 + .../typescript/v2/McpServerStartupState.ts | 5 + .../schema/typescript/v2/McpServerStatus.ts | 9 + .../typescript/v2/McpServerStatusDetail.ts | 5 + .../v2/McpServerStatusUpdatedNotification.ts | 6 + .../typescript/v2/McpServerToolCallParams.ts | 6 + .../v2/McpServerToolCallResponse.ts | 6 + .../schema/typescript/v2/McpToolCallError.ts | 5 + .../v2/McpToolCallProgressNotification.ts | 5 + .../schema/typescript/v2/McpToolCallResult.ts | 6 + .../schema/typescript/v2/McpToolCallStatus.ts | 5 + .../schema/typescript/v2/MemoryCitation.ts | 6 + .../typescript/v2/MemoryCitationEntry.ts | 5 + .../schema/typescript/v2/MergeStrategy.ts | 5 + .../schema/typescript/v2/MigrationDetails.ts | 6 + .../schema/typescript/v2/Model.ts | 10 + .../typescript/v2/ModelAvailabilityNux.ts | 5 + .../schema/typescript/v2/ModelListParams.ts | 17 + .../schema/typescript/v2/ModelListResponse.ts | 11 + .../typescript/v2/ModelRerouteReason.ts | 5 + .../v2/ModelReroutedNotification.ts | 6 + .../schema/typescript/v2/ModelUpgradeInfo.ts | 5 + .../schema/typescript/v2/NetworkAccess.ts | 5 + .../typescript/v2/NetworkApprovalContext.ts | 6 + .../typescript/v2/NetworkApprovalProtocol.ts | 5 + .../typescript/v2/NetworkDomainPermission.ts | 5 + .../typescript/v2/NetworkPolicyAmendment.ts | 6 + .../typescript/v2/NetworkPolicyRuleAction.ts | 5 + .../typescript/v2/NetworkRequirements.ts | 32 + .../v2/NetworkUnixSocketPermission.ts | 5 + .../typescript/v2/NonSteerableTurnKind.ts | 5 + .../typescript/v2/OverriddenMetadata.ts | 7 + .../schema/typescript/v2/PatchApplyStatus.ts | 5 + .../schema/typescript/v2/PatchChangeKind.ts | 5 + .../typescript/v2/PermissionGrantScope.ts | 5 + .../schema/typescript/v2/PermissionProfile.ts | 7 + .../PermissionProfileFileSystemPermissions.ts | 6 + .../v2/PermissionProfileNetworkPermissions.ts | 5 + .../v2/PermissionsRequestApprovalParams.ts | 7 + .../v2/PermissionsRequestApprovalResponse.ts | 11 + .../typescript/v2/PlanDeltaNotification.ts | 9 + .../schema/typescript/v2/PluginAuthPolicy.ts | 5 + .../schema/typescript/v2/PluginDetail.ts | 9 + .../typescript/v2/PluginInstallParams.ts | 6 + .../typescript/v2/PluginInstallPolicy.ts | 5 + .../typescript/v2/PluginInstallResponse.ts | 7 + .../schema/typescript/v2/PluginInterface.ts | 35 + .../schema/typescript/v2/PluginListParams.ts | 11 + .../typescript/v2/PluginListResponse.ts | 7 + .../typescript/v2/PluginMarketplaceEntry.ts | 13 + .../schema/typescript/v2/PluginReadParams.ts | 6 + .../typescript/v2/PluginReadResponse.ts | 6 + .../schema/typescript/v2/PluginSource.ts | 6 + .../schema/typescript/v2/PluginSummary.ts | 9 + .../typescript/v2/PluginUninstallParams.ts | 5 + .../typescript/v2/PluginUninstallResponse.ts | 5 + .../schema/typescript/v2/PluginsMigration.ts | 5 + .../schema/typescript/v2/ProfileV2.ts | 19 + .../typescript/v2/RateLimitReachedType.ts | 5 + .../schema/typescript/v2/RateLimitSnapshot.ts | 9 + .../schema/typescript/v2/RateLimitWindow.ts | 5 + .../RawResponseItemCompletedNotification.ts | 6 + .../schema/typescript/v2/ReadOnlyAccess.ts | 6 + .../typescript/v2/ReasoningEffortOption.ts | 6 + .../ReasoningSummaryPartAddedNotification.ts | 5 + .../ReasoningSummaryTextDeltaNotification.ts | 5 + .../v2/ReasoningTextDeltaNotification.ts | 5 + .../RemoteControlClientConnectionAudience.ts | 8 + .../RemoteControlClientEnrollmentAudience.ts | 8 + .../typescript/v2/RequestPermissionProfile.ts | 7 + .../typescript/v2/ResidencyRequirement.ts | 5 + .../schema/typescript/v2/ReviewDelivery.ts | 5 + .../schema/typescript/v2/ReviewStartParams.ts | 12 + .../typescript/v2/ReviewStartResponse.ts | 13 + .../schema/typescript/v2/ReviewTarget.ts | 9 + .../schema/typescript/v2/SandboxMode.ts | 5 + .../schema/typescript/v2/SandboxPolicy.ts | 8 + .../typescript/v2/SandboxWorkspaceWrite.ts | 5 + .../v2/SendAddCreditsNudgeEmailParams.ts | 6 + .../v2/SendAddCreditsNudgeEmailResponse.ts | 6 + .../v2/ServerRequestResolvedNotification.ts | 6 + .../schema/typescript/v2/SessionSource.ts | 6 + .../schema/typescript/v2/SkillDependencies.ts | 6 + .../schema/typescript/v2/SkillErrorInfo.ts | 5 + .../schema/typescript/v2/SkillInterface.ts | 6 + .../schema/typescript/v2/SkillMetadata.ts | 13 + .../schema/typescript/v2/SkillScope.ts | 5 + .../schema/typescript/v2/SkillSummary.ts | 7 + .../typescript/v2/SkillToolDependency.ts | 5 + .../v2/SkillsChangedNotification.ts | 11 + .../typescript/v2/SkillsConfigWriteParams.ts | 14 + .../v2/SkillsConfigWriteResponse.ts | 5 + .../schema/typescript/v2/SkillsListEntry.ts | 7 + .../v2/SkillsListExtraRootsForCwd.ts | 5 + .../schema/typescript/v2/SkillsListParams.ts | 18 + .../typescript/v2/SkillsListResponse.ts | 6 + .../schema/typescript/v2/SortDirection.ts | 5 + .../v2/TerminalInteractionNotification.ts | 5 + .../schema/typescript/v2/TextElement.ts | 14 + .../schema/typescript/v2/TextPosition.ts | 13 + .../schema/typescript/v2/TextRange.ts | 6 + .../schema/typescript/v2/Thread.ts | 77 + .../schema/typescript/v2/ThreadActiveFlag.ts | 5 + ...ThreadApproveGuardianDeniedActionParams.ts | 10 + ...readApproveGuardianDeniedActionResponse.ts | 5 + .../typescript/v2/ThreadArchiveParams.ts | 5 + .../typescript/v2/ThreadArchiveResponse.ts | 5 + .../v2/ThreadArchivedNotification.ts | 5 + .../typescript/v2/ThreadClosedNotification.ts | 5 + .../typescript/v2/ThreadCompactStartParams.ts | 5 + .../v2/ThreadCompactStartResponse.ts | 5 + .../schema/typescript/v2/ThreadForkParams.ts | 39 + .../typescript/v2/ThreadForkResponse.ts | 33 + .../typescript/v2/ThreadInjectItemsParams.ts | 10 + .../v2/ThreadInjectItemsResponse.ts | 5 + .../schema/typescript/v2/ThreadItem.ts | 101 + .../schema/typescript/v2/ThreadListParams.ts | 54 + .../typescript/v2/ThreadListResponse.ts | 18 + .../typescript/v2/ThreadLoadedListParams.ts | 13 + .../typescript/v2/ThreadLoadedListResponse.ts | 14 + .../v2/ThreadMetadataGitInfoUpdateParams.ts | 20 + .../v2/ThreadMetadataUpdateParams.ts | 12 + .../v2/ThreadMetadataUpdateResponse.ts | 6 + .../v2/ThreadNameUpdatedNotification.ts | 5 + .../schema/typescript/v2/ThreadReadParams.ts | 9 + .../typescript/v2/ThreadReadResponse.ts | 6 + .../typescript/v2/ThreadRealtimeAudioChunk.ts | 8 + .../v2/ThreadRealtimeClosedNotification.ts | 8 + .../v2/ThreadRealtimeErrorNotification.ts | 8 + .../v2/ThreadRealtimeItemAddedNotification.ts | 9 + ...eadRealtimeOutputAudioDeltaNotification.ts | 9 + .../v2/ThreadRealtimeSdpNotification.ts | 8 + .../v2/ThreadRealtimeStartTransport.ts | 13 + .../v2/ThreadRealtimeStartedNotification.ts | 9 + ...readRealtimeTranscriptDeltaNotification.ts | 13 + ...hreadRealtimeTranscriptDoneNotification.ts | 13 + .../typescript/v2/ThreadResumeParams.ts | 48 + .../typescript/v2/ThreadResumeResponse.ts | 33 + .../typescript/v2/ThreadRollbackParams.ts | 12 + .../typescript/v2/ThreadRollbackResponse.ts | 14 + .../typescript/v2/ThreadSetNameParams.ts | 5 + .../typescript/v2/ThreadSetNameResponse.ts | 5 + .../typescript/v2/ThreadShellCommandParams.ts | 12 + .../v2/ThreadShellCommandResponse.ts | 5 + .../schema/typescript/v2/ThreadSortKey.ts | 5 + .../schema/typescript/v2/ThreadSourceKind.ts | 5 + .../schema/typescript/v2/ThreadStartParams.ts | 29 + .../typescript/v2/ThreadStartResponse.ts | 33 + .../schema/typescript/v2/ThreadStartSource.ts | 5 + .../v2/ThreadStartedNotification.ts | 6 + .../schema/typescript/v2/ThreadStatus.ts | 6 + .../v2/ThreadStatusChangedNotification.ts | 6 + .../schema/typescript/v2/ThreadTokenUsage.ts | 6 + .../v2/ThreadTokenUsageUpdatedNotification.ts | 6 + .../typescript/v2/ThreadTurnsListParams.ts | 18 + .../typescript/v2/ThreadTurnsListResponse.ts | 18 + .../typescript/v2/ThreadUnarchiveParams.ts | 5 + .../typescript/v2/ThreadUnarchiveResponse.ts | 6 + .../v2/ThreadUnarchivedNotification.ts | 5 + .../typescript/v2/ThreadUnsubscribeParams.ts | 5 + .../v2/ThreadUnsubscribeResponse.ts | 6 + .../typescript/v2/ThreadUnsubscribeStatus.ts | 5 + .../typescript/v2/TokenUsageBreakdown.ts | 5 + .../v2/ToolRequestUserInputAnswer.ts | 8 + .../v2/ToolRequestUserInputOption.ts | 8 + .../v2/ToolRequestUserInputParams.ts | 9 + .../v2/ToolRequestUserInputQuestion.ts | 9 + .../v2/ToolRequestUserInputResponse.ts | 9 + .../schema/typescript/v2/ToolsV2.ts | 6 + .../schema/typescript/v2/Turn.ts | 30 + .../v2/TurnCompletedNotification.ts | 6 + .../v2/TurnDiffUpdatedNotification.ts | 9 + .../typescript/v2/TurnEnvironmentParams.ts | 6 + .../schema/typescript/v2/TurnError.ts | 6 + .../typescript/v2/TurnInterruptParams.ts | 5 + .../typescript/v2/TurnInterruptResponse.ts | 5 + .../schema/typescript/v2/TurnPlanStep.ts | 6 + .../typescript/v2/TurnPlanStepStatus.ts | 5 + .../v2/TurnPlanUpdatedNotification.ts | 6 + .../schema/typescript/v2/TurnStartParams.ts | 59 + .../schema/typescript/v2/TurnStartResponse.ts | 6 + .../typescript/v2/TurnStartedNotification.ts | 6 + .../schema/typescript/v2/TurnStatus.ts | 5 + .../schema/typescript/v2/TurnSteerParams.ts | 10 + .../schema/typescript/v2/TurnSteerResponse.ts | 5 + .../schema/typescript/v2/UserInput.ts | 10 + .../typescript/v2/WarningNotification.ts | 13 + .../schema/typescript/v2/WebSearchAction.ts | 5 + ...indowsSandboxSetupCompletedNotification.ts | 6 + .../typescript/v2/WindowsSandboxSetupMode.ts | 5 + .../v2/WindowsSandboxSetupStartParams.ts | 7 + .../v2/WindowsSandboxSetupStartResponse.ts | 5 + ...WindowsWorldWritableWarningNotification.ts | 5 + .../schema/typescript/v2/WriteStatus.ts | 5 + .../schema/typescript/v2/index.ts | 402 + .../app-server-protocol/src/bin/export.rs | 34 + .../src/bin/write_schema_fixtures.rs | 42 + .../src/experimental_api.rs | 195 + .../app-server-protocol/src/export.rs | 2833 +++ .../app-server-protocol/src/jsonrpc_lite.rs | 88 + .../codex-rs/app-server-protocol/src/lib.rs | 49 + .../src/protocol/common.rs | 2121 ++ .../src/protocol/item_builders.rs | 313 + .../src/protocol/mappers.rs | 23 + .../app-server-protocol/src/protocol/mod.rs | 10 + .../src/protocol/serde_helpers.rs | 23 + .../src/protocol/thread_history.rs | 3117 +++ .../app-server-protocol/src/protocol/v1.rs | 245 + .../app-server-protocol/src/protocol/v2.rs | 10224 +++++++++ .../src/schema_fixtures.rs | 361 + .../tests/schema_fixtures.rs | 143 + .../app-server-test-client/BUILD.bazel | 6 + .../app-server-test-client/Cargo.toml | 25 + .../codex-rs/app-server-test-client/README.md | 58 + .../scripts/live_elicitation_hold.sh | 46 + .../app-server-test-client/src/lib.rs | 2230 ++ .../app-server-test-client/src/main.rs | 7 + vendor/codex/codex-rs/app-server/BUILD.bazel | 12 + vendor/codex/codex-rs/app-server/Cargo.toml | 119 + vendor/codex/codex-rs/app-server/README.md | 1692 ++ .../app-server/src/app_server_tracing.rs | 179 + .../app-server/src/bespoke_event_handling.rs | 4920 +++++ .../app-server/src/bin/notify_capture.rs | 44 + .../app-server/src/bin/test_notify_capture.rs | 23 + .../app-server/src/codex_message_processor.rs | 11170 ++++++++++ .../apps_list_helpers.rs | 66 + .../plugin_app_helpers.rs | 149 + .../plugin_mcp_oauth.rs | 95 + .../src/codex_message_processor/plugins.rs | 692 + .../token_usage_replay.rs | 133 + .../codex-rs/app-server/src/command_exec.rs | 1023 + .../src/config/external_agent_config.rs | 1185 ++ .../src/config/external_agent_config_tests.rs | 1622 ++ .../codex-rs/app-server/src/config/mod.rs | 1 + .../codex-rs/app-server/src/config_api.rs | 785 + .../codex-rs/app-server/src/config_manager.rs | 333 + .../app-server/src/config_manager_service.rs | 653 + .../src/config_manager_service_tests.rs | 777 + .../codex-rs/app-server/src/device_key_api.rs | 226 + .../codex-rs/app-server/src/dynamic_tools.rs | 75 + .../codex-rs/app-server/src/error_code.rs | 5 + .../src/external_agent_config_api.rs | 152 + .../codex/codex-rs/app-server/src/filters.rs | 158 + .../codex/codex-rs/app-server/src/fs_api.rs | 179 + .../codex/codex-rs/app-server/src/fs_watch.rs | 414 + .../app-server/src/fuzzy_file_search.rs | 256 + .../codex-rs/app-server/src/in_process.rs | 948 + vendor/codex/codex-rs/app-server/src/lib.rs | 926 + vendor/codex/codex-rs/app-server/src/main.rs | 93 + .../app-server/src/message_processor.rs | 1438 ++ .../src/message_processor/tracing_tests.rs | 764 + .../codex/codex-rs/app-server/src/models.rs | 60 + .../app-server/src/outgoing_message.rs | 1194 ++ .../app-server/src/server_request_error.rs | 42 + .../codex-rs/app-server/src/thread_state.rs | 406 + .../codex-rs/app-server/src/thread_status.rs | 908 + .../codex-rs/app-server/src/transport/auth.rs | 751 + .../codex-rs/app-server/src/transport/mod.rs | 1060 + .../remote_control/client_tracker.rs | 570 + .../src/transport/remote_control/enroll.rs | 503 + .../src/transport/remote_control/mod.rs | 86 + .../src/transport/remote_control/protocol.rs | 252 + .../src/transport/remote_control/tests.rs | 1448 ++ .../src/transport/remote_control/websocket.rs | 1611 ++ .../app-server/src/transport/stdio.rs | 113 + .../app-server/src/transport/websocket.rs | 307 + vendor/codex/codex-rs/app-server/tests/all.rs | 3 + .../app-server/tests/common/BUILD.bazel | 7 + .../app-server/tests/common/Cargo.toml | 36 + .../tests/common/analytics_server.rs | 16 + .../app-server/tests/common/auth_fixtures.rs | 170 + .../app-server/tests/common/config.rs | 108 + .../codex-rs/app-server/tests/common/lib.rs | 51 + .../app-server/tests/common/mcp_process.rs | 1348 ++ .../tests/common/mock_model_server.rs | 81 + .../app-server/tests/common/models_cache.rs | 98 + .../app-server/tests/common/responses.rs | 105 + .../app-server/tests/common/rollout.rs | 269 + .../codex-rs/app-server/tests/suite/auth.rs | 528 + .../tests/suite/conversation_summary.rs | 148 + .../tests/suite/fuzzy_file_search.rs | 611 + .../codex-rs/app-server/tests/suite/mod.rs | 4 + .../app-server/tests/suite/v2/account.rs | 1632 ++ .../app-server/tests/suite/v2/analytics.rs | 221 + .../app-server/tests/suite/v2/app_list.rs | 1535 ++ .../tests/suite/v2/client_metadata.rs | 368 + .../tests/suite/v2/collaboration_mode_list.rs | 60 + .../app-server/tests/suite/v2/command_exec.rs | 926 + .../app-server/tests/suite/v2/compaction.rs | 410 + .../app-server/tests/suite/v2/config_rpc.rs | 777 + .../suite/v2/connection_handling_websocket.rs | 871 + .../v2/connection_handling_websocket_unix.rs | 294 + .../app-server/tests/suite/v2/device_key.rs | 119 + .../tests/suite/v2/dynamic_tools.rs | 727 + .../tests/suite/v2/experimental_api.rs | 321 + .../suite/v2/experimental_feature_list.rs | 338 + .../tests/suite/v2/external_agent_config.rs | 183 + .../codex-rs/app-server/tests/suite/v2/fs.rs | 850 + .../app-server/tests/suite/v2/initialize.rs | 326 + .../tests/suite/v2/marketplace_add.rs | 61 + .../tests/suite/v2/marketplace_remove.rs | 115 + .../app-server/tests/suite/v2/mcp_resource.rs | 326 + .../tests/suite/v2/mcp_server_elicitation.rs | 490 + .../tests/suite/v2/mcp_server_status.rs | 390 + .../app-server/tests/suite/v2/mcp_tool.rs | 252 + .../app-server/tests/suite/v2/memory_reset.rs | 145 + .../codex-rs/app-server/tests/suite/v2/mod.rs | 61 + .../app-server/tests/suite/v2/model_list.rs | 216 + .../tests/suite/v2/output_schema.rs | 234 + .../app-server/tests/suite/v2/plan_item.rs | 289 + .../tests/suite/v2/plugin_install.rs | 844 + .../app-server/tests/suite/v2/plugin_list.rs | 1507 ++ .../app-server/tests/suite/v2/plugin_read.rs | 1262 ++ .../tests/suite/v2/plugin_uninstall.rs | 163 + .../app-server/tests/suite/v2/rate_limits.rs | 456 + .../tests/suite/v2/realtime_conversation.rs | 2385 +++ .../tests/suite/v2/request_permissions.rs | 160 + .../tests/suite/v2/request_user_input.rs | 152 + .../app-server/tests/suite/v2/review.rs | 485 + .../tests/suite/v2/safety_check_downgrade.rs | 246 + .../app-server/tests/suite/v2/skills_list.rs | 360 + .../tests/suite/v2/thread_archive.rs | 635 + .../app-server/tests/suite/v2/thread_fork.rs | 654 + .../tests/suite/v2/thread_inject_items.rs | 288 + .../app-server/tests/suite/v2/thread_list.rs | 1757 ++ .../tests/suite/v2/thread_loaded_list.rs | 139 + .../tests/suite/v2/thread_memory_mode_set.rs | 138 + .../tests/suite/v2/thread_metadata_update.rs | 464 + .../tests/suite/v2/thread_name_websocket.rs | 228 + .../app-server/tests/suite/v2/thread_read.rs | 812 + .../tests/suite/v2/thread_resume.rs | 2287 ++ .../tests/suite/v2/thread_rollback.rs | 198 + .../tests/suite/v2/thread_shell_command.rs | 463 + .../app-server/tests/suite/v2/thread_start.rs | 1000 + .../tests/suite/v2/thread_status.rs | 240 + .../tests/suite/v2/thread_unarchive.rs | 198 + .../tests/suite/v2/thread_unsubscribe.rs | 433 + .../tests/suite/v2/turn_interrupt.rs | 276 + .../app-server/tests/suite/v2/turn_start.rs | 3351 +++ .../tests/suite/v2/turn_start_zsh_fork.rs | 828 + .../app-server/tests/suite/v2/turn_steer.rs | 314 + .../tests/suite/v2/windows_sandbox_setup.rs | 91 + .../codex/codex-rs/app-server/tests/suite/zsh | 73 + vendor/codex/codex-rs/apply-patch/BUILD.bazel | 11 + vendor/codex/codex-rs/apply-patch/Cargo.toml | 33 + .../apply_patch_tool_instructions.md | 75 + .../codex-rs/apply-patch/src/invocation.rs | 857 + vendor/codex/codex-rs/apply-patch/src/lib.rs | 1320 ++ vendor/codex/codex-rs/apply-patch/src/main.rs | 3 + .../codex/codex-rs/apply-patch/src/parser.rs | 1108 + .../codex-rs/apply-patch/src/seek_sequence.rs | 163 + .../apply-patch/src/standalone_executable.rs | 83 + .../codex/codex-rs/apply-patch/tests/all.rs | 3 + .../tests/fixtures/scenarios/.gitattributes | 1 + .../scenarios/001_add_file/expected/bar.md | 1 + .../fixtures/scenarios/001_add_file/patch.txt | 4 + .../expected/modify.txt | 2 + .../expected/nested/new.txt | 1 + .../002_multiple_operations/input/delete.txt | 1 + .../002_multiple_operations/input/modify.txt | 2 + .../002_multiple_operations/patch.txt | 9 + .../003_multiple_chunks/expected/multi.txt | 4 + .../003_multiple_chunks/input/multi.txt | 4 + .../scenarios/003_multiple_chunks/patch.txt | 9 + .../expected/old/other.txt | 1 + .../expected/renamed/dir/name.txt | 1 + .../input/old/name.txt | 1 + .../input/old/other.txt | 1 + .../004_move_to_new_directory/patch.txt | 7 + .../005_rejects_empty_patch/expected/foo.txt | 1 + .../005_rejects_empty_patch/input/foo.txt | 1 + .../005_rejects_empty_patch/patch.txt | 2 + .../expected/modify.txt | 2 + .../input/modify.txt | 2 + .../006_rejects_missing_context/patch.txt | 6 + .../expected/foo.txt | 1 + .../input/foo.txt | 1 + .../007_rejects_missing_file_delete/patch.txt | 3 + .../expected/foo.txt | 1 + .../input/foo.txt | 1 + .../008_rejects_empty_update_hunk/patch.txt | 3 + .../expected/foo.txt | 1 + .../input/foo.txt | 1 + .../patch.txt | 6 + .../expected/old/other.txt | 1 + .../expected/renamed/dir/name.txt | 1 + .../input/old/name.txt | 1 + .../input/old/other.txt | 1 + .../input/renamed/dir/name.txt | 1 + .../patch.txt | 7 + .../expected/duplicate.txt | 1 + .../input/duplicate.txt | 1 + .../patch.txt | 4 + .../expected/dir/foo.txt | 1 + .../input/dir/foo.txt | 1 + .../012_delete_directory_fails/patch.txt | 3 + .../expected/foo.txt | 1 + .../input/foo.txt | 1 + .../013_rejects_invalid_hunk_header/patch.txt | 3 + .../expected/no_newline.txt | 2 + .../input/no_newline.txt | 1 + .../patch.txt | 7 + .../expected/created.txt | 1 + .../patch.txt | 8 + .../expected/input.txt | 4 + .../input/input.txt | 2 + .../016_pure_addition_update_chunk/patch.txt | 6 + .../expected/foo.txt | 1 + .../input/foo.txt | 1 + .../patch.txt | 6 + .../expected/file.txt | 1 + .../input/file.txt | 1 + .../patch.txt | 6 + .../019_unicode_simple/expected/foo.txt | 3 + .../019_unicode_simple/input/foo.txt | 3 + .../scenarios/019_unicode_simple/patch.txt | 7 + .../020_delete_file_success/expected/keep.txt | 1 + .../020_delete_file_success/input/keep.txt | 1 + .../input/obsolete.txt | 1 + .../020_delete_file_success/patch.txt | 3 + .../expected/file.txt | 1 + .../input/file.txt | 1 + .../patch.txt | 6 + .../expected/lines.txt | 2 + .../input/lines.txt | 3 + .../021_update_file_deletion_only/patch.txt | 7 + .../expected/tail.txt | 2 + .../input/tail.txt | 2 + .../patch.txt | 8 + .../tests/fixtures/scenarios/README.md | 18 + .../codex-rs/apply-patch/tests/suite/cli.rs | 91 + .../codex-rs/apply-patch/tests/suite/mod.rs | 4 + .../apply-patch/tests/suite/scenarios.rs | 126 + .../codex-rs/apply-patch/tests/suite/tool.rs | 279 + vendor/codex/codex-rs/arg0/BUILD.bazel | 6 + vendor/codex/codex-rs/arg0/Cargo.toml | 25 + vendor/codex/codex-rs/arg0/src/lib.rs | 585 + vendor/codex/codex-rs/async-utils/BUILD.bazel | 6 + vendor/codex/codex-rs/async-utils/Cargo.toml | 16 + vendor/codex/codex-rs/async-utils/src/lib.rs | 86 + vendor/codex/codex-rs/aws-auth/BUILD.bazel | 6 + vendor/codex/codex-rs/aws-auth/Cargo.toml | 26 + vendor/codex/codex-rs/aws-auth/src/config.rs | 38 + vendor/codex/codex-rs/aws-auth/src/lib.rs | 261 + vendor/codex/codex-rs/aws-auth/src/signing.rs | 76 + .../codex/codex-rs/backend-client/BUILD.bazel | 7 + .../codex/codex-rs/backend-client/Cargo.toml | 25 + .../codex-rs/backend-client/src/client.rs | 862 + .../codex/codex-rs/backend-client/src/lib.rs | 12 + .../codex-rs/backend-client/src/types.rs | 376 + .../fixtures/task_details_with_diff.json | 38 + .../fixtures/task_details_with_error.json | 22 + vendor/codex/codex-rs/chatgpt/BUILD.bazel | 6 + vendor/codex/codex-rs/chatgpt/Cargo.toml | 27 + vendor/codex/codex-rs/chatgpt/README.md | 5 + .../codex-rs/chatgpt/src/apply_command.rs | 81 + .../codex-rs/chatgpt/src/chatgpt_client.rs | 62 + .../codex-rs/chatgpt/src/chatgpt_token.rs | 36 + .../codex/codex-rs/chatgpt/src/connectors.rs | 283 + vendor/codex/codex-rs/chatgpt/src/get_task.rs | 40 + vendor/codex/codex-rs/chatgpt/src/lib.rs | 5 + vendor/codex/codex-rs/chatgpt/tests/all.rs | 3 + .../chatgpt/tests/suite/apply_command_e2e.rs | 188 + .../codex/codex-rs/chatgpt/tests/suite/mod.rs | 2 + .../chatgpt/tests/task_turn_fixture.json | 65 + vendor/codex/codex-rs/cli/BUILD.bazel | 11 + vendor/codex/codex-rs/cli/Cargo.toml | 79 + vendor/codex/codex-rs/cli/build.rs | 5 + vendor/codex/codex-rs/cli/src/app_cmd.rs | 25 + .../codex/codex-rs/cli/src/debug_sandbox.rs | 758 + .../cli/src/debug_sandbox/pid_tracker.rs | 372 + .../cli/src/debug_sandbox/seatbelt.rs | 114 + .../codex/codex-rs/cli/src/desktop_app/mac.rs | 316 + .../codex/codex-rs/cli/src/desktop_app/mod.rs | 22 + .../codex-rs/cli/src/desktop_app/windows.rs | 132 + vendor/codex/codex-rs/cli/src/exit_status.rs | 23 + vendor/codex/codex-rs/cli/src/lib.rs | 73 + vendor/codex/codex-rs/cli/src/login.rs | 412 + vendor/codex/codex-rs/cli/src/main.rs | 2358 +++ .../codex/codex-rs/cli/src/marketplace_cmd.rs | 240 + vendor/codex/codex-rs/cli/src/mcp_cmd.rs | 933 + .../codex/codex-rs/cli/src/responses_cmd.rs | 243 + vendor/codex/codex-rs/cli/src/wsl_paths.rs | 59 + .../cli/tests/debug_clear_memories.rs | 133 + .../codex/codex-rs/cli/tests/debug_models.rs | 40 + vendor/codex/codex-rs/cli/tests/execpolicy.rs | 119 + vendor/codex/codex-rs/cli/tests/features.rs | 91 + .../codex-rs/cli/tests/marketplace_add.rs | 118 + .../codex-rs/cli/tests/marketplace_remove.rs | 70 + .../codex-rs/cli/tests/marketplace_upgrade.rs | 36 + .../codex-rs/cli/tests/mcp_add_remove.rs | 228 + vendor/codex/codex-rs/cli/tests/mcp_list.rs | 166 + vendor/codex/codex-rs/clippy.toml | 18 + .../codex-rs/cloud-requirements/BUILD.bazel | 6 + .../codex-rs/cloud-requirements/Cargo.toml | 32 + .../codex-rs/cloud-requirements/src/lib.rs | 2161 ++ .../codex-rs/cloud-tasks-client/BUILD.bazel | 6 + .../codex-rs/cloud-tasks-client/Cargo.toml | 22 + .../codex-rs/cloud-tasks-client/src/api.rs | 170 + .../codex-rs/cloud-tasks-client/src/http.rs | 907 + .../codex-rs/cloud-tasks-client/src/lib.rs | 19 + .../cloud-tasks-mock-client/BUILD.bazel | 6 + .../cloud-tasks-mock-client/Cargo.toml | 19 + .../cloud-tasks-mock-client/src/lib.rs | 3 + .../cloud-tasks-mock-client/src/mock.rs | 203 + vendor/codex/codex-rs/cloud-tasks/BUILD.bazel | 7 + vendor/codex/codex-rs/cloud-tasks/Cargo.toml | 45 + vendor/codex/codex-rs/cloud-tasks/src/app.rs | 512 + vendor/codex/codex-rs/cloud-tasks/src/cli.rs | 120 + .../codex-rs/cloud-tasks/src/env_detect.rs | 362 + vendor/codex/codex-rs/cloud-tasks/src/lib.rs | 2405 +++ .../codex-rs/cloud-tasks/src/new_task.rs | 35 + .../cloud-tasks/src/scrollable_diff.rs | 176 + vendor/codex/codex-rs/cloud-tasks/src/ui.rs | 1046 + vendor/codex/codex-rs/cloud-tasks/src/util.rs | 146 + .../codex-rs/cloud-tasks/tests/env_filter.rs | 39 + vendor/codex/codex-rs/code-mode/BUILD.bazel | 6 + vendor/codex/codex-rs/code-mode/Cargo.toml | 28 + .../codex-rs/code-mode/src/description.rs | 1101 + vendor/codex/codex-rs/code-mode/src/lib.rs | 32 + .../codex/codex-rs/code-mode/src/response.rs | 26 + .../code-mode/src/runtime/callbacks.rs | 274 + .../codex-rs/code-mode/src/runtime/globals.rs | 144 + .../codex-rs/code-mode/src/runtime/mod.rs | 378 + .../code-mode/src/runtime/module_loader.rs | 235 + .../codex-rs/code-mode/src/runtime/timers.rs | 114 + .../codex-rs/code-mode/src/runtime/value.rs | 228 + .../codex/codex-rs/code-mode/src/service.rs | 898 + vendor/codex/codex-rs/codex-api/BUILD.bazel | 6 + vendor/codex/codex-rs/codex-api/Cargo.toml | 41 + vendor/codex/codex-rs/codex-api/README.md | 37 + .../codex-rs/codex-api/src/api_bridge.rs | 174 + .../codex-api/src/api_bridge_tests.rs | 132 + vendor/codex/codex-rs/codex-api/src/auth.rs | 74 + vendor/codex/codex-rs/codex-api/src/common.rs | 292 + .../codex-api/src/endpoint/compact.rs | 93 + .../codex-api/src/endpoint/memories.rs | 228 + .../codex-rs/codex-api/src/endpoint/mod.rs | 27 + .../codex-rs/codex-api/src/endpoint/models.rs | 271 + .../codex-api/src/endpoint/realtime_call.rs | 546 + .../endpoint/realtime_websocket/methods.rs | 2328 +++ .../realtime_websocket/methods_common.rs | 93 + .../endpoint/realtime_websocket/methods_v1.rs | 73 + .../endpoint/realtime_websocket/methods_v2.rs | 170 + .../src/endpoint/realtime_websocket/mod.rs | 18 + .../endpoint/realtime_websocket/protocol.rs | 229 + .../realtime_websocket/protocol_common.rs | 83 + .../realtime_websocket/protocol_v1.rs | 98 + .../realtime_websocket/protocol_v2.rs | 210 + .../codex-api/src/endpoint/responses.rs | 151 + .../src/endpoint/responses_websocket.rs | 835 + .../codex-api/src/endpoint/session.rs | 154 + vendor/codex/codex-rs/codex-api/src/error.rs | 38 + vendor/codex/codex-rs/codex-api/src/files.rs | 380 + vendor/codex/codex-rs/codex-api/src/lib.rs | 69 + .../codex/codex-rs/codex-api/src/provider.rs | 169 + .../codex-rs/codex-api/src/rate_limits.rs | 368 + .../codex-api/src/requests/headers.rs | 37 + .../codex-rs/codex-api/src/requests/mod.rs | 5 + .../codex-api/src/requests/responses.rs | 37 + .../codex/codex-rs/codex-api/src/sse/mod.rs | 6 + .../codex-rs/codex-api/src/sse/responses.rs | 1124 + .../codex/codex-rs/codex-api/src/telemetry.rs | 98 + .../codex/codex-rs/codex-api/tests/clients.rs | 489 + .../codex-api/tests/models_integration.rs | 130 + .../codex-api/tests/realtime_websocket_e2e.rs | 633 + .../codex-api/tests/sse_end_to_end.rs | 169 + .../codex-backend-openapi-models/BUILD.bazel | 6 + .../codex-backend-openapi-models/Cargo.toml | 25 + .../codex-backend-openapi-models/src/lib.rs | 6 + .../models/additional_rate_limit_details.rs | 38 + .../src/models/code_task_details_response.rs | 42 + .../src/models/config_file_response.rs | 40 + .../src/models/credit_status_details.rs | 52 + .../models/external_pull_request_response.rs | 40 + .../src/models/git_pull_request.rs | 77 + .../src/models/mod.rs | 46 + .../models/paginated_list_task_list_item_.rs | 30 + .../src/models/rate_limit_status_details.rs | 46 + .../src/models/rate_limit_status_payload.rs | 125 + .../src/models/rate_limit_window_snapshot.rs | 39 + .../src/models/task_list_item.rs | 63 + .../src/models/task_response.rs | 62 + .../codex/codex-rs/codex-client/BUILD.bazel | 7 + vendor/codex/codex-rs/codex-client/Cargo.toml | 36 + vendor/codex/codex-rs/codex-client/README.md | 8 + .../codex-client/src/bin/custom_ca_probe.rs | 29 + .../src/chatgpt_cloudflare_cookies.rs | 264 + .../codex-client/src/chatgpt_hosts.rs | 39 + .../codex-rs/codex-client/src/custom_ca.rs | 788 + .../codex-client/src/default_client.rs | 218 + .../codex/codex-rs/codex-client/src/error.rs | 30 + vendor/codex/codex-rs/codex-client/src/lib.rs | 42 + .../codex-rs/codex-client/src/request.rs | 215 + .../codex/codex-rs/codex-client/src/retry.rs | 73 + vendor/codex/codex-rs/codex-client/src/sse.rs | 48 + .../codex-rs/codex-client/src/telemetry.rs | 14 + .../codex-rs/codex-client/src/transport.rs | 156 + .../codex-rs/codex-client/tests/ca_env.rs | 145 + .../tests/fixtures/test-ca-trusted.pem | 25 + .../codex-client/tests/fixtures/test-ca.pem | 21 + .../tests/fixtures/test-intermediate.pem | 21 + .../codex-experimental-api-macros/BUILD.bazel | 7 + .../codex-experimental-api-macros/Cargo.toml | 16 + .../codex-experimental-api-macros/src/lib.rs | 310 + vendor/codex/codex-rs/codex-mcp/BUILD.bazel | 6 + vendor/codex/codex-rs/codex-mcp/Cargo.toml | 42 + vendor/codex/codex-rs/codex-mcp/src/lib.rs | 47 + .../codex/codex-rs/codex-mcp/src/mcp/auth.rs | 303 + .../codex/codex-rs/codex-mcp/src/mcp/mod.rs | 735 + .../codex-rs/codex-mcp/src/mcp/mod_tests.rs | 264 + .../codex-mcp/src/mcp/skill_dependencies.rs | 172 + .../src/mcp/skill_dependencies_tests.rs | 115 + .../codex-mcp/src/mcp_connection_manager.rs | 1861 ++ .../src/mcp_connection_manager_tests.rs | 911 + .../codex-rs/codex-mcp/src/mcp_tool_names.rs | 202 + .../collaboration-mode-templates/BUILD.bazel | 12 + .../collaboration-mode-templates/Cargo.toml | 13 + .../collaboration-mode-templates/src/lib.rs | 4 + .../templates/default.md | 11 + .../templates/execute.md | 45 + .../templates/pair_programming.md | 7 + .../templates/plan.md | 128 + vendor/codex/codex-rs/config.md | 6 + vendor/codex/codex-rs/config/BUILD.bazel | 6 + vendor/codex/codex-rs/config/Cargo.toml | 46 + .../codex-rs/config/src/cloud_requirements.rs | 105 + .../config/src/config_requirements.rs | 2567 +++ .../codex/codex-rs/config/src/config_toml.rs | 863 + .../codex/codex-rs/config/src/constraint.rs | 332 + .../codex/codex-rs/config/src/diagnostics.rs | 397 + .../codex/codex-rs/config/src/fingerprint.rs | 67 + vendor/codex/codex-rs/config/src/host_name.rs | 97 + .../codex/codex-rs/config/src/key_aliases.rs | 52 + vendor/codex/codex-rs/config/src/lib.rs | 110 + .../codex-rs/config/src/marketplace_edit.rs | 276 + vendor/codex/codex-rs/config/src/mcp_edit.rs | 285 + .../codex-rs/config/src/mcp_edit_tests.rs | 84 + vendor/codex/codex-rs/config/src/mcp_types.rs | 417 + .../codex-rs/config/src/mcp_types_tests.rs | 471 + vendor/codex/codex-rs/config/src/merge.rs | 34 + .../codex/codex-rs/config/src/merge_tests.rs | 100 + vendor/codex/codex-rs/config/src/overrides.rs | 55 + .../codex-rs/config/src/permissions_toml.rs | 244 + .../codex/codex-rs/config/src/profile_toml.rs | 84 + .../config/src/project_root_markers.rs | 50 + .../config/src/requirements_exec_policy.rs | 236 + vendor/codex/codex-rs/config/src/schema.rs | 109 + .../codex-rs/config/src/shell_environment.rs | 123 + .../codex-rs/config/src/skills_config.rs | 57 + vendor/codex/codex-rs/config/src/state.rs | 386 + .../codex/codex-rs/config/src/state_tests.rs | 34 + .../codex-rs/config/src/thread_config.rs | 314 + vendor/codex/codex-rs/config/src/types.rs | 810 + .../codex/codex-rs/config/src/types_tests.rs | 61 + vendor/codex/codex-rs/connectors/BUILD.bazel | 6 + vendor/codex/codex-rs/connectors/Cargo.toml | 18 + .../codex-rs/connectors/src/accessible.rs | 76 + .../codex/codex-rs/connectors/src/filter.rs | 68 + vendor/codex/codex-rs/connectors/src/lib.rs | 616 + vendor/codex/codex-rs/connectors/src/merge.rs | 119 + .../codex/codex-rs/connectors/src/metadata.rs | 27 + .../codex/codex-rs/core-plugins/BUILD.bazel | 15 + vendor/codex/codex-rs/core-plugins/Cargo.toml | 40 + vendor/codex/codex-rs/core-plugins/src/lib.rs | 8 + .../codex/codex-rs/core-plugins/src/loader.rs | 1130 + .../codex-rs/core-plugins/src/manifest.rs | 545 + .../codex-rs/core-plugins/src/marketplace.rs | 778 + .../core-plugins/src/marketplace_tests.rs | 1530 ++ .../core-plugins/src/marketplace_upgrade.rs | 298 + .../src/marketplace_upgrade/activation.rs | 167 + .../src/marketplace_upgrade/git.rs | 238 + .../codex/codex-rs/core-plugins/src/remote.rs | 656 + .../core-plugins/src/remote_legacy.rs | 313 + .../codex/codex-rs/core-plugins/src/store.rs | 341 + .../codex-rs/core-plugins/src/store_tests.rs | 318 + .../codex-rs/core-plugins/src/toggles.rs | 100 + vendor/codex/codex-rs/core-skills/BUILD.bazel | 15 + vendor/codex/codex-rs/core-skills/Cargo.toml | 41 + .../codex-rs/core-skills/src/config_rules.rs | 128 + .../core-skills/src/env_var_dependencies.rs | 30 + .../codex-rs/core-skills/src/injection.rs | 511 + .../core-skills/src/injection_tests.rs | 357 + .../core-skills/src/invocation_utils.rs | 145 + .../core-skills/src/invocation_utils_tests.rs | 122 + vendor/codex/codex-rs/core-skills/src/lib.rs | 29 + .../codex/codex-rs/core-skills/src/loader.rs | 958 + .../codex-rs/core-skills/src/loader_tests.rs | 1767 ++ .../codex/codex-rs/core-skills/src/manager.rs | 313 + .../codex-rs/core-skills/src/manager_tests.rs | 771 + .../core-skills/src/mention_counts.rs | 24 + .../codex/codex-rs/core-skills/src/model.rs | 196 + .../codex/codex-rs/core-skills/src/remote.rs | 270 + .../codex/codex-rs/core-skills/src/render.rs | 755 + .../codex/codex-rs/core-skills/src/system.rs | 8 + vendor/codex/codex-rs/core/BUILD.bazel | 62 + vendor/codex/codex-rs/core/Cargo.toml | 174 + vendor/codex/codex-rs/core/README.md | 89 + vendor/codex/codex-rs/core/config.schema.json | 3016 +++ .../codex-rs/core/gpt-5.1-codex-max_prompt.md | 80 + .../codex-rs/core/gpt-5.2-codex_prompt.md | 80 + vendor/codex/codex-rs/core/gpt_5_1_prompt.md | 331 + vendor/codex/codex-rs/core/gpt_5_2_prompt.md | 298 + .../codex/codex-rs/core/gpt_5_codex_prompt.md | 68 + .../core/hierarchical_agents_message.md | 7 + .../prompt_with_apply_patch_instructions.md | 351 + vendor/codex/codex-rs/core/review_prompt.md | 87 + .../codex-rs/core/src/agent/agent_names.txt | 101 + .../codex-rs/core/src/agent/agent_resolver.rs | 36 + .../core/src/agent/builtins/awaiter.toml | 35 + .../core/src/agent/builtins/explorer.toml | 0 .../codex/codex-rs/core/src/agent/control.rs | 1225 ++ .../codex-rs/core/src/agent/control_tests.rs | 2496 +++ .../codex/codex-rs/core/src/agent/mailbox.rs | 161 + vendor/codex/codex-rs/core/src/agent/mod.rs | 14 + .../codex/codex-rs/core/src/agent/registry.rs | 344 + .../codex-rs/core/src/agent/registry_tests.rs | 350 + vendor/codex/codex-rs/core/src/agent/role.rs | 434 + .../codex-rs/core/src/agent/role_tests.rs | 774 + .../codex/codex-rs/core/src/agent/status.rs | 27 + vendor/codex/codex-rs/core/src/agents_md.rs | 367 + .../codex-rs/core/src/agents_md_tests.rs | 541 + vendor/codex/codex-rs/core/src/apply_patch.rs | 105 + .../codex-rs/core/src/apply_patch_tests.rs | 22 + vendor/codex/codex-rs/core/src/apps/mod.rs | 2 + vendor/codex/codex-rs/core/src/apps/render.rs | 61 + vendor/codex/codex-rs/core/src/arc_monitor.rs | 430 + .../codex-rs/core/src/arc_monitor_tests.rs | 447 + .../codex-rs/core/src/bin/config_schema.rs | 20 + vendor/codex/codex-rs/core/src/client.rs | 2052 ++ .../codex/codex-rs/core/src/client_common.rs | 190 + .../codex-rs/core/src/client_common_tests.rs | 230 + .../codex/codex-rs/core/src/client_tests.rs | 171 + .../codex/codex-rs/core/src/codex_delegate.rs | 852 + .../codex-rs/core/src/codex_delegate_tests.rs | 417 + .../codex/codex-rs/core/src/codex_thread.rs | 401 + .../core/src/command_canonicalization.rs | 42 + .../src/command_canonicalization_tests.rs | 88 + .../codex-rs/core/src/commit_attribution.rs | 33 + .../core/src/commit_attribution_tests.rs | 43 + vendor/codex/codex-rs/core/src/compact.rs | 587 + .../codex/codex-rs/core/src/compact_remote.rs | 367 + .../codex/codex-rs/core/src/compact_tests.rs | 602 + .../codex-rs/core/src/config/agent_roles.rs | 544 + .../codex-rs/core/src/config/config_tests.rs | 7450 +++++++ vendor/codex/codex-rs/core/src/config/edit.rs | 1188 ++ .../codex-rs/core/src/config/edit_tests.rs | 1270 ++ .../core/src/config/managed_features.rs | 353 + vendor/codex/codex-rs/core/src/config/mod.rs | 2605 +++ .../core/src/config/network_proxy_spec.rs | 383 + .../src/config/network_proxy_spec_tests.rs | 433 + .../codex-rs/core/src/config/permissions.rs | 534 + .../core/src/config/permissions_tests.rs | 354 + .../codex/codex-rs/core/src/config/schema.md | 11 + .../codex/codex-rs/core/src/config/schema.rs | 7 + .../codex-rs/core/src/config/schema_tests.rs | 55 + .../codex-rs/core/src/config_loader/README.md | 77 + .../core/src/config_loader/layer_io.rs | 137 + .../codex-rs/core/src/config_loader/macos.rs | 179 + .../codex-rs/core/src/config_loader/mod.rs | 1209 ++ .../codex-rs/core/src/config_loader/tests.rs | 2321 +++ vendor/codex/codex-rs/core/src/connectors.rs | 726 + .../codex-rs/core/src/connectors_tests.rs | 1181 ++ .../consequential_tool_message_templates.json | 962 + .../context/approved_command_prefix_saved.rs | 24 + .../core/src/context/apps_instructions.rs | 30 + .../context/available_plugins_instructions.rs | 58 + .../context/available_skills_instructions.rs | 56 + .../collaboration_mode_instructions.rs | 32 + .../src/context/contextual_user_message.rs | 100 + .../context/contextual_user_message_tests.rs | 99 + .../core/src/context/environment_context.rs | 209 + .../src/context/environment_context_tests.rs | 186 + .../codex-rs/core/src/context/fragment.rs | 88 + .../guardian_followup_review_reminder.rs | 21 + .../src/context/hook_additional_context.rs | 22 + .../context/image_generation_instructions.rs | 30 + vendor/codex/codex-rs/core/src/context/mod.rs | 57 + .../src/context/model_switch_instructions.rs | 27 + .../core/src/context/network_rule_saved.rs | 35 + .../src/context/permissions_instructions.rs | 316 + .../context/permissions_instructions_tests.rs | 412 + .../context/personality_spec_instructions.rs | 25 + .../core/src/context/plugin_instructions.rs | 22 + .../permissions/approval_policy/never.md | 1 + .../permissions/approval_policy/on_failure.md | 1 + .../permissions/approval_policy/on_request.md | 57 + .../on_request_rule_request_permission.md | 33 + .../approval_policy/unless_trusted.md | 1 + .../sandbox_mode/danger_full_access.md | 1 + .../permissions/sandbox_mode/read_only.md | 1 + .../sandbox_mode/workspace_write.md | 1 + .../context/prompts/realtime/realtime_end.md | 3 + .../prompts/realtime/realtime_start.md | 9 + .../src/context/realtime_end_instructions.rs | 32 + .../context/realtime_start_instructions.rs | 18 + .../realtime_start_with_instructions.rs | 26 + .../core/src/context/skill_instructions.rs | 33 + .../src/context/spawn_agent_instructions.rs | 14 + .../core/src/context/subagent_notification.rs | 34 + .../codex-rs/core/src/context/turn_aborted.rs | 26 + .../core/src/context/user_instructions.rs | 17 + .../core/src/context/user_shell_command.rs | 40 + .../core/src/context_manager/history.rs | 728 + .../core/src/context_manager/history_tests.rs | 1973 ++ .../codex-rs/core/src/context_manager/mod.rs | 9 + .../core/src/context_manager/normalize.rs | 345 + .../core/src/context_manager/updates.rs | 239 + .../codex/codex-rs/core/src/event_mapping.rs | 213 + .../codex-rs/core/src/event_mapping_tests.rs | 510 + vendor/codex/codex-rs/core/src/exec.rs | 1410 ++ vendor/codex/codex-rs/core/src/exec_env.rs | 55 + .../codex/codex-rs/core/src/exec_env_tests.rs | 259 + vendor/codex/codex-rs/core/src/exec_policy.rs | 926 + .../codex-rs/core/src/exec_policy_tests.rs | 2068 ++ vendor/codex/codex-rs/core/src/exec_tests.rs | 1067 + .../codex/codex-rs/core/src/file_watcher.rs | 856 + .../codex-rs/core/src/file_watcher_tests.rs | 537 + vendor/codex/codex-rs/core/src/flags.rs | 6 + .../codex/codex-rs/core/src/function_tool.rs | 11 + .../codex/codex-rs/core/src/git_info_tests.rs | 632 + .../core/src/guardian/approval_request.rs | 541 + .../codex/codex-rs/core/src/guardian/mod.rs | 159 + .../codex-rs/core/src/guardian/policy.md | 42 + .../core/src/guardian/policy_template.md | 57 + .../codex-rs/core/src/guardian/prompt.rs | 608 + .../codex-rs/core/src/guardian/review.rs | 782 + .../core/src/guardian/review_session.rs | 1160 ++ ...ardian_followup_review_request_layout.snap | 67 + ...tests__guardian_review_request_layout.snap | 26 + .../codex/codex-rs/core/src/guardian/tests.rs | 2181 ++ .../codex/codex-rs/core/src/hook_runtime.rs | 627 + .../codex-rs/core/src/installation_id.rs | 149 + vendor/codex/codex-rs/core/src/landlock.rs | 77 + vendor/codex/codex-rs/core/src/lib.rs | 201 + vendor/codex/codex-rs/core/src/mcp.rs | 41 + .../codex-rs/core/src/mcp_openai_file.rs | 474 + .../core/src/mcp_skill_dependencies.rs | 470 + .../core/src/mcp_tool_approval_templates.rs | 371 + .../codex/codex-rs/core/src/mcp_tool_call.rs | 1769 ++ .../codex-rs/core/src/mcp_tool_call_tests.rs | 1998 ++ .../codex-rs/core/src/mcp_tool_exposure.rs | 88 + .../core/src/mcp_tool_exposure_test.rs | 259 + .../codex-rs/core/src/memories/README.md | 138 + .../codex-rs/core/src/memories/citations.rs | 85 + .../core/src/memories/citations_tests.rs | 71 + .../codex-rs/core/src/memories/control.rs | 44 + .../codex-rs/core/src/memories/extensions.rs | 251 + .../codex/codex-rs/core/src/memories/mod.rs | 123 + .../codex-rs/core/src/memories/phase1.rs | 623 + .../core/src/memories/phase1_tests.rs | 156 + .../codex-rs/core/src/memories/phase2.rs | 543 + .../codex-rs/core/src/memories/prompts.rs | 293 + .../core/src/memories/prompts_tests.rs | 118 + .../codex/codex-rs/core/src/memories/start.rs | 44 + .../codex-rs/core/src/memories/storage.rs | 260 + .../core/src/memories/storage_tests.rs | 70 + .../codex/codex-rs/core/src/memories/tests.rs | 1046 + .../codex/codex-rs/core/src/memories/usage.rs | 147 + .../codex/codex-rs/core/src/memory_trace.rs | 230 + .../codex-rs/core/src/memory_trace_tests.rs | 73 + .../codex/codex-rs/core/src/mention_syntax.rs | 2 + .../codex-rs/core/src/message_history.rs | 418 + .../core/src/message_history_tests.rs | 211 + .../core/src/network_policy_decision.rs | 106 + .../core/src/network_policy_decision_tests.rs | 192 + .../codex-rs/core/src/network_proxy_loader.rs | 330 + .../core/src/network_proxy_loader_tests.rs | 250 + .../core/src/original_image_detail.rs | 3 + vendor/codex/codex-rs/core/src/otel_init.rs | 99 + .../core/src/personality_migration.rs | 110 + .../core/src/personality_migration_tests.rs | 162 + .../codex-rs/core/src/plugins/discoverable.rs | 102 + .../core/src/plugins/discoverable_tests.rs | 329 + .../codex-rs/core/src/plugins/injection.rs | 60 + .../src/plugins/installed_marketplaces.rs | 75 + .../codex-rs/core/src/plugins/manager.rs | 1605 ++ .../core/src/plugins/manager_tests.rs | 3229 +++ .../core/src/plugins/marketplace_add.rs | 407 + .../src/plugins/marketplace_add/install.rs | 137 + .../src/plugins/marketplace_add/metadata.rs | 315 + .../src/plugins/marketplace_add/source.rs | 392 + .../core/src/plugins/marketplace_remove.rs | 313 + .../codex-rs/core/src/plugins/mentions.rs | 120 + .../core/src/plugins/mentions_tests.rs | 155 + vendor/codex/codex-rs/core/src/plugins/mod.rs | 66 + .../codex/codex-rs/core/src/plugins/render.rs | 62 + .../codex-rs/core/src/plugins/render_tests.rs | 23 + .../codex-rs/core/src/plugins/startup_sync.rs | 1028 + .../core/src/plugins/startup_sync_tests.rs | 792 + .../codex-rs/core/src/plugins/test_support.rs | 109 + .../codex/codex-rs/core/src/prompt_debug.rs | 100 + .../codex-rs/core/src/realtime_context.rs | 565 + .../core/src/realtime_context_tests.rs | 329 + .../core/src/realtime_conversation.rs | 1445 ++ .../core/src/realtime_conversation_tests.rs | 139 + .../codex-rs/core/src/realtime_prompt.rs | 82 + .../codex/codex-rs/core/src/review_format.rs | 82 + .../codex/codex-rs/core/src/review_prompts.rs | 185 + vendor/codex/codex-rs/core/src/rollout.rs | 70 + vendor/codex/codex-rs/core/src/safety.rs | 179 + .../codex/codex-rs/core/src/safety_tests.rs | 321 + .../codex/codex-rs/core/src/sandbox_tags.rs | 28 + .../codex-rs/core/src/sandbox_tags_tests.rs | 39 + .../codex/codex-rs/core/src/sandboxing/mod.rs | 166 + .../codex-rs/core/src/session/handlers.rs | 1342 ++ vendor/codex/codex-rs/core/src/session/mcp.rs | 319 + vendor/codex/codex-rs/core/src/session/mod.rs | 3283 +++ .../codex/codex-rs/core/src/session/review.rs | 165 + .../src/session/rollout_reconstruction.rs | 328 + .../session/rollout_reconstruction_tests.rs | 1743 ++ .../codex-rs/core/src/session/session.rs | 929 + ..._startup_context_then_first_turn_diff.snap | 15 + .../codex/codex-rs/core/src/session/tests.rs | 7104 +++++++ .../core/src/session/tests/guardian_tests.rs | 792 + .../codex/codex-rs/core/src/session/turn.rs | 2275 ++ .../codex-rs/core/src/session/turn_context.rs | 714 + .../codex/codex-rs/core/src/session_prefix.rs | 25 + .../core/src/session_rollout_init_error.rs | 49 + .../core/src/session_startup_prewarm.rs | 241 + vendor/codex/codex-rs/core/src/shell.rs | 409 + .../codex/codex-rs/core/src/shell_detect.rs | 24 + .../codex/codex-rs/core/src/shell_snapshot.rs | 567 + .../codex-rs/core/src/shell_snapshot_tests.rs | 498 + vendor/codex/codex-rs/core/src/shell_tests.rs | 192 + vendor/codex/codex-rs/core/src/skills.rs | 232 + .../codex/codex-rs/core/src/skills_watcher.rs | 124 + vendor/codex/codex-rs/core/src/spawn.rs | 126 + vendor/codex/codex-rs/core/src/state/mod.rs | 12 + .../codex/codex-rs/core/src/state/service.rs | 74 + .../codex/codex-rs/core/src/state/session.rs | 263 + .../codex-rs/core/src/state/session_tests.rs | 162 + vendor/codex/codex-rs/core/src/state/turn.rs | 274 + .../codex-rs/core/src/state_db_bridge.rs | 8 + .../codex-rs/core/src/stream_events_utils.rs | 509 + .../core/src/stream_events_utils_tests.rs | 302 + .../codex/codex-rs/core/src/tasks/compact.rs | 47 + .../codex-rs/core/src/tasks/ghost_snapshot.rs | 252 + .../core/src/tasks/ghost_snapshot_tests.rs | 34 + vendor/codex/codex-rs/core/src/tasks/mod.rs | 712 + .../codex-rs/core/src/tasks/mod_tests.rs | 180 + .../codex/codex-rs/core/src/tasks/regular.rs | 83 + .../codex/codex-rs/core/src/tasks/review.rs | 320 + vendor/codex/codex-rs/core/src/tasks/undo.rs | 129 + .../codex-rs/core/src/tasks/user_shell.rs | 357 + .../codex/codex-rs/core/src/test_support.rs | 124 + .../codex/codex-rs/core/src/thread_manager.rs | 1129 + .../codex-rs/core/src/thread_manager_tests.rs | 739 + .../core/src/thread_rollout_truncation.rs | 170 + .../src/thread_rollout_truncation_tests.rs | 318 + .../src/tools/code_mode/execute_handler.rs | 86 + .../tools/code_mode/execute_handler_tests.rs | 41 + .../codex-rs/core/src/tools/code_mode/mod.rs | 410 + .../src/tools/code_mode/response_adapter.rs | 47 + .../core/src/tools/code_mode/wait_handler.rs | 84 + .../codex/codex-rs/core/src/tools/context.rs | 597 + .../codex-rs/core/src/tools/context_tests.rs | 419 + .../codex/codex-rs/core/src/tools/events.rs | 528 + .../core/src/tools/handlers/agent_jobs.rs | 1224 ++ .../src/tools/handlers/agent_jobs_tests.rs | 62 + .../core/src/tools/handlers/apply_patch.rs | 568 + .../src/tools/handlers/apply_patch_tests.rs | 280 + .../core/src/tools/handlers/dynamic.rs | 142 + .../src/tools/handlers/grep_files_tests.rs | 95 + .../core/src/tools/handlers/js_repl.rs | 300 + .../core/src/tools/handlers/js_repl_tests.rs | 90 + .../core/src/tools/handlers/list_dir.rs | 293 + .../core/src/tools/handlers/list_dir_tests.rs | 331 + .../codex-rs/core/src/tools/handlers/mcp.rs | 63 + .../core/src/tools/handlers/mcp_resource.rs | 675 + .../src/tools/handlers/mcp_resource_tests.rs | 125 + .../codex-rs/core/src/tools/handlers/mod.rs | 388 + .../core/src/tools/handlers/multi_agents.rs | 74 + .../handlers/multi_agents/close_agent.rs | 121 + .../handlers/multi_agents/resume_agent.rs | 173 + .../tools/handlers/multi_agents/send_input.rs | 116 + .../src/tools/handlers/multi_agents/spawn.rs | 208 + .../src/tools/handlers/multi_agents/wait.rs | 238 + .../src/tools/handlers/multi_agents_common.rs | 380 + .../src/tools/handlers/multi_agents_tests.rs | 3565 ++++ .../src/tools/handlers/multi_agents_v2.rs | 43 + .../handlers/multi_agents_v2/close_agent.rs | 134 + .../handlers/multi_agents_v2/followup_task.rs | 32 + .../handlers/multi_agents_v2/list_agents.rs | 68 + .../handlers/multi_agents_v2/message_tool.rs | 167 + .../handlers/multi_agents_v2/send_message.rs | 32 + .../tools/handlers/multi_agents_v2/spawn.rs | 304 + .../tools/handlers/multi_agents_v2/wait.rs | 132 + .../codex-rs/core/src/tools/handlers/plan.rs | 102 + .../src/tools/handlers/read_file_tests.rs | 503 + .../src/tools/handlers/request_permissions.rs | 68 + .../src/tools/handlers/request_user_input.rs | 80 + .../handlers/request_user_input_tests.rs | 66 + .../codex-rs/core/src/tools/handlers/shell.rs | 597 + .../core/src/tools/handlers/shell_tests.rs | 292 + .../core/src/tools/handlers/test_sync.rs | 152 + .../core/src/tools/handlers/tool_search.rs | 431 + .../core/src/tools/handlers/tool_suggest.rs | 263 + .../src/tools/handlers/tool_suggest_tests.rs | 45 + .../src/tools/handlers/unavailable_tool.rs | 44 + .../core/src/tools/handlers/unified_exec.rs | 452 + .../src/tools/handlers/unified_exec_tests.rs | 410 + .../core/src/tools/handlers/view_image.rs | 233 + .../codex-rs/core/src/tools/hook_names.rs | 55 + .../codex-rs/core/src/tools/js_repl/kernel.js | 1799 ++ .../core/src/tools/js_repl/meriyah.umd.min.js | 6 + .../codex-rs/core/src/tools/js_repl/mod.rs | 2038 ++ .../core/src/tools/js_repl/mod_tests.rs | 2850 +++ vendor/codex/codex-rs/core/src/tools/mod.rs | 119 + .../core/src/tools/network_approval.rs | 710 + .../core/src/tools/network_approval_tests.rs | 315 + .../codex-rs/core/src/tools/orchestrator.rs | 460 + .../codex/codex-rs/core/src/tools/parallel.rs | 197 + .../codex/codex-rs/core/src/tools/registry.rs | 676 + .../codex-rs/core/src/tools/registry_tests.rs | 51 + .../codex/codex-rs/core/src/tools/router.rs | 309 + .../codex-rs/core/src/tools/router_tests.rs | 307 + .../core/src/tools/runtimes/apply_patch.rs | 262 + .../src/tools/runtimes/apply_patch_tests.rs | 211 + .../codex-rs/core/src/tools/runtimes/mod.rs | 238 + .../core/src/tools/runtimes/mod_tests.rs | 777 + .../codex-rs/core/src/tools/runtimes/shell.rs | 290 + .../tools/runtimes/shell/unix_escalation.rs | 1023 + .../runtimes/shell/unix_escalation_tests.rs | 674 + .../tools/runtimes/shell/zsh_fork_backend.rs | 136 + .../core/src/tools/runtimes/unified_exec.rs | 354 + .../codex-rs/core/src/tools/sandboxing.rs | 396 + .../core/src/tools/sandboxing_tests.rs | 110 + vendor/codex/codex-rs/core/src/tools/spec.rs | 337 + .../codex-rs/core/src/tools/spec_tests.rs | 1473 ++ .../core/src/tools/tool_search_entry.rs | 151 + .../codex-rs/core/src/turn_diff_tracker.rs | 469 + .../core/src/turn_diff_tracker_tests.rs | 427 + .../codex/codex-rs/core/src/turn_metadata.rs | 300 + .../codex-rs/core/src/turn_metadata_tests.rs | 146 + vendor/codex/codex-rs/core/src/turn_timing.rs | 193 + .../codex-rs/core/src/turn_timing_tests.rs | 127 + .../codex-rs/core/src/unavailable_tool.rs | 92 + .../core/src/unified_exec/async_watcher.rs | 322 + .../src/unified_exec/async_watcher_tests.rs | 39 + .../codex-rs/core/src/unified_exec/errors.rs | 40 + .../core/src/unified_exec/head_tail_buffer.rs | 183 + .../unified_exec/head_tail_buffer_tests.rs | 89 + .../codex-rs/core/src/unified_exec/mod.rs | 180 + .../core/src/unified_exec/mod_tests.rs | 626 + .../codex-rs/core/src/unified_exec/process.rs | 499 + .../core/src/unified_exec/process_manager.rs | 1062 + .../src/unified_exec/process_manager_tests.rs | 192 + .../core/src/unified_exec/process_state.rs | 24 + .../core/src/unified_exec/process_tests.rs | 147 + .../codex-rs/core/src/user_shell_command.rs | 41 + .../core/src/user_shell_command_tests.rs | 58 + vendor/codex/codex-rs/core/src/util.rs | 139 + vendor/codex/codex-rs/core/src/util_tests.rs | 472 + vendor/codex/codex-rs/core/src/utils/mod.rs | 1 + .../codex-rs/core/src/utils/path_utils.rs | 1 + vendor/codex/codex-rs/core/src/web_search.rs | 39 + .../codex-rs/core/src/windows_sandbox.rs | 451 + .../core/src/windows_sandbox_read_grants.rs | 40 + .../src/windows_sandbox_read_grants_tests.rs | 57 + .../core/src/windows_sandbox_tests.rs | 189 + .../core/templates/agents/orchestrator.md | 42 + .../templates/collab/experimental_prompt.md | 15 + .../codex-rs/core/templates/compact/prompt.md | 9 + .../core/templates/compact/summary_prefix.md | 1 + .../core/templates/memories/consolidation.md | 835 + .../core/templates/memories/read_path.md | 129 + .../templates/memories/stage_one_input.md | 11 + .../templates/memories/stage_one_system.md | 569 + .../gpt-5.2-codex_instructions_template.md | 80 + .../personalities/gpt-5.2-codex_friendly.md | 19 + .../personalities/gpt-5.2-codex_pragmatic.md | 18 + .../core/templates/realtime/backend_prompt.md | 65 + .../templates/review/exit_interrupted.xml | 8 + .../core/templates/review/exit_success.xml | 7 + .../review/history_message_completed.md | 8 + .../review/history_message_interrupted.md | 8 + .../templates/search_tool/tool_description.md | 7 + .../search_tool/tool_suggest_description.md | 26 + vendor/codex/codex-rs/core/tests/all.rs | 5 + .../core/tests/cli_responses_fixture.sse | 8 + .../codex-rs/core/tests/common/BUILD.bazel | 10 + .../codex-rs/core/tests/common/Cargo.toml | 47 + .../core/tests/common/apps_test_server.rs | 359 + .../core/tests/common/context_snapshot.rs | 602 + .../codex/codex-rs/core/tests/common/lib.rs | 612 + .../codex-rs/core/tests/common/process.rs | 48 + .../codex-rs/core/tests/common/responses.rs | 1677 ++ .../core/tests/common/streaming_sse.rs | 709 + .../codex-rs/core/tests/common/test_codex.rs | 961 + .../core/tests/common/test_codex_exec.rs | 49 + .../codex-rs/core/tests/common/tracing.rs | 26 + .../codex-rs/core/tests/common/zsh_fork.rs | 124 + .../core/tests/fixtures/incomplete_sse.json | 3 + .../codex-rs/core/tests/responses_headers.rs | 601 + .../codex-rs/core/tests/suite/abort_tasks.rs | 251 + .../codex-rs/core/tests/suite/agent_jobs.rs | 448 + .../core/tests/suite/agent_websocket.rs | 440 + .../codex-rs/core/tests/suite/agents_md.rs | 141 + .../core/tests/suite/apply_patch_cli.rs | 1644 ++ .../codex-rs/core/tests/suite/approvals.rs | 3042 +++ .../codex-rs/core/tests/suite/cli_stream.rs | 628 + .../codex/codex-rs/core/tests/suite/client.rs | 3060 +++ .../core/tests/suite/client_websockets.rs | 1922 ++ .../codex-rs/core/tests/suite/code_mode.rs | 2916 +++ .../core/tests/suite/codex_delegate.rs | 245 + .../tests/suite/collaboration_instructions.rs | 840 + .../codex-rs/core/tests/suite/compact.rs | 3435 +++ .../core/tests/suite/compact_remote.rs | 2734 +++ .../core/tests/suite/compact_resume_fork.rs | 879 + .../core/tests/suite/deprecation_notice.rs | 205 + .../codex/codex-rs/core/tests/suite/exec.rs | 180 + .../codex-rs/core/tests/suite/exec_policy.rs | 396 + .../codex-rs/core/tests/suite/fork_thread.rs | 164 + .../core/tests/suite/hierarchical_agents.rs | 95 + .../codex/codex-rs/core/tests/suite/hooks.rs | 2919 +++ .../core/tests/suite/image_rollout.rs | 261 + .../codex/codex-rs/core/tests/suite/items.rs | 1199 ++ .../codex-rs/core/tests/suite/js_repl.rs | 795 + .../codex-rs/core/tests/suite/json_result.rs | 111 + .../codex-rs/core/tests/suite/live_cli.rs | 148 + .../codex-rs/core/tests/suite/live_reload.rs | 153 + .../codex-rs/core/tests/suite/memories.rs | 642 + vendor/codex/codex-rs/core/tests/suite/mod.rs | 113 + .../core/tests/suite/model_overrides.rs | 91 + .../core/tests/suite/model_switching.rs | 1114 + .../core/tests/suite/model_visible_layout.rs | 521 + .../core/tests/suite/models_cache_ttl.rs | 362 + .../core/tests/suite/models_etag_responses.rs | 153 + .../core/tests/suite/openai_file_mcp.rs | 169 + .../codex/codex-rs/core/tests/suite/otel.rs | 1549 ++ .../core/tests/suite/override_updates.rs | 229 + .../core/tests/suite/pending_input.rs | 784 + .../core/tests/suite/permissions_messages.rs | 591 + .../codex-rs/core/tests/suite/personality.rs | 935 + .../core/tests/suite/personality_migration.rs | 338 + .../codex-rs/core/tests/suite/plugins.rs | 444 + .../core/tests/suite/prompt_caching.rs | 1062 + .../core/tests/suite/prompt_debug_tests.rs | 60 + .../core/tests/suite/quota_exceeded.rs | 76 + .../core/tests/suite/realtime_conversation.rs | 3385 +++ .../codex-rs/core/tests/suite/remote_env.rs | 359 + .../core/tests/suite/remote_models.rs | 1290 ++ .../core/tests/suite/request_compression.rs | 117 + .../core/tests/suite/request_permissions.rs | 1878 ++ .../tests/suite/request_permissions_tool.rs | 480 + .../core/tests/suite/request_user_input.rs | 327 + .../suite/responses_api_proxy_headers.rs | 241 + .../codex/codex-rs/core/tests/suite/resume.rs | 467 + .../core/tests/suite/resume_warning.rs | 135 + .../codex/codex-rs/core/tests/suite/review.rs | 949 + .../codex-rs/core/tests/suite/rmcp_client.rs | 2364 +++ .../core/tests/suite/rollout_list_find.rs | 222 + .../tests/suite/safety_check_downgrade.rs | 320 + .../codex-rs/core/tests/suite/search_tool.rs | 1004 + .../core/tests/suite/shell_command.rs | 312 + .../core/tests/suite/shell_serialization.rs | 955 + .../core/tests/suite/shell_snapshot.rs | 718 + .../core/tests/suite/skill_approval.rs | 281 + .../codex/codex-rs/core/tests/suite/skills.rs | 406 + ...t__manual_compact_with_history_shapes.snap | 19 + ...nual_compact_without_prev_user_shapes.snap | 14 + ...__compact__mid_turn_compaction_shapes.snap | 19 + ...mpling_model_switch_compaction_shapes.snap | 26 + ...action_context_window_exceeded_shapes.snap | 12 + ..._compaction_including_incoming_shapes.snap | 26 + ...n_strips_incoming_model_switch_shapes.snap | 27 + ...t_resume_restates_realtime_end_shapes.snap | 21 + ...ompact_restates_realtime_start_shapes.snap | 21 + ...te_manual_compact_with_history_shapes.snap | 17 + ...nual_compact_without_prev_user_shapes.snap | 10 + ..._does_not_restate_realtime_end_shapes.snap | 32 + ...y_reinjects_above_last_summary_shapes.snap | 16 + ...te__remote_mid_turn_compaction_shapes.snap | 18 + ...summary_only_reinjects_context_shapes.snap | 17 + ...action_context_window_exceeded_shapes.snap | 11 + ...te_pre_turn_compaction_failure_shapes.snap | 11 + ..._compaction_including_incoming_shapes.snap | 21 + ...mpaction_restates_realtime_end_shapes.snap | 21 + ...action_restates_realtime_start_shapes.snap | 21 + ...n_strips_incoming_model_switch_shapes.snap | 26 + ...k_followup_turn_trims_context_updates.snap | 23 + ...fork__rollback_past_compaction_shapes.snap | 26 + ...ut_cwd_change_does_not_refresh_agents.snap | 22 + ...ronment_context_includes_one_subagent.snap | 6 + ...onment_context_includes_two_subagents.snap | 6 + ...resume_override_matches_rollout_model.snap | 22 + ...layout_resume_with_personality_change.snap | 25 + ...__model_visible_layout_turn_overrides.snap | 25 + ...ng_input_queued_mail_after_commentary.snap | 17 + ...ing_input_queued_mail_after_reasoning.snap | 17 + ...user_input_no_preempt_after_reasoning.snap | 20 + ...t_thread_selects_many_turns_by_budget.snap | 52 + ...n_is_capped_when_mirrored_to_realtime.snap | 12 + ..._turn_is_sent_to_realtime_when_active.snap | 10 + .../tests/suite/spawn_agent_description.rs | 226 + .../codex-rs/core/tests/suite/sqlite_state.rs | 520 + .../suite/stream_error_allows_next_turn.rs | 130 + .../core/tests/suite/stream_no_completed.rs | 103 + .../tests/suite/subagent_notifications.rs | 714 + .../codex-rs/core/tests/suite/tool_harness.rs | 478 + .../core/tests/suite/tool_parallelism.rs | 420 + .../codex-rs/core/tests/suite/tool_suggest.rs | 143 + .../codex/codex-rs/core/tests/suite/tools.rs | 965 + .../codex-rs/core/tests/suite/truncation.rs | 801 + .../codex-rs/core/tests/suite/turn_state.rs | 147 + .../codex/codex-rs/core/tests/suite/undo.rs | 553 + .../codex-rs/core/tests/suite/unified_exec.rs | 2831 +++ .../tests/suite/unstable_features_warning.rs | 108 + .../core/tests/suite/user_notification.rs | 81 + .../core/tests/suite/user_shell_cmd.rs | 499 + .../codex-rs/core/tests/suite/view_image.rs | 1561 ++ .../codex-rs/core/tests/suite/web_search.rs | 277 + .../core/tests/suite/websocket_fallback.rs | 245 + .../core/tests/suite/window_headers.rs | 148 + vendor/codex/codex-rs/debug-client/Cargo.toml | 18 + vendor/codex/codex-rs/debug-client/README.md | 60 + .../codex/codex-rs/debug-client/src/client.rs | 415 + .../codex-rs/debug-client/src/commands.rs | 156 + .../codex/codex-rs/debug-client/src/main.rs | 310 + .../codex/codex-rs/debug-client/src/output.rs | 175 + .../codex/codex-rs/debug-client/src/reader.rs | 338 + .../codex/codex-rs/debug-client/src/state.rs | 28 + vendor/codex/codex-rs/default.nix | 56 + vendor/codex/codex-rs/deny.toml | 292 + vendor/codex/codex-rs/device-key/BUILD.bazel | 6 + vendor/codex/codex-rs/device-key/Cargo.toml | 20 + vendor/codex/codex-rs/device-key/src/lib.rs | 1374 ++ .../codex/codex-rs/device-key/src/platform.rs | 51 + vendor/codex/codex-rs/docs/bazel.md | 65 + .../codex-rs/docs/codex_mcp_interface.md | 143 + vendor/codex/codex-rs/docs/protocol_v1.md | 196 + vendor/codex/codex-rs/exec-server/BUILD.bazel | 11 + vendor/codex/codex-rs/exec-server/Cargo.toml | 53 + vendor/codex/codex-rs/exec-server/README.md | 349 + .../codex/codex-rs/exec-server/src/client.rs | 1178 ++ .../exec-server/src/client/http_client.rs | 26 + .../src/client/http_response_body_stream.rs | 355 + .../src/client/reqwest_http_client.rs | 267 + .../exec-server/src/client/rpc_http_client.rs | 88 + .../codex-rs/exec-server/src/client_api.rs | 45 + .../codex-rs/exec-server/src/connection.rs | 318 + .../codex-rs/exec-server/src/environment.rs | 475 + .../codex-rs/exec-server/src/file_system.rs | 184 + .../codex-rs/exec-server/src/fs_helper.rs | 300 + .../exec-server/src/fs_helper_main.rs | 45 + .../codex-rs/exec-server/src/fs_sandbox.rs | 635 + vendor/codex/codex-rs/exec-server/src/lib.rs | 89 + .../exec-server/src/local_file_system.rs | 570 + .../codex-rs/exec-server/src/local_process.rs | 748 + .../codex/codex-rs/exec-server/src/process.rs | 238 + .../codex-rs/exec-server/src/process_id.rs | 74 + .../codex-rs/exec-server/src/protocol.rs | 443 + .../exec-server/src/remote_file_system.rs | 305 + .../exec-server/src/remote_process.rs | 92 + vendor/codex/codex-rs/exec-server/src/rpc.rs | 631 + .../codex-rs/exec-server/src/runtime_paths.rs | 43 + .../exec-server/src/sandboxed_file_system.rs | 240 + .../codex/codex-rs/exec-server/src/server.rs | 20 + .../src/server/file_system_handler.rs | 237 + .../exec-server/src/server/handler.rs | 347 + .../exec-server/src/server/handler/tests.rs | 352 + .../exec-server/src/server/jsonrpc.rs | 53 + .../exec-server/src/server/process_handler.rs | 58 + .../exec-server/src/server/processor.rs | 418 + .../exec-server/src/server/registry.rs | 118 + .../src/server/session_registry.rs | 259 + .../exec-server/src/server/transport.rs | 94 + .../exec-server/src/server/transport_tests.rs | 50 + .../exec-server/tests/common/exec_server.rs | 261 + .../codex-rs/exec-server/tests/common/mod.rs | 123 + .../exec-server/tests/exec_process.rs | 623 + .../codex-rs/exec-server/tests/file_system.rs | 1125 + .../codex-rs/exec-server/tests/http_client.rs | 1119 + .../exec-server/tests/http_request.rs | 568 + .../codex-rs/exec-server/tests/initialize.rs | 36 + .../codex-rs/exec-server/tests/process.rs | 307 + .../codex-rs/exec-server/tests/websocket.rs | 62 + vendor/codex/codex-rs/exec/BUILD.bazel | 7 + vendor/codex/codex-rs/exec/Cargo.toml | 75 + vendor/codex/codex-rs/exec/src/cli.rs | 285 + vendor/codex/codex-rs/exec/src/cli_tests.rs | 72 + .../codex-rs/exec/src/event_processor.rs | 48 + .../src/event_processor_with_human_output.rs | 568 + ...event_processor_with_human_output_tests.rs | 361 + .../src/event_processor_with_jsonl_output.rs | 625 + ...event_processor_with_jsonl_output_tests.rs | 57 + vendor/codex/codex-rs/exec/src/exec_events.rs | 312 + vendor/codex/codex-rs/exec/src/lib.rs | 1799 ++ vendor/codex/codex-rs/exec/src/lib_tests.rs | 444 + vendor/codex/codex-rs/exec/src/main.rs | 45 + vendor/codex/codex-rs/exec/src/main_tests.rs | 37 + vendor/codex/codex-rs/exec/tests/all.rs | 5 + .../tests/event_processor_with_json_output.rs | 1611 ++ .../fixtures/apply_patch_freeform_final.txt | 4 + .../tests/fixtures/cli_responses_fixture.sse | 10 + .../codex-rs/exec/tests/suite/add_dir.rs | 72 + .../codex-rs/exec/tests/suite/apply_patch.rs | 150 + .../codex-rs/exec/tests/suite/auth_env.rs | 31 + .../codex-rs/exec/tests/suite/ephemeral.rs | 53 + .../exec/tests/suite/mcp_required_exit.rs | 38 + vendor/codex/codex-rs/exec/tests/suite/mod.rs | 12 + .../codex-rs/exec/tests/suite/originator.rs | 54 + .../exec/tests/suite/output_schema.rs | 62 + .../codex-rs/exec/tests/suite/prompt_stdin.rs | 171 + .../codex/codex-rs/exec/tests/suite/resume.rs | 544 + .../codex-rs/exec/tests/suite/sandbox.rs | 564 + .../exec/tests/suite/server_error_exit.rs | 33 + .../codex-rs/execpolicy-legacy/BUILD.bazel | 7 + .../codex-rs/execpolicy-legacy/Cargo.toml | 35 + .../codex-rs/execpolicy-legacy/README.md | 183 + .../codex/codex-rs/execpolicy-legacy/build.rs | 3 + .../execpolicy-legacy/src/arg_matcher.rs | 118 + .../execpolicy-legacy/src/arg_resolver.rs | 204 + .../execpolicy-legacy/src/arg_type.rs | 87 + .../execpolicy-legacy/src/default.policy | 202 + .../codex-rs/execpolicy-legacy/src/error.rs | 96 + .../execpolicy-legacy/src/exec_call.rs | 28 + .../execpolicy-legacy/src/execv_checker.rs | 295 + .../codex-rs/execpolicy-legacy/src/lib.rs | 45 + .../codex-rs/execpolicy-legacy/src/main.rs | 169 + .../codex-rs/execpolicy-legacy/src/opt.rs | 77 + .../codex-rs/execpolicy-legacy/src/policy.rs | 103 + .../execpolicy-legacy/src/policy_parser.rs | 226 + .../codex-rs/execpolicy-legacy/src/program.rs | 247 + .../execpolicy-legacy/src/sed_command.rs | 17 + .../execpolicy-legacy/src/valid_exec.rs | 95 + .../codex-rs/execpolicy-legacy/tests/all.rs | 3 + .../execpolicy-legacy/tests/suite/bad.rs | 9 + .../execpolicy-legacy/tests/suite/cp.rs | 86 + .../execpolicy-legacy/tests/suite/good.rs | 9 + .../execpolicy-legacy/tests/suite/head.rs | 136 + .../execpolicy-legacy/tests/suite/literal.rs | 54 + .../execpolicy-legacy/tests/suite/ls.rs | 175 + .../execpolicy-legacy/tests/suite/mod.rs | 10 + .../tests/suite/parse_sed_command.rs | 23 + .../execpolicy-legacy/tests/suite/pwd.rs | 86 + .../execpolicy-legacy/tests/suite/sed.rs | 91 + vendor/codex/codex-rs/execpolicy/BUILD.bazel | 6 + vendor/codex/codex-rs/execpolicy/Cargo.toml | 32 + vendor/codex/codex-rs/execpolicy/README.md | 98 + .../execpolicy/examples/example.codexpolicy | 78 + vendor/codex/codex-rs/execpolicy/src/amend.rs | 337 + .../codex/codex-rs/execpolicy/src/decision.rs | 27 + vendor/codex/codex-rs/execpolicy/src/error.rs | 101 + .../execpolicy/src/execpolicycheck.rs | 95 + .../execpolicy/src/executable_name.rs | 29 + vendor/codex/codex-rs/execpolicy/src/lib.rs | 30 + vendor/codex/codex-rs/execpolicy/src/main.rs | 18 + .../codex/codex-rs/execpolicy/src/parser.rs | 472 + .../codex/codex-rs/execpolicy/src/policy.rs | 375 + vendor/codex/codex-rs/execpolicy/src/rule.rs | 306 + .../codex/codex-rs/execpolicy/tests/basic.rs | 963 + vendor/codex/codex-rs/features/BUILD.bazel | 16 + vendor/codex/codex-rs/features/Cargo.toml | 24 + .../codex-rs/features/src/feature_configs.rs | 23 + vendor/codex/codex-rs/features/src/legacy.rs | 129 + vendor/codex/codex-rs/features/src/lib.rs | 1064 + vendor/codex/codex-rs/features/src/tests.rs | 451 + vendor/codex/codex-rs/feedback/BUILD.bazel | 6 + vendor/codex/codex-rs/feedback/Cargo.toml | 19 + .../feedback/src/feedback_diagnostics.rs | 179 + vendor/codex/codex-rs/feedback/src/lib.rs | 801 + vendor/codex/codex-rs/file-search/BUILD.bazel | 6 + vendor/codex/codex-rs/file-search/Cargo.toml | 30 + vendor/codex/codex-rs/file-search/README.md | 5 + vendor/codex/codex-rs/file-search/src/cli.rs | 42 + vendor/codex/codex-rs/file-search/src/lib.rs | 1187 ++ vendor/codex/codex-rs/file-search/src/main.rs | 83 + vendor/codex/codex-rs/git-utils/BUILD.bazel | 6 + vendor/codex/codex-rs/git-utils/Cargo.toml | 36 + vendor/codex/codex-rs/git-utils/README.md | 37 + vendor/codex/codex-rs/git-utils/src/apply.rs | 847 + .../codex/codex-rs/git-utils/src/baseline.rs | 645 + vendor/codex/codex-rs/git-utils/src/branch.rs | 256 + vendor/codex/codex-rs/git-utils/src/errors.rs | 35 + .../codex-rs/git-utils/src/ghost_commits.rs | 1786 ++ vendor/codex/codex-rs/git-utils/src/info.rs | 726 + vendor/codex/codex-rs/git-utils/src/lib.rs | 52 + .../codex-rs/git-utils/src/operations.rs | 239 + .../codex/codex-rs/git-utils/src/platform.rs | 37 + vendor/codex/codex-rs/hooks/BUILD.bazel | 11 + vendor/codex/codex-rs/hooks/Cargo.toml | 31 + ...rmission-request.command.input.schema.json | 78 + ...mission-request.command.output.schema.json | 101 + .../post-tool-use.command.input.schema.json | 81 + .../post-tool-use.command.output.schema.json | 82 + .../pre-tool-use.command.input.schema.json | 79 + .../pre-tool-use.command.output.schema.json | 103 + .../session-start.command.input.schema.json | 59 + .../session-start.command.output.schema.json | 61 + .../generated/stop.command.input.schema.json | 63 + .../generated/stop.command.output.schema.json | 45 + ...er-prompt-submit.command.input.schema.json | 59 + ...r-prompt-submit.command.output.schema.json | 79 + .../src/bin/write_hooks_schema_fixtures.rs | 9 + .../hooks/src/engine/command_runner.rs | 135 + .../codex/codex-rs/hooks/src/engine/config.rs | 50 + .../codex-rs/hooks/src/engine/discovery.rs | 385 + .../codex-rs/hooks/src/engine/dispatcher.rs | 407 + vendor/codex/codex-rs/hooks/src/engine/mod.rs | 172 + .../hooks/src/engine/output_parser.rs | 494 + .../hooks/src/engine/schema_loader.rs | 102 + .../codex/codex-rs/hooks/src/events/common.rs | 254 + vendor/codex/codex-rs/hooks/src/events/mod.rs | 7 + .../hooks/src/events/permission_request.rs | 334 + .../hooks/src/events/post_tool_use.rs | 585 + .../codex-rs/hooks/src/events/pre_tool_use.rs | 573 + .../hooks/src/events/session_start.rs | 380 + .../codex/codex-rs/hooks/src/events/stop.rs | 547 + .../hooks/src/events/user_prompt_submit.rs | 438 + .../codex/codex-rs/hooks/src/legacy_notify.rs | 149 + vendor/codex/codex-rs/hooks/src/lib.rs | 37 + vendor/codex/codex-rs/hooks/src/registry.rs | 179 + vendor/codex/codex-rs/hooks/src/schema.rs | 745 + vendor/codex/codex-rs/hooks/src/types.rs | 292 + .../codex-rs/hooks/src/user_notification.rs | 153 + .../codex-rs/install-context/BUILD.bazel | 6 + .../codex/codex-rs/install-context/Cargo.toml | 19 + .../codex/codex-rs/install-context/src/lib.rs | 258 + .../codex/codex-rs/keyring-store/BUILD.bazel | 6 + .../codex/codex-rs/keyring-store/Cargo.toml | 24 + .../codex/codex-rs/keyring-store/src/lib.rs | 226 + .../codex/codex-rs/linux-sandbox/BUILD.bazel | 36 + .../codex/codex-rs/linux-sandbox/Cargo.toml | 46 + vendor/codex/codex-rs/linux-sandbox/README.md | 97 + vendor/codex/codex-rs/linux-sandbox/build.rs | 111 + vendor/codex/codex-rs/linux-sandbox/config.h | 3 + .../codex/codex-rs/linux-sandbox/src/bwrap.rs | 2021 ++ .../codex-rs/linux-sandbox/src/landlock.rs | 343 + .../codex-rs/linux-sandbox/src/launcher.rs | 226 + .../codex/codex-rs/linux-sandbox/src/lib.rs | 27 + .../linux-sandbox/src/linux_run_main.rs | 744 + .../linux-sandbox/src/linux_run_main_tests.rs | 538 + .../codex/codex-rs/linux-sandbox/src/main.rs | 6 + .../linux-sandbox/src/proxy_routing.rs | 797 + .../linux-sandbox/src/vendored_bwrap.rs | 78 + .../codex/codex-rs/linux-sandbox/tests/all.rs | 3 + .../linux-sandbox/tests/suite/landlock.rs | 775 + .../tests/suite/managed_proxy.rs | 312 + .../codex-rs/linux-sandbox/tests/suite/mod.rs | 3 + vendor/codex/codex-rs/lmstudio/BUILD.bazel | 6 + vendor/codex/codex-rs/lmstudio/Cargo.toml | 26 + vendor/codex/codex-rs/lmstudio/src/client.rs | 397 + vendor/codex/codex-rs/lmstudio/src/lib.rs | 46 + vendor/codex/codex-rs/login/BUILD.bazel | 10 + vendor/codex/codex-rs/login/Cargo.toml | 53 + .../codex-rs/login/src/assets/error.html | 122 + .../codex-rs/login/src/assets/success.html | 198 + .../codex-rs/login/src/auth/agent_identity.rs | 84 + .../codex-rs/login/src/auth/auth_tests.rs | 830 + .../codex-rs/login/src/auth/default_client.rs | 257 + .../login/src/auth/default_client_tests.rs | 125 + vendor/codex/codex-rs/login/src/auth/error.rs | 2 + .../login/src/auth/external_bearer.rs | 174 + .../codex/codex-rs/login/src/auth/manager.rs | 1811 ++ vendor/codex/codex-rs/login/src/auth/mod.rs | 13 + .../codex/codex-rs/login/src/auth/revoke.rs | 209 + .../codex/codex-rs/login/src/auth/storage.rs | 336 + .../codex-rs/login/src/auth/storage_tests.rs | 450 + vendor/codex/codex-rs/login/src/auth/util.rs | 45 + .../codex-rs/login/src/auth_env_telemetry.rs | 89 + .../codex-rs/login/src/device_code_auth.rs | 228 + vendor/codex/codex-rs/login/src/lib.rs | 47 + vendor/codex/codex-rs/login/src/pkce.rs | 27 + vendor/codex/codex-rs/login/src/server.rs | 1239 ++ vendor/codex/codex-rs/login/src/token_data.rs | 180 + .../codex-rs/login/src/token_data_tests.rs | 178 + vendor/codex/codex-rs/login/tests/all.rs | 3 + .../login/tests/suite/auth_refresh.rs | 1091 + .../login/tests/suite/device_code_login.rs | 333 + .../login/tests/suite/login_server_e2e.rs | 464 + .../codex-rs/login/tests/suite/logout.rs | 234 + .../codex/codex-rs/login/tests/suite/mod.rs | 5 + vendor/codex/codex-rs/mcp-server/BUILD.bazel | 6 + vendor/codex/codex-rs/mcp-server/Cargo.toml | 53 + .../mcp-server/src/codex_tool_config.rs | 434 + .../mcp-server/src/codex_tool_runner.rs | 443 + .../codex-rs/mcp-server/src/exec_approval.rs | 147 + vendor/codex/codex-rs/mcp-server/src/lib.rs | 240 + vendor/codex/codex-rs/mcp-server/src/main.rs | 11 + .../mcp-server/src/message_processor.rs | 607 + .../mcp-server/src/outgoing_message.rs | 473 + .../codex-rs/mcp-server/src/patch_approval.rs | 142 + .../mcp-server/src/tool_handlers/mod.rs | 2 + vendor/codex/codex-rs/mcp-server/tests/all.rs | 3 + .../mcp-server/tests/common/BUILD.bazel | 7 + .../mcp-server/tests/common/Cargo.toml | 32 + .../codex-rs/mcp-server/tests/common/lib.rs | 22 + .../mcp-server/tests/common/mcp_process.rs | 400 + .../tests/common/mock_model_server.rs | 47 + .../mcp-server/tests/common/responses.rs | 47 + .../mcp-server/tests/suite/codex_tool.rs | 524 + .../codex-rs/mcp-server/tests/suite/mod.rs | 1 + .../codex-rs/model-provider-info/BUILD.bazel | 6 + .../codex-rs/model-provider-info/Cargo.toml | 28 + .../codex-rs/model-provider-info/src/lib.rs | 510 + .../src/model_provider_info_tests.rs | 440 + .../codex/codex-rs/model-provider/BUILD.bazel | 6 + .../codex/codex-rs/model-provider/Cargo.toml | 26 + .../model-provider/src/amazon_bedrock/auth.rs | 211 + .../src/amazon_bedrock/mantle.rs | 101 + .../model-provider/src/amazon_bedrock/mod.rs | 73 + .../codex/codex-rs/model-provider/src/auth.rs | 64 + .../src/bearer_auth_provider.rs | 102 + .../codex/codex-rs/model-provider/src/lib.rs | 10 + .../codex-rs/model-provider/src/provider.rs | 158 + .../codex/codex-rs/models-manager/BUILD.bazel | 10 + .../codex/codex-rs/models-manager/Cargo.toml | 45 + .../codex/codex-rs/models-manager/models.json | 411 + .../codex/codex-rs/models-manager/prompt.md | 275 + .../codex-rs/models-manager/src/cache.rs | 183 + .../src/collaboration_mode_presets.rs | 115 + .../src/collaboration_mode_presets_tests.rs | 53 + .../codex-rs/models-manager/src/config.rs | 12 + .../codex/codex-rs/models-manager/src/lib.rs | 29 + .../codex-rs/models-manager/src/manager.rs | 606 + .../models-manager/src/manager_tests.rs | 878 + .../codex-rs/models-manager/src/model_info.rs | 121 + .../src/model_info_overrides_tests.rs | 54 + .../models-manager/src/model_info_tests.rs | 74 + .../models-manager/src/model_presets.rs | 6 + .../codex/codex-rs/network-proxy/BUILD.bazel | 6 + .../codex/codex-rs/network-proxy/Cargo.toml | 43 + vendor/codex/codex-rs/network-proxy/README.md | 219 + .../codex/codex-rs/network-proxy/src/certs.rs | 344 + .../codex-rs/network-proxy/src/config.rs | 869 + .../codex-rs/network-proxy/src/http_proxy.rs | 1319 ++ .../codex/codex-rs/network-proxy/src/lib.rs | 62 + .../codex/codex-rs/network-proxy/src/mitm.rs | 482 + .../codex-rs/network-proxy/src/mitm_tests.rs | 128 + .../network-proxy/src/network_policy.rs | 898 + .../codex-rs/network-proxy/src/policy.rs | 465 + .../codex/codex-rs/network-proxy/src/proxy.rs | 1182 ++ .../codex-rs/network-proxy/src/reasons.rs | 8 + .../codex-rs/network-proxy/src/responses.rs | 118 + .../codex-rs/network-proxy/src/runtime.rs | 1776 ++ .../codex-rs/network-proxy/src/socks5.rs | 616 + .../codex/codex-rs/network-proxy/src/state.rs | 419 + .../codex-rs/network-proxy/src/upstream.rs | 190 + vendor/codex/codex-rs/node-version.txt | 1 + vendor/codex/codex-rs/ollama/BUILD.bazel | 6 + vendor/codex/codex-rs/ollama/Cargo.toml | 35 + vendor/codex/codex-rs/ollama/src/client.rs | 414 + vendor/codex/codex-rs/ollama/src/lib.rs | 97 + vendor/codex/codex-rs/ollama/src/parser.rs | 75 + vendor/codex/codex-rs/ollama/src/pull.rs | 147 + vendor/codex/codex-rs/ollama/src/url.rs | 39 + vendor/codex/codex-rs/otel/BUILD.bazel | 7 + vendor/codex/codex-rs/otel/Cargo.toml | 66 + vendor/codex/codex-rs/otel/README.md | 141 + vendor/codex/codex-rs/otel/src/config.rs | 94 + vendor/codex/codex-rs/otel/src/events/mod.rs | 2 + .../otel/src/events/session_telemetry.rs | 1098 + .../codex/codex-rs/otel/src/events/shared.rs | 60 + vendor/codex/codex-rs/otel/src/lib.rs | 67 + .../codex/codex-rs/otel/src/metrics/client.rs | 406 + .../codex/codex-rs/otel/src/metrics/config.rs | 83 + .../codex/codex-rs/otel/src/metrics/error.rs | 46 + vendor/codex/codex-rs/otel/src/metrics/mod.rs | 27 + .../codex/codex-rs/otel/src/metrics/names.rs | 45 + .../otel/src/metrics/runtime_metrics.rs | 216 + .../codex/codex-rs/otel/src/metrics/tags.rs | 108 + .../codex/codex-rs/otel/src/metrics/timer.rs | 41 + .../codex-rs/otel/src/metrics/validation.rs | 55 + vendor/codex/codex-rs/otel/src/otlp.rs | 272 + vendor/codex/codex-rs/otel/src/provider.rs | 466 + vendor/codex/codex-rs/otel/src/targets.rs | 11 + .../codex/codex-rs/otel/src/trace_context.rs | 176 + .../codex/codex-rs/otel/tests/harness/mod.rs | 81 + .../otel/tests/suite/manager_metrics.rs | 163 + vendor/codex/codex-rs/otel/tests/suite/mod.rs | 8 + .../tests/suite/otel_export_routing_policy.rs | 852 + .../otel/tests/suite/otlp_http_loopback.rs | 561 + .../otel/tests/suite/runtime_summary.rs | 143 + .../codex/codex-rs/otel/tests/suite/send.rs | 217 + .../codex-rs/otel/tests/suite/snapshot.rs | 125 + .../codex/codex-rs/otel/tests/suite/timing.rs | 77 + .../codex-rs/otel/tests/suite/validation.rs | 91 + vendor/codex/codex-rs/otel/tests/tests.rs | 2 + vendor/codex/codex-rs/plugin/BUILD.bazel | 15 + vendor/codex/codex-rs/plugin/Cargo.toml | 18 + vendor/codex/codex-rs/plugin/src/lib.rs | 54 + .../codex/codex-rs/plugin/src/load_outcome.rs | 162 + vendor/codex/codex-rs/plugin/src/plugin_id.rs | 64 + .../codex-rs/plugin/src/plugin_namespace.rs | 70 + .../codex-rs/process-hardening/BUILD.bazel | 6 + .../codex-rs/process-hardening/Cargo.toml | 18 + .../codex-rs/process-hardening/README.md | 8 + .../codex-rs/process-hardening/src/lib.rs | 189 + vendor/codex/codex-rs/protocol/BUILD.bazel | 7 + vendor/codex/codex-rs/protocol/Cargo.toml | 62 + vendor/codex/codex-rs/protocol/README.md | 7 + vendor/codex/codex-rs/protocol/src/account.rs | 87 + .../codex/codex-rs/protocol/src/agent_path.rs | 240 + .../codex/codex-rs/protocol/src/approvals.rs | 442 + vendor/codex/codex-rs/protocol/src/auth.rs | 120 + .../codex-rs/protocol/src/config_types.rs | 702 + .../codex-rs/protocol/src/dynamic_tools.rs | 139 + vendor/codex/codex-rs/protocol/src/error.rs | 631 + .../codex-rs/protocol/src/error_tests.rs | 547 + .../codex-rs/protocol/src/exec_output.rs | 169 + .../protocol/src/exec_output_tests.rs | 77 + vendor/codex/codex-rs/protocol/src/items.rs | 449 + vendor/codex/codex-rs/protocol/src/lib.rs | 28 + vendor/codex/codex-rs/protocol/src/mcp.rs | 360 + .../codex-rs/protocol/src/memory_citation.rs | 20 + .../codex-rs/protocol/src/message_history.rs | 11 + vendor/codex/codex-rs/protocol/src/models.rs | 2398 +++ .../codex-rs/protocol/src/network_policy.rs | 22 + .../codex/codex-rs/protocol/src/num_format.rs | 103 + .../codex-rs/protocol/src/openai_models.rs | 832 + .../codex-rs/protocol/src/parse_command.rs | 31 + .../codex-rs/protocol/src/permissions.rs | 2454 +++ .../codex/codex-rs/protocol/src/plan_tool.rs | 29 + .../src/prompts/base_instructions/default.md | 275 + .../codex/codex-rs/protocol/src/protocol.rs | 5750 +++++ .../protocol/src/request_permissions.rs | 80 + .../protocol/src/request_user_input.rs | 55 + .../codex/codex-rs/protocol/src/thread_id.rs | 103 + .../codex/codex-rs/protocol/src/tool_name.rs | 62 + .../codex/codex-rs/protocol/src/user_input.rs | 109 + .../codex-rs/realtime-webrtc/BUILD.bazel | 7 + .../codex/codex-rs/realtime-webrtc/Cargo.toml | 19 + .../codex/codex-rs/realtime-webrtc/src/lib.rs | 90 + .../codex-rs/realtime-webrtc/src/native.rs | 227 + .../response-debug-context/BUILD.bazel | 6 + .../response-debug-context/Cargo.toml | 22 + .../response-debug-context/src/lib.rs | 165 + .../codex-rs/responses-api-proxy/BUILD.bazel | 6 + .../codex-rs/responses-api-proxy/Cargo.toml | 31 + .../codex-rs/responses-api-proxy/README.md | 110 + .../responses-api-proxy/npm/README.md | 13 + .../npm/bin/codex-responses-api-proxy.js | 97 + .../responses-api-proxy/npm/package.json | 22 + .../codex-rs/responses-api-proxy/src/dump.rs | 378 + .../codex-rs/responses-api-proxy/src/lib.rs | 275 + .../codex-rs/responses-api-proxy/src/main.rs | 12 + .../responses-api-proxy/src/read_api_key.rs | 342 + vendor/codex/codex-rs/rmcp-client/BUILD.bazel | 9 + vendor/codex/codex-rs/rmcp-client/Cargo.toml | 78 + .../codex-rs/rmcp-client/src/auth_status.rs | 373 + .../rmcp-client/src/bin/rmcp_test_server.rs | 161 + .../rmcp-client/src/bin/test_stdio_server.rs | 768 + .../src/bin/test_streamable_http_server.rs | 440 + .../src/elicitation_client_service.rs | 221 + .../src/executor_process_transport.rs | 376 + .../rmcp-client/src/http_client_adapter.rs | 391 + vendor/codex/codex-rs/rmcp-client/src/lib.rs | 37 + .../rmcp-client/src/logging_client_handler.rs | 136 + .../codex/codex-rs/rmcp-client/src/oauth.rs | 913 + .../rmcp-client/src/perform_oauth_login.rs | 656 + .../rmcp-client/src/program_resolver.rs | 238 + .../codex-rs/rmcp-client/src/rmcp_client.rs | 1009 + .../rmcp-client/src/stdio_server_launcher.rs | 537 + .../codex/codex-rs/rmcp-client/src/utils.rs | 335 + .../tests/process_group_cleanup.rs | 96 + .../codex-rs/rmcp-client/tests/resources.rs | 154 + .../tests/streamable_http_recovery.rs | 91 + .../tests/streamable_http_remote.rs | 37 + .../tests/streamable_http_test_support.rs | 314 + .../codex/codex-rs/rollout-trace/BUILD.bazel | 6 + .../codex/codex-rs/rollout-trace/Cargo.toml | 25 + vendor/codex/codex-rs/rollout-trace/README.md | 203 + .../codex-rs/rollout-trace/src/bundle.rs | 49 + .../codex-rs/rollout-trace/src/compaction.rs | 279 + .../codex-rs/rollout-trace/src/inference.rs | 369 + .../codex/codex-rs/rollout-trace/src/lib.rs | 58 + .../rollout-trace/src/model/conversation.rs | 176 + .../codex-rs/rollout-trace/src/model/mod.rs | 121 + .../rollout-trace/src/model/runtime.rs | 331 + .../rollout-trace/src/model/session.rs | 110 + .../codex-rs/rollout-trace/src/payload.rs | 49 + .../codex-rs/rollout-trace/src/raw_event.rs | 285 + .../codex-rs/rollout-trace/src/recorder.rs | 228 + .../rollout-trace/src/recorder_tests.rs | 162 + .../rollout-trace/src/reducer/code_cell.rs | 738 + .../src/reducer/code_cell_tests.rs | 423 + .../rollout-trace/src/reducer/compaction.rs | 183 + .../rollout-trace/src/reducer/conversation.rs | 700 + .../src/reducer/conversation/normalize.rs | 446 + .../src/reducer/conversation_tests.rs | 808 + .../rollout-trace/src/reducer/inference.rs | 143 + .../codex-rs/rollout-trace/src/reducer/mod.rs | 504 + .../rollout-trace/src/reducer/test_support.rs | 200 + .../rollout-trace/src/reducer/thread.rs | 264 + .../rollout-trace/src/reducer/tool.rs | 500 + .../rollout-trace/src/reducer/tool/agents.rs | 621 + .../src/reducer/tool/agents_tests.rs | 717 + .../src/reducer/tool/terminal.rs | 606 + .../src/reducer/tool/terminal_tests.rs | 580 + .../codex-rs/rollout-trace/src/writer.rs | 264 + vendor/codex/codex-rs/rollout/BUILD.bazel | 6 + vendor/codex/codex-rs/rollout/Cargo.toml | 49 + vendor/codex/codex-rs/rollout/src/config.rs | 100 + vendor/codex/codex-rs/rollout/src/lib.rs | 67 + vendor/codex/codex-rs/rollout/src/list.rs | 1345 ++ vendor/codex/codex-rs/rollout/src/metadata.rs | 445 + .../codex-rs/rollout/src/metadata_tests.rs | 387 + vendor/codex/codex-rs/rollout/src/policy.rs | 227 + vendor/codex/codex-rs/rollout/src/recorder.rs | 1892 ++ .../codex-rs/rollout/src/recorder_tests.rs | 977 + .../codex-rs/rollout/src/session_index.rs | 263 + .../rollout/src/session_index_tests.rs | 310 + vendor/codex/codex-rs/rollout/src/state_db.rs | 549 + .../codex-rs/rollout/src/state_db_tests.rs | 24 + vendor/codex/codex-rs/rollout/src/tests.rs | 1525 ++ vendor/codex/codex-rs/rust-toolchain.toml | 3 + vendor/codex/codex-rs/rustfmt.toml | 4 + vendor/codex/codex-rs/sandboxing/BUILD.bazel | 11 + vendor/codex/codex-rs/sandboxing/Cargo.toml | 31 + vendor/codex/codex-rs/sandboxing/src/bwrap.rs | 136 + .../codex-rs/sandboxing/src/bwrap_tests.rs | 148 + .../codex/codex-rs/sandboxing/src/landlock.rs | 117 + .../codex-rs/sandboxing/src/landlock_tests.rs | 101 + vendor/codex/codex-rs/sandboxing/src/lib.rs | 47 + .../codex/codex-rs/sandboxing/src/manager.rs | 313 + .../codex-rs/sandboxing/src/manager_tests.rs | 357 + .../sandboxing/src/policy_transforms.rs | 689 + .../sandboxing/src/policy_transforms_tests.rs | 986 + ...estricted_read_only_platform_defaults.sbpl | 199 + .../codex/codex-rs/sandboxing/src/seatbelt.rs | 721 + .../sandboxing/src/seatbelt_base_policy.sbpl | 122 + .../src/seatbelt_network_policy.sbpl | 35 + .../codex-rs/sandboxing/src/seatbelt_tests.rs | 1369 ++ .../codex/codex-rs/scripts/setup-windows.ps1 | 246 + vendor/codex/codex-rs/secrets/BUILD.bazel | 6 + vendor/codex/codex-rs/secrets/Cargo.toml | 27 + vendor/codex/codex-rs/secrets/src/lib.rs | 230 + vendor/codex/codex-rs/secrets/src/local.rs | 411 + .../codex/codex-rs/secrets/src/sanitizer.rs | 41 + .../codex/codex-rs/shell-command/BUILD.bazel | 7 + .../codex/codex-rs/shell-command/Cargo.toml | 26 + .../codex/codex-rs/shell-command/src/bash.rs | 590 + .../command_safety/is_dangerous_command.rs | 184 + .../src/command_safety/is_safe_command.rs | 633 + .../shell-command/src/command_safety/mod.rs | 5 + .../src/command_safety/powershell_parser.ps1 | 257 + .../src/command_safety/powershell_parser.rs | 289 + .../windows_dangerous_commands.rs | 755 + .../command_safety/windows_safe_commands.rs | 554 + .../codex/codex-rs/shell-command/src/lib.rs | 11 + .../shell-command/src/parse_command.rs | 2526 +++ .../codex-rs/shell-command/src/powershell.rs | 189 + .../shell-command/src/shell_detect.rs | 32 + .../codex-rs/shell-escalation/BUILD.bazel | 6 + .../codex-rs/shell-escalation/Cargo.toml | 39 + .../codex/codex-rs/shell-escalation/README.md | 29 + .../patches/zsh-exec-wrapper.patch | 34 + .../src/bin/main_execve_wrapper.rs | 8 + .../codex-rs/shell-escalation/src/lib.rs | 35 + .../src/unix/escalate_client.rs | 144 + .../src/unix/escalate_protocol.rs | 88 + .../src/unix/escalate_server.rs | 1062 + .../src/unix/escalation_policy.rs | 14 + .../src/unix/execve_wrapper.rs | 25 + .../codex-rs/shell-escalation/src/unix/mod.rs | 79 + .../shell-escalation/src/unix/socket.rs | 523 + .../shell-escalation/src/unix/stopwatch.rs | 237 + vendor/codex/codex-rs/skills/BUILD.bazel | 15 + vendor/codex/codex-rs/skills/Cargo.toml | 19 + vendor/codex/codex-rs/skills/build.rs | 27 + .../src/assets/samples/imagegen/LICENSE.txt | 201 + .../src/assets/samples/imagegen/SKILL.md | 356 + .../samples/imagegen/agents/openai.yaml | 6 + .../imagegen/assets/imagegen-small.svg | 5 + .../samples/imagegen/assets/imagegen.png | Bin 0 -> 1711 bytes .../assets/samples/imagegen/references/cli.md | 242 + .../imagegen/references/codex-network.md | 33 + .../samples/imagegen/references/image-api.md | 90 + .../samples/imagegen/references/prompting.md | 118 + .../imagegen/references/sample-prompts.md | 433 + .../samples/imagegen/scripts/image_gen.py | 995 + .../imagegen/scripts/remove_chroma_key.py | 440 + .../assets/samples/openai-docs/LICENSE.txt | 201 + .../src/assets/samples/openai-docs/SKILL.md | 82 + .../samples/openai-docs/agents/openai.yaml | 14 + .../openai-docs/assets/openai-small.svg | 3 + .../samples/openai-docs/assets/openai.png | Bin 0 -> 1429 bytes .../openai-docs/references/latest-model.md | 30 + .../openai-docs/references/prompting-guide.md | 599 + .../openai-docs/references/upgrade-guide.md | 172 + .../scripts/resolve-latest-model-info.js | 147 + .../assets/samples/plugin-creator/SKILL.md | 160 + .../samples/plugin-creator/agents/openai.yaml | 6 + .../assets/plugin-creator-small.svg | 3 + .../plugin-creator/assets/plugin-creator.png | Bin 0 -> 1563 bytes .../references/plugin-json-spec.md | 170 + .../scripts/create_basic_plugin.py | 301 + .../src/assets/samples/skill-creator/SKILL.md | 416 + .../samples/skill-creator/agents/openai.yaml | 5 + .../assets/skill-creator-small.svg | 3 + .../skill-creator/assets/skill-creator.png | Bin 0 -> 1563 bytes .../assets/samples/skill-creator/license.txt | 202 + .../skill-creator/references/openai_yaml.md | 49 + .../scripts/generate_openai_yaml.py | 226 + .../skill-creator/scripts/init_skill.py | 400 + .../skill-creator/scripts/quick_validate.py | 101 + .../samples/skill-installer/LICENSE.txt | 202 + .../assets/samples/skill-installer/SKILL.md | 58 + .../skill-installer/agents/openai.yaml | 5 + .../assets/skill-installer-small.svg | 3 + .../assets/skill-installer.png | Bin 0 -> 1086 bytes .../skill-installer/scripts/github_utils.py | 21 + .../scripts/install-skill-from-github.py | 308 + .../skill-installer/scripts/list-skills.py | 107 + vendor/codex/codex-rs/skills/src/lib.rs | 169 + vendor/codex/codex-rs/state/BUILD.bazel | 7 + vendor/codex/codex-rs/state/Cargo.toml | 29 + .../state/logs_migrations/0001_logs.sql | 21 + .../0002_logs_feedback_log_body.sql | 53 + .../state/migrations/0001_threads.sql | 25 + .../codex-rs/state/migrations/0002_logs.sql | 13 + .../state/migrations/0003_logs_thread_id.sql | 3 + .../migrations/0004_thread_dynamic_tools.sql | 11 + .../migrations/0005_threads_cli_version.sql | 1 + .../state/migrations/0006_memories.sql | 31 + .../0007_threads_first_user_message.sql | 5 + .../state/migrations/0008_backfill_state.sql | 17 + .../0009_stage1_outputs_rollout_slug.sql | 2 + .../state/migrations/0010_logs_process_id.sql | 3 + .../0011_logs_partition_prune_indexes.sql | 4 + .../migrations/0012_logs_estimated_bytes.sql | 9 + .../0013_threads_agent_nickname.sql | 2 + .../state/migrations/0014_agent_jobs.sql | 38 + .../0015_agent_jobs_max_runtime_seconds.sql | 2 + .../state/migrations/0016_memory_usage.sql | 2 + .../migrations/0017_phase2_selection_flag.sql | 2 + .../0018_phase2_selection_snapshot.sql | 3 + ...019_thread_dynamic_tools_defer_loading.sql | 2 + .../0020_threads_model_reasoning_effort.sql | 2 + .../migrations/0021_thread_spawn_edges.sql | 8 + .../migrations/0022_threads_agent_path.sql | 1 + .../state/migrations/0023_drop_logs.sql | 3 + .../0024_remote_control_enrollments.sql | 10 + .../0025_thread_timestamps_millis.sql | 112 + .../0026_thread_dynamic_tools_namespace.sql | 2 + .../0027_threads_cwd_sort_indexes.sql | 2 + .../codex-rs/state/src/bin/logs_client.rs | 416 + vendor/codex/codex-rs/state/src/extract.rs | 473 + vendor/codex/codex-rs/state/src/lib.rs | 70 + vendor/codex/codex-rs/state/src/log_db.rs | 526 + vendor/codex/codex-rs/state/src/migrations.rs | 29 + .../codex-rs/state/src/model/agent_job.rs | 256 + .../state/src/model/backfill_state.rs | 73 + .../codex/codex-rs/state/src/model/graph.rs | 11 + vendor/codex/codex-rs/state/src/model/log.rs | 46 + .../codex-rs/state/src/model/memories.rs | 149 + vendor/codex/codex-rs/state/src/model/mod.rs | 45 + .../state/src/model/thread_metadata.rs | 552 + vendor/codex/codex-rs/state/src/paths.rs | 9 + vendor/codex/codex-rs/state/src/runtime.rs | 373 + .../codex-rs/state/src/runtime/agent_jobs.rs | 684 + .../codex-rs/state/src/runtime/backfill.rs | 311 + .../codex/codex-rs/state/src/runtime/logs.rs | 1913 ++ .../codex-rs/state/src/runtime/memories.rs | 4615 +++++ .../state/src/runtime/remote_control.rs | 283 + .../state/src/runtime/test_support.rs | 69 + .../codex-rs/state/src/runtime/threads.rs | 1876 ++ .../codex/codex-rs/stdio-to-uds/BUILD.bazel | 6 + vendor/codex/codex-rs/stdio-to-uds/Cargo.toml | 31 + vendor/codex/codex-rs/stdio-to-uds/README.md | 20 + vendor/codex/codex-rs/stdio-to-uds/src/lib.rs | 46 + .../codex/codex-rs/stdio-to-uds/src/main.rs | 20 + .../stdio-to-uds/tests/stdio_to_uds.rs | 157 + .../codex-rs/terminal-detection/BUILD.bazel | 6 + .../codex-rs/terminal-detection/Cargo.toml | 18 + .../codex-rs/terminal-detection/src/lib.rs | 510 + .../terminal-detection/src/terminal_tests.rs | 881 + .../codex-rs/test-binary-support/BUILD.bazel | 7 + .../codex-rs/test-binary-support/Cargo.toml | 15 + .../codex/codex-rs/test-binary-support/lib.rs | 77 + .../codex/codex-rs/thread-store/BUILD.bazel | 6 + vendor/codex/codex-rs/thread-store/Cargo.toml | 39 + .../thread-store/examples/generate-proto.rs | 19 + .../thread-store/scripts/generate-proto.sh | 38 + .../codex/codex-rs/thread-store/src/error.rs | 36 + vendor/codex/codex-rs/thread-store/src/lib.rs | 36 + .../thread-store/src/local/archive_thread.rs | 173 + .../thread-store/src/local/helpers.rs | 168 + .../thread-store/src/local/list_threads.rs | 382 + .../codex-rs/thread-store/src/local/mod.rs | 121 + .../thread-store/src/local/read_thread.rs | 882 + .../thread-store/src/local/test_support.rs | 108 + .../src/local/unarchive_thread.rs | 198 + .../src/local/update_thread_metadata.rs | 397 + .../codex-rs/thread-store/src/recorder.rs | 28 + .../thread-store/src/remote/AGENTS.md | 13 + .../thread-store/src/remote/helpers.rs | 255 + .../thread-store/src/remote/list_threads.rs | 260 + .../codex-rs/thread-store/src/remote/mod.rs | 111 + .../remote/proto/codex.thread_store.v1.proto | 92 + .../src/remote/proto/codex.thread_store.v1.rs | 469 + .../codex/codex-rs/thread-store/src/store.rs | 67 + .../codex/codex-rs/thread-store/src/types.rs | 243 + vendor/codex/codex-rs/tools/BUILD.bazel | 9 + vendor/codex/codex-rs/tools/Cargo.toml | 28 + vendor/codex/codex-rs/tools/README.md | 101 + .../codex-rs/tools/src/agent_job_tool.rs | 107 + .../tools/src/agent_job_tool_tests.rs | 119 + vendor/codex/codex-rs/tools/src/agent_tool.rs | 759 + .../codex-rs/tools/src/agent_tool_tests.rs | 304 + .../codex-rs/tools/src/apply_patch_tool.rs | 126 + .../tools/src/apply_patch_tool_tests.rs | 46 + vendor/codex/codex-rs/tools/src/code_mode.rs | 240 + .../codex-rs/tools/src/code_mode_tests.rs | 227 + .../codex/codex-rs/tools/src/dynamic_tool.rs | 17 + .../codex-rs/tools/src/dynamic_tool_tests.rs | 70 + .../codex/codex-rs/tools/src/image_detail.rs | 42 + .../codex-rs/tools/src/image_detail_tests.rs | 117 + .../codex/codex-rs/tools/src/js_repl_tool.rs | 55 + .../codex-rs/tools/src/js_repl_tool_tests.rs | 41 + .../codex/codex-rs/tools/src/json_schema.rs | 340 + .../codex-rs/tools/src/json_schema_tests.rs | 786 + vendor/codex/codex-rs/tools/src/lib.rs | 148 + vendor/codex/codex-rs/tools/src/local_tool.rs | 432 + .../codex-rs/tools/src/local_tool_tests.rs | 402 + .../codex-rs/tools/src/mcp_resource_tool.rs | 98 + .../tools/src/mcp_resource_tool_tests.rs | 96 + vendor/codex/codex-rs/tools/src/mcp_tool.rs | 64 + .../codex-rs/tools/src/mcp_tool_tests.rs | 126 + vendor/codex/codex-rs/tools/src/plan_tool.rs | 49 + .../tools/src/request_user_input_tool.rs | 147 + .../src/request_user_input_tool_tests.rs | 141 + .../codex/codex-rs/tools/src/responses_api.rs | 155 + .../codex-rs/tools/src/responses_api_tests.rs | 175 + .../codex-rs/tools/src/tool_apply_patch.lark | 19 + .../codex/codex-rs/tools/src/tool_config.rs | 327 + .../codex-rs/tools/src/tool_config_tests.rs | 216 + .../codex-rs/tools/src/tool_definition.rs | 30 + .../tools/src/tool_definition_tests.rs | 43 + .../codex-rs/tools/src/tool_discovery.rs | 425 + .../tools/src/tool_discovery_tests.rs | 179 + .../codex-rs/tools/src/tool_registry_plan.rs | 614 + .../tools/src/tool_registry_plan_tests.rs | 2318 +++ .../tools/src/tool_registry_plan_types.rs | 132 + vendor/codex/codex-rs/tools/src/tool_spec.rs | 208 + .../codex-rs/tools/src/tool_spec_tests.rs | 293 + .../codex/codex-rs/tools/src/tool_suggest.rs | 125 + .../codex-rs/tools/src/tool_suggest_tests.rs | 207 + .../codex/codex-rs/tools/src/utility_tool.rs | 99 + .../codex-rs/tools/src/utility_tool_tests.rs | 108 + vendor/codex/codex-rs/tools/src/view_image.rs | 55 + vendor/codex/codex-rs/tui/BUILD.bazel | 30 + vendor/codex/codex-rs/tui/Cargo.toml | 154 + .../codex-rs/tui/frames/blocks/frame_1.txt | 17 + .../codex-rs/tui/frames/blocks/frame_10.txt | 17 + .../codex-rs/tui/frames/blocks/frame_11.txt | 17 + .../codex-rs/tui/frames/blocks/frame_12.txt | 17 + .../codex-rs/tui/frames/blocks/frame_13.txt | 17 + .../codex-rs/tui/frames/blocks/frame_14.txt | 17 + .../codex-rs/tui/frames/blocks/frame_15.txt | 17 + .../codex-rs/tui/frames/blocks/frame_16.txt | 17 + .../codex-rs/tui/frames/blocks/frame_17.txt | 17 + .../codex-rs/tui/frames/blocks/frame_18.txt | 17 + .../codex-rs/tui/frames/blocks/frame_19.txt | 17 + .../codex-rs/tui/frames/blocks/frame_2.txt | 17 + .../codex-rs/tui/frames/blocks/frame_20.txt | 17 + .../codex-rs/tui/frames/blocks/frame_21.txt | 17 + .../codex-rs/tui/frames/blocks/frame_22.txt | 17 + .../codex-rs/tui/frames/blocks/frame_23.txt | 17 + .../codex-rs/tui/frames/blocks/frame_24.txt | 17 + .../codex-rs/tui/frames/blocks/frame_25.txt | 17 + .../codex-rs/tui/frames/blocks/frame_26.txt | 17 + .../codex-rs/tui/frames/blocks/frame_27.txt | 17 + .../codex-rs/tui/frames/blocks/frame_28.txt | 17 + .../codex-rs/tui/frames/blocks/frame_29.txt | 17 + .../codex-rs/tui/frames/blocks/frame_3.txt | 17 + .../codex-rs/tui/frames/blocks/frame_30.txt | 17 + .../codex-rs/tui/frames/blocks/frame_31.txt | 17 + .../codex-rs/tui/frames/blocks/frame_32.txt | 17 + .../codex-rs/tui/frames/blocks/frame_33.txt | 17 + .../codex-rs/tui/frames/blocks/frame_34.txt | 17 + .../codex-rs/tui/frames/blocks/frame_35.txt | 17 + .../codex-rs/tui/frames/blocks/frame_36.txt | 17 + .../codex-rs/tui/frames/blocks/frame_4.txt | 17 + .../codex-rs/tui/frames/blocks/frame_5.txt | 17 + .../codex-rs/tui/frames/blocks/frame_6.txt | 17 + .../codex-rs/tui/frames/blocks/frame_7.txt | 17 + .../codex-rs/tui/frames/blocks/frame_8.txt | 17 + .../codex-rs/tui/frames/blocks/frame_9.txt | 17 + .../codex-rs/tui/frames/codex/frame_1.txt | 17 + .../codex-rs/tui/frames/codex/frame_10.txt | 17 + .../codex-rs/tui/frames/codex/frame_11.txt | 17 + .../codex-rs/tui/frames/codex/frame_12.txt | 17 + .../codex-rs/tui/frames/codex/frame_13.txt | 17 + .../codex-rs/tui/frames/codex/frame_14.txt | 17 + .../codex-rs/tui/frames/codex/frame_15.txt | 17 + .../codex-rs/tui/frames/codex/frame_16.txt | 17 + .../codex-rs/tui/frames/codex/frame_17.txt | 17 + .../codex-rs/tui/frames/codex/frame_18.txt | 17 + .../codex-rs/tui/frames/codex/frame_19.txt | 17 + .../codex-rs/tui/frames/codex/frame_2.txt | 17 + .../codex-rs/tui/frames/codex/frame_20.txt | 17 + .../codex-rs/tui/frames/codex/frame_21.txt | 17 + .../codex-rs/tui/frames/codex/frame_22.txt | 17 + .../codex-rs/tui/frames/codex/frame_23.txt | 17 + .../codex-rs/tui/frames/codex/frame_24.txt | 17 + .../codex-rs/tui/frames/codex/frame_25.txt | 17 + .../codex-rs/tui/frames/codex/frame_26.txt | 17 + .../codex-rs/tui/frames/codex/frame_27.txt | 17 + .../codex-rs/tui/frames/codex/frame_28.txt | 17 + .../codex-rs/tui/frames/codex/frame_29.txt | 17 + .../codex-rs/tui/frames/codex/frame_3.txt | 17 + .../codex-rs/tui/frames/codex/frame_30.txt | 17 + .../codex-rs/tui/frames/codex/frame_31.txt | 17 + .../codex-rs/tui/frames/codex/frame_32.txt | 17 + .../codex-rs/tui/frames/codex/frame_33.txt | 17 + .../codex-rs/tui/frames/codex/frame_34.txt | 17 + .../codex-rs/tui/frames/codex/frame_35.txt | 17 + .../codex-rs/tui/frames/codex/frame_36.txt | 17 + .../codex-rs/tui/frames/codex/frame_4.txt | 17 + .../codex-rs/tui/frames/codex/frame_5.txt | 17 + .../codex-rs/tui/frames/codex/frame_6.txt | 17 + .../codex-rs/tui/frames/codex/frame_7.txt | 17 + .../codex-rs/tui/frames/codex/frame_8.txt | 17 + .../codex-rs/tui/frames/codex/frame_9.txt | 17 + .../codex-rs/tui/frames/default/frame_1.txt | 17 + .../codex-rs/tui/frames/default/frame_10.txt | 17 + .../codex-rs/tui/frames/default/frame_11.txt | 17 + .../codex-rs/tui/frames/default/frame_12.txt | 17 + .../codex-rs/tui/frames/default/frame_13.txt | 17 + .../codex-rs/tui/frames/default/frame_14.txt | 17 + .../codex-rs/tui/frames/default/frame_15.txt | 17 + .../codex-rs/tui/frames/default/frame_16.txt | 17 + .../codex-rs/tui/frames/default/frame_17.txt | 17 + .../codex-rs/tui/frames/default/frame_18.txt | 17 + .../codex-rs/tui/frames/default/frame_19.txt | 17 + .../codex-rs/tui/frames/default/frame_2.txt | 17 + .../codex-rs/tui/frames/default/frame_20.txt | 17 + .../codex-rs/tui/frames/default/frame_21.txt | 17 + .../codex-rs/tui/frames/default/frame_22.txt | 17 + .../codex-rs/tui/frames/default/frame_23.txt | 17 + .../codex-rs/tui/frames/default/frame_24.txt | 17 + .../codex-rs/tui/frames/default/frame_25.txt | 17 + .../codex-rs/tui/frames/default/frame_26.txt | 17 + .../codex-rs/tui/frames/default/frame_27.txt | 17 + .../codex-rs/tui/frames/default/frame_28.txt | 17 + .../codex-rs/tui/frames/default/frame_29.txt | 17 + .../codex-rs/tui/frames/default/frame_3.txt | 17 + .../codex-rs/tui/frames/default/frame_30.txt | 17 + .../codex-rs/tui/frames/default/frame_31.txt | 17 + .../codex-rs/tui/frames/default/frame_32.txt | 17 + .../codex-rs/tui/frames/default/frame_33.txt | 17 + .../codex-rs/tui/frames/default/frame_34.txt | 17 + .../codex-rs/tui/frames/default/frame_35.txt | 17 + .../codex-rs/tui/frames/default/frame_36.txt | 17 + .../codex-rs/tui/frames/default/frame_4.txt | 17 + .../codex-rs/tui/frames/default/frame_5.txt | 17 + .../codex-rs/tui/frames/default/frame_6.txt | 17 + .../codex-rs/tui/frames/default/frame_7.txt | 17 + .../codex-rs/tui/frames/default/frame_8.txt | 17 + .../codex-rs/tui/frames/default/frame_9.txt | 17 + .../codex-rs/tui/frames/dots/frame_1.txt | 17 + .../codex-rs/tui/frames/dots/frame_10.txt | 17 + .../codex-rs/tui/frames/dots/frame_11.txt | 17 + .../codex-rs/tui/frames/dots/frame_12.txt | 17 + .../codex-rs/tui/frames/dots/frame_13.txt | 17 + .../codex-rs/tui/frames/dots/frame_14.txt | 17 + .../codex-rs/tui/frames/dots/frame_15.txt | 17 + .../codex-rs/tui/frames/dots/frame_16.txt | 17 + .../codex-rs/tui/frames/dots/frame_17.txt | 17 + .../codex-rs/tui/frames/dots/frame_18.txt | 17 + .../codex-rs/tui/frames/dots/frame_19.txt | 17 + .../codex-rs/tui/frames/dots/frame_2.txt | 17 + .../codex-rs/tui/frames/dots/frame_20.txt | 17 + .../codex-rs/tui/frames/dots/frame_21.txt | 17 + .../codex-rs/tui/frames/dots/frame_22.txt | 17 + .../codex-rs/tui/frames/dots/frame_23.txt | 17 + .../codex-rs/tui/frames/dots/frame_24.txt | 17 + .../codex-rs/tui/frames/dots/frame_25.txt | 17 + .../codex-rs/tui/frames/dots/frame_26.txt | 17 + .../codex-rs/tui/frames/dots/frame_27.txt | 17 + .../codex-rs/tui/frames/dots/frame_28.txt | 17 + .../codex-rs/tui/frames/dots/frame_29.txt | 17 + .../codex-rs/tui/frames/dots/frame_3.txt | 17 + .../codex-rs/tui/frames/dots/frame_30.txt | 17 + .../codex-rs/tui/frames/dots/frame_31.txt | 17 + .../codex-rs/tui/frames/dots/frame_32.txt | 17 + .../codex-rs/tui/frames/dots/frame_33.txt | 17 + .../codex-rs/tui/frames/dots/frame_34.txt | 17 + .../codex-rs/tui/frames/dots/frame_35.txt | 17 + .../codex-rs/tui/frames/dots/frame_36.txt | 17 + .../codex-rs/tui/frames/dots/frame_4.txt | 17 + .../codex-rs/tui/frames/dots/frame_5.txt | 17 + .../codex-rs/tui/frames/dots/frame_6.txt | 17 + .../codex-rs/tui/frames/dots/frame_7.txt | 17 + .../codex-rs/tui/frames/dots/frame_8.txt | 17 + .../codex-rs/tui/frames/dots/frame_9.txt | 17 + .../codex-rs/tui/frames/hash/frame_1.txt | 17 + .../codex-rs/tui/frames/hash/frame_10.txt | 17 + .../codex-rs/tui/frames/hash/frame_11.txt | 17 + .../codex-rs/tui/frames/hash/frame_12.txt | 17 + .../codex-rs/tui/frames/hash/frame_13.txt | 17 + .../codex-rs/tui/frames/hash/frame_14.txt | 17 + .../codex-rs/tui/frames/hash/frame_15.txt | 17 + .../codex-rs/tui/frames/hash/frame_16.txt | 17 + .../codex-rs/tui/frames/hash/frame_17.txt | 17 + .../codex-rs/tui/frames/hash/frame_18.txt | 17 + .../codex-rs/tui/frames/hash/frame_19.txt | 17 + .../codex-rs/tui/frames/hash/frame_2.txt | 17 + .../codex-rs/tui/frames/hash/frame_20.txt | 17 + .../codex-rs/tui/frames/hash/frame_21.txt | 17 + .../codex-rs/tui/frames/hash/frame_22.txt | 17 + .../codex-rs/tui/frames/hash/frame_23.txt | 17 + .../codex-rs/tui/frames/hash/frame_24.txt | 17 + .../codex-rs/tui/frames/hash/frame_25.txt | 17 + .../codex-rs/tui/frames/hash/frame_26.txt | 17 + .../codex-rs/tui/frames/hash/frame_27.txt | 17 + .../codex-rs/tui/frames/hash/frame_28.txt | 17 + .../codex-rs/tui/frames/hash/frame_29.txt | 17 + .../codex-rs/tui/frames/hash/frame_3.txt | 17 + .../codex-rs/tui/frames/hash/frame_30.txt | 17 + .../codex-rs/tui/frames/hash/frame_31.txt | 17 + .../codex-rs/tui/frames/hash/frame_32.txt | 17 + .../codex-rs/tui/frames/hash/frame_33.txt | 17 + .../codex-rs/tui/frames/hash/frame_34.txt | 17 + .../codex-rs/tui/frames/hash/frame_35.txt | 17 + .../codex-rs/tui/frames/hash/frame_36.txt | 17 + .../codex-rs/tui/frames/hash/frame_4.txt | 17 + .../codex-rs/tui/frames/hash/frame_5.txt | 17 + .../codex-rs/tui/frames/hash/frame_6.txt | 17 + .../codex-rs/tui/frames/hash/frame_7.txt | 17 + .../codex-rs/tui/frames/hash/frame_8.txt | 17 + .../codex-rs/tui/frames/hash/frame_9.txt | 17 + .../codex-rs/tui/frames/hbars/frame_1.txt | 17 + .../codex-rs/tui/frames/hbars/frame_10.txt | 17 + .../codex-rs/tui/frames/hbars/frame_11.txt | 17 + .../codex-rs/tui/frames/hbars/frame_12.txt | 17 + .../codex-rs/tui/frames/hbars/frame_13.txt | 17 + .../codex-rs/tui/frames/hbars/frame_14.txt | 17 + .../codex-rs/tui/frames/hbars/frame_15.txt | 17 + .../codex-rs/tui/frames/hbars/frame_16.txt | 17 + .../codex-rs/tui/frames/hbars/frame_17.txt | 17 + .../codex-rs/tui/frames/hbars/frame_18.txt | 17 + .../codex-rs/tui/frames/hbars/frame_19.txt | 17 + .../codex-rs/tui/frames/hbars/frame_2.txt | 17 + .../codex-rs/tui/frames/hbars/frame_20.txt | 17 + .../codex-rs/tui/frames/hbars/frame_21.txt | 17 + .../codex-rs/tui/frames/hbars/frame_22.txt | 17 + .../codex-rs/tui/frames/hbars/frame_23.txt | 17 + .../codex-rs/tui/frames/hbars/frame_24.txt | 17 + .../codex-rs/tui/frames/hbars/frame_25.txt | 17 + .../codex-rs/tui/frames/hbars/frame_26.txt | 17 + .../codex-rs/tui/frames/hbars/frame_27.txt | 17 + .../codex-rs/tui/frames/hbars/frame_28.txt | 17 + .../codex-rs/tui/frames/hbars/frame_29.txt | 17 + .../codex-rs/tui/frames/hbars/frame_3.txt | 17 + .../codex-rs/tui/frames/hbars/frame_30.txt | 17 + .../codex-rs/tui/frames/hbars/frame_31.txt | 17 + .../codex-rs/tui/frames/hbars/frame_32.txt | 17 + .../codex-rs/tui/frames/hbars/frame_33.txt | 17 + .../codex-rs/tui/frames/hbars/frame_34.txt | 17 + .../codex-rs/tui/frames/hbars/frame_35.txt | 17 + .../codex-rs/tui/frames/hbars/frame_36.txt | 17 + .../codex-rs/tui/frames/hbars/frame_4.txt | 17 + .../codex-rs/tui/frames/hbars/frame_5.txt | 17 + .../codex-rs/tui/frames/hbars/frame_6.txt | 17 + .../codex-rs/tui/frames/hbars/frame_7.txt | 17 + .../codex-rs/tui/frames/hbars/frame_8.txt | 17 + .../codex-rs/tui/frames/hbars/frame_9.txt | 17 + .../codex-rs/tui/frames/openai/frame_1.txt | 17 + .../codex-rs/tui/frames/openai/frame_10.txt | 17 + .../codex-rs/tui/frames/openai/frame_11.txt | 17 + .../codex-rs/tui/frames/openai/frame_12.txt | 17 + .../codex-rs/tui/frames/openai/frame_13.txt | 17 + .../codex-rs/tui/frames/openai/frame_14.txt | 17 + .../codex-rs/tui/frames/openai/frame_15.txt | 17 + .../codex-rs/tui/frames/openai/frame_16.txt | 17 + .../codex-rs/tui/frames/openai/frame_17.txt | 17 + .../codex-rs/tui/frames/openai/frame_18.txt | 17 + .../codex-rs/tui/frames/openai/frame_19.txt | 17 + .../codex-rs/tui/frames/openai/frame_2.txt | 17 + .../codex-rs/tui/frames/openai/frame_20.txt | 17 + .../codex-rs/tui/frames/openai/frame_21.txt | 17 + .../codex-rs/tui/frames/openai/frame_22.txt | 17 + .../codex-rs/tui/frames/openai/frame_23.txt | 17 + .../codex-rs/tui/frames/openai/frame_24.txt | 17 + .../codex-rs/tui/frames/openai/frame_25.txt | 17 + .../codex-rs/tui/frames/openai/frame_26.txt | 17 + .../codex-rs/tui/frames/openai/frame_27.txt | 17 + .../codex-rs/tui/frames/openai/frame_28.txt | 17 + .../codex-rs/tui/frames/openai/frame_29.txt | 17 + .../codex-rs/tui/frames/openai/frame_3.txt | 17 + .../codex-rs/tui/frames/openai/frame_30.txt | 17 + .../codex-rs/tui/frames/openai/frame_31.txt | 17 + .../codex-rs/tui/frames/openai/frame_32.txt | 17 + .../codex-rs/tui/frames/openai/frame_33.txt | 17 + .../codex-rs/tui/frames/openai/frame_34.txt | 17 + .../codex-rs/tui/frames/openai/frame_35.txt | 17 + .../codex-rs/tui/frames/openai/frame_36.txt | 17 + .../codex-rs/tui/frames/openai/frame_4.txt | 17 + .../codex-rs/tui/frames/openai/frame_5.txt | 17 + .../codex-rs/tui/frames/openai/frame_6.txt | 17 + .../codex-rs/tui/frames/openai/frame_7.txt | 17 + .../codex-rs/tui/frames/openai/frame_8.txt | 17 + .../codex-rs/tui/frames/openai/frame_9.txt | 17 + .../codex-rs/tui/frames/shapes/frame_1.txt | 17 + .../codex-rs/tui/frames/shapes/frame_10.txt | 17 + .../codex-rs/tui/frames/shapes/frame_11.txt | 17 + .../codex-rs/tui/frames/shapes/frame_12.txt | 17 + .../codex-rs/tui/frames/shapes/frame_13.txt | 17 + .../codex-rs/tui/frames/shapes/frame_14.txt | 17 + .../codex-rs/tui/frames/shapes/frame_15.txt | 17 + .../codex-rs/tui/frames/shapes/frame_16.txt | 17 + .../codex-rs/tui/frames/shapes/frame_17.txt | 17 + .../codex-rs/tui/frames/shapes/frame_18.txt | 17 + .../codex-rs/tui/frames/shapes/frame_19.txt | 17 + .../codex-rs/tui/frames/shapes/frame_2.txt | 17 + .../codex-rs/tui/frames/shapes/frame_20.txt | 17 + .../codex-rs/tui/frames/shapes/frame_21.txt | 17 + .../codex-rs/tui/frames/shapes/frame_22.txt | 17 + .../codex-rs/tui/frames/shapes/frame_23.txt | 17 + .../codex-rs/tui/frames/shapes/frame_24.txt | 17 + .../codex-rs/tui/frames/shapes/frame_25.txt | 17 + .../codex-rs/tui/frames/shapes/frame_26.txt | 17 + .../codex-rs/tui/frames/shapes/frame_27.txt | 17 + .../codex-rs/tui/frames/shapes/frame_28.txt | 17 + .../codex-rs/tui/frames/shapes/frame_29.txt | 17 + .../codex-rs/tui/frames/shapes/frame_3.txt | 17 + .../codex-rs/tui/frames/shapes/frame_30.txt | 17 + .../codex-rs/tui/frames/shapes/frame_31.txt | 17 + .../codex-rs/tui/frames/shapes/frame_32.txt | 17 + .../codex-rs/tui/frames/shapes/frame_33.txt | 17 + .../codex-rs/tui/frames/shapes/frame_34.txt | 17 + .../codex-rs/tui/frames/shapes/frame_35.txt | 17 + .../codex-rs/tui/frames/shapes/frame_36.txt | 17 + .../codex-rs/tui/frames/shapes/frame_4.txt | 17 + .../codex-rs/tui/frames/shapes/frame_5.txt | 17 + .../codex-rs/tui/frames/shapes/frame_6.txt | 17 + .../codex-rs/tui/frames/shapes/frame_7.txt | 17 + .../codex-rs/tui/frames/shapes/frame_8.txt | 17 + .../codex-rs/tui/frames/shapes/frame_9.txt | 17 + .../codex-rs/tui/frames/slug/frame_1.txt | 17 + .../codex-rs/tui/frames/slug/frame_10.txt | 17 + .../codex-rs/tui/frames/slug/frame_11.txt | 17 + .../codex-rs/tui/frames/slug/frame_12.txt | 17 + .../codex-rs/tui/frames/slug/frame_13.txt | 17 + .../codex-rs/tui/frames/slug/frame_14.txt | 17 + .../codex-rs/tui/frames/slug/frame_15.txt | 17 + .../codex-rs/tui/frames/slug/frame_16.txt | 17 + .../codex-rs/tui/frames/slug/frame_17.txt | 17 + .../codex-rs/tui/frames/slug/frame_18.txt | 17 + .../codex-rs/tui/frames/slug/frame_19.txt | 17 + .../codex-rs/tui/frames/slug/frame_2.txt | 17 + .../codex-rs/tui/frames/slug/frame_20.txt | 17 + .../codex-rs/tui/frames/slug/frame_21.txt | 17 + .../codex-rs/tui/frames/slug/frame_22.txt | 17 + .../codex-rs/tui/frames/slug/frame_23.txt | 17 + .../codex-rs/tui/frames/slug/frame_24.txt | 17 + .../codex-rs/tui/frames/slug/frame_25.txt | 17 + .../codex-rs/tui/frames/slug/frame_26.txt | 17 + .../codex-rs/tui/frames/slug/frame_27.txt | 17 + .../codex-rs/tui/frames/slug/frame_28.txt | 17 + .../codex-rs/tui/frames/slug/frame_29.txt | 17 + .../codex-rs/tui/frames/slug/frame_3.txt | 17 + .../codex-rs/tui/frames/slug/frame_30.txt | 17 + .../codex-rs/tui/frames/slug/frame_31.txt | 17 + .../codex-rs/tui/frames/slug/frame_32.txt | 17 + .../codex-rs/tui/frames/slug/frame_33.txt | 17 + .../codex-rs/tui/frames/slug/frame_34.txt | 17 + .../codex-rs/tui/frames/slug/frame_35.txt | 17 + .../codex-rs/tui/frames/slug/frame_36.txt | 17 + .../codex-rs/tui/frames/slug/frame_4.txt | 17 + .../codex-rs/tui/frames/slug/frame_5.txt | 17 + .../codex-rs/tui/frames/slug/frame_6.txt | 17 + .../codex-rs/tui/frames/slug/frame_7.txt | 17 + .../codex-rs/tui/frames/slug/frame_8.txt | 17 + .../codex-rs/tui/frames/slug/frame_9.txt | 17 + .../codex-rs/tui/frames/vbars/frame_1.txt | 17 + .../codex-rs/tui/frames/vbars/frame_10.txt | 17 + .../codex-rs/tui/frames/vbars/frame_11.txt | 17 + .../codex-rs/tui/frames/vbars/frame_12.txt | 17 + .../codex-rs/tui/frames/vbars/frame_13.txt | 17 + .../codex-rs/tui/frames/vbars/frame_14.txt | 17 + .../codex-rs/tui/frames/vbars/frame_15.txt | 17 + .../codex-rs/tui/frames/vbars/frame_16.txt | 17 + .../codex-rs/tui/frames/vbars/frame_17.txt | 17 + .../codex-rs/tui/frames/vbars/frame_18.txt | 17 + .../codex-rs/tui/frames/vbars/frame_19.txt | 17 + .../codex-rs/tui/frames/vbars/frame_2.txt | 17 + .../codex-rs/tui/frames/vbars/frame_20.txt | 17 + .../codex-rs/tui/frames/vbars/frame_21.txt | 17 + .../codex-rs/tui/frames/vbars/frame_22.txt | 17 + .../codex-rs/tui/frames/vbars/frame_23.txt | 17 + .../codex-rs/tui/frames/vbars/frame_24.txt | 17 + .../codex-rs/tui/frames/vbars/frame_25.txt | 17 + .../codex-rs/tui/frames/vbars/frame_26.txt | 17 + .../codex-rs/tui/frames/vbars/frame_27.txt | 17 + .../codex-rs/tui/frames/vbars/frame_28.txt | 17 + .../codex-rs/tui/frames/vbars/frame_29.txt | 17 + .../codex-rs/tui/frames/vbars/frame_3.txt | 17 + .../codex-rs/tui/frames/vbars/frame_30.txt | 17 + .../codex-rs/tui/frames/vbars/frame_31.txt | 17 + .../codex-rs/tui/frames/vbars/frame_32.txt | 17 + .../codex-rs/tui/frames/vbars/frame_33.txt | 17 + .../codex-rs/tui/frames/vbars/frame_34.txt | 17 + .../codex-rs/tui/frames/vbars/frame_35.txt | 17 + .../codex-rs/tui/frames/vbars/frame_36.txt | 17 + .../codex-rs/tui/frames/vbars/frame_4.txt | 17 + .../codex-rs/tui/frames/vbars/frame_5.txt | 17 + .../codex-rs/tui/frames/vbars/frame_6.txt | 17 + .../codex-rs/tui/frames/vbars/frame_7.txt | 17 + .../codex-rs/tui/frames/vbars/frame_8.txt | 17 + .../codex-rs/tui/frames/vbars/frame_9.txt | 17 + .../codex-rs/tui/prompt_for_init_command.md | 40 + .../codex/codex-rs/tui/src/additional_dirs.rs | 83 + vendor/codex/codex-rs/tui/src/app.rs | 1156 ++ .../codex-rs/tui/src/app/agent_navigation.rs | 354 + .../tui/src/app/app_server_adapter.rs | 1704 ++ .../tui/src/app/app_server_requests.rs | 855 + .../tui/src/app/background_requests.rs | 784 + .../tui/src/app/config_persistence.rs | 708 + .../codex-rs/tui/src/app/event_dispatch.rs | 1654 ++ .../codex/codex-rs/tui/src/app/history_ui.rs | 93 + vendor/codex/codex-rs/tui/src/app/input.rs | 222 + .../codex-rs/tui/src/app/loaded_threads.rs | 210 + .../tui/src/app/pending_interactive_replay.rs | 952 + .../codex-rs/tui/src/app/platform_actions.rs | 96 + .../codex-rs/tui/src/app/replay_filter.rs | 33 + .../codex-rs/tui/src/app/session_lifecycle.rs | 790 + vendor/codex/codex-rs/tui/src/app/side.rs | 621 + .../codex-rs/tui/src/app/startup_prompts.rs | 354 + .../codex-rs/tui/src/app/test_support.rs | 89 + vendor/codex/codex-rs/tui/src/app/tests.rs | 4900 +++++ .../tui/src/app/tests/model_catalog.rs | 293 + ...gration_prompt_shows_for_hidden_model.snap | 12 + .../codex-rs/tui/src/app/thread_events.rs | 545 + .../codex-rs/tui/src/app/thread_routing.rs | 1438 ++ .../tui/src/app/thread_session_state.rs | 55 + .../codex/codex-rs/tui/src/app_backtrack.rs | 888 + vendor/codex/codex-rs/tui/src/app_command.rs | 410 + vendor/codex/codex-rs/tui/src/app_event.rs | 712 + .../codex-rs/tui/src/app_event_sender.rs | 120 + .../src/app_server_approval_conversions.rs | 133 + .../codex-rs/tui/src/app_server_session.rs | 1736 ++ .../codex/codex-rs/tui/src/ascii_animation.rs | 106 + vendor/codex/codex-rs/tui/src/audio_device.rs | 176 + .../codex/codex-rs/tui/src/bin/md-events.rs | 15 + .../codex-rs/tui/src/bottom_pane/AGENTS.md | 14 + .../tui/src/bottom_pane/app_link_view.rs | 1029 + .../tui/src/bottom_pane/approval_overlay.rs | 1675 ++ .../tui/src/bottom_pane/bottom_pane_view.rs | 124 + .../tui/src/bottom_pane/chat_composer.rs | 9147 ++++++++ .../chat_composer/history_search.rs | 958 + .../src/bottom_pane/chat_composer_history.rs | 1317 ++ .../tui/src/bottom_pane/command_popup.rs | 489 + .../tui/src/bottom_pane/custom_prompt_view.rs | 259 + .../bottom_pane/experimental_features_view.rs | 300 + .../tui/src/bottom_pane/feedback_view.rs | 862 + .../tui/src/bottom_pane/file_search_popup.rs | 184 + .../codex-rs/tui/src/bottom_pane/footer.rs | 1807 ++ .../src/bottom_pane/list_selection_view.rs | 2320 +++ .../src/bottom_pane/mcp_server_elicitation.rs | 2649 +++ .../src/bottom_pane/memories_settings_view.rs | 477 + .../codex/codex-rs/tui/src/bottom_pane/mod.rs | 2352 +++ .../src/bottom_pane/multi_select_picker.rs | 795 + .../tui/src/bottom_pane/paste_burst.rs | 576 + .../src/bottom_pane/pending_input_preview.rs | 366 + .../bottom_pane/pending_thread_approvals.rs | 149 + .../tui/src/bottom_pane/popup_consts.rs | 21 + .../tui/src/bottom_pane/prompt_args.rs | 25 + .../bottom_pane/request_user_input/layout.rs | 363 + .../src/bottom_pane/request_user_input/mod.rs | 3061 +++ .../bottom_pane/request_user_input/render.rs | 582 + ...tests__request_user_input_footer_wrap.snap | 14 + ...t__tests__request_user_input_freeform.snap | 13 + ...uest_user_input_hidden_options_footer.snap | 13 + ...__request_user_input_long_option_text.snap | 17 + ...quest_user_input_multi_question_first.snap | 13 + ...equest_user_input_multi_question_last.snap | 15 + ...ut__tests__request_user_input_options.snap | 13 + ...uest_user_input_options_notes_visible.snap | 19 + ..._request_user_input_scrolling_options.snap | 15 + ...ests__request_user_input_tight_height.snap | 13 + ...st_user_input_unanswered_confirmation.snap | 15 + ...s__request_user_input_wrapped_options.snap | 13 + .../tui/src/bottom_pane/scroll_state.rs | 115 + .../src/bottom_pane/selection_popup_common.rs | 855 + .../tui/src/bottom_pane/selection_tabs.rs | 103 + .../tui/src/bottom_pane/skill_popup.rs | 390 + .../tui/src/bottom_pane/skills_toggle_view.rs | 435 + .../tui/src/bottom_pane/slash_commands.rs | 179 + ...nk_view_enable_suggestion_with_reason.snap | 20 + ...k_view_install_suggestion_with_reason.snap | 18 + ...overlay_additional_permissions_prompt.snap | 17 + ..._approval_overlay_cross_thread_prompt.snap | 15 + ...__approval_overlay_permissions_prompt.snap | 17 + ...l_overlay__tests__network_exec_prompt.snap | 37 + ...mposer__tests__backspace_after_pastes.snap | 14 + ...tom_pane__chat_composer__tests__empty.snap | 14 + ...er__tests__footer_collapse_empty_full.snap | 13 + ...ollapse_empty_mode_cycle_with_context.snap | 13 + ...apse_empty_mode_cycle_without_context.snap | 13 + ...ests__footer_collapse_empty_mode_only.snap | 13 + ...ests__footer_collapse_plan_empty_full.snap | 13 + ...se_plan_empty_mode_cycle_with_context.snap | 13 + ...plan_empty_mode_cycle_without_context.snap | 13 + ..._footer_collapse_plan_empty_mode_only.snap | 13 + ...ests__footer_collapse_plan_queue_full.snap | 13 + ...se_plan_queue_message_without_context.snap | 13 + ..._footer_collapse_plan_queue_mode_only.snap | 13 + ...ollapse_plan_queue_short_with_context.snap | 13 + ...apse_plan_queue_short_without_context.snap | 13 + ...er__tests__footer_collapse_queue_full.snap | 13 + ...ollapse_queue_message_without_context.snap | 13 + ...ests__footer_collapse_queue_mode_only.snap | 13 + ...ter_collapse_queue_short_with_context.snap | 13 + ..._collapse_queue_short_without_context.snap | 13 + ...__tests__footer_mode_ctrl_c_interrupt.snap | 13 + ...poser__tests__footer_mode_ctrl_c_quit.snap | 13 + ...sts__footer_mode_ctrl_c_then_esc_hint.snap | 13 + ...tests__footer_mode_esc_hint_backtrack.snap | 13 + ...ts__footer_mode_esc_hint_from_overlay.snap | 13 + ...ests__footer_mode_hidden_while_typing.snap | 13 + ...er__tests__footer_mode_history_search.snap | 13 + ...r_mode_overlay_then_external_esc_hint.snap | 13 + ...ooter_mode_shell_command_absorbs_bang.snap | 13 + ...__tests__footer_mode_shortcut_overlay.snap | 19 + ...er__tests__image_placeholder_multiple.snap | 13 + ...oser__tests__image_placeholder_single.snap | 13 + ...tom_pane__chat_composer__tests__large.snap | 14 + ...r__tests__mention_popup_type_prefixes.snap | 13 + ...chat_composer__tests__multiple_pastes.snap | 14 + ...composer__tests__plugin_mention_popup.snap | 13 + ...at_composer__tests__remote_image_rows.snap | 13 + ..._remote_image_rows_after_delete_first.snap | 13 + ...er__tests__remote_image_rows_selected.snap | 13 + ..._chat_composer__tests__slash_popup_mo.snap | 9 + ...chat_composer__tests__slash_popup_res.snap | 10 + ...tom_pane__chat_composer__tests__small.snap | 14 + ...omposer__tests__zellij_empty_composer.snap | 14 + ...view__tests__feedback_view_bad_result.snap | 9 + ...edback_view__tests__feedback_view_bug.snap | 9 + ...iew__tests__feedback_view_good_result.snap | 9 + ...back_view__tests__feedback_view_other.snap | 9 + ...ack_view__tests__feedback_view_render.snap | 17 + ...ew__tests__feedback_view_safety_check.snap | 9 + ...ck_view_with_connectivity_diagnostics.snap | 9 + ...ter__tests__footer_active_agent_label.snap | 5 + ...composer_has_draft_queue_hint_enabled.snap | 5 + ...er__tests__footer_context_tokens_used.snap | 5 + ...ooter__tests__footer_ctrl_c_quit_idle.snap | 5 + ...er__tests__footer_ctrl_c_quit_running.snap | 5 + ...__footer__tests__footer_esc_hint_idle.snap | 5 + ...footer__tests__footer_esc_hint_primed.snap | 5 + ...r_mode_indicator_narrow_overlap_hides.snap | 5 + ...ter_mode_indicator_running_hides_hint.snap | 5 + ...er__tests__footer_mode_indicator_wide.snap | 5 + ...shortcuts_collaboration_modes_enabled.snap | 12 + ...sts__footer_shortcuts_context_running.snap | 5 + ...oter__tests__footer_shortcuts_default.snap | 5 + ...tests__footer_shortcuts_shift_and_esc.snap | 11 + ...er_status_line_disabled_context_right.snap | 5 + ...footer_status_line_enabled_mode_right.snap | 5 + ...ter_status_line_enabled_no_mode_right.snap | 5 + ..._footer_status_line_overrides_context.snap | 5 + ...oter_status_line_overrides_draft_idle.snap | 5 + ...ooter_status_line_overrides_shortcuts.snap | 5 + ...footer_status_line_truncated_with_gap.snap | 5 + ...r_status_line_with_active_agent_label.snap | 5 + ...oter_status_line_yields_to_queue_hint.snap | 5 + ...n_col_width_mode_auto_all_rows_scroll.snap | 30 + ...on_col_width_mode_auto_visible_scroll.snap | 30 + ...selection_col_width_mode_fixed_scroll.snap | 30 + ...sts__list_selection_footer_note_wraps.snap | 13 + ..._list_selection_model_picker_width_80.snap | 13 + ...selection_narrow_width_preserves_rows.snap | 16 + ..._list_selection_spacing_with_subtitle.snap | 12 + ...st_selection_spacing_without_subtitle.snap | 11 + ...tion_approval_form_with_param_summary.snap | 19 + ...on_approval_form_with_session_persist.snap | 19 + ...citation_approval_form_without_schema.snap | 19 + ...__mcp_server_elicitation_boolean_form.snap | 19 + ..._server_elicitation_message_only_form.snap | 19 + ...essage_only_form_with_persist_options.snap | 19 + ...ueue__tests__render_many_line_message.snap | 27 + ...sage_queue__tests__render_one_message.snap | 18 + ...age_queue__tests__render_two_messages.snap | 22 + ..._queue__tests__render_wrapped_message.snap | 25 + ...view__tests__render_many_line_message.snap | 31 + ...ests__render_more_than_three_messages.snap | 34 + ...teer_uses_single_prefix_and_truncates.snap | 29 + ...ut_preview__tests__render_one_message.snap | 22 + ...r_one_message_with_shift_left_binding.snap | 22 + ...view__tests__render_one_pending_steer.snap | 20 + ..._pending_steers_above_queued_messages.snap | 42 + ...t_preview__tests__render_two_messages.snap | 26 + ...review__tests__render_wrapped_message.snap | 29 + ...ll_popup__tests__skill_popup_scrolled.snap | 43 + ...ggle_view__tests__skills_toggle_basic.snap | 14 + ..._snapshot_uses_runtime_preview_values.snap | 21 + ...s_visible_when_status_hidden_snapshot.snap | 12 + ...er_fill_height_without_bottom_padding.snap | 10 + ...__status_and_queued_messages_snapshot.snap | 14 + ...hidden_when_height_too_small_height_1.snap | 5 + ...tom_pane__tests__status_only_snapshot.snap | 10 + ..._details_and_queued_messages_snapshot.snap | 16 + ...up__tests__terminal_title_setup_basic.snap | 21 + ...c_footer__tests__render_many_sessions.snap | 13 + ...c_footer__tests__render_more_sessions.snap | 13 + .../tui/src/bottom_pane/status_line_setup.rs | 563 + .../src/bottom_pane/status_surface_preview.rs | 173 + .../codex-rs/tui/src/bottom_pane/textarea.rs | 2660 +++ .../tui/src/bottom_pane/title_setup.rs | 517 + .../src/bottom_pane/unified_exec_footer.rs | 117 + vendor/codex/codex-rs/tui/src/chatwidget.rs | 11524 ++++++++++ .../codex-rs/tui/src/chatwidget/interrupts.rs | 254 + .../tui/src/chatwidget/plan_implementation.rs | 114 + .../codex-rs/tui/src/chatwidget/plugins.rs | 1405 ++ .../codex-rs/tui/src/chatwidget/realtime.rs | 676 + .../tui/src/chatwidget/reasoning_shortcuts.rs | 287 + .../tui/src/chatwidget/session_header.rs | 16 + .../codex/codex-rs/tui/src/chatwidget/side.rs | 31 + .../codex-rs/tui/src/chatwidget/skills.rs | 478 + .../tui/src/chatwidget/slash_dispatch.rs | 815 + ...ed_renders_requested_model_and_effort.snap | 6 + ...rver_collab_wait_items_render_history.snap | 12 + ...app_server_forked_thread_history_line.snap | 5 + ..._history_line_without_app_server_name.snap | 5 + ..._review_denied_renders_denied_request.snap | 13 + ...w_timed_out_renders_timed_out_request.snap | 20 + ...artup_failure_renders_warning_history.snap | 11 + ...ly_patch_manual_flow_history_approved.snap | 6 + ...hatwidget__tests__approval_modal_exec.snap | 17 + ...l_exec_multiline_prefix_no_execpolicy.snap | 16 + ..._tests__approval_modal_exec_no_reason.snap | 15 + ...atwidget__tests__approval_modal_patch.snap | 20 + ...get__tests__approvals_selection_popup.snap | 14 + ...ts__approvals_selection_popup@windows.snap | 17 + ...vals_selection_popup@windows_degraded.snap | 23 + ...dget__tests__apps_popup_loading_state.snap | 8 + ...et__tests__binary_size_ideal_response.snap | 153 + ...chatwidget__tests__chat_small_idle_h1.snap | 5 + ...chatwidget__tests__chat_small_idle_h2.snap | 6 + ...chatwidget__tests__chat_small_idle_h3.snap | 7 + ...twidget__tests__chat_small_running_h1.snap | 5 + ...twidget__tests__chat_small_running_h2.snap | 6 + ...twidget__tests__chat_small_running_h3.snap | 7 + ...exec_and_status_layout_vt100_snapshot.snap | 44 + ...t_markdown_code_blocks_vt100_snapshot.snap | 53 + ...i__chatwidget__tests__chatwidget_tall.snap | 29 + ...compact_queues_user_messages_snapshot.snap | 12 + ..._following_assistant_message_snapshot.snap | 11 + ...h_output_flushes_immediately_snapshot.snap | 16 + ...hook_output_survives_restart_snapshot.snap | 9 + ...e_final_message_are_rendered_snapshot.snap | 5 + ...h_command_while_task_running_snapshot.snap | 5 + ...pproval_history_decision_aborted_long.snap | 7 + ...al_history_decision_aborted_multiline.snap | 6 + ...roval_history_decision_approved_short.snap | 6 + ...dget__tests__exec_approval_modal_exec.snap | 40 + ...t__tests__experimental_features_popup.snap | 11 + ...dget__tests__exploring_step1_start_ls.snap | 6 + ...get__tests__exploring_step2_finish_ls.snap | 6 + ..._tests__exploring_step3_start_cat_foo.snap | 7 + ...tests__exploring_step4_finish_cat_foo.snap | 7 + ...sts__exploring_step5_finish_sed_range.snap | 7 + ...tests__exploring_step6_finish_cat_bar.snap | 7 + ...s__feedback_good_result_consent_popup.snap | 15 + ...dget__tests__feedback_selection_popup.snap | 13 + ..._tests__feedback_upload_consent_popup.snap | 19 + ...n_message_without_deltas_are_rendered.snap | 5 + ...et__tests__forked_thread_history_line.snap | 5 + ...rked_thread_history_line_without_name.snap | 5 + ...tests__full_access_confirmation_popup.snap | 15 + ...pproved_exec_renders_approved_request.snap | 11 + ...t_permissions_renders_request_summary.snap | 16 + ...ec_renders_warning_and_denied_request.snap | 17 + ...allel_reviews_render_aggregate_status.snap | 12 + ...renders_warning_and_timed_out_request.snap | 24 + ...cked_failed_feedback_history_snapshot.snap | 9 + ...pleted_without_running_flash_snapshot.snap | 9 + ...running_then_quiet_completed_snapshot.snap | 21 + ..._hook_runs_while_exec_active_snapshot.snap | 25 + ...ning_hooks_collapse_to_count_snapshot.snap | 9 + ...mage_generation_call_history_snapshot.snap | 7 + ...rrupt_clears_unified_exec_wait_streak.snap | 6 + ...t__tests__interrupt_exec_marks_failed.snap | 6 + ...pt_preserves_unified_exec_wait_streak.snap | 6 + ...tests__interrupted_turn_error_message.snap | 5 + ...terrupted_turn_pending_steers_message.snap | 5 + ...ommand_execution_strips_shell_wrapper.snap | 6 + ...cal_image_attachment_history_snapshot.snap | 6 + ...et__tests__mcp_startup_header_booting.snap | 11 + ...widget__tests__memories_enable_prompt.snap | 12 + ...t__tests__memories_reset_confirmation.snap | 12 + ...idget__tests__memories_settings_popup.snap | 17 + ...s__model_picker_filters_hidden_models.snap | 10 + ...ests__model_reasoning_selection_popup.snap | 12 + ...ng_selection_popup_extra_high_warning.snap | 17 + ...twidget__tests__model_selection_popup.snap | 14 + ...get__tests__multi_agent_enable_prompt.snap | 11 + ...__overlapping_hook_live_cell_snapshot.snap | 43 + ...s_selection_history_after_mode_switch.snap | 5 + ...ection_history_full_access_to_default.snap | 5 + ...istory_full_access_to_default@windows.snap | 5 + ...t__tests__personality_selection_popup.snap | 11 + ...get__tests__plan_implementation_popup.snap | 11 + ...an_implementation_popup_context_usage.snap | 11 + ...plan_implementation_popup_no_selected.snap | 11 + ...ests__plugin_detail_popup_installable.snap | 17 + ..._tests__plugin_detail_popup_installed.snap | 15 + ...ts__plugins_popup_curated_marketplace.snap | 17 + ...t__tests__plugins_popup_loading_state.snap | 9 + ..._tests__plugins_popup_search_filtered.snap | 14 + ..._tool_use_hook_events_render_snapshot.snap | 7 + ..._tool_use_hook_events_render_snapshot.snap | 7 + ..._tests__preamble_keeps_working_status.snap | 11 + ...tests__rate_limit_switch_prompt_popup.snap | 14 + ...tests__realtime_audio_selection_popup.snap | 11 + ...realtime_audio_selection_popup_narrow.snap | 11 + ...sts__realtime_microphone_picker_popup.snap | 18 + ...t__tests__renamed_thread_footer_title.snap | 9 + ...ayed_interrupted_reconnect_footer_row.snap | 5 + ..._review_queues_user_messages_snapshot.snap | 12 + ...ion_start_hook_events_render_snapshot.snap | 7 + ...e_context_label_preserves_status_line.snap | 9 + ...ide_context_label_shows_parent_status.snap | 9 + ...ts__slash_copy_no_output_info_message.snap | 6 + ..._tests__slash_rename_prefilled_prompt.snap | 10 + ...rked_side_question_while_task_running.snap | 11 + ...__tests__status_line_fast_mode_footer.snap | 9 + ...th_reasoning_context_remaining_footer.snap | 9 + ...line_model_with_reasoning_fast_footer.snap | 9 + ...model_with_reasoning_plan_mode_footer.snap | 9 + ...tatus_line_setup_popup_hardcoded_only.snap | 20 + ...ts__status_line_setup_popup_live_only.snap | 20 + ..._tests__status_line_setup_popup_mixed.snap | 20 + ...tatus_surface_previews_hardcoded_only.snap | 6 + ...ts__status_surface_previews_live_only.snap | 6 + ..._tests__status_surface_previews_mixed.snap | 6 + ...atwidget__tests__status_widget_active.snap | 11 + ...sts__status_widget_and_approval_modal.snap | 17 + ...inal_title_setup_popup_hardcoded_only.snap | 20 + ..._terminal_title_setup_popup_live_only.snap | 20 + ...sts__terminal_title_setup_popup_mixed.snap | 20 + ...ed_exec_begin_restores_working_status.snap | 11 + ...ified_exec_empty_then_non_empty_after.snap | 8 + ...fied_exec_non_empty_then_empty_active.snap | 6 + ...ified_exec_non_empty_then_empty_after.snap | 8 + ...nknown_end_with_active_exploring_cell.snap | 11 + ...d_exec_wait_after_final_agent_message.snap | 7 + ...ec_wait_before_streamed_agent_message.snap | 7 + ...renders_command_in_single_details_row.snap | 11 + ...ied_exec_waiting_multiple_empty_after.snap | 5 + ..._tui__chatwidget__tests__update_popup.snap | 14 + ...er_hook_notifications_render_snapshot.snap | 7 + ...atwidget__tests__user_shell_ls_output.snap | 7 + ...kspace_member_credits_depleted_prompt.snap | 11 + ...__workspace_member_usage_limit_prompt.snap | 11 + ...ner_credits_nudge_completion_feedback.snap | 11 + ..._workspace_owner_limit_state_messages.snap | 8 + ...usage_limit_nudge_completion_feedback.snap | 11 + .../tui/src/chatwidget/status_surfaces.rs | 736 + .../codex-rs/tui/src/chatwidget/tests.rs | 285 + .../tui/src/chatwidget/tests/app_server.rs | 738 + .../src/chatwidget/tests/approval_requests.rs | 323 + .../src/chatwidget/tests/background_events.rs | 18 + .../chatwidget/tests/composer_submission.rs | 1106 + .../tui/src/chatwidget/tests/exec_flow.rs | 1886 ++ .../tui/src/chatwidget/tests/guardian.rs | 573 + .../tui/src/chatwidget/tests/helpers.rs | 1095 + .../src/chatwidget/tests/history_replay.rs | 1032 + .../tui/src/chatwidget/tests/mcp_startup.rs | 661 + .../tui/src/chatwidget/tests/permissions.rs | 711 + .../tui/src/chatwidget/tests/plan_mode.rs | 1534 ++ .../chatwidget/tests/popups_and_settings.rs | 2302 ++ .../tui/src/chatwidget/tests/review_mode.rs | 1551 ++ .../codex-rs/tui/src/chatwidget/tests/side.rs | 310 + .../src/chatwidget/tests/slash_commands.rs | 1619 ++ ...pproval_history_decision_aborted_long.snap | 6 + ...al_history_decision_aborted_multiline.snap | 5 + ...roval_history_decision_approved_short.snap | 5 + ...al_requests__exec_approval_modal_exec.snap | 39 + .../src/chatwidget/tests/status_and_layout.rs | 2659 +++ .../chatwidget/tests/status_command_tests.rs | 164 + .../tests/status_surface_previews.rs | 261 + vendor/codex/codex-rs/tui/src/cli.rs | 137 + .../codex/codex-rs/tui/src/clipboard_copy.rs | 638 + .../codex/codex-rs/tui/src/clipboard_paste.rs | 549 + .../codex-rs/tui/src/collaboration_modes.rs | 62 + vendor/codex/codex-rs/tui/src/color.rs | 75 + .../codex/codex-rs/tui/src/custom_terminal.rs | 759 + vendor/codex/codex-rs/tui/src/cwd_prompt.rs | 317 + vendor/codex/codex-rs/tui/src/debug_config.rs | 903 + vendor/codex/codex-rs/tui/src/diff_render.rs | 2481 +++ .../codex/codex-rs/tui/src/exec_cell/mod.rs | 12 + .../codex/codex-rs/tui/src/exec_cell/model.rs | 176 + .../codex-rs/tui/src/exec_cell/render.rs | 1066 + vendor/codex/codex-rs/tui/src/exec_command.rs | 107 + .../src/external_agent_config_migration.rs | 1050 + ...external_agent_config_migration_startup.rs | 567 + .../codex/codex-rs/tui/src/external_editor.rs | 171 + vendor/codex/codex-rs/tui/src/file_search.rs | 133 + vendor/codex/codex-rs/tui/src/frames.rs | 71 + vendor/codex/codex-rs/tui/src/get_git_diff.rs | 119 + vendor/codex/codex-rs/tui/src/history_cell.rs | 4868 +++++ .../tui/src/history_cell/hook_cell.rs | 782 + .../codex/codex-rs/tui/src/insert_history.rs | 824 + vendor/codex/codex-rs/tui/src/key_hint.rs | 112 + vendor/codex/codex-rs/tui/src/lib.rs | 2481 +++ .../codex/codex-rs/tui/src/line_truncation.rs | 100 + vendor/codex/codex-rs/tui/src/live_wrap.rs | 285 + .../codex-rs/tui/src/local_chatgpt_auth.rs | 214 + vendor/codex/codex-rs/tui/src/main.rs | 78 + vendor/codex/codex-rs/tui/src/markdown.rs | 121 + .../codex/codex-rs/tui/src/markdown_render.rs | 1136 + .../codex-rs/tui/src/markdown_render_tests.rs | 1370 ++ .../codex/codex-rs/tui/src/markdown_stream.rs | 725 + .../codex/codex-rs/tui/src/mention_codec.rs | 306 + .../codex/codex-rs/tui/src/model_catalog.rs | 50 + .../codex/codex-rs/tui/src/model_migration.rs | 627 + vendor/codex/codex-rs/tui/src/multi_agents.rs | 806 + .../codex-rs/tui/src/notifications/bel.rs | 37 + .../codex-rs/tui/src/notifications/mod.rs | 135 + .../codex-rs/tui/src/notifications/osc9.rs | 127 + .../codex/codex-rs/tui/src/onboarding/auth.rs | 1250 ++ .../onboarding/auth/headless_chatgpt_login.rs | 308 + .../codex/codex-rs/tui/src/onboarding/mod.rs | 5 + .../tui/src/onboarding/onboarding_screen.rs | 546 + ..._tests__renders_snapshot_for_git_repo.snap | 15 + .../tui/src/onboarding/trust_directory.rs | 248 + .../codex-rs/tui/src/onboarding/welcome.rs | 190 + .../codex/codex-rs/tui/src/oss_selection.rs | 373 + .../codex/codex-rs/tui/src/pager_overlay.rs | 1305 ++ .../tui/src/public_widgets/composer_input.rs | 135 + .../codex-rs/tui/src/public_widgets/mod.rs | 1 + .../codex-rs/tui/src/render/highlight.rs | 1496 ++ .../codex-rs/tui/src/render/line_utils.rs | 59 + vendor/codex/codex-rs/tui/src/render/mod.rs | 50 + .../codex-rs/tui/src/render/renderable.rs | 412 + ...tests__ansi_family_foreground_palette.snap | 21 + .../codex/codex-rs/tui/src/resume_picker.rs | 2223 ++ .../codex/codex-rs/tui/src/selection_list.rs | 46 + vendor/codex/codex-rs/tui/src/session_log.rs | 215 + vendor/codex/codex-rs/tui/src/shimmer.rs | 80 + .../codex/codex-rs/tui/src/skills_helpers.rs | 54 + .../codex/codex-rs/tui/src/slash_command.rs | 242 + ...i__app__tests__agent_picker_item_name.snap | 9 + ...ter_long_transcript_fresh_header_only.snap | 10 + ...eader_fast_status_fast_capable_models.snap | 10 + ..._prompt__tests__cwd_prompt_fork_modal.snap | 14 + ...__cwd_prompt__tests__cwd_prompt_modal.snap | 14 + ..._tui__diff_render__tests__add_details.snap | 15 + ...s__ansi16_insert_delete_no_background.snap | 8 + ...__diff_render__tests__apply_add_block.snap | 14 + ...iff_render__tests__apply_delete_block.snap | 16 + ...er__tests__apply_multiple_files_block.snap | 18 + ...iff_render__tests__apply_update_block.snap | 16 + ..._block_line_numbers_three_digits_text.snap | 13 + ...__apply_update_block_relativizes_path.snap | 14 + ...__apply_update_block_wraps_long_lines.snap | 16 + ...ly_update_block_wraps_long_lines_text.snap | 15 + ...tests__apply_update_with_rename_block.snap | 16 + ...iff_render__tests__blank_context_line.snap | 15 + ...ff_render__tests__diff_gallery_120x40.snap | 44 + ...iff_render__tests__diff_gallery_80x24.snap | 28 + ...iff_render__tests__diff_gallery_94x35.snap | 39 + ...tests__single_line_replacement_counts.snap | 13 + ...ests__syntax_highlighted_insert_wraps.snap | 14 + ..._syntax_highlighted_insert_wraps_text.snap | 7 + ...ts__theme_scope_background_resolution.snap | 6 + ...er__tests__update_details_with_rename.snap | 17 + ...ests__vertical_ellipsis_between_hunks.snap | 21 + ...f_render__tests__wrap_behavior_insert.snap | 12 + ...xternal_agent_config_migration_prompt.snap | 23 + ...agent_config_migration_prompt_windows.snap | 24 + ..._tests__active_mcp_tool_call_snapshot.snap | 5 + ...__tests__coalesced_reads_dedupe_names.snap | 6 + ...coalesces_reads_across_multiple_calls.snap | 7 + ...sces_sequential_reads_within_one_call.snap | 8 + ...ompleted_mcp_tool_call_error_snapshot.snap | 6 + ...call_multiple_outputs_inline_snapshot.snap | 7 + ...p_tool_call_multiple_outputs_snapshot.snap | 10 + ...pleted_mcp_tool_call_success_snapshot.snap | 6 + ...cp_tool_call_wrapped_outputs_snapshot.snap | 13 + ..._error_event_oversized_input_snapshot.snap | 5 + ...tests__mcp_inventory_loading_snapshot.snap | 6 + ..._statuses_renders_status_only_servers.snap | 12 + ...om_statuses_renders_verbose_inventory.snap | 15 + ...sts_tools_for_hyphenated_server_names.snap | 16 + ...p_tools_output_masks_sensitive_values.snap | 26 + ...both_lines_wrap_with_correct_prefixes.snap | 9 + ...ut_wrap_uses_branch_then_eight_spaces.snap | 7 + ...with_extra_indent_on_subsequent_lines.snap | 8 + ...pdate_with_note_and_wrapping_snapshot.snap | 20 + ...ts__plan_update_without_note_snapshot.snap | 7 + ...put_chunk_leading_whitespace_snapshot.snap | 11 + ...cell__tests__ps_output_empty_snapshot.snap | 9 + ...ests__ps_output_long_command_snapshot.snap | 10 + ...sts__ps_output_many_sessions_snapshot.snap | 25 + ...__tests__ps_output_multiline_snapshot.snap | 13 + ...n_cell_multiline_with_stderr_snapshot.snap | 12 + ...s__session_header_indicates_yolo_mode.snap | 11 + ...nfo_availability_nux_tooltip_snapshot.snap | 12 + ...single_line_command_compact_when_fits.snap | 6 + ...nd_wraps_with_four_space_continuation.snap | 8 + ...rr_tail_more_than_five_lines_snapshot.snap | 10 + ...y_cell_numbers_multiple_remote_images.snap | 9 + ...istory_cell_renders_remote_image_urls.snap | 8 + ...wraps_and_prefixes_each_line_snapshot.snap | 9 + ...sts__web_search_history_cell_snapshot.snap | 6 + ...arch_history_cell_transcript_snapshot.snap | 6 + ...sts__markdown_render_complex_snapshot.snap | 62 + ...s__markdown_render_file_link_snapshot.snap | 5 + ...ration__tests__model_migration_prompt.snap | 18 + ...ts__model_migration_prompt_gpt5_codex.snap | 15 + ...odel_migration_prompt_gpt5_codex_mini.snap | 15 + ...s__model_migration_prompt_gpt5_family.snap | 13 + ...gents__tests__collab_agent_transcript.snap | 17 + ...nts__tests__collab_resume_interrupted.snap | 7 + ..._tests__static_overlay_snapshot_basic.snap | 14 + ...ests__static_overlay_wraps_long_lines.snap | 12 + ...ript_overlay_apply_patch_scroll_vt100.snap | 15 + ..._transcript_overlay_renders_live_tail.snap | 14 + ...ts__transcript_overlay_snapshot_basic.snap | 14 + ...e_picker__tests__resume_picker_screen.snap | 13 + ...er__tests__resume_picker_search_error.snap | 5 + ...me_picker__tests__resume_picker_table.snap | 8 + ...er__tests__resume_picker_thread_names.snap | 7 + ...ator_widget__tests__renders_truncated.snap | 6 + ...__tests__renders_with_queued_messages.snap | 12 + ...s__renders_with_queued_messages@macos.snap | 13 + ...t__tests__renders_with_working_header.snap | 6 + ...ders_wrapped_details_panama_two_lines.snap | 7 + ...te_prompt__tests__update_prompt_modal.snap | 13 + .../codex/codex-rs/tui/src/status/account.rs | 8 + vendor/codex/codex-rs/tui/src/status/card.rs | 734 + .../codex/codex-rs/tui/src/status/format.rs | 147 + .../codex/codex-rs/tui/src/status/helpers.rs | 276 + vendor/codex/codex-rs/tui/src/status/mod.rs | 33 + .../codex-rs/tui/src/status/rate_limits.rs | 442 + ...ched_limits_hide_credits_without_flag.snap | 23 + ..._snapshot_includes_credits_and_limits.snap | 23 + ..._status_snapshot_includes_forked_from.snap | 23 + ...tatus_snapshot_includes_monthly_limit.snap | 21 + ...s_snapshot_includes_reasoning_details.snap | 22 + ...snapshot_shows_missing_limits_message.snap | 21 + ...apshot_shows_refreshing_limits_notice.snap | 22 + ...s_snapshot_shows_stale_limits_message.snap | 23 + ...shot_shows_unavailable_limits_message.snap | 21 + ...efreshing_empty_limits_as_unavailable.snap | 21 + ...snapshot_truncates_in_narrow_terminal.snap | 21 + ...s_default_reasoning_when_config_empty.snap | 21 + vendor/codex/codex-rs/tui/src/status/tests.rs | 1214 ++ .../tui/src/status_indicator_widget.rs | 461 + .../codex-rs/tui/src/streaming/chunking.rs | 457 + .../codex-rs/tui/src/streaming/commit_tick.rs | 214 + .../codex-rs/tui/src/streaming/controller.rs | 401 + .../codex/codex-rs/tui/src/streaming/mod.rs | 126 + vendor/codex/codex-rs/tui/src/style.rs | 44 + .../codex-rs/tui/src/terminal_palette.rs | 422 + .../codex/codex-rs/tui/src/terminal_title.rs | 225 + vendor/codex/codex-rs/tui/src/test_backend.rs | 125 + vendor/codex/codex-rs/tui/src/test_support.rs | 6 + .../codex/codex-rs/tui/src/text_formatting.rs | 580 + vendor/codex/codex-rs/tui/src/theme_picker.rs | 654 + vendor/codex/codex-rs/tui/src/tooltips.rs | 573 + vendor/codex/codex-rs/tui/src/tui.rs | 834 + .../codex-rs/tui/src/tui/event_stream.rs | 511 + .../tui/src/tui/frame_rate_limiter.rs | 62 + .../codex-rs/tui/src/tui/frame_requester.rs | 354 + .../codex/codex-rs/tui/src/tui/job_control.rs | 182 + vendor/codex/codex-rs/tui/src/ui_consts.rs | 11 + .../codex/codex-rs/tui/src/update_action.rs | 127 + .../codex/codex-rs/tui/src/update_prompt.rs | 313 + vendor/codex/codex-rs/tui/src/updates.rs | 235 + vendor/codex/codex-rs/tui/src/version.rs | 2 + vendor/codex/codex-rs/tui/src/voice.rs | 489 + vendor/codex/codex-rs/tui/src/wrapping.rs | 1407 ++ vendor/codex/codex-rs/tui/styles.md | 21 + vendor/codex/codex-rs/tui/tests/all.rs | 8 + .../tui/tests/fixtures/oss-story.jsonl | 8041 +++++++ .../tests/manager_dependency_regression.rs | 55 + vendor/codex/codex-rs/tui/tests/suite/mod.rs | 6 + .../tui/tests/suite/model_availability_nux.rs | 204 + .../tui/tests/suite/no_panic_on_startup.rs | 127 + .../tui/tests/suite/status_indicator.rs | 24 + .../codex-rs/tui/tests/suite/vt100_history.rs | 166 + .../tui/tests/suite/vt100_live_commit.rs | 45 + .../codex/codex-rs/tui/tests/test_backend.rs | 4 + vendor/codex/codex-rs/tui/tooltips.txt | 26 + vendor/codex/codex-rs/uds/BUILD.bazel | 6 + vendor/codex/codex-rs/uds/Cargo.toml | 29 + vendor/codex/codex-rs/uds/src/lib.rs | 331 + vendor/codex/codex-rs/uds/src/lib_tests.rs | 121 + .../codex-rs/utils/absolute-path/BUILD.bazel | 6 + .../codex-rs/utils/absolute-path/Cargo.toml | 24 + .../utils/absolute-path/src/absolutize.rs | 171 + .../codex-rs/utils/absolute-path/src/lib.rs | 617 + .../utils/approval-presets/BUILD.bazel | 6 + .../utils/approval-presets/Cargo.toml | 11 + .../utils/approval-presets/src/lib.rs | 46 + vendor/codex/codex-rs/utils/cache/BUILD.bazel | 6 + vendor/codex/codex-rs/utils/cache/Cargo.toml | 16 + vendor/codex/codex-rs/utils/cache/src/lib.rs | 193 + .../codex-rs/utils/cargo-bin/BUILD.bazel | 17 + .../codex/codex-rs/utils/cargo-bin/Cargo.toml | 13 + .../codex/codex-rs/utils/cargo-bin/README.md | 20 + .../codex-rs/utils/cargo-bin/repo_root.marker | 1 + .../codex/codex-rs/utils/cargo-bin/src/lib.rs | 226 + vendor/codex/codex-rs/utils/cli/BUILD.bazel | 6 + vendor/codex/codex-rs/utils/cli/Cargo.toml | 17 + .../utils/cli/src/approval_mode_cli_arg.rs | 38 + .../codex-rs/utils/cli/src/config_override.rs | 200 + .../utils/cli/src/format_env_display.rs | 72 + vendor/codex/codex-rs/utils/cli/src/lib.rs | 11 + .../utils/cli/src/sandbox_mode_cli_arg.rs | 47 + .../codex-rs/utils/cli/src/shared_options.rs | 174 + .../codex/codex-rs/utils/elapsed/BUILD.bazel | 6 + .../codex/codex-rs/utils/elapsed/Cargo.toml | 8 + .../codex/codex-rs/utils/elapsed/src/lib.rs | 71 + .../codex-rs/utils/fuzzy-match/BUILD.bazel | 6 + .../codex-rs/utils/fuzzy-match/Cargo.toml | 8 + .../codex-rs/utils/fuzzy-match/src/lib.rs | 168 + .../codex/codex-rs/utils/home-dir/BUILD.bazel | 6 + .../codex/codex-rs/utils/home-dir/Cargo.toml | 16 + .../codex/codex-rs/utils/home-dir/src/lib.rs | 134 + vendor/codex/codex-rs/utils/image/BUILD.bazel | 6 + vendor/codex/codex-rs/utils/image/Cargo.toml | 19 + .../codex/codex-rs/utils/image/src/error.rs | 55 + vendor/codex/codex-rs/utils/image/src/lib.rs | 349 + .../codex-rs/utils/json-to-toml/BUILD.bazel | 6 + .../codex-rs/utils/json-to-toml/Cargo.toml | 15 + .../codex-rs/utils/json-to-toml/src/lib.rs | 83 + vendor/codex/codex-rs/utils/oss/BUILD.bazel | 6 + vendor/codex/codex-rs/utils/oss/Cargo.toml | 14 + vendor/codex/codex-rs/utils/oss/src/lib.rs | 61 + .../utils/output-truncation/BUILD.bazel | 6 + .../utils/output-truncation/Cargo.toml | 15 + .../utils/output-truncation/src/lib.rs | 142 + .../output-truncation/src/truncate_tests.rs | 282 + .../codex-rs/utils/path-utils/BUILD.bazel | 6 + .../codex-rs/utils/path-utils/Cargo.toml | 17 + .../codex-rs/utils/path-utils/src/env.rs | 19 + .../codex-rs/utils/path-utils/src/lib.rs | 219 + .../utils/path-utils/src/path_utils_tests.rs | 115 + .../codex/codex-rs/utils/plugins/BUILD.bazel | 6 + .../codex/codex-rs/utils/plugins/Cargo.toml | 25 + .../codex/codex-rs/utils/plugins/src/lib.rs | 9 + .../utils/plugins/src/mcp_connector.rs | 50 + .../utils/plugins/src/mention_syntax.rs | 7 + .../utils/plugins/src/plugin_namespace.rs | 121 + vendor/codex/codex-rs/utils/pty/BUILD.bazel | 6 + vendor/codex/codex-rs/utils/pty/Cargo.toml | 34 + vendor/codex/codex-rs/utils/pty/README.md | 64 + vendor/codex/codex-rs/utils/pty/src/lib.rs | 37 + vendor/codex/codex-rs/utils/pty/src/pipe.rs | 290 + .../codex/codex-rs/utils/pty/src/process.rs | 410 + .../codex-rs/utils/pty/src/process_group.rs | 184 + vendor/codex/codex-rs/utils/pty/src/pty.rs | 483 + vendor/codex/codex-rs/utils/pty/src/tests.rs | 1055 + .../codex-rs/utils/pty/src/win/conpty.rs | 190 + .../codex/codex-rs/utils/pty/src/win/mod.rs | 174 + .../utils/pty/src/win/procthreadattr.rs | 91 + .../codex-rs/utils/pty/src/win/psuedocon.rs | 377 + .../codex-rs/utils/readiness/BUILD.bazel | 6 + .../codex/codex-rs/utils/readiness/Cargo.toml | 18 + .../codex/codex-rs/utils/readiness/src/lib.rs | 333 + .../utils/rustls-provider/BUILD.bazel | 6 + .../codex-rs/utils/rustls-provider/Cargo.toml | 11 + .../codex-rs/utils/rustls-provider/src/lib.rs | 12 + .../utils/sandbox-summary/BUILD.bazel | 6 + .../codex-rs/utils/sandbox-summary/Cargo.toml | 17 + .../sandbox-summary/src/config_summary.rs | 39 + .../codex-rs/utils/sandbox-summary/src/lib.rs | 5 + .../sandbox-summary/src/sandbox_summary.rs | 103 + .../utils/sleep-inhibitor/BUILD.bazel | 6 + .../codex-rs/utils/sleep-inhibitor/Cargo.toml | 25 + .../utils/sleep-inhibitor/src/dummy.rs | 12 + .../sleep-inhibitor/src/iokit_bindings.rs | 27 + .../codex-rs/utils/sleep-inhibitor/src/lib.rs | 113 + .../sleep-inhibitor/src/linux_inhibitor.rs | 240 + .../utils/sleep-inhibitor/src/macos.rs | 107 + .../sleep-inhibitor/src/windows_inhibitor.rs | 119 + .../codex-rs/utils/stream-parser/BUILD.bazel | 6 + .../codex-rs/utils/stream-parser/Cargo.toml | 11 + .../codex-rs/utils/stream-parser/README.md | 97 + .../utils/stream-parser/src/assistant_text.rs | 130 + .../utils/stream-parser/src/citation.rs | 179 + .../stream-parser/src/inline_hidden_tag.rs | 323 + .../codex-rs/utils/stream-parser/src/lib.rs | 23 + .../utils/stream-parser/src/proposed_plan.rs | 212 + .../utils/stream-parser/src/stream_text.rs | 36 + .../stream-parser/src/tagged_line_parser.rs | 249 + .../utils/stream-parser/src/utf8_stream.rs | 333 + .../codex/codex-rs/utils/string/BUILD.bazel | 6 + vendor/codex/codex-rs/utils/string/Cargo.toml | 14 + vendor/codex/codex-rs/utils/string/src/lib.rs | 163 + .../codex-rs/utils/string/src/truncate.rs | 156 + .../utils/string/src/truncate/tests.rs | 117 + .../codex/codex-rs/utils/template/BUILD.bazel | 6 + .../codex/codex-rs/utils/template/Cargo.toml | 11 + .../codex/codex-rs/utils/template/README.md | 41 + .../codex/codex-rs/utils/template/src/lib.rs | 442 + vendor/codex/codex-rs/v8-poc/.gitignore | 2 + vendor/codex/codex-rs/v8-poc/BUILD.bazel | 12 + vendor/codex/codex-rs/v8-poc/Cargo.toml | 18 + vendor/codex/codex-rs/v8-poc/src/lib.rs | 65 + vendor/codex/codex-rs/vendor/BUILD.bazel | 17 + .../codex-rs/vendor/bubblewrap/.dir-locals.el | 1 + .../codex-rs/vendor/bubblewrap/.editorconfig | 5 + .../bubblewrap/.github/workflows/check.yml | 105 + .../vendor/bubblewrap/CODE-OF-CONDUCT.md | 3 + .../codex/codex-rs/vendor/bubblewrap/COPYING | 481 + .../codex/codex-rs/vendor/bubblewrap/LICENSE | 1 + .../codex/codex-rs/vendor/bubblewrap/NEWS.md | 51 + .../codex-rs/vendor/bubblewrap/README.md | 255 + .../codex-rs/vendor/bubblewrap/SECURITY.md | 42 + .../codex-rs/vendor/bubblewrap/bind-mount.c | 598 + .../codex-rs/vendor/bubblewrap/bind-mount.h | 54 + .../codex-rs/vendor/bubblewrap/bubblewrap.c | 3641 ++++ .../codex-rs/vendor/bubblewrap/bubblewrap.jpg | Bin 0 -> 40239 bytes .../codex-rs/vendor/bubblewrap/bwrap.xml | 648 + .../vendor/bubblewrap/ci/builddeps.sh | 107 + .../vendor/bubblewrap/ci/enable-userns.sh | 6 + .../vendor/bubblewrap/completions/bash/bwrap | 80 + .../bubblewrap/completions/bash/meson.build | 35 + .../vendor/bubblewrap/completions/meson.build | 7 + .../vendor/bubblewrap/completions/zsh/_bwrap | 115 + .../bubblewrap/completions/zsh/meson.build | 7 + .../bubblewrap/demos/bubblewrap-shell.sh | 34 + .../vendor/bubblewrap/demos/flatpak-run.sh | 65 + .../vendor/bubblewrap/demos/flatpak.bpf | Bin 0 -> 744 bytes .../bubblewrap/demos/userns-block-fd.py | 39 + .../codex-rs/vendor/bubblewrap/meson.build | 171 + .../vendor/bubblewrap/meson_options.txt | 73 + .../codex-rs/vendor/bubblewrap/network.c | 199 + .../codex-rs/vendor/bubblewrap/network.h | 22 + .../bubblewrap/packaging/bubblewrap.spec | 48 + .../vendor/bubblewrap/release-checklist.md | 18 + .../vendor/bubblewrap/tests/libtest-core.sh | 190 + .../vendor/bubblewrap/tests/libtest.sh | 115 + .../vendor/bubblewrap/tests/meson.build | 72 + .../vendor/bubblewrap/tests/test-run.sh | 692 + .../vendor/bubblewrap/tests/test-seccomp.py | 635 + .../bubblewrap/tests/test-specifying-pidns.sh | 28 + .../tests/test-specifying-userns.sh | 28 + .../vendor/bubblewrap/tests/test-utils.c | 247 + .../vendor/bubblewrap/tests/try-syscall.c | 180 + .../tests/use-as-subproject/.gitignore | 2 + .../bubblewrap/tests/use-as-subproject/README | 3 + .../use-as-subproject/assert-correct-rpath.py | 26 + .../tests/use-as-subproject/config.h | 1 + .../tests/use-as-subproject/dummy-config.h.in | 1 + .../tests/use-as-subproject/meson.build | 20 + .../codex-rs/vendor/bubblewrap/uncrustify.cfg | 136 + .../codex-rs/vendor/bubblewrap/uncrustify.sh | 2 + .../codex/codex-rs/vendor/bubblewrap/utils.c | 1080 + .../codex/codex-rs/vendor/bubblewrap/utils.h | 217 + .../codex-rs/windows-sandbox-rs/BUILD.bazel | 10 + .../codex-rs/windows-sandbox-rs/Cargo.toml | 97 + .../codex-rs/windows-sandbox-rs/build.rs | 15 + .../codex-windows-sandbox-setup.manifest | 10 + .../windows-sandbox-rs/sandbox_smoketests.py | 626 + .../codex-rs/windows-sandbox-rs/src/acl.rs | 638 + .../codex-rs/windows-sandbox-rs/src/allow.rs | 264 + .../codex-rs/windows-sandbox-rs/src/audit.rs | 334 + .../src/bin/command_runner.rs | 12 + .../windows-sandbox-rs/src/bin/setup_main.rs | 12 + .../codex-rs/windows-sandbox-rs/src/cap.rs | 121 + .../windows-sandbox-rs/src/conpty/mod.rs | 151 + .../windows-sandbox-rs/src/desktop.rs | 196 + .../codex-rs/windows-sandbox-rs/src/dpapi.rs | 85 + .../src/elevated/command_runner_win.rs | 569 + .../src/elevated/cwd_junction.rs | 142 + .../src/elevated/ipc_framed.rs | 192 + .../src/elevated/runner_client.rs | 213 + .../src/elevated/runner_pipe.rs | 117 + .../windows-sandbox-rs/src/elevated_impl.rs | 544 + .../codex-rs/windows-sandbox-rs/src/env.rs | 174 + .../windows-sandbox-rs/src/firewall.rs | 512 + .../src/helper_materialization.rs | 421 + .../windows-sandbox-rs/src/hide_users.rs | 160 + .../windows-sandbox-rs/src/identity.rs | 232 + .../codex-rs/windows-sandbox-rs/src/lib.rs | 724 + .../windows-sandbox-rs/src/logging.rs | 91 + .../src/path_normalization.rs | 28 + .../codex-rs/windows-sandbox-rs/src/policy.rs | 60 + .../src/proc_thread_attr.rs | 100 + .../windows-sandbox-rs/src/process.rs | 355 + .../windows-sandbox-rs/src/read_acl_mutex.rs | 62 + .../windows-sandbox-rs/src/sandbox_users.rs | 496 + .../windows-sandbox-rs/src/sandbox_utils.rs | 67 + .../windows-sandbox-rs/src/setup_error.rs | 280 + .../windows-sandbox-rs/src/setup_main_win.rs | 899 + .../src/setup_orchestrator.rs | 1605 ++ .../windows-sandbox-rs/src/spawn_prep.rs | 411 + .../src/ssh_config_dependencies.rs | 249 + .../codex-rs/windows-sandbox-rs/src/token.rs | 379 + .../src/unified_exec/backends/elevated.rs | 118 + .../src/unified_exec/backends/legacy.rs | 439 + .../src/unified_exec/backends/mod.rs | 3 + .../unified_exec/backends/windows_common.rs | 191 + .../src/unified_exec/session.rs | 83 + .../src/unified_exec/tests.rs | 535 + .../windows-sandbox-rs/src/winutil.rs | 236 + .../windows-sandbox-rs/src/workspace_acl.rs | 30 + vendor/codex/defs.bzl | 375 + vendor/codex/docs/CLA.md | 49 + vendor/codex/docs/agents_md.md | 7 + vendor/codex/docs/authentication.md | 3 + vendor/codex/docs/config.md | 111 + vendor/codex/docs/contributing.md | 97 + vendor/codex/docs/example-config.md | 3 + vendor/codex/docs/exec.md | 3 + vendor/codex/docs/execpolicy.md | 3 + .../docs/exit-confirmation-prompt-design.md | 96 + vendor/codex/docs/getting-started.md | 3 + vendor/codex/docs/install.md | 64 + vendor/codex/docs/js_repl.md | 155 + vendor/codex/docs/license.md | 3 + vendor/codex/docs/open-source-fund.md | 8 + vendor/codex/docs/sandbox.md | 3 + vendor/codex/docs/skills.md | 3 + vendor/codex/docs/slash_commands.md | 3 + vendor/codex/docs/tui-alternate-screen.md | 130 + vendor/codex/docs/tui-chat-composer.md | 348 + vendor/codex/docs/tui-request-user-input.md | 41 + .../codex/docs/tui-stream-chunking-review.md | 124 + .../codex/docs/tui-stream-chunking-tuning.md | 98 + .../docs/tui-stream-chunking-validation.md | 107 + vendor/codex/flake.lock | 48 + vendor/codex/flake.nix | 87 + vendor/codex/justfile | 119 + vendor/codex/package.json | 36 + vendor/codex/patches/BUILD.bazel | 26 + ...seil_windows_gnullvm_thread_identity.patch | 16 + .../patches/aws-lc-sys_memcmp_check.patch | 114 + ...aws-lc-sys_windows_msvc_memcmp_probe.patch | 38 + ...ws-lc-sys_windows_msvc_prebuilt_nasm.patch | 137 + .../patches/bzip2_windows_stack_args.patch | 23 + .../llvm_windows_symlink_extract.patch | 64 + .../ring_windows_msvc_include_dirs.patch | 100 + .../rules_rs_windows_exec_linker.patch | 66 + .../rules_rs_windows_gnullvm_exec.patch | 212 + ...ows_bootstrap_process_wrapper_linker.patch | 21 + ...st_windows_build_script_runner_paths.patch | 171 + .../rules_rust_windows_exec_bin_target.patch | 71 + ...t_windows_exec_msvc_build_script_env.patch | 184 + ...les_rust_windows_exec_rustc_dev_rlib.patch | 11 + .../patches/rules_rust_windows_exec_std.patch | 178 + ...es_rust_windows_gnullvm_build_script.patch | 78 + ...s_rust_windows_msvc_direct_link_args.patch | 93 + ...ws_process_wrapper_skip_temp_outputs.patch | 15 + .../patches/rusty_v8_prebuilt_out_dir.patch | 74 + vendor/codex/patches/v8_bazel_rules.patch | 274 + vendor/codex/patches/v8_module_deps.patch | 270 + .../codex/patches/v8_source_portability.patch | 327 + .../webrtc-sys_hermetic_darwin_sysroot.patch | 75 + vendor/codex/patches/windows-link.patch | 10 + .../codex/patches/xz_windows_stack_args.patch | 14 + .../zstd-sys_windows_msvc_include_dirs.patch | 41 + vendor/codex/pnpm-lock.yaml | 5249 +++++ vendor/codex/pnpm-workspace.yaml | 12 + vendor/codex/rbe.bzl | 42 + vendor/codex/scripts/asciicheck.py | 127 + .../codex/scripts/check-module-bazel-lock.sh | 8 + vendor/codex/scripts/check_blob_size.py | 193 + vendor/codex/scripts/debug-codex.sh | 10 + vendor/codex/scripts/install/install.ps1 | 750 + vendor/codex/scripts/install/install.sh | 768 + .../scripts/list-bazel-clippy-targets.sh | 20 + .../scripts/list-bazel-release-targets.sh | 16 + .../mock_responses_websocket_server.py | 195 + vendor/codex/scripts/readme_toc.py | 120 + .../codex/scripts/run_tui_with_exec_server.sh | 61 + vendor/codex/scripts/stage_npm_packages.py | 206 + vendor/codex/scripts/start-codex-exec.sh | 185 + vendor/codex/scripts/test-remote-env.sh | 137 + vendor/codex/sdk/python-runtime/README.md | 9 + .../codex/sdk/python-runtime/hatch_build.py | 30 + .../codex/sdk/python-runtime/pyproject.toml | 45 + .../src/codex_cli_bin/__init__.py | 19 + vendor/codex/sdk/python/README.md | 103 + vendor/codex/sdk/python/_runtime_setup.py | 359 + vendor/codex/sdk/python/docs/api-reference.md | 207 + vendor/codex/sdk/python/docs/faq.md | 98 + .../codex/sdk/python/docs/getting-started.md | 108 + .../01_quickstart_constructor/async.py | 32 + .../01_quickstart_constructor/sync.py | 24 + .../sdk/python/examples/02_turn_run/async.py | 43 + .../sdk/python/examples/02_turn_run/sync.py | 34 + .../examples/03_turn_stream_events/async.py | 63 + .../examples/03_turn_stream_events/sync.py | 55 + .../examples/04_models_and_metadata/async.py | 26 + .../examples/04_models_and_metadata/sync.py | 18 + .../examples/05_existing_thread/async.py | 34 + .../examples/05_existing_thread/sync.py | 25 + .../06_thread_lifecycle_and_controls/async.py | 70 + .../06_thread_lifecycle_and_controls/sync.py | 63 + .../examples/07_image_and_text/async.py | 42 + .../python/examples/07_image_and_text/sync.py | 33 + .../examples/08_local_image_and_text/async.py | 43 + .../examples/08_local_image_and_text/sync.py | 34 + .../python/examples/09_async_parity/sync.py | 31 + .../10_error_handling_and_retry/async.py | 98 + .../10_error_handling_and_retry/sync.py | 47 + .../python/examples/11_cli_mini_app/async.py | 96 + .../python/examples/11_cli_mini_app/sync.py | 89 + .../12_turn_params_kitchen_sink/async.py | 88 + .../12_turn_params_kitchen_sink/sync.py | 78 + .../13_model_select_and_turn_params/async.py | 125 + .../13_model_select_and_turn_params/sync.py | 116 + .../python/examples/14_turn_controls/async.py | 71 + .../python/examples/14_turn_controls/sync.py | 63 + vendor/codex/sdk/python/examples/README.md | 85 + .../codex/sdk/python/examples/_bootstrap.py | 152 + .../python/notebooks/sdk_walkthrough.ipynb | 587 + vendor/codex/sdk/python/pyproject.toml | 62 + .../python/scripts/update_sdk_artifacts.py | 1100 + .../python/src/codex_app_server/__init__.py | 113 + .../python/src/codex_app_server/_inputs.py | 63 + .../sdk/python/src/codex_app_server/_run.py | 112 + .../sdk/python/src/codex_app_server/api.py | 755 + .../src/codex_app_server/async_client.py | 208 + .../sdk/python/src/codex_app_server/client.py | 541 + .../sdk/python/src/codex_app_server/errors.py | 125 + .../codex_app_server/generated/__init__.py | 1 + .../generated/notification_registry.py | 122 + .../src/codex_app_server/generated/v2_all.py | 7764 +++++++ .../sdk/python/src/codex_app_server/models.py | 99 + .../sdk/python/src/codex_app_server/py.typed | 0 .../sdk/python/src/codex_app_server/retry.py | 41 + vendor/codex/sdk/python/tests/conftest.py | 16 + .../test_artifact_workflow_and_binaries.py | 514 + .../tests/test_async_client_behavior.py | 64 + .../python/tests/test_client_rpc_methods.py | 95 + .../python/tests/test_contract_generation.py | 52 + .../tests/test_public_api_runtime_behavior.py | 575 + .../tests/test_public_api_signatures.py | 260 + .../tests/test_real_app_server_integration.py | 545 + vendor/codex/sdk/typescript/.prettierignore | 3 + vendor/codex/sdk/typescript/.prettierrc | 5 + vendor/codex/sdk/typescript/README.md | 149 + vendor/codex/sdk/typescript/eslint.config.js | 21 + vendor/codex/sdk/typescript/jest.config.cjs | 32 + vendor/codex/sdk/typescript/package.json | 67 + .../sdk/typescript/samples/basic_streaming.ts | 90 + .../codex/sdk/typescript/samples/helpers.ts | 8 + .../typescript/samples/structured_output.ts | 22 + .../samples/structured_output_zod.ts | 19 + vendor/codex/sdk/typescript/src/codex.ts | 39 + .../codex/sdk/typescript/src/codexOptions.ts | 22 + vendor/codex/sdk/typescript/src/events.ts | 80 + vendor/codex/sdk/typescript/src/exec.ts | 389 + vendor/codex/sdk/typescript/src/index.ts | 40 + vendor/codex/sdk/typescript/src/items.ts | 127 + .../sdk/typescript/src/outputSchemaFile.ts | 40 + vendor/codex/sdk/typescript/src/thread.ts | 155 + .../codex/sdk/typescript/src/threadOptions.ts | 20 + .../codex/sdk/typescript/src/turnOptions.ts | 6 + .../codex/sdk/typescript/tests/abort.test.ts | 165 + .../sdk/typescript/tests/codexExecSpy.ts | 37 + .../codex/sdk/typescript/tests/exec.test.ts | 145 + .../sdk/typescript/tests/responsesProxy.ts | 225 + vendor/codex/sdk/typescript/tests/run.test.ts | 807 + .../sdk/typescript/tests/runStreamed.test.ts | 207 + .../sdk/typescript/tests/setupCodexHome.ts | 28 + .../codex/sdk/typescript/tests/testCodex.ts | 106 + vendor/codex/sdk/typescript/tsconfig.json | 24 + vendor/codex/sdk/typescript/tsup.config.ts | 12 + vendor/codex/third_party/meriyah/LICENSE | 15 + vendor/codex/third_party/v8/BUILD.bazel | 352 + vendor/codex/third_party/v8/README.md | 59 + .../third_party/v8/rusty_v8_146_4_0.sha256 | 10 + .../codex/third_party/v8/v8_crate.BUILD.bazel | 41 + vendor/codex/third_party/wezterm/LICENSE | 21 + .../argument-comment-lint/.cargo/config.toml | 6 + .../tools/argument-comment-lint/.gitignore | 1 + .../tools/argument-comment-lint/BUILD.bazel | 32 + .../tools/argument-comment-lint/Cargo.lock | 1653 ++ .../tools/argument-comment-lint/Cargo.toml | 24 + .../tools/argument-comment-lint/README.md | 170 + .../argument-comment-lint | 79 + .../tools/argument-comment-lint/driver.rs | 43 + .../argument-comment-lint/lint_aspect.bzl | 188 + .../list-bazel-targets.sh | 13 + .../run-prebuilt-linter.py | 45 + .../codex/tools/argument-comment-lint/run.py | 35 + .../argument-comment-lint/rust-toolchain | 3 + .../src/bin/argument-comment-lint.rs | 301 + .../src/comment_parser.rs | 63 + .../tools/argument-comment-lint/src/lib.rs | 274 + .../test_wrapper_common.py | 121 + .../ui/allow_char_literals.rs | 9 + .../ui/allow_string_literals.rs | 9 + .../ui/comment_matches.rs | 12 + .../ui/comment_matches_multiline.rs | 15 + .../ui/comment_mismatch.rs | 10 + .../ui/comment_mismatch.stderr | 15 + .../ui/ignore_external_methods.rs | 9 + .../ui/uncommented_literal.rs | 18 + .../ui/uncommented_literal.stderr | 26 + .../argument-comment-lint/wrapper_common.py | 278 + .../workspace_root_test_launcher.bat.tpl | 126 + .../codex/workspace_root_test_launcher.sh.tpl | 119 + 3959 files changed, 953751 insertions(+), 7 deletions(-) delete mode 100644 .gitmodules delete mode 160000 vendor/codex create mode 100644 vendor/codex/.bazelignore create mode 100644 vendor/codex/.bazelrc create mode 100644 vendor/codex/.bazelversion create mode 100644 vendor/codex/.codespellignore create mode 100644 vendor/codex/.codespellrc create mode 100644 vendor/codex/.codex/skills/babysit-pr/SKILL.md create mode 100644 vendor/codex/.codex/skills/babysit-pr/agents/openai.yaml create mode 100644 vendor/codex/.codex/skills/babysit-pr/references/github-api-notes.md create mode 100644 vendor/codex/.codex/skills/babysit-pr/references/heuristics.md create mode 100644 vendor/codex/.codex/skills/babysit-pr/scripts/gh_pr_watch.py create mode 100644 vendor/codex/.codex/skills/babysit-pr/scripts/test_gh_pr_watch.py create mode 100644 vendor/codex/.codex/skills/code-review-breaking-changes/SKILL.md create mode 100644 vendor/codex/.codex/skills/code-review-change-size/SKILL.md create mode 100644 vendor/codex/.codex/skills/code-review-context/SKILL.md create mode 100644 vendor/codex/.codex/skills/code-review-testing/SKILL.md create mode 100644 vendor/codex/.codex/skills/code-review/SKILL.md create mode 100644 vendor/codex/.codex/skills/codex-bug/SKILL.md create mode 100644 vendor/codex/.codex/skills/codex-pr-body/SKILL.md create mode 100644 vendor/codex/.codex/skills/remote-tests/SKILL.md create mode 100644 vendor/codex/.codex/skills/test-tui/SKILL.md create mode 100644 vendor/codex/.devcontainer/Dockerfile create mode 100644 vendor/codex/.devcontainer/Dockerfile.secure create mode 100644 vendor/codex/.devcontainer/README.md create mode 100644 vendor/codex/.devcontainer/devcontainer.json create mode 100644 vendor/codex/.devcontainer/devcontainer.secure.json create mode 100644 vendor/codex/.devcontainer/init-firewall.sh create mode 100644 vendor/codex/.devcontainer/post-start.sh create mode 100644 vendor/codex/.devcontainer/post_install.py create mode 100644 vendor/codex/.gitattributes create mode 100644 vendor/codex/.github/CODEOWNERS create mode 100644 vendor/codex/.github/ISSUE_TEMPLATE/1-codex-app.yml create mode 100644 vendor/codex/.github/ISSUE_TEMPLATE/2-extension.yml create mode 100644 vendor/codex/.github/ISSUE_TEMPLATE/3-cli.yml create mode 100644 vendor/codex/.github/ISSUE_TEMPLATE/4-bug-report.yml create mode 100644 vendor/codex/.github/ISSUE_TEMPLATE/5-feature-request.yml create mode 100644 vendor/codex/.github/ISSUE_TEMPLATE/6-docs-issue.yml create mode 100644 vendor/codex/.github/actions/linux-code-sign/action.yml create mode 100644 vendor/codex/.github/actions/macos-code-sign/action.yml create mode 100644 vendor/codex/.github/actions/macos-code-sign/codex.entitlements.plist create mode 100644 vendor/codex/.github/actions/macos-code-sign/notary_helpers.sh create mode 100644 vendor/codex/.github/actions/prepare-bazel-ci/action.yml create mode 100644 vendor/codex/.github/actions/run-argument-comment-lint/action.yml create mode 100644 vendor/codex/.github/actions/setup-bazel-ci/action.yml create mode 100644 vendor/codex/.github/actions/setup-rusty-v8-musl/action.yml create mode 100644 vendor/codex/.github/actions/windows-code-sign/action.yml create mode 100644 vendor/codex/.github/blob-size-allowlist.txt create mode 100644 vendor/codex/.github/codex-cli-splash.png create mode 100644 vendor/codex/.github/codex/home/config.toml create mode 100644 vendor/codex/.github/codex/labels/codex-attempt.md create mode 100644 vendor/codex/.github/codex/labels/codex-review.md create mode 100644 vendor/codex/.github/codex/labels/codex-rust-review.md create mode 100644 vendor/codex/.github/codex/labels/codex-triage.md create mode 100644 vendor/codex/.github/dependabot.yaml create mode 100644 vendor/codex/.github/dotslash-argument-comment-lint-config.json create mode 100644 vendor/codex/.github/dotslash-config.json create mode 100644 vendor/codex/.github/dotslash-zsh-config.json create mode 100644 vendor/codex/.github/pull_request_template.md create mode 100644 vendor/codex/.github/scripts/build-zsh-release-artifact.sh create mode 100644 vendor/codex/.github/scripts/install-musl-build-tools.sh create mode 100644 vendor/codex/.github/scripts/run-argument-comment-lint-bazel.sh create mode 100644 vendor/codex/.github/scripts/run-bazel-ci.sh create mode 100644 vendor/codex/.github/scripts/rusty_v8_bazel.py create mode 100644 vendor/codex/.github/scripts/rusty_v8_module_bazel.py create mode 100644 vendor/codex/.github/scripts/test_rusty_v8_bazel.py create mode 100644 vendor/codex/.github/scripts/verify_bazel_clippy_lints.py create mode 100644 vendor/codex/.github/scripts/verify_cargo_workspace_manifests.py create mode 100644 vendor/codex/.github/scripts/verify_tui_core_boundary.py create mode 100644 vendor/codex/.github/workflows/Dockerfile.bazel create mode 100644 vendor/codex/.github/workflows/README.md create mode 100644 vendor/codex/.github/workflows/bazel.yml create mode 100644 vendor/codex/.github/workflows/blob-size-policy.yml create mode 100644 vendor/codex/.github/workflows/cargo-deny.yml create mode 100644 vendor/codex/.github/workflows/ci.yml create mode 100644 vendor/codex/.github/workflows/cla.yml create mode 100644 vendor/codex/.github/workflows/close-stale-contributor-prs.yml create mode 100644 vendor/codex/.github/workflows/codespell.yml create mode 100644 vendor/codex/.github/workflows/issue-deduplicator.yml create mode 100644 vendor/codex/.github/workflows/issue-labeler.yml create mode 100644 vendor/codex/.github/workflows/rust-ci-full.yml create mode 100644 vendor/codex/.github/workflows/rust-ci.yml create mode 100644 vendor/codex/.github/workflows/rust-release-argument-comment-lint.yml create mode 100644 vendor/codex/.github/workflows/rust-release-prepare.yml create mode 100644 vendor/codex/.github/workflows/rust-release-windows.yml create mode 100644 vendor/codex/.github/workflows/rust-release-zsh.yml create mode 100644 vendor/codex/.github/workflows/rust-release.yml create mode 100644 vendor/codex/.github/workflows/rusty-v8-release.yml create mode 100644 vendor/codex/.github/workflows/sdk.yml create mode 100644 vendor/codex/.github/workflows/v8-canary.yml create mode 100644 vendor/codex/.github/workflows/zstd create mode 100644 vendor/codex/.gitignore create mode 100644 vendor/codex/.markdownlint-cli2.yaml create mode 100644 vendor/codex/.npmrc create mode 100644 vendor/codex/.prettierignore create mode 100644 vendor/codex/.prettierrc.toml create mode 100644 vendor/codex/AGENTS.md create mode 100644 vendor/codex/BUILD.bazel create mode 100644 vendor/codex/CHANGELOG.md create mode 100644 vendor/codex/LICENSE create mode 100644 vendor/codex/MODULE.bazel create mode 100644 vendor/codex/MODULE.bazel.lock create mode 100644 vendor/codex/NOTICE create mode 100644 vendor/codex/README.md create mode 100644 vendor/codex/SECURITY.md create mode 100644 vendor/codex/announcement_tip.toml create mode 100644 vendor/codex/cliff.toml create mode 100644 vendor/codex/codex-cli/.dockerignore create mode 100644 vendor/codex/codex-cli/.gitignore create mode 100644 vendor/codex/codex-cli/Dockerfile create mode 100644 vendor/codex/codex-cli/bin/codex.js create mode 100644 vendor/codex/codex-cli/bin/rg create mode 100644 vendor/codex/codex-cli/package.json create mode 100644 vendor/codex/codex-cli/scripts/README.md create mode 100644 vendor/codex/codex-cli/scripts/build_container.sh create mode 100644 vendor/codex/codex-cli/scripts/build_npm_package.py create mode 100644 vendor/codex/codex-cli/scripts/init_firewall.sh create mode 100644 vendor/codex/codex-cli/scripts/install_native_deps.py create mode 100644 vendor/codex/codex-cli/scripts/run_in_container.sh create mode 100644 vendor/codex/codex-rs/.cargo/audit.toml create mode 100644 vendor/codex/codex-rs/.cargo/config.toml create mode 100644 vendor/codex/codex-rs/.config/nextest.toml create mode 100644 vendor/codex/codex-rs/.github/workflows/cargo-audit.yml create mode 100644 vendor/codex/codex-rs/.gitignore create mode 100644 vendor/codex/codex-rs/BUILD.bazel create mode 100644 vendor/codex/codex-rs/Cargo.lock create mode 100644 vendor/codex/codex-rs/Cargo.toml create mode 100644 vendor/codex/codex-rs/README.md create mode 100644 vendor/codex/codex-rs/agent-identity/BUILD.bazel create mode 100644 vendor/codex/codex-rs/agent-identity/Cargo.toml create mode 100644 vendor/codex/codex-rs/agent-identity/src/lib.rs create mode 100644 vendor/codex/codex-rs/analytics/BUILD.bazel create mode 100644 vendor/codex/codex-rs/analytics/Cargo.toml create mode 100644 vendor/codex/codex-rs/analytics/src/analytics_client_tests.rs create mode 100644 vendor/codex/codex-rs/analytics/src/client.rs create mode 100644 vendor/codex/codex-rs/analytics/src/events.rs create mode 100644 vendor/codex/codex-rs/analytics/src/facts.rs create mode 100644 vendor/codex/codex-rs/analytics/src/lib.rs create mode 100644 vendor/codex/codex-rs/analytics/src/reducer.rs create mode 100644 vendor/codex/codex-rs/ansi-escape/BUILD.bazel create mode 100644 vendor/codex/codex-rs/ansi-escape/Cargo.toml create mode 100644 vendor/codex/codex-rs/ansi-escape/README.md create mode 100644 vendor/codex/codex-rs/ansi-escape/src/lib.rs create mode 100644 vendor/codex/codex-rs/app-server-client/BUILD.bazel create mode 100644 vendor/codex/codex-rs/app-server-client/Cargo.toml create mode 100644 vendor/codex/codex-rs/app-server-client/README.md create mode 100644 vendor/codex/codex-rs/app-server-client/src/lib.rs create mode 100644 vendor/codex/codex-rs/app-server-client/src/remote.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/BUILD.bazel create mode 100644 vendor/codex/codex-rs/app-server-protocol/Cargo.toml create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ApplyPatchApprovalParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ApplyPatchApprovalResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ChatgptAuthTokensRefreshParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ChatgptAuthTokensRefreshResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ClientNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ClientRequest.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/CommandExecutionRequestApprovalParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/CommandExecutionRequestApprovalResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/DynamicToolCallParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/DynamicToolCallResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ExecCommandApprovalParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ExecCommandApprovalResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/FileChangeRequestApprovalParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/FileChangeRequestApprovalResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/FuzzyFileSearchParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/FuzzyFileSearchResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/FuzzyFileSearchSessionCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/FuzzyFileSearchSessionUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/JSONRPCError.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/JSONRPCErrorError.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/JSONRPCMessage.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/JSONRPCNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/JSONRPCRequest.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/JSONRPCResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/McpServerElicitationRequestParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/McpServerElicitationRequestResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/PermissionsRequestApprovalParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/PermissionsRequestApprovalResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/RequestId.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ServerNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ServerRequest.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ToolRequestUserInputParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/ToolRequestUserInputResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v1/InitializeParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v1/InitializeResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/AccountLoginCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/AccountRateLimitsUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/AccountUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/AgentMessageDeltaNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/AppListUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/AppsListParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/AppsListResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CancelLoginAccountParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CancelLoginAccountResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecOutputDeltaNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecResizeParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecResizeResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecTerminateParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecTerminateResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecWriteParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecWriteResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/CommandExecutionOutputDeltaNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ConfigBatchWriteParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ConfigReadParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ConfigReadResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ConfigRequirementsReadResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ConfigValueWriteParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ConfigWarningNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ConfigWriteResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ContextCompactedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/DeprecationNoticeNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/DeviceKeyCreateParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/DeviceKeyCreateResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/DeviceKeyPublicParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/DeviceKeyPublicResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/DeviceKeySignParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/DeviceKeySignResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ErrorNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ExperimentalFeatureEnablementSetParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ExperimentalFeatureEnablementSetResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ExperimentalFeatureListParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ExperimentalFeatureListResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ExternalAgentConfigDetectParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ExternalAgentConfigDetectResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ExternalAgentConfigImportCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ExternalAgentConfigImportParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ExternalAgentConfigImportResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FeedbackUploadParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FeedbackUploadResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FileChangeOutputDeltaNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FileChangePatchUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsChangedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsCopyParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsCopyResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsCreateDirectoryParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsCreateDirectoryResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsGetMetadataParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsGetMetadataResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsReadDirectoryParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsReadDirectoryResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsReadFileParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsReadFileResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsRemoveParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsRemoveResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsUnwatchParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsUnwatchResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsWatchParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsWatchResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsWriteFileParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/FsWriteFileResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/GetAccountParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/GetAccountRateLimitsResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/GetAccountResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/GuardianWarningNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/HookCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/HookStartedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ItemCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ItemGuardianApprovalReviewCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ItemGuardianApprovalReviewStartedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ItemStartedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ListMcpServerStatusParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ListMcpServerStatusResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/LoginAccountParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/LoginAccountResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/LogoutAccountResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/MarketplaceAddParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/MarketplaceAddResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/MarketplaceRemoveParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/MarketplaceRemoveResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpResourceReadParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpResourceReadResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpServerOauthLoginCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpServerOauthLoginParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpServerOauthLoginResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpServerRefreshResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpServerStatusUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpServerToolCallParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpServerToolCallResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/McpToolCallProgressNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ModelListParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ModelListResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ModelReroutedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/PlanDeltaNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/PluginInstallParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/PluginInstallResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/PluginListParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/PluginListResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/PluginReadParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/PluginReadResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/PluginUninstallParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/PluginUninstallResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/RawResponseItemCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ReasoningSummaryPartAddedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ReasoningSummaryTextDeltaNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ReasoningTextDeltaNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ReviewStartParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ReviewStartResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/SendAddCreditsNudgeEmailParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/SendAddCreditsNudgeEmailResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ServerRequestResolvedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/SkillsChangedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/SkillsConfigWriteParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/SkillsConfigWriteResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/SkillsListParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/SkillsListResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TerminalInteractionNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadApproveGuardianDeniedActionParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadApproveGuardianDeniedActionResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadArchiveParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadArchiveResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadArchivedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadClosedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadCompactStartParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadCompactStartResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadForkParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadForkResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadInjectItemsParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadInjectItemsResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadListParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadListResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadLoadedListParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadLoadedListResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadMetadataUpdateParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadMetadataUpdateResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadNameUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadReadParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadReadResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeClosedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeErrorNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemAddedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeOutputAudioDeltaNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeSdpNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeStartedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeTranscriptDeltaNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeTranscriptDoneNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRollbackParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadRollbackResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadSetNameParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadSetNameResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadShellCommandParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadShellCommandResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadStartParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadStartResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadStartedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadStatusChangedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadTokenUsageUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadTurnsListParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadTurnsListResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadUnarchiveParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadUnarchiveResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadUnarchivedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadUnsubscribeParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/ThreadUnsubscribeResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnDiffUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnInterruptParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnInterruptResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnPlanUpdatedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnStartParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnStartResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnSteerParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/TurnSteerResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/WarningNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/WindowsSandboxSetupCompletedNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/WindowsSandboxSetupStartParams.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/WindowsSandboxSetupStartResponse.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/json/v2/WindowsWorldWritableWarningNotification.json create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/AbsolutePathBuf.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/AgentPath.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ApplyPatchApprovalParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ApplyPatchApprovalResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/AuthMode.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ClientInfo.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ClientNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ClientRequest.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/CollaborationMode.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ContentItem.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ConversationGitInfo.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ConversationSummary.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ExecCommandApprovalParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ExecCommandApprovalResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ExecPolicyAmendment.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/FileChange.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ForcedLoginMethod.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/FunctionCallOutputBody.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/FunctionCallOutputContentItem.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/FuzzyFileSearchMatchType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/FuzzyFileSearchParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/FuzzyFileSearchResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/FuzzyFileSearchResult.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/FuzzyFileSearchSessionCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/FuzzyFileSearchSessionUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/GetAuthStatusParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/GetAuthStatusResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/GetConversationSummaryParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/GetConversationSummaryResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/GhostCommit.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/GitDiffToRemoteParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/GitDiffToRemoteResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/GitSha.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ImageDetail.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/InitializeCapabilities.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/InitializeParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/InitializeResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/InputModality.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/LocalShellAction.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/LocalShellExecAction.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/LocalShellStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/MessagePhase.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ModeKind.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/NetworkPolicyAmendment.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/NetworkPolicyRuleAction.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ParsedCommand.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/Personality.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/PlanType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/RealtimeConversationVersion.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/RealtimeOutputModality.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/RealtimeVoice.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/RealtimeVoicesList.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ReasoningEffort.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ReasoningItemContent.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ReasoningItemReasoningSummary.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ReasoningSummary.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/RequestId.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/Resource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ResourceContent.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ResourceTemplate.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ResponseItem.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ReviewDecision.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ServerNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ServerRequest.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ServiceTier.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/SessionSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/Settings.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/SubAgentSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ThreadId.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/ThreadMemoryMode.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/Tool.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/Verbosity.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/WebSearchAction.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/WebSearchContextSize.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/WebSearchLocation.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/WebSearchMode.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/WebSearchToolConfig.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/index.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/serde_json/JsonValue.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/Account.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AccountLoginCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AccountRateLimitsUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AccountUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AddCreditsNudgeCreditType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AddCreditsNudgeEmailStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AdditionalFileSystemPermissions.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AdditionalNetworkPermissions.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AdditionalPermissionProfile.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AgentMessageDeltaNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AnalyticsConfig.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppBranding.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppInfo.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppListUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppMetadata.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppReview.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppScreenshot.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppSummary.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppToolApproval.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppToolsConfig.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ApprovalsReviewer.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppsConfig.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppsDefaultConfig.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppsListParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AppsListResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AskForApproval.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/AutoReviewDecisionSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ByteRange.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CancelLoginAccountParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CancelLoginAccountResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CancelLoginAccountStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ChatgptAuthTokensRefreshParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ChatgptAuthTokensRefreshReason.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ChatgptAuthTokensRefreshResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CodexErrorInfo.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CollabAgentState.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CollabAgentStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CollabAgentTool.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CollabAgentToolCallStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CollaborationModeMask.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandAction.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecOutputDeltaNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecOutputStream.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecResizeParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecResizeResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecTerminalSize.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecTerminateParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecTerminateResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecWriteParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecWriteResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecutionApprovalDecision.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecutionOutputDeltaNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecutionRequestApprovalParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecutionRequestApprovalResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecutionSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CommandExecutionStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/Config.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigBatchWriteParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigEdit.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigLayer.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigLayerMetadata.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigLayerSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigReadParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigReadResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigRequirements.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigRequirementsReadResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigValueWriteParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigWarningNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ConfigWriteResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ContextCompactedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/CreditsSnapshot.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeprecationNoticeNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeyAlgorithm.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeyCreateParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeyCreateResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeyProtectionClass.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeyProtectionPolicy.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeyPublicParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeyPublicResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeySignParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeySignPayload.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DeviceKeySignResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DynamicToolCallOutputContentItem.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DynamicToolCallParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DynamicToolCallResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DynamicToolCallStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/DynamicToolSpec.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ErrorNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExecPolicyAmendment.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExperimentalFeature.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExperimentalFeatureEnablementSetParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExperimentalFeatureEnablementSetResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExperimentalFeatureListParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExperimentalFeatureListResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExperimentalFeatureStage.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExternalAgentConfigDetectParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExternalAgentConfigDetectResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExternalAgentConfigImportCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExternalAgentConfigImportParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExternalAgentConfigImportResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExternalAgentConfigMigrationItem.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ExternalAgentConfigMigrationItemType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FeedbackUploadParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FeedbackUploadResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileChangeApprovalDecision.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileChangeOutputDeltaNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileChangePatchUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileChangeRequestApprovalParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileChangeRequestApprovalResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileSystemAccessMode.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileSystemPath.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileSystemSandboxEntry.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileSystemSpecialPath.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FileUpdateChange.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsChangedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsCopyParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsCopyResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsCreateDirectoryParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsCreateDirectoryResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsGetMetadataParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsGetMetadataResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsReadDirectoryEntry.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsReadDirectoryParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsReadDirectoryResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsReadFileParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsReadFileResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsRemoveParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsRemoveResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsUnwatchParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsUnwatchResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsWatchParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsWatchResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsWriteFileParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/FsWriteFileResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GetAccountParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GetAccountRateLimitsResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GetAccountResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GitInfo.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GrantedPermissionProfile.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GuardianApprovalReview.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GuardianApprovalReviewAction.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GuardianApprovalReviewStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GuardianCommandSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GuardianRiskLevel.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GuardianUserAuthorization.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/GuardianWarningNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookEventName.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookExecutionMode.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookHandlerType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookOutputEntry.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookOutputEntryKind.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookPromptFragment.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookRunStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookRunSummary.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookScope.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/HookStartedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ItemCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ItemGuardianApprovalReviewCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ItemGuardianApprovalReviewStartedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ItemStartedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ListMcpServerStatusParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ListMcpServerStatusResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/LoginAccountParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/LoginAccountResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/LogoutAccountResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MarketplaceAddParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MarketplaceAddResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MarketplaceInterface.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MarketplaceLoadErrorInfo.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MarketplaceRemoveParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MarketplaceRemoveResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpAuthStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationArrayType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationBooleanSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationBooleanType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationConstOption.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationEnumSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationLegacyTitledEnumSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationMultiSelectEnumSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationNumberSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationNumberType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationObjectType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationPrimitiveSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationSingleSelectEnumSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationStringFormat.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationStringSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationStringType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationTitledEnumItems.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationTitledMultiSelectEnumSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationTitledSingleSelectEnumSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationUntitledEnumItems.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationUntitledMultiSelectEnumSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpElicitationUntitledSingleSelectEnumSchema.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpResourceReadParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpResourceReadResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerElicitationAction.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerElicitationRequestParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerElicitationRequestResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerOauthLoginCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerOauthLoginParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerOauthLoginResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerRefreshResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerStartupState.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerStatusDetail.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerStatusUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerToolCallParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpServerToolCallResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpToolCallError.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpToolCallProgressNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpToolCallResult.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/McpToolCallStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MemoryCitation.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MemoryCitationEntry.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MergeStrategy.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/MigrationDetails.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/Model.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ModelAvailabilityNux.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ModelListParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ModelListResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ModelRerouteReason.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ModelReroutedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ModelUpgradeInfo.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/NetworkAccess.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/NetworkApprovalContext.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/NetworkApprovalProtocol.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/NetworkDomainPermission.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/NetworkPolicyAmendment.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/NetworkPolicyRuleAction.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/NetworkRequirements.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/NetworkUnixSocketPermission.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/NonSteerableTurnKind.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/OverriddenMetadata.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PatchApplyStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PatchChangeKind.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PermissionGrantScope.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PermissionProfile.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PermissionProfileFileSystemPermissions.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PermissionProfileNetworkPermissions.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PermissionsRequestApprovalParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PermissionsRequestApprovalResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PlanDeltaNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginAuthPolicy.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginDetail.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginInstallParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginInstallPolicy.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginInstallResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginInterface.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginListParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginListResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginMarketplaceEntry.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginReadParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginReadResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginSummary.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginUninstallParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginUninstallResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/PluginsMigration.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ProfileV2.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/RateLimitReachedType.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/RateLimitSnapshot.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/RateLimitWindow.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/RawResponseItemCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ReadOnlyAccess.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ReasoningEffortOption.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ReasoningSummaryPartAddedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ReasoningSummaryTextDeltaNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ReasoningTextDeltaNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/RemoteControlClientConnectionAudience.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/RemoteControlClientEnrollmentAudience.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/RequestPermissionProfile.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ResidencyRequirement.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ReviewDelivery.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ReviewStartParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ReviewStartResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ReviewTarget.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SandboxMode.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SandboxPolicy.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SandboxWorkspaceWrite.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SendAddCreditsNudgeEmailParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SendAddCreditsNudgeEmailResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ServerRequestResolvedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SessionSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillDependencies.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillErrorInfo.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillInterface.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillMetadata.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillScope.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillSummary.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillToolDependency.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillsChangedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillsConfigWriteParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillsConfigWriteResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillsListEntry.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillsListExtraRootsForCwd.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillsListParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SkillsListResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/SortDirection.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TerminalInteractionNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TextElement.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TextPosition.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TextRange.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/Thread.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadActiveFlag.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadApproveGuardianDeniedActionParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadApproveGuardianDeniedActionResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadArchiveParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadArchiveResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadArchivedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadClosedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadCompactStartParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadCompactStartResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadForkParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadForkResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadInjectItemsParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadInjectItemsResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadItem.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadListParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadListResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadLoadedListParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadLoadedListResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadMetadataGitInfoUpdateParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadMetadataUpdateParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadMetadataUpdateResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadNameUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadReadParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadReadResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeAudioChunk.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeClosedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeErrorNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeItemAddedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeOutputAudioDeltaNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeSdpNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeStartTransport.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeStartedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeTranscriptDeltaNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeTranscriptDoneNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadResumeParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadResumeResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRollbackParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadRollbackResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadSetNameParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadSetNameResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadShellCommandParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadShellCommandResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadSortKey.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadSourceKind.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadStartParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadStartResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadStartSource.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadStartedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadStatusChangedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadTokenUsage.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadTokenUsageUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadTurnsListParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadTurnsListResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadUnarchiveParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadUnarchiveResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadUnarchivedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadUnsubscribeParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadUnsubscribeResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ThreadUnsubscribeStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TokenUsageBreakdown.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ToolRequestUserInputAnswer.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ToolRequestUserInputOption.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ToolRequestUserInputParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ToolRequestUserInputQuestion.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ToolRequestUserInputResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/ToolsV2.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/Turn.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnDiffUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnEnvironmentParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnError.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnInterruptParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnInterruptResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnPlanStep.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnPlanStepStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnPlanUpdatedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnSteerParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnSteerResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/UserInput.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/WarningNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/WebSearchAction.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/WindowsSandboxSetupCompletedNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/WindowsSandboxSetupMode.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/WindowsSandboxSetupStartParams.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/WindowsSandboxSetupStartResponse.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/WindowsWorldWritableWarningNotification.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/WriteStatus.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/schema/typescript/v2/index.ts create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/bin/export.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/bin/write_schema_fixtures.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/experimental_api.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/export.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/jsonrpc_lite.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/lib.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/protocol/common.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/protocol/item_builders.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/protocol/mappers.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/protocol/mod.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/protocol/serde_helpers.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/protocol/thread_history.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/protocol/v1.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/protocol/v2.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/src/schema_fixtures.rs create mode 100644 vendor/codex/codex-rs/app-server-protocol/tests/schema_fixtures.rs create mode 100644 vendor/codex/codex-rs/app-server-test-client/BUILD.bazel create mode 100644 vendor/codex/codex-rs/app-server-test-client/Cargo.toml create mode 100644 vendor/codex/codex-rs/app-server-test-client/README.md create mode 100644 vendor/codex/codex-rs/app-server-test-client/scripts/live_elicitation_hold.sh create mode 100644 vendor/codex/codex-rs/app-server-test-client/src/lib.rs create mode 100644 vendor/codex/codex-rs/app-server-test-client/src/main.rs create mode 100644 vendor/codex/codex-rs/app-server/BUILD.bazel create mode 100644 vendor/codex/codex-rs/app-server/Cargo.toml create mode 100644 vendor/codex/codex-rs/app-server/README.md create mode 100644 vendor/codex/codex-rs/app-server/src/app_server_tracing.rs create mode 100644 vendor/codex/codex-rs/app-server/src/bespoke_event_handling.rs create mode 100644 vendor/codex/codex-rs/app-server/src/bin/notify_capture.rs create mode 100644 vendor/codex/codex-rs/app-server/src/bin/test_notify_capture.rs create mode 100644 vendor/codex/codex-rs/app-server/src/codex_message_processor.rs create mode 100644 vendor/codex/codex-rs/app-server/src/codex_message_processor/apps_list_helpers.rs create mode 100644 vendor/codex/codex-rs/app-server/src/codex_message_processor/plugin_app_helpers.rs create mode 100644 vendor/codex/codex-rs/app-server/src/codex_message_processor/plugin_mcp_oauth.rs create mode 100644 vendor/codex/codex-rs/app-server/src/codex_message_processor/plugins.rs create mode 100644 vendor/codex/codex-rs/app-server/src/codex_message_processor/token_usage_replay.rs create mode 100644 vendor/codex/codex-rs/app-server/src/command_exec.rs create mode 100644 vendor/codex/codex-rs/app-server/src/config/external_agent_config.rs create mode 100644 vendor/codex/codex-rs/app-server/src/config/external_agent_config_tests.rs create mode 100644 vendor/codex/codex-rs/app-server/src/config/mod.rs create mode 100644 vendor/codex/codex-rs/app-server/src/config_api.rs create mode 100644 vendor/codex/codex-rs/app-server/src/config_manager.rs create mode 100644 vendor/codex/codex-rs/app-server/src/config_manager_service.rs create mode 100644 vendor/codex/codex-rs/app-server/src/config_manager_service_tests.rs create mode 100644 vendor/codex/codex-rs/app-server/src/device_key_api.rs create mode 100644 vendor/codex/codex-rs/app-server/src/dynamic_tools.rs create mode 100644 vendor/codex/codex-rs/app-server/src/error_code.rs create mode 100644 vendor/codex/codex-rs/app-server/src/external_agent_config_api.rs create mode 100644 vendor/codex/codex-rs/app-server/src/filters.rs create mode 100644 vendor/codex/codex-rs/app-server/src/fs_api.rs create mode 100644 vendor/codex/codex-rs/app-server/src/fs_watch.rs create mode 100644 vendor/codex/codex-rs/app-server/src/fuzzy_file_search.rs create mode 100644 vendor/codex/codex-rs/app-server/src/in_process.rs create mode 100644 vendor/codex/codex-rs/app-server/src/lib.rs create mode 100644 vendor/codex/codex-rs/app-server/src/main.rs create mode 100644 vendor/codex/codex-rs/app-server/src/message_processor.rs create mode 100644 vendor/codex/codex-rs/app-server/src/message_processor/tracing_tests.rs create mode 100644 vendor/codex/codex-rs/app-server/src/models.rs create mode 100644 vendor/codex/codex-rs/app-server/src/outgoing_message.rs create mode 100644 vendor/codex/codex-rs/app-server/src/server_request_error.rs create mode 100644 vendor/codex/codex-rs/app-server/src/thread_state.rs create mode 100644 vendor/codex/codex-rs/app-server/src/thread_status.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/auth.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/mod.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/remote_control/client_tracker.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/remote_control/enroll.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/remote_control/mod.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/remote_control/protocol.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/remote_control/tests.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/remote_control/websocket.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/stdio.rs create mode 100644 vendor/codex/codex-rs/app-server/src/transport/websocket.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/all.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/common/BUILD.bazel create mode 100644 vendor/codex/codex-rs/app-server/tests/common/Cargo.toml create mode 100644 vendor/codex/codex-rs/app-server/tests/common/analytics_server.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/common/auth_fixtures.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/common/config.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/common/lib.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/common/mcp_process.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/common/mock_model_server.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/common/models_cache.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/common/responses.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/common/rollout.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/auth.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/conversation_summary.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/fuzzy_file_search.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/account.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/analytics.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/app_list.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/client_metadata.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/collaboration_mode_list.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/command_exec.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/compaction.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/config_rpc.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/connection_handling_websocket.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/connection_handling_websocket_unix.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/device_key.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/dynamic_tools.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/experimental_api.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/experimental_feature_list.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/external_agent_config.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/fs.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/initialize.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/marketplace_add.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/marketplace_remove.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/mcp_resource.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/mcp_server_elicitation.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/mcp_server_status.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/mcp_tool.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/memory_reset.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/mod.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/model_list.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/output_schema.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/plan_item.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/plugin_install.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/plugin_list.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/plugin_read.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/plugin_uninstall.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/rate_limits.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/realtime_conversation.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/request_permissions.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/request_user_input.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/review.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/safety_check_downgrade.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/skills_list.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_archive.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_fork.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_inject_items.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_list.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_loaded_list.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_memory_mode_set.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_metadata_update.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_name_websocket.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_read.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_resume.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_rollback.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_shell_command.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_start.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_status.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_unarchive.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/thread_unsubscribe.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/turn_interrupt.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/turn_start.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/turn_start_zsh_fork.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/turn_steer.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/v2/windows_sandbox_setup.rs create mode 100644 vendor/codex/codex-rs/app-server/tests/suite/zsh create mode 100644 vendor/codex/codex-rs/apply-patch/BUILD.bazel create mode 100644 vendor/codex/codex-rs/apply-patch/Cargo.toml create mode 100644 vendor/codex/codex-rs/apply-patch/apply_patch_tool_instructions.md create mode 100644 vendor/codex/codex-rs/apply-patch/src/invocation.rs create mode 100644 vendor/codex/codex-rs/apply-patch/src/lib.rs create mode 100644 vendor/codex/codex-rs/apply-patch/src/main.rs create mode 100644 vendor/codex/codex-rs/apply-patch/src/parser.rs create mode 100644 vendor/codex/codex-rs/apply-patch/src/seek_sequence.rs create mode 100644 vendor/codex/codex-rs/apply-patch/src/standalone_executable.rs create mode 100644 vendor/codex/codex-rs/apply-patch/tests/all.rs create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/.gitattributes create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/001_add_file/expected/bar.md create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/001_add_file/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/002_multiple_operations/expected/modify.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/002_multiple_operations/expected/nested/new.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/002_multiple_operations/input/delete.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/002_multiple_operations/input/modify.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/002_multiple_operations/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/003_multiple_chunks/expected/multi.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/003_multiple_chunks/input/multi.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/003_multiple_chunks/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/004_move_to_new_directory/expected/old/other.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/004_move_to_new_directory/expected/renamed/dir/name.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/004_move_to_new_directory/input/old/name.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/004_move_to_new_directory/input/old/other.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/004_move_to_new_directory/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/005_rejects_empty_patch/expected/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/005_rejects_empty_patch/input/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/005_rejects_empty_patch/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/006_rejects_missing_context/expected/modify.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/006_rejects_missing_context/input/modify.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/006_rejects_missing_context/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/007_rejects_missing_file_delete/expected/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/007_rejects_missing_file_delete/input/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/007_rejects_missing_file_delete/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/008_rejects_empty_update_hunk/expected/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/008_rejects_empty_update_hunk/input/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/008_rejects_empty_update_hunk/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/009_requires_existing_file_for_update/expected/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/009_requires_existing_file_for_update/input/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/009_requires_existing_file_for_update/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/010_move_overwrites_existing_destination/expected/old/other.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/010_move_overwrites_existing_destination/expected/renamed/dir/name.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/010_move_overwrites_existing_destination/input/old/name.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/010_move_overwrites_existing_destination/input/old/other.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/010_move_overwrites_existing_destination/input/renamed/dir/name.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/010_move_overwrites_existing_destination/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/011_add_overwrites_existing_file/expected/duplicate.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/011_add_overwrites_existing_file/input/duplicate.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/011_add_overwrites_existing_file/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/012_delete_directory_fails/expected/dir/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/012_delete_directory_fails/input/dir/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/012_delete_directory_fails/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/013_rejects_invalid_hunk_header/expected/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/013_rejects_invalid_hunk_header/input/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/013_rejects_invalid_hunk_header/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/014_update_file_appends_trailing_newline/expected/no_newline.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/014_update_file_appends_trailing_newline/input/no_newline.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/014_update_file_appends_trailing_newline/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/015_failure_after_partial_success_leaves_changes/expected/created.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/015_failure_after_partial_success_leaves_changes/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/016_pure_addition_update_chunk/expected/input.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/016_pure_addition_update_chunk/input/input.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/016_pure_addition_update_chunk/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/017_whitespace_padded_hunk_header/expected/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/017_whitespace_padded_hunk_header/input/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/017_whitespace_padded_hunk_header/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/018_whitespace_padded_patch_markers/expected/file.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/018_whitespace_padded_patch_markers/input/file.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/018_whitespace_padded_patch_markers/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/019_unicode_simple/expected/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/019_unicode_simple/input/foo.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/019_unicode_simple/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/020_delete_file_success/expected/keep.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/020_delete_file_success/input/keep.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/020_delete_file_success/input/obsolete.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/020_delete_file_success/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/020_whitespace_padded_patch_marker_lines/expected/file.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/020_whitespace_padded_patch_marker_lines/input/file.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/020_whitespace_padded_patch_marker_lines/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/021_update_file_deletion_only/expected/lines.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/021_update_file_deletion_only/input/lines.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/021_update_file_deletion_only/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/022_update_file_end_of_file_marker/expected/tail.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/022_update_file_end_of_file_marker/input/tail.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/022_update_file_end_of_file_marker/patch.txt create mode 100644 vendor/codex/codex-rs/apply-patch/tests/fixtures/scenarios/README.md create mode 100644 vendor/codex/codex-rs/apply-patch/tests/suite/cli.rs create mode 100644 vendor/codex/codex-rs/apply-patch/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/apply-patch/tests/suite/scenarios.rs create mode 100644 vendor/codex/codex-rs/apply-patch/tests/suite/tool.rs create mode 100644 vendor/codex/codex-rs/arg0/BUILD.bazel create mode 100644 vendor/codex/codex-rs/arg0/Cargo.toml create mode 100644 vendor/codex/codex-rs/arg0/src/lib.rs create mode 100644 vendor/codex/codex-rs/async-utils/BUILD.bazel create mode 100644 vendor/codex/codex-rs/async-utils/Cargo.toml create mode 100644 vendor/codex/codex-rs/async-utils/src/lib.rs create mode 100644 vendor/codex/codex-rs/aws-auth/BUILD.bazel create mode 100644 vendor/codex/codex-rs/aws-auth/Cargo.toml create mode 100644 vendor/codex/codex-rs/aws-auth/src/config.rs create mode 100644 vendor/codex/codex-rs/aws-auth/src/lib.rs create mode 100644 vendor/codex/codex-rs/aws-auth/src/signing.rs create mode 100644 vendor/codex/codex-rs/backend-client/BUILD.bazel create mode 100644 vendor/codex/codex-rs/backend-client/Cargo.toml create mode 100644 vendor/codex/codex-rs/backend-client/src/client.rs create mode 100644 vendor/codex/codex-rs/backend-client/src/lib.rs create mode 100644 vendor/codex/codex-rs/backend-client/src/types.rs create mode 100644 vendor/codex/codex-rs/backend-client/tests/fixtures/task_details_with_diff.json create mode 100644 vendor/codex/codex-rs/backend-client/tests/fixtures/task_details_with_error.json create mode 100644 vendor/codex/codex-rs/chatgpt/BUILD.bazel create mode 100644 vendor/codex/codex-rs/chatgpt/Cargo.toml create mode 100644 vendor/codex/codex-rs/chatgpt/README.md create mode 100644 vendor/codex/codex-rs/chatgpt/src/apply_command.rs create mode 100644 vendor/codex/codex-rs/chatgpt/src/chatgpt_client.rs create mode 100644 vendor/codex/codex-rs/chatgpt/src/chatgpt_token.rs create mode 100644 vendor/codex/codex-rs/chatgpt/src/connectors.rs create mode 100644 vendor/codex/codex-rs/chatgpt/src/get_task.rs create mode 100644 vendor/codex/codex-rs/chatgpt/src/lib.rs create mode 100644 vendor/codex/codex-rs/chatgpt/tests/all.rs create mode 100644 vendor/codex/codex-rs/chatgpt/tests/suite/apply_command_e2e.rs create mode 100644 vendor/codex/codex-rs/chatgpt/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/chatgpt/tests/task_turn_fixture.json create mode 100644 vendor/codex/codex-rs/cli/BUILD.bazel create mode 100644 vendor/codex/codex-rs/cli/Cargo.toml create mode 100644 vendor/codex/codex-rs/cli/build.rs create mode 100644 vendor/codex/codex-rs/cli/src/app_cmd.rs create mode 100644 vendor/codex/codex-rs/cli/src/debug_sandbox.rs create mode 100644 vendor/codex/codex-rs/cli/src/debug_sandbox/pid_tracker.rs create mode 100644 vendor/codex/codex-rs/cli/src/debug_sandbox/seatbelt.rs create mode 100644 vendor/codex/codex-rs/cli/src/desktop_app/mac.rs create mode 100644 vendor/codex/codex-rs/cli/src/desktop_app/mod.rs create mode 100644 vendor/codex/codex-rs/cli/src/desktop_app/windows.rs create mode 100644 vendor/codex/codex-rs/cli/src/exit_status.rs create mode 100644 vendor/codex/codex-rs/cli/src/lib.rs create mode 100644 vendor/codex/codex-rs/cli/src/login.rs create mode 100644 vendor/codex/codex-rs/cli/src/main.rs create mode 100644 vendor/codex/codex-rs/cli/src/marketplace_cmd.rs create mode 100644 vendor/codex/codex-rs/cli/src/mcp_cmd.rs create mode 100644 vendor/codex/codex-rs/cli/src/responses_cmd.rs create mode 100644 vendor/codex/codex-rs/cli/src/wsl_paths.rs create mode 100644 vendor/codex/codex-rs/cli/tests/debug_clear_memories.rs create mode 100644 vendor/codex/codex-rs/cli/tests/debug_models.rs create mode 100644 vendor/codex/codex-rs/cli/tests/execpolicy.rs create mode 100644 vendor/codex/codex-rs/cli/tests/features.rs create mode 100644 vendor/codex/codex-rs/cli/tests/marketplace_add.rs create mode 100644 vendor/codex/codex-rs/cli/tests/marketplace_remove.rs create mode 100644 vendor/codex/codex-rs/cli/tests/marketplace_upgrade.rs create mode 100644 vendor/codex/codex-rs/cli/tests/mcp_add_remove.rs create mode 100644 vendor/codex/codex-rs/cli/tests/mcp_list.rs create mode 100644 vendor/codex/codex-rs/clippy.toml create mode 100644 vendor/codex/codex-rs/cloud-requirements/BUILD.bazel create mode 100644 vendor/codex/codex-rs/cloud-requirements/Cargo.toml create mode 100644 vendor/codex/codex-rs/cloud-requirements/src/lib.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks-client/BUILD.bazel create mode 100644 vendor/codex/codex-rs/cloud-tasks-client/Cargo.toml create mode 100644 vendor/codex/codex-rs/cloud-tasks-client/src/api.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks-client/src/http.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks-client/src/lib.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks-mock-client/BUILD.bazel create mode 100644 vendor/codex/codex-rs/cloud-tasks-mock-client/Cargo.toml create mode 100644 vendor/codex/codex-rs/cloud-tasks-mock-client/src/lib.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks-mock-client/src/mock.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks/BUILD.bazel create mode 100644 vendor/codex/codex-rs/cloud-tasks/Cargo.toml create mode 100644 vendor/codex/codex-rs/cloud-tasks/src/app.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks/src/cli.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks/src/env_detect.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks/src/lib.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks/src/new_task.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks/src/scrollable_diff.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks/src/ui.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks/src/util.rs create mode 100644 vendor/codex/codex-rs/cloud-tasks/tests/env_filter.rs create mode 100644 vendor/codex/codex-rs/code-mode/BUILD.bazel create mode 100644 vendor/codex/codex-rs/code-mode/Cargo.toml create mode 100644 vendor/codex/codex-rs/code-mode/src/description.rs create mode 100644 vendor/codex/codex-rs/code-mode/src/lib.rs create mode 100644 vendor/codex/codex-rs/code-mode/src/response.rs create mode 100644 vendor/codex/codex-rs/code-mode/src/runtime/callbacks.rs create mode 100644 vendor/codex/codex-rs/code-mode/src/runtime/globals.rs create mode 100644 vendor/codex/codex-rs/code-mode/src/runtime/mod.rs create mode 100644 vendor/codex/codex-rs/code-mode/src/runtime/module_loader.rs create mode 100644 vendor/codex/codex-rs/code-mode/src/runtime/timers.rs create mode 100644 vendor/codex/codex-rs/code-mode/src/runtime/value.rs create mode 100644 vendor/codex/codex-rs/code-mode/src/service.rs create mode 100644 vendor/codex/codex-rs/codex-api/BUILD.bazel create mode 100644 vendor/codex/codex-rs/codex-api/Cargo.toml create mode 100644 vendor/codex/codex-rs/codex-api/README.md create mode 100644 vendor/codex/codex-rs/codex-api/src/api_bridge.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/api_bridge_tests.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/auth.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/common.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/compact.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/memories.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/mod.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/models.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_call.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_websocket/methods.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_websocket/methods_common.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_websocket/methods_v1.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_websocket/methods_v2.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_websocket/mod.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_websocket/protocol.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_websocket/protocol_common.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_websocket/protocol_v1.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/realtime_websocket/protocol_v2.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/responses.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/responses_websocket.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/endpoint/session.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/error.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/files.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/lib.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/provider.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/rate_limits.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/requests/headers.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/requests/mod.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/requests/responses.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/sse/mod.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/sse/responses.rs create mode 100644 vendor/codex/codex-rs/codex-api/src/telemetry.rs create mode 100644 vendor/codex/codex-rs/codex-api/tests/clients.rs create mode 100644 vendor/codex/codex-rs/codex-api/tests/models_integration.rs create mode 100644 vendor/codex/codex-rs/codex-api/tests/realtime_websocket_e2e.rs create mode 100644 vendor/codex/codex-rs/codex-api/tests/sse_end_to_end.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/BUILD.bazel create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/Cargo.toml create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/lib.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/additional_rate_limit_details.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/code_task_details_response.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/config_file_response.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/credit_status_details.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/external_pull_request_response.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/git_pull_request.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/mod.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/paginated_list_task_list_item_.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/rate_limit_status_details.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/rate_limit_status_payload.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/rate_limit_window_snapshot.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/task_list_item.rs create mode 100644 vendor/codex/codex-rs/codex-backend-openapi-models/src/models/task_response.rs create mode 100644 vendor/codex/codex-rs/codex-client/BUILD.bazel create mode 100644 vendor/codex/codex-rs/codex-client/Cargo.toml create mode 100644 vendor/codex/codex-rs/codex-client/README.md create mode 100644 vendor/codex/codex-rs/codex-client/src/bin/custom_ca_probe.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/chatgpt_cloudflare_cookies.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/chatgpt_hosts.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/custom_ca.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/default_client.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/error.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/lib.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/request.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/retry.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/sse.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/telemetry.rs create mode 100644 vendor/codex/codex-rs/codex-client/src/transport.rs create mode 100644 vendor/codex/codex-rs/codex-client/tests/ca_env.rs create mode 100644 vendor/codex/codex-rs/codex-client/tests/fixtures/test-ca-trusted.pem create mode 100644 vendor/codex/codex-rs/codex-client/tests/fixtures/test-ca.pem create mode 100644 vendor/codex/codex-rs/codex-client/tests/fixtures/test-intermediate.pem create mode 100644 vendor/codex/codex-rs/codex-experimental-api-macros/BUILD.bazel create mode 100644 vendor/codex/codex-rs/codex-experimental-api-macros/Cargo.toml create mode 100644 vendor/codex/codex-rs/codex-experimental-api-macros/src/lib.rs create mode 100644 vendor/codex/codex-rs/codex-mcp/BUILD.bazel create mode 100644 vendor/codex/codex-rs/codex-mcp/Cargo.toml create mode 100644 vendor/codex/codex-rs/codex-mcp/src/lib.rs create mode 100644 vendor/codex/codex-rs/codex-mcp/src/mcp/auth.rs create mode 100644 vendor/codex/codex-rs/codex-mcp/src/mcp/mod.rs create mode 100644 vendor/codex/codex-rs/codex-mcp/src/mcp/mod_tests.rs create mode 100644 vendor/codex/codex-rs/codex-mcp/src/mcp/skill_dependencies.rs create mode 100644 vendor/codex/codex-rs/codex-mcp/src/mcp/skill_dependencies_tests.rs create mode 100644 vendor/codex/codex-rs/codex-mcp/src/mcp_connection_manager.rs create mode 100644 vendor/codex/codex-rs/codex-mcp/src/mcp_connection_manager_tests.rs create mode 100644 vendor/codex/codex-rs/codex-mcp/src/mcp_tool_names.rs create mode 100644 vendor/codex/codex-rs/collaboration-mode-templates/BUILD.bazel create mode 100644 vendor/codex/codex-rs/collaboration-mode-templates/Cargo.toml create mode 100644 vendor/codex/codex-rs/collaboration-mode-templates/src/lib.rs create mode 100644 vendor/codex/codex-rs/collaboration-mode-templates/templates/default.md create mode 100644 vendor/codex/codex-rs/collaboration-mode-templates/templates/execute.md create mode 100644 vendor/codex/codex-rs/collaboration-mode-templates/templates/pair_programming.md create mode 100644 vendor/codex/codex-rs/collaboration-mode-templates/templates/plan.md create mode 100644 vendor/codex/codex-rs/config.md create mode 100644 vendor/codex/codex-rs/config/BUILD.bazel create mode 100644 vendor/codex/codex-rs/config/Cargo.toml create mode 100644 vendor/codex/codex-rs/config/src/cloud_requirements.rs create mode 100644 vendor/codex/codex-rs/config/src/config_requirements.rs create mode 100644 vendor/codex/codex-rs/config/src/config_toml.rs create mode 100644 vendor/codex/codex-rs/config/src/constraint.rs create mode 100644 vendor/codex/codex-rs/config/src/diagnostics.rs create mode 100644 vendor/codex/codex-rs/config/src/fingerprint.rs create mode 100644 vendor/codex/codex-rs/config/src/host_name.rs create mode 100644 vendor/codex/codex-rs/config/src/key_aliases.rs create mode 100644 vendor/codex/codex-rs/config/src/lib.rs create mode 100644 vendor/codex/codex-rs/config/src/marketplace_edit.rs create mode 100644 vendor/codex/codex-rs/config/src/mcp_edit.rs create mode 100644 vendor/codex/codex-rs/config/src/mcp_edit_tests.rs create mode 100644 vendor/codex/codex-rs/config/src/mcp_types.rs create mode 100644 vendor/codex/codex-rs/config/src/mcp_types_tests.rs create mode 100644 vendor/codex/codex-rs/config/src/merge.rs create mode 100644 vendor/codex/codex-rs/config/src/merge_tests.rs create mode 100644 vendor/codex/codex-rs/config/src/overrides.rs create mode 100644 vendor/codex/codex-rs/config/src/permissions_toml.rs create mode 100644 vendor/codex/codex-rs/config/src/profile_toml.rs create mode 100644 vendor/codex/codex-rs/config/src/project_root_markers.rs create mode 100644 vendor/codex/codex-rs/config/src/requirements_exec_policy.rs create mode 100644 vendor/codex/codex-rs/config/src/schema.rs create mode 100644 vendor/codex/codex-rs/config/src/shell_environment.rs create mode 100644 vendor/codex/codex-rs/config/src/skills_config.rs create mode 100644 vendor/codex/codex-rs/config/src/state.rs create mode 100644 vendor/codex/codex-rs/config/src/state_tests.rs create mode 100644 vendor/codex/codex-rs/config/src/thread_config.rs create mode 100644 vendor/codex/codex-rs/config/src/types.rs create mode 100644 vendor/codex/codex-rs/config/src/types_tests.rs create mode 100644 vendor/codex/codex-rs/connectors/BUILD.bazel create mode 100644 vendor/codex/codex-rs/connectors/Cargo.toml create mode 100644 vendor/codex/codex-rs/connectors/src/accessible.rs create mode 100644 vendor/codex/codex-rs/connectors/src/filter.rs create mode 100644 vendor/codex/codex-rs/connectors/src/lib.rs create mode 100644 vendor/codex/codex-rs/connectors/src/merge.rs create mode 100644 vendor/codex/codex-rs/connectors/src/metadata.rs create mode 100644 vendor/codex/codex-rs/core-plugins/BUILD.bazel create mode 100644 vendor/codex/codex-rs/core-plugins/Cargo.toml create mode 100644 vendor/codex/codex-rs/core-plugins/src/lib.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/loader.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/manifest.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/marketplace.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/marketplace_tests.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/marketplace_upgrade.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/marketplace_upgrade/activation.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/marketplace_upgrade/git.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/remote.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/remote_legacy.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/store.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/store_tests.rs create mode 100644 vendor/codex/codex-rs/core-plugins/src/toggles.rs create mode 100644 vendor/codex/codex-rs/core-skills/BUILD.bazel create mode 100644 vendor/codex/codex-rs/core-skills/Cargo.toml create mode 100644 vendor/codex/codex-rs/core-skills/src/config_rules.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/env_var_dependencies.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/injection.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/injection_tests.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/invocation_utils.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/invocation_utils_tests.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/lib.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/loader.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/loader_tests.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/manager.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/manager_tests.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/mention_counts.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/model.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/remote.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/render.rs create mode 100644 vendor/codex/codex-rs/core-skills/src/system.rs create mode 100644 vendor/codex/codex-rs/core/BUILD.bazel create mode 100644 vendor/codex/codex-rs/core/Cargo.toml create mode 100644 vendor/codex/codex-rs/core/README.md create mode 100644 vendor/codex/codex-rs/core/config.schema.json create mode 100644 vendor/codex/codex-rs/core/gpt-5.1-codex-max_prompt.md create mode 100644 vendor/codex/codex-rs/core/gpt-5.2-codex_prompt.md create mode 100644 vendor/codex/codex-rs/core/gpt_5_1_prompt.md create mode 100644 vendor/codex/codex-rs/core/gpt_5_2_prompt.md create mode 100644 vendor/codex/codex-rs/core/gpt_5_codex_prompt.md create mode 100644 vendor/codex/codex-rs/core/hierarchical_agents_message.md create mode 100644 vendor/codex/codex-rs/core/prompt_with_apply_patch_instructions.md create mode 100644 vendor/codex/codex-rs/core/review_prompt.md create mode 100644 vendor/codex/codex-rs/core/src/agent/agent_names.txt create mode 100644 vendor/codex/codex-rs/core/src/agent/agent_resolver.rs create mode 100644 vendor/codex/codex-rs/core/src/agent/builtins/awaiter.toml create mode 100644 vendor/codex/codex-rs/core/src/agent/builtins/explorer.toml create mode 100644 vendor/codex/codex-rs/core/src/agent/control.rs create mode 100644 vendor/codex/codex-rs/core/src/agent/control_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/agent/mailbox.rs create mode 100644 vendor/codex/codex-rs/core/src/agent/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/agent/registry.rs create mode 100644 vendor/codex/codex-rs/core/src/agent/registry_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/agent/role.rs create mode 100644 vendor/codex/codex-rs/core/src/agent/role_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/agent/status.rs create mode 100644 vendor/codex/codex-rs/core/src/agents_md.rs create mode 100644 vendor/codex/codex-rs/core/src/agents_md_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/apply_patch.rs create mode 100644 vendor/codex/codex-rs/core/src/apply_patch_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/apps/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/apps/render.rs create mode 100644 vendor/codex/codex-rs/core/src/arc_monitor.rs create mode 100644 vendor/codex/codex-rs/core/src/arc_monitor_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/bin/config_schema.rs create mode 100644 vendor/codex/codex-rs/core/src/client.rs create mode 100644 vendor/codex/codex-rs/core/src/client_common.rs create mode 100644 vendor/codex/codex-rs/core/src/client_common_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/client_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/codex_delegate.rs create mode 100644 vendor/codex/codex-rs/core/src/codex_delegate_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/codex_thread.rs create mode 100644 vendor/codex/codex-rs/core/src/command_canonicalization.rs create mode 100644 vendor/codex/codex-rs/core/src/command_canonicalization_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/commit_attribution.rs create mode 100644 vendor/codex/codex-rs/core/src/commit_attribution_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/compact.rs create mode 100644 vendor/codex/codex-rs/core/src/compact_remote.rs create mode 100644 vendor/codex/codex-rs/core/src/compact_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/config/agent_roles.rs create mode 100644 vendor/codex/codex-rs/core/src/config/config_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/config/edit.rs create mode 100644 vendor/codex/codex-rs/core/src/config/edit_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/config/managed_features.rs create mode 100644 vendor/codex/codex-rs/core/src/config/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/config/network_proxy_spec.rs create mode 100644 vendor/codex/codex-rs/core/src/config/network_proxy_spec_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/config/permissions.rs create mode 100644 vendor/codex/codex-rs/core/src/config/permissions_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/config/schema.md create mode 100644 vendor/codex/codex-rs/core/src/config/schema.rs create mode 100644 vendor/codex/codex-rs/core/src/config/schema_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/config_loader/README.md create mode 100644 vendor/codex/codex-rs/core/src/config_loader/layer_io.rs create mode 100644 vendor/codex/codex-rs/core/src/config_loader/macos.rs create mode 100644 vendor/codex/codex-rs/core/src/config_loader/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/config_loader/tests.rs create mode 100644 vendor/codex/codex-rs/core/src/connectors.rs create mode 100644 vendor/codex/codex-rs/core/src/connectors_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/consequential_tool_message_templates.json create mode 100644 vendor/codex/codex-rs/core/src/context/approved_command_prefix_saved.rs create mode 100644 vendor/codex/codex-rs/core/src/context/apps_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/available_plugins_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/available_skills_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/collaboration_mode_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/contextual_user_message.rs create mode 100644 vendor/codex/codex-rs/core/src/context/contextual_user_message_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/context/environment_context.rs create mode 100644 vendor/codex/codex-rs/core/src/context/environment_context_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/context/fragment.rs create mode 100644 vendor/codex/codex-rs/core/src/context/guardian_followup_review_reminder.rs create mode 100644 vendor/codex/codex-rs/core/src/context/hook_additional_context.rs create mode 100644 vendor/codex/codex-rs/core/src/context/image_generation_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/context/model_switch_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/network_rule_saved.rs create mode 100644 vendor/codex/codex-rs/core/src/context/permissions_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/permissions_instructions_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/context/personality_spec_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/plugin_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/permissions/approval_policy/never.md create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/permissions/approval_policy/on_failure.md create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/permissions/approval_policy/on_request.md create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/permissions/approval_policy/on_request_rule_request_permission.md create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/permissions/approval_policy/unless_trusted.md create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/permissions/sandbox_mode/danger_full_access.md create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/permissions/sandbox_mode/read_only.md create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/permissions/sandbox_mode/workspace_write.md create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/realtime/realtime_end.md create mode 100644 vendor/codex/codex-rs/core/src/context/prompts/realtime/realtime_start.md create mode 100644 vendor/codex/codex-rs/core/src/context/realtime_end_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/realtime_start_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/realtime_start_with_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/skill_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/spawn_agent_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/subagent_notification.rs create mode 100644 vendor/codex/codex-rs/core/src/context/turn_aborted.rs create mode 100644 vendor/codex/codex-rs/core/src/context/user_instructions.rs create mode 100644 vendor/codex/codex-rs/core/src/context/user_shell_command.rs create mode 100644 vendor/codex/codex-rs/core/src/context_manager/history.rs create mode 100644 vendor/codex/codex-rs/core/src/context_manager/history_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/context_manager/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/context_manager/normalize.rs create mode 100644 vendor/codex/codex-rs/core/src/context_manager/updates.rs create mode 100644 vendor/codex/codex-rs/core/src/event_mapping.rs create mode 100644 vendor/codex/codex-rs/core/src/event_mapping_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/exec.rs create mode 100644 vendor/codex/codex-rs/core/src/exec_env.rs create mode 100644 vendor/codex/codex-rs/core/src/exec_env_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/exec_policy.rs create mode 100644 vendor/codex/codex-rs/core/src/exec_policy_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/exec_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/file_watcher.rs create mode 100644 vendor/codex/codex-rs/core/src/file_watcher_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/flags.rs create mode 100644 vendor/codex/codex-rs/core/src/function_tool.rs create mode 100644 vendor/codex/codex-rs/core/src/git_info_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/guardian/approval_request.rs create mode 100644 vendor/codex/codex-rs/core/src/guardian/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/guardian/policy.md create mode 100644 vendor/codex/codex-rs/core/src/guardian/policy_template.md create mode 100644 vendor/codex/codex-rs/core/src/guardian/prompt.rs create mode 100644 vendor/codex/codex-rs/core/src/guardian/review.rs create mode 100644 vendor/codex/codex-rs/core/src/guardian/review_session.rs create mode 100644 vendor/codex/codex-rs/core/src/guardian/snapshots/codex_core__guardian__tests__guardian_followup_review_request_layout.snap create mode 100644 vendor/codex/codex-rs/core/src/guardian/snapshots/codex_core__guardian__tests__guardian_review_request_layout.snap create mode 100644 vendor/codex/codex-rs/core/src/guardian/tests.rs create mode 100644 vendor/codex/codex-rs/core/src/hook_runtime.rs create mode 100644 vendor/codex/codex-rs/core/src/installation_id.rs create mode 100644 vendor/codex/codex-rs/core/src/landlock.rs create mode 100644 vendor/codex/codex-rs/core/src/lib.rs create mode 100644 vendor/codex/codex-rs/core/src/mcp.rs create mode 100644 vendor/codex/codex-rs/core/src/mcp_openai_file.rs create mode 100644 vendor/codex/codex-rs/core/src/mcp_skill_dependencies.rs create mode 100644 vendor/codex/codex-rs/core/src/mcp_tool_approval_templates.rs create mode 100644 vendor/codex/codex-rs/core/src/mcp_tool_call.rs create mode 100644 vendor/codex/codex-rs/core/src/mcp_tool_call_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/mcp_tool_exposure.rs create mode 100644 vendor/codex/codex-rs/core/src/mcp_tool_exposure_test.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/README.md create mode 100644 vendor/codex/codex-rs/core/src/memories/citations.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/citations_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/control.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/extensions.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/phase1.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/phase1_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/phase2.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/prompts.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/prompts_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/start.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/storage.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/storage_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/tests.rs create mode 100644 vendor/codex/codex-rs/core/src/memories/usage.rs create mode 100644 vendor/codex/codex-rs/core/src/memory_trace.rs create mode 100644 vendor/codex/codex-rs/core/src/memory_trace_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/mention_syntax.rs create mode 100644 vendor/codex/codex-rs/core/src/message_history.rs create mode 100644 vendor/codex/codex-rs/core/src/message_history_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/network_policy_decision.rs create mode 100644 vendor/codex/codex-rs/core/src/network_policy_decision_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/network_proxy_loader.rs create mode 100644 vendor/codex/codex-rs/core/src/network_proxy_loader_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/original_image_detail.rs create mode 100644 vendor/codex/codex-rs/core/src/otel_init.rs create mode 100644 vendor/codex/codex-rs/core/src/personality_migration.rs create mode 100644 vendor/codex/codex-rs/core/src/personality_migration_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/discoverable.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/discoverable_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/injection.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/installed_marketplaces.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/manager.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/manager_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/marketplace_add.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/marketplace_add/install.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/marketplace_add/metadata.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/marketplace_add/source.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/marketplace_remove.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/mentions.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/mentions_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/render.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/render_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/startup_sync.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/startup_sync_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/plugins/test_support.rs create mode 100644 vendor/codex/codex-rs/core/src/prompt_debug.rs create mode 100644 vendor/codex/codex-rs/core/src/realtime_context.rs create mode 100644 vendor/codex/codex-rs/core/src/realtime_context_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/realtime_conversation.rs create mode 100644 vendor/codex/codex-rs/core/src/realtime_conversation_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/realtime_prompt.rs create mode 100644 vendor/codex/codex-rs/core/src/review_format.rs create mode 100644 vendor/codex/codex-rs/core/src/review_prompts.rs create mode 100644 vendor/codex/codex-rs/core/src/rollout.rs create mode 100644 vendor/codex/codex-rs/core/src/safety.rs create mode 100644 vendor/codex/codex-rs/core/src/safety_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/sandbox_tags.rs create mode 100644 vendor/codex/codex-rs/core/src/sandbox_tags_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/sandboxing/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/session/handlers.rs create mode 100644 vendor/codex/codex-rs/core/src/session/mcp.rs create mode 100644 vendor/codex/codex-rs/core/src/session/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/session/review.rs create mode 100644 vendor/codex/codex-rs/core/src/session/rollout_reconstruction.rs create mode 100644 vendor/codex/codex-rs/core/src/session/rollout_reconstruction_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/session/session.rs create mode 100644 vendor/codex/codex-rs/core/src/session/snapshots/codex_core__codex_tests__fork_startup_context_then_first_turn_diff.snap create mode 100644 vendor/codex/codex-rs/core/src/session/tests.rs create mode 100644 vendor/codex/codex-rs/core/src/session/tests/guardian_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/session/turn.rs create mode 100644 vendor/codex/codex-rs/core/src/session/turn_context.rs create mode 100644 vendor/codex/codex-rs/core/src/session_prefix.rs create mode 100644 vendor/codex/codex-rs/core/src/session_rollout_init_error.rs create mode 100644 vendor/codex/codex-rs/core/src/session_startup_prewarm.rs create mode 100644 vendor/codex/codex-rs/core/src/shell.rs create mode 100644 vendor/codex/codex-rs/core/src/shell_detect.rs create mode 100644 vendor/codex/codex-rs/core/src/shell_snapshot.rs create mode 100644 vendor/codex/codex-rs/core/src/shell_snapshot_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/shell_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/skills.rs create mode 100644 vendor/codex/codex-rs/core/src/skills_watcher.rs create mode 100644 vendor/codex/codex-rs/core/src/spawn.rs create mode 100644 vendor/codex/codex-rs/core/src/state/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/state/service.rs create mode 100644 vendor/codex/codex-rs/core/src/state/session.rs create mode 100644 vendor/codex/codex-rs/core/src/state/session_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/state/turn.rs create mode 100644 vendor/codex/codex-rs/core/src/state_db_bridge.rs create mode 100644 vendor/codex/codex-rs/core/src/stream_events_utils.rs create mode 100644 vendor/codex/codex-rs/core/src/stream_events_utils_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tasks/compact.rs create mode 100644 vendor/codex/codex-rs/core/src/tasks/ghost_snapshot.rs create mode 100644 vendor/codex/codex-rs/core/src/tasks/ghost_snapshot_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tasks/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/tasks/mod_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tasks/regular.rs create mode 100644 vendor/codex/codex-rs/core/src/tasks/review.rs create mode 100644 vendor/codex/codex-rs/core/src/tasks/undo.rs create mode 100644 vendor/codex/codex-rs/core/src/tasks/user_shell.rs create mode 100644 vendor/codex/codex-rs/core/src/test_support.rs create mode 100644 vendor/codex/codex-rs/core/src/thread_manager.rs create mode 100644 vendor/codex/codex-rs/core/src/thread_manager_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/thread_rollout_truncation.rs create mode 100644 vendor/codex/codex-rs/core/src/thread_rollout_truncation_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/code_mode/execute_handler.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/code_mode/execute_handler_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/code_mode/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/code_mode/response_adapter.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/code_mode/wait_handler.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/context.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/context_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/events.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/agent_jobs.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/agent_jobs_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/apply_patch.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/apply_patch_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/dynamic.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/grep_files_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/js_repl.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/js_repl_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/list_dir.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/list_dir_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/mcp.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/mcp_resource.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/mcp_resource_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents/close_agent.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents/resume_agent.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents/send_input.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents/spawn.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents/wait.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_common.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_v2.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_v2/close_agent.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_v2/followup_task.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_v2/list_agents.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_v2/message_tool.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_v2/send_message.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_v2/spawn.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/multi_agents_v2/wait.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/plan.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/read_file_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/request_permissions.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/request_user_input.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/request_user_input_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/shell.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/shell_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/test_sync.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/tool_search.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/tool_suggest.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/tool_suggest_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/unavailable_tool.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/unified_exec.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/unified_exec_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/handlers/view_image.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/hook_names.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/js_repl/kernel.js create mode 100644 vendor/codex/codex-rs/core/src/tools/js_repl/meriyah.umd.min.js create mode 100644 vendor/codex/codex-rs/core/src/tools/js_repl/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/js_repl/mod_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/network_approval.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/network_approval_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/orchestrator.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/parallel.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/registry.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/registry_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/router.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/router_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/runtimes/apply_patch.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/runtimes/apply_patch_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/runtimes/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/runtimes/mod_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/runtimes/shell.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/runtimes/shell/unix_escalation.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/runtimes/shell/unix_escalation_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/runtimes/shell/zsh_fork_backend.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/runtimes/unified_exec.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/sandboxing.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/sandboxing_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/spec.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/spec_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/tools/tool_search_entry.rs create mode 100644 vendor/codex/codex-rs/core/src/turn_diff_tracker.rs create mode 100644 vendor/codex/codex-rs/core/src/turn_diff_tracker_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/turn_metadata.rs create mode 100644 vendor/codex/codex-rs/core/src/turn_metadata_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/turn_timing.rs create mode 100644 vendor/codex/codex-rs/core/src/turn_timing_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/unavailable_tool.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/async_watcher.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/async_watcher_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/errors.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/head_tail_buffer.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/head_tail_buffer_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/mod_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/process.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/process_manager.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/process_manager_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/process_state.rs create mode 100644 vendor/codex/codex-rs/core/src/unified_exec/process_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/user_shell_command.rs create mode 100644 vendor/codex/codex-rs/core/src/user_shell_command_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/util.rs create mode 100644 vendor/codex/codex-rs/core/src/util_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/utils/mod.rs create mode 100644 vendor/codex/codex-rs/core/src/utils/path_utils.rs create mode 100644 vendor/codex/codex-rs/core/src/web_search.rs create mode 100644 vendor/codex/codex-rs/core/src/windows_sandbox.rs create mode 100644 vendor/codex/codex-rs/core/src/windows_sandbox_read_grants.rs create mode 100644 vendor/codex/codex-rs/core/src/windows_sandbox_read_grants_tests.rs create mode 100644 vendor/codex/codex-rs/core/src/windows_sandbox_tests.rs create mode 100644 vendor/codex/codex-rs/core/templates/agents/orchestrator.md create mode 100644 vendor/codex/codex-rs/core/templates/collab/experimental_prompt.md create mode 100644 vendor/codex/codex-rs/core/templates/compact/prompt.md create mode 100644 vendor/codex/codex-rs/core/templates/compact/summary_prefix.md create mode 100644 vendor/codex/codex-rs/core/templates/memories/consolidation.md create mode 100644 vendor/codex/codex-rs/core/templates/memories/read_path.md create mode 100644 vendor/codex/codex-rs/core/templates/memories/stage_one_input.md create mode 100644 vendor/codex/codex-rs/core/templates/memories/stage_one_system.md create mode 100644 vendor/codex/codex-rs/core/templates/model_instructions/gpt-5.2-codex_instructions_template.md create mode 100644 vendor/codex/codex-rs/core/templates/personalities/gpt-5.2-codex_friendly.md create mode 100644 vendor/codex/codex-rs/core/templates/personalities/gpt-5.2-codex_pragmatic.md create mode 100644 vendor/codex/codex-rs/core/templates/realtime/backend_prompt.md create mode 100644 vendor/codex/codex-rs/core/templates/review/exit_interrupted.xml create mode 100644 vendor/codex/codex-rs/core/templates/review/exit_success.xml create mode 100644 vendor/codex/codex-rs/core/templates/review/history_message_completed.md create mode 100644 vendor/codex/codex-rs/core/templates/review/history_message_interrupted.md create mode 100644 vendor/codex/codex-rs/core/templates/search_tool/tool_description.md create mode 100644 vendor/codex/codex-rs/core/templates/search_tool/tool_suggest_description.md create mode 100644 vendor/codex/codex-rs/core/tests/all.rs create mode 100644 vendor/codex/codex-rs/core/tests/cli_responses_fixture.sse create mode 100644 vendor/codex/codex-rs/core/tests/common/BUILD.bazel create mode 100644 vendor/codex/codex-rs/core/tests/common/Cargo.toml create mode 100644 vendor/codex/codex-rs/core/tests/common/apps_test_server.rs create mode 100644 vendor/codex/codex-rs/core/tests/common/context_snapshot.rs create mode 100644 vendor/codex/codex-rs/core/tests/common/lib.rs create mode 100644 vendor/codex/codex-rs/core/tests/common/process.rs create mode 100644 vendor/codex/codex-rs/core/tests/common/responses.rs create mode 100644 vendor/codex/codex-rs/core/tests/common/streaming_sse.rs create mode 100644 vendor/codex/codex-rs/core/tests/common/test_codex.rs create mode 100644 vendor/codex/codex-rs/core/tests/common/test_codex_exec.rs create mode 100644 vendor/codex/codex-rs/core/tests/common/tracing.rs create mode 100644 vendor/codex/codex-rs/core/tests/common/zsh_fork.rs create mode 100644 vendor/codex/codex-rs/core/tests/fixtures/incomplete_sse.json create mode 100644 vendor/codex/codex-rs/core/tests/responses_headers.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/abort_tasks.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/agent_jobs.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/agent_websocket.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/agents_md.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/apply_patch_cli.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/approvals.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/cli_stream.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/client.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/client_websockets.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/code_mode.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/codex_delegate.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/collaboration_instructions.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/compact.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/compact_remote.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/compact_resume_fork.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/deprecation_notice.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/exec.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/exec_policy.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/fork_thread.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/hierarchical_agents.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/hooks.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/image_rollout.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/items.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/js_repl.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/json_result.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/live_cli.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/live_reload.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/memories.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/model_overrides.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/model_switching.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/model_visible_layout.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/models_cache_ttl.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/models_etag_responses.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/openai_file_mcp.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/otel.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/override_updates.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/pending_input.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/permissions_messages.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/personality.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/personality_migration.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/plugins.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/prompt_caching.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/prompt_debug_tests.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/quota_exceeded.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/realtime_conversation.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/remote_env.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/remote_models.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/request_compression.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/request_permissions.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/request_permissions_tool.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/request_user_input.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/responses_api_proxy_headers.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/resume.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/resume_warning.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/review.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/rmcp_client.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/rollout_list_find.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/safety_check_downgrade.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/search_tool.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/shell_command.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/shell_serialization.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/shell_snapshot.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/skill_approval.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/skills.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact__manual_compact_with_history_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact__manual_compact_without_prev_user_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact__mid_turn_compaction_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact__pre_sampling_model_switch_compaction_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact__pre_turn_compaction_context_window_exceeded_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact__pre_turn_compaction_including_incoming_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact__pre_turn_compaction_strips_incoming_model_switch_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_compact_resume_restates_realtime_end_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_manual_compact_restates_realtime_start_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_manual_compact_with_history_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_manual_compact_without_prev_user_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_mid_turn_compaction_does_not_restate_realtime_end_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_mid_turn_compaction_multi_summary_reinjects_above_last_summary_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_mid_turn_compaction_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_mid_turn_compaction_summary_only_reinjects_context_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_pre_turn_compaction_context_window_exceeded_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_pre_turn_compaction_failure_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_pre_turn_compaction_including_incoming_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_pre_turn_compaction_restates_realtime_end_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_pre_turn_compaction_restates_realtime_start_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_remote__remote_pre_turn_compaction_strips_incoming_model_switch_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_resume_fork__rollback_followup_turn_trims_context_updates.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__compact_resume_fork__rollback_past_compaction_shapes.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__model_visible_layout__model_visible_layout_cwd_change_does_not_refresh_agents.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__model_visible_layout__model_visible_layout_environment_context_includes_one_subagent.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__model_visible_layout__model_visible_layout_environment_context_includes_two_subagents.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__model_visible_layout__model_visible_layout_resume_override_matches_rollout_model.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__model_visible_layout__model_visible_layout_resume_with_personality_change.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__model_visible_layout__model_visible_layout_turn_overrides.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__pending_input__pending_input_queued_mail_after_commentary.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__pending_input__pending_input_queued_mail_after_reasoning.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__pending_input__pending_input_user_input_no_preempt_after_reasoning.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__realtime_conversation__conversation_startup_context_current_thread_selects_many_turns_by_budget.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__realtime_conversation__conversation_user_text_turn_is_capped_when_mirrored_to_realtime.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/snapshots/all__suite__realtime_conversation__conversation_user_text_turn_is_sent_to_realtime_when_active.snap create mode 100644 vendor/codex/codex-rs/core/tests/suite/spawn_agent_description.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/sqlite_state.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/stream_error_allows_next_turn.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/stream_no_completed.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/subagent_notifications.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/tool_harness.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/tool_parallelism.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/tool_suggest.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/tools.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/truncation.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/turn_state.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/undo.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/unified_exec.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/unstable_features_warning.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/user_notification.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/user_shell_cmd.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/view_image.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/web_search.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/websocket_fallback.rs create mode 100644 vendor/codex/codex-rs/core/tests/suite/window_headers.rs create mode 100644 vendor/codex/codex-rs/debug-client/Cargo.toml create mode 100644 vendor/codex/codex-rs/debug-client/README.md create mode 100644 vendor/codex/codex-rs/debug-client/src/client.rs create mode 100644 vendor/codex/codex-rs/debug-client/src/commands.rs create mode 100644 vendor/codex/codex-rs/debug-client/src/main.rs create mode 100644 vendor/codex/codex-rs/debug-client/src/output.rs create mode 100644 vendor/codex/codex-rs/debug-client/src/reader.rs create mode 100644 vendor/codex/codex-rs/debug-client/src/state.rs create mode 100644 vendor/codex/codex-rs/default.nix create mode 100644 vendor/codex/codex-rs/deny.toml create mode 100644 vendor/codex/codex-rs/device-key/BUILD.bazel create mode 100644 vendor/codex/codex-rs/device-key/Cargo.toml create mode 100644 vendor/codex/codex-rs/device-key/src/lib.rs create mode 100644 vendor/codex/codex-rs/device-key/src/platform.rs create mode 100644 vendor/codex/codex-rs/docs/bazel.md create mode 100644 vendor/codex/codex-rs/docs/codex_mcp_interface.md create mode 100644 vendor/codex/codex-rs/docs/protocol_v1.md create mode 100644 vendor/codex/codex-rs/exec-server/BUILD.bazel create mode 100644 vendor/codex/codex-rs/exec-server/Cargo.toml create mode 100644 vendor/codex/codex-rs/exec-server/README.md create mode 100644 vendor/codex/codex-rs/exec-server/src/client.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/client/http_client.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/client/http_response_body_stream.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/client/reqwest_http_client.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/client/rpc_http_client.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/client_api.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/connection.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/environment.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/file_system.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/fs_helper.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/fs_helper_main.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/fs_sandbox.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/lib.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/local_file_system.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/local_process.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/process.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/process_id.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/protocol.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/remote_file_system.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/remote_process.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/rpc.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/runtime_paths.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/sandboxed_file_system.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/file_system_handler.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/handler.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/handler/tests.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/jsonrpc.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/process_handler.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/processor.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/registry.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/session_registry.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/transport.rs create mode 100644 vendor/codex/codex-rs/exec-server/src/server/transport_tests.rs create mode 100644 vendor/codex/codex-rs/exec-server/tests/common/exec_server.rs create mode 100644 vendor/codex/codex-rs/exec-server/tests/common/mod.rs create mode 100644 vendor/codex/codex-rs/exec-server/tests/exec_process.rs create mode 100644 vendor/codex/codex-rs/exec-server/tests/file_system.rs create mode 100644 vendor/codex/codex-rs/exec-server/tests/http_client.rs create mode 100644 vendor/codex/codex-rs/exec-server/tests/http_request.rs create mode 100644 vendor/codex/codex-rs/exec-server/tests/initialize.rs create mode 100644 vendor/codex/codex-rs/exec-server/tests/process.rs create mode 100644 vendor/codex/codex-rs/exec-server/tests/websocket.rs create mode 100644 vendor/codex/codex-rs/exec/BUILD.bazel create mode 100644 vendor/codex/codex-rs/exec/Cargo.toml create mode 100644 vendor/codex/codex-rs/exec/src/cli.rs create mode 100644 vendor/codex/codex-rs/exec/src/cli_tests.rs create mode 100644 vendor/codex/codex-rs/exec/src/event_processor.rs create mode 100644 vendor/codex/codex-rs/exec/src/event_processor_with_human_output.rs create mode 100644 vendor/codex/codex-rs/exec/src/event_processor_with_human_output_tests.rs create mode 100644 vendor/codex/codex-rs/exec/src/event_processor_with_jsonl_output.rs create mode 100644 vendor/codex/codex-rs/exec/src/event_processor_with_jsonl_output_tests.rs create mode 100644 vendor/codex/codex-rs/exec/src/exec_events.rs create mode 100644 vendor/codex/codex-rs/exec/src/lib.rs create mode 100644 vendor/codex/codex-rs/exec/src/lib_tests.rs create mode 100644 vendor/codex/codex-rs/exec/src/main.rs create mode 100644 vendor/codex/codex-rs/exec/src/main_tests.rs create mode 100644 vendor/codex/codex-rs/exec/tests/all.rs create mode 100644 vendor/codex/codex-rs/exec/tests/event_processor_with_json_output.rs create mode 100644 vendor/codex/codex-rs/exec/tests/fixtures/apply_patch_freeform_final.txt create mode 100644 vendor/codex/codex-rs/exec/tests/fixtures/cli_responses_fixture.sse create mode 100644 vendor/codex/codex-rs/exec/tests/suite/add_dir.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/apply_patch.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/auth_env.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/ephemeral.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/mcp_required_exit.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/originator.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/output_schema.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/prompt_stdin.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/resume.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/sandbox.rs create mode 100644 vendor/codex/codex-rs/exec/tests/suite/server_error_exit.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/BUILD.bazel create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/Cargo.toml create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/README.md create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/build.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/arg_matcher.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/arg_resolver.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/arg_type.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/default.policy create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/error.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/exec_call.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/execv_checker.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/lib.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/main.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/opt.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/policy.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/policy_parser.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/program.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/sed_command.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/src/valid_exec.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/all.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/bad.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/cp.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/good.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/head.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/literal.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/ls.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/parse_sed_command.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/pwd.rs create mode 100644 vendor/codex/codex-rs/execpolicy-legacy/tests/suite/sed.rs create mode 100644 vendor/codex/codex-rs/execpolicy/BUILD.bazel create mode 100644 vendor/codex/codex-rs/execpolicy/Cargo.toml create mode 100644 vendor/codex/codex-rs/execpolicy/README.md create mode 100644 vendor/codex/codex-rs/execpolicy/examples/example.codexpolicy create mode 100644 vendor/codex/codex-rs/execpolicy/src/amend.rs create mode 100644 vendor/codex/codex-rs/execpolicy/src/decision.rs create mode 100644 vendor/codex/codex-rs/execpolicy/src/error.rs create mode 100644 vendor/codex/codex-rs/execpolicy/src/execpolicycheck.rs create mode 100644 vendor/codex/codex-rs/execpolicy/src/executable_name.rs create mode 100644 vendor/codex/codex-rs/execpolicy/src/lib.rs create mode 100644 vendor/codex/codex-rs/execpolicy/src/main.rs create mode 100644 vendor/codex/codex-rs/execpolicy/src/parser.rs create mode 100644 vendor/codex/codex-rs/execpolicy/src/policy.rs create mode 100644 vendor/codex/codex-rs/execpolicy/src/rule.rs create mode 100644 vendor/codex/codex-rs/execpolicy/tests/basic.rs create mode 100644 vendor/codex/codex-rs/features/BUILD.bazel create mode 100644 vendor/codex/codex-rs/features/Cargo.toml create mode 100644 vendor/codex/codex-rs/features/src/feature_configs.rs create mode 100644 vendor/codex/codex-rs/features/src/legacy.rs create mode 100644 vendor/codex/codex-rs/features/src/lib.rs create mode 100644 vendor/codex/codex-rs/features/src/tests.rs create mode 100644 vendor/codex/codex-rs/feedback/BUILD.bazel create mode 100644 vendor/codex/codex-rs/feedback/Cargo.toml create mode 100644 vendor/codex/codex-rs/feedback/src/feedback_diagnostics.rs create mode 100644 vendor/codex/codex-rs/feedback/src/lib.rs create mode 100644 vendor/codex/codex-rs/file-search/BUILD.bazel create mode 100644 vendor/codex/codex-rs/file-search/Cargo.toml create mode 100644 vendor/codex/codex-rs/file-search/README.md create mode 100644 vendor/codex/codex-rs/file-search/src/cli.rs create mode 100644 vendor/codex/codex-rs/file-search/src/lib.rs create mode 100644 vendor/codex/codex-rs/file-search/src/main.rs create mode 100644 vendor/codex/codex-rs/git-utils/BUILD.bazel create mode 100644 vendor/codex/codex-rs/git-utils/Cargo.toml create mode 100644 vendor/codex/codex-rs/git-utils/README.md create mode 100644 vendor/codex/codex-rs/git-utils/src/apply.rs create mode 100644 vendor/codex/codex-rs/git-utils/src/baseline.rs create mode 100644 vendor/codex/codex-rs/git-utils/src/branch.rs create mode 100644 vendor/codex/codex-rs/git-utils/src/errors.rs create mode 100644 vendor/codex/codex-rs/git-utils/src/ghost_commits.rs create mode 100644 vendor/codex/codex-rs/git-utils/src/info.rs create mode 100644 vendor/codex/codex-rs/git-utils/src/lib.rs create mode 100644 vendor/codex/codex-rs/git-utils/src/operations.rs create mode 100644 vendor/codex/codex-rs/git-utils/src/platform.rs create mode 100644 vendor/codex/codex-rs/hooks/BUILD.bazel create mode 100644 vendor/codex/codex-rs/hooks/Cargo.toml create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/permission-request.command.input.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/permission-request.command.output.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/post-tool-use.command.input.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/post-tool-use.command.output.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/pre-tool-use.command.input.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/pre-tool-use.command.output.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/session-start.command.input.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/session-start.command.output.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/stop.command.input.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/stop.command.output.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/user-prompt-submit.command.input.schema.json create mode 100644 vendor/codex/codex-rs/hooks/schema/generated/user-prompt-submit.command.output.schema.json create mode 100644 vendor/codex/codex-rs/hooks/src/bin/write_hooks_schema_fixtures.rs create mode 100644 vendor/codex/codex-rs/hooks/src/engine/command_runner.rs create mode 100644 vendor/codex/codex-rs/hooks/src/engine/config.rs create mode 100644 vendor/codex/codex-rs/hooks/src/engine/discovery.rs create mode 100644 vendor/codex/codex-rs/hooks/src/engine/dispatcher.rs create mode 100644 vendor/codex/codex-rs/hooks/src/engine/mod.rs create mode 100644 vendor/codex/codex-rs/hooks/src/engine/output_parser.rs create mode 100644 vendor/codex/codex-rs/hooks/src/engine/schema_loader.rs create mode 100644 vendor/codex/codex-rs/hooks/src/events/common.rs create mode 100644 vendor/codex/codex-rs/hooks/src/events/mod.rs create mode 100644 vendor/codex/codex-rs/hooks/src/events/permission_request.rs create mode 100644 vendor/codex/codex-rs/hooks/src/events/post_tool_use.rs create mode 100644 vendor/codex/codex-rs/hooks/src/events/pre_tool_use.rs create mode 100644 vendor/codex/codex-rs/hooks/src/events/session_start.rs create mode 100644 vendor/codex/codex-rs/hooks/src/events/stop.rs create mode 100644 vendor/codex/codex-rs/hooks/src/events/user_prompt_submit.rs create mode 100644 vendor/codex/codex-rs/hooks/src/legacy_notify.rs create mode 100644 vendor/codex/codex-rs/hooks/src/lib.rs create mode 100644 vendor/codex/codex-rs/hooks/src/registry.rs create mode 100644 vendor/codex/codex-rs/hooks/src/schema.rs create mode 100644 vendor/codex/codex-rs/hooks/src/types.rs create mode 100644 vendor/codex/codex-rs/hooks/src/user_notification.rs create mode 100644 vendor/codex/codex-rs/install-context/BUILD.bazel create mode 100644 vendor/codex/codex-rs/install-context/Cargo.toml create mode 100644 vendor/codex/codex-rs/install-context/src/lib.rs create mode 100644 vendor/codex/codex-rs/keyring-store/BUILD.bazel create mode 100644 vendor/codex/codex-rs/keyring-store/Cargo.toml create mode 100644 vendor/codex/codex-rs/keyring-store/src/lib.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/BUILD.bazel create mode 100644 vendor/codex/codex-rs/linux-sandbox/Cargo.toml create mode 100644 vendor/codex/codex-rs/linux-sandbox/README.md create mode 100644 vendor/codex/codex-rs/linux-sandbox/build.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/config.h create mode 100644 vendor/codex/codex-rs/linux-sandbox/src/bwrap.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/src/landlock.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/src/launcher.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/src/lib.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/src/linux_run_main.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/src/linux_run_main_tests.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/src/main.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/src/proxy_routing.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/src/vendored_bwrap.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/tests/all.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/tests/suite/landlock.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/tests/suite/managed_proxy.rs create mode 100644 vendor/codex/codex-rs/linux-sandbox/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/lmstudio/BUILD.bazel create mode 100644 vendor/codex/codex-rs/lmstudio/Cargo.toml create mode 100644 vendor/codex/codex-rs/lmstudio/src/client.rs create mode 100644 vendor/codex/codex-rs/lmstudio/src/lib.rs create mode 100644 vendor/codex/codex-rs/login/BUILD.bazel create mode 100644 vendor/codex/codex-rs/login/Cargo.toml create mode 100644 vendor/codex/codex-rs/login/src/assets/error.html create mode 100644 vendor/codex/codex-rs/login/src/assets/success.html create mode 100644 vendor/codex/codex-rs/login/src/auth/agent_identity.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/auth_tests.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/default_client.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/default_client_tests.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/error.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/external_bearer.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/manager.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/mod.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/revoke.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/storage.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/storage_tests.rs create mode 100644 vendor/codex/codex-rs/login/src/auth/util.rs create mode 100644 vendor/codex/codex-rs/login/src/auth_env_telemetry.rs create mode 100644 vendor/codex/codex-rs/login/src/device_code_auth.rs create mode 100644 vendor/codex/codex-rs/login/src/lib.rs create mode 100644 vendor/codex/codex-rs/login/src/pkce.rs create mode 100644 vendor/codex/codex-rs/login/src/server.rs create mode 100644 vendor/codex/codex-rs/login/src/token_data.rs create mode 100644 vendor/codex/codex-rs/login/src/token_data_tests.rs create mode 100644 vendor/codex/codex-rs/login/tests/all.rs create mode 100644 vendor/codex/codex-rs/login/tests/suite/auth_refresh.rs create mode 100644 vendor/codex/codex-rs/login/tests/suite/device_code_login.rs create mode 100644 vendor/codex/codex-rs/login/tests/suite/login_server_e2e.rs create mode 100644 vendor/codex/codex-rs/login/tests/suite/logout.rs create mode 100644 vendor/codex/codex-rs/login/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/mcp-server/BUILD.bazel create mode 100644 vendor/codex/codex-rs/mcp-server/Cargo.toml create mode 100644 vendor/codex/codex-rs/mcp-server/src/codex_tool_config.rs create mode 100644 vendor/codex/codex-rs/mcp-server/src/codex_tool_runner.rs create mode 100644 vendor/codex/codex-rs/mcp-server/src/exec_approval.rs create mode 100644 vendor/codex/codex-rs/mcp-server/src/lib.rs create mode 100644 vendor/codex/codex-rs/mcp-server/src/main.rs create mode 100644 vendor/codex/codex-rs/mcp-server/src/message_processor.rs create mode 100644 vendor/codex/codex-rs/mcp-server/src/outgoing_message.rs create mode 100644 vendor/codex/codex-rs/mcp-server/src/patch_approval.rs create mode 100644 vendor/codex/codex-rs/mcp-server/src/tool_handlers/mod.rs create mode 100644 vendor/codex/codex-rs/mcp-server/tests/all.rs create mode 100644 vendor/codex/codex-rs/mcp-server/tests/common/BUILD.bazel create mode 100644 vendor/codex/codex-rs/mcp-server/tests/common/Cargo.toml create mode 100644 vendor/codex/codex-rs/mcp-server/tests/common/lib.rs create mode 100644 vendor/codex/codex-rs/mcp-server/tests/common/mcp_process.rs create mode 100644 vendor/codex/codex-rs/mcp-server/tests/common/mock_model_server.rs create mode 100644 vendor/codex/codex-rs/mcp-server/tests/common/responses.rs create mode 100644 vendor/codex/codex-rs/mcp-server/tests/suite/codex_tool.rs create mode 100644 vendor/codex/codex-rs/mcp-server/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/model-provider-info/BUILD.bazel create mode 100644 vendor/codex/codex-rs/model-provider-info/Cargo.toml create mode 100644 vendor/codex/codex-rs/model-provider-info/src/lib.rs create mode 100644 vendor/codex/codex-rs/model-provider-info/src/model_provider_info_tests.rs create mode 100644 vendor/codex/codex-rs/model-provider/BUILD.bazel create mode 100644 vendor/codex/codex-rs/model-provider/Cargo.toml create mode 100644 vendor/codex/codex-rs/model-provider/src/amazon_bedrock/auth.rs create mode 100644 vendor/codex/codex-rs/model-provider/src/amazon_bedrock/mantle.rs create mode 100644 vendor/codex/codex-rs/model-provider/src/amazon_bedrock/mod.rs create mode 100644 vendor/codex/codex-rs/model-provider/src/auth.rs create mode 100644 vendor/codex/codex-rs/model-provider/src/bearer_auth_provider.rs create mode 100644 vendor/codex/codex-rs/model-provider/src/lib.rs create mode 100644 vendor/codex/codex-rs/model-provider/src/provider.rs create mode 100644 vendor/codex/codex-rs/models-manager/BUILD.bazel create mode 100644 vendor/codex/codex-rs/models-manager/Cargo.toml create mode 100644 vendor/codex/codex-rs/models-manager/models.json create mode 100644 vendor/codex/codex-rs/models-manager/prompt.md create mode 100644 vendor/codex/codex-rs/models-manager/src/cache.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/collaboration_mode_presets.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/collaboration_mode_presets_tests.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/config.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/lib.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/manager.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/manager_tests.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/model_info.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/model_info_overrides_tests.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/model_info_tests.rs create mode 100644 vendor/codex/codex-rs/models-manager/src/model_presets.rs create mode 100644 vendor/codex/codex-rs/network-proxy/BUILD.bazel create mode 100644 vendor/codex/codex-rs/network-proxy/Cargo.toml create mode 100644 vendor/codex/codex-rs/network-proxy/README.md create mode 100644 vendor/codex/codex-rs/network-proxy/src/certs.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/config.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/http_proxy.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/lib.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/mitm.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/mitm_tests.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/network_policy.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/policy.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/proxy.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/reasons.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/responses.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/runtime.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/socks5.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/state.rs create mode 100644 vendor/codex/codex-rs/network-proxy/src/upstream.rs create mode 100644 vendor/codex/codex-rs/node-version.txt create mode 100644 vendor/codex/codex-rs/ollama/BUILD.bazel create mode 100644 vendor/codex/codex-rs/ollama/Cargo.toml create mode 100644 vendor/codex/codex-rs/ollama/src/client.rs create mode 100644 vendor/codex/codex-rs/ollama/src/lib.rs create mode 100644 vendor/codex/codex-rs/ollama/src/parser.rs create mode 100644 vendor/codex/codex-rs/ollama/src/pull.rs create mode 100644 vendor/codex/codex-rs/ollama/src/url.rs create mode 100644 vendor/codex/codex-rs/otel/BUILD.bazel create mode 100644 vendor/codex/codex-rs/otel/Cargo.toml create mode 100644 vendor/codex/codex-rs/otel/README.md create mode 100644 vendor/codex/codex-rs/otel/src/config.rs create mode 100644 vendor/codex/codex-rs/otel/src/events/mod.rs create mode 100644 vendor/codex/codex-rs/otel/src/events/session_telemetry.rs create mode 100644 vendor/codex/codex-rs/otel/src/events/shared.rs create mode 100644 vendor/codex/codex-rs/otel/src/lib.rs create mode 100644 vendor/codex/codex-rs/otel/src/metrics/client.rs create mode 100644 vendor/codex/codex-rs/otel/src/metrics/config.rs create mode 100644 vendor/codex/codex-rs/otel/src/metrics/error.rs create mode 100644 vendor/codex/codex-rs/otel/src/metrics/mod.rs create mode 100644 vendor/codex/codex-rs/otel/src/metrics/names.rs create mode 100644 vendor/codex/codex-rs/otel/src/metrics/runtime_metrics.rs create mode 100644 vendor/codex/codex-rs/otel/src/metrics/tags.rs create mode 100644 vendor/codex/codex-rs/otel/src/metrics/timer.rs create mode 100644 vendor/codex/codex-rs/otel/src/metrics/validation.rs create mode 100644 vendor/codex/codex-rs/otel/src/otlp.rs create mode 100644 vendor/codex/codex-rs/otel/src/provider.rs create mode 100644 vendor/codex/codex-rs/otel/src/targets.rs create mode 100644 vendor/codex/codex-rs/otel/src/trace_context.rs create mode 100644 vendor/codex/codex-rs/otel/tests/harness/mod.rs create mode 100644 vendor/codex/codex-rs/otel/tests/suite/manager_metrics.rs create mode 100644 vendor/codex/codex-rs/otel/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/otel/tests/suite/otel_export_routing_policy.rs create mode 100644 vendor/codex/codex-rs/otel/tests/suite/otlp_http_loopback.rs create mode 100644 vendor/codex/codex-rs/otel/tests/suite/runtime_summary.rs create mode 100644 vendor/codex/codex-rs/otel/tests/suite/send.rs create mode 100644 vendor/codex/codex-rs/otel/tests/suite/snapshot.rs create mode 100644 vendor/codex/codex-rs/otel/tests/suite/timing.rs create mode 100644 vendor/codex/codex-rs/otel/tests/suite/validation.rs create mode 100644 vendor/codex/codex-rs/otel/tests/tests.rs create mode 100644 vendor/codex/codex-rs/plugin/BUILD.bazel create mode 100644 vendor/codex/codex-rs/plugin/Cargo.toml create mode 100644 vendor/codex/codex-rs/plugin/src/lib.rs create mode 100644 vendor/codex/codex-rs/plugin/src/load_outcome.rs create mode 100644 vendor/codex/codex-rs/plugin/src/plugin_id.rs create mode 100644 vendor/codex/codex-rs/plugin/src/plugin_namespace.rs create mode 100644 vendor/codex/codex-rs/process-hardening/BUILD.bazel create mode 100644 vendor/codex/codex-rs/process-hardening/Cargo.toml create mode 100644 vendor/codex/codex-rs/process-hardening/README.md create mode 100644 vendor/codex/codex-rs/process-hardening/src/lib.rs create mode 100644 vendor/codex/codex-rs/protocol/BUILD.bazel create mode 100644 vendor/codex/codex-rs/protocol/Cargo.toml create mode 100644 vendor/codex/codex-rs/protocol/README.md create mode 100644 vendor/codex/codex-rs/protocol/src/account.rs create mode 100644 vendor/codex/codex-rs/protocol/src/agent_path.rs create mode 100644 vendor/codex/codex-rs/protocol/src/approvals.rs create mode 100644 vendor/codex/codex-rs/protocol/src/auth.rs create mode 100644 vendor/codex/codex-rs/protocol/src/config_types.rs create mode 100644 vendor/codex/codex-rs/protocol/src/dynamic_tools.rs create mode 100644 vendor/codex/codex-rs/protocol/src/error.rs create mode 100644 vendor/codex/codex-rs/protocol/src/error_tests.rs create mode 100644 vendor/codex/codex-rs/protocol/src/exec_output.rs create mode 100644 vendor/codex/codex-rs/protocol/src/exec_output_tests.rs create mode 100644 vendor/codex/codex-rs/protocol/src/items.rs create mode 100644 vendor/codex/codex-rs/protocol/src/lib.rs create mode 100644 vendor/codex/codex-rs/protocol/src/mcp.rs create mode 100644 vendor/codex/codex-rs/protocol/src/memory_citation.rs create mode 100644 vendor/codex/codex-rs/protocol/src/message_history.rs create mode 100644 vendor/codex/codex-rs/protocol/src/models.rs create mode 100644 vendor/codex/codex-rs/protocol/src/network_policy.rs create mode 100644 vendor/codex/codex-rs/protocol/src/num_format.rs create mode 100644 vendor/codex/codex-rs/protocol/src/openai_models.rs create mode 100644 vendor/codex/codex-rs/protocol/src/parse_command.rs create mode 100644 vendor/codex/codex-rs/protocol/src/permissions.rs create mode 100644 vendor/codex/codex-rs/protocol/src/plan_tool.rs create mode 100644 vendor/codex/codex-rs/protocol/src/prompts/base_instructions/default.md create mode 100644 vendor/codex/codex-rs/protocol/src/protocol.rs create mode 100644 vendor/codex/codex-rs/protocol/src/request_permissions.rs create mode 100644 vendor/codex/codex-rs/protocol/src/request_user_input.rs create mode 100644 vendor/codex/codex-rs/protocol/src/thread_id.rs create mode 100644 vendor/codex/codex-rs/protocol/src/tool_name.rs create mode 100644 vendor/codex/codex-rs/protocol/src/user_input.rs create mode 100644 vendor/codex/codex-rs/realtime-webrtc/BUILD.bazel create mode 100644 vendor/codex/codex-rs/realtime-webrtc/Cargo.toml create mode 100644 vendor/codex/codex-rs/realtime-webrtc/src/lib.rs create mode 100644 vendor/codex/codex-rs/realtime-webrtc/src/native.rs create mode 100644 vendor/codex/codex-rs/response-debug-context/BUILD.bazel create mode 100644 vendor/codex/codex-rs/response-debug-context/Cargo.toml create mode 100644 vendor/codex/codex-rs/response-debug-context/src/lib.rs create mode 100644 vendor/codex/codex-rs/responses-api-proxy/BUILD.bazel create mode 100644 vendor/codex/codex-rs/responses-api-proxy/Cargo.toml create mode 100644 vendor/codex/codex-rs/responses-api-proxy/README.md create mode 100644 vendor/codex/codex-rs/responses-api-proxy/npm/README.md create mode 100644 vendor/codex/codex-rs/responses-api-proxy/npm/bin/codex-responses-api-proxy.js create mode 100644 vendor/codex/codex-rs/responses-api-proxy/npm/package.json create mode 100644 vendor/codex/codex-rs/responses-api-proxy/src/dump.rs create mode 100644 vendor/codex/codex-rs/responses-api-proxy/src/lib.rs create mode 100644 vendor/codex/codex-rs/responses-api-proxy/src/main.rs create mode 100644 vendor/codex/codex-rs/responses-api-proxy/src/read_api_key.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/BUILD.bazel create mode 100644 vendor/codex/codex-rs/rmcp-client/Cargo.toml create mode 100644 vendor/codex/codex-rs/rmcp-client/src/auth_status.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/bin/rmcp_test_server.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/bin/test_stdio_server.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/bin/test_streamable_http_server.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/elicitation_client_service.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/executor_process_transport.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/http_client_adapter.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/lib.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/logging_client_handler.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/oauth.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/perform_oauth_login.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/program_resolver.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/rmcp_client.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/stdio_server_launcher.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/src/utils.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/tests/process_group_cleanup.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/tests/resources.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/tests/streamable_http_recovery.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/tests/streamable_http_remote.rs create mode 100644 vendor/codex/codex-rs/rmcp-client/tests/streamable_http_test_support.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/BUILD.bazel create mode 100644 vendor/codex/codex-rs/rollout-trace/Cargo.toml create mode 100644 vendor/codex/codex-rs/rollout-trace/README.md create mode 100644 vendor/codex/codex-rs/rollout-trace/src/bundle.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/compaction.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/inference.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/lib.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/model/conversation.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/model/mod.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/model/runtime.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/model/session.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/payload.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/raw_event.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/recorder.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/recorder_tests.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/code_cell.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/code_cell_tests.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/compaction.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/conversation.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/conversation/normalize.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/conversation_tests.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/inference.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/mod.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/test_support.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/thread.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/tool.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/tool/agents.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/tool/agents_tests.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/tool/terminal.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/reducer/tool/terminal_tests.rs create mode 100644 vendor/codex/codex-rs/rollout-trace/src/writer.rs create mode 100644 vendor/codex/codex-rs/rollout/BUILD.bazel create mode 100644 vendor/codex/codex-rs/rollout/Cargo.toml create mode 100644 vendor/codex/codex-rs/rollout/src/config.rs create mode 100644 vendor/codex/codex-rs/rollout/src/lib.rs create mode 100644 vendor/codex/codex-rs/rollout/src/list.rs create mode 100644 vendor/codex/codex-rs/rollout/src/metadata.rs create mode 100644 vendor/codex/codex-rs/rollout/src/metadata_tests.rs create mode 100644 vendor/codex/codex-rs/rollout/src/policy.rs create mode 100644 vendor/codex/codex-rs/rollout/src/recorder.rs create mode 100644 vendor/codex/codex-rs/rollout/src/recorder_tests.rs create mode 100644 vendor/codex/codex-rs/rollout/src/session_index.rs create mode 100644 vendor/codex/codex-rs/rollout/src/session_index_tests.rs create mode 100644 vendor/codex/codex-rs/rollout/src/state_db.rs create mode 100644 vendor/codex/codex-rs/rollout/src/state_db_tests.rs create mode 100644 vendor/codex/codex-rs/rollout/src/tests.rs create mode 100644 vendor/codex/codex-rs/rust-toolchain.toml create mode 100644 vendor/codex/codex-rs/rustfmt.toml create mode 100644 vendor/codex/codex-rs/sandboxing/BUILD.bazel create mode 100644 vendor/codex/codex-rs/sandboxing/Cargo.toml create mode 100644 vendor/codex/codex-rs/sandboxing/src/bwrap.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/bwrap_tests.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/landlock.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/landlock_tests.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/lib.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/manager.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/manager_tests.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/policy_transforms.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/policy_transforms_tests.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/restricted_read_only_platform_defaults.sbpl create mode 100644 vendor/codex/codex-rs/sandboxing/src/seatbelt.rs create mode 100644 vendor/codex/codex-rs/sandboxing/src/seatbelt_base_policy.sbpl create mode 100644 vendor/codex/codex-rs/sandboxing/src/seatbelt_network_policy.sbpl create mode 100644 vendor/codex/codex-rs/sandboxing/src/seatbelt_tests.rs create mode 100644 vendor/codex/codex-rs/scripts/setup-windows.ps1 create mode 100644 vendor/codex/codex-rs/secrets/BUILD.bazel create mode 100644 vendor/codex/codex-rs/secrets/Cargo.toml create mode 100644 vendor/codex/codex-rs/secrets/src/lib.rs create mode 100644 vendor/codex/codex-rs/secrets/src/local.rs create mode 100644 vendor/codex/codex-rs/secrets/src/sanitizer.rs create mode 100644 vendor/codex/codex-rs/shell-command/BUILD.bazel create mode 100644 vendor/codex/codex-rs/shell-command/Cargo.toml create mode 100644 vendor/codex/codex-rs/shell-command/src/bash.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/command_safety/is_dangerous_command.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/command_safety/is_safe_command.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/command_safety/mod.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/command_safety/powershell_parser.ps1 create mode 100644 vendor/codex/codex-rs/shell-command/src/command_safety/powershell_parser.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/command_safety/windows_dangerous_commands.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/command_safety/windows_safe_commands.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/lib.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/parse_command.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/powershell.rs create mode 100644 vendor/codex/codex-rs/shell-command/src/shell_detect.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/BUILD.bazel create mode 100644 vendor/codex/codex-rs/shell-escalation/Cargo.toml create mode 100644 vendor/codex/codex-rs/shell-escalation/README.md create mode 100644 vendor/codex/codex-rs/shell-escalation/patches/zsh-exec-wrapper.patch create mode 100644 vendor/codex/codex-rs/shell-escalation/src/bin/main_execve_wrapper.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/src/lib.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/src/unix/escalate_client.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/src/unix/escalate_protocol.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/src/unix/escalate_server.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/src/unix/escalation_policy.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/src/unix/execve_wrapper.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/src/unix/mod.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/src/unix/socket.rs create mode 100644 vendor/codex/codex-rs/shell-escalation/src/unix/stopwatch.rs create mode 100644 vendor/codex/codex-rs/skills/BUILD.bazel create mode 100644 vendor/codex/codex-rs/skills/Cargo.toml create mode 100644 vendor/codex/codex-rs/skills/build.rs create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/LICENSE.txt create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/SKILL.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/agents/openai.yaml create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/assets/imagegen-small.svg create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/assets/imagegen.png create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/references/cli.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/references/codex-network.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/references/image-api.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/references/prompting.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/references/sample-prompts.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/scripts/image_gen.py create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/imagegen/scripts/remove_chroma_key.py create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/openai-docs/LICENSE.txt create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/openai-docs/SKILL.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/openai-docs/agents/openai.yaml create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/openai-docs/assets/openai-small.svg create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/openai-docs/assets/openai.png create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/openai-docs/references/latest-model.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/openai-docs/references/prompting-guide.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/openai-docs/references/upgrade-guide.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/openai-docs/scripts/resolve-latest-model-info.js create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/plugin-creator/SKILL.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/plugin-creator/agents/openai.yaml create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/plugin-creator/assets/plugin-creator-small.svg create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/plugin-creator/assets/plugin-creator.png create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/plugin-creator/references/plugin-json-spec.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/plugin-creator/scripts/create_basic_plugin.py create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-creator/SKILL.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-creator/agents/openai.yaml create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-creator/assets/skill-creator-small.svg create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-creator/assets/skill-creator.png create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-creator/license.txt create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-creator/references/openai_yaml.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-creator/scripts/generate_openai_yaml.py create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-creator/scripts/init_skill.py create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-creator/scripts/quick_validate.py create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-installer/LICENSE.txt create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-installer/SKILL.md create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-installer/agents/openai.yaml create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-installer/assets/skill-installer-small.svg create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-installer/assets/skill-installer.png create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-installer/scripts/github_utils.py create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-installer/scripts/install-skill-from-github.py create mode 100644 vendor/codex/codex-rs/skills/src/assets/samples/skill-installer/scripts/list-skills.py create mode 100644 vendor/codex/codex-rs/skills/src/lib.rs create mode 100644 vendor/codex/codex-rs/state/BUILD.bazel create mode 100644 vendor/codex/codex-rs/state/Cargo.toml create mode 100644 vendor/codex/codex-rs/state/logs_migrations/0001_logs.sql create mode 100644 vendor/codex/codex-rs/state/logs_migrations/0002_logs_feedback_log_body.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0001_threads.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0002_logs.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0003_logs_thread_id.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0004_thread_dynamic_tools.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0005_threads_cli_version.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0006_memories.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0007_threads_first_user_message.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0008_backfill_state.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0009_stage1_outputs_rollout_slug.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0010_logs_process_id.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0011_logs_partition_prune_indexes.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0012_logs_estimated_bytes.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0013_threads_agent_nickname.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0014_agent_jobs.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0015_agent_jobs_max_runtime_seconds.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0016_memory_usage.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0017_phase2_selection_flag.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0018_phase2_selection_snapshot.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0019_thread_dynamic_tools_defer_loading.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0020_threads_model_reasoning_effort.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0021_thread_spawn_edges.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0022_threads_agent_path.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0023_drop_logs.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0024_remote_control_enrollments.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0025_thread_timestamps_millis.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0026_thread_dynamic_tools_namespace.sql create mode 100644 vendor/codex/codex-rs/state/migrations/0027_threads_cwd_sort_indexes.sql create mode 100644 vendor/codex/codex-rs/state/src/bin/logs_client.rs create mode 100644 vendor/codex/codex-rs/state/src/extract.rs create mode 100644 vendor/codex/codex-rs/state/src/lib.rs create mode 100644 vendor/codex/codex-rs/state/src/log_db.rs create mode 100644 vendor/codex/codex-rs/state/src/migrations.rs create mode 100644 vendor/codex/codex-rs/state/src/model/agent_job.rs create mode 100644 vendor/codex/codex-rs/state/src/model/backfill_state.rs create mode 100644 vendor/codex/codex-rs/state/src/model/graph.rs create mode 100644 vendor/codex/codex-rs/state/src/model/log.rs create mode 100644 vendor/codex/codex-rs/state/src/model/memories.rs create mode 100644 vendor/codex/codex-rs/state/src/model/mod.rs create mode 100644 vendor/codex/codex-rs/state/src/model/thread_metadata.rs create mode 100644 vendor/codex/codex-rs/state/src/paths.rs create mode 100644 vendor/codex/codex-rs/state/src/runtime.rs create mode 100644 vendor/codex/codex-rs/state/src/runtime/agent_jobs.rs create mode 100644 vendor/codex/codex-rs/state/src/runtime/backfill.rs create mode 100644 vendor/codex/codex-rs/state/src/runtime/logs.rs create mode 100644 vendor/codex/codex-rs/state/src/runtime/memories.rs create mode 100644 vendor/codex/codex-rs/state/src/runtime/remote_control.rs create mode 100644 vendor/codex/codex-rs/state/src/runtime/test_support.rs create mode 100644 vendor/codex/codex-rs/state/src/runtime/threads.rs create mode 100644 vendor/codex/codex-rs/stdio-to-uds/BUILD.bazel create mode 100644 vendor/codex/codex-rs/stdio-to-uds/Cargo.toml create mode 100644 vendor/codex/codex-rs/stdio-to-uds/README.md create mode 100644 vendor/codex/codex-rs/stdio-to-uds/src/lib.rs create mode 100644 vendor/codex/codex-rs/stdio-to-uds/src/main.rs create mode 100644 vendor/codex/codex-rs/stdio-to-uds/tests/stdio_to_uds.rs create mode 100644 vendor/codex/codex-rs/terminal-detection/BUILD.bazel create mode 100644 vendor/codex/codex-rs/terminal-detection/Cargo.toml create mode 100644 vendor/codex/codex-rs/terminal-detection/src/lib.rs create mode 100644 vendor/codex/codex-rs/terminal-detection/src/terminal_tests.rs create mode 100644 vendor/codex/codex-rs/test-binary-support/BUILD.bazel create mode 100644 vendor/codex/codex-rs/test-binary-support/Cargo.toml create mode 100644 vendor/codex/codex-rs/test-binary-support/lib.rs create mode 100644 vendor/codex/codex-rs/thread-store/BUILD.bazel create mode 100644 vendor/codex/codex-rs/thread-store/Cargo.toml create mode 100644 vendor/codex/codex-rs/thread-store/examples/generate-proto.rs create mode 100644 vendor/codex/codex-rs/thread-store/scripts/generate-proto.sh create mode 100644 vendor/codex/codex-rs/thread-store/src/error.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/lib.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/local/archive_thread.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/local/helpers.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/local/list_threads.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/local/mod.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/local/read_thread.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/local/test_support.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/local/unarchive_thread.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/local/update_thread_metadata.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/recorder.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/remote/AGENTS.md create mode 100644 vendor/codex/codex-rs/thread-store/src/remote/helpers.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/remote/list_threads.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/remote/mod.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/remote/proto/codex.thread_store.v1.proto create mode 100644 vendor/codex/codex-rs/thread-store/src/remote/proto/codex.thread_store.v1.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/store.rs create mode 100644 vendor/codex/codex-rs/thread-store/src/types.rs create mode 100644 vendor/codex/codex-rs/tools/BUILD.bazel create mode 100644 vendor/codex/codex-rs/tools/Cargo.toml create mode 100644 vendor/codex/codex-rs/tools/README.md create mode 100644 vendor/codex/codex-rs/tools/src/agent_job_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/agent_job_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/agent_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/agent_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/apply_patch_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/apply_patch_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/code_mode.rs create mode 100644 vendor/codex/codex-rs/tools/src/code_mode_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/dynamic_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/dynamic_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/image_detail.rs create mode 100644 vendor/codex/codex-rs/tools/src/image_detail_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/js_repl_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/js_repl_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/json_schema.rs create mode 100644 vendor/codex/codex-rs/tools/src/json_schema_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/lib.rs create mode 100644 vendor/codex/codex-rs/tools/src/local_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/local_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/mcp_resource_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/mcp_resource_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/mcp_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/mcp_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/plan_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/request_user_input_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/request_user_input_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/responses_api.rs create mode 100644 vendor/codex/codex-rs/tools/src/responses_api_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_apply_patch.lark create mode 100644 vendor/codex/codex-rs/tools/src/tool_config.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_config_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_definition.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_definition_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_discovery.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_discovery_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_registry_plan.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_registry_plan_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_registry_plan_types.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_spec.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_spec_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_suggest.rs create mode 100644 vendor/codex/codex-rs/tools/src/tool_suggest_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/utility_tool.rs create mode 100644 vendor/codex/codex-rs/tools/src/utility_tool_tests.rs create mode 100644 vendor/codex/codex-rs/tools/src/view_image.rs create mode 100644 vendor/codex/codex-rs/tui/BUILD.bazel create mode 100644 vendor/codex/codex-rs/tui/Cargo.toml create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/blocks/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/codex/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/default/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/dots/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hash/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/hbars/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/openai/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/shapes/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/slug/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_1.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_10.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_11.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_12.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_13.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_14.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_15.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_16.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_17.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_18.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_19.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_2.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_20.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_21.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_22.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_23.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_24.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_25.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_26.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_27.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_28.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_29.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_3.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_30.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_31.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_32.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_33.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_34.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_35.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_36.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_4.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_5.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_6.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_7.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_8.txt create mode 100644 vendor/codex/codex-rs/tui/frames/vbars/frame_9.txt create mode 100644 vendor/codex/codex-rs/tui/prompt_for_init_command.md create mode 100644 vendor/codex/codex-rs/tui/src/additional_dirs.rs create mode 100644 vendor/codex/codex-rs/tui/src/app.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/agent_navigation.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/app_server_adapter.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/app_server_requests.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/background_requests.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/config_persistence.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/event_dispatch.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/history_ui.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/input.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/loaded_threads.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/pending_interactive_replay.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/platform_actions.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/replay_filter.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/session_lifecycle.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/side.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/startup_prompts.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/test_support.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/tests.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/tests/model_catalog.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/tests/snapshots/codex_tui__app__tests__model_catalog__model_migration_prompt_shows_for_hidden_model.snap create mode 100644 vendor/codex/codex-rs/tui/src/app/thread_events.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/thread_routing.rs create mode 100644 vendor/codex/codex-rs/tui/src/app/thread_session_state.rs create mode 100644 vendor/codex/codex-rs/tui/src/app_backtrack.rs create mode 100644 vendor/codex/codex-rs/tui/src/app_command.rs create mode 100644 vendor/codex/codex-rs/tui/src/app_event.rs create mode 100644 vendor/codex/codex-rs/tui/src/app_event_sender.rs create mode 100644 vendor/codex/codex-rs/tui/src/app_server_approval_conversions.rs create mode 100644 vendor/codex/codex-rs/tui/src/app_server_session.rs create mode 100644 vendor/codex/codex-rs/tui/src/ascii_animation.rs create mode 100644 vendor/codex/codex-rs/tui/src/audio_device.rs create mode 100644 vendor/codex/codex-rs/tui/src/bin/md-events.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/AGENTS.md create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/app_link_view.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/approval_overlay.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/bottom_pane_view.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/chat_composer.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/chat_composer/history_search.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/chat_composer_history.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/command_popup.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/custom_prompt_view.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/experimental_features_view.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/feedback_view.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/file_search_popup.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/footer.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/list_selection_view.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/mcp_server_elicitation.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/memories_settings_view.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/mod.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/multi_select_picker.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/paste_burst.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/pending_input_preview.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/pending_thread_approvals.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/popup_consts.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/prompt_args.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/layout.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/mod.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/render.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_footer_wrap.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_freeform.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_hidden_options_footer.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_long_option_text.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_multi_question_first.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_multi_question_last.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_options.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_options_notes_visible.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_scrolling_options.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_tight_height.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_unanswered_confirmation.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/request_user_input/snapshots/codex_tui__bottom_pane__request_user_input__tests__request_user_input_wrapped_options.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/scroll_state.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/selection_popup_common.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/selection_tabs.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/skill_popup.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/skills_toggle_view.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/slash_commands.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__app_link_view__tests__app_link_view_enable_suggestion_with_reason.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__app_link_view__tests__app_link_view_install_suggestion_with_reason.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__approval_overlay__tests__approval_overlay_additional_permissions_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__approval_overlay__tests__approval_overlay_cross_thread_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__approval_overlay__tests__approval_overlay_permissions_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__approval_overlay__tests__network_exec_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__backspace_after_pastes.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__empty.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_empty_full.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_empty_mode_cycle_with_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_empty_mode_cycle_without_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_empty_mode_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_plan_empty_full.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_plan_empty_mode_cycle_with_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_plan_empty_mode_cycle_without_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_plan_empty_mode_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_plan_queue_full.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_plan_queue_message_without_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_plan_queue_mode_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_plan_queue_short_with_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_plan_queue_short_without_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_queue_full.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_queue_message_without_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_queue_mode_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_queue_short_with_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_collapse_queue_short_without_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_ctrl_c_interrupt.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_ctrl_c_quit.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_ctrl_c_then_esc_hint.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_esc_hint_backtrack.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_esc_hint_from_overlay.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_hidden_while_typing.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_history_search.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_overlay_then_external_esc_hint.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_shell_command_absorbs_bang.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__footer_mode_shortcut_overlay.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__image_placeholder_multiple.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__image_placeholder_single.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__large.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__mention_popup_type_prefixes.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__multiple_pastes.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__plugin_mention_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__remote_image_rows.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__remote_image_rows_after_delete_first.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__remote_image_rows_selected.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__slash_popup_mo.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__slash_popup_res.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__small.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__chat_composer__tests__zellij_empty_composer.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__feedback_view__tests__feedback_view_bad_result.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__feedback_view__tests__feedback_view_bug.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__feedback_view__tests__feedback_view_good_result.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__feedback_view__tests__feedback_view_other.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__feedback_view__tests__feedback_view_render.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__feedback_view__tests__feedback_view_safety_check.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__feedback_view__tests__feedback_view_with_connectivity_diagnostics.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_active_agent_label.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_composer_has_draft_queue_hint_enabled.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_context_tokens_used.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_ctrl_c_quit_idle.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_ctrl_c_quit_running.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_esc_hint_idle.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_esc_hint_primed.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_mode_indicator_narrow_overlap_hides.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_mode_indicator_running_hides_hint.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_mode_indicator_wide.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_shortcuts_collaboration_modes_enabled.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_shortcuts_context_running.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_shortcuts_default.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_shortcuts_shift_and_esc.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_status_line_disabled_context_right.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_status_line_enabled_mode_right.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_status_line_enabled_no_mode_right.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_status_line_overrides_context.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_status_line_overrides_draft_idle.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_status_line_overrides_shortcuts.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_status_line_truncated_with_gap.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_status_line_with_active_agent_label.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__footer__tests__footer_status_line_yields_to_queue_hint.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_col_width_mode_auto_all_rows_scroll.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_col_width_mode_auto_visible_scroll.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_col_width_mode_fixed_scroll.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_footer_note_wraps.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_model_picker_width_80.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_narrow_width_preserves_rows.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_spacing_with_subtitle.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__list_selection_view__tests__list_selection_spacing_without_subtitle.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__mcp_server_elicitation__tests__mcp_server_elicitation_approval_form_with_param_summary.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__mcp_server_elicitation__tests__mcp_server_elicitation_approval_form_with_session_persist.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__mcp_server_elicitation__tests__mcp_server_elicitation_approval_form_without_schema.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__mcp_server_elicitation__tests__mcp_server_elicitation_boolean_form.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__mcp_server_elicitation__tests__mcp_server_elicitation_message_only_form.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__mcp_server_elicitation__tests__mcp_server_elicitation_message_only_form_with_persist_options.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__message_queue__tests__render_many_line_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__message_queue__tests__render_one_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__message_queue__tests__render_two_messages.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__message_queue__tests__render_wrapped_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__pending_input_preview__tests__render_many_line_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__pending_input_preview__tests__render_more_than_three_messages.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__pending_input_preview__tests__render_multiline_pending_steer_uses_single_prefix_and_truncates.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__pending_input_preview__tests__render_one_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__pending_input_preview__tests__render_one_message_with_shift_left_binding.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__pending_input_preview__tests__render_one_pending_steer.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__pending_input_preview__tests__render_pending_steers_above_queued_messages.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__pending_input_preview__tests__render_two_messages.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__pending_input_preview__tests__render_wrapped_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__skill_popup__tests__skill_popup_scrolled.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__skills_toggle_view__tests__skills_toggle_basic.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__status_line_setup__tests__setup_view_snapshot_uses_runtime_preview_values.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__tests__queued_messages_visible_when_status_hidden_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__tests__status_and_composer_fill_height_without_bottom_padding.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__tests__status_and_queued_messages_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__tests__status_hidden_when_height_too_small_height_1.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__tests__status_only_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__tests__status_with_details_and_queued_messages_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__title_setup__tests__terminal_title_setup_basic.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__unified_exec_footer__tests__render_many_sessions.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__unified_exec_footer__tests__render_more_sessions.snap create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/status_line_setup.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/status_surface_preview.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/textarea.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/title_setup.rs create mode 100644 vendor/codex/codex-rs/tui/src/bottom_pane/unified_exec_footer.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/interrupts.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/plan_implementation.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/plugins.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/realtime.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/reasoning_shortcuts.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/session_header.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/side.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/skills.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/slash_dispatch.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__app_server_collab_spawn_completed_renders_requested_model_and_effort.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__app_server_collab_wait_items_render_history.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__app_server_forked_thread_history_line.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__app_server_forked_thread_history_line_without_app_server_name.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__app_server_guardian_review_denied_renders_denied_request.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__app_server_guardian_review_timed_out_renders_timed_out_request.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__app_server_mcp_startup_failure_renders_warning_history.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__apply_patch_manual_flow_history_approved.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__approval_modal_exec.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__approval_modal_exec_multiline_prefix_no_execpolicy.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__approval_modal_exec_no_reason.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__approval_modal_patch.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__approvals_selection_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__approvals_selection_popup@windows.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__approvals_selection_popup@windows_degraded.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__apps_popup_loading_state.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__binary_size_ideal_response.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_idle_h1.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_idle_h2.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_idle_h3.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_running_h1.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_running_h2.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chat_small_running_h3.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chatwidget_exec_and_status_layout_vt100_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chatwidget_markdown_code_blocks_vt100_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__chatwidget_tall.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__compact_queues_user_messages_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__completed_hook_output_precedes_following_assistant_message_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__completed_hook_with_output_flushes_immediately_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__completed_same_id_hook_output_survives_restart_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__deltas_then_same_final_message_are_rendered_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__disabled_slash_command_while_task_running_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exec_approval_history_decision_aborted_long.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exec_approval_history_decision_aborted_multiline.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exec_approval_history_decision_approved_short.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exec_approval_modal_exec.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__experimental_features_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step1_start_ls.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step2_finish_ls.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step3_start_cat_foo.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step4_finish_cat_foo.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step5_finish_sed_range.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__exploring_step6_finish_cat_bar.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__feedback_good_result_consent_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__feedback_selection_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__feedback_upload_consent_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__final_reasoning_then_message_without_deltas_are_rendered.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__forked_thread_history_line.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__forked_thread_history_line_without_name.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__full_access_confirmation_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__guardian_approved_exec_renders_approved_request.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__guardian_approved_request_permissions_renders_request_summary.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__guardian_denied_exec_renders_warning_and_denied_request.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__guardian_parallel_reviews_render_aggregate_status.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__guardian_timed_out_exec_renders_warning_and_timed_out_request.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__hook_blocked_failed_feedback_history_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__hook_completed_before_reveal_renders_completed_without_running_flash_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__hook_live_running_then_quiet_completed_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__hook_runs_while_exec_active_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__identical_parallel_running_hooks_collapse_to_count_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__image_generation_call_history_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__interrupt_clears_unified_exec_wait_streak.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__interrupt_exec_marks_failed.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__interrupt_preserves_unified_exec_wait_streak.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__interrupted_turn_error_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__interrupted_turn_pending_steers_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__live_app_server_command_execution_strips_shell_wrapper.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__local_image_attachment_history_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__mcp_startup_header_booting.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__memories_enable_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__memories_reset_confirmation.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__memories_settings_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__model_picker_filters_hidden_models.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__model_reasoning_selection_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__model_reasoning_selection_popup_extra_high_warning.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__model_selection_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__multi_agent_enable_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__overlapping_hook_live_cell_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__permissions_selection_history_after_mode_switch.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__permissions_selection_history_full_access_to_default.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__permissions_selection_history_full_access_to_default@windows.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__personality_selection_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plan_implementation_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plan_implementation_popup_context_usage.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plan_implementation_popup_no_selected.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugin_detail_popup_installable.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugin_detail_popup_installed.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugins_popup_curated_marketplace.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugins_popup_loading_state.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugins_popup_search_filtered.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__post_tool_use_hook_events_render_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__pre_tool_use_hook_events_render_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__preamble_keeps_working_status.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__rate_limit_switch_prompt_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__realtime_audio_selection_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__realtime_audio_selection_popup_narrow.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__realtime_microphone_picker_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__renamed_thread_footer_title.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__replayed_interrupted_reconnect_footer_row.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__review_queues_user_messages_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__session_start_hook_events_render_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__side_context_label_preserves_status_line.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__side_context_label_shows_parent_status.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__slash_copy_no_output_info_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__slash_rename_prefilled_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__slash_side_requests_forked_side_question_while_task_running.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_line_fast_mode_footer.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_line_model_with_reasoning_context_remaining_footer.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_line_model_with_reasoning_fast_footer.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_line_model_with_reasoning_plan_mode_footer.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_line_setup_popup_hardcoded_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_line_setup_popup_live_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_line_setup_popup_mixed.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_surface_previews_hardcoded_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_surface_previews_live_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_surface_previews_mixed.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_widget_active.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__status_widget_and_approval_modal.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__terminal_title_setup_popup_hardcoded_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__terminal_title_setup_popup_live_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__terminal_title_setup_popup_mixed.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__unified_exec_begin_restores_working_status.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__unified_exec_empty_then_non_empty_after.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__unified_exec_non_empty_then_empty_active.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__unified_exec_non_empty_then_empty_after.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__unified_exec_unknown_end_with_active_exploring_cell.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__unified_exec_wait_after_final_agent_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__unified_exec_wait_before_streamed_agent_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__unified_exec_wait_status_renders_command_in_single_details_row.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__unified_exec_waiting_multiple_empty_after.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__update_popup.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__user_prompt_submit_app_server_hook_notifications_render_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__user_shell_ls_output.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__workspace_member_credits_depleted_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__workspace_member_usage_limit_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__workspace_owner_credits_nudge_completion_feedback.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__workspace_owner_limit_state_messages.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__workspace_owner_usage_limit_nudge_completion_feedback.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/status_surfaces.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/app_server.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/approval_requests.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/background_events.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/composer_submission.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/exec_flow.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/guardian.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/helpers.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/history_replay.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/mcp_startup.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/permissions.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/plan_mode.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/popups_and_settings.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/review_mode.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/side.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/slash_commands.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/snapshots/codex_tui__chatwidget__tests__approval_requests__exec_approval_history_decision_aborted_long.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/snapshots/codex_tui__chatwidget__tests__approval_requests__exec_approval_history_decision_aborted_multiline.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/snapshots/codex_tui__chatwidget__tests__approval_requests__exec_approval_history_decision_approved_short.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/snapshots/codex_tui__chatwidget__tests__approval_requests__exec_approval_modal_exec.snap create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/status_and_layout.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/status_command_tests.rs create mode 100644 vendor/codex/codex-rs/tui/src/chatwidget/tests/status_surface_previews.rs create mode 100644 vendor/codex/codex-rs/tui/src/cli.rs create mode 100644 vendor/codex/codex-rs/tui/src/clipboard_copy.rs create mode 100644 vendor/codex/codex-rs/tui/src/clipboard_paste.rs create mode 100644 vendor/codex/codex-rs/tui/src/collaboration_modes.rs create mode 100644 vendor/codex/codex-rs/tui/src/color.rs create mode 100644 vendor/codex/codex-rs/tui/src/custom_terminal.rs create mode 100644 vendor/codex/codex-rs/tui/src/cwd_prompt.rs create mode 100644 vendor/codex/codex-rs/tui/src/debug_config.rs create mode 100644 vendor/codex/codex-rs/tui/src/diff_render.rs create mode 100644 vendor/codex/codex-rs/tui/src/exec_cell/mod.rs create mode 100644 vendor/codex/codex-rs/tui/src/exec_cell/model.rs create mode 100644 vendor/codex/codex-rs/tui/src/exec_cell/render.rs create mode 100644 vendor/codex/codex-rs/tui/src/exec_command.rs create mode 100644 vendor/codex/codex-rs/tui/src/external_agent_config_migration.rs create mode 100644 vendor/codex/codex-rs/tui/src/external_agent_config_migration_startup.rs create mode 100644 vendor/codex/codex-rs/tui/src/external_editor.rs create mode 100644 vendor/codex/codex-rs/tui/src/file_search.rs create mode 100644 vendor/codex/codex-rs/tui/src/frames.rs create mode 100644 vendor/codex/codex-rs/tui/src/get_git_diff.rs create mode 100644 vendor/codex/codex-rs/tui/src/history_cell.rs create mode 100644 vendor/codex/codex-rs/tui/src/history_cell/hook_cell.rs create mode 100644 vendor/codex/codex-rs/tui/src/insert_history.rs create mode 100644 vendor/codex/codex-rs/tui/src/key_hint.rs create mode 100644 vendor/codex/codex-rs/tui/src/lib.rs create mode 100644 vendor/codex/codex-rs/tui/src/line_truncation.rs create mode 100644 vendor/codex/codex-rs/tui/src/live_wrap.rs create mode 100644 vendor/codex/codex-rs/tui/src/local_chatgpt_auth.rs create mode 100644 vendor/codex/codex-rs/tui/src/main.rs create mode 100644 vendor/codex/codex-rs/tui/src/markdown.rs create mode 100644 vendor/codex/codex-rs/tui/src/markdown_render.rs create mode 100644 vendor/codex/codex-rs/tui/src/markdown_render_tests.rs create mode 100644 vendor/codex/codex-rs/tui/src/markdown_stream.rs create mode 100644 vendor/codex/codex-rs/tui/src/mention_codec.rs create mode 100644 vendor/codex/codex-rs/tui/src/model_catalog.rs create mode 100644 vendor/codex/codex-rs/tui/src/model_migration.rs create mode 100644 vendor/codex/codex-rs/tui/src/multi_agents.rs create mode 100644 vendor/codex/codex-rs/tui/src/notifications/bel.rs create mode 100644 vendor/codex/codex-rs/tui/src/notifications/mod.rs create mode 100644 vendor/codex/codex-rs/tui/src/notifications/osc9.rs create mode 100644 vendor/codex/codex-rs/tui/src/onboarding/auth.rs create mode 100644 vendor/codex/codex-rs/tui/src/onboarding/auth/headless_chatgpt_login.rs create mode 100644 vendor/codex/codex-rs/tui/src/onboarding/mod.rs create mode 100644 vendor/codex/codex-rs/tui/src/onboarding/onboarding_screen.rs create mode 100644 vendor/codex/codex-rs/tui/src/onboarding/snapshots/codex_tui__onboarding__trust_directory__tests__renders_snapshot_for_git_repo.snap create mode 100644 vendor/codex/codex-rs/tui/src/onboarding/trust_directory.rs create mode 100644 vendor/codex/codex-rs/tui/src/onboarding/welcome.rs create mode 100644 vendor/codex/codex-rs/tui/src/oss_selection.rs create mode 100644 vendor/codex/codex-rs/tui/src/pager_overlay.rs create mode 100644 vendor/codex/codex-rs/tui/src/public_widgets/composer_input.rs create mode 100644 vendor/codex/codex-rs/tui/src/public_widgets/mod.rs create mode 100644 vendor/codex/codex-rs/tui/src/render/highlight.rs create mode 100644 vendor/codex/codex-rs/tui/src/render/line_utils.rs create mode 100644 vendor/codex/codex-rs/tui/src/render/mod.rs create mode 100644 vendor/codex/codex-rs/tui/src/render/renderable.rs create mode 100644 vendor/codex/codex-rs/tui/src/render/snapshots/codex_tui__render__highlight__tests__ansi_family_foreground_palette.snap create mode 100644 vendor/codex/codex-rs/tui/src/resume_picker.rs create mode 100644 vendor/codex/codex-rs/tui/src/selection_list.rs create mode 100644 vendor/codex/codex-rs/tui/src/session_log.rs create mode 100644 vendor/codex/codex-rs/tui/src/shimmer.rs create mode 100644 vendor/codex/codex-rs/tui/src/skills_helpers.rs create mode 100644 vendor/codex/codex-rs/tui/src/slash_command.rs create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__app__tests__agent_picker_item_name.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__app__tests__clear_ui_after_long_transcript_fresh_header_only.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__app__tests__clear_ui_header_fast_status_fast_capable_models.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__cwd_prompt__tests__cwd_prompt_fork_modal.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__cwd_prompt__tests__cwd_prompt_modal.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__add_details.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__ansi16_insert_delete_no_background.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_add_block.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_delete_block.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_multiple_files_block.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_update_block.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_update_block_line_numbers_three_digits_text.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_update_block_relativizes_path.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_update_block_wraps_long_lines.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_update_block_wraps_long_lines_text.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__apply_update_with_rename_block.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__blank_context_line.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__diff_gallery_120x40.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__diff_gallery_80x24.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__diff_gallery_94x35.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__single_line_replacement_counts.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__syntax_highlighted_insert_wraps.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__syntax_highlighted_insert_wraps_text.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__theme_scope_background_resolution.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__update_details_with_rename.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__vertical_ellipsis_between_hunks.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__diff_render__tests__wrap_behavior_insert.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__external_agent_config_migration__tests__external_agent_config_migration_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__external_agent_config_migration__tests__external_agent_config_migration_prompt_windows.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__active_mcp_tool_call_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__coalesced_reads_dedupe_names.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__coalesces_reads_across_multiple_calls.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__coalesces_sequential_reads_within_one_call.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__completed_mcp_tool_call_error_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__completed_mcp_tool_call_multiple_outputs_inline_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__completed_mcp_tool_call_multiple_outputs_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__completed_mcp_tool_call_success_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__completed_mcp_tool_call_wrapped_outputs_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__error_event_oversized_input_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__mcp_inventory_loading_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__mcp_tools_output_from_statuses_renders_status_only_servers.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__mcp_tools_output_from_statuses_renders_verbose_inventory.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__mcp_tools_output_lists_tools_for_hyphenated_server_names.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__mcp_tools_output_masks_sensitive_values.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__multiline_command_both_lines_wrap_with_correct_prefixes.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__multiline_command_without_wrap_uses_branch_then_eight_spaces.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__multiline_command_wraps_with_extra_indent_on_subsequent_lines.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__plan_update_with_note_and_wrapping_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__plan_update_without_note_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__ps_output_chunk_leading_whitespace_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__ps_output_empty_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__ps_output_long_command_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__ps_output_many_sessions_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__ps_output_multiline_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__ran_cell_multiline_with_stderr_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__session_header_indicates_yolo_mode.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__session_info_availability_nux_tooltip_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__single_line_command_compact_when_fits.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__single_line_command_wraps_with_four_space_continuation.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__stderr_tail_more_than_five_lines_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__user_history_cell_numbers_multiple_remote_images.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__user_history_cell_renders_remote_image_urls.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__user_history_cell_wraps_and_prefixes_each_line_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__web_search_history_cell_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__history_cell__tests__web_search_history_cell_transcript_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__markdown_render__markdown_render_tests__markdown_render_complex_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__markdown_render__markdown_render_tests__markdown_render_file_link_snapshot.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__model_migration__tests__model_migration_prompt.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__model_migration__tests__model_migration_prompt_gpt5_codex.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__model_migration__tests__model_migration_prompt_gpt5_codex_mini.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__model_migration__tests__model_migration_prompt_gpt5_family.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__multi_agents__tests__collab_agent_transcript.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__multi_agents__tests__collab_resume_interrupted.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__pager_overlay__tests__static_overlay_snapshot_basic.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__pager_overlay__tests__static_overlay_wraps_long_lines.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__pager_overlay__tests__transcript_overlay_apply_patch_scroll_vt100.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__pager_overlay__tests__transcript_overlay_renders_live_tail.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__pager_overlay__tests__transcript_overlay_snapshot_basic.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__resume_picker__tests__resume_picker_screen.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__resume_picker__tests__resume_picker_search_error.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__resume_picker__tests__resume_picker_table.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__resume_picker__tests__resume_picker_thread_names.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__status_indicator_widget__tests__renders_truncated.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__status_indicator_widget__tests__renders_with_queued_messages.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__status_indicator_widget__tests__renders_with_queued_messages@macos.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__status_indicator_widget__tests__renders_with_working_header.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__status_indicator_widget__tests__renders_wrapped_details_panama_two_lines.snap create mode 100644 vendor/codex/codex-rs/tui/src/snapshots/codex_tui__update_prompt__tests__update_prompt_modal.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/account.rs create mode 100644 vendor/codex/codex-rs/tui/src/status/card.rs create mode 100644 vendor/codex/codex-rs/tui/src/status/format.rs create mode 100644 vendor/codex/codex-rs/tui/src/status/helpers.rs create mode 100644 vendor/codex/codex-rs/tui/src/status/mod.rs create mode 100644 vendor/codex/codex-rs/tui/src/status/rate_limits.rs create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_cached_limits_hide_credits_without_flag.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_includes_credits_and_limits.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_includes_forked_from.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_includes_monthly_limit.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_includes_reasoning_details.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_shows_missing_limits_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_shows_refreshing_limits_notice.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_shows_stale_limits_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_shows_unavailable_limits_message.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_treats_refreshing_empty_limits_as_unavailable.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_truncates_in_narrow_terminal.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/snapshots/codex_tui__status__tests__status_snapshot_uses_default_reasoning_when_config_empty.snap create mode 100644 vendor/codex/codex-rs/tui/src/status/tests.rs create mode 100644 vendor/codex/codex-rs/tui/src/status_indicator_widget.rs create mode 100644 vendor/codex/codex-rs/tui/src/streaming/chunking.rs create mode 100644 vendor/codex/codex-rs/tui/src/streaming/commit_tick.rs create mode 100644 vendor/codex/codex-rs/tui/src/streaming/controller.rs create mode 100644 vendor/codex/codex-rs/tui/src/streaming/mod.rs create mode 100644 vendor/codex/codex-rs/tui/src/style.rs create mode 100644 vendor/codex/codex-rs/tui/src/terminal_palette.rs create mode 100644 vendor/codex/codex-rs/tui/src/terminal_title.rs create mode 100644 vendor/codex/codex-rs/tui/src/test_backend.rs create mode 100644 vendor/codex/codex-rs/tui/src/test_support.rs create mode 100644 vendor/codex/codex-rs/tui/src/text_formatting.rs create mode 100644 vendor/codex/codex-rs/tui/src/theme_picker.rs create mode 100644 vendor/codex/codex-rs/tui/src/tooltips.rs create mode 100644 vendor/codex/codex-rs/tui/src/tui.rs create mode 100644 vendor/codex/codex-rs/tui/src/tui/event_stream.rs create mode 100644 vendor/codex/codex-rs/tui/src/tui/frame_rate_limiter.rs create mode 100644 vendor/codex/codex-rs/tui/src/tui/frame_requester.rs create mode 100644 vendor/codex/codex-rs/tui/src/tui/job_control.rs create mode 100644 vendor/codex/codex-rs/tui/src/ui_consts.rs create mode 100644 vendor/codex/codex-rs/tui/src/update_action.rs create mode 100644 vendor/codex/codex-rs/tui/src/update_prompt.rs create mode 100644 vendor/codex/codex-rs/tui/src/updates.rs create mode 100644 vendor/codex/codex-rs/tui/src/version.rs create mode 100644 vendor/codex/codex-rs/tui/src/voice.rs create mode 100644 vendor/codex/codex-rs/tui/src/wrapping.rs create mode 100644 vendor/codex/codex-rs/tui/styles.md create mode 100644 vendor/codex/codex-rs/tui/tests/all.rs create mode 100644 vendor/codex/codex-rs/tui/tests/fixtures/oss-story.jsonl create mode 100644 vendor/codex/codex-rs/tui/tests/manager_dependency_regression.rs create mode 100644 vendor/codex/codex-rs/tui/tests/suite/mod.rs create mode 100644 vendor/codex/codex-rs/tui/tests/suite/model_availability_nux.rs create mode 100644 vendor/codex/codex-rs/tui/tests/suite/no_panic_on_startup.rs create mode 100644 vendor/codex/codex-rs/tui/tests/suite/status_indicator.rs create mode 100644 vendor/codex/codex-rs/tui/tests/suite/vt100_history.rs create mode 100644 vendor/codex/codex-rs/tui/tests/suite/vt100_live_commit.rs create mode 100644 vendor/codex/codex-rs/tui/tests/test_backend.rs create mode 100644 vendor/codex/codex-rs/tui/tooltips.txt create mode 100644 vendor/codex/codex-rs/uds/BUILD.bazel create mode 100644 vendor/codex/codex-rs/uds/Cargo.toml create mode 100644 vendor/codex/codex-rs/uds/src/lib.rs create mode 100644 vendor/codex/codex-rs/uds/src/lib_tests.rs create mode 100644 vendor/codex/codex-rs/utils/absolute-path/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/absolute-path/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/absolute-path/src/absolutize.rs create mode 100644 vendor/codex/codex-rs/utils/absolute-path/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/approval-presets/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/approval-presets/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/approval-presets/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/cache/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/cache/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/cache/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/cargo-bin/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/cargo-bin/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/cargo-bin/README.md create mode 100644 vendor/codex/codex-rs/utils/cargo-bin/repo_root.marker create mode 100644 vendor/codex/codex-rs/utils/cargo-bin/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/cli/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/cli/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/cli/src/approval_mode_cli_arg.rs create mode 100644 vendor/codex/codex-rs/utils/cli/src/config_override.rs create mode 100644 vendor/codex/codex-rs/utils/cli/src/format_env_display.rs create mode 100644 vendor/codex/codex-rs/utils/cli/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/cli/src/sandbox_mode_cli_arg.rs create mode 100644 vendor/codex/codex-rs/utils/cli/src/shared_options.rs create mode 100644 vendor/codex/codex-rs/utils/elapsed/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/elapsed/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/elapsed/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/fuzzy-match/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/fuzzy-match/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/fuzzy-match/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/home-dir/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/home-dir/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/home-dir/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/image/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/image/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/image/src/error.rs create mode 100644 vendor/codex/codex-rs/utils/image/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/json-to-toml/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/json-to-toml/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/json-to-toml/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/oss/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/oss/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/oss/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/output-truncation/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/output-truncation/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/output-truncation/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/output-truncation/src/truncate_tests.rs create mode 100644 vendor/codex/codex-rs/utils/path-utils/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/path-utils/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/path-utils/src/env.rs create mode 100644 vendor/codex/codex-rs/utils/path-utils/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/path-utils/src/path_utils_tests.rs create mode 100644 vendor/codex/codex-rs/utils/plugins/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/plugins/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/plugins/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/plugins/src/mcp_connector.rs create mode 100644 vendor/codex/codex-rs/utils/plugins/src/mention_syntax.rs create mode 100644 vendor/codex/codex-rs/utils/plugins/src/plugin_namespace.rs create mode 100644 vendor/codex/codex-rs/utils/pty/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/pty/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/pty/README.md create mode 100644 vendor/codex/codex-rs/utils/pty/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/pty/src/pipe.rs create mode 100644 vendor/codex/codex-rs/utils/pty/src/process.rs create mode 100644 vendor/codex/codex-rs/utils/pty/src/process_group.rs create mode 100644 vendor/codex/codex-rs/utils/pty/src/pty.rs create mode 100644 vendor/codex/codex-rs/utils/pty/src/tests.rs create mode 100644 vendor/codex/codex-rs/utils/pty/src/win/conpty.rs create mode 100644 vendor/codex/codex-rs/utils/pty/src/win/mod.rs create mode 100644 vendor/codex/codex-rs/utils/pty/src/win/procthreadattr.rs create mode 100644 vendor/codex/codex-rs/utils/pty/src/win/psuedocon.rs create mode 100644 vendor/codex/codex-rs/utils/readiness/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/readiness/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/readiness/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/rustls-provider/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/rustls-provider/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/rustls-provider/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/sandbox-summary/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/sandbox-summary/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/sandbox-summary/src/config_summary.rs create mode 100644 vendor/codex/codex-rs/utils/sandbox-summary/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/sandbox-summary/src/sandbox_summary.rs create mode 100644 vendor/codex/codex-rs/utils/sleep-inhibitor/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/sleep-inhibitor/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/sleep-inhibitor/src/dummy.rs create mode 100644 vendor/codex/codex-rs/utils/sleep-inhibitor/src/iokit_bindings.rs create mode 100644 vendor/codex/codex-rs/utils/sleep-inhibitor/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/sleep-inhibitor/src/linux_inhibitor.rs create mode 100644 vendor/codex/codex-rs/utils/sleep-inhibitor/src/macos.rs create mode 100644 vendor/codex/codex-rs/utils/sleep-inhibitor/src/windows_inhibitor.rs create mode 100644 vendor/codex/codex-rs/utils/stream-parser/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/stream-parser/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/stream-parser/README.md create mode 100644 vendor/codex/codex-rs/utils/stream-parser/src/assistant_text.rs create mode 100644 vendor/codex/codex-rs/utils/stream-parser/src/citation.rs create mode 100644 vendor/codex/codex-rs/utils/stream-parser/src/inline_hidden_tag.rs create mode 100644 vendor/codex/codex-rs/utils/stream-parser/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/stream-parser/src/proposed_plan.rs create mode 100644 vendor/codex/codex-rs/utils/stream-parser/src/stream_text.rs create mode 100644 vendor/codex/codex-rs/utils/stream-parser/src/tagged_line_parser.rs create mode 100644 vendor/codex/codex-rs/utils/stream-parser/src/utf8_stream.rs create mode 100644 vendor/codex/codex-rs/utils/string/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/string/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/string/src/lib.rs create mode 100644 vendor/codex/codex-rs/utils/string/src/truncate.rs create mode 100644 vendor/codex/codex-rs/utils/string/src/truncate/tests.rs create mode 100644 vendor/codex/codex-rs/utils/template/BUILD.bazel create mode 100644 vendor/codex/codex-rs/utils/template/Cargo.toml create mode 100644 vendor/codex/codex-rs/utils/template/README.md create mode 100644 vendor/codex/codex-rs/utils/template/src/lib.rs create mode 100644 vendor/codex/codex-rs/v8-poc/.gitignore create mode 100644 vendor/codex/codex-rs/v8-poc/BUILD.bazel create mode 100644 vendor/codex/codex-rs/v8-poc/Cargo.toml create mode 100644 vendor/codex/codex-rs/v8-poc/src/lib.rs create mode 100644 vendor/codex/codex-rs/vendor/BUILD.bazel create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/.dir-locals.el create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/.editorconfig create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/.github/workflows/check.yml create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/CODE-OF-CONDUCT.md create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/COPYING create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/LICENSE create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/NEWS.md create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/README.md create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/SECURITY.md create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/bind-mount.c create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/bind-mount.h create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/bubblewrap.c create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/bubblewrap.jpg create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/bwrap.xml create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/ci/builddeps.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/ci/enable-userns.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/completions/bash/bwrap create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/completions/bash/meson.build create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/completions/meson.build create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/completions/zsh/_bwrap create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/completions/zsh/meson.build create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/demos/bubblewrap-shell.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/demos/flatpak-run.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/demos/flatpak.bpf create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/demos/userns-block-fd.py create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/meson.build create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/meson_options.txt create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/network.c create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/network.h create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/packaging/bubblewrap.spec create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/release-checklist.md create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/libtest-core.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/libtest.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/meson.build create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/test-run.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/test-seccomp.py create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/test-specifying-pidns.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/test-specifying-userns.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/test-utils.c create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/try-syscall.c create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/use-as-subproject/.gitignore create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/use-as-subproject/README create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/use-as-subproject/assert-correct-rpath.py create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/use-as-subproject/config.h create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/use-as-subproject/dummy-config.h.in create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/tests/use-as-subproject/meson.build create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/uncrustify.cfg create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/uncrustify.sh create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/utils.c create mode 100644 vendor/codex/codex-rs/vendor/bubblewrap/utils.h create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/BUILD.bazel create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/Cargo.toml create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/build.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/codex-windows-sandbox-setup.manifest create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/sandbox_smoketests.py create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/acl.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/allow.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/audit.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/bin/command_runner.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/bin/setup_main.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/cap.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/conpty/mod.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/desktop.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/dpapi.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/elevated/command_runner_win.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/elevated/cwd_junction.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/elevated/ipc_framed.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/elevated/runner_client.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/elevated/runner_pipe.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/elevated_impl.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/env.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/firewall.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/helper_materialization.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/hide_users.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/identity.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/lib.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/logging.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/path_normalization.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/policy.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/proc_thread_attr.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/process.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/read_acl_mutex.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/sandbox_users.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/sandbox_utils.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/setup_error.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/setup_main_win.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/setup_orchestrator.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/spawn_prep.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/ssh_config_dependencies.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/token.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/unified_exec/backends/elevated.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/unified_exec/backends/legacy.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/unified_exec/backends/mod.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/unified_exec/backends/windows_common.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/unified_exec/session.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/unified_exec/tests.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/winutil.rs create mode 100644 vendor/codex/codex-rs/windows-sandbox-rs/src/workspace_acl.rs create mode 100644 vendor/codex/defs.bzl create mode 100644 vendor/codex/docs/CLA.md create mode 100644 vendor/codex/docs/agents_md.md create mode 100644 vendor/codex/docs/authentication.md create mode 100644 vendor/codex/docs/config.md create mode 100644 vendor/codex/docs/contributing.md create mode 100644 vendor/codex/docs/example-config.md create mode 100644 vendor/codex/docs/exec.md create mode 100644 vendor/codex/docs/execpolicy.md create mode 100644 vendor/codex/docs/exit-confirmation-prompt-design.md create mode 100644 vendor/codex/docs/getting-started.md create mode 100644 vendor/codex/docs/install.md create mode 100644 vendor/codex/docs/js_repl.md create mode 100644 vendor/codex/docs/license.md create mode 100644 vendor/codex/docs/open-source-fund.md create mode 100644 vendor/codex/docs/sandbox.md create mode 100644 vendor/codex/docs/skills.md create mode 100644 vendor/codex/docs/slash_commands.md create mode 100644 vendor/codex/docs/tui-alternate-screen.md create mode 100644 vendor/codex/docs/tui-chat-composer.md create mode 100644 vendor/codex/docs/tui-request-user-input.md create mode 100644 vendor/codex/docs/tui-stream-chunking-review.md create mode 100644 vendor/codex/docs/tui-stream-chunking-tuning.md create mode 100644 vendor/codex/docs/tui-stream-chunking-validation.md create mode 100644 vendor/codex/flake.lock create mode 100644 vendor/codex/flake.nix create mode 100644 vendor/codex/justfile create mode 100644 vendor/codex/package.json create mode 100644 vendor/codex/patches/BUILD.bazel create mode 100644 vendor/codex/patches/abseil_windows_gnullvm_thread_identity.patch create mode 100644 vendor/codex/patches/aws-lc-sys_memcmp_check.patch create mode 100644 vendor/codex/patches/aws-lc-sys_windows_msvc_memcmp_probe.patch create mode 100644 vendor/codex/patches/aws-lc-sys_windows_msvc_prebuilt_nasm.patch create mode 100644 vendor/codex/patches/bzip2_windows_stack_args.patch create mode 100644 vendor/codex/patches/llvm_windows_symlink_extract.patch create mode 100644 vendor/codex/patches/ring_windows_msvc_include_dirs.patch create mode 100644 vendor/codex/patches/rules_rs_windows_exec_linker.patch create mode 100644 vendor/codex/patches/rules_rs_windows_gnullvm_exec.patch create mode 100644 vendor/codex/patches/rules_rust_windows_bootstrap_process_wrapper_linker.patch create mode 100644 vendor/codex/patches/rules_rust_windows_build_script_runner_paths.patch create mode 100644 vendor/codex/patches/rules_rust_windows_exec_bin_target.patch create mode 100644 vendor/codex/patches/rules_rust_windows_exec_msvc_build_script_env.patch create mode 100644 vendor/codex/patches/rules_rust_windows_exec_rustc_dev_rlib.patch create mode 100644 vendor/codex/patches/rules_rust_windows_exec_std.patch create mode 100644 vendor/codex/patches/rules_rust_windows_gnullvm_build_script.patch create mode 100644 vendor/codex/patches/rules_rust_windows_msvc_direct_link_args.patch create mode 100644 vendor/codex/patches/rules_rust_windows_process_wrapper_skip_temp_outputs.patch create mode 100644 vendor/codex/patches/rusty_v8_prebuilt_out_dir.patch create mode 100644 vendor/codex/patches/v8_bazel_rules.patch create mode 100644 vendor/codex/patches/v8_module_deps.patch create mode 100644 vendor/codex/patches/v8_source_portability.patch create mode 100644 vendor/codex/patches/webrtc-sys_hermetic_darwin_sysroot.patch create mode 100644 vendor/codex/patches/windows-link.patch create mode 100644 vendor/codex/patches/xz_windows_stack_args.patch create mode 100644 vendor/codex/patches/zstd-sys_windows_msvc_include_dirs.patch create mode 100644 vendor/codex/pnpm-lock.yaml create mode 100644 vendor/codex/pnpm-workspace.yaml create mode 100644 vendor/codex/rbe.bzl create mode 100644 vendor/codex/scripts/asciicheck.py create mode 100644 vendor/codex/scripts/check-module-bazel-lock.sh create mode 100644 vendor/codex/scripts/check_blob_size.py create mode 100644 vendor/codex/scripts/debug-codex.sh create mode 100644 vendor/codex/scripts/install/install.ps1 create mode 100644 vendor/codex/scripts/install/install.sh create mode 100644 vendor/codex/scripts/list-bazel-clippy-targets.sh create mode 100644 vendor/codex/scripts/list-bazel-release-targets.sh create mode 100644 vendor/codex/scripts/mock_responses_websocket_server.py create mode 100644 vendor/codex/scripts/readme_toc.py create mode 100644 vendor/codex/scripts/run_tui_with_exec_server.sh create mode 100644 vendor/codex/scripts/stage_npm_packages.py create mode 100644 vendor/codex/scripts/start-codex-exec.sh create mode 100644 vendor/codex/scripts/test-remote-env.sh create mode 100644 vendor/codex/sdk/python-runtime/README.md create mode 100644 vendor/codex/sdk/python-runtime/hatch_build.py create mode 100644 vendor/codex/sdk/python-runtime/pyproject.toml create mode 100644 vendor/codex/sdk/python-runtime/src/codex_cli_bin/__init__.py create mode 100644 vendor/codex/sdk/python/README.md create mode 100644 vendor/codex/sdk/python/_runtime_setup.py create mode 100644 vendor/codex/sdk/python/docs/api-reference.md create mode 100644 vendor/codex/sdk/python/docs/faq.md create mode 100644 vendor/codex/sdk/python/docs/getting-started.md create mode 100644 vendor/codex/sdk/python/examples/01_quickstart_constructor/async.py create mode 100644 vendor/codex/sdk/python/examples/01_quickstart_constructor/sync.py create mode 100644 vendor/codex/sdk/python/examples/02_turn_run/async.py create mode 100644 vendor/codex/sdk/python/examples/02_turn_run/sync.py create mode 100644 vendor/codex/sdk/python/examples/03_turn_stream_events/async.py create mode 100644 vendor/codex/sdk/python/examples/03_turn_stream_events/sync.py create mode 100644 vendor/codex/sdk/python/examples/04_models_and_metadata/async.py create mode 100644 vendor/codex/sdk/python/examples/04_models_and_metadata/sync.py create mode 100644 vendor/codex/sdk/python/examples/05_existing_thread/async.py create mode 100644 vendor/codex/sdk/python/examples/05_existing_thread/sync.py create mode 100644 vendor/codex/sdk/python/examples/06_thread_lifecycle_and_controls/async.py create mode 100644 vendor/codex/sdk/python/examples/06_thread_lifecycle_and_controls/sync.py create mode 100644 vendor/codex/sdk/python/examples/07_image_and_text/async.py create mode 100644 vendor/codex/sdk/python/examples/07_image_and_text/sync.py create mode 100644 vendor/codex/sdk/python/examples/08_local_image_and_text/async.py create mode 100644 vendor/codex/sdk/python/examples/08_local_image_and_text/sync.py create mode 100644 vendor/codex/sdk/python/examples/09_async_parity/sync.py create mode 100644 vendor/codex/sdk/python/examples/10_error_handling_and_retry/async.py create mode 100644 vendor/codex/sdk/python/examples/10_error_handling_and_retry/sync.py create mode 100644 vendor/codex/sdk/python/examples/11_cli_mini_app/async.py create mode 100644 vendor/codex/sdk/python/examples/11_cli_mini_app/sync.py create mode 100644 vendor/codex/sdk/python/examples/12_turn_params_kitchen_sink/async.py create mode 100644 vendor/codex/sdk/python/examples/12_turn_params_kitchen_sink/sync.py create mode 100644 vendor/codex/sdk/python/examples/13_model_select_and_turn_params/async.py create mode 100644 vendor/codex/sdk/python/examples/13_model_select_and_turn_params/sync.py create mode 100644 vendor/codex/sdk/python/examples/14_turn_controls/async.py create mode 100644 vendor/codex/sdk/python/examples/14_turn_controls/sync.py create mode 100644 vendor/codex/sdk/python/examples/README.md create mode 100644 vendor/codex/sdk/python/examples/_bootstrap.py create mode 100644 vendor/codex/sdk/python/notebooks/sdk_walkthrough.ipynb create mode 100644 vendor/codex/sdk/python/pyproject.toml create mode 100644 vendor/codex/sdk/python/scripts/update_sdk_artifacts.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/__init__.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/_inputs.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/_run.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/api.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/async_client.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/client.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/errors.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/generated/__init__.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/generated/notification_registry.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/generated/v2_all.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/models.py create mode 100644 vendor/codex/sdk/python/src/codex_app_server/py.typed create mode 100644 vendor/codex/sdk/python/src/codex_app_server/retry.py create mode 100644 vendor/codex/sdk/python/tests/conftest.py create mode 100644 vendor/codex/sdk/python/tests/test_artifact_workflow_and_binaries.py create mode 100644 vendor/codex/sdk/python/tests/test_async_client_behavior.py create mode 100644 vendor/codex/sdk/python/tests/test_client_rpc_methods.py create mode 100644 vendor/codex/sdk/python/tests/test_contract_generation.py create mode 100644 vendor/codex/sdk/python/tests/test_public_api_runtime_behavior.py create mode 100644 vendor/codex/sdk/python/tests/test_public_api_signatures.py create mode 100644 vendor/codex/sdk/python/tests/test_real_app_server_integration.py create mode 100644 vendor/codex/sdk/typescript/.prettierignore create mode 100644 vendor/codex/sdk/typescript/.prettierrc create mode 100644 vendor/codex/sdk/typescript/README.md create mode 100644 vendor/codex/sdk/typescript/eslint.config.js create mode 100644 vendor/codex/sdk/typescript/jest.config.cjs create mode 100644 vendor/codex/sdk/typescript/package.json create mode 100644 vendor/codex/sdk/typescript/samples/basic_streaming.ts create mode 100644 vendor/codex/sdk/typescript/samples/helpers.ts create mode 100644 vendor/codex/sdk/typescript/samples/structured_output.ts create mode 100644 vendor/codex/sdk/typescript/samples/structured_output_zod.ts create mode 100644 vendor/codex/sdk/typescript/src/codex.ts create mode 100644 vendor/codex/sdk/typescript/src/codexOptions.ts create mode 100644 vendor/codex/sdk/typescript/src/events.ts create mode 100644 vendor/codex/sdk/typescript/src/exec.ts create mode 100644 vendor/codex/sdk/typescript/src/index.ts create mode 100644 vendor/codex/sdk/typescript/src/items.ts create mode 100644 vendor/codex/sdk/typescript/src/outputSchemaFile.ts create mode 100644 vendor/codex/sdk/typescript/src/thread.ts create mode 100644 vendor/codex/sdk/typescript/src/threadOptions.ts create mode 100644 vendor/codex/sdk/typescript/src/turnOptions.ts create mode 100644 vendor/codex/sdk/typescript/tests/abort.test.ts create mode 100644 vendor/codex/sdk/typescript/tests/codexExecSpy.ts create mode 100644 vendor/codex/sdk/typescript/tests/exec.test.ts create mode 100644 vendor/codex/sdk/typescript/tests/responsesProxy.ts create mode 100644 vendor/codex/sdk/typescript/tests/run.test.ts create mode 100644 vendor/codex/sdk/typescript/tests/runStreamed.test.ts create mode 100644 vendor/codex/sdk/typescript/tests/setupCodexHome.ts create mode 100644 vendor/codex/sdk/typescript/tests/testCodex.ts create mode 100644 vendor/codex/sdk/typescript/tsconfig.json create mode 100644 vendor/codex/sdk/typescript/tsup.config.ts create mode 100644 vendor/codex/third_party/meriyah/LICENSE create mode 100644 vendor/codex/third_party/v8/BUILD.bazel create mode 100644 vendor/codex/third_party/v8/README.md create mode 100644 vendor/codex/third_party/v8/rusty_v8_146_4_0.sha256 create mode 100644 vendor/codex/third_party/v8/v8_crate.BUILD.bazel create mode 100644 vendor/codex/third_party/wezterm/LICENSE create mode 100644 vendor/codex/tools/argument-comment-lint/.cargo/config.toml create mode 100644 vendor/codex/tools/argument-comment-lint/.gitignore create mode 100644 vendor/codex/tools/argument-comment-lint/BUILD.bazel create mode 100644 vendor/codex/tools/argument-comment-lint/Cargo.lock create mode 100644 vendor/codex/tools/argument-comment-lint/Cargo.toml create mode 100644 vendor/codex/tools/argument-comment-lint/README.md create mode 100644 vendor/codex/tools/argument-comment-lint/argument-comment-lint create mode 100644 vendor/codex/tools/argument-comment-lint/driver.rs create mode 100644 vendor/codex/tools/argument-comment-lint/lint_aspect.bzl create mode 100644 vendor/codex/tools/argument-comment-lint/list-bazel-targets.sh create mode 100644 vendor/codex/tools/argument-comment-lint/run-prebuilt-linter.py create mode 100644 vendor/codex/tools/argument-comment-lint/run.py create mode 100644 vendor/codex/tools/argument-comment-lint/rust-toolchain create mode 100644 vendor/codex/tools/argument-comment-lint/src/bin/argument-comment-lint.rs create mode 100644 vendor/codex/tools/argument-comment-lint/src/comment_parser.rs create mode 100644 vendor/codex/tools/argument-comment-lint/src/lib.rs create mode 100644 vendor/codex/tools/argument-comment-lint/test_wrapper_common.py create mode 100644 vendor/codex/tools/argument-comment-lint/ui/allow_char_literals.rs create mode 100644 vendor/codex/tools/argument-comment-lint/ui/allow_string_literals.rs create mode 100644 vendor/codex/tools/argument-comment-lint/ui/comment_matches.rs create mode 100644 vendor/codex/tools/argument-comment-lint/ui/comment_matches_multiline.rs create mode 100644 vendor/codex/tools/argument-comment-lint/ui/comment_mismatch.rs create mode 100644 vendor/codex/tools/argument-comment-lint/ui/comment_mismatch.stderr create mode 100644 vendor/codex/tools/argument-comment-lint/ui/ignore_external_methods.rs create mode 100644 vendor/codex/tools/argument-comment-lint/ui/uncommented_literal.rs create mode 100644 vendor/codex/tools/argument-comment-lint/ui/uncommented_literal.stderr create mode 100644 vendor/codex/tools/argument-comment-lint/wrapper_common.py create mode 100644 vendor/codex/workspace_root_test_launcher.bat.tpl create mode 100644 vendor/codex/workspace_root_test_launcher.sh.tpl diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index bcae2ac2..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "vendor/codex"] - path = vendor/codex - url = https://github.com/openai/codex.git diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 56e3afff..d8906203 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -26,3 +26,6 @@ {"ts": "2026-04-23T20:56:56+00:00", "type": "decision", "status": "ok", "note": "Replaced notes/codex-epiphany-mode-plan.md with the actionable Phase 1 implementation plan. The repo now records an internal/dev-usable first slice focused on minimal Epiphany protocol types, SessionState storage, one Epiphany rollout snapshot per real user turn, replay through rollout reconstruction, exhaustive RolloutItem compatibility updates, and persistence/replay tests before prompt integration, presets, protocol notifications, or GUI work. Synced state/map.yaml so the next action is implementation rather than more design passes."} {"ts": "2026-04-23T21:32:00+01:00", "type": "decision", "status": "ok", "note": "Patched notes/epiphany-core-harness-surfaces.md to make compaction role-specific instead of arbitrary hidden trimming. Added the design rule that compaction is a harness-level state transition with safe points, explicit checkpoints, and role-specific resume packets; documented default policies for worker, mapper, verifier, coordinator, and churn monitor; and added soft versus hard compaction language plus explicit compaction telemetry requirements. Confirmed this does not change the Phase 1 implementation slice, and synced state/map.yaml with the new accepted design."} {"ts": "2026-04-23T21:36:00+01:00", "type": "decision", "status": "ok", "note": "Updated README.md to reflect the current EpiphanyAgent direction before Phase 1 implementation. Documented the actual target surface (vendored Codex core harness), the two-graph map model, GUI-first typed thread state, specialist-agent plus retrieval direction, role-specific compaction policy, and the intentionally narrow Phase 1 slice focused on durable core state rather than UI or prompt integration."} +{"ts": "2026-04-23T23:12:00+01:00", "type": "implementation", "status": "ok", "note": "Implemented the Phase 1 internal/dev-usable Epiphany core state slice in vendored Codex. Added EpiphanyThreadState and EpiphanyStateItem to the rollout protocol, persisted Epiphany snapshots in SessionState and per-turn rollout metadata after TurnContext, restored the latest surviving snapshot through rollout reconstruction across resume/rollback/compaction, and patched rollout/state/app-server readers plus fork filtering to tolerate the new RolloutItem::EpiphanyState variant."} +{"ts": "2026-04-23T23:12:00+01:00", "type": "verification", "status": "ok", "note": "Installed Rust and Visual Studio Build Tools to verify the Phase 1 slice in a real toolchain. cargo fmt completed; codex-protocol, codex-app-server-protocol, codex-rollout, and codex-state lib test suites passed; and the new codex-core tests for Epiphany persistence and reconstruction passed when CARGO_TARGET_DIR was moved to C: to avoid the v8 crate's Windows cross-drive symlink privilege failure."} +{"ts": "2026-04-23T23:19:29+01:00", "type": "decision", "status": "ok", "note": "Flattened vendor/codex into the parent repository by removing the gitlink/submodule wiring and nested .git metadata so the Codex Phase 1 Epiphany harness changes can be reviewed and committed as ordinary tracked files alongside the project state."} diff --git a/state/map.yaml b/state/map.yaml index b1b93a48..f36139c9 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -45,7 +45,7 @@ data_flow: - commit or backtrack active_subgoals: - - Implement the Phase 1 internal/dev-usable Epiphany core state slice in vendored Codex: protocol types, SessionState storage, rollout persistence, replay, and compatibility tests. + - Start planning the next post-Phase-1 slice now that vendored Codex is part of the parent repo. - Use the tiny CLI and typed state files on a small real task. - Decide whether the next executable artifact should be a patch runner or a verifier helper. - Run the protocol on a small real task. @@ -71,6 +71,7 @@ accepted_design: - preserve handoff context in repo-local AGENTS and notes files - keep a durable repository-level algorithmic map of vendored Codex so GUI and Epiphany changes hook into the existing app-server/core boundary instead of reimplementing the turn loop - keep the Codex algorithmic map honest about auxiliary side channels and limitations: file watching, unified diffs, compaction, subagent messaging, and memory summarization are real substrate, but they do not by themselves amount to semantic repo understanding + - vendor Codex directly into the parent repo instead of keeping it as a gitlink/submodule so Epiphany harness changes can be reviewed and committed atomically with the surrounding project state rejected_paths: - name: pinned_map_only @@ -87,5 +88,5 @@ rejected_paths: reason: audited candidates were either terminal-only, stale/aspirational, or incoherent wrappers; the comparison clones were removed from vendor to avoid building on untrusted drift current_status: - summary: Workspace initialized with protocol files, typed state, a tiny CLI, a git repo, fresh-workspace handoff notes, architecture rationale, a Codex algorithmic map note, an Epiphany core-harness surface spec, and an actionable Phase 1 implementation plan against vendored Codex. Third-party OpenCodex comparison clones were audited and removed. - next_action: Implement the Phase 1 internal/dev-usable Epiphany core state slice: add the minimal protocol types, store Epiphany state in SessionState, persist one rollout snapshot per real user turn, rehydrate it through rollout reconstruction, patch exhaustive RolloutItem matches, and add persistence/replay compatibility tests before touching prompts, presets, or GUI surfaces. + summary: Workspace initialized with protocol files, typed state, a tiny CLI, a git repo, fresh-workspace handoff notes, architecture rationale, a Codex algorithmic map note, an Epiphany core-harness surface spec, and an actionable Phase 1 implementation plan against vendored Codex. The Phase 1 internal/dev-usable Epiphany core state slice is implemented and verified with a real Rust/MSVC toolchain, and vendored Codex has been flattened into the parent repo as ordinary tracked files instead of a gitlink/submodule. + next_action: Decide the next post-Phase-1 slice now that vendored Codex is first-class in the parent repo: either expose a minimal operator path for the internal state seam or keep it dark and continue with the next structural slice before touching prompts, presets, or GUI surfaces. diff --git a/vendor/codex b/vendor/codex deleted file mode 160000 index e8ba912f..00000000 --- a/vendor/codex +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e8ba912fcc9971d899808870821b83614ced7508 diff --git a/vendor/codex/.bazelignore b/vendor/codex/.bazelignore new file mode 100644 index 00000000..2e90753c --- /dev/null +++ b/vendor/codex/.bazelignore @@ -0,0 +1,4 @@ +# Without this, Bazel will consider BUILD.bazel files in +# .git/sl/origbackups (which can be populated by Sapling SCM). +.git +codex-rs/target diff --git a/vendor/codex/.bazelrc b/vendor/codex/.bazelrc new file mode 100644 index 00000000..30d9ad9d --- /dev/null +++ b/vendor/codex/.bazelrc @@ -0,0 +1,165 @@ +common --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 +common --repo_env=BAZEL_NO_APPLE_CPP_TOOLCHAIN=1 +# Dummy xcode config so we don't need to build xcode_locator in repo rule. +common --xcode_version_config=//:disable_xcode + +common --disk_cache=~/.cache/bazel-disk-cache +common --repo_contents_cache=~/.cache/bazel-repo-contents-cache +common --repository_cache=~/.cache/bazel-repo-cache +common --remote_cache_compression +startup --experimental_remote_repo_contents_cache + +common --experimental_platform_in_output_dir + +# Runfiles strategy rationale: codex-rs/utils/cargo-bin/README.md +common --noenable_runfiles + +common --enable_platform_specific_config +common:linux --host_platform=//:local_linux +common:windows --host_platform=//:local_windows +common --@rules_cc//cc/toolchains/args/archiver_flags:use_libtool_on_macos=False +common --@llvm//config:experimental_stub_libgcc_s + +# TODO(zbarsky): rules_rust doesn't implement this flag properly with remote exec... +# common --@rules_rust//rust/settings:pipelined_compilation + +common --incompatible_strict_action_env +# Not ideal, but We need to allow dotslash to be found +common:linux --test_env=PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin +common:macos --test_env=PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +# Pass through some env vars Windows needs to use powershell? +common:windows --test_env=PATH +common:windows --test_env=SYSTEMROOT +common:windows --test_env=COMSPEC +common:windows --test_env=WINDIR +# Rust's libtest harness runs test bodies on std-spawned threads. The default +# 2 MiB stack can be too small for large async test futures on Windows CI; see +# https://github.com/openai/codex/pull/19067 for the motivating failure. +common --test_env=RUST_MIN_STACK=8388608 # 8 MiB + +common --test_output=errors +common --bes_results_url=https://app.buildbuddy.io/invocation/ +common --bes_backend=grpcs://remote.buildbuddy.io +common --remote_cache=grpcs://remote.buildbuddy.io +common --remote_download_toplevel +common --nobuild_runfile_links +common --remote_timeout=3600 +common --noexperimental_throttle_remote_action_building +common --experimental_remote_execution_keepalive +common --grpc_keepalive_time=30s +common --experimental_remote_downloader=grpcs://remote.buildbuddy.io + +# This limits both in-flight executions and concurrent downloads. Even with high number +# of jobs execution will still be limited by CPU cores, so this just pays a bit of +# memory in exchange for higher download concurrency. +common --jobs=30 + +common:remote --extra_execution_platforms=//:rbe +common:remote --remote_executor=grpcs://remote.buildbuddy.io +common:remote --jobs=800 +# TODO(team): Evaluate if this actually helps, zbarsky is not sure, everything seems bottlenecked on `core` either way. +# Enable pipelined compilation since we are not bound by local CPU count. +#common:remote --@rules_rust//rust/settings:pipelined_compilation + +# GitHub Actions CI configs. +common:ci --remote_download_minimal +common:ci --keep_going +common:ci --verbose_failures +common:ci --build_metadata=REPO_URL=https://github.com/openai/codex.git +common:ci --build_metadata=ROLE=CI +common:ci --build_metadata=VISIBILITY=PUBLIC +# rules_rust derives debug level from Bazel toolchain/compilation-mode settings, +# not Cargo profiles. Keep CI Rust actions explicit and lean. +common:ci --@rules_rust//rust/settings:extra_rustc_flag=-Cdebuginfo=0 +common:ci --@rules_rust//rust/settings:extra_exec_rustc_flag=-Cdebuginfo=0 + +# Disable disk cache in CI since we have a remote one and aren't using persistent workers. +common:ci --disk_cache= + +# Shared config for the main Bazel CI workflow. +common:ci-bazel --config=ci +common:ci-bazel --build_metadata=TAG_workflow=bazel + +# Shared config for Bazel-backed Rust linting. +build:clippy --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect +build:clippy --output_groups=+clippy_checks +build:clippy --@rules_rust//rust/settings:clippy.toml=//codex-rs:clippy.toml +# Keep this deny-list in sync with `codex-rs/Cargo.toml` `[workspace.lints.clippy]`. +# Cargo applies those lint levels to member crates that opt into `[lints] workspace = true` +# in their own `Cargo.toml`, but `rules_rust` Bazel clippy does not read Cargo lint levels. +# `clippy.toml` can configure lint behavior, but it cannot set allow/warn/deny/forbid levels. +build:clippy --@rules_rust//rust/settings:clippy_flag=-Dwarnings +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::await_holding_invalid_type +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::await_holding_lock +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::expect_used +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::identity_op +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_clamp +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_filter +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_find +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_flatten +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_map +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_memcpy +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_non_exhaustive +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_ok_or +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_range_contains +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_retain +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_strip +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_try_fold +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::manual_unwrap_or +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::needless_borrow +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::needless_borrowed_reference +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::needless_collect +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::needless_late_init +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::needless_option_as_deref +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::needless_question_mark +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::needless_update +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::redundant_clone +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::redundant_closure +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::redundant_closure_for_method_calls +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::redundant_static_lifetimes +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::trivially_copy_pass_by_ref +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::uninlined_format_args +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::unnecessary_filter_map +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::unnecessary_lazy_evaluations +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::unnecessary_sort_by +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::unnecessary_to_owned +build:clippy --@rules_rust//rust/settings:clippy_flag=--deny=clippy::unwrap_used + +# Shared config for Bazel-backed argument-comment-lint. +build:argument-comment-lint --aspects=//tools/argument-comment-lint:lint_aspect.bzl%rust_argument_comment_lint_aspect +build:argument-comment-lint --output_groups=argument_comment_lint_checks +build:argument-comment-lint --@rules_rust//rust/toolchain/channel=nightly + +# Rearrange caches on Windows so they're on the same volume as the checkout. +common:ci-windows --config=ci-bazel +common:ci-windows --build_metadata=TAG_os=windows +common:ci-windows --repo_contents_cache=D:/a/.cache/bazel-repo-contents-cache + +# We prefer to run the build actions entirely remotely so we can dial up the concurrency. +# We have platform-specific tests, so we want to execute the tests on all platforms using the strongest sandboxing available on each platform. + +# On linux, we can do a full remote build/test, by targeting the right (x86/arm) runners, so we have coverage of both. +# Linux crossbuilds don't work until we untangle the libc constraint mess. +common:ci-linux --config=ci-bazel +common:ci-linux --build_metadata=TAG_os=linux +common:ci-linux --config=remote +common:ci-linux --strategy=remote +common:ci-linux --platforms=//:rbe + +# On mac, we can run all the build actions remotely but test actions locally. +common:ci-macos --config=ci-bazel +common:ci-macos --build_metadata=TAG_os=macos +common:ci-macos --config=remote +common:ci-macos --strategy=remote +common:ci-macos --strategy=TestRunner=darwin-sandbox,local + +# Linux-only V8 CI config. +common:ci-v8 --config=ci +common:ci-v8 --build_metadata=TAG_workflow=v8 +common:ci-v8 --build_metadata=TAG_os=linux +common:ci-v8 --config=remote +common:ci-v8 --strategy=remote + +# Optional per-user local overrides. +try-import %workspace%/user.bazelrc diff --git a/vendor/codex/.bazelversion b/vendor/codex/.bazelversion new file mode 100644 index 00000000..f7ee0669 --- /dev/null +++ b/vendor/codex/.bazelversion @@ -0,0 +1 @@ +9.0.0 diff --git a/vendor/codex/.codespellignore b/vendor/codex/.codespellignore new file mode 100644 index 00000000..23924fe0 --- /dev/null +++ b/vendor/codex/.codespellignore @@ -0,0 +1,6 @@ +iTerm +iTerm2 +psuedo +SOM +te +TE diff --git a/vendor/codex/.codespellrc b/vendor/codex/.codespellrc new file mode 100644 index 00000000..87e3468c --- /dev/null +++ b/vendor/codex/.codespellrc @@ -0,0 +1,6 @@ +[codespell] +# Ref: https://github.com/codespell-project/codespell#using-a-config-file +skip = .git*,vendor,*-lock.yaml,*.lock,.codespellrc,*test.ts,*.jsonl,frame*.txt,*.snap,*.snap.new,*meriyah.umd.min.js +check-hidden = true +ignore-regex = ^\s*"image/\S+": ".*|\b(afterAll)\b +ignore-words-list = ratatui,ser,iTerm,iterm2,iterm,te,TE,PASE,SEH diff --git a/vendor/codex/.codex/skills/babysit-pr/SKILL.md b/vendor/codex/.codex/skills/babysit-pr/SKILL.md new file mode 100644 index 00000000..d472fad6 --- /dev/null +++ b/vendor/codex/.codex/skills/babysit-pr/SKILL.md @@ -0,0 +1,187 @@ +--- +name: babysit-pr +description: Babysit a GitHub pull request after creation by continuously polling review comments, CI checks/workflow runs, and mergeability state until the PR is merged/closed or user help is required. Diagnose failures, retry likely flaky failures up to 3 times, auto-fix/push branch-related issues when appropriate, and keep watching open PRs so fresh review feedback is surfaced promptly. Use when the user asks Codex to monitor a PR, watch CI, handle review comments, or keep an eye on failures and feedback on an open PR. +--- + +# PR Babysitter + +## Objective +Babysit a PR persistently until one of these terminal outcomes occurs: + +- The PR is merged or closed. +- A situation requires user help (for example CI infrastructure issues, repeated flaky failures after retry budget is exhausted, permission problems, or ambiguity that cannot be resolved safely). +- Optional handoff milestone: the PR is currently green + mergeable + review-clean. Treat this as a progress state, not a watcher stop, so late-arriving review comments are still surfaced promptly while the PR remains open. + +Do not stop merely because a single snapshot returns `idle` while checks are still pending. + +## Inputs +Accept any of the following: + +- No PR argument: infer the PR from the current branch (`--pr auto`) +- PR number +- PR URL + +## Core Workflow + +1. When the user asks to "monitor"/"watch"/"babysit" a PR, start with the watcher's continuous mode (`--watch`) unless you are intentionally doing a one-shot diagnostic snapshot. +2. Run the watcher script to snapshot PR/review/CI state (or consume each streamed snapshot from `--watch`). +3. Inspect the `actions` list in the JSON response. +4. If `diagnose_ci_failure` is present, inspect failed run logs and classify the failure. +5. If the failure is likely caused by the current branch, patch code locally, commit, and push. +6. If `process_review_comment` is present, inspect surfaced review items and decide whether to address them. +7. If a review item is actionable and correct, patch code locally, commit, push, and then mark the associated review thread/comment as resolved once the fix is on GitHub. +8. If a review item from another author is non-actionable, already addressed, or not valid, post one reply on the comment/thread explaining that decision (for example answering the question or explaining why no change is needed). Prefix the GitHub reply body with `[codex]` so it is clear the response is automated. If the watcher later surfaces your own reply, treat that self-authored item as already handled and do not reply again. +9. If the failure is likely flaky/unrelated and `retry_failed_checks` is present, rerun failed jobs with `--retry-failed-now`. +10. If both actionable review feedback and `retry_failed_checks` are present, prioritize review feedback first; a new commit will retrigger CI, so avoid rerunning flaky checks on the old SHA unless you intentionally defer the review change. +11. On every loop, look for newly surfaced review feedback before acting on CI failures or mergeability state, then verify mergeability / merge-conflict status (for example via `gh pr view`) alongside CI. +12. After any push or rerun action, immediately return to step 1 and continue polling on the updated SHA/state. +13. If you had been using `--watch` before pausing to patch/commit/push, relaunch `--watch` yourself in the same turn immediately after the push (do not wait for the user to re-invoke the skill). +14. Repeat polling until `stop_pr_closed` appears or a user-help-required blocker is reached. A green + review-clean + mergeable PR is a progress milestone, not a reason to stop the watcher while the PR is still open. +15. Maintain terminal/session ownership: while babysitting is active, keep consuming watcher output in the same turn; do not leave a detached `--watch` process running and then end the turn as if monitoring were complete. + +## Commands + +### One-shot snapshot + +```bash +python3 .codex/skills/babysit-pr/scripts/gh_pr_watch.py --pr auto --once +``` + +### Continuous watch (JSONL) + +```bash +python3 .codex/skills/babysit-pr/scripts/gh_pr_watch.py --pr auto --watch +``` + +### Trigger flaky retry cycle (only when watcher indicates) + +```bash +python3 .codex/skills/babysit-pr/scripts/gh_pr_watch.py --pr auto --retry-failed-now +``` + +### Explicit PR target + +```bash +python3 .codex/skills/babysit-pr/scripts/gh_pr_watch.py --pr --once +``` + +## CI Failure Classification +Use `gh` commands to inspect failed runs before deciding to rerun. + +- `gh run view --json jobs,name,workflowName,conclusion,status,url,headSha` +- `gh run view --log-failed` + +Prefer treating failures as branch-related when logs point to changed code (compile/test/lint/typecheck/snapshots/static analysis in touched areas). + +Prefer treating failures as flaky/unrelated when logs show transient infra/external issues (timeouts, runner provisioning failures, registry/network outages, GitHub Actions infra errors). + +If classification is ambiguous, perform one manual diagnosis attempt before choosing rerun. + +Read `.codex/skills/babysit-pr/references/heuristics.md` for a concise checklist. + +## Review Comment Handling +The watcher surfaces review items from: + +- PR issue comments +- Inline review comments +- Review submissions (COMMENT / APPROVED / CHANGES_REQUESTED) + +It intentionally surfaces Codex reviewer bot feedback (for example comments/reviews from `chatgpt-codex-connector[bot]`) in addition to human reviewer feedback. Most unrelated bot noise should still be ignored. +For safety, the watcher only auto-surfaces trusted human review authors (for example repo OWNER/MEMBER/COLLABORATOR, plus the authenticated operator) and approved review bots such as Codex. +On a fresh watcher state file, existing pending review feedback may be surfaced immediately (not only comments that arrive after monitoring starts). This is intentional so already-open review comments are not missed. + +When you agree with a comment and it is actionable: + +1. Patch code locally. +2. Commit with `codex: address PR review feedback (#)`. +3. Push to the PR head branch. +4. After the push succeeds, mark the associated GitHub review thread/comment as resolved. +5. Resume watching on the new SHA immediately (do not stop after reporting the push). +6. If monitoring was running in `--watch` mode, restart `--watch` immediately after the push in the same turn; do not wait for the user to ask again. + +If you disagree or the comment is non-actionable/already addressed, reply once directly on the GitHub comment/thread so the reviewer gets an explicit answer, then continue the watcher loop. Prefix any GitHub reply to a code review comment/thread with `[codex]` so it is clear the response is automated and not from the human user. If the watcher later surfaces your own reply because the authenticated operator is treated as a trusted review author, treat that self-authored item as already handled and do not reply again. +If a code review comment/thread is already marked as resolved in GitHub, treat it as non-actionable and safely ignore it unless new unresolved follow-up feedback appears. + +## Git Safety Rules + +- Work only on the PR head branch. +- Avoid destructive git commands. +- Do not switch branches unless necessary to recover context. +- Before editing, check for unrelated uncommitted changes. If present, stop and ask the user. +- After each successful fix, commit and `git push`, then re-run the watcher. +- If you interrupted a live `--watch` session to make the fix, restart `--watch` immediately after the push in the same turn. +- Do not run multiple concurrent `--watch` processes for the same PR/state file; keep one watcher session active and reuse it until it stops or you intentionally restart it. +- A push is not a terminal outcome; continue the monitoring loop unless a strict stop condition is met. + +Commit message defaults: + +- `codex: fix CI failure on PR #` +- `codex: address PR review feedback (#)` + +## Monitoring Loop Pattern +Use this loop in a live Codex session: + +1. Run `--once`. +2. Read `actions`. +3. First check whether the PR is now merged or otherwise closed; if so, report that terminal state and stop polling immediately. +4. Check CI summary, new review items, and mergeability/conflict status. +5. Diagnose CI failures and classify branch-related vs flaky/unrelated. +6. For each surfaced review item from another author, either reply once with an explanation if it is non-actionable or patch/commit/push and then resolve it if it is actionable. If a later snapshot surfaces your own reply, treat it as informational and continue without responding again. +7. Process actionable review comments before flaky reruns when both are present; if a review fix requires a commit, push it and skip rerunning failed checks on the old SHA. +8. Retry failed checks only when `retry_failed_checks` is present and you are not about to replace the current SHA with a review/CI fix commit. +9. If you pushed a commit, resolved a review thread, replied to a review comment, or triggered a rerun, report the action briefly and continue polling (do not stop). +10. After a review-fix push, proactively restart continuous monitoring (`--watch`) in the same turn unless a strict stop condition has already been reached. +11. If everything is passing, mergeable, not blocked on required review approval, and there are no unaddressed review items, report that the PR is currently ready to merge but keep the watcher running so new review comments are surfaced quickly while the PR remains open. +12. If blocked on a user-help-required issue (infra outage, exhausted flaky retries, unclear reviewer request, permissions), report the blocker and stop. +13. Otherwise sleep according to the polling cadence below and repeat. + +When the user explicitly asks to monitor/watch/babysit a PR, prefer `--watch` so polling continues autonomously in one command. Use repeated `--once` snapshots only for debugging, local testing, or when the user explicitly asks for a one-shot check. +Do not stop to ask the user whether to continue polling; continue autonomously until a strict stop condition is met or the user explicitly interrupts. +Do not hand control back to the user after a review-fix push just because a new SHA was created; restarting the watcher and re-entering the poll loop is part of the same babysitting task. +If a `--watch` process is still running and no strict stop condition has been reached, the babysitting task is still in progress; keep streaming/consuming watcher output instead of ending the turn. + +## Polling Cadence +Keep review polling aggressive and continue monitoring even after CI turns green: + +- While CI is not green (pending/running/queued or failing): poll every 1 minute. +- After CI turns green: keep polling at the base cadence while the PR remains open so newly posted review comments are surfaced promptly instead of waiting on a long green-state backoff. +- Reset the cadence immediately whenever anything changes (new commit/SHA, check status changes, new review comments, mergeability changes, review decision changes). +- If CI stops being green again (new commit, rerun, or regression): stay on the base polling cadence. +- If any poll shows the PR is merged or otherwise closed: stop polling immediately and report the terminal state. + +## Stop Conditions (Strict) +Stop only when one of the following is true: + +- PR merged or closed (stop as soon as a poll/snapshot confirms this). +- User intervention is required and Codex cannot safely proceed alone. + +Keep polling when: + +- `actions` contains only `idle` but checks are still pending. +- CI is still running/queued. +- Review state is quiet but CI is not terminal. +- CI is green but mergeability is unknown/pending. +- CI is green and mergeable, but the PR is still open and you are waiting for possible new review comments or merge-conflict changes. +- The PR is green but blocked on review approval (`REVIEW_REQUIRED` / similar); continue polling at the base cadence and surface any new review comments without asking for confirmation to keep watching. + +## Output Expectations +Provide concise progress updates while monitoring and a final summary that includes: + +- During long unchanged monitoring periods, avoid emitting a full update on every poll; summarize only status changes plus occasional heartbeat updates. +- Treat push confirmations, intermediate CI snapshots, ready-to-merge snapshots, and review-action updates as progress updates only; do not emit the final summary or end the babysitting session unless a strict stop condition is met. +- A user request to "monitor" is not satisfied by a couple of sample polls; remain in the loop until a strict stop condition or an explicit user interruption. +- A review-fix commit + push is not a completion event; immediately resume live monitoring (`--watch`) in the same turn and continue reporting progress updates. +- When CI first transitions to all green for the current SHA, emit a one-time celebratory progress update (do not repeat it on every green poll). Preferred style: `🚀 CI is all green! 33/33 passed. Still on watch for review approval.` +- Do not send the final summary while a watcher terminal is still running unless the watcher has emitted/confirmed a strict stop condition; otherwise continue with progress updates. + +- Final PR SHA +- CI status summary +- Mergeability / conflict status +- Fixes pushed +- Flaky retry cycles used +- Remaining unresolved failures or review comments + +## References + +- Heuristics and decision tree: `.codex/skills/babysit-pr/references/heuristics.md` +- GitHub CLI/API details used by the watcher: `.codex/skills/babysit-pr/references/github-api-notes.md` diff --git a/vendor/codex/.codex/skills/babysit-pr/agents/openai.yaml b/vendor/codex/.codex/skills/babysit-pr/agents/openai.yaml new file mode 100644 index 00000000..b68a7287 --- /dev/null +++ b/vendor/codex/.codex/skills/babysit-pr/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "PR Babysitter" + short_description: "Watch PR review comments, CI, and merge conflicts" + default_prompt: "Babysit the current PR: monitor reviewer comments, CI, and merge-conflict status (prefer the watcher’s --watch mode for live monitoring); surface new review feedback before acting on CI or mergeability work, fix valid issues, push updates, and rerun flaky failures up to 3 times. Keep exactly one watcher session active for the PR (do not leave duplicate --watch terminals running). If you pause monitoring to patch review/CI feedback, restart --watch yourself immediately after the push in the same turn. If a watcher is still running and no strict stop condition has been reached, the task is still in progress: keep consuming watcher output and sending progress updates instead of ending the turn. Do not treat a green + mergeable PR as a terminal stop while it is still open; continue polling autonomously after any push/rerun so newly posted review comments are surfaced until a strict terminal stop condition is reached or the user interrupts." diff --git a/vendor/codex/.codex/skills/babysit-pr/references/github-api-notes.md b/vendor/codex/.codex/skills/babysit-pr/references/github-api-notes.md new file mode 100644 index 00000000..8cc09da4 --- /dev/null +++ b/vendor/codex/.codex/skills/babysit-pr/references/github-api-notes.md @@ -0,0 +1,72 @@ +# GitHub CLI / API Notes For `babysit-pr` + +## Primary commands used + +### PR metadata + +- `gh pr view --json number,url,state,mergedAt,closedAt,headRefName,headRefOid,headRepository,headRepositoryOwner` + +Used to resolve PR number, URL, branch, head SHA, and closed/merged state. + +### PR checks summary + +- `gh pr checks --json name,state,bucket,link,workflow,event,startedAt,completedAt` + +Used to compute pending/failed/passed counts and whether the current CI round is terminal. + +### Workflow runs for head SHA + +- `gh api repos/{owner}/{repo}/actions/runs -X GET -f head_sha= -f per_page=100` + +Used to discover failed workflow runs and rerunnable run IDs. + +### Failed log inspection + +- `gh run view --json jobs,name,workflowName,conclusion,status,url,headSha` +- `gh run view --log-failed` + +Used by Codex to classify branch-related vs flaky/unrelated failures. + +### Retry failed jobs only + +- `gh run rerun --failed` + +Reruns only failed jobs (and dependencies) for a workflow run. + +## Review-related endpoints + +- Issue comments on PR: + - `gh api repos/{owner}/{repo}/issues//comments?per_page=100` +- Inline PR review comments: + - `gh api repos/{owner}/{repo}/pulls//comments?per_page=100` +- Review submissions: + - `gh api repos/{owner}/{repo}/pulls//reviews?per_page=100` + +## JSON fields consumed by the watcher + +### `gh pr view` + +- `number` +- `url` +- `state` +- `mergedAt` +- `closedAt` +- `headRefName` +- `headRefOid` + +### `gh pr checks` + +- `bucket` (`pass`, `fail`, `pending`, `skipping`) +- `state` +- `name` +- `workflow` +- `link` + +### Actions runs API (`workflow_runs[]`) + +- `id` +- `name` +- `status` +- `conclusion` +- `html_url` +- `head_sha` diff --git a/vendor/codex/.codex/skills/babysit-pr/references/heuristics.md b/vendor/codex/.codex/skills/babysit-pr/references/heuristics.md new file mode 100644 index 00000000..01024d26 --- /dev/null +++ b/vendor/codex/.codex/skills/babysit-pr/references/heuristics.md @@ -0,0 +1,58 @@ +# CI / Review Heuristics + +## CI classification checklist + +Treat as **branch-related** when logs clearly indicate a regression caused by the PR branch: + +- Compile/typecheck/lint failures in files or modules touched by the branch +- Deterministic unit/integration test failures in changed areas +- Snapshot output changes caused by UI/text changes in the branch +- Static analysis violations introduced by the latest push +- Build script/config changes in the PR causing a deterministic failure + +Treat as **likely flaky or unrelated** when evidence points to transient or external issues: + +- DNS/network/registry timeout errors while fetching dependencies +- Runner image provisioning or startup failures +- GitHub Actions infrastructure/service outages +- Cloud/service rate limits or transient API outages +- Non-deterministic failures in unrelated integration tests with known flake patterns + +If uncertain, inspect failed logs once before choosing rerun. + +## Decision tree (fix vs rerun vs stop) + +1. If PR is merged/closed: stop. +2. If there are failed checks: + - Diagnose first. + - If branch-related: fix locally, commit, push. + - If likely flaky/unrelated and all checks for the current SHA are terminal: rerun failed jobs. + - If checks are still pending: wait. +3. If flaky reruns for the same SHA reach the configured limit (default 3): stop and report persistent failure. +4. Independently, process any new human review comments. + +## Review comment agreement criteria + +Address the comment when: + +- The comment is technically correct. +- The change is actionable in the current branch. +- The requested change does not conflict with the user’s intent or recent guidance. +- The change can be made safely without unrelated refactors. + +Do not auto-fix when: + +- The comment is ambiguous and needs clarification. +- The request conflicts with explicit user instructions. +- The proposed change requires product/design decisions the user has not made. +- The codebase is in a dirty/unrelated state that makes safe editing uncertain. + +## Stop-and-ask conditions + +Stop and ask the user instead of continuing automatically when: + +- The local worktree has unrelated uncommitted changes. +- `gh` auth/permissions fail. +- The PR branch cannot be pushed. +- CI failures persist after the flaky retry budget. +- Reviewer feedback requires a product decision or cross-team coordination. diff --git a/vendor/codex/.codex/skills/babysit-pr/scripts/gh_pr_watch.py b/vendor/codex/.codex/skills/babysit-pr/scripts/gh_pr_watch.py new file mode 100644 index 00000000..2650770b --- /dev/null +++ b/vendor/codex/.codex/skills/babysit-pr/scripts/gh_pr_watch.py @@ -0,0 +1,806 @@ +#!/usr/bin/env python3 +"""Watch GitHub PR CI and review activity for Codex PR babysitting workflows.""" + +import argparse +import json +import os +import re +import subprocess +import sys +import tempfile +import time +from pathlib import Path +from urllib.parse import urlparse + +FAILED_RUN_CONCLUSIONS = { + "failure", + "timed_out", + "cancelled", + "action_required", + "startup_failure", + "stale", +} +PENDING_CHECK_STATES = { + "QUEUED", + "IN_PROGRESS", + "PENDING", + "WAITING", + "REQUESTED", +} +REVIEW_BOT_LOGIN_KEYWORDS = { + "codex", +} +TRUSTED_AUTHOR_ASSOCIATIONS = { + "OWNER", + "MEMBER", + "COLLABORATOR", +} +MERGE_BLOCKING_REVIEW_DECISIONS = { + "REVIEW_REQUIRED", + "CHANGES_REQUESTED", +} +MERGE_CONFLICT_OR_BLOCKING_STATES = { + "BLOCKED", + "DIRTY", + "DRAFT", + "UNKNOWN", +} + + +class GhCommandError(RuntimeError): + pass + + +def parse_args(): + parser = argparse.ArgumentParser( + description=( + "Normalize PR/CI/review state for Codex PR babysitting and optionally " + "trigger flaky reruns." + ) + ) + parser.add_argument("--pr", default="auto", help="auto, PR number, or PR URL") + parser.add_argument("--repo", help="Optional OWNER/REPO override") + parser.add_argument("--poll-seconds", type=int, default=30, help="Watch poll interval") + parser.add_argument( + "--max-flaky-retries", + type=int, + default=3, + help="Max rerun cycles per head SHA before stop recommendation", + ) + parser.add_argument("--state-file", help="Path to state JSON file") + parser.add_argument("--once", action="store_true", help="Emit one snapshot and exit") + parser.add_argument("--watch", action="store_true", help="Continuously emit JSONL snapshots") + parser.add_argument( + "--retry-failed-now", + action="store_true", + help="Rerun failed jobs for current failed workflow runs when policy allows", + ) + parser.add_argument( + "--json", + action="store_true", + help="Emit machine-readable output (default behavior for --once and --retry-failed-now)", + ) + args = parser.parse_args() + + if args.poll_seconds <= 0: + parser.error("--poll-seconds must be > 0") + if args.max_flaky_retries < 0: + parser.error("--max-flaky-retries must be >= 0") + if args.watch and args.retry_failed_now: + parser.error("--watch cannot be combined with --retry-failed-now") + if not args.once and not args.watch and not args.retry_failed_now: + args.once = True + return args + + +def _format_gh_error(cmd, err): + stdout = (err.stdout or "").strip() + stderr = (err.stderr or "").strip() + parts = [f"GitHub CLI command failed: {' '.join(cmd)}"] + if stdout: + parts.append(f"stdout: {stdout}") + if stderr: + parts.append(f"stderr: {stderr}") + return "\n".join(parts) + + +def gh_text(args, repo=None): + cmd = ["gh"] + # `gh api` does not accept `-R/--repo` on all gh versions. The watcher's + # API calls use explicit endpoints (e.g. repos/{owner}/{repo}/...), so the + # repo flag is unnecessary there. + if repo and (not args or args[0] != "api"): + cmd.extend(["-R", repo]) + cmd.extend(args) + try: + proc = subprocess.run(cmd, check=True, capture_output=True, text=True) + except FileNotFoundError as err: + raise GhCommandError("`gh` command not found") from err + except subprocess.CalledProcessError as err: + raise GhCommandError(_format_gh_error(cmd, err)) from err + return proc.stdout + + +def gh_json(args, repo=None): + raw = gh_text(args, repo=repo).strip() + if not raw: + return None + try: + return json.loads(raw) + except json.JSONDecodeError as err: + raise GhCommandError(f"Failed to parse JSON from gh output for {' '.join(args)}") from err + + +def parse_pr_spec(pr_spec): + if pr_spec == "auto": + return {"mode": "auto", "value": None} + if re.fullmatch(r"\d+", pr_spec): + return {"mode": "number", "value": pr_spec} + parsed = urlparse(pr_spec) + if parsed.scheme and parsed.netloc and "/pull/" in parsed.path: + return {"mode": "url", "value": pr_spec} + raise ValueError("--pr must be 'auto', a PR number, or a PR URL") + + +def pr_view_fields(): + return ( + "number,url,state,mergedAt,closedAt,headRefName,headRefOid," + "headRepository,headRepositoryOwner,mergeable,mergeStateStatus,reviewDecision" + ) + + +def checks_fields(): + return "name,state,bucket,link,workflow,event,startedAt,completedAt" + + +def resolve_pr(pr_spec, repo_override=None): + parsed = parse_pr_spec(pr_spec) + cmd = ["pr", "view"] + if parsed["value"] is not None: + cmd.append(parsed["value"]) + cmd.extend(["--json", pr_view_fields()]) + data = gh_json(cmd, repo=repo_override) + if not isinstance(data, dict): + raise GhCommandError("Unexpected PR payload from `gh pr view`") + + pr_url = str(data.get("url") or "") + repo = ( + repo_override + or extract_repo_from_pr_url(pr_url) + or extract_repo_from_pr_view(data) + ) + if not repo: + raise GhCommandError("Unable to determine OWNER/REPO for the PR") + + state = str(data.get("state") or "") + merged = bool(data.get("mergedAt")) + closed = bool(data.get("closedAt")) or state.upper() == "CLOSED" + + return { + "number": int(data["number"]), + "url": pr_url, + "repo": repo, + "head_sha": str(data.get("headRefOid") or ""), + "head_branch": str(data.get("headRefName") or ""), + "state": state, + "merged": merged, + "closed": closed, + "mergeable": str(data.get("mergeable") or ""), + "merge_state_status": str(data.get("mergeStateStatus") or ""), + "review_decision": str(data.get("reviewDecision") or ""), + } + + +def extract_repo_from_pr_view(data): + head_repo = data.get("headRepository") + head_owner = data.get("headRepositoryOwner") + owner = None + name = None + if isinstance(head_owner, dict): + owner = head_owner.get("login") or head_owner.get("name") + elif isinstance(head_owner, str): + owner = head_owner + if isinstance(head_repo, dict): + name = head_repo.get("name") + repo_owner = head_repo.get("owner") + if not owner and isinstance(repo_owner, dict): + owner = repo_owner.get("login") or repo_owner.get("name") + elif isinstance(head_repo, str): + name = head_repo + if owner and name: + return f"{owner}/{name}" + return None +def extract_repo_from_pr_url(pr_url): + parsed = urlparse(pr_url) + parts = [p for p in parsed.path.split("/") if p] + if len(parts) >= 4 and parts[2] == "pull": + return f"{parts[0]}/{parts[1]}" + return None + + +def load_state(path): + if path.exists(): + try: + data = json.loads(path.read_text()) + except json.JSONDecodeError as err: + raise RuntimeError(f"State file is not valid JSON: {path}") from err + if not isinstance(data, dict): + raise RuntimeError(f"State file must contain an object: {path}") + return data, False + return { + "pr": {}, + "started_at": None, + "last_seen_head_sha": None, + "retries_by_sha": {}, + "seen_issue_comment_ids": [], + "seen_review_comment_ids": [], + "seen_review_ids": [], + "last_snapshot_at": None, + }, True + + +def save_state(path, state): + path.parent.mkdir(parents=True, exist_ok=True) + payload = json.dumps(state, indent=2, sort_keys=True) + "\n" + fd, tmp_name = tempfile.mkstemp(prefix=f"{path.name}.", suffix=".tmp", dir=path.parent) + tmp_path = Path(tmp_name) + try: + with os.fdopen(fd, "w", encoding="utf-8") as tmp_file: + tmp_file.write(payload) + os.replace(tmp_path, path) + except Exception: + try: + tmp_path.unlink(missing_ok=True) + except OSError: + pass + raise + + +def default_state_file_for(pr): + repo_slug = pr["repo"].replace("/", "-") + return Path(f"/tmp/codex-babysit-pr-{repo_slug}-pr{pr['number']}.json") + + +def get_pr_checks(pr_spec, repo): + parsed = parse_pr_spec(pr_spec) + cmd = ["pr", "checks"] + if parsed["value"] is not None: + cmd.append(parsed["value"]) + cmd.extend(["--json", checks_fields()]) + data = gh_json(cmd, repo=repo) + if data is None: + return [] + if not isinstance(data, list): + raise GhCommandError("Unexpected payload from `gh pr checks`") + return data + + +def is_pending_check(check): + bucket = str(check.get("bucket") or "").lower() + state = str(check.get("state") or "").upper() + return bucket == "pending" or state in PENDING_CHECK_STATES + + +def summarize_checks(checks): + pending_count = 0 + failed_count = 0 + passed_count = 0 + for check in checks: + bucket = str(check.get("bucket") or "").lower() + if is_pending_check(check): + pending_count += 1 + if bucket == "fail": + failed_count += 1 + if bucket == "pass": + passed_count += 1 + return { + "pending_count": pending_count, + "failed_count": failed_count, + "passed_count": passed_count, + "all_terminal": pending_count == 0, + } + + +def get_workflow_runs_for_sha(repo, head_sha): + endpoint = f"repos/{repo}/actions/runs" + data = gh_json( + ["api", endpoint, "-X", "GET", "-f", f"head_sha={head_sha}", "-f", "per_page=100"], + repo=repo, + ) + if not isinstance(data, dict): + raise GhCommandError("Unexpected payload from actions runs API") + runs = data.get("workflow_runs") or [] + if not isinstance(runs, list): + raise GhCommandError("Expected `workflow_runs` to be a list") + return runs + + +def failed_runs_from_workflow_runs(runs, head_sha): + failed_runs = [] + for run in runs: + if not isinstance(run, dict): + continue + if str(run.get("head_sha") or "") != head_sha: + continue + conclusion = str(run.get("conclusion") or "") + if conclusion not in FAILED_RUN_CONCLUSIONS: + continue + failed_runs.append( + { + "run_id": run.get("id"), + "workflow_name": run.get("name") or run.get("display_title") or "", + "status": str(run.get("status") or ""), + "conclusion": conclusion, + "html_url": str(run.get("html_url") or ""), + } + ) + failed_runs.sort(key=lambda item: (str(item.get("workflow_name") or ""), str(item.get("run_id") or ""))) + return failed_runs + + +def get_authenticated_login(): + data = gh_json(["api", "user"]) + if not isinstance(data, dict) or not data.get("login"): + raise GhCommandError("Unable to determine authenticated GitHub login from `gh api user`") + return str(data["login"]) + + +def comment_endpoints(repo, pr_number): + return { + "issue_comment": f"repos/{repo}/issues/{pr_number}/comments", + "review_comment": f"repos/{repo}/pulls/{pr_number}/comments", + "review": f"repos/{repo}/pulls/{pr_number}/reviews", + } + + +def gh_api_list_paginated(endpoint, repo=None, per_page=100): + items = [] + page = 1 + while True: + sep = "&" if "?" in endpoint else "?" + page_endpoint = f"{endpoint}{sep}per_page={per_page}&page={page}" + payload = gh_json(["api", page_endpoint], repo=repo) + if payload is None: + break + if not isinstance(payload, list): + raise GhCommandError(f"Unexpected paginated payload from gh api {endpoint}") + items.extend(payload) + if len(payload) < per_page: + break + page += 1 + return items + + +def normalize_issue_comments(items): + out = [] + for item in items: + if not isinstance(item, dict): + continue + out.append( + { + "kind": "issue_comment", + "id": str(item.get("id") or ""), + "author": extract_login(item.get("user")), + "author_association": str(item.get("author_association") or ""), + "created_at": str(item.get("created_at") or ""), + "body": str(item.get("body") or ""), + "path": None, + "line": None, + "url": str(item.get("html_url") or ""), + } + ) + return out + + +def normalize_review_comments(items): + out = [] + for item in items: + if not isinstance(item, dict): + continue + line = item.get("line") + if line is None: + line = item.get("original_line") + out.append( + { + "kind": "review_comment", + "id": str(item.get("id") or ""), + "author": extract_login(item.get("user")), + "author_association": str(item.get("author_association") or ""), + "created_at": str(item.get("created_at") or ""), + "body": str(item.get("body") or ""), + "path": item.get("path"), + "line": line, + "url": str(item.get("html_url") or ""), + } + ) + return out + + +def normalize_reviews(items): + out = [] + for item in items: + if not isinstance(item, dict): + continue + out.append( + { + "kind": "review", + "id": str(item.get("id") or ""), + "author": extract_login(item.get("user")), + "author_association": str(item.get("author_association") or ""), + "created_at": str(item.get("submitted_at") or item.get("created_at") or ""), + "body": str(item.get("body") or ""), + "path": None, + "line": None, + "url": str(item.get("html_url") or ""), + } + ) + return out + + +def extract_login(user_obj): + if isinstance(user_obj, dict): + return str(user_obj.get("login") or "") + return "" + + +def is_bot_login(login): + return bool(login) and login.endswith("[bot]") + + +def is_actionable_review_bot_login(login): + if not is_bot_login(login): + return False + lower_login = login.lower() + return any(keyword in lower_login for keyword in REVIEW_BOT_LOGIN_KEYWORDS) + + +def is_trusted_human_review_author(item, authenticated_login): + author = str(item.get("author") or "") + if not author: + return False + if authenticated_login and author == authenticated_login: + return True + association = str(item.get("author_association") or "").upper() + return association in TRUSTED_AUTHOR_ASSOCIATIONS + + +def fetch_new_review_items(pr, state, fresh_state, authenticated_login=None): + repo = pr["repo"] + pr_number = pr["number"] + endpoints = comment_endpoints(repo, pr_number) + + issue_payload = gh_api_list_paginated(endpoints["issue_comment"], repo=repo) + review_comment_payload = gh_api_list_paginated(endpoints["review_comment"], repo=repo) + review_payload = gh_api_list_paginated(endpoints["review"], repo=repo) + + issue_items = normalize_issue_comments(issue_payload) + review_comment_items = normalize_review_comments(review_comment_payload) + review_items = normalize_reviews(review_payload) + all_items = issue_items + review_comment_items + review_items + + seen_issue = {str(x) for x in state.get("seen_issue_comment_ids") or []} + seen_review_comment = {str(x) for x in state.get("seen_review_comment_ids") or []} + seen_review = {str(x) for x in state.get("seen_review_ids") or []} + + # On a brand-new state file, surface existing review activity instead of + # silently treating it as seen. This avoids missing already-pending review + # feedback when monitoring starts after comments were posted. + + new_items = [] + for item in all_items: + item_id = item.get("id") + if not item_id: + continue + author = item.get("author") or "" + if not author: + continue + if is_bot_login(author): + if not is_actionable_review_bot_login(author): + continue + elif not is_trusted_human_review_author(item, authenticated_login): + continue + + kind = item["kind"] + if kind == "issue_comment" and item_id in seen_issue: + continue + if kind == "review_comment" and item_id in seen_review_comment: + continue + if kind == "review" and item_id in seen_review: + continue + + new_items.append(item) + if kind == "issue_comment": + seen_issue.add(item_id) + elif kind == "review_comment": + seen_review_comment.add(item_id) + elif kind == "review": + seen_review.add(item_id) + + new_items.sort(key=lambda item: (item.get("created_at") or "", item.get("kind") or "", item.get("id") or "")) + state["seen_issue_comment_ids"] = sorted(seen_issue) + state["seen_review_comment_ids"] = sorted(seen_review_comment) + state["seen_review_ids"] = sorted(seen_review) + return new_items + + +def current_retry_count(state, head_sha): + retries = state.get("retries_by_sha") or {} + value = retries.get(head_sha, 0) + try: + return int(value) + except (TypeError, ValueError): + return 0 + + +def set_retry_count(state, head_sha, count): + retries = state.get("retries_by_sha") + if not isinstance(retries, dict): + retries = {} + retries[head_sha] = int(count) + state["retries_by_sha"] = retries + + +def unique_actions(actions): + out = [] + seen = set() + for action in actions: + if action not in seen: + out.append(action) + seen.add(action) + return out + + +def is_pr_ready_to_merge(pr, checks_summary, new_review_items): + if pr["closed"] or pr["merged"]: + return False + if not checks_summary["all_terminal"]: + return False + if checks_summary["failed_count"] > 0 or checks_summary["pending_count"] > 0: + return False + if new_review_items: + return False + if str(pr.get("mergeable") or "") != "MERGEABLE": + return False + if str(pr.get("merge_state_status") or "") in MERGE_CONFLICT_OR_BLOCKING_STATES: + return False + if str(pr.get("review_decision") or "") in MERGE_BLOCKING_REVIEW_DECISIONS: + return False + return True + + +def recommend_actions(pr, checks_summary, failed_runs, new_review_items, retries_used, max_retries): + actions = [] + if pr["closed"] or pr["merged"]: + if new_review_items: + actions.append("process_review_comment") + actions.append("stop_pr_closed") + return unique_actions(actions) + + if is_pr_ready_to_merge(pr, checks_summary, new_review_items): + actions.append("ready_to_merge") + return unique_actions(actions) + + if new_review_items: + actions.append("process_review_comment") + + has_failed_pr_checks = checks_summary["failed_count"] > 0 + if has_failed_pr_checks: + if checks_summary["all_terminal"] and retries_used >= max_retries: + actions.append("stop_exhausted_retries") + else: + actions.append("diagnose_ci_failure") + if checks_summary["all_terminal"] and failed_runs and retries_used < max_retries: + actions.append("retry_failed_checks") + + if not actions: + actions.append("idle") + return unique_actions(actions) + + +def collect_snapshot(args): + pr = resolve_pr(args.pr, repo_override=args.repo) + state_path = Path(args.state_file) if args.state_file else default_state_file_for(pr) + state, fresh_state = load_state(state_path) + + if not state.get("started_at"): + state["started_at"] = int(time.time()) + + authenticated_login = get_authenticated_login() + new_review_items = fetch_new_review_items( + pr, + state, + fresh_state=fresh_state, + authenticated_login=authenticated_login, + ) + # Surface review feedback before drilling into CI and mergeability details. + # That keeps the babysitter responsive to new comments even when other + # actions are also available. + # `gh pr checks -R ` requires an explicit PR/branch/url argument. + # After resolving `--pr auto`, reuse the concrete PR number. + checks = get_pr_checks(str(pr["number"]), repo=pr["repo"]) + checks_summary = summarize_checks(checks) + workflow_runs = get_workflow_runs_for_sha(pr["repo"], pr["head_sha"]) + failed_runs = failed_runs_from_workflow_runs(workflow_runs, pr["head_sha"]) + + retries_used = current_retry_count(state, pr["head_sha"]) + actions = recommend_actions( + pr, + checks_summary, + failed_runs, + new_review_items, + retries_used, + args.max_flaky_retries, + ) + + state["pr"] = {"repo": pr["repo"], "number": pr["number"]} + state["last_seen_head_sha"] = pr["head_sha"] + state["last_snapshot_at"] = int(time.time()) + save_state(state_path, state) + + snapshot = { + "pr": pr, + "checks": checks_summary, + "failed_runs": failed_runs, + "new_review_items": new_review_items, + "actions": actions, + "retry_state": { + "current_sha_retries_used": retries_used, + "max_flaky_retries": args.max_flaky_retries, + }, + } + return snapshot, state_path + + +def retry_failed_now(args): + snapshot, state_path = collect_snapshot(args) + pr = snapshot["pr"] + checks_summary = snapshot["checks"] + failed_runs = snapshot["failed_runs"] + retries_used = snapshot["retry_state"]["current_sha_retries_used"] + max_retries = snapshot["retry_state"]["max_flaky_retries"] + + result = { + "snapshot": snapshot, + "state_file": str(state_path), + "rerun_attempted": False, + "rerun_count": 0, + "rerun_run_ids": [], + "reason": None, + } + + if pr["closed"] or pr["merged"]: + result["reason"] = "pr_closed" + return result + if checks_summary["failed_count"] <= 0: + result["reason"] = "no_failed_pr_checks" + return result + if not failed_runs: + result["reason"] = "no_failed_runs" + return result + if not checks_summary["all_terminal"]: + result["reason"] = "checks_still_pending" + return result + if retries_used >= max_retries: + result["reason"] = "retry_budget_exhausted" + return result + + for run in failed_runs: + run_id = run.get("run_id") + if run_id in (None, ""): + continue + gh_text(["run", "rerun", str(run_id), "--failed"], repo=pr["repo"]) + result["rerun_run_ids"].append(run_id) + + if result["rerun_run_ids"]: + state, _ = load_state(state_path) + new_count = current_retry_count(state, pr["head_sha"]) + 1 + set_retry_count(state, pr["head_sha"], new_count) + state["last_snapshot_at"] = int(time.time()) + save_state(state_path, state) + result["rerun_attempted"] = True + result["rerun_count"] = len(result["rerun_run_ids"]) + result["reason"] = "rerun_triggered" + else: + result["reason"] = "failed_runs_missing_ids" + + return result + + +def print_json(obj): + sys.stdout.write(json.dumps(obj, sort_keys=True) + "\n") + sys.stdout.flush() + + +def print_event(event, payload): + print_json({"event": event, "payload": payload}) + + +def is_ci_green(snapshot): + checks = snapshot.get("checks") or {} + return ( + bool(checks.get("all_terminal")) + and int(checks.get("failed_count") or 0) == 0 + and int(checks.get("pending_count") or 0) == 0 + ) + + +def snapshot_change_key(snapshot): + pr = snapshot.get("pr") or {} + checks = snapshot.get("checks") or {} + review_items = snapshot.get("new_review_items") or [] + return ( + str(pr.get("head_sha") or ""), + str(pr.get("state") or ""), + str(pr.get("mergeable") or ""), + str(pr.get("merge_state_status") or ""), + str(pr.get("review_decision") or ""), + int(checks.get("passed_count") or 0), + int(checks.get("failed_count") or 0), + int(checks.get("pending_count") or 0), + tuple( + (str(item.get("kind") or ""), str(item.get("id") or "")) + for item in review_items + if isinstance(item, dict) + ), + tuple(snapshot.get("actions") or []), + ) + + +def run_watch(args): + poll_seconds = args.poll_seconds + last_change_key = None + while True: + snapshot, state_path = collect_snapshot(args) + print_event( + "snapshot", + { + "snapshot": snapshot, + "state_file": str(state_path), + "next_poll_seconds": poll_seconds, + }, + ) + actions = set(snapshot.get("actions") or []) + if ( + "stop_pr_closed" in actions + or "stop_exhausted_retries" in actions + ): + print_event("stop", {"actions": snapshot.get("actions"), "pr": snapshot.get("pr")}) + return 0 + + current_change_key = snapshot_change_key(snapshot) + changed = current_change_key != last_change_key + green = is_ci_green(snapshot) + pr = snapshot.get("pr") or {} + pr_open = not bool(pr.get("closed")) and not bool(pr.get("merged")) + + if not green or pr_open: + poll_seconds = args.poll_seconds + elif changed or last_change_key is None: + poll_seconds = args.poll_seconds + + last_change_key = current_change_key + time.sleep(poll_seconds) + + +def main(): + args = parse_args() + try: + if args.retry_failed_now: + print_json(retry_failed_now(args)) + return 0 + if args.watch: + return run_watch(args) + snapshot, state_path = collect_snapshot(args) + snapshot["state_file"] = str(state_path) + print_json(snapshot) + return 0 + except (GhCommandError, RuntimeError, ValueError) as err: + sys.stderr.write(f"gh_pr_watch.py error: {err}\n") + return 1 + except KeyboardInterrupt: + sys.stderr.write("gh_pr_watch.py interrupted\n") + return 130 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/vendor/codex/.codex/skills/babysit-pr/scripts/test_gh_pr_watch.py b/vendor/codex/.codex/skills/babysit-pr/scripts/test_gh_pr_watch.py new file mode 100644 index 00000000..c6a5d256 --- /dev/null +++ b/vendor/codex/.codex/skills/babysit-pr/scripts/test_gh_pr_watch.py @@ -0,0 +1,155 @@ +import argparse +import importlib.util +from pathlib import Path + +import pytest + + +MODULE_PATH = Path(__file__).with_name("gh_pr_watch.py") +MODULE_SPEC = importlib.util.spec_from_file_location("gh_pr_watch", MODULE_PATH) +gh_pr_watch = importlib.util.module_from_spec(MODULE_SPEC) +assert MODULE_SPEC.loader is not None +MODULE_SPEC.loader.exec_module(gh_pr_watch) + + +def sample_pr(): + return { + "number": 123, + "url": "https://github.com/openai/codex/pull/123", + "repo": "openai/codex", + "head_sha": "abc123", + "head_branch": "feature", + "state": "OPEN", + "merged": False, + "closed": False, + "mergeable": "MERGEABLE", + "merge_state_status": "CLEAN", + "review_decision": "", + } + + +def sample_checks(**overrides): + checks = { + "pending_count": 0, + "failed_count": 0, + "passed_count": 12, + "all_terminal": True, + } + checks.update(overrides) + return checks + + +def test_collect_snapshot_fetches_review_items_before_ci(monkeypatch, tmp_path): + call_order = [] + pr = sample_pr() + + monkeypatch.setattr(gh_pr_watch, "resolve_pr", lambda *args, **kwargs: pr) + monkeypatch.setattr(gh_pr_watch, "load_state", lambda path: ({}, True)) + monkeypatch.setattr( + gh_pr_watch, + "get_authenticated_login", + lambda: call_order.append("auth") or "octocat", + ) + monkeypatch.setattr( + gh_pr_watch, + "fetch_new_review_items", + lambda *args, **kwargs: call_order.append("review") or [], + ) + monkeypatch.setattr( + gh_pr_watch, + "get_pr_checks", + lambda *args, **kwargs: call_order.append("checks") or [], + ) + monkeypatch.setattr( + gh_pr_watch, + "summarize_checks", + lambda checks: call_order.append("summarize") or sample_checks(), + ) + monkeypatch.setattr( + gh_pr_watch, + "get_workflow_runs_for_sha", + lambda *args, **kwargs: call_order.append("workflow") or [], + ) + monkeypatch.setattr( + gh_pr_watch, + "failed_runs_from_workflow_runs", + lambda *args, **kwargs: call_order.append("failed_runs") or [], + ) + monkeypatch.setattr( + gh_pr_watch, + "recommend_actions", + lambda *args, **kwargs: call_order.append("recommend") or ["idle"], + ) + monkeypatch.setattr(gh_pr_watch, "save_state", lambda *args, **kwargs: None) + + args = argparse.Namespace( + pr="123", + repo=None, + state_file=str(tmp_path / "watcher-state.json"), + max_flaky_retries=3, + ) + + gh_pr_watch.collect_snapshot(args) + + assert call_order.index("review") < call_order.index("checks") + assert call_order.index("review") < call_order.index("workflow") + + +def test_recommend_actions_prioritizes_review_comments(): + actions = gh_pr_watch.recommend_actions( + sample_pr(), + sample_checks(failed_count=1), + [{"run_id": 99}], + [{"kind": "review_comment", "id": "1"}], + 0, + 3, + ) + + assert actions == [ + "process_review_comment", + "diagnose_ci_failure", + "retry_failed_checks", + ] + + +def test_run_watch_keeps_polling_open_ready_to_merge_pr(monkeypatch): + sleeps = [] + events = [] + snapshot = { + "pr": sample_pr(), + "checks": sample_checks(), + "failed_runs": [], + "new_review_items": [], + "actions": ["ready_to_merge"], + "retry_state": { + "current_sha_retries_used": 0, + "max_flaky_retries": 3, + }, + } + + monkeypatch.setattr( + gh_pr_watch, + "collect_snapshot", + lambda args: (snapshot, Path("/tmp/codex-babysit-pr-state.json")), + ) + monkeypatch.setattr( + gh_pr_watch, + "print_event", + lambda event, payload: events.append((event, payload)), + ) + + class StopWatch(Exception): + pass + + def fake_sleep(seconds): + sleeps.append(seconds) + if len(sleeps) >= 2: + raise StopWatch + + monkeypatch.setattr(gh_pr_watch.time, "sleep", fake_sleep) + + with pytest.raises(StopWatch): + gh_pr_watch.run_watch(argparse.Namespace(poll_seconds=30)) + + assert sleeps == [30, 30] + assert [event for event, _ in events] == ["snapshot", "snapshot"] diff --git a/vendor/codex/.codex/skills/code-review-breaking-changes/SKILL.md b/vendor/codex/.codex/skills/code-review-breaking-changes/SKILL.md new file mode 100644 index 00000000..d0bddf28 --- /dev/null +++ b/vendor/codex/.codex/skills/code-review-breaking-changes/SKILL.md @@ -0,0 +1,12 @@ +--- +name: code-breaking-changes +description: Breaking changes +--- + +Search for breaking changes in external integration surfaces: +- app-server APIs +- CLI parameters +- configuration loading +- resuming sessions from existing rollouts + +Do not stop after finding one issue; analyze all possible ways breaking changes can happen. diff --git a/vendor/codex/.codex/skills/code-review-change-size/SKILL.md b/vendor/codex/.codex/skills/code-review-change-size/SKILL.md new file mode 100644 index 00000000..4e8048dc --- /dev/null +++ b/vendor/codex/.codex/skills/code-review-change-size/SKILL.md @@ -0,0 +1,11 @@ +--- +name: code-review-change-size +description: Change size guidance (800 lines) +--- + +Unless the change is mechanical the total number of changed lines should not exceed 800 lines. +For complex logic changes the size should be under 500 lines. + +If the change is larger, explain whether it can be split into reviewable stages and identify the smallest coherent stage to land first. +Base the staging suggestion on the actual diff, dependencies, and affected call sites. + diff --git a/vendor/codex/.codex/skills/code-review-context/SKILL.md b/vendor/codex/.codex/skills/code-review-context/SKILL.md new file mode 100644 index 00000000..7faf3d7c --- /dev/null +++ b/vendor/codex/.codex/skills/code-review-context/SKILL.md @@ -0,0 +1,13 @@ +--- +name: code-review-context +description: Model visible context +--- + +Codex maintains a context (history of messages) that is sent to the model in inference requests. + +1. No history rewrite - the context must be built up incrementally. +2. Avoid frequent changes to context that cause cache misses. +3. No unbounded items - everything injected in the model context must have a bounded size and a hard cap. +4. No items larger than 10K tokens. +5. Highlight new individual items that can cross >1k tokens as P0. These need an additional manual review. +6. All injected fragments must be defined as structs in `core/context` and implement ContextualUserFragment trait \ No newline at end of file diff --git a/vendor/codex/.codex/skills/code-review-testing/SKILL.md b/vendor/codex/.codex/skills/code-review-testing/SKILL.md new file mode 100644 index 00000000..c8d99e13 --- /dev/null +++ b/vendor/codex/.codex/skills/code-review-testing/SKILL.md @@ -0,0 +1,14 @@ +--- +name: code-review-testing +description: Test authoring guidance +--- + +For agent changes prefer integration tests over unit tests. Integration tests are under `core/suite` and use `test_codex` to set up a test instance of codex. + +Features that change the agent logic MUST add an integration test: +- Provide a list of major logic changes and user-facing behaviors that need to be tested. + +If unit tests are needed, put them in a dedicated test file (*_tests.rs). +Avoid test-only functions in the main implementation. + +Check whether there are existing helpers to make tests more streamlined and readable. diff --git a/vendor/codex/.codex/skills/code-review/SKILL.md b/vendor/codex/.codex/skills/code-review/SKILL.md new file mode 100644 index 00000000..eec0787c --- /dev/null +++ b/vendor/codex/.codex/skills/code-review/SKILL.md @@ -0,0 +1,14 @@ +--- +name: code-review +description: Run a final code review on a pull request +--- + +Use subagents to review code using all code-review-* skills in this repository other than this orchestrator. One subagent per skill. Pass full skill path to subagents. Use xhigh reasoning. + +You must return every single issue from every subagent. You can return an unlimited number of findings. +Use raw Markdown to report findings. +Number findings for ease of reference. +Each finding must include a specific file path and line number. + +If the GitHub user running the review is the owner of the pull request add a `code-reviewed` label. +Do not leave GitHub comments unless explicitly asked. diff --git a/vendor/codex/.codex/skills/codex-bug/SKILL.md b/vendor/codex/.codex/skills/codex-bug/SKILL.md new file mode 100644 index 00000000..c7a688e6 --- /dev/null +++ b/vendor/codex/.codex/skills/codex-bug/SKILL.md @@ -0,0 +1,48 @@ +--- +name: codex-bug +description: Diagnose GitHub bug reports in openai/codex. Use when given a GitHub issue URL from openai/codex and asked to decide next steps such as verifying against the repo, requesting more info, or explaining why it is not a bug; follow any additional user-provided instructions. +--- + +# Codex Bug + +## Overview + +Diagnose a Codex GitHub bug report and decide the next action: verify against sources, request more info, or explain why it is not a bug. + +## Workflow + +1. Confirm the input + +- Require a GitHub issue URL that points to `github.com/openai/codex/issues/…`. +- If the URL is missing or not in the right repo, ask the user for the correct link. + +2. Network access + +- Always access the issue over the network immediately, even if you think access is blocked or unavailable. +- Prefer the GitHub API over HTML pages because the HTML is noisy: + - Issue: `https://api.github.com/repos/openai/codex/issues/` + - Comments: `https://api.github.com/repos/openai/codex/issues//comments` +- If the environment requires explicit approval, request it on demand via the tool and continue without additional user prompting. +- Only if the network attempt fails after requesting approval, explain what you can do offline (e.g., draft a response template) and ask how to proceed. + +3. Read the issue + +- Use the GitHub API responses (issue + comments) as the source of truth rather than scraping the HTML issue page. +- Extract: title, body, repro steps, expected vs actual, environment, logs, and any attachments. +- Note whether the report already includes logs or session details. +- If the report includes a thread ID, mention it in the summary and use it to look up the logs and session details if you have access to them. + +4. Summarize the bug before investigating + +- Before inspecting code, docs, or logs in depth, write a short summary of the report in your own words. +- Include the reported behavior, expected behavior, repro steps, environment, and what evidence is already attached or missing. + +5. Decide the course of action + +- **Verify with sources** when the report is specific and likely reproducible. Inspect relevant Codex files (or mention the files to inspect if access is unavailable). +- **Request more information** when the report is vague, missing repro steps, or lacks logs/environment. +- **Explain not a bug** when the report contradicts current behavior or documented constraints (cite the evidence from the issue and any local sources you checked). + +6. Respond + +- Provide a concise report of your findings and next steps. diff --git a/vendor/codex/.codex/skills/codex-pr-body/SKILL.md b/vendor/codex/.codex/skills/codex-pr-body/SKILL.md new file mode 100644 index 00000000..76b37b87 --- /dev/null +++ b/vendor/codex/.codex/skills/codex-pr-body/SKILL.md @@ -0,0 +1,59 @@ +--- +name: codex-pr-body +description: Update the title and body of one or more pull requests. +--- + +## Determining the PR(s) + +When this skill is invoked, the PR(s) to update may be specified explicitly, but in the common case, the PR(s) to update will be inferred from the branch / commit that the user is currently working on. For ordinary Git usage (i.e., not Sapling as discussed below), you may have to use a combination of `git branch` and `gh pr view --repo openai/codex --json number --jq '.number'` to determine the PR associated with the current branch / commit. + +## PR Body Contents + +When invoked, use `gh` to edit the pull request body and title to reflect the contents of the specified PR. Make sure to check the existing pull request body to see if there is key information that should be preserved. For example, NEVER remove an image in the existing pull request body, as the author may have no way to recover it if you remove it. + +It is critically important to explain _why_ the change is being made. If the current conversation in which this skill is invoked has discussed the motivation, be sure to capture this in the pull request body. + +The body should also explain _what_ changed, but this should appear after the _why_. + +Limit discussion to the _net change_ of the commit. It is generally frowned upon to discuss changes that were attempted but later undone in the course of the development of the pull request. When rewriting the pull request body, you may need to eliminate details such as these when they are no longer appropriate / of interest to future readers. + +Avoid references to absolute paths on my local disk. When talking about a path that is within the repository, simply use the repo-relative path. + +It is generally helpful to discuss how the change was verified. That said, it is unnecessary to mention things that CI checks automatically, e.g., do not include "ran `just fmt`" as part of the test plan. Though identifying the new tests that were purposely introduced to verify the new behavior introduced by the pull request is often appropriate. + +Make use of Markdown to format the pull request professionally. Ensure "code things" appear in single backticks when referenced inline. Fenced code blocks are useful when referencing code or showing a shell transcript. Also, make use of GitHub permalinks when citing existing pieces of code that are relevant to the change. + +Make sure to reference any relevant pull requests or issues, though there should be no need to reference the pull request in its own PR body. + +If there is documentation that should be updated on https://developers.openai.com/codex as a result of this change, please note that in a separate section near the end of the pull request. Omit this section if there is no documentation that needs to be updated. + +## Working with Stacks + +Sometimes a pull request is composed of a stack of commits that build on one another. In these cases, the PR body should reflect the _net_ change introduced by the stack as a whole, rather than the individual commits that make up the stack. + +Similarly, sometimes a user may be using a tool like Sapling to leverage _stacked pull requests_, in which case the `base` of the PR may be the a branch that is the `head` of another PR in the stack rather than `main`. In this case, be sure to discuss only the net change between the `base` and `head` of the PR that is being opened against that stacked base, rather than the changes relative to `main`. + +## Sapling + +If `.git/sl/store` is present, then this Git repository is governed by Sapling SCM (https://sapling-scm.com). + +In Sapling, run the following to see if there is a GitHub pull request associated with the current revision: + +```shell +sl log --template '{github_pull_request_url}' -r . +``` + +Alternatively, you can run `sl sl` to see the current development branch and whether there is a GitHub pull request associated with the current commit. For example, if the output were: + +``` + @ cb032b31cf 72 minutes ago mbolin #11412 +╭─╯ tui: show non-file layer content in /debug-config +│ +o fdd0cd1de9 Today at 20:09 origin/main +│ +~ +``` + +- `@` indicates the current commit is `cb032b31cf` +- it is a development branch containing a single commit branched off of `origin/main` +- it is associated with GitHub pull request #11412 diff --git a/vendor/codex/.codex/skills/remote-tests/SKILL.md b/vendor/codex/.codex/skills/remote-tests/SKILL.md new file mode 100644 index 00000000..ee35fc2b --- /dev/null +++ b/vendor/codex/.codex/skills/remote-tests/SKILL.md @@ -0,0 +1,16 @@ +--- +name: remote-tests +description: How to run tests using remote executor. +--- + +Some codex integration tests support a running against a remote executor. +This means that when CODEX_TEST_REMOTE_ENV environment variable is set they will attempt to start an executor process in a docker container CODEX_TEST_REMOTE_ENV points to and use it in tests. + +Docker container is built and initialized via ./scripts/test-remote-env.sh + +Currently running remote tests is only supported on Linux, so you need to use a devbox to run them + +You can list devboxes via `applied_devbox ls`, pick the one with `codex` in the name. +Connect to devbox via `ssh `. +Reuse the same checkout of codex in `~/code/codex`. Reset files if needed. Multiple checkouts take longer to build and take up more space. +Check whether the SHA and modified files are in sync between remote and local. diff --git a/vendor/codex/.codex/skills/test-tui/SKILL.md b/vendor/codex/.codex/skills/test-tui/SKILL.md new file mode 100644 index 00000000..e58e6773 --- /dev/null +++ b/vendor/codex/.codex/skills/test-tui/SKILL.md @@ -0,0 +1,14 @@ +--- +name: test-tui +description: Guide for testing Codex TUI interactively +--- + +You can start and use Codex TUI to verify changes. + +Important notes: + +Start interactively. +Always set RUST_LOG="trace" when starting the process. +Pass `-c log_dir=` argument to have logs written to a specific directory to help with debugging. +When sending a test message programmatically, send text first, then send Enter in a separate write (do not send text + Enter in one burst). +Use `just codex` target to run - `just codex -c ...` diff --git a/vendor/codex/.devcontainer/Dockerfile b/vendor/codex/.devcontainer/Dockerfile new file mode 100644 index 00000000..8c3a8597 --- /dev/null +++ b/vendor/codex/.devcontainer/Dockerfile @@ -0,0 +1,27 @@ +FROM ubuntu:24.04 + +ARG DEBIAN_FRONTEND=noninteractive +# enable 'universe' because musl-tools & clang live there +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + software-properties-common && \ + add-apt-repository --yes universe + +# now install build deps +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + build-essential curl git ca-certificates \ + pkg-config libcap-dev clang musl-tools libssl-dev just && \ + rm -rf /var/lib/apt/lists/* + +# Ubuntu 24.04 ships with user 'ubuntu' already created with UID 1000. +USER ubuntu + +# install Rust + musl target as dev user +RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal && \ + ~/.cargo/bin/rustup target add aarch64-unknown-linux-musl && \ + ~/.cargo/bin/rustup component add clippy rustfmt + +ENV PATH="/home/ubuntu/.cargo/bin:${PATH}" + +WORKDIR /workspace diff --git a/vendor/codex/.devcontainer/Dockerfile.secure b/vendor/codex/.devcontainer/Dockerfile.secure new file mode 100644 index 00000000..f5f4d016 --- /dev/null +++ b/vendor/codex/.devcontainer/Dockerfile.secure @@ -0,0 +1,74 @@ +FROM mcr.microsoft.com/devcontainers/base:ubuntu-24.04 + +ARG TZ +ARG DEBIAN_FRONTEND=noninteractive +ARG NODE_MAJOR=22 +ARG RUST_TOOLCHAIN=1.92.0 +ARG CODEX_NPM_VERSION=latest + +ENV TZ="$TZ" + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Devcontainers run as a non-root user, so enable bubblewrap's setuid mode. +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + build-essential \ + curl \ + git \ + ca-certificates \ + pkg-config \ + clang \ + musl-tools \ + libssl-dev \ + libsqlite3-dev \ + just \ + python3 \ + python3-pip \ + jq \ + less \ + man-db \ + unzip \ + ripgrep \ + fzf \ + fd-find \ + zsh \ + dnsutils \ + iproute2 \ + ipset \ + iptables \ + aggregate \ + bubblewrap \ + && chmod u+s /usr/bin/bwrap \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN curl -fsSL "https://deb.nodesource.com/setup_${NODE_MAJOR}.x" | bash - \ + && apt-get update \ + && apt-get install -y --no-install-recommends nodejs \ + && npm install -g corepack@latest "@openai/codex@${CODEX_NPM_VERSION}" \ + && corepack enable \ + && corepack prepare pnpm@10.28.2 --activate \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY .devcontainer/init-firewall.sh /usr/local/bin/init-firewall.sh +COPY .devcontainer/post_install.py /opt/post_install.py +COPY .devcontainer/post-start.sh /opt/post_start.sh + +RUN chmod 500 /usr/local/bin/init-firewall.sh \ + && chmod 755 /opt/post_start.sh \ + && chmod 644 /opt/post_install.py \ + && chown vscode:vscode /opt/post_install.py + +RUN install -d -m 0775 -o vscode -g vscode /commandhistory /workspace \ + && touch /commandhistory/.bash_history /commandhistory/.zsh_history \ + && chown vscode:vscode /commandhistory/.bash_history /commandhistory/.zsh_history + +USER vscode +ENV PATH="/home/vscode/.cargo/bin:${PATH}" +WORKDIR /workspace + +RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain "${RUST_TOOLCHAIN}" \ + && rustup component add clippy rustfmt rust-src \ + && rustup target add x86_64-unknown-linux-musl aarch64-unknown-linux-musl diff --git a/vendor/codex/.devcontainer/README.md b/vendor/codex/.devcontainer/README.md new file mode 100644 index 00000000..3b07f2b4 --- /dev/null +++ b/vendor/codex/.devcontainer/README.md @@ -0,0 +1,49 @@ +# Containerized Development + +We provide two container paths: + +- `devcontainer.json` keeps the existing Codex contributor setup for working on this repository. +- `devcontainer.secure.json` adds a customer-oriented profile with stricter outbound network controls. + +## Codex contributor profile + +Use `devcontainer.json` when you are developing Codex itself. This is the same lightweight arm64 container that already exists in the repo. + +## Secure customer profile + +Use `devcontainer.secure.json` when you want a stricter runtime profile for running Codex inside a project container: + +- installs the Codex CLI plus common build tools +- installs bubblewrap in setuid mode for Codex's Linux sandbox +- disables Docker's outer seccomp and AppArmor profiles so bubblewrap can construct Codex's inner sandbox +- enables firewall startup with an allowlist-driven outbound policy +- blocks IPv6 by default so the allowlist cannot be bypassed over AAAA routes +- requires `NET_ADMIN` and `NET_RAW` so the firewall can be installed at startup + +This profile keeps the stricter networking isolated to the customer path instead of changing the default Codex contributor container. + +Start it from the CLI with: + +```bash +devcontainer up --workspace-folder . --config .devcontainer/devcontainer.secure.json +``` + +In VS Code, choose **Dev Containers: Open Folder in Container...** and select `.devcontainer/devcontainer.secure.json`. + +## Docker + +To build the contributor image locally for x64 and then run it with the repo mounted under `/workspace`: + +```shell +CODEX_DOCKER_IMAGE_NAME=codex-linux-dev +docker build --platform=linux/amd64 -t "$CODEX_DOCKER_IMAGE_NAME" ./.devcontainer +docker run --platform=linux/amd64 --rm -it -e CARGO_TARGET_DIR=/workspace/codex-rs/target-amd64 -v "$PWD":/workspace -w /workspace/codex-rs "$CODEX_DOCKER_IMAGE_NAME" +``` + +Note that `/workspace/target` will contain the binaries built for your host platform, so we include `-e CARGO_TARGET_DIR=/workspace/codex-rs/target-amd64` in the `docker run` command so that the binaries built inside your container are written to a separate directory. + +For arm64, specify `--platform=linux/arm64` instead for both `docker build` and `docker run`. + +Currently, the contributor `Dockerfile` works for both x64 and arm64 Linux, though you need to run `rustup target add x86_64-unknown-linux-musl` yourself to install the musl toolchain for x64. + +The secure profile's capability, seccomp, and AppArmor options are required when you want Codex's bubblewrap sandbox to run inside Docker as the non-root devcontainer user. Without them, Docker's default runtime profile can block bubblewrap's namespace setup before Codex's own seccomp filter is installed. This keeps the Docker relaxation explicit in the profile that is meant to run Codex inside a project container, while the default contributor profile stays lightweight. diff --git a/vendor/codex/.devcontainer/devcontainer.json b/vendor/codex/.devcontainer/devcontainer.json new file mode 100644 index 00000000..1bed79c3 --- /dev/null +++ b/vendor/codex/.devcontainer/devcontainer.json @@ -0,0 +1,27 @@ +{ + "name": "Codex", + "build": { + "dockerfile": "Dockerfile", + "context": "..", + "platform": "linux/arm64" + }, + + /* Force VS Code to run the container as arm64 in + case your host is x86 (or vice-versa). */ + "runArgs": ["--platform=linux/arm64"], + + "containerEnv": { + "RUST_BACKTRACE": "1", + "CARGO_TARGET_DIR": "${containerWorkspaceFolder}/codex-rs/target-arm64" + }, + + "remoteUser": "ubuntu", + "customizations": { + "vscode": { + "settings": { + "terminal.integrated.defaultProfile.linux": "bash" + }, + "extensions": ["rust-lang.rust-analyzer", "tamasfe.even-better-toml"] + } + } +} diff --git a/vendor/codex/.devcontainer/devcontainer.secure.json b/vendor/codex/.devcontainer/devcontainer.secure.json new file mode 100644 index 00000000..f5268698 --- /dev/null +++ b/vendor/codex/.devcontainer/devcontainer.secure.json @@ -0,0 +1,83 @@ +{ + "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json", + "name": "Codex (Secure)", + "build": { + "dockerfile": "Dockerfile.secure", + "context": "..", + "args": { + "TZ": "${localEnv:TZ:UTC}", + "NODE_MAJOR": "22", + "RUST_TOOLCHAIN": "1.92.0", + "CODEX_NPM_VERSION": "latest" + } + }, + "runArgs": [ + "--cap-add=SYS_ADMIN", + "--cap-add=SYS_CHROOT", + "--cap-add=SETUID", + "--cap-add=SETGID", + "--cap-add=SYS_PTRACE", + "--security-opt=seccomp=unconfined", + "--security-opt=apparmor=unconfined", + "--cap-add=NET_ADMIN", + "--cap-add=NET_RAW" + ], + "init": true, + "updateRemoteUserUID": true, + "remoteUser": "vscode", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated", + "workspaceFolder": "/workspace", + "mounts": [ + "source=codex-commandhistory-${devcontainerId},target=/commandhistory,type=volume", + "source=codex-home-${devcontainerId},target=/home/vscode/.codex,type=volume", + "source=codex-gh-${devcontainerId},target=/home/vscode/.config/gh,type=volume", + "source=codex-cargo-registry-${devcontainerId},target=/home/vscode/.cargo/registry,type=volume", + "source=codex-cargo-git-${devcontainerId},target=/home/vscode/.cargo/git,type=volume", + "source=codex-rustup-${devcontainerId},target=/home/vscode/.rustup,type=volume", + "source=${localEnv:HOME}/.gitconfig,target=/home/vscode/.gitconfig,type=bind,readonly" + ], + "containerEnv": { + "RUST_BACKTRACE": "1", + "CODEX_UNSAFE_ALLOW_NO_SANDBOX": "1", + "CODEX_ENABLE_FIREWALL": "1", + "CODEX_INCLUDE_GITHUB_META_RANGES": "1", + "OPENAI_ALLOWED_DOMAINS": "api.openai.com auth.openai.com github.com api.github.com codeload.github.com raw.githubusercontent.com objects.githubusercontent.com crates.io index.crates.io static.crates.io static.rust-lang.org registry.npmjs.org pypi.org files.pythonhosted.org", + "CARGO_TARGET_DIR": "/workspace/.cache/cargo-target", + "GIT_CONFIG_GLOBAL": "/home/vscode/.gitconfig.local", + "COREPACK_ENABLE_DOWNLOAD_PROMPT": "0", + "PYTHONDONTWRITEBYTECODE": "1", + "PIP_DISABLE_PIP_VERSION_CHECK": "1" + }, + "remoteEnv": { + "OPENAI_API_KEY": "${localEnv:OPENAI_API_KEY}" + }, + "postCreateCommand": "python3 /opt/post_install.py", + "postStartCommand": "bash /opt/post_start.sh", + "waitFor": "postStartCommand", + "customizations": { + "vscode": { + "settings": { + "terminal.integrated.defaultProfile.linux": "zsh", + "terminal.integrated.profiles.linux": { + "bash": { + "path": "bash", + "icon": "terminal-bash" + }, + "zsh": { + "path": "zsh" + } + }, + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true + }, + "extensions": [ + "openai.chatgpt", + "rust-lang.rust-analyzer", + "tamasfe.even-better-toml", + "vadimcn.vscode-lldb", + "ms-azuretools.vscode-docker" + ] + } + } +} diff --git a/vendor/codex/.devcontainer/init-firewall.sh b/vendor/codex/.devcontainer/init-firewall.sh new file mode 100644 index 00000000..92757244 --- /dev/null +++ b/vendor/codex/.devcontainer/init-firewall.sh @@ -0,0 +1,170 @@ +#!/usr/bin/env bash +set -euo pipefail +IFS=$'\n\t' + +allowed_domains_file="/etc/codex/allowed_domains.txt" +include_github_meta_ranges="${CODEX_INCLUDE_GITHUB_META_RANGES:-1}" + +if [ -f "$allowed_domains_file" ]; then + mapfile -t allowed_domains < <(sed '/^\s*#/d;/^\s*$/d' "$allowed_domains_file") +else + allowed_domains=("api.openai.com") +fi + +if [ "${#allowed_domains[@]}" -eq 0 ]; then + echo "ERROR: No allowed domains configured" + exit 1 +fi + +add_ipv4_cidr_to_allowlist() { + local source="$1" + local cidr="$2" + + if [[ ! "$cidr" =~ ^[0-9]{1,3}(\.[0-9]{1,3}){3}/[0-9]{1,2}$ ]]; then + echo "ERROR: Invalid ${source} CIDR range: $cidr" + exit 1 + fi + + ipset add allowed-domains "$cidr" -exist +} + +configure_ipv6_default_deny() { + if ! command -v ip6tables >/dev/null 2>&1; then + echo "ERROR: ip6tables is required to enforce IPv6 default-deny policy" + exit 1 + fi + + ip6tables -F + ip6tables -X + ip6tables -t mangle -F + ip6tables -t mangle -X + ip6tables -t nat -F 2>/dev/null || true + ip6tables -t nat -X 2>/dev/null || true + + ip6tables -A INPUT -i lo -j ACCEPT + ip6tables -A OUTPUT -o lo -j ACCEPT + ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT + ip6tables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT + + ip6tables -P INPUT DROP + ip6tables -P FORWARD DROP + ip6tables -P OUTPUT DROP + + echo "IPv6 firewall policy configured (default-deny)" +} + +# Preserve docker-managed DNS NAT rules before clearing tables. +docker_dns_rules="$(iptables-save -t nat | grep "127\\.0\\.0\\.11" || true)" + +iptables -F +iptables -X +iptables -t nat -F +iptables -t nat -X +iptables -t mangle -F +iptables -t mangle -X +ipset destroy allowed-domains 2>/dev/null || true + +if [ -n "$docker_dns_rules" ]; then + echo "Restoring Docker DNS NAT rules" + iptables -t nat -N DOCKER_OUTPUT 2>/dev/null || true + iptables -t nat -N DOCKER_POSTROUTING 2>/dev/null || true + while IFS= read -r rule; do + [ -z "$rule" ] && continue + iptables -t nat $rule + done <<< "$docker_dns_rules" +fi + +# Allow DNS resolution and localhost communication. +iptables -A OUTPUT -p udp --dport 53 -j ACCEPT +iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT +iptables -A INPUT -p udp --sport 53 -j ACCEPT +iptables -A INPUT -p tcp --sport 53 -j ACCEPT +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +ipset create allowed-domains hash:net + +for domain in "${allowed_domains[@]}"; do + echo "Resolving $domain" + ips="$(dig +short A "$domain" | sed '/^\s*$/d')" + if [ -z "$ips" ]; then + echo "ERROR: Failed to resolve $domain" + exit 1 + fi + + while IFS= read -r ip; do + if [[ ! "$ip" =~ ^[0-9]{1,3}(\.[0-9]{1,3}){3}$ ]]; then + echo "ERROR: Invalid IPv4 address from DNS for $domain: $ip" + exit 1 + fi + ipset add allowed-domains "$ip" -exist + done <<< "$ips" +done + +if [ "$include_github_meta_ranges" = "1" ]; then + echo "Fetching GitHub meta ranges" + github_meta="$(curl -fsSL --connect-timeout 10 https://api.github.com/meta)" + + if ! echo "$github_meta" | jq -e '.web and .api and .git' >/dev/null; then + echo "ERROR: GitHub meta response missing expected fields" + exit 1 + fi + + while IFS= read -r cidr; do + [ -z "$cidr" ] && continue + if [[ "$cidr" == *:* ]]; then + # Current policy enforces IPv4-only ipset entries. + continue + fi + add_ipv4_cidr_to_allowlist "GitHub" "$cidr" + done < <(echo "$github_meta" | jq -r '((.web // []) + (.api // []) + (.git // []))[]' | sort -u) +fi + +host_ip="$(ip route | awk '/default/ {print $3; exit}')" +if [ -z "$host_ip" ]; then + echo "ERROR: Failed to detect host IP" + exit 1 +fi + +host_network="$(echo "$host_ip" | sed 's/\.[0-9]*$/.0\/24/')" +iptables -A INPUT -s "$host_network" -j ACCEPT +iptables -A OUTPUT -d "$host_network" -j ACCEPT + +iptables -P INPUT DROP +iptables -P FORWARD DROP +iptables -P OUTPUT DROP + +iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +iptables -A OUTPUT -m set --match-set allowed-domains dst -j ACCEPT + +# Reject rather than silently drop to make policy failures obvious. +iptables -A INPUT -j REJECT --reject-with icmp-admin-prohibited +iptables -A OUTPUT -j REJECT --reject-with icmp-admin-prohibited +iptables -A FORWARD -j REJECT --reject-with icmp-admin-prohibited + +configure_ipv6_default_deny + +echo "Firewall configuration complete" + +if curl --connect-timeout 5 https://example.com >/dev/null 2>&1; then + echo "ERROR: Firewall verification failed - was able to reach https://example.com" + exit 1 +fi + +if ! curl --connect-timeout 5 https://api.openai.com >/dev/null 2>&1; then + echo "ERROR: Firewall verification failed - unable to reach https://api.openai.com" + exit 1 +fi + +if [ "$include_github_meta_ranges" = "1" ] && ! curl --connect-timeout 5 https://api.github.com/zen >/dev/null 2>&1; then + echo "ERROR: Firewall verification failed - unable to reach https://api.github.com" + exit 1 +fi + +if curl --connect-timeout 5 -6 https://example.com >/dev/null 2>&1; then + echo "ERROR: Firewall verification failed - was able to reach https://example.com over IPv6" + exit 1 +fi + +echo "Firewall verification passed" diff --git a/vendor/codex/.devcontainer/post-start.sh b/vendor/codex/.devcontainer/post-start.sh new file mode 100644 index 00000000..fcc42ad1 --- /dev/null +++ b/vendor/codex/.devcontainer/post-start.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [ "${CODEX_ENABLE_FIREWALL:-1}" != "1" ]; then + echo "[devcontainer] Firewall mode: permissive (CODEX_ENABLE_FIREWALL=${CODEX_ENABLE_FIREWALL:-unset})." + exit 0 +fi + +echo "[devcontainer] Firewall mode: strict" + +domains_raw="${OPENAI_ALLOWED_DOMAINS:-api.openai.com}" +mapfile -t domains < <(printf '%s\n' "$domains_raw" | tr ', ' '\n\n' | sed '/^$/d' | sort -u) + +if [ "${#domains[@]}" -eq 0 ]; then + echo "[devcontainer] No allowed domains configured." + exit 1 +fi + +tmp_file="$(mktemp)" +for domain in "${domains[@]}"; do + if [[ ! "$domain" =~ ^[a-zA-Z0-9][a-zA-Z0-9.-]*\.[a-zA-Z]{2,}$ ]]; then + echo "[devcontainer] Invalid domain in OPENAI_ALLOWED_DOMAINS: $domain" + rm -f "$tmp_file" + exit 1 + fi + printf '%s\n' "$domain" >> "$tmp_file" +done + +sudo install -d -m 0755 /etc/codex +sudo cp "$tmp_file" /etc/codex/allowed_domains.txt +sudo chown root:root /etc/codex/allowed_domains.txt +sudo chmod 0444 /etc/codex/allowed_domains.txt +rm -f "$tmp_file" + +echo "[devcontainer] Applying firewall policy for domains: ${domains[*]}" +sudo --preserve-env=CODEX_INCLUDE_GITHUB_META_RANGES /usr/local/bin/init-firewall.sh diff --git a/vendor/codex/.devcontainer/post_install.py b/vendor/codex/.devcontainer/post_install.py new file mode 100644 index 00000000..205e57ce --- /dev/null +++ b/vendor/codex/.devcontainer/post_install.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python3 +"""Post-install configuration for the Codex devcontainer.""" + +from __future__ import annotations + +import os +import subprocess +import sys +from pathlib import Path + + +def ensure_history_files() -> None: + command_history_dir = Path("/commandhistory") + command_history_dir.mkdir(parents=True, exist_ok=True) + + for filename in (".bash_history", ".zsh_history"): + (command_history_dir / filename).touch(exist_ok=True) + + +def fix_directory_ownership() -> None: + uid = os.getuid() + gid = os.getgid() + + paths = [ + Path.home() / ".codex", + Path.home() / ".config" / "gh", + Path.home() / ".cargo", + Path.home() / ".rustup", + Path("/commandhistory"), + ] + + for path in paths: + if not path.exists(): + continue + + stat_info = path.stat() + if stat_info.st_uid == uid and stat_info.st_gid == gid: + continue + + try: + subprocess.run( + ["sudo", "chown", "-R", f"{uid}:{gid}", str(path)], + check=True, + capture_output=True, + text=True, + ) + print(f"[post_install] fixed ownership: {path}", file=sys.stderr) + except subprocess.CalledProcessError as err: + print( + f"[post_install] warning: could not fix ownership of {path}: {err.stderr.strip()}", + file=sys.stderr, + ) + + +def setup_git_config() -> None: + home = Path.home() + host_gitconfig = home / ".gitconfig" + local_gitconfig = home / ".gitconfig.local" + gitignore_global = home / ".gitignore_global" + + gitignore_global.write_text( + """# Codex +.codex/ + +# Rust +/target/ + +# Node +node_modules/ + +# Python +__pycache__/ +*.pyc + +# Editors +.vscode/ +.idea/ + +# macOS +.DS_Store +""", + encoding="utf-8", + ) + + include_line = ( + f"[include]\n path = {host_gitconfig}\n\n" if host_gitconfig.exists() else "" + ) + + local_gitconfig.write_text( + f"""# Container-local git configuration +{include_line}[core] + excludesfile = {gitignore_global} + +[merge] + conflictstyle = diff3 + +[diff] + colorMoved = default +""", + encoding="utf-8", + ) + + +def main() -> None: + print("[post_install] configuring devcontainer...", file=sys.stderr) + ensure_history_files() + fix_directory_ownership() + setup_git_config() + print("[post_install] complete", file=sys.stderr) + + +if __name__ == "__main__": + main() diff --git a/vendor/codex/.gitattributes b/vendor/codex/.gitattributes new file mode 100644 index 00000000..0f1c1b41 --- /dev/null +++ b/vendor/codex/.gitattributes @@ -0,0 +1 @@ +codex-rs/app-server-protocol/schema/** linguist-generated diff --git a/vendor/codex/.github/CODEOWNERS b/vendor/codex/.github/CODEOWNERS new file mode 100644 index 00000000..190bc00e --- /dev/null +++ b/vendor/codex/.github/CODEOWNERS @@ -0,0 +1,5 @@ +# Core crate ownership. +/codex-rs/core/ @openai/codex-core-agent-team + +# Keep ownership changes reviewed by the same team. +/.github/CODEOWNERS @openai/codex-core-agent-team diff --git a/vendor/codex/.github/ISSUE_TEMPLATE/1-codex-app.yml b/vendor/codex/.github/ISSUE_TEMPLATE/1-codex-app.yml new file mode 100644 index 00000000..6e294ee2 --- /dev/null +++ b/vendor/codex/.github/ISSUE_TEMPLATE/1-codex-app.yml @@ -0,0 +1,54 @@ +name: 🖥️ Codex App Bug +description: Report an issue with the Codex App +labels: + - app +body: + - type: markdown + attributes: + value: | + Before submitting a new issue, please search for existing issues to see if your issue has already been reported. + If it has, please add a 👍 reaction (no need to leave a comment) to the existing issue instead of creating a new one. + + - type: input + id: version + attributes: + label: What version of the Codex App are you using (From “About Codex” dialog)? + validations: + required: true + - type: input + id: plan + attributes: + label: What subscription do you have? + validations: + required: true + - type: input + id: platform + attributes: + label: What platform is your computer? + description: | + For macOS and Linux: copy the output of `uname -mprs` + For Windows: copy the output of `"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"` in the PowerShell console + - type: textarea + id: actual + attributes: + label: What issue are you seeing? + description: Please include the full error messages and prompts with PII redacted. If possible, please provide text instead of a screenshot. + validations: + required: true + - type: textarea + id: steps + attributes: + label: What steps can reproduce the bug? + description: Explain the bug and provide a code snippet that can reproduce it. Please include session id, token limit usage, context window usage if applicable. + validations: + required: true + - type: textarea + id: expected + attributes: + label: What is the expected behavior? + description: If possible, please provide text instead of a screenshot. + - type: textarea + id: notes + attributes: + label: Additional information + description: Is there anything else you think we should know? diff --git a/vendor/codex/.github/ISSUE_TEMPLATE/2-extension.yml b/vendor/codex/.github/ISSUE_TEMPLATE/2-extension.yml new file mode 100644 index 00000000..599bc08b --- /dev/null +++ b/vendor/codex/.github/ISSUE_TEMPLATE/2-extension.yml @@ -0,0 +1,61 @@ +name: 🧑‍💻 IDE Extension Bug +description: Report an issue with the IDE extension +labels: + - extension +body: + - type: markdown + attributes: + value: | + Before submitting a new issue, please search for existing issues to see if your issue has already been reported. + If it has, please add a 👍 reaction (no need to leave a comment) to the existing issue instead of creating a new one. + + - type: input + id: version + attributes: + label: What version of the IDE extension are you using? + validations: + required: true + - type: input + id: plan + attributes: + label: What subscription do you have? + validations: + required: true + - type: input + id: ide + attributes: + label: Which IDE are you using? + description: Like `VS Code`, `Cursor`, `Windsurf`, etc. + validations: + required: true + - type: input + id: platform + attributes: + label: What platform is your computer? + description: | + For macOS and Linux: copy the output of `uname -mprs` + For Windows: copy the output of `"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"` in the PowerShell console + - type: textarea + id: actual + attributes: + label: What issue are you seeing? + description: Please include the full error messages and prompts with PII redacted. If possible, please provide text instead of a screenshot. + validations: + required: true + - type: textarea + id: steps + attributes: + label: What steps can reproduce the bug? + description: Explain the bug and provide a code snippet that can reproduce it. + validations: + required: true + - type: textarea + id: expected + attributes: + label: What is the expected behavior? + description: If possible, please provide text instead of a screenshot. + - type: textarea + id: notes + attributes: + label: Additional information + description: Is there anything else you think we should know? diff --git a/vendor/codex/.github/ISSUE_TEMPLATE/3-cli.yml b/vendor/codex/.github/ISSUE_TEMPLATE/3-cli.yml new file mode 100644 index 00000000..4aff813e --- /dev/null +++ b/vendor/codex/.github/ISSUE_TEMPLATE/3-cli.yml @@ -0,0 +1,70 @@ +name: 💻 CLI Bug +description: Report an issue in the Codex CLI +labels: + - bug + - needs triage +body: + - type: markdown + attributes: + value: | + Before submitting a new issue, please search for existing issues to see if your issue has already been reported. + If it has, please add a 👍 reaction (no need to leave a comment) to the existing issue instead of creating a new one. + + Make sure you are running the [latest](https://npmjs.com/package/@openai/codex) version of Codex CLI. The bug you are experiencing may already have been fixed. + + - type: input + id: version + attributes: + label: What version of Codex CLI is running? + description: use `codex --version` + validations: + required: true + - type: input + id: plan + attributes: + label: What subscription do you have? + validations: + required: true + - type: input + id: model + attributes: + label: Which model were you using? + description: Like `gpt-5.2`, `gpt-5.2-codex`, etc. + - type: input + id: platform + attributes: + label: What platform is your computer? + description: | + For macOS and Linux: copy the output of `uname -mprs` + For Windows: copy the output of `"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"` in the PowerShell console + - type: input + id: terminal + attributes: + label: What terminal emulator and version are you using (if applicable)? + description: Also note any multiplexer in use (screen / tmux / zellij) + description: | + E.g, VSCode, Terminal.app, iTerm2, Ghostty, Windows Terminal (WSL / PowerShell) + - type: textarea + id: actual + attributes: + label: What issue are you seeing? + description: Please include the full error messages and prompts with PII redacted. If possible, please provide text instead of a screenshot. + validations: + required: true + - type: textarea + id: steps + attributes: + label: What steps can reproduce the bug? + description: Explain the bug and provide a code snippet that can reproduce it. Please include thread id if applicable. + validations: + required: true + - type: textarea + id: expected + attributes: + label: What is the expected behavior? + description: If possible, please provide text instead of a screenshot. + - type: textarea + id: notes + attributes: + label: Additional information + description: Is there anything else you think we should know? diff --git a/vendor/codex/.github/ISSUE_TEMPLATE/4-bug-report.yml b/vendor/codex/.github/ISSUE_TEMPLATE/4-bug-report.yml new file mode 100644 index 00000000..4de88414 --- /dev/null +++ b/vendor/codex/.github/ISSUE_TEMPLATE/4-bug-report.yml @@ -0,0 +1,37 @@ +name: 🪲 Other Bug +description: Report an issue in Codex Web, integrations, or other Codex components +labels: + - bug +body: + - type: markdown + attributes: + value: | + Before submitting a new issue, please search for existing issues to see if your issue has already been reported. + If it has, please add a 👍 reaction (no need to leave a comment) to the existing issue instead of creating a new one. + + If you need help or support using Codex and are not reporting a bug, please post on [codex/discussions](https://github.com/openai/codex/discussions), where you can ask questions or engage with others on ideas for how to improve codex. + + - type: textarea + id: actual + attributes: + label: What issue are you seeing? + description: Please include the full error messages and prompts with PII redacted. If possible, please provide text instead of a screenshot. + validations: + required: true + - type: textarea + id: steps + attributes: + label: What steps can reproduce the bug? + description: Explain the bug and provide a code snippet that can reproduce it. + validations: + required: true + - type: textarea + id: expected + attributes: + label: What is the expected behavior? + description: If possible, please provide text instead of a screenshot. + - type: textarea + id: notes + attributes: + label: Additional information + description: Is there anything else you think we should know? diff --git a/vendor/codex/.github/ISSUE_TEMPLATE/5-feature-request.yml b/vendor/codex/.github/ISSUE_TEMPLATE/5-feature-request.yml new file mode 100644 index 00000000..55ff9fbb --- /dev/null +++ b/vendor/codex/.github/ISSUE_TEMPLATE/5-feature-request.yml @@ -0,0 +1,32 @@ +name: 🎁 Feature Request +description: Propose a new feature for Codex +labels: + - enhancement +body: + - type: markdown + attributes: + value: | + Is Codex missing a feature that you'd like to see? Feel free to propose it here. + + Before you submit a feature: + 1. Search existing issues for similar features. If you find one, 👍 it rather than opening a new one. + 2. The Codex team will try to balance the varying needs of the community when prioritizing or rejecting new features. Not all features will be accepted. See [Contributing](https://github.com/openai/codex#contributing) for more details. + + - type: input + id: variant + attributes: + label: What variant of Codex are you using? + description: (e.g., App, IDE Extension, CLI, Web) + validations: + required: true + - type: textarea + id: feature + attributes: + label: What feature would you like to see? + validations: + required: true + - type: textarea + id: notes + attributes: + label: Additional information + description: Is there anything else you think we should know? diff --git a/vendor/codex/.github/ISSUE_TEMPLATE/6-docs-issue.yml b/vendor/codex/.github/ISSUE_TEMPLATE/6-docs-issue.yml new file mode 100644 index 00000000..456602e6 --- /dev/null +++ b/vendor/codex/.github/ISSUE_TEMPLATE/6-docs-issue.yml @@ -0,0 +1,27 @@ +name: 📗 Documentation Issue +description: Tell us if there is missing or incorrect documentation +labels: [docs] +body: + - type: markdown + attributes: + value: | + Thank you for submitting a documentation request. It helps make Codex better. + - type: dropdown + attributes: + label: What is the type of issue? + multiple: true + options: + - Documentation is missing + - Documentation is incorrect + - Documentation is confusing + - Example code is not working + - Something else + - type: textarea + attributes: + label: What is the issue? + validations: + required: true + - type: textarea + attributes: + label: Where did you find it? + description: If possible, please provide the URL(s) where you found this issue. \ No newline at end of file diff --git a/vendor/codex/.github/actions/linux-code-sign/action.yml b/vendor/codex/.github/actions/linux-code-sign/action.yml new file mode 100644 index 00000000..12e52118 --- /dev/null +++ b/vendor/codex/.github/actions/linux-code-sign/action.yml @@ -0,0 +1,45 @@ +name: linux-code-sign +description: Sign Linux artifacts with cosign. +inputs: + target: + description: Target triple for the artifacts to sign. + required: true + artifacts-dir: + description: Absolute path to the directory containing built binaries to sign. + required: true + +runs: + using: composite + steps: + - name: Install cosign + uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0 + + - name: Cosign Linux artifacts + shell: bash + env: + ARTIFACTS_DIR: ${{ inputs.artifacts-dir }} + COSIGN_EXPERIMENTAL: "1" + COSIGN_YES: "true" + COSIGN_OIDC_CLIENT_ID: "sigstore" + COSIGN_OIDC_ISSUER: "https://oauth2.sigstore.dev/auth" + run: | + set -euo pipefail + + dest="$ARTIFACTS_DIR" + if [[ ! -d "$dest" ]]; then + echo "Destination $dest does not exist" + exit 1 + fi + + for binary in codex codex-responses-api-proxy; do + artifact="${dest}/${binary}" + if [[ ! -f "$artifact" ]]; then + echo "Binary $artifact not found" + exit 1 + fi + + cosign sign-blob \ + --yes \ + --bundle "${artifact}.sigstore" \ + "$artifact" + done diff --git a/vendor/codex/.github/actions/macos-code-sign/action.yml b/vendor/codex/.github/actions/macos-code-sign/action.yml new file mode 100644 index 00000000..200b2390 --- /dev/null +++ b/vendor/codex/.github/actions/macos-code-sign/action.yml @@ -0,0 +1,253 @@ +name: macos-code-sign +description: Configure, sign, notarize, and clean up macOS code signing artifacts. +inputs: + target: + description: Rust compilation target triple (e.g. aarch64-apple-darwin). + required: true + sign-binaries: + description: Whether to sign and notarize the macOS binaries. + required: false + default: "true" + sign-dmg: + description: Whether to sign and notarize the macOS dmg. + required: false + default: "true" + apple-certificate: + description: Base64-encoded Apple signing certificate (P12). + required: true + apple-certificate-password: + description: Password for the signing certificate. + required: true + apple-notarization-key-p8: + description: Base64-encoded Apple notarization key (P8). + required: true + apple-notarization-key-id: + description: Apple notarization key ID. + required: true + apple-notarization-issuer-id: + description: Apple notarization issuer ID. + required: true +runs: + using: composite + steps: + - name: Configure Apple code signing + shell: bash + env: + KEYCHAIN_PASSWORD: actions + APPLE_CERTIFICATE: ${{ inputs.apple-certificate }} + APPLE_CERTIFICATE_PASSWORD: ${{ inputs.apple-certificate-password }} + run: | + set -euo pipefail + + if [[ -z "${APPLE_CERTIFICATE:-}" ]]; then + echo "APPLE_CERTIFICATE is required for macOS signing" + exit 1 + fi + + if [[ -z "${APPLE_CERTIFICATE_PASSWORD:-}" ]]; then + echo "APPLE_CERTIFICATE_PASSWORD is required for macOS signing" + exit 1 + fi + + cert_path="${RUNNER_TEMP}/apple_signing_certificate.p12" + echo "$APPLE_CERTIFICATE" | base64 -d > "$cert_path" + + keychain_path="${RUNNER_TEMP}/codex-signing.keychain-db" + security create-keychain -p "$KEYCHAIN_PASSWORD" "$keychain_path" + security set-keychain-settings -lut 21600 "$keychain_path" + security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$keychain_path" + + keychain_args=() + cleanup_keychain() { + if ((${#keychain_args[@]} > 0)); then + security list-keychains -s "${keychain_args[@]}" || true + security default-keychain -s "${keychain_args[0]}" || true + else + security list-keychains -s || true + fi + if [[ -f "$keychain_path" ]]; then + security delete-keychain "$keychain_path" || true + fi + } + + while IFS= read -r keychain; do + [[ -n "$keychain" ]] && keychain_args+=("$keychain") + done < <(security list-keychains | sed 's/^[[:space:]]*//;s/[[:space:]]*$//;s/"//g') + + if ((${#keychain_args[@]} > 0)); then + security list-keychains -s "$keychain_path" "${keychain_args[@]}" + else + security list-keychains -s "$keychain_path" + fi + + security default-keychain -s "$keychain_path" + security import "$cert_path" -k "$keychain_path" -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security + security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" "$keychain_path" > /dev/null + + codesign_hashes=() + while IFS= read -r hash; do + [[ -n "$hash" ]] && codesign_hashes+=("$hash") + done < <(security find-identity -v -p codesigning "$keychain_path" \ + | sed -n 's/.*\([0-9A-F]\{40\}\).*/\1/p' \ + | sort -u) + + if ((${#codesign_hashes[@]} == 0)); then + echo "No signing identities found in $keychain_path" + cleanup_keychain + rm -f "$cert_path" + exit 1 + fi + + if ((${#codesign_hashes[@]} > 1)); then + echo "Multiple signing identities found in $keychain_path:" + printf ' %s\n' "${codesign_hashes[@]}" + cleanup_keychain + rm -f "$cert_path" + exit 1 + fi + + APPLE_CODESIGN_IDENTITY="${codesign_hashes[0]}" + + rm -f "$cert_path" + + echo "APPLE_CODESIGN_IDENTITY=$APPLE_CODESIGN_IDENTITY" >> "$GITHUB_ENV" + echo "APPLE_CODESIGN_KEYCHAIN=$keychain_path" >> "$GITHUB_ENV" + echo "::add-mask::$APPLE_CODESIGN_IDENTITY" + + - name: Sign macOS binaries + if: ${{ inputs.sign-binaries == 'true' }} + shell: bash + env: + TARGET: ${{ inputs.target }} + run: | + set -euo pipefail + + if [[ -z "${APPLE_CODESIGN_IDENTITY:-}" ]]; then + echo "APPLE_CODESIGN_IDENTITY is required for macOS signing" + exit 1 + fi + + keychain_args=() + if [[ -n "${APPLE_CODESIGN_KEYCHAIN:-}" && -f "${APPLE_CODESIGN_KEYCHAIN}" ]]; then + keychain_args+=(--keychain "${APPLE_CODESIGN_KEYCHAIN}") + fi + + entitlements_path="$GITHUB_ACTION_PATH/codex.entitlements.plist" + + for binary in codex codex-responses-api-proxy; do + path="codex-rs/target/${TARGET}/release/${binary}" + codesign --force --options runtime --timestamp --entitlements "$entitlements_path" --sign "$APPLE_CODESIGN_IDENTITY" "${keychain_args[@]}" "$path" + done + + - name: Notarize macOS binaries + if: ${{ inputs.sign-binaries == 'true' }} + shell: bash + env: + TARGET: ${{ inputs.target }} + APPLE_NOTARIZATION_KEY_P8: ${{ inputs.apple-notarization-key-p8 }} + APPLE_NOTARIZATION_KEY_ID: ${{ inputs.apple-notarization-key-id }} + APPLE_NOTARIZATION_ISSUER_ID: ${{ inputs.apple-notarization-issuer-id }} + run: | + set -euo pipefail + + for var in APPLE_NOTARIZATION_KEY_P8 APPLE_NOTARIZATION_KEY_ID APPLE_NOTARIZATION_ISSUER_ID; do + if [[ -z "${!var:-}" ]]; then + echo "$var is required for notarization" + exit 1 + fi + done + + notary_key_path="${RUNNER_TEMP}/notarytool.key.p8" + echo "$APPLE_NOTARIZATION_KEY_P8" | base64 -d > "$notary_key_path" + cleanup_notary() { + rm -f "$notary_key_path" + } + trap cleanup_notary EXIT + + source "$GITHUB_ACTION_PATH/notary_helpers.sh" + + notarize_binary() { + local binary="$1" + local source_path="codex-rs/target/${TARGET}/release/${binary}" + local archive_path="${RUNNER_TEMP}/${binary}.zip" + + if [[ ! -f "$source_path" ]]; then + echo "Binary $source_path not found" + exit 1 + fi + + rm -f "$archive_path" + ditto -c -k --keepParent "$source_path" "$archive_path" + + notarize_submission "$binary" "$archive_path" "$notary_key_path" + } + + notarize_binary "codex" + notarize_binary "codex-responses-api-proxy" + + - name: Sign and notarize macOS dmg + if: ${{ inputs.sign-dmg == 'true' }} + shell: bash + env: + TARGET: ${{ inputs.target }} + APPLE_NOTARIZATION_KEY_P8: ${{ inputs.apple-notarization-key-p8 }} + APPLE_NOTARIZATION_KEY_ID: ${{ inputs.apple-notarization-key-id }} + APPLE_NOTARIZATION_ISSUER_ID: ${{ inputs.apple-notarization-issuer-id }} + run: | + set -euo pipefail + + for var in APPLE_CODESIGN_IDENTITY APPLE_NOTARIZATION_KEY_P8 APPLE_NOTARIZATION_KEY_ID APPLE_NOTARIZATION_ISSUER_ID; do + if [[ -z "${!var:-}" ]]; then + echo "$var is required" + exit 1 + fi + done + + notary_key_path="${RUNNER_TEMP}/notarytool.key.p8" + echo "$APPLE_NOTARIZATION_KEY_P8" | base64 -d > "$notary_key_path" + cleanup_notary() { + rm -f "$notary_key_path" + } + trap cleanup_notary EXIT + + source "$GITHUB_ACTION_PATH/notary_helpers.sh" + + dmg_name="codex-${TARGET}.dmg" + dmg_path="codex-rs/target/${TARGET}/release/${dmg_name}" + + if [[ ! -f "$dmg_path" ]]; then + echo "dmg $dmg_path not found" + exit 1 + fi + + keychain_args=() + if [[ -n "${APPLE_CODESIGN_KEYCHAIN:-}" && -f "${APPLE_CODESIGN_KEYCHAIN}" ]]; then + keychain_args+=(--keychain "${APPLE_CODESIGN_KEYCHAIN}") + fi + + codesign --force --timestamp --sign "$APPLE_CODESIGN_IDENTITY" "${keychain_args[@]}" "$dmg_path" + notarize_submission "$dmg_name" "$dmg_path" "$notary_key_path" + xcrun stapler staple "$dmg_path" + + - name: Remove signing keychain + if: ${{ always() }} + shell: bash + env: + APPLE_CODESIGN_KEYCHAIN: ${{ env.APPLE_CODESIGN_KEYCHAIN }} + run: | + set -euo pipefail + if [[ -n "${APPLE_CODESIGN_KEYCHAIN:-}" ]]; then + keychain_args=() + while IFS= read -r keychain; do + [[ "$keychain" == "$APPLE_CODESIGN_KEYCHAIN" ]] && continue + [[ -n "$keychain" ]] && keychain_args+=("$keychain") + done < <(security list-keychains | sed 's/^[[:space:]]*//;s/[[:space:]]*$//;s/"//g') + if ((${#keychain_args[@]} > 0)); then + security list-keychains -s "${keychain_args[@]}" + security default-keychain -s "${keychain_args[0]}" + fi + + if [[ -f "$APPLE_CODESIGN_KEYCHAIN" ]]; then + security delete-keychain "$APPLE_CODESIGN_KEYCHAIN" + fi + fi diff --git a/vendor/codex/.github/actions/macos-code-sign/codex.entitlements.plist b/vendor/codex/.github/actions/macos-code-sign/codex.entitlements.plist new file mode 100644 index 00000000..d35e43ae --- /dev/null +++ b/vendor/codex/.github/actions/macos-code-sign/codex.entitlements.plist @@ -0,0 +1,8 @@ + + + + + com.apple.security.cs.allow-jit + + + diff --git a/vendor/codex/.github/actions/macos-code-sign/notary_helpers.sh b/vendor/codex/.github/actions/macos-code-sign/notary_helpers.sh new file mode 100644 index 00000000..ad9757fe --- /dev/null +++ b/vendor/codex/.github/actions/macos-code-sign/notary_helpers.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +notarize_submission() { + local label="$1" + local path="$2" + local notary_key_path="$3" + + if [[ -z "${APPLE_NOTARIZATION_KEY_ID:-}" || -z "${APPLE_NOTARIZATION_ISSUER_ID:-}" ]]; then + echo "APPLE_NOTARIZATION_KEY_ID and APPLE_NOTARIZATION_ISSUER_ID are required for notarization" + exit 1 + fi + + if [[ -z "$notary_key_path" || ! -f "$notary_key_path" ]]; then + echo "Notary key file $notary_key_path not found" + exit 1 + fi + + if [[ ! -f "$path" ]]; then + echo "Notarization payload $path not found" + exit 1 + fi + + local submission_json + submission_json=$(xcrun notarytool submit "$path" \ + --key "$notary_key_path" \ + --key-id "$APPLE_NOTARIZATION_KEY_ID" \ + --issuer "$APPLE_NOTARIZATION_ISSUER_ID" \ + --output-format json \ + --wait) + + local status submission_id + status=$(printf '%s\n' "$submission_json" | jq -r '.status // "Unknown"') + submission_id=$(printf '%s\n' "$submission_json" | jq -r '.id // ""') + + if [[ -z "$submission_id" ]]; then + echo "Failed to retrieve submission ID for $label" + exit 1 + fi + + echo "::notice title=Notarization::$label submission ${submission_id} completed with status ${status}" + + if [[ "$status" != "Accepted" ]]; then + echo "Notarization failed for ${label} (submission ${submission_id}, status ${status})" + exit 1 + fi +} diff --git a/vendor/codex/.github/actions/prepare-bazel-ci/action.yml b/vendor/codex/.github/actions/prepare-bazel-ci/action.yml new file mode 100644 index 00000000..78f5aeb9 --- /dev/null +++ b/vendor/codex/.github/actions/prepare-bazel-ci/action.yml @@ -0,0 +1,64 @@ +name: prepare-bazel-ci +description: Prepare a Bazel CI job with shared setup, repository cache restore, and execution logs. +inputs: + target: + description: Target triple used for setup and cache namespacing. + required: true + cache-scope: + description: Logical namespace used to keep concurrent Bazel jobs from reserving the same repository cache key. + required: true + install-test-prereqs: + description: Install Node.js and DotSlash for Bazel-backed test jobs. + required: false + default: "false" +outputs: + repository-cache-path: + description: Filesystem path used for the Bazel repository cache. + value: ${{ steps.setup_bazel.outputs.repository-cache-path }} + repository-cache-key: + description: Primary actions/cache key for the Bazel repository cache. + value: ${{ steps.cache_bazel_repository_key.outputs.repository-cache-key }} + repository-cache-hit: + description: Whether the Bazel repository cache restore found an exact key match. + value: ${{ steps.cache_bazel_repository_restore.outputs.cache-hit }} + +runs: + using: composite + steps: + - name: Set up Bazel CI + id: setup_bazel + uses: ./.github/actions/setup-bazel-ci + with: + target: ${{ inputs.target }} + install-test-prereqs: ${{ inputs.install-test-prereqs }} + + - name: Compute bazel repository cache key + id: cache_bazel_repository_key + shell: bash + env: + CACHE_SCOPE: ${{ inputs.cache-scope }} + TARGET: ${{ inputs.target }} + CACHE_HASH: ${{ hashFiles('MODULE.bazel', 'codex-rs/Cargo.lock', 'codex-rs/Cargo.toml') }} + run: | + echo "repository-cache-key=bazel-cache-${CACHE_SCOPE}-${TARGET}-${CACHE_HASH}" >> "${GITHUB_OUTPUT}" + echo "repository-cache-restore-key=bazel-cache-${CACHE_SCOPE}-${TARGET}-" >> "${GITHUB_OUTPUT}" + + # Restore the Bazel repository cache explicitly so external dependencies + # do not need to be re-downloaded on every CI run. Keep restore failures + # non-fatal so transient cache-service errors degrade to a cold build + # instead of failing the job. + - name: Restore bazel repository cache + id: cache_bazel_repository_restore + continue-on-error: true + uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5 + with: + path: ${{ steps.setup_bazel.outputs.repository-cache-path }} + key: ${{ steps.cache_bazel_repository_key.outputs.repository-cache-key }} + restore-keys: | + ${{ steps.cache_bazel_repository_key.outputs.repository-cache-restore-key }} + + - name: Set up Bazel execution logs + shell: bash + run: | + mkdir -p "${RUNNER_TEMP}/bazel-execution-logs" + echo "CODEX_BAZEL_EXECUTION_LOG_COMPACT_DIR=${RUNNER_TEMP}/bazel-execution-logs" >> "${GITHUB_ENV}" diff --git a/vendor/codex/.github/actions/run-argument-comment-lint/action.yml b/vendor/codex/.github/actions/run-argument-comment-lint/action.yml new file mode 100644 index 00000000..80fb23d4 --- /dev/null +++ b/vendor/codex/.github/actions/run-argument-comment-lint/action.yml @@ -0,0 +1,54 @@ +name: Run argument comment lint +description: Run argument-comment-lint on codex-rs via Bazel. + +inputs: + target: + description: Runner target passed to setup-bazel-ci. + required: true + buildbuddy-api-key: + description: BuildBuddy API key used by Bazel CI. + required: false + default: "" + +runs: + using: composite + steps: + - uses: ./.github/actions/setup-bazel-ci + with: + target: ${{ inputs.target }} + install-test-prereqs: true + + - name: Install Linux sandbox build dependencies + if: ${{ runner.os == 'Linux' }} + shell: bash + run: | + sudo DEBIAN_FRONTEND=noninteractive apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends pkg-config libcap-dev + + - name: Run argument comment lint on codex-rs via Bazel + if: ${{ runner.os != 'Windows' }} + env: + BUILDBUDDY_API_KEY: ${{ inputs.buildbuddy-api-key }} + shell: bash + run: | + bazel_targets="$(./tools/argument-comment-lint/list-bazel-targets.sh)" + ./.github/scripts/run-bazel-ci.sh \ + -- \ + build \ + --config=argument-comment-lint \ + --keep_going \ + --build_metadata=COMMIT_SHA=${GITHUB_SHA} \ + -- \ + ${bazel_targets} + + - name: Run argument comment lint on codex-rs via Bazel + if: ${{ runner.os == 'Windows' }} + env: + BUILDBUDDY_API_KEY: ${{ inputs.buildbuddy-api-key }} + shell: bash + run: | + ./.github/scripts/run-argument-comment-lint-bazel.sh \ + --config=argument-comment-lint \ + --platforms=//:local_windows \ + --keep_going \ + --build_metadata=COMMIT_SHA=${GITHUB_SHA} diff --git a/vendor/codex/.github/actions/setup-bazel-ci/action.yml b/vendor/codex/.github/actions/setup-bazel-ci/action.yml new file mode 100644 index 00000000..7c605c60 --- /dev/null +++ b/vendor/codex/.github/actions/setup-bazel-ci/action.yml @@ -0,0 +1,128 @@ +name: setup-bazel-ci +description: Prepare a Bazel CI runner with shared caches and optional test prerequisites. +inputs: + target: + description: Target triple used for cache namespacing. + required: true + install-test-prereqs: + description: Install Node.js and DotSlash for Bazel-backed test jobs. + required: false + default: "false" +outputs: + repository-cache-path: + description: Filesystem path used for the Bazel repository cache. + value: ${{ steps.configure_bazel_repository_cache.outputs.repository-cache-path }} + +runs: + using: composite + steps: + - name: Set up Node.js for js_repl tests + if: inputs.install-test-prereqs == 'true' + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 + with: + node-version-file: codex-rs/node-version.txt + + # Some integration tests rely on DotSlash being installed. + # See https://github.com/openai/codex/pull/7617. + - name: Install DotSlash + if: inputs.install-test-prereqs == 'true' + uses: facebook/install-dotslash@1e4e7b3e07eaca387acb98f1d4720e0bee8dbb6a # v2 + + - name: Make DotSlash available in PATH (Unix) + if: inputs.install-test-prereqs == 'true' && runner.os != 'Windows' + shell: bash + run: cp "$(which dotslash)" /usr/local/bin + + - name: Make DotSlash available in PATH (Windows) + if: inputs.install-test-prereqs == 'true' && runner.os == 'Windows' + shell: pwsh + run: Copy-Item (Get-Command dotslash).Source -Destination "$env:LOCALAPPDATA\Microsoft\WindowsApps\dotslash.exe" + + - name: Set up Bazel + uses: bazelbuild/setup-bazelisk@b39c379c82683a5f25d34f0d062761f62693e0b2 # v3 + + - name: Configure Bazel repository cache + id: configure_bazel_repository_cache + shell: pwsh + run: | + # Keep the repository cache under HOME on all runners. Windows `D:\a` + # cache paths match `.bazelrc`, but `actions/cache/restore` currently + # returns HTTP 400 for that path in the Windows clippy job. + $repositoryCachePath = Join-Path $HOME '.cache/bazel-repo-cache' + "repository-cache-path=$repositoryCachePath" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append + "BAZEL_REPOSITORY_CACHE=$repositoryCachePath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + + - name: Configure Bazel output root (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + # Use the shortest available drive to reduce argv/path length issues, + # but avoid the drive root because some Windows test launchers mis-handle + # MANIFEST paths there. + $hasDDrive = Test-Path 'D:\' + $bazelOutputUserRoot = if ($hasDDrive) { 'D:\b' } else { 'C:\b' } + $repoContentsCache = Join-Path $env:RUNNER_TEMP "bazel-repo-contents-cache-$env:GITHUB_RUN_ID-$env:GITHUB_JOB" + "BAZEL_OUTPUT_USER_ROOT=$bazelOutputUserRoot" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + "BAZEL_REPO_CONTENTS_CACHE=$repoContentsCache" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + + - name: Expose MSVC SDK environment (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + # Bazel exec-side Rust build scripts do not reliably inherit the MSVC developer + # shell on GitHub-hosted Windows runners, so discover the latest VS install and + # ask `VsDevCmd.bat` to materialize the x64/x64 compiler + SDK environment. + $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + if (-not (Test-Path $vswhere)) { + throw "vswhere.exe not found" + } + + $installPath = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath 2>$null + if (-not $installPath) { + throw "Could not locate a Visual Studio installation with VC tools" + } + + $vsDevCmd = Join-Path $installPath 'Common7\Tools\VsDevCmd.bat' + if (-not (Test-Path $vsDevCmd)) { + throw "VsDevCmd.bat not found at $vsDevCmd" + } + + # Keep the export surface explicit: these are the paths and SDK roots that the + # MSVC toolchain probes need later when Bazel runs Windows exec-platform build + # scripts such as `aws-lc-sys`. + $varsToExport = @( + 'INCLUDE', + 'LIB', + 'LIBPATH', + 'PATH', + 'UCRTVersion', + 'UniversalCRTSdkDir', + 'VCINSTALLDIR', + 'VCToolsInstallDir', + 'WindowsLibPath', + 'WindowsSdkBinPath', + 'WindowsSdkDir', + 'WindowsSDKLibVersion', + 'WindowsSDKVersion' + ) + + # `VsDevCmd.bat` is a batch file, so invoke it under `cmd.exe`, suppress its + # banner, then dump the resulting environment with `set`. Re-export only the + # approved keys into `GITHUB_ENV` so later steps inherit the same MSVC context. + $envLines = & cmd.exe /c ('"{0}" -no_logo -arch=x64 -host_arch=x64 >nul && set' -f $vsDevCmd) + foreach ($line in $envLines) { + if ($line -notmatch '^(.*?)=(.*)$') { + continue + } + + $name = $matches[1] + $value = $matches[2] + if ($varsToExport -contains $name) { + "$name=$value" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + } + } + + - name: Enable Git long paths (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: git config --global core.longpaths true diff --git a/vendor/codex/.github/actions/setup-rusty-v8-musl/action.yml b/vendor/codex/.github/actions/setup-rusty-v8-musl/action.yml new file mode 100644 index 00000000..871c73a2 --- /dev/null +++ b/vendor/codex/.github/actions/setup-rusty-v8-musl/action.yml @@ -0,0 +1,49 @@ +name: setup-rusty-v8-musl +description: Download and verify musl rusty_v8 artifacts for Cargo builds. +inputs: + target: + description: Rust musl target triple. + required: true + +runs: + using: composite + steps: + - name: Configure musl rusty_v8 artifact overrides and verify checksums + shell: bash + env: + TARGET: ${{ inputs.target }} + run: | + set -euo pipefail + + case "${TARGET}" in + x86_64-unknown-linux-musl|aarch64-unknown-linux-musl) + ;; + *) + echo "Unsupported musl rusty_v8 target: ${TARGET}" >&2 + exit 1 + ;; + esac + + version="$(python3 "${GITHUB_WORKSPACE}/.github/scripts/rusty_v8_bazel.py" resolved-v8-crate-version)" + release_tag="rusty-v8-v${version}" + base_url="https://github.com/openai/codex/releases/download/${release_tag}" + binding_dir="${RUNNER_TEMP}/rusty_v8" + archive_path="${binding_dir}/librusty_v8_release_${TARGET}.a.gz" + binding_path="${binding_dir}/src_binding_release_${TARGET}.rs" + checksums_path="${binding_dir}/rusty_v8_release_${TARGET}.sha256" + checksums_source="${GITHUB_WORKSPACE}/third_party/v8/rusty_v8_${version//./_}.sha256" + + mkdir -p "${binding_dir}" + curl -fsSL "${base_url}/librusty_v8_release_${TARGET}.a.gz" -o "${archive_path}" + curl -fsSL "${base_url}/src_binding_release_${TARGET}.rs" -o "${binding_path}" + grep -E " (librusty_v8_release_${TARGET}[.]a[.]gz|src_binding_release_${TARGET}[.]rs)$" \ + "${checksums_source}" > "${checksums_path}" + + if [[ "$(wc -l < "${checksums_path}")" -ne 2 ]]; then + echo "Expected exactly two checksums for ${TARGET} in ${checksums_source}" >&2 + exit 1 + fi + + (cd "${binding_dir}" && sha256sum -c "${checksums_path}") + echo "RUSTY_V8_ARCHIVE=${archive_path}" >> "${GITHUB_ENV}" + echo "RUSTY_V8_SRC_BINDING_PATH=${binding_path}" >> "${GITHUB_ENV}" diff --git a/vendor/codex/.github/actions/windows-code-sign/action.yml b/vendor/codex/.github/actions/windows-code-sign/action.yml new file mode 100644 index 00000000..b79c790f --- /dev/null +++ b/vendor/codex/.github/actions/windows-code-sign/action.yml @@ -0,0 +1,57 @@ +name: windows-code-sign +description: Sign Windows binaries with Azure Trusted Signing. +inputs: + target: + description: Target triple for the artifacts to sign. + required: true + client-id: + description: Azure Trusted Signing client ID. + required: true + tenant-id: + description: Azure tenant ID for Trusted Signing. + required: true + subscription-id: + description: Azure subscription ID for Trusted Signing. + required: true + endpoint: + description: Azure Trusted Signing endpoint. + required: true + account-name: + description: Azure Trusted Signing account name. + required: true + certificate-profile-name: + description: Certificate profile name for signing. + required: true + +runs: + using: composite + steps: + - name: Azure login for Trusted Signing (OIDC) + uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2 + with: + client-id: ${{ inputs.client-id }} + tenant-id: ${{ inputs.tenant-id }} + subscription-id: ${{ inputs.subscription-id }} + + - name: Sign Windows binaries with Azure Trusted Signing + uses: azure/trusted-signing-action@1d365fec12862c4aa68fcac418143d73f0cea293 # v0 + with: + endpoint: ${{ inputs.endpoint }} + trusted-signing-account-name: ${{ inputs.account-name }} + certificate-profile-name: ${{ inputs.certificate-profile-name }} + exclude-environment-credential: true + exclude-workload-identity-credential: true + exclude-managed-identity-credential: true + exclude-shared-token-cache-credential: true + exclude-visual-studio-credential: true + exclude-visual-studio-code-credential: true + exclude-azure-cli-credential: false + exclude-azure-powershell-credential: true + exclude-azure-developer-cli-credential: true + exclude-interactive-browser-credential: true + cache-dependencies: false + files: | + ${{ github.workspace }}/codex-rs/target/${{ inputs.target }}/release/codex.exe + ${{ github.workspace }}/codex-rs/target/${{ inputs.target }}/release/codex-responses-api-proxy.exe + ${{ github.workspace }}/codex-rs/target/${{ inputs.target }}/release/codex-windows-sandbox-setup.exe + ${{ github.workspace }}/codex-rs/target/${{ inputs.target }}/release/codex-command-runner.exe diff --git a/vendor/codex/.github/blob-size-allowlist.txt b/vendor/codex/.github/blob-size-allowlist.txt new file mode 100644 index 00000000..9375b49c --- /dev/null +++ b/vendor/codex/.github/blob-size-allowlist.txt @@ -0,0 +1,10 @@ +# Paths are matched exactly, relative to the repository root. +# Keep this list short and limited to intentional large checked-in assets. + +.github/codex-cli-splash.png +MODULE.bazel.lock +codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json +codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json +codex-rs/tui/tests/fixtures/oss-story.jsonl +codex-rs/tui_app_server/tests/fixtures/oss-story.jsonl +codex-rs/tui/src/app.rs diff --git a/vendor/codex/.github/codex-cli-splash.png b/vendor/codex/.github/codex-cli-splash.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f50e55bd2fb212496fb874718ab1eee82add11 GIT binary patch literal 838131 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