From afd89b95ced64cfb2c82c1c1a365a829e658c98a Mon Sep 17 00:00:00 2001 From: Michael Bolin Date: Fri, 20 Feb 2026 23:20:54 -0800 Subject: [PATCH] chore: eliminate re-exports in codex-rs/core/src/lib.rs --- codex-rs/Cargo.lock | 11 +- .../schema/json/ApplyPatchApprovalParams.json | 2 +- .../json/ExecCommandApprovalParams.json | 2 +- .../schema/json/ServerRequest.json | 4 +- .../codex_app_server_protocol.schemas.json | 4 +- .../typescript/ApplyPatchApprovalParams.ts | 4 +- .../typescript/ExecCommandApprovalParams.ts | 4 +- .../app-server-protocol/src/protocol/v1.rs | 8 +- codex-rs/app-server/Cargo.toml | 1 + .../app-server/src/bespoke_event_handling.rs | 46 +++--- .../app-server/src/codex_message_processor.rs | 14 +- .../suite/codex_message_processor_flow.rs | 8 +- codex-rs/app-server/tests/suite/config.rs | 2 +- .../app-server/tests/suite/fork_thread.rs | 2 +- codex-rs/app-server/tests/suite/interrupt.rs | 2 +- .../app-server/tests/suite/list_resume.rs | 2 +- .../app-server/tests/suite/output_schema.rs | 4 +- codex-rs/app-server/tests/suite/v2/review.rs | 2 +- .../app-server/tests/suite/v2/turn_start.rs | 2 +- .../tests/suite/v2/turn_start_zsh_fork.rs | 4 +- codex-rs/cli/src/main.rs | 4 +- codex-rs/cli/src/mcp_cmd.rs | 2 +- codex-rs/core/src/lib.rs | 23 +-- codex-rs/core/tests/common/lib.rs | 13 +- codex-rs/core/tests/common/test_codex.rs | 10 +- codex-rs/core/tests/responses_headers.rs | 4 +- codex-rs/core/tests/suite/abort_tasks.rs | 4 +- codex-rs/core/tests/suite/apply_patch_cli.rs | 8 +- codex-rs/core/tests/suite/approvals.rs | 14 +- codex-rs/core/tests/suite/cli_stream.rs | 2 +- codex-rs/core/tests/suite/client.rs | 16 +- .../core/tests/suite/client_websockets.rs | 10 +- codex-rs/core/tests/suite/codex_delegate.rs | 14 +- .../tests/suite/collaboration_instructions.rs | 8 +- codex-rs/core/tests/suite/compact.rs | 18 +-- codex-rs/core/tests/suite/compact_remote.rs | 12 +- .../core/tests/suite/compact_resume_fork.rs | 6 +- .../core/tests/suite/deprecation_notice.rs | 4 +- codex-rs/core/tests/suite/exec.rs | 2 +- codex-rs/core/tests/suite/exec_policy.rs | 8 +- codex-rs/core/tests/suite/fork_thread.rs | 8 +- codex-rs/core/tests/suite/image_rollout.rs | 12 +- codex-rs/core/tests/suite/items.rs | 20 +-- codex-rs/core/tests/suite/json_result.rs | 8 +- codex-rs/core/tests/suite/live_reload.rs | 8 +- codex-rs/core/tests/suite/model_overrides.rs | 4 +- codex-rs/core/tests/suite/model_switching.rs | 8 +- .../core/tests/suite/model_visible_layout.rs | 8 +- codex-rs/core/tests/suite/models_cache_ttl.rs | 8 +- .../core/tests/suite/models_etag_responses.rs | 8 +- codex-rs/core/tests/suite/override_updates.rs | 16 +- codex-rs/core/tests/suite/pending_input.rs | 4 +- .../core/tests/suite/permissions_messages.rs | 8 +- codex-rs/core/tests/suite/personality.rs | 8 +- codex-rs/core/tests/suite/prompt_caching.rs | 12 +- codex-rs/core/tests/suite/quota_exceeded.rs | 4 +- .../core/tests/suite/realtime_conversation.rs | 20 +-- codex-rs/core/tests/suite/remote_models.rs | 10 +- .../core/tests/suite/request_compression.rs | 4 +- .../core/tests/suite/request_user_input.rs | 8 +- codex-rs/core/tests/suite/resume.rs | 4 +- codex-rs/core/tests/suite/resume_warning.rs | 18 +-- codex-rs/core/tests/suite/review.rs | 28 ++-- codex-rs/core/tests/suite/rmcp_client.rs | 12 +- .../core/tests/suite/rollout_list_find.rs | 2 +- .../tests/suite/safety_check_downgrade.rs | 10 +- codex-rs/core/tests/suite/search_tool.rs | 8 +- codex-rs/core/tests/suite/seatbelt.rs | 2 +- .../core/tests/suite/shell_serialization.rs | 2 +- codex-rs/core/tests/suite/shell_snapshot.rs | 12 +- codex-rs/core/tests/suite/skills.rs | 16 +- .../suite/stream_error_allows_next_turn.rs | 4 +- .../core/tests/suite/stream_no_completed.rs | 4 +- codex-rs/core/tests/suite/tool_harness.rs | 8 +- codex-rs/core/tests/suite/tool_parallelism.rs | 8 +- codex-rs/core/tests/suite/tools.rs | 4 +- codex-rs/core/tests/suite/truncation.rs | 8 +- codex-rs/core/tests/suite/undo.rs | 6 +- codex-rs/core/tests/suite/unified_exec.rs | 10 +- .../tests/suite/unstable_features_warning.rs | 6 +- .../core/tests/suite/user_notification.rs | 4 +- codex-rs/core/tests/suite/user_shell_cmd.rs | 16 +- codex-rs/core/tests/suite/view_image.rs | 8 +- codex-rs/core/tests/suite/web_search.rs | 2 +- .../core/tests/suite/websocket_fallback.rs | 8 +- codex-rs/exec-server/Cargo.toml | 3 + codex-rs/exec-server/src/posix.rs | 2 +- .../exec-server/src/posix/escalate_server.rs | 2 +- codex-rs/exec-server/src/posix/mcp.rs | 2 +- codex-rs/exec-server/tests/common/Cargo.toml | 1 + codex-rs/exec-server/tests/common/lib.rs | 2 +- codex-rs/exec/src/event_processor.rs | 4 +- .../src/event_processor_with_human_output.rs | 76 +++++----- .../src/event_processor_with_jsonl_output.rs | 22 +-- codex-rs/exec/src/lib.rs | 16 +- .../tests/event_processor_with_json_output.rs | 72 ++++----- codex-rs/exec/tests/suite/sandbox.rs | 2 +- codex-rs/linux-sandbox/Cargo.toml | 1 + codex-rs/linux-sandbox/src/bwrap.rs | 6 +- codex-rs/linux-sandbox/src/landlock.rs | 4 +- codex-rs/linux-sandbox/src/linux_run_main.rs | 14 +- .../linux-sandbox/tests/suite/landlock.rs | 4 +- codex-rs/mcp-server/Cargo.toml | 1 + codex-rs/mcp-server/src/codex_tool_config.rs | 2 +- codex-rs/mcp-server/src/codex_tool_runner.rs | 16 +- codex-rs/mcp-server/src/exec_approval.rs | 4 +- codex-rs/mcp-server/src/message_processor.rs | 4 +- codex-rs/mcp-server/src/outgoing_message.rs | 12 +- codex-rs/mcp-server/src/patch_approval.rs | 6 +- codex-rs/mcp-server/tests/suite/codex_tool.rs | 6 +- codex-rs/tui/Cargo.toml | 1 + codex-rs/tui/src/additional_dirs.rs | 6 +- codex-rs/tui/src/app.rs | 48 +++--- codex-rs/tui/src/app_backtrack.rs | 8 +- codex-rs/tui/src/app_event.rs | 10 +- .../tui/src/bottom_pane/approval_overlay.rs | 14 +- codex-rs/tui/src/bottom_pane/chat_composer.rs | 2 +- .../src/bottom_pane/chat_composer_history.rs | 4 +- codex-rs/tui/src/bottom_pane/feedback_view.rs | 2 +- codex-rs/tui/src/bottom_pane/mod.rs | 2 +- .../src/bottom_pane/request_user_input/mod.rs | 2 +- .../tui/src/bottom_pane/skills_toggle_view.rs | 2 +- codex-rs/tui/src/chatwidget.rs | 122 +++++++-------- codex-rs/tui/src/chatwidget/agent.rs | 16 +- codex-rs/tui/src/chatwidget/interrupts.rs | 14 +- codex-rs/tui/src/chatwidget/skills.rs | 6 +- codex-rs/tui/src/chatwidget/tests.rs | 141 +++++++++--------- codex-rs/tui/src/debug_config.rs | 6 +- codex-rs/tui/src/diff_render.rs | 2 +- codex-rs/tui/src/exec_cell/model.rs | 2 +- codex-rs/tui/src/exec_cell/render.rs | 6 +- codex-rs/tui/src/exec_command.rs | 2 +- codex-rs/tui/src/history_cell.rs | 16 +- codex-rs/tui/src/lib.rs | 16 +- codex-rs/tui/src/main.rs | 5 +- codex-rs/tui/src/multi_agents.rs | 20 +-- codex-rs/tui/src/pager_overlay.rs | 6 +- codex-rs/tui/src/session_log.rs | 2 +- codex-rs/tui/src/status/card.rs | 10 +- codex-rs/tui/src/status/rate_limits.rs | 6 +- codex-rs/tui/src/status/tests.rs | 14 +- codex-rs/tui/src/status_indicator_widget.rs | 2 +- codex-rs/utils/approval-presets/Cargo.toml | 2 +- codex-rs/utils/approval-presets/src/lib.rs | 4 +- codex-rs/utils/cli/Cargo.toml | 1 - .../utils/cli/src/approval_mode_cli_arg.rs | 2 +- .../utils/cli/src/sandbox_mode_cli_arg.rs | 2 +- codex-rs/utils/sandbox-summary/Cargo.toml | 1 + .../sandbox-summary/src/sandbox_summary.rs | 4 +- 149 files changed, 769 insertions(+), 752 deletions(-) diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 4ef13ad845..e9fd6ed167 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -1309,6 +1309,7 @@ dependencies = [ "codex-login", "codex-protocol", "codex-rmcp-client", + "codex-shell-command", "codex-utils-absolute-path", "codex-utils-cargo-bin", "codex-utils-cli", @@ -1773,6 +1774,8 @@ dependencies = [ "clap", "codex-core", "codex-execpolicy", + "codex-protocol", + "codex-shell-command", "codex-utils-cargo-bin", "exec_server_test_support", "libc", @@ -1910,6 +1913,7 @@ dependencies = [ "cc", "clap", "codex-core", + "codex-protocol", "codex-utils-absolute-path", "landlock", "libc", @@ -1966,6 +1970,7 @@ dependencies = [ "codex-arg0", "codex-core", "codex-protocol", + "codex-shell-command", "codex-utils-cli", "codex-utils-json-to-toml", "core_test_support", @@ -2240,6 +2245,7 @@ dependencies = [ "codex-login", "codex-otel", "codex-protocol", + "codex-shell-command", "codex-state", "codex-utils-absolute-path", "codex-utils-approval-presets", @@ -2320,7 +2326,7 @@ dependencies = [ name = "codex-utils-approval-presets" version = "0.0.0" dependencies = [ - "codex-core", + "codex-protocol", ] [[package]] @@ -2346,7 +2352,6 @@ name = "codex-utils-cli" version = "0.0.0" dependencies = [ "clap", - "codex-core", "codex-protocol", "pretty_assertions", "serde", @@ -2439,6 +2444,7 @@ name = "codex-utils-sandbox-summary" version = "0.0.0" dependencies = [ "codex-core", + "codex-protocol", "codex-utils-absolute-path", "pretty_assertions", ] @@ -3540,6 +3546,7 @@ version = "0.0.0" dependencies = [ "anyhow", "codex-core", + "codex-protocol", "codex-utils-cargo-bin", "rmcp", "serde_json", diff --git a/codex-rs/app-server-protocol/schema/json/ApplyPatchApprovalParams.json b/codex-rs/app-server-protocol/schema/json/ApplyPatchApprovalParams.json index da271c75ad..d1174a05b0 100644 --- a/codex-rs/app-server-protocol/schema/json/ApplyPatchApprovalParams.json +++ b/codex-rs/app-server-protocol/schema/json/ApplyPatchApprovalParams.json @@ -77,7 +77,7 @@ }, "properties": { "callId": { - "description": "Use to correlate this with [codex_core::protocol::PatchApplyBeginEvent] and [codex_core::protocol::PatchApplyEndEvent].", + "description": "Use to correlate this with [codex_protocol::protocol::PatchApplyBeginEvent] and [codex_protocol::protocol::PatchApplyEndEvent].", "type": "string" }, "conversationId": { diff --git a/codex-rs/app-server-protocol/schema/json/ExecCommandApprovalParams.json b/codex-rs/app-server-protocol/schema/json/ExecCommandApprovalParams.json index 3855168e09..43f85d21ae 100644 --- a/codex-rs/app-server-protocol/schema/json/ExecCommandApprovalParams.json +++ b/codex-rs/app-server-protocol/schema/json/ExecCommandApprovalParams.json @@ -125,7 +125,7 @@ ] }, "callId": { - "description": "Use to correlate this with [codex_core::protocol::ExecCommandBeginEvent] and [codex_core::protocol::ExecCommandEndEvent].", + "description": "Use to correlate this with [codex_protocol::protocol::ExecCommandBeginEvent] and [codex_protocol::protocol::ExecCommandEndEvent].", "type": "string" }, "command": { diff --git a/codex-rs/app-server-protocol/schema/json/ServerRequest.json b/codex-rs/app-server-protocol/schema/json/ServerRequest.json index 865912058e..553f189dc6 100644 --- a/codex-rs/app-server-protocol/schema/json/ServerRequest.json +++ b/codex-rs/app-server-protocol/schema/json/ServerRequest.json @@ -4,7 +4,7 @@ "ApplyPatchApprovalParams": { "properties": { "callId": { - "description": "Use to correlate this with [codex_core::protocol::PatchApplyBeginEvent] and [codex_core::protocol::PatchApplyEndEvent].", + "description": "Use to correlate this with [codex_protocol::protocol::PatchApplyBeginEvent] and [codex_protocol::protocol::PatchApplyEndEvent].", "type": "string" }, "conversationId": { @@ -290,7 +290,7 @@ ] }, "callId": { - "description": "Use to correlate this with [codex_core::protocol::ExecCommandBeginEvent] and [codex_core::protocol::ExecCommandEndEvent].", + "description": "Use to correlate this with [codex_protocol::protocol::ExecCommandBeginEvent] and [codex_protocol::protocol::ExecCommandEndEvent].", "type": "string" }, "command": { diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json index 89f7dc34c3..d478bb2c78 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json @@ -93,7 +93,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "callId": { - "description": "Use to correlate this with [codex_core::protocol::PatchApplyBeginEvent] and [codex_core::protocol::PatchApplyEndEvent].", + "description": "Use to correlate this with [codex_protocol::protocol::PatchApplyBeginEvent] and [codex_protocol::protocol::PatchApplyEndEvent].", "type": "string" }, "conversationId": { @@ -4247,7 +4247,7 @@ ] }, "callId": { - "description": "Use to correlate this with [codex_core::protocol::ExecCommandBeginEvent] and [codex_core::protocol::ExecCommandEndEvent].", + "description": "Use to correlate this with [codex_protocol::protocol::ExecCommandBeginEvent] and [codex_protocol::protocol::ExecCommandEndEvent].", "type": "string" }, "command": { diff --git a/codex-rs/app-server-protocol/schema/typescript/ApplyPatchApprovalParams.ts b/codex-rs/app-server-protocol/schema/typescript/ApplyPatchApprovalParams.ts index 27de027cc6..d04f7b75df 100644 --- a/codex-rs/app-server-protocol/schema/typescript/ApplyPatchApprovalParams.ts +++ b/codex-rs/app-server-protocol/schema/typescript/ApplyPatchApprovalParams.ts @@ -6,8 +6,8 @@ import type { ThreadId } from "./ThreadId"; export type ApplyPatchApprovalParams = { conversationId: ThreadId, /** - * Use to correlate this with [codex_core::protocol::PatchApplyBeginEvent] - * and [codex_core::protocol::PatchApplyEndEvent]. + * Use to correlate this with [codex_protocol::protocol::PatchApplyBeginEvent] + * and [codex_protocol::protocol::PatchApplyEndEvent]. */ callId: string, fileChanges: { [key in string]?: FileChange }, /** diff --git a/codex-rs/app-server-protocol/schema/typescript/ExecCommandApprovalParams.ts b/codex-rs/app-server-protocol/schema/typescript/ExecCommandApprovalParams.ts index 5637d1305a..f68872905d 100644 --- a/codex-rs/app-server-protocol/schema/typescript/ExecCommandApprovalParams.ts +++ b/codex-rs/app-server-protocol/schema/typescript/ExecCommandApprovalParams.ts @@ -6,8 +6,8 @@ import type { ThreadId } from "./ThreadId"; export type ExecCommandApprovalParams = { conversationId: ThreadId, /** - * Use to correlate this with [codex_core::protocol::ExecCommandBeginEvent] - * and [codex_core::protocol::ExecCommandEndEvent]. + * Use to correlate this with [codex_protocol::protocol::ExecCommandBeginEvent] + * and [codex_protocol::protocol::ExecCommandEndEvent]. */ callId: string, /** diff --git a/codex-rs/app-server-protocol/src/protocol/v1.rs b/codex-rs/app-server-protocol/src/protocol/v1.rs index 13308ffafe..976f4e69d8 100644 --- a/codex-rs/app-server-protocol/src/protocol/v1.rs +++ b/codex-rs/app-server-protocol/src/protocol/v1.rs @@ -234,8 +234,8 @@ pub struct GitDiffToRemoteResponse { #[serde(rename_all = "camelCase")] pub struct ApplyPatchApprovalParams { pub conversation_id: ThreadId, - /// Use to correlate this with [codex_core::protocol::PatchApplyBeginEvent] - /// and [codex_core::protocol::PatchApplyEndEvent]. + /// Use to correlate this with [codex_protocol::protocol::PatchApplyBeginEvent] + /// and [codex_protocol::protocol::PatchApplyEndEvent]. pub call_id: String, pub file_changes: HashMap, /// Optional explanatory reason (e.g. request for extra write access). @@ -255,8 +255,8 @@ pub struct ApplyPatchApprovalResponse { #[serde(rename_all = "camelCase")] pub struct ExecCommandApprovalParams { pub conversation_id: ThreadId, - /// Use to correlate this with [codex_core::protocol::ExecCommandBeginEvent] - /// and [codex_core::protocol::ExecCommandEndEvent]. + /// Use to correlate this with [codex_protocol::protocol::ExecCommandBeginEvent] + /// and [codex_protocol::protocol::ExecCommandEndEvent]. pub call_id: String, /// Identifier for this specific approval callback. pub approval_id: Option, diff --git a/codex-rs/app-server/Cargo.toml b/codex-rs/app-server/Cargo.toml index 7b90affe69..2f273a6794 100644 --- a/codex-rs/app-server/Cargo.toml +++ b/codex-rs/app-server/Cargo.toml @@ -21,6 +21,7 @@ async-trait = { workspace = true } codex-arg0 = { workspace = true } codex-cloud-requirements = { workspace = true } codex-core = { workspace = true } +codex-shell-command = { workspace = true } codex-utils-cli = { workspace = true } codex-backend-client = { workspace = true } codex-file-search = { workspace = true } diff --git a/codex-rs/app-server/src/bespoke_event_handling.rs b/codex-rs/app-server/src/bespoke_event_handling.rs index f53b10b843..fe3eb96852 100644 --- a/codex-rs/app-server/src/bespoke_event_handling.rs +++ b/codex-rs/app-server/src/bespoke_event_handling.rs @@ -76,28 +76,28 @@ use codex_app_server_protocol::convert_patch_changes; use codex_core::CodexThread; use codex_core::ThreadManager; use codex_core::find_thread_name_by_id; -use codex_core::parse_command::shlex_join; -use codex_core::protocol::ApplyPatchApprovalRequestEvent; -use codex_core::protocol::CodexErrorInfo as CoreCodexErrorInfo; -use codex_core::protocol::Event; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecApprovalRequestEvent; -use codex_core::protocol::ExecCommandEndEvent; -use codex_core::protocol::McpToolCallBeginEvent; -use codex_core::protocol::McpToolCallEndEvent; -use codex_core::protocol::Op; -use codex_core::protocol::ReviewDecision; -use codex_core::protocol::TokenCountEvent; -use codex_core::protocol::TurnDiffEvent; use codex_core::review_format::format_review_findings_block; use codex_core::review_prompts; use codex_protocol::ThreadId; use codex_protocol::dynamic_tools::DynamicToolCallOutputContentItem as CoreDynamicToolCallOutputContentItem; use codex_protocol::dynamic_tools::DynamicToolResponse as CoreDynamicToolResponse; use codex_protocol::plan_tool::UpdatePlanArgs; +use codex_protocol::protocol::ApplyPatchApprovalRequestEvent; +use codex_protocol::protocol::CodexErrorInfo as CoreCodexErrorInfo; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecApprovalRequestEvent; +use codex_protocol::protocol::ExecCommandEndEvent; +use codex_protocol::protocol::McpToolCallBeginEvent; +use codex_protocol::protocol::McpToolCallEndEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::ReviewDecision; use codex_protocol::protocol::ReviewOutputEvent; +use codex_protocol::protocol::TokenCountEvent; +use codex_protocol::protocol::TurnDiffEvent; use codex_protocol::request_user_input::RequestUserInputAnswer as CoreRequestUserInputAnswer; use codex_protocol::request_user_input::RequestUserInputResponse as CoreRequestUserInputResponse; +use codex_shell_command::parse_command::shlex_join; use std::collections::HashMap; use std::convert::TryFrom; use std::path::Path; @@ -1942,7 +1942,7 @@ async fn on_command_execution_request_approval_response( } fn collab_resume_begin_item( - begin_event: codex_core::protocol::CollabResumeBeginEvent, + begin_event: codex_protocol::protocol::CollabResumeBeginEvent, ) -> ThreadItem { ThreadItem::CollabAgentToolCall { id: begin_event.call_id, @@ -1955,7 +1955,7 @@ fn collab_resume_begin_item( } } -fn collab_resume_end_item(end_event: codex_core::protocol::CollabResumeEndEvent) -> ThreadItem { +fn collab_resume_end_item(end_event: codex_protocol::protocol::CollabResumeEndEvent) -> ThreadItem { let status = match &end_event.status { codex_protocol::protocol::AgentStatus::Errored(_) | codex_protocol::protocol::AgentStatus::NotFound => V2CollabToolCallStatus::Failed, @@ -2060,17 +2060,17 @@ mod tests { use anyhow::anyhow; use anyhow::bail; use codex_app_server_protocol::TurnPlanStepStatus; - use codex_core::protocol::CollabResumeBeginEvent; - use codex_core::protocol::CollabResumeEndEvent; - use codex_core::protocol::CreditsSnapshot; - use codex_core::protocol::McpInvocation; - use codex_core::protocol::RateLimitSnapshot; - use codex_core::protocol::RateLimitWindow; - use codex_core::protocol::TokenUsage; - use codex_core::protocol::TokenUsageInfo; use codex_protocol::mcp::CallToolResult; use codex_protocol::plan_tool::PlanItemArg; use codex_protocol::plan_tool::StepStatus; + use codex_protocol::protocol::CollabResumeBeginEvent; + use codex_protocol::protocol::CollabResumeEndEvent; + use codex_protocol::protocol::CreditsSnapshot; + use codex_protocol::protocol::McpInvocation; + use codex_protocol::protocol::RateLimitSnapshot; + use codex_protocol::protocol::RateLimitWindow; + use codex_protocol::protocol::TokenUsage; + use codex_protocol::protocol::TokenUsageInfo; use pretty_assertions::assert_eq; use rmcp::model::Content; use serde_json::Value as JsonValue; diff --git a/codex-rs/app-server/src/codex_message_processor.rs b/codex-rs/app-server/src/codex_message_processor.rs index 17a67fa4dc..d28b79db7e 100644 --- a/codex-rs/app-server/src/codex_message_processor.rs +++ b/codex-rs/app-server/src/codex_message_processor.rs @@ -175,7 +175,6 @@ use codex_core::AuthManager; use codex_core::CodexAuth; use codex_core::CodexThread; use codex_core::Cursor as RolloutCursor; -use codex_core::InitialHistory; use codex_core::NewThread; use codex_core::RolloutRecorder; use codex_core::SessionMeta; @@ -210,12 +209,6 @@ use codex_core::git_info::git_diff_to_remote; use codex_core::mcp::collect_mcp_snapshot; use codex_core::mcp::group_tools_by_server; use codex_core::parse_cursor; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::ReviewDelivery as CoreReviewDelivery; -use codex_core::protocol::ReviewRequest; -use codex_core::protocol::ReviewTarget as CoreReviewTarget; -use codex_core::protocol::SessionConfiguredEvent; use codex_core::read_head_for_summary; use codex_core::read_session_meta_line; use codex_core::rollout_date_parts; @@ -240,13 +233,20 @@ use codex_protocol::dynamic_tools::DynamicToolSpec as CoreDynamicToolSpec; use codex_protocol::items::TurnItem; use codex_protocol::models::ResponseItem; use codex_protocol::protocol::AgentStatus; +use codex_protocol::protocol::EventMsg; use codex_protocol::protocol::GitInfo as CoreGitInfo; +use codex_protocol::protocol::InitialHistory; use codex_protocol::protocol::McpAuthStatus as CoreMcpAuthStatus; use codex_protocol::protocol::McpServerRefreshConfig; +use codex_protocol::protocol::Op; use codex_protocol::protocol::RateLimitSnapshot as CoreRateLimitSnapshot; use codex_protocol::protocol::RemoteSkillHazelnutScope; use codex_protocol::protocol::RemoteSkillProductSurface; +use codex_protocol::protocol::ReviewDelivery as CoreReviewDelivery; +use codex_protocol::protocol::ReviewRequest; +use codex_protocol::protocol::ReviewTarget as CoreReviewTarget; use codex_protocol::protocol::RolloutItem; +use codex_protocol::protocol::SessionConfiguredEvent; use codex_protocol::protocol::SessionMetaLine; use codex_protocol::protocol::USER_MESSAGE_BEGIN; use codex_protocol::user_input::UserInput as CoreInputItem; diff --git a/codex-rs/app-server/tests/suite/codex_message_processor_flow.rs b/codex-rs/app-server/tests/suite/codex_message_processor_flow.rs index e6f887dba0..f6d3b9efb9 100644 --- a/codex-rs/app-server/tests/suite/codex_message_processor_flow.rs +++ b/codex-rs/app-server/tests/suite/codex_message_processor_flow.rs @@ -21,15 +21,15 @@ use codex_app_server_protocol::SendUserMessageResponse; use codex_app_server_protocol::SendUserTurnParams; use codex_app_server_protocol::SendUserTurnResponse; use codex_app_server_protocol::ServerRequest; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol_config_types::ReasoningSummary; use codex_core::spawn::CODEX_SANDBOX_NETWORK_DISABLED_ENV_VAR; +use codex_protocol::config_types::ReasoningSummary; use codex_protocol::config_types::SandboxMode; use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::parse_command::ParsedCommand; +use codex_protocol::protocol::AskForApproval; use codex_protocol::protocol::Event; use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::SandboxPolicy; use pretty_assertions::assert_eq; use std::env; use std::path::Path; @@ -312,7 +312,7 @@ async fn test_send_user_turn_changes_approval_policy_behavior() -> Result<()> { // Approve so the first turn can complete mcp.send_response( request_id, - serde_json::json!({ "decision": codex_core::protocol::ReviewDecision::Approved }), + serde_json::json!({ "decision": codex_protocol::protocol::ReviewDecision::Approved }), ) .await?; diff --git a/codex-rs/app-server/tests/suite/config.rs b/codex-rs/app-server/tests/suite/config.rs index 84b268a3c2..27a44ef550 100644 --- a/codex-rs/app-server/tests/suite/config.rs +++ b/codex-rs/app-server/tests/suite/config.rs @@ -9,12 +9,12 @@ use codex_app_server_protocol::RequestId; use codex_app_server_protocol::SandboxSettings; use codex_app_server_protocol::Tools; use codex_app_server_protocol::UserSavedConfig; -use codex_core::protocol::AskForApproval; use codex_protocol::config_types::ForcedLoginMethod; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::config_types::SandboxMode; use codex_protocol::config_types::Verbosity; use codex_protocol::openai_models::ReasoningEffort; +use codex_protocol::protocol::AskForApproval; use pretty_assertions::assert_eq; use std::collections::HashMap; use std::path::Path; diff --git a/codex-rs/app-server/tests/suite/fork_thread.rs b/codex-rs/app-server/tests/suite/fork_thread.rs index 17548fe041..ec282be4a1 100644 --- a/codex-rs/app-server/tests/suite/fork_thread.rs +++ b/codex-rs/app-server/tests/suite/fork_thread.rs @@ -10,7 +10,7 @@ use codex_app_server_protocol::NewConversationParams; // reused for overrides sh use codex_app_server_protocol::RequestId; use codex_app_server_protocol::ServerNotification; use codex_app_server_protocol::SessionConfiguredNotification; -use codex_core::protocol::EventMsg; +use codex_protocol::protocol::EventMsg; use pretty_assertions::assert_eq; use tempfile::TempDir; use tokio::time::timeout; diff --git a/codex-rs/app-server/tests/suite/interrupt.rs b/codex-rs/app-server/tests/suite/interrupt.rs index 2270afce28..dd09b832f8 100644 --- a/codex-rs/app-server/tests/suite/interrupt.rs +++ b/codex-rs/app-server/tests/suite/interrupt.rs @@ -12,7 +12,7 @@ use codex_app_server_protocol::NewConversationResponse; use codex_app_server_protocol::RequestId; use codex_app_server_protocol::SendUserMessageParams; use codex_app_server_protocol::SendUserMessageResponse; -use codex_core::protocol::TurnAbortReason; +use codex_protocol::protocol::TurnAbortReason; use core_test_support::skip_if_no_network; use tempfile::TempDir; use tokio::time::timeout; diff --git a/codex-rs/app-server/tests/suite/list_resume.rs b/codex-rs/app-server/tests/suite/list_resume.rs index efa90ea351..97c8f41d11 100644 --- a/codex-rs/app-server/tests/suite/list_resume.rs +++ b/codex-rs/app-server/tests/suite/list_resume.rs @@ -12,9 +12,9 @@ use codex_app_server_protocol::ResumeConversationParams; use codex_app_server_protocol::ResumeConversationResponse; use codex_app_server_protocol::ServerNotification; use codex_app_server_protocol::SessionConfiguredNotification; -use codex_core::protocol::EventMsg; use codex_protocol::models::ContentItem; use codex_protocol::models::ResponseItem; +use codex_protocol::protocol::EventMsg; use pretty_assertions::assert_eq; use tempfile::TempDir; use tokio::time::timeout; diff --git a/codex-rs/app-server/tests/suite/output_schema.rs b/codex-rs/app-server/tests/suite/output_schema.rs index c120a7fe2d..3d83bec7dd 100644 --- a/codex-rs/app-server/tests/suite/output_schema.rs +++ b/codex-rs/app-server/tests/suite/output_schema.rs @@ -9,10 +9,10 @@ use codex_app_server_protocol::NewConversationResponse; use codex_app_server_protocol::RequestId; use codex_app_server_protocol::SendUserTurnParams; use codex_app_server_protocol::SendUserTurnResponse; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ReasoningEffort; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::SandboxPolicy; use core_test_support::responses; use core_test_support::skip_if_no_network; use pretty_assertions::assert_eq; diff --git a/codex-rs/app-server/tests/suite/v2/review.rs b/codex-rs/app-server/tests/suite/v2/review.rs index 219812d6b1..262b13969e 100644 --- a/codex-rs/app-server/tests/suite/v2/review.rs +++ b/codex-rs/app-server/tests/suite/v2/review.rs @@ -209,7 +209,7 @@ async fn review_start_exec_approval_item_id_matches_command_execution_item() -> mcp.send_response( request_id, - serde_json::json!({ "decision": codex_core::protocol::ReviewDecision::Approved }), + serde_json::json!({ "decision": codex_protocol::protocol::ReviewDecision::Approved }), ) .await?; timeout( diff --git a/codex-rs/app-server/tests/suite/v2/turn_start.rs b/codex-rs/app-server/tests/suite/v2/turn_start.rs index 8d6db34731..eaa017d6ae 100644 --- a/codex-rs/app-server/tests/suite/v2/turn_start.rs +++ b/codex-rs/app-server/tests/suite/v2/turn_start.rs @@ -39,10 +39,10 @@ use codex_core::config::ConfigToml; use codex_core::features::FEATURES; use codex_core::features::Feature; use codex_core::personality_migration::PERSONALITY_MIGRATION_FILENAME; -use codex_core::protocol_config_types::ReasoningSummary; use codex_protocol::config_types::CollaborationMode; use codex_protocol::config_types::ModeKind; use codex_protocol::config_types::Personality; +use codex_protocol::config_types::ReasoningSummary; use codex_protocol::config_types::Settings; use codex_protocol::openai_models::ReasoningEffort; use core_test_support::responses; diff --git a/codex-rs/app-server/tests/suite/v2/turn_start_zsh_fork.rs b/codex-rs/app-server/tests/suite/v2/turn_start_zsh_fork.rs index 4be127dff8..94467b8719 100644 --- a/codex-rs/app-server/tests/suite/v2/turn_start_zsh_fork.rs +++ b/codex-rs/app-server/tests/suite/v2/turn_start_zsh_fork.rs @@ -111,7 +111,7 @@ async fn turn_start_shell_zsh_fork_executes_command_v2() -> Result<()> { sandbox_policy: Some(codex_app_server_protocol::SandboxPolicy::DangerFullAccess), model: Some("mock-model".to_string()), effort: Some(codex_protocol::openai_models::ReasoningEffort::Medium), - summary: Some(codex_core::protocol_config_types::ReasoningSummary::Auto), + summary: Some(codex_protocol::config_types::ReasoningSummary::Auto), ..Default::default() }) .await?; @@ -505,7 +505,7 @@ async fn turn_start_shell_zsh_fork_subcommand_decline_marks_parent_declined_v2() }), model: Some("mock-model".to_string()), effort: Some(codex_protocol::openai_models::ReasoningEffort::Medium), - summary: Some(codex_core::protocol_config_types::ReasoningSummary::Auto), + summary: Some(codex_protocol::config_types::ReasoningSummary::Auto), ..Default::default() }) .await?; diff --git a/codex-rs/cli/src/main.rs b/codex-rs/cli/src/main.rs index 98a5ab0779..e5478f1b90 100644 --- a/codex-rs/cli/src/main.rs +++ b/codex-rs/cli/src/main.rs @@ -390,7 +390,7 @@ fn format_exit_messages(exit_info: AppExitInfo, color_enabled: bool) -> Vec TuiCli { diff --git a/codex-rs/cli/src/mcp_cmd.rs b/codex-rs/cli/src/mcp_cmd.rs index be3678e07e..396e077411 100644 --- a/codex-rs/cli/src/mcp_cmd.rs +++ b/codex-rs/cli/src/mcp_cmd.rs @@ -14,7 +14,7 @@ use codex_core::config::types::McpServerTransportConfig; use codex_core::mcp::auth::McpOAuthLoginSupport; use codex_core::mcp::auth::compute_auth_statuses; use codex_core::mcp::auth::oauth_login_support; -use codex_core::protocol::McpAuthStatus; +use codex_protocol::protocol::McpAuthStatus; use codex_rmcp_client::delete_oauth_tokens; use codex_rmcp_client::perform_oauth_login; use codex_utils_cli::CliConfigOverrides; diff --git a/codex-rs/core/src/lib.rs b/codex-rs/core/src/lib.rs index 4dc2a607c6..b54830a539 100644 --- a/codex-rs/core/src/lib.rs +++ b/codex-rs/core/src/lib.rs @@ -84,7 +84,6 @@ mod seatbelt_permissions; mod thread_manager; pub mod web_search; pub mod windows_sandbox_read_grants; -pub use codex_protocol::protocol::InitialHistory; pub use thread_manager::NewThread; pub use thread_manager::ThreadManager; #[deprecated(note = "use ThreadManager")] @@ -138,11 +137,12 @@ mod state; mod tasks; mod user_shell_command; pub mod util; -pub use codex_shell_command::bash; -pub use codex_shell_command::is_dangerous_command; -pub use codex_shell_command::is_safe_command; -pub use codex_shell_command::parse_command; -pub use codex_shell_command::powershell; +pub(crate) use codex_protocol::protocol; +pub(crate) use codex_shell_command::bash; +pub(crate) use codex_shell_command::is_dangerous_command; +pub(crate) use codex_shell_command::is_safe_command; +pub(crate) use codex_shell_command::parse_command; +pub(crate) use codex_shell_command::powershell; pub use apply_patch::CODEX_APPLY_PATCH_ARG1; pub use client::X_CODEX_TURN_METADATA_HEADER; @@ -155,12 +155,6 @@ pub use safety::get_platform_sandbox; pub use tools::spec::parse_tool_input_schema; pub use turn_metadata::build_turn_metadata_header; pub use zsh_exec_bridge::maybe_run_zsh_exec_wrapper_mode; -// Re-export the protocol types from the standalone `codex-protocol` crate so existing -// `codex_core::protocol::...` references continue to work across the workspace. -pub use codex_protocol::protocol; -// Re-export protocol config enums to ensure call sites can use the same types -// as those in the protocol crate when constructing protocol messages. -pub use codex_protocol::config_types as protocol_config_types; pub use client::ModelClient; pub use client::ModelClientSession; @@ -168,11 +162,6 @@ pub use client_common::Prompt; pub use client_common::REVIEW_PROMPT; pub use client_common::ResponseEvent; pub use client_common::ResponseStream; -pub use codex_protocol::models::ContentItem; -pub use codex_protocol::models::LocalShellAction; -pub use codex_protocol::models::LocalShellExecAction; -pub use codex_protocol::models::LocalShellStatus; -pub use codex_protocol::models::ResponseItem; pub use compact::content_items_to_text; pub use event_mapping::parse_turn_item; pub mod compact; diff --git a/codex-rs/core/tests/common/lib.rs b/codex-rs/core/tests/common/lib.rs index a7fda23cd0..a4422e4580 100644 --- a/codex-rs/core/tests/common/lib.rs +++ b/codex-rs/core/tests/common/lib.rs @@ -175,9 +175,12 @@ pub fn load_sse_fixture_with_id_from_str(raw: &str, id: &str) -> String { .collect() } -pub async fn wait_for_event(codex: &CodexThread, predicate: F) -> codex_core::protocol::EventMsg +pub async fn wait_for_event( + codex: &CodexThread, + predicate: F, +) -> codex_protocol::protocol::EventMsg where - F: FnMut(&codex_core::protocol::EventMsg) -> bool, + F: FnMut(&codex_protocol::protocol::EventMsg) -> bool, { use tokio::time::Duration; wait_for_event_with_timeout(codex, predicate, Duration::from_secs(1)).await @@ -185,7 +188,7 @@ where pub async fn wait_for_event_match(codex: &CodexThread, matcher: F) -> T where - F: Fn(&codex_core::protocol::EventMsg) -> Option, + F: Fn(&codex_protocol::protocol::EventMsg) -> Option, { let ev = wait_for_event(codex, |ev| matcher(ev).is_some()).await; matcher(&ev).unwrap() @@ -195,9 +198,9 @@ pub async fn wait_for_event_with_timeout( codex: &CodexThread, mut predicate: F, wait_time: tokio::time::Duration, -) -> codex_core::protocol::EventMsg +) -> codex_protocol::protocol::EventMsg where - F: FnMut(&codex_core::protocol::EventMsg) -> bool, + F: FnMut(&codex_protocol::protocol::EventMsg) -> bool, { use tokio::time::Duration; use tokio::time::timeout; diff --git a/codex-rs/core/tests/common/test_codex.rs b/codex-rs/core/tests/common/test_codex.rs index b06aa6c58e..8205909238 100644 --- a/codex-rs/core/tests/common/test_codex.rs +++ b/codex-rs/core/tests/common/test_codex.rs @@ -11,12 +11,12 @@ use codex_core::ThreadManager; use codex_core::built_in_model_providers; use codex_core::config::Config; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol::SessionConfiguredEvent; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; +use codex_protocol::protocol::SessionConfiguredEvent; use codex_protocol::user_input::UserInput; use serde_json::Value; use tempfile::TempDir; diff --git a/codex-rs/core/tests/responses_headers.rs b/codex-rs/core/tests/responses_headers.rs index 71c8b4717a..b392081eeb 100644 --- a/codex-rs/core/tests/responses_headers.rs +++ b/codex-rs/core/tests/responses_headers.rs @@ -2,17 +2,17 @@ use std::process::Command; use std::sync::Arc; use codex_core::CodexAuth; -use codex_core::ContentItem; use codex_core::ModelClient; use codex_core::ModelProviderInfo; use codex_core::Prompt; use codex_core::ResponseEvent; -use codex_core::ResponseItem; use codex_core::WireApi; use codex_otel::OtelManager; use codex_otel::TelemetryAuthMode; use codex_protocol::ThreadId; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::models::ContentItem; +use codex_protocol::models::ResponseItem; use codex_protocol::protocol::SessionSource; use codex_protocol::protocol::SubAgentSource; use core_test_support::load_default_config_for_test; diff --git a/codex-rs/core/tests/suite/abort_tasks.rs b/codex-rs/core/tests/suite/abort_tasks.rs index 53b5a26b02..af3c70b74e 100644 --- a/codex-rs/core/tests/suite/abort_tasks.rs +++ b/codex-rs/core/tests/suite/abort_tasks.rs @@ -2,8 +2,8 @@ use assert_matches::assert_matches; use std::sync::Arc; use std::time::Duration; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_completed; use core_test_support::responses::ev_function_call; diff --git a/codex-rs/core/tests/suite/apply_patch_cli.rs b/codex-rs/core/tests/suite/apply_patch_cli.rs index b84df343d0..9ef2715d8c 100644 --- a/codex-rs/core/tests/suite/apply_patch_cli.rs +++ b/codex-rs/core/tests/suite/apply_patch_cli.rs @@ -11,11 +11,11 @@ use std::sync::atomic::AtomicI32; use std::sync::atomic::Ordering; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::assert_regex_match; use core_test_support::responses::ev_apply_patch_function_call; diff --git a/codex-rs/core/tests/suite/approvals.rs b/codex-rs/core/tests/suite/approvals.rs index 374cc1ada7..38ae062ab2 100644 --- a/codex-rs/core/tests/suite/approvals.rs +++ b/codex-rs/core/tests/suite/approvals.rs @@ -3,16 +3,16 @@ use anyhow::Result; use codex_core::config::Constrained; use codex_core::features::Feature; -use codex_core::protocol::ApplyPatchApprovalRequestEvent; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecApprovalRequestEvent; -use codex_core::protocol::ExecPolicyAmendment; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_core::sandboxing::SandboxPermissions; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::ApplyPatchApprovalRequestEvent; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecApprovalRequestEvent; +use codex_protocol::protocol::ExecPolicyAmendment; +use codex_protocol::protocol::Op; use codex_protocol::protocol::ReviewDecision; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_apply_patch_function_call; use core_test_support::responses::ev_assistant_message; diff --git a/codex-rs/core/tests/suite/cli_stream.rs b/codex-rs/core/tests/suite/cli_stream.rs index d677d96edb..07faed70a8 100644 --- a/codex-rs/core/tests/suite/cli_stream.rs +++ b/codex-rs/core/tests/suite/cli_stream.rs @@ -1,6 +1,6 @@ use assert_cmd::Command as AssertCommand; use codex_core::auth::CODEX_API_KEY_ENV_VAR; -use codex_core::protocol::GitInfo; +use codex_protocol::protocol::GitInfo; use codex_utils_cargo_bin::find_resource; use core_test_support::fs_wait; use core_test_support::responses; diff --git a/codex-rs/core/tests/suite/client.rs b/codex-rs/core/tests/suite/client.rs index cc5fee3066..77a2ba33e0 100644 --- a/codex-rs/core/tests/suite/client.rs +++ b/codex-rs/core/tests/suite/client.rs @@ -1,14 +1,9 @@ use codex_core::CodexAuth; -use codex_core::ContentItem; -use codex_core::LocalShellAction; -use codex_core::LocalShellExecAction; -use codex_core::LocalShellStatus; use codex_core::ModelClient; use codex_core::ModelProviderInfo; use codex_core::NewThread; use codex_core::Prompt; use codex_core::ResponseEvent; -use codex_core::ResponseItem; use codex_core::ThreadManager; use codex_core::WireApi; use codex_core::auth::AuthCredentialsStoreMode; @@ -16,9 +11,6 @@ use codex_core::built_in_model_providers; use codex_core::default_client::originator; use codex_core::error::CodexErr; use codex_core::features::Feature; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SessionSource; use codex_otel::OtelManager; use codex_otel::TelemetryAuthMode; use codex_protocol::ThreadId; @@ -27,12 +19,20 @@ use codex_protocol::config_types::ModeKind; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::config_types::Settings; use codex_protocol::config_types::Verbosity; +use codex_protocol::models::ContentItem; use codex_protocol::models::FunctionCallOutputPayload; +use codex_protocol::models::LocalShellAction; +use codex_protocol::models::LocalShellExecAction; +use codex_protocol::models::LocalShellStatus; use codex_protocol::models::MessagePhase; use codex_protocol::models::ReasoningItemContent; use codex_protocol::models::ReasoningItemReasoningSummary; +use codex_protocol::models::ResponseItem; use codex_protocol::models::WebSearchAction; use codex_protocol::openai_models::ReasoningEffort; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SessionSource; use codex_protocol::user_input::UserInput; use core_test_support::apps_test_server::AppsTestServer; use core_test_support::load_default_config_for_test; diff --git a/codex-rs/core/tests/suite/client_websockets.rs b/codex-rs/core/tests/suite/client_websockets.rs index 736e5f50fe..54e197e568 100755 --- a/codex-rs/core/tests/suite/client_websockets.rs +++ b/codex-rs/core/tests/suite/client_websockets.rs @@ -1,18 +1,13 @@ #![allow(clippy::expect_used, clippy::unwrap_used)] use codex_core::CodexAuth; -use codex_core::ContentItem; use codex_core::ModelClient; use codex_core::ModelClientSession; use codex_core::ModelProviderInfo; use codex_core::Prompt; use codex_core::ResponseEvent; -use codex_core::ResponseItem; use codex_core::WireApi; use codex_core::X_RESPONSESAPI_INCLUDE_TIMING_METRICS_HEADER; use codex_core::features::Feature; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SessionSource; use codex_otel::OtelManager; use codex_otel::TelemetryAuthMode; use codex_otel::metrics::MetricsClient; @@ -21,8 +16,13 @@ use codex_protocol::ThreadId; use codex_protocol::account::PlanType; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::models::BaseInstructions; +use codex_protocol::models::ContentItem; +use codex_protocol::models::ResponseItem; use codex_protocol::openai_models::ModelInfo; use codex_protocol::openai_models::ReasoningEffort as ReasoningEffortConfig; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SessionSource; use codex_protocol::user_input::UserInput; use core_test_support::load_default_config_for_test; use core_test_support::responses::WebSocketConnectionConfig; diff --git a/codex-rs/core/tests/suite/codex_delegate.rs b/codex-rs/core/tests/suite/codex_delegate.rs index 841dbbb2cb..e71d99b620 100644 --- a/codex-rs/core/tests/suite/codex_delegate.rs +++ b/codex-rs/core/tests/suite/codex_delegate.rs @@ -1,12 +1,12 @@ use codex_core::config::Constrained; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::ReviewDecision; -use codex_core::protocol::ReviewRequest; -use codex_core::protocol::ReviewTarget; -use codex_core::protocol::SandboxPolicy; use codex_core::sandboxing::SandboxPermissions; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::ReviewDecision; +use codex_protocol::protocol::ReviewRequest; +use codex_protocol::protocol::ReviewTarget; +use codex_protocol::protocol::SandboxPolicy; use core_test_support::responses::ev_apply_patch_function_call; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/collaboration_instructions.rs b/codex-rs/core/tests/suite/collaboration_instructions.rs index a6cad3a5ce..68d695325d 100644 --- a/codex-rs/core/tests/suite/collaboration_instructions.rs +++ b/codex-rs/core/tests/suite/collaboration_instructions.rs @@ -1,11 +1,11 @@ use anyhow::Result; -use codex_core::protocol::COLLABORATION_MODE_CLOSE_TAG; -use codex_core::protocol::COLLABORATION_MODE_OPEN_TAG; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; use codex_protocol::config_types::CollaborationMode; use codex_protocol::config_types::ModeKind; use codex_protocol::config_types::Settings; +use codex_protocol::protocol::COLLABORATION_MODE_CLOSE_TAG; +use codex_protocol::protocol::COLLABORATION_MODE_OPEN_TAG; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_completed; use core_test_support::responses::ev_response_created; diff --git a/codex-rs/core/tests/suite/compact.rs b/codex-rs/core/tests/suite/compact.rs index c4745ab20e..9e9ce931e9 100644 --- a/codex-rs/core/tests/suite/compact.rs +++ b/codex-rs/core/tests/suite/compact.rs @@ -5,19 +5,19 @@ use codex_core::built_in_model_providers; use codex_core::compact::SUMMARIZATION_PROMPT; use codex_core::compact::SUMMARY_PREFIX; use codex_core::config::Config; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ItemCompletedEvent; -use codex_core::protocol::ItemStartedEvent; -use codex_core::protocol::Op; -use codex_core::protocol::RolloutItem; -use codex_core::protocol::RolloutLine; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol::WarningEvent; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::items::TurnItem; use codex_protocol::openai_models::ModelInfo; use codex_protocol::openai_models::ModelsResponse; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ItemCompletedEvent; +use codex_protocol::protocol::ItemStartedEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::RolloutItem; +use codex_protocol::protocol::RolloutLine; +use codex_protocol::protocol::SandboxPolicy; +use codex_protocol::protocol::WarningEvent; use codex_protocol::user_input::UserInput; use core_test_support::context_snapshot; use core_test_support::context_snapshot::ContextSnapshotOptions; diff --git a/codex-rs/core/tests/suite/compact_remote.rs b/codex-rs/core/tests/suite/compact_remote.rs index 6baccc16f4..1d450f9b11 100644 --- a/codex-rs/core/tests/suite/compact_remote.rs +++ b/codex-rs/core/tests/suite/compact_remote.rs @@ -6,15 +6,15 @@ use std::path::PathBuf; use anyhow::Result; use codex_core::CodexAuth; use codex_core::compact::SUMMARY_PREFIX; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ItemCompletedEvent; -use codex_core::protocol::ItemStartedEvent; -use codex_core::protocol::Op; -use codex_core::protocol::RolloutItem; -use codex_core::protocol::RolloutLine; use codex_protocol::items::TurnItem; use codex_protocol::models::ContentItem; use codex_protocol::models::ResponseItem; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ItemCompletedEvent; +use codex_protocol::protocol::ItemStartedEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::RolloutItem; +use codex_protocol::protocol::RolloutLine; use codex_protocol::user_input::UserInput; use core_test_support::context_snapshot; use core_test_support::context_snapshot::ContextSnapshotOptions; diff --git a/codex-rs/core/tests/suite/compact_resume_fork.rs b/codex-rs/core/tests/suite/compact_resume_fork.rs index b66edb84aa..5b3f409125 100644 --- a/codex-rs/core/tests/suite/compact_resume_fork.rs +++ b/codex-rs/core/tests/suite/compact_resume_fork.rs @@ -14,10 +14,10 @@ use codex_core::CodexThread; use codex_core::ThreadManager; use codex_core::compact::SUMMARIZATION_PROMPT; use codex_core::config::Config; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::WarningEvent; use codex_core::spawn::CODEX_SANDBOX_NETWORK_DISABLED_ENV_VAR; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::WarningEvent; use codex_protocol::user_input::UserInput; use core_test_support::responses::ResponseMock; use core_test_support::responses::ev_assistant_message; diff --git a/codex-rs/core/tests/suite/deprecation_notice.rs b/codex-rs/core/tests/suite/deprecation_notice.rs index dbae99006d..2a7563bea1 100644 --- a/codex-rs/core/tests/suite/deprecation_notice.rs +++ b/codex-rs/core/tests/suite/deprecation_notice.rs @@ -7,8 +7,8 @@ use codex_core::config_loader::ConfigLayerStack; use codex_core::config_loader::ConfigRequirements; use codex_core::config_loader::ConfigRequirementsToml; use codex_core::features::Feature; -use codex_core::protocol::DeprecationNoticeEvent; -use codex_core::protocol::EventMsg; +use codex_protocol::protocol::DeprecationNoticeEvent; +use codex_protocol::protocol::EventMsg; use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_absolute_path; diff --git a/codex-rs/core/tests/suite/exec.rs b/codex-rs/core/tests/suite/exec.rs index c3cb15875b..6546600681 100644 --- a/codex-rs/core/tests/suite/exec.rs +++ b/codex-rs/core/tests/suite/exec.rs @@ -7,10 +7,10 @@ use codex_core::exec::ExecParams; use codex_core::exec::ExecToolCallOutput; use codex_core::exec::SandboxType; use codex_core::exec::process_exec_tool_call; -use codex_core::protocol::SandboxPolicy; use codex_core::sandboxing::SandboxPermissions; use codex_core::spawn::CODEX_SANDBOX_ENV_VAR; use codex_protocol::config_types::WindowsSandboxLevel; +use codex_protocol::protocol::SandboxPolicy; use tempfile::TempDir; use codex_core::error::Result; diff --git a/codex-rs/core/tests/suite/exec_policy.rs b/codex-rs/core/tests/suite/exec_policy.rs index 4922fcf9c8..3fd06d83c7 100644 --- a/codex-rs/core/tests/suite/exec_policy.rs +++ b/codex-rs/core/tests/suite/exec_policy.rs @@ -2,14 +2,14 @@ use anyhow::Result; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::CollaborationMode; use codex_protocol::config_types::ModeKind; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::config_types::Settings; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/fork_thread.rs b/codex-rs/core/tests/suite/fork_thread.rs index 3d97400a97..96457065de 100644 --- a/codex-rs/core/tests/suite/fork_thread.rs +++ b/codex-rs/core/tests/suite/fork_thread.rs @@ -1,10 +1,10 @@ use codex_core::NewThread; use codex_core::parse_turn_item; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::RolloutItem; -use codex_core::protocol::RolloutLine; use codex_protocol::items::TurnItem; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::RolloutItem; +use codex_protocol::protocol::RolloutLine; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_completed; use core_test_support::responses::ev_response_created; diff --git a/codex-rs/core/tests/suite/image_rollout.rs b/codex-rs/core/tests/suite/image_rollout.rs index 691531e049..2349d9f5fa 100644 --- a/codex-rs/core/tests/suite/image_rollout.rs +++ b/codex-rs/core/tests/suite/image_rollout.rs @@ -1,13 +1,13 @@ use anyhow::Context; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::RolloutItem; -use codex_core::protocol::RolloutLine; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::models::ContentItem; use codex_protocol::models::ResponseItem; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::RolloutItem; +use codex_protocol::protocol::RolloutLine; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses; use core_test_support::responses::ev_assistant_message; diff --git a/codex-rs/core/tests/suite/items.rs b/codex-rs/core/tests/suite/items.rs index 842122dfea..844c55c6bc 100644 --- a/codex-rs/core/tests/suite/items.rs +++ b/codex-rs/core/tests/suite/items.rs @@ -1,16 +1,16 @@ #![cfg(not(target_os = "windows"))] use anyhow::Ok; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ItemCompletedEvent; -use codex_core::protocol::ItemStartedEvent; -use codex_core::protocol::Op; use codex_protocol::config_types::CollaborationMode; use codex_protocol::config_types::ModeKind; use codex_protocol::config_types::Settings; use codex_protocol::items::AgentMessageContent; use codex_protocol::items::TurnItem; use codex_protocol::models::WebSearchAction; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ItemCompletedEvent; +use codex_protocol::protocol::ItemStartedEvent; +use codex_protocol::protocol::Op; use codex_protocol::user_input::ByteRange; use codex_protocol::user_input::TextElement; use codex_protocol::user_input::UserInput; @@ -373,8 +373,8 @@ async fn plan_mode_emits_plan_item_from_proposed_plan_block() -> anyhow::Result< }], final_output_json_schema: None, cwd: std::env::current_dir()?, - approval_policy: codex_core::protocol::AskForApproval::Never, - sandbox_policy: codex_core::protocol::SandboxPolicy::DangerFullAccess, + approval_policy: codex_protocol::protocol::AskForApproval::Never, + sandbox_policy: codex_protocol::protocol::SandboxPolicy::DangerFullAccess, model: session_configured.model.clone(), effort: None, summary: codex_protocol::config_types::ReasoningSummary::Auto, @@ -448,8 +448,8 @@ async fn plan_mode_strips_plan_from_agent_messages() -> anyhow::Result<()> { }], final_output_json_schema: None, cwd: std::env::current_dir()?, - approval_policy: codex_core::protocol::AskForApproval::Never, - sandbox_policy: codex_core::protocol::SandboxPolicy::DangerFullAccess, + approval_policy: codex_protocol::protocol::AskForApproval::Never, + sandbox_policy: codex_protocol::protocol::SandboxPolicy::DangerFullAccess, model: session_configured.model.clone(), effort: None, summary: codex_protocol::config_types::ReasoningSummary::Auto, @@ -544,8 +544,8 @@ async fn plan_mode_handles_missing_plan_close_tag() -> anyhow::Result<()> { }], final_output_json_schema: None, cwd: std::env::current_dir()?, - approval_policy: codex_core::protocol::AskForApproval::Never, - sandbox_policy: codex_core::protocol::SandboxPolicy::DangerFullAccess, + approval_policy: codex_protocol::protocol::AskForApproval::Never, + sandbox_policy: codex_protocol::protocol::SandboxPolicy::DangerFullAccess, model: session_configured.model.clone(), effort: None, summary: codex_protocol::config_types::ReasoningSummary::Auto, diff --git a/codex-rs/core/tests/suite/json_result.rs b/codex-rs/core/tests/suite/json_result.rs index b76d7ac899..e32865e0c7 100644 --- a/codex-rs/core/tests/suite/json_result.rs +++ b/codex-rs/core/tests/suite/json_result.rs @@ -1,10 +1,10 @@ #![cfg(not(target_os = "windows"))] -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses; use core_test_support::skip_if_no_network; diff --git a/codex-rs/core/tests/suite/live_reload.rs b/codex-rs/core/tests/suite/live_reload.rs index 0ebcb332ef..3ea0a3cbe9 100644 --- a/codex-rs/core/tests/suite/live_reload.rs +++ b/codex-rs/core/tests/suite/live_reload.rs @@ -7,12 +7,12 @@ use std::time::Duration; use anyhow::Result; use codex_core::config::ProjectConfig; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::config_types::TrustLevel; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses; use core_test_support::responses::ResponsesRequest; diff --git a/codex-rs/core/tests/suite/model_overrides.rs b/codex-rs/core/tests/suite/model_overrides.rs index 698ee15b61..1ba469f7f9 100644 --- a/codex-rs/core/tests/suite/model_overrides.rs +++ b/codex-rs/core/tests/suite/model_overrides.rs @@ -1,6 +1,6 @@ -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; use codex_protocol::openai_models::ReasoningEffort; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use core_test_support::responses::start_mock_server; use core_test_support::test_codex::test_codex; use core_test_support::wait_for_event; diff --git a/codex-rs/core/tests/suite/model_switching.rs b/codex-rs/core/tests/suite/model_switching.rs index 4d4abafeb6..6e06b0f224 100644 --- a/codex-rs/core/tests/suite/model_switching.rs +++ b/codex-rs/core/tests/suite/model_switching.rs @@ -3,10 +3,6 @@ use codex_core::CodexAuth; use codex_core::config::types::Personality; use codex_core::features::Feature; use codex_core::models_manager::manager::RefreshStrategy; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ConfigShellToolType; use codex_protocol::openai_models::InputModality; @@ -17,6 +13,10 @@ use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::openai_models::ReasoningEffortPreset; use codex_protocol::openai_models::TruncationPolicyConfig; use codex_protocol::openai_models::default_input_modalities; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_completed_with_tokens; use core_test_support::responses::ev_response_created; diff --git a/codex-rs/core/tests/suite/model_visible_layout.rs b/codex-rs/core/tests/suite/model_visible_layout.rs index f3daf06c8b..3288eb5c05 100644 --- a/codex-rs/core/tests/suite/model_visible_layout.rs +++ b/codex-rs/core/tests/suite/model_visible_layout.rs @@ -6,11 +6,11 @@ use std::sync::Arc; use anyhow::Result; use codex_core::config::types::Personality; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::context_snapshot; use core_test_support::context_snapshot::ContextSnapshotOptions; diff --git a/codex-rs/core/tests/suite/models_cache_ttl.rs b/codex-rs/core/tests/suite/models_cache_ttl.rs index e9f0a73f98..3422e397b8 100644 --- a/codex-rs/core/tests/suite/models_cache_ttl.rs +++ b/codex-rs/core/tests/suite/models_cache_ttl.rs @@ -7,9 +7,6 @@ use chrono::TimeZone; use chrono::Utc; use codex_core::CodexAuth; use codex_core::models_manager::manager::RefreshStrategy; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ConfigShellToolType; use codex_protocol::openai_models::ModelInfo; @@ -19,6 +16,9 @@ use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::openai_models::ReasoningEffortPreset; use codex_protocol::openai_models::TruncationPolicyConfig; use codex_protocol::openai_models::default_input_modalities; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses; use core_test_support::responses::ev_assistant_message; @@ -95,7 +95,7 @@ async fn renews_cache_ttl_on_matching_models_etag() -> Result<()> { }], final_output_json_schema: None, cwd: test.cwd_path().to_path_buf(), - approval_policy: codex_core::protocol::AskForApproval::Never, + approval_policy: codex_protocol::protocol::AskForApproval::Never, sandbox_policy: SandboxPolicy::DangerFullAccess, model: test.session_configured.model.clone(), effort: None, diff --git a/codex-rs/core/tests/suite/models_etag_responses.rs b/codex-rs/core/tests/suite/models_etag_responses.rs index 13c31cd7f9..7c40bec987 100644 --- a/codex-rs/core/tests/suite/models_etag_responses.rs +++ b/codex-rs/core/tests/suite/models_etag_responses.rs @@ -4,12 +4,12 @@ use std::sync::Arc; use anyhow::Result; use codex_core::CodexAuth; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ModelsResponse; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses; use core_test_support::responses::ev_assistant_message; diff --git a/codex-rs/core/tests/suite/override_updates.rs b/codex-rs/core/tests/suite/override_updates.rs index d8455824b7..7ae78891f1 100644 --- a/codex-rs/core/tests/suite/override_updates.rs +++ b/codex-rs/core/tests/suite/override_updates.rs @@ -1,13 +1,13 @@ use anyhow::Result; use codex_core::config::Constrained; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::COLLABORATION_MODE_CLOSE_TAG; -use codex_core::protocol::COLLABORATION_MODE_OPEN_TAG; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::RolloutItem; -use codex_core::protocol::RolloutLine; -use codex_core::protocol::ENVIRONMENT_CONTEXT_OPEN_TAG; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::COLLABORATION_MODE_CLOSE_TAG; +use codex_protocol::protocol::COLLABORATION_MODE_OPEN_TAG; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::RolloutItem; +use codex_protocol::protocol::RolloutLine; +use codex_protocol::protocol::ENVIRONMENT_CONTEXT_OPEN_TAG; use codex_protocol::config_types::CollaborationMode; use codex_protocol::config_types::ModeKind; use codex_protocol::config_types::Settings; diff --git a/codex-rs/core/tests/suite/pending_input.rs b/codex-rs/core/tests/suite/pending_input.rs index c89bcb9a90..30b0d9d50b 100644 --- a/codex-rs/core/tests/suite/pending_input.rs +++ b/codex-rs/core/tests/suite/pending_input.rs @@ -1,5 +1,5 @@ -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::UserInput; use core_test_support::responses; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/permissions_messages.rs b/codex-rs/core/tests/suite/permissions_messages.rs index 5db3bf9f0a..4bbe5f4ab2 100644 --- a/codex-rs/core/tests/suite/permissions_messages.rs +++ b/codex-rs/core/tests/suite/permissions_messages.rs @@ -1,11 +1,11 @@ use anyhow::Result; use codex_core::config::Constrained; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_execpolicy::Policy; use codex_protocol::models::DeveloperInstructions; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use codex_utils_absolute_path::AbsolutePathBuf; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/personality.rs b/codex-rs/core/tests/suite/personality.rs index d15147ed36..0b4d485cfb 100644 --- a/codex-rs/core/tests/suite/personality.rs +++ b/codex-rs/core/tests/suite/personality.rs @@ -2,10 +2,6 @@ use codex_core::config::types::Personality; use codex_core::features::Feature; use codex_core::models_manager::manager::ModelsManager; use codex_core::models_manager::manager::RefreshStrategy; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ConfigShellToolType; use codex_protocol::openai_models::ModelInfo; @@ -17,6 +13,10 @@ use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::openai_models::ReasoningEffortPreset; use codex_protocol::openai_models::TruncationPolicyConfig; use codex_protocol::openai_models::default_input_modalities; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::load_default_config_for_test; use core_test_support::responses::mount_models_once; diff --git a/codex-rs/core/tests/suite/prompt_caching.rs b/codex-rs/core/tests/suite/prompt_caching.rs index 351d1d5752..38a8145d50 100644 --- a/codex-rs/core/tests/suite/prompt_caching.rs +++ b/codex-rs/core/tests/suite/prompt_caching.rs @@ -2,19 +2,19 @@ use codex_apply_patch::APPLY_PATCH_TOOL_INSTRUCTIONS; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::ENVIRONMENT_CONTEXT_OPEN_TAG; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol_config_types::ReasoningSummary; use codex_core::shell::Shell; use codex_core::shell::default_user_shell; use codex_protocol::config_types::CollaborationMode; use codex_protocol::config_types::ModeKind; +use codex_protocol::config_types::ReasoningSummary; use codex_protocol::config_types::Settings; use codex_protocol::config_types::WebSearchMode; use codex_protocol::openai_models::ReasoningEffort; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::ENVIRONMENT_CONTEXT_OPEN_TAG; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use codex_utils_absolute_path::AbsolutePathBuf; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/quota_exceeded.rs b/codex-rs/core/tests/suite/quota_exceeded.rs index afa23275e0..466680e6a8 100644 --- a/codex-rs/core/tests/suite/quota_exceeded.rs +++ b/codex-rs/core/tests/suite/quota_exceeded.rs @@ -1,6 +1,6 @@ use anyhow::Result; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_response_created; use core_test_support::responses::mount_sse_once; diff --git a/codex-rs/core/tests/suite/realtime_conversation.rs b/codex-rs/core/tests/suite/realtime_conversation.rs index 3d94ccf533..466686788d 100644 --- a/codex-rs/core/tests/suite/realtime_conversation.rs +++ b/codex-rs/core/tests/suite/realtime_conversation.rs @@ -1,14 +1,14 @@ use anyhow::Result; -use codex_core::protocol::CodexErrorInfo; -use codex_core::protocol::ConversationAudioParams; -use codex_core::protocol::ConversationStartParams; -use codex_core::protocol::ConversationTextParams; -use codex_core::protocol::ErrorEvent; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::RealtimeAudioFrame; -use codex_core::protocol::RealtimeConversationRealtimeEvent; -use codex_core::protocol::RealtimeEvent; +use codex_protocol::protocol::CodexErrorInfo; +use codex_protocol::protocol::ConversationAudioParams; +use codex_protocol::protocol::ConversationStartParams; +use codex_protocol::protocol::ConversationTextParams; +use codex_protocol::protocol::ErrorEvent; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::RealtimeAudioFrame; +use codex_protocol::protocol::RealtimeConversationRealtimeEvent; +use codex_protocol::protocol::RealtimeEvent; use core_test_support::responses::start_websocket_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::test_codex; diff --git a/codex-rs/core/tests/suite/remote_models.rs b/codex-rs/core/tests/suite/remote_models.rs index 110150d447..f4d0d1b843 100644 --- a/codex-rs/core/tests/suite/remote_models.rs +++ b/codex-rs/core/tests/suite/remote_models.rs @@ -9,11 +9,6 @@ use codex_core::ModelProviderInfo; use codex_core::built_in_model_providers; use codex_core::models_manager::manager::ModelsManager; use codex_core::models_manager::manager::RefreshStrategy; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecCommandSource; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ConfigShellToolType; use codex_protocol::openai_models::ModelInfo; @@ -24,6 +19,11 @@ use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::openai_models::ReasoningEffortPreset; use codex_protocol::openai_models::TruncationPolicyConfig; use codex_protocol::openai_models::default_input_modalities; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecCommandSource; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::load_default_config_for_test; use core_test_support::responses::ev_assistant_message; diff --git a/codex-rs/core/tests/suite/request_compression.rs b/codex-rs/core/tests/suite/request_compression.rs index 9a99b913fd..9942435048 100644 --- a/codex-rs/core/tests/suite/request_compression.rs +++ b/codex-rs/core/tests/suite/request_compression.rs @@ -2,8 +2,8 @@ use codex_core::CodexAuth; use codex_core::features::Feature; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_completed; use core_test_support::responses::ev_response_created; diff --git a/codex-rs/core/tests/suite/request_user_input.rs b/codex-rs/core/tests/suite/request_user_input.rs index 6d8b8cb035..ac6c1d2f3f 100644 --- a/codex-rs/core/tests/suite/request_user_input.rs +++ b/codex-rs/core/tests/suite/request_user_input.rs @@ -3,14 +3,14 @@ use std::collections::HashMap; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::CollaborationMode; use codex_protocol::config_types::ModeKind; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::config_types::Settings; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::request_user_input::RequestUserInputAnswer; use codex_protocol::request_user_input::RequestUserInputResponse; use codex_protocol::user_input::UserInput; diff --git a/codex-rs/core/tests/suite/resume.rs b/codex-rs/core/tests/suite/resume.rs index 261ec58089..3d75879e49 100644 --- a/codex-rs/core/tests/suite/resume.rs +++ b/codex-rs/core/tests/suite/resume.rs @@ -1,6 +1,6 @@ use anyhow::Result; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::ByteRange; use codex_protocol::user_input::TextElement; use codex_protocol::user_input::UserInput; diff --git a/codex-rs/core/tests/suite/resume_warning.rs b/codex-rs/core/tests/suite/resume_warning.rs index 89a08b9e55..b0503d5929 100644 --- a/codex-rs/core/tests/suite/resume_warning.rs +++ b/codex-rs/core/tests/suite/resume_warning.rs @@ -2,17 +2,17 @@ use codex_core::CodexAuth; use codex_core::NewThread; -use codex_core::protocol::EventMsg; -use codex_core::protocol::InitialHistory; -use codex_core::protocol::ResumedHistory; -use codex_core::protocol::RolloutItem; -use codex_core::protocol::TurnCompleteEvent; -use codex_core::protocol::TurnContextItem; -use codex_core::protocol::TurnStartedEvent; -use codex_core::protocol::UserMessageEvent; -use codex_core::protocol::WarningEvent; use codex_protocol::ThreadId; use codex_protocol::config_types::ModeKind; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::InitialHistory; +use codex_protocol::protocol::ResumedHistory; +use codex_protocol::protocol::RolloutItem; +use codex_protocol::protocol::TurnCompleteEvent; +use codex_protocol::protocol::TurnContextItem; +use codex_protocol::protocol::TurnStartedEvent; +use codex_protocol::protocol::UserMessageEvent; +use codex_protocol::protocol::WarningEvent; use core::time::Duration; use core_test_support::load_default_config_for_test; use core_test_support::wait_for_event; diff --git a/codex-rs/core/tests/suite/review.rs b/codex-rs/core/tests/suite/review.rs index 113776b81f..a123981444 100644 --- a/codex-rs/core/tests/suite/review.rs +++ b/codex-rs/core/tests/suite/review.rs @@ -1,21 +1,21 @@ use codex_core::CodexThread; -use codex_core::ContentItem; use codex_core::REVIEW_PROMPT; -use codex_core::ResponseItem; use codex_core::config::Config; -use codex_core::protocol::ENVIRONMENT_CONTEXT_OPEN_TAG; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExitedReviewModeEvent; -use codex_core::protocol::Op; -use codex_core::protocol::ReviewCodeLocation; -use codex_core::protocol::ReviewFinding; -use codex_core::protocol::ReviewLineRange; -use codex_core::protocol::ReviewOutputEvent; -use codex_core::protocol::ReviewRequest; -use codex_core::protocol::ReviewTarget; -use codex_core::protocol::RolloutItem; -use codex_core::protocol::RolloutLine; use codex_core::review_format::render_review_output_text; +use codex_protocol::models::ContentItem; +use codex_protocol::models::ResponseItem; +use codex_protocol::protocol::ENVIRONMENT_CONTEXT_OPEN_TAG; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExitedReviewModeEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::ReviewCodeLocation; +use codex_protocol::protocol::ReviewFinding; +use codex_protocol::protocol::ReviewLineRange; +use codex_protocol::protocol::ReviewOutputEvent; +use codex_protocol::protocol::ReviewRequest; +use codex_protocol::protocol::ReviewTarget; +use codex_protocol::protocol::RolloutItem; +use codex_protocol::protocol::RolloutLine; use codex_protocol::user_input::UserInput; use core_test_support::load_sse_fixture_with_id_from_str; use core_test_support::responses::ResponseMock; diff --git a/codex-rs/core/tests/suite/rmcp_client.rs b/codex-rs/core/tests/suite/rmcp_client.rs index 4c8cd563a6..df389c5ef7 100644 --- a/codex-rs/core/tests/suite/rmcp_client.rs +++ b/codex-rs/core/tests/suite/rmcp_client.rs @@ -13,12 +13,6 @@ use codex_core::config::types::McpServerConfig; use codex_core::config::types::McpServerTransportConfig; use codex_core::models_manager::manager::RefreshStrategy; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::McpInvocation; -use codex_core::protocol::McpToolCallBeginEvent; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ConfigShellToolType; use codex_protocol::openai_models::InputModality; @@ -27,6 +21,12 @@ use codex_protocol::openai_models::ModelVisibility; use codex_protocol::openai_models::ModelsResponse; use codex_protocol::openai_models::ReasoningEffortPreset; use codex_protocol::openai_models::TruncationPolicyConfig; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::McpInvocation; +use codex_protocol::protocol::McpToolCallBeginEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use codex_utils_cargo_bin::cargo_bin; use core_test_support::responses; diff --git a/codex-rs/core/tests/suite/rollout_list_find.rs b/codex-rs/core/tests/suite/rollout_list_find.rs index d9f92b85bd..83350a0d02 100644 --- a/codex-rs/core/tests/suite/rollout_list_find.rs +++ b/codex-rs/core/tests/suite/rollout_list_find.rs @@ -11,9 +11,9 @@ use codex_core::config::ConfigBuilder; use codex_core::find_archived_thread_path_by_id_str; use codex_core::find_thread_path_by_id_str; use codex_core::find_thread_path_by_name_str; -use codex_core::protocol::SessionSource; use codex_protocol::ThreadId; use codex_protocol::models::BaseInstructions; +use codex_protocol::protocol::SessionSource; use codex_state::StateRuntime; use codex_state::ThreadMetadataBuilder; use pretty_assertions::assert_eq; diff --git a/codex-rs/core/tests/suite/safety_check_downgrade.rs b/codex-rs/core/tests/suite/safety_check_downgrade.rs index 6f4fbe553b..247cfdaedc 100644 --- a/codex-rs/core/tests/suite/safety_check_downgrade.rs +++ b/codex-rs/core/tests/suite/safety_check_downgrade.rs @@ -1,12 +1,12 @@ use anyhow::Result; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ModelRerouteReason; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::models::ContentItem; use codex_protocol::models::ResponseItem; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ModelRerouteReason; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_function_call; diff --git a/codex-rs/core/tests/suite/search_tool.rs b/codex-rs/core/tests/suite/search_tool.rs index 7d2de4eb9a..1caab45b12 100644 --- a/codex-rs/core/tests/suite/search_tool.rs +++ b/codex-rs/core/tests/suite/search_tool.rs @@ -11,10 +11,10 @@ use codex_core::config::Config; use codex_core::config::types::McpServerConfig; use codex_core::config::types::McpServerTransportConfig; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::apps_test_server::AppsTestServer; use core_test_support::responses::ResponsesRequest; diff --git a/codex-rs/core/tests/suite/seatbelt.rs b/codex-rs/core/tests/suite/seatbelt.rs index 89674494a9..cfb91caeed 100644 --- a/codex-rs/core/tests/suite/seatbelt.rs +++ b/codex-rs/core/tests/suite/seatbelt.rs @@ -7,10 +7,10 @@ use std::collections::HashMap; use std::path::Path; use std::path::PathBuf; -use codex_core::protocol::SandboxPolicy; use codex_core::seatbelt::spawn_command_under_seatbelt; use codex_core::spawn::CODEX_SANDBOX_ENV_VAR; use codex_core::spawn::StdioPolicy; +use codex_protocol::protocol::SandboxPolicy; use tempfile::TempDir; struct TestScenario { diff --git a/codex-rs/core/tests/suite/shell_serialization.rs b/codex-rs/core/tests/suite/shell_serialization.rs index 6969b6533d..3e5942da6a 100644 --- a/codex-rs/core/tests/suite/shell_serialization.rs +++ b/codex-rs/core/tests/suite/shell_serialization.rs @@ -2,7 +2,7 @@ #![allow(clippy::expect_used)] use anyhow::Result; -use codex_core::protocol::SandboxPolicy; +use codex_protocol::protocol::SandboxPolicy; use core_test_support::assert_regex_match; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/shell_snapshot.rs b/codex-rs/core/tests/suite/shell_snapshot.rs index 6a0983a6ed..2a8017b393 100644 --- a/codex-rs/core/tests/suite/shell_snapshot.rs +++ b/codex-rs/core/tests/suite/shell_snapshot.rs @@ -1,12 +1,12 @@ use anyhow::Result; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecCommandBeginEvent; -use codex_core::protocol::ExecCommandEndEvent; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecCommandBeginEvent; +use codex_protocol::protocol::ExecCommandEndEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/skills.rs b/codex-rs/core/tests/suite/skills.rs index 54cdba4d21..f681ca1b64 100644 --- a/codex-rs/core/tests/suite/skills.rs +++ b/codex-rs/core/tests/suite/skills.rs @@ -2,9 +2,9 @@ #![allow(clippy::unwrap_used, clippy::expect_used)] use anyhow::Result; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_completed; @@ -84,7 +84,7 @@ async fn user_turn_includes_skill_instructions() -> Result<()> { .await?; core_test_support::wait_for_event(test.codex.as_ref(), |event| { - matches!(event, codex_core::protocol::EventMsg::TurnComplete(_)) + matches!(event, codex_protocol::protocol::EventMsg::TurnComplete(_)) }) .await; @@ -124,7 +124,9 @@ async fn skill_load_errors_surface_in_session_configured() -> Result<()> { .await?; let response = core_test_support::wait_for_event_match(test.codex.as_ref(), |event| match event { - codex_core::protocol::EventMsg::ListSkillsResponse(response) => Some(response.clone()), + codex_protocol::protocol::EventMsg::ListSkillsResponse(response) => { + Some(response.clone()) + } _ => None, }) .await; @@ -192,7 +194,9 @@ async fn list_skills_includes_system_cache_entries() -> Result<()> { .await?; let response = core_test_support::wait_for_event_match(test.codex.as_ref(), |event| match event { - codex_core::protocol::EventMsg::ListSkillsResponse(response) => Some(response.clone()), + codex_protocol::protocol::EventMsg::ListSkillsResponse(response) => { + Some(response.clone()) + } _ => None, }) .await; diff --git a/codex-rs/core/tests/suite/stream_error_allows_next_turn.rs b/codex-rs/core/tests/suite/stream_error_allows_next_turn.rs index 3562ec2500..a8d1b37950 100644 --- a/codex-rs/core/tests/suite/stream_error_allows_next_turn.rs +++ b/codex-rs/core/tests/suite/stream_error_allows_next_turn.rs @@ -1,7 +1,7 @@ use codex_core::ModelProviderInfo; use codex_core::WireApi; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_completed; use core_test_support::responses::ev_response_created; diff --git a/codex-rs/core/tests/suite/stream_no_completed.rs b/codex-rs/core/tests/suite/stream_no_completed.rs index 6528e6277d..ac6d59b21b 100644 --- a/codex-rs/core/tests/suite/stream_no_completed.rs +++ b/codex-rs/core/tests/suite/stream_no_completed.rs @@ -3,8 +3,8 @@ use codex_core::ModelProviderInfo; use codex_core::WireApi; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::UserInput; use core_test_support::load_sse_fixture; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/tool_harness.rs b/codex-rs/core/tests/suite/tool_harness.rs index 6114760253..507c8eb068 100644 --- a/codex-rs/core/tests/suite/tool_harness.rs +++ b/codex-rs/core/tests/suite/tool_harness.rs @@ -4,12 +4,12 @@ use std::fs; use assert_matches::assert_matches; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::plan_tool::StepStatus; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::assert_regex_match; use core_test_support::responses; diff --git a/codex-rs/core/tests/suite/tool_parallelism.rs b/codex-rs/core/tests/suite/tool_parallelism.rs index 8db03c3d10..357dcff0fd 100644 --- a/codex-rs/core/tests/suite/tool_parallelism.rs +++ b/codex-rs/core/tests/suite/tool_parallelism.rs @@ -5,11 +5,11 @@ use std::fs; use std::time::Duration; use std::time::Instant; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/tools.rs b/codex-rs/core/tests/suite/tools.rs index 5e62cd698f..9f1803c75e 100644 --- a/codex-rs/core/tests/suite/tools.rs +++ b/codex-rs/core/tests/suite/tools.rs @@ -8,9 +8,9 @@ use std::time::Instant; use anyhow::Context; use anyhow::Result; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::SandboxPolicy; use codex_core::sandboxing::SandboxPermissions; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::SandboxPolicy; use core_test_support::assert_regex_match; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/truncation.rs b/codex-rs/core/tests/suite/truncation.rs index 9475a9c510..8ede6c621f 100644 --- a/codex-rs/core/tests/suite/truncation.rs +++ b/codex-rs/core/tests/suite/truncation.rs @@ -5,11 +5,11 @@ use anyhow::Context; use anyhow::Result; use codex_core::config::types::McpServerConfig; use codex_core::config::types::McpServerTransportConfig; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::assert_regex_match; use core_test_support::responses; diff --git a/codex-rs/core/tests/suite/undo.rs b/codex-rs/core/tests/suite/undo.rs index 61bc3b4fdf..e129a815bf 100644 --- a/codex-rs/core/tests/suite/undo.rs +++ b/codex-rs/core/tests/suite/undo.rs @@ -10,9 +10,9 @@ use anyhow::Result; use anyhow::bail; use codex_core::CodexThread; use codex_core::features::Feature; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::UndoCompletedEvent; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::UndoCompletedEvent; use core_test_support::responses::ev_apply_patch_function_call; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_completed; diff --git a/codex-rs/core/tests/suite/unified_exec.rs b/codex-rs/core/tests/suite/unified_exec.rs index 34c5bd9617..705e415620 100644 --- a/codex-rs/core/tests/suite/unified_exec.rs +++ b/codex-rs/core/tests/suite/unified_exec.rs @@ -6,12 +6,12 @@ use std::sync::OnceLock; use anyhow::Context; use anyhow::Result; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecCommandSource; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecCommandSource; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::assert_regex_match; use core_test_support::process::process_is_alive; diff --git a/codex-rs/core/tests/suite/unstable_features_warning.rs b/codex-rs/core/tests/suite/unstable_features_warning.rs index e5fdf61fdb..a215ecbc06 100644 --- a/codex-rs/core/tests/suite/unstable_features_warning.rs +++ b/codex-rs/core/tests/suite/unstable_features_warning.rs @@ -4,9 +4,9 @@ use codex_config::CONFIG_TOML_FILE; use codex_core::CodexAuth; use codex_core::NewThread; use codex_core::features::Feature; -use codex_core::protocol::EventMsg; -use codex_core::protocol::InitialHistory; -use codex_core::protocol::WarningEvent; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::InitialHistory; +use codex_protocol::protocol::WarningEvent; use codex_utils_absolute_path::AbsolutePathBuf; use core::time::Duration; use core_test_support::load_default_config_for_test; diff --git a/codex-rs/core/tests/suite/user_notification.rs b/codex-rs/core/tests/suite/user_notification.rs index 69f30bb5ad..5ef939776b 100644 --- a/codex-rs/core/tests/suite/user_notification.rs +++ b/codex-rs/core/tests/suite/user_notification.rs @@ -2,8 +2,8 @@ use std::os::unix::fs::PermissionsExt; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::UserInput; use core_test_support::fs_wait; use core_test_support::responses; diff --git a/codex-rs/core/tests/suite/user_shell_cmd.rs b/codex-rs/core/tests/suite/user_shell_cmd.rs index a021509eea..c38b86e443 100644 --- a/codex-rs/core/tests/suite/user_shell_cmd.rs +++ b/codex-rs/core/tests/suite/user_shell_cmd.rs @@ -1,14 +1,14 @@ use anyhow::Context; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecCommandEndEvent; -use codex_core::protocol::ExecCommandSource; -use codex_core::protocol::ExecOutputStream; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol::TurnAbortReason; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecCommandEndEvent; +use codex_protocol::protocol::ExecCommandSource; +use codex_protocol::protocol::ExecOutputStream; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; +use codex_protocol::protocol::TurnAbortReason; use codex_protocol::user_input::UserInput; use core_test_support::assert_regex_match; use core_test_support::responses; diff --git a/codex-rs/core/tests/suite/view_image.rs b/codex-rs/core/tests/suite/view_image.rs index bad9efa2d0..96315e5c75 100644 --- a/codex-rs/core/tests/suite/view_image.rs +++ b/codex-rs/core/tests/suite/view_image.rs @@ -4,10 +4,6 @@ use base64::Engine; use base64::engine::general_purpose::STANDARD as BASE64_STANDARD; use codex_core::CodexAuth; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ConfigShellToolType; use codex_protocol::openai_models::InputModality; @@ -17,6 +13,10 @@ use codex_protocol::openai_models::ModelsResponse; use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::openai_models::ReasoningEffortPreset; use codex_protocol::openai_models::TruncationPolicyConfig; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses; use core_test_support::responses::ev_assistant_message; diff --git a/codex-rs/core/tests/suite/web_search.rs b/codex-rs/core/tests/suite/web_search.rs index 8909e01cf4..e7082a832c 100644 --- a/codex-rs/core/tests/suite/web_search.rs +++ b/codex-rs/core/tests/suite/web_search.rs @@ -1,8 +1,8 @@ #![allow(clippy::unwrap_used)] use codex_core::features::Feature; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::WebSearchMode; +use codex_protocol::protocol::SandboxPolicy; use core_test_support::responses; use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; diff --git a/codex-rs/core/tests/suite/websocket_fallback.rs b/codex-rs/core/tests/suite/websocket_fallback.rs index ceb7fc6057..b5c27ae923 100644 --- a/codex-rs/core/tests/suite/websocket_fallback.rs +++ b/codex-rs/core/tests/suite/websocket_fallback.rs @@ -1,10 +1,10 @@ use anyhow::Result; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::ReasoningSummary; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::user_input::UserInput; use core_test_support::responses; use core_test_support::responses::ev_completed; diff --git a/codex-rs/exec-server/Cargo.toml b/codex-rs/exec-server/Cargo.toml index 9346db63c1..4d9d79270d 100644 --- a/codex-rs/exec-server/Cargo.toml +++ b/codex-rs/exec-server/Cargo.toml @@ -25,6 +25,8 @@ async-trait = { workspace = true } clap = { workspace = true, features = ["derive"] } codex-core = { workspace = true } codex-execpolicy = { workspace = true } +codex-protocol = { workspace = true } +codex-shell-command = { workspace = true } libc = { workspace = true } path-absolutize = { workspace = true } rmcp = { workspace = true, default-features = false, features = [ @@ -57,6 +59,7 @@ tracing-subscriber = { workspace = true, features = ["env-filter", "fmt"] } [dev-dependencies] codex-utils-cargo-bin = { workspace = true } +codex-protocol = { workspace = true } exec_server_test_support = { workspace = true } maplit = { workspace = true } pretty_assertions = { workspace = true } diff --git a/codex-rs/exec-server/src/posix.rs b/codex-rs/exec-server/src/posix.rs index 7f9ce569c6..907ec14b68 100644 --- a/codex-rs/exec-server/src/posix.rs +++ b/codex-rs/exec-server/src/posix.rs @@ -62,11 +62,11 @@ use std::sync::Arc; use anyhow::Context as _; use clap::Parser; use codex_core::config::find_codex_home; -use codex_core::is_dangerous_command::command_might_be_dangerous; use codex_core::sandboxing::SandboxPermissions; use codex_execpolicy::Decision; use codex_execpolicy::Policy; use codex_execpolicy::RuleMatch; +use codex_shell_command::is_dangerous_command::command_might_be_dangerous; use rmcp::ErrorData as McpError; use tokio::sync::RwLock; use tracing_subscriber::EnvFilter; diff --git a/codex-rs/exec-server/src/posix/escalate_server.rs b/codex-rs/exec-server/src/posix/escalate_server.rs index f66e92dc8b..de4bdfc2cd 100644 --- a/codex-rs/exec-server/src/posix/escalate_server.rs +++ b/codex-rs/exec-server/src/posix/escalate_server.rs @@ -10,8 +10,8 @@ use path_absolutize::Absolutize as _; use codex_core::SandboxState; use codex_core::exec::process_exec_tool_call; -use codex_core::protocol_config_types::WindowsSandboxLevel; use codex_core::sandboxing::SandboxPermissions; +use codex_protocol::config_types::WindowsSandboxLevel; use tokio::process::Command; use tokio_util::sync::CancellationToken; diff --git a/codex-rs/exec-server/src/posix/mcp.rs b/codex-rs/exec-server/src/posix/mcp.rs index 7e8d0ccdff..5319a1f916 100644 --- a/codex-rs/exec-server/src/posix/mcp.rs +++ b/codex-rs/exec-server/src/posix/mcp.rs @@ -7,8 +7,8 @@ use anyhow::Result; use codex_core::MCP_SANDBOX_STATE_CAPABILITY; use codex_core::MCP_SANDBOX_STATE_METHOD; use codex_core::SandboxState; -use codex_core::protocol::SandboxPolicy; use codex_execpolicy::Policy; +use codex_protocol::protocol::SandboxPolicy; use rmcp::ErrorData as McpError; use rmcp::RoleServer; use rmcp::ServerHandler; diff --git a/codex-rs/exec-server/tests/common/Cargo.toml b/codex-rs/exec-server/tests/common/Cargo.toml index 6444b61f97..ca1a713c27 100644 --- a/codex-rs/exec-server/tests/common/Cargo.toml +++ b/codex-rs/exec-server/tests/common/Cargo.toml @@ -10,6 +10,7 @@ path = "lib.rs" [dependencies] anyhow = { workspace = true } codex-core = { workspace = true } +codex-protocol = { workspace = true } codex-utils-cargo-bin = { workspace = true } rmcp = { workspace = true } serde_json = { workspace = true } diff --git a/codex-rs/exec-server/tests/common/lib.rs b/codex-rs/exec-server/tests/common/lib.rs index 57fce3a150..bd602d09c8 100644 --- a/codex-rs/exec-server/tests/common/lib.rs +++ b/codex-rs/exec-server/tests/common/lib.rs @@ -1,6 +1,6 @@ use codex_core::MCP_SANDBOX_STATE_METHOD; use codex_core::SandboxState; -use codex_core::protocol::SandboxPolicy; +use codex_protocol::protocol::SandboxPolicy; use codex_utils_cargo_bin::find_resource; use rmcp::ClientHandler; use rmcp::ErrorData as McpError; diff --git a/codex-rs/exec/src/event_processor.rs b/codex-rs/exec/src/event_processor.rs index 2a0b1eb833..fc9d123e0d 100644 --- a/codex-rs/exec/src/event_processor.rs +++ b/codex-rs/exec/src/event_processor.rs @@ -1,8 +1,8 @@ use std::path::Path; use codex_core::config::Config; -use codex_core::protocol::Event; -use codex_core::protocol::SessionConfiguredEvent; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::SessionConfiguredEvent; pub(crate) enum CodexStatus { Running, diff --git a/codex-rs/exec/src/event_processor_with_human_output.rs b/codex-rs/exec/src/event_processor_with_human_output.rs index 1e2a1b9e6d..13599294d5 100644 --- a/codex-rs/exec/src/event_processor_with_human_output.rs +++ b/codex-rs/exec/src/event_processor_with_human_output.rs @@ -1,39 +1,39 @@ use codex_core::config::Config; -use codex_core::protocol::AgentMessageEvent; -use codex_core::protocol::AgentReasoningRawContentEvent; -use codex_core::protocol::AgentStatus; -use codex_core::protocol::BackgroundEventEvent; -use codex_core::protocol::CollabAgentInteractionBeginEvent; -use codex_core::protocol::CollabAgentInteractionEndEvent; -use codex_core::protocol::CollabAgentSpawnBeginEvent; -use codex_core::protocol::CollabAgentSpawnEndEvent; -use codex_core::protocol::CollabCloseBeginEvent; -use codex_core::protocol::CollabCloseEndEvent; -use codex_core::protocol::CollabWaitingBeginEvent; -use codex_core::protocol::CollabWaitingEndEvent; -use codex_core::protocol::DeprecationNoticeEvent; -use codex_core::protocol::ErrorEvent; -use codex_core::protocol::Event; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecCommandBeginEvent; -use codex_core::protocol::ExecCommandEndEvent; -use codex_core::protocol::FileChange; -use codex_core::protocol::ItemCompletedEvent; -use codex_core::protocol::McpInvocation; -use codex_core::protocol::McpToolCallBeginEvent; -use codex_core::protocol::McpToolCallEndEvent; -use codex_core::protocol::PatchApplyBeginEvent; -use codex_core::protocol::PatchApplyEndEvent; -use codex_core::protocol::SessionConfiguredEvent; -use codex_core::protocol::StreamErrorEvent; -use codex_core::protocol::TurnAbortReason; -use codex_core::protocol::TurnCompleteEvent; -use codex_core::protocol::TurnDiffEvent; -use codex_core::protocol::WarningEvent; -use codex_core::protocol::WebSearchEndEvent; use codex_core::web_search::web_search_detail; use codex_protocol::items::TurnItem; use codex_protocol::num_format::format_with_separators; +use codex_protocol::protocol::AgentMessageEvent; +use codex_protocol::protocol::AgentReasoningRawContentEvent; +use codex_protocol::protocol::AgentStatus; +use codex_protocol::protocol::BackgroundEventEvent; +use codex_protocol::protocol::CollabAgentInteractionBeginEvent; +use codex_protocol::protocol::CollabAgentInteractionEndEvent; +use codex_protocol::protocol::CollabAgentSpawnBeginEvent; +use codex_protocol::protocol::CollabAgentSpawnEndEvent; +use codex_protocol::protocol::CollabCloseBeginEvent; +use codex_protocol::protocol::CollabCloseEndEvent; +use codex_protocol::protocol::CollabWaitingBeginEvent; +use codex_protocol::protocol::CollabWaitingEndEvent; +use codex_protocol::protocol::DeprecationNoticeEvent; +use codex_protocol::protocol::ErrorEvent; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecCommandBeginEvent; +use codex_protocol::protocol::ExecCommandEndEvent; +use codex_protocol::protocol::FileChange; +use codex_protocol::protocol::ItemCompletedEvent; +use codex_protocol::protocol::McpInvocation; +use codex_protocol::protocol::McpToolCallBeginEvent; +use codex_protocol::protocol::McpToolCallEndEvent; +use codex_protocol::protocol::PatchApplyBeginEvent; +use codex_protocol::protocol::PatchApplyEndEvent; +use codex_protocol::protocol::SessionConfiguredEvent; +use codex_protocol::protocol::StreamErrorEvent; +use codex_protocol::protocol::TurnAbortReason; +use codex_protocol::protocol::TurnCompleteEvent; +use codex_protocol::protocol::TurnDiffEvent; +use codex_protocol::protocol::WarningEvent; +use codex_protocol::protocol::WebSearchEndEvent; use codex_utils_elapsed::format_duration; use codex_utils_elapsed::format_elapsed; use owo_colors::OwoColorize; @@ -73,7 +73,7 @@ pub(crate) struct EventProcessorWithHumanOutput { show_agent_reasoning: bool, show_raw_agent_reasoning: bool, last_message_path: Option, - last_total_token_usage: Option, + last_total_token_usage: Option, final_message: Option, last_proposed_plan: Option, } @@ -201,10 +201,12 @@ impl EventProcessor for EventProcessorWithHumanOutput { } EventMsg::McpStartupUpdate(update) => { let status_text = match update.status { - codex_core::protocol::McpStartupStatus::Starting => "starting".to_string(), - codex_core::protocol::McpStartupStatus::Ready => "ready".to_string(), - codex_core::protocol::McpStartupStatus::Cancelled => "cancelled".to_string(), - codex_core::protocol::McpStartupStatus::Failed { ref error } => { + codex_protocol::protocol::McpStartupStatus::Starting => "starting".to_string(), + codex_protocol::protocol::McpStartupStatus::Ready => "ready".to_string(), + codex_protocol::protocol::McpStartupStatus::Cancelled => { + "cancelled".to_string() + } + codex_protocol::protocol::McpStartupStatus::Failed { ref error } => { format!("failed: {error}") } }; diff --git a/codex-rs/exec/src/event_processor_with_jsonl_output.rs b/codex-rs/exec/src/event_processor_with_jsonl_output.rs index 6cefcbd940..8bec82b15d 100644 --- a/codex-rs/exec/src/event_processor_with_jsonl_output.rs +++ b/codex-rs/exec/src/event_processor_with_jsonl_output.rs @@ -39,19 +39,19 @@ use crate::exec_events::TurnStartedEvent; use crate::exec_events::Usage; use crate::exec_events::WebSearchItem; use codex_core::config::Config; -use codex_core::protocol; -use codex_core::protocol::AgentStatus as CoreAgentStatus; -use codex_core::protocol::CollabAgentInteractionBeginEvent; -use codex_core::protocol::CollabAgentInteractionEndEvent; -use codex_core::protocol::CollabAgentSpawnBeginEvent; -use codex_core::protocol::CollabAgentSpawnEndEvent; -use codex_core::protocol::CollabCloseBeginEvent; -use codex_core::protocol::CollabCloseEndEvent; -use codex_core::protocol::CollabWaitingBeginEvent; -use codex_core::protocol::CollabWaitingEndEvent; use codex_protocol::models::WebSearchAction; use codex_protocol::plan_tool::StepStatus; use codex_protocol::plan_tool::UpdatePlanArgs; +use codex_protocol::protocol; +use codex_protocol::protocol::AgentStatus as CoreAgentStatus; +use codex_protocol::protocol::CollabAgentInteractionBeginEvent; +use codex_protocol::protocol::CollabAgentInteractionEndEvent; +use codex_protocol::protocol::CollabAgentSpawnBeginEvent; +use codex_protocol::protocol::CollabAgentSpawnEndEvent; +use codex_protocol::protocol::CollabCloseBeginEvent; +use codex_protocol::protocol::CollabCloseEndEvent; +use codex_protocol::protocol::CollabWaitingBeginEvent; +use codex_protocol::protocol::CollabWaitingEndEvent; use serde_json::Value as JsonValue; use tracing::error; use tracing::warn; @@ -65,7 +65,7 @@ pub struct EventProcessorWithJsonOutput { running_patch_applies: HashMap, // Tracks the todo list for the current turn (at most one per turn). running_todo_list: Option, - last_total_token_usage: Option, + last_total_token_usage: Option, running_mcp_tool_calls: HashMap, running_collab_tool_calls: HashMap, running_web_search_calls: HashMap, diff --git a/codex-rs/exec/src/lib.rs b/codex-rs/exec/src/lib.rs index 70ddb70f13..89180d89e6 100644 --- a/codex-rs/exec/src/lib.rs +++ b/codex-rs/exec/src/lib.rs @@ -32,15 +32,15 @@ use codex_core::config_loader::format_config_error_with_source; use codex_core::format_exec_policy_error_with_source; use codex_core::git_info::get_git_repo_root; use codex_core::models_manager::manager::RefreshStrategy; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::Event; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; -use codex_core::protocol::ReviewRequest; -use codex_core::protocol::ReviewTarget; -use codex_core::protocol::SessionSource; use codex_protocol::approvals::ElicitationAction; use codex_protocol::config_types::SandboxMode; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::ReviewRequest; +use codex_protocol::protocol::ReviewTarget; +use codex_protocol::protocol::SessionSource; use codex_protocol::user_input::UserInput; use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_oss::ensure_oss_provider_ready; @@ -570,7 +570,7 @@ pub async fn run_main(cli: Cli, codex_linux_sandbox_exe: Option) -> any } if let EventMsg::McpStartupUpdate(update) = &event.msg && required_mcp_servers.contains(&update.server) - && let codex_core::protocol::McpStartupStatus::Failed { error } = &update.status + && let codex_protocol::protocol::McpStartupStatus::Failed { error } = &update.status { error_seen = true; eprintln!( diff --git a/codex-rs/exec/tests/event_processor_with_json_output.rs b/codex-rs/exec/tests/event_processor_with_json_output.rs index c04fcdb532..6595e82eab 100644 --- a/codex-rs/exec/tests/event_processor_with_json_output.rs +++ b/codex-rs/exec/tests/event_processor_with_json_output.rs @@ -1,29 +1,3 @@ -use codex_core::protocol::AgentMessageEvent; -use codex_core::protocol::AgentReasoningEvent; -use codex_core::protocol::AgentStatus; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::CollabAgentSpawnBeginEvent; -use codex_core::protocol::CollabAgentSpawnEndEvent; -use codex_core::protocol::CollabWaitingEndEvent; -use codex_core::protocol::ErrorEvent; -use codex_core::protocol::Event; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecCommandBeginEvent; -use codex_core::protocol::ExecCommandEndEvent; -use codex_core::protocol::ExecCommandSource; -use codex_core::protocol::ExecCommandStatus as CoreExecCommandStatus; -use codex_core::protocol::FileChange; -use codex_core::protocol::McpInvocation; -use codex_core::protocol::McpToolCallBeginEvent; -use codex_core::protocol::McpToolCallEndEvent; -use codex_core::protocol::PatchApplyBeginEvent; -use codex_core::protocol::PatchApplyEndEvent; -use codex_core::protocol::PatchApplyStatus as CorePatchApplyStatus; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol::SessionConfiguredEvent; -use codex_core::protocol::WarningEvent; -use codex_core::protocol::WebSearchBeginEvent; -use codex_core::protocol::WebSearchEndEvent; use codex_exec::event_processor_with_jsonl_output::EventProcessorWithJsonOutput; use codex_exec::exec_events::AgentMessageItem; use codex_exec::exec_events::CollabAgentState; @@ -63,9 +37,35 @@ use codex_protocol::models::WebSearchAction; use codex_protocol::plan_tool::PlanItemArg; use codex_protocol::plan_tool::StepStatus; use codex_protocol::plan_tool::UpdatePlanArgs; +use codex_protocol::protocol::AgentMessageEvent; +use codex_protocol::protocol::AgentReasoningEvent; +use codex_protocol::protocol::AgentStatus; +use codex_protocol::protocol::AskForApproval; use codex_protocol::protocol::CodexErrorInfo; +use codex_protocol::protocol::CollabAgentSpawnBeginEvent; +use codex_protocol::protocol::CollabAgentSpawnEndEvent; +use codex_protocol::protocol::CollabWaitingEndEvent; +use codex_protocol::protocol::ErrorEvent; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecCommandBeginEvent; +use codex_protocol::protocol::ExecCommandEndEvent; use codex_protocol::protocol::ExecCommandOutputDeltaEvent; +use codex_protocol::protocol::ExecCommandSource; +use codex_protocol::protocol::ExecCommandStatus as CoreExecCommandStatus; use codex_protocol::protocol::ExecOutputStream; +use codex_protocol::protocol::FileChange; +use codex_protocol::protocol::McpInvocation; +use codex_protocol::protocol::McpToolCallBeginEvent; +use codex_protocol::protocol::McpToolCallEndEvent; +use codex_protocol::protocol::PatchApplyBeginEvent; +use codex_protocol::protocol::PatchApplyEndEvent; +use codex_protocol::protocol::PatchApplyStatus as CorePatchApplyStatus; +use codex_protocol::protocol::SandboxPolicy; +use codex_protocol::protocol::SessionConfiguredEvent; +use codex_protocol::protocol::WarningEvent; +use codex_protocol::protocol::WebSearchBeginEvent; +use codex_protocol::protocol::WebSearchEndEvent; use pretty_assertions::assert_eq; use rmcp::model::Content; use serde_json::json; @@ -118,7 +118,7 @@ fn task_started_produces_turn_started_event() { let mut ep = EventProcessorWithJsonOutput::new(None); let out = ep.collect_thread_events(&event( "t1", - EventMsg::TurnStarted(codex_core::protocol::TurnStartedEvent { + EventMsg::TurnStarted(codex_protocol::protocol::TurnStartedEvent { turn_id: "turn-1".to_string(), model_context_window: Some(32_000), collaboration_mode_kind: ModeKind::Default, @@ -312,7 +312,7 @@ fn plan_update_emits_todo_list_started_updated_and_completed() { // Task completes => item.completed (same id, latest state) let complete = event( "p3", - EventMsg::TurnComplete(codex_core::protocol::TurnCompleteEvent { + EventMsg::TurnComplete(codex_protocol::protocol::TurnCompleteEvent { turn_id: "turn-1".to_string(), last_agent_message: None, }), @@ -683,7 +683,7 @@ fn plan_update_after_complete_starts_new_todo_list_with_new_id() { let _ = ep.collect_thread_events(&start); let complete = event( "t2", - EventMsg::TurnComplete(codex_core::protocol::TurnCompleteEvent { + EventMsg::TurnComplete(codex_protocol::protocol::TurnCompleteEvent { turn_id: "turn-1".to_string(), last_agent_message: None, }), @@ -763,7 +763,7 @@ fn error_event_produces_error() { let mut ep = EventProcessorWithJsonOutput::new(None); let out = ep.collect_thread_events(&event( "e1", - EventMsg::Error(codex_core::protocol::ErrorEvent { + EventMsg::Error(codex_protocol::protocol::ErrorEvent { message: "boom".to_string(), codex_error_info: Some(CodexErrorInfo::Other), }), @@ -803,7 +803,7 @@ fn stream_error_event_produces_error() { let mut ep = EventProcessorWithJsonOutput::new(None); let out = ep.collect_thread_events(&event( "e1", - EventMsg::StreamError(codex_core::protocol::StreamErrorEvent { + EventMsg::StreamError(codex_protocol::protocol::StreamErrorEvent { message: "retrying".to_string(), codex_error_info: Some(CodexErrorInfo::Other), additional_details: None, @@ -837,7 +837,7 @@ fn error_followed_by_task_complete_produces_turn_failed() { let complete_event = event( "e2", - EventMsg::TurnComplete(codex_core::protocol::TurnCompleteEvent { + EventMsg::TurnComplete(codex_protocol::protocol::TurnCompleteEvent { turn_id: "turn-1".to_string(), last_agent_message: None, }), @@ -1267,21 +1267,21 @@ fn task_complete_produces_turn_completed_with_usage() { let mut ep = EventProcessorWithJsonOutput::new(None); // First, feed a TokenCount event with known totals. - let usage = codex_core::protocol::TokenUsage { + let usage = codex_protocol::protocol::TokenUsage { input_tokens: 1200, cached_input_tokens: 200, output_tokens: 345, reasoning_output_tokens: 0, total_tokens: 0, }; - let info = codex_core::protocol::TokenUsageInfo { + let info = codex_protocol::protocol::TokenUsageInfo { total_token_usage: usage.clone(), last_token_usage: usage, model_context_window: None, }; let token_count_event = event( "e1", - EventMsg::TokenCount(codex_core::protocol::TokenCountEvent { + EventMsg::TokenCount(codex_protocol::protocol::TokenCountEvent { info: Some(info), rate_limits: None, }), @@ -1291,7 +1291,7 @@ fn task_complete_produces_turn_completed_with_usage() { // Then TurnComplete should produce turn.completed with the captured usage. let complete_event = event( "e2", - EventMsg::TurnComplete(codex_core::protocol::TurnCompleteEvent { + EventMsg::TurnComplete(codex_protocol::protocol::TurnCompleteEvent { turn_id: "turn-1".to_string(), last_agent_message: Some("done".to_string()), }), diff --git a/codex-rs/exec/tests/suite/sandbox.rs b/codex-rs/exec/tests/suite/sandbox.rs index ce2e79eac2..e6dd37927b 100644 --- a/codex-rs/exec/tests/suite/sandbox.rs +++ b/codex-rs/exec/tests/suite/sandbox.rs @@ -1,6 +1,6 @@ #![cfg(unix)] -use codex_core::protocol::SandboxPolicy; use codex_core::spawn::StdioPolicy; +use codex_protocol::protocol::SandboxPolicy; use codex_utils_absolute_path::AbsolutePathBuf; use std::collections::HashMap; use std::future::Future; diff --git a/codex-rs/linux-sandbox/Cargo.toml b/codex-rs/linux-sandbox/Cargo.toml index ff16a569fe..63af5c81fa 100644 --- a/codex-rs/linux-sandbox/Cargo.toml +++ b/codex-rs/linux-sandbox/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [target.'cfg(target_os = "linux")'.dependencies] clap = { workspace = true, features = ["derive"] } codex-core = { workspace = true } +codex-protocol = { workspace = true } codex-utils-absolute-path = { workspace = true } landlock = { workspace = true } libc = { workspace = true } diff --git a/codex-rs/linux-sandbox/src/bwrap.rs b/codex-rs/linux-sandbox/src/bwrap.rs index 71704e7299..854774b781 100644 --- a/codex-rs/linux-sandbox/src/bwrap.rs +++ b/codex-rs/linux-sandbox/src/bwrap.rs @@ -15,8 +15,8 @@ use std::path::PathBuf; use codex_core::error::CodexErr; use codex_core::error::Result; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol::WritableRoot; +use codex_protocol::protocol::SandboxPolicy; +use codex_protocol::protocol::WritableRoot; /// Options that control how bubblewrap is invoked. #[derive(Debug, Clone, Copy, PartialEq, Eq)] @@ -322,7 +322,7 @@ fn find_first_non_existent_component(target_path: &Path) -> Option { #[cfg(test)] mod tests { use super::*; - use codex_core::protocol::SandboxPolicy; + use codex_protocol::protocol::SandboxPolicy; use pretty_assertions::assert_eq; #[test] diff --git a/codex-rs/linux-sandbox/src/landlock.rs b/codex-rs/linux-sandbox/src/landlock.rs index 8d568dba0a..621bfd5b60 100644 --- a/codex-rs/linux-sandbox/src/landlock.rs +++ b/codex-rs/linux-sandbox/src/landlock.rs @@ -8,7 +8,7 @@ use std::path::Path; use codex_core::error::CodexErr; use codex_core::error::Result; use codex_core::error::SandboxErr; -use codex_core::protocol::SandboxPolicy; +use codex_protocol::protocol::SandboxPolicy; use codex_utils_absolute_path::AbsolutePathBuf; use landlock::ABI; @@ -204,7 +204,7 @@ fn install_network_seccomp_filter_on_current_thread() -> std::result::Result<(), #[cfg(test)] mod tests { use super::should_install_network_seccomp; - use codex_core::protocol::SandboxPolicy; + use codex_protocol::protocol::SandboxPolicy; use pretty_assertions::assert_eq; #[test] diff --git a/codex-rs/linux-sandbox/src/linux_run_main.rs b/codex-rs/linux-sandbox/src/linux_run_main.rs index c2a6a4d312..84e7cb34fc 100644 --- a/codex-rs/linux-sandbox/src/linux_run_main.rs +++ b/codex-rs/linux-sandbox/src/linux_run_main.rs @@ -25,7 +25,7 @@ pub struct LandlockCommand { pub sandbox_policy_cwd: PathBuf, #[arg(long = "sandbox-policy")] - pub sandbox_policy: codex_core::protocol::SandboxPolicy, + pub sandbox_policy: codex_protocol::protocol::SandboxPolicy, /// Opt-in: use the bubblewrap-based Linux sandbox pipeline. /// @@ -142,7 +142,7 @@ pub fn run_main() -> ! { fn run_bwrap_with_proc_fallback( sandbox_policy_cwd: &Path, - sandbox_policy: &codex_core::protocol::SandboxPolicy, + sandbox_policy: &codex_protocol::protocol::SandboxPolicy, inner: Vec, mount_proc: bool, allow_network_for_proxy: bool, @@ -164,7 +164,7 @@ fn run_bwrap_with_proc_fallback( } fn bwrap_network_mode( - sandbox_policy: &codex_core::protocol::SandboxPolicy, + sandbox_policy: &codex_protocol::protocol::SandboxPolicy, allow_network_for_proxy: bool, ) -> BwrapNetworkMode { if allow_network_for_proxy { @@ -178,7 +178,7 @@ fn bwrap_network_mode( fn build_bwrap_argv( inner: Vec, - sandbox_policy: &codex_core::protocol::SandboxPolicy, + sandbox_policy: &codex_protocol::protocol::SandboxPolicy, sandbox_policy_cwd: &Path, options: BwrapOptions, ) -> Vec { @@ -201,7 +201,7 @@ fn build_bwrap_argv( fn preflight_proc_mount_support( sandbox_policy_cwd: &Path, - sandbox_policy: &codex_core::protocol::SandboxPolicy, + sandbox_policy: &codex_protocol::protocol::SandboxPolicy, ) -> bool { let preflight_command = vec![resolve_true_command()]; let preflight_argv = build_bwrap_argv( @@ -315,7 +315,7 @@ fn is_proc_mount_failure(stderr: &str) -> bool { /// Build the inner command that applies seccomp after bubblewrap. fn build_inner_seccomp_command( sandbox_policy_cwd: &Path, - sandbox_policy: &codex_core::protocol::SandboxPolicy, + sandbox_policy: &codex_protocol::protocol::SandboxPolicy, use_bwrap_sandbox: bool, allow_network_for_proxy: bool, command: Vec, @@ -374,7 +374,7 @@ fn exec_or_panic(command: Vec) -> ! { #[cfg(test)] mod tests { use super::*; - use codex_core::protocol::SandboxPolicy; + use codex_protocol::protocol::SandboxPolicy; use pretty_assertions::assert_eq; #[test] diff --git a/codex-rs/linux-sandbox/tests/suite/landlock.rs b/codex-rs/linux-sandbox/tests/suite/landlock.rs index 9a1b82413e..362fcaf35f 100644 --- a/codex-rs/linux-sandbox/tests/suite/landlock.rs +++ b/codex-rs/linux-sandbox/tests/suite/landlock.rs @@ -7,9 +7,9 @@ use codex_core::error::SandboxErr; use codex_core::exec::ExecParams; use codex_core::exec::process_exec_tool_call; use codex_core::exec_env::create_env; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol_config_types::WindowsSandboxLevel; use codex_core::sandboxing::SandboxPermissions; +use codex_protocol::config_types::WindowsSandboxLevel; +use codex_protocol::protocol::SandboxPolicy; use codex_utils_absolute_path::AbsolutePathBuf; use pretty_assertions::assert_eq; use std::collections::HashMap; diff --git a/codex-rs/mcp-server/Cargo.toml b/codex-rs/mcp-server/Cargo.toml index e3f0db82eb..2ecce383ce 100644 --- a/codex-rs/mcp-server/Cargo.toml +++ b/codex-rs/mcp-server/Cargo.toml @@ -20,6 +20,7 @@ anyhow = { workspace = true } codex-arg0 = { workspace = true } codex-core = { workspace = true } codex-protocol = { workspace = true } +codex-shell-command = { workspace = true } codex-utils-cli = { workspace = true } codex-utils-json-to-toml = { workspace = true } rmcp = { workspace = true } diff --git a/codex-rs/mcp-server/src/codex_tool_config.rs b/codex-rs/mcp-server/src/codex_tool_config.rs index cf34dc280e..3125221d1a 100644 --- a/codex-rs/mcp-server/src/codex_tool_config.rs +++ b/codex-rs/mcp-server/src/codex_tool_config.rs @@ -2,9 +2,9 @@ use codex_core::config::Config; use codex_core::config::ConfigOverrides; -use codex_core::protocol::AskForApproval; use codex_protocol::ThreadId; use codex_protocol::config_types::SandboxMode; +use codex_protocol::protocol::AskForApproval; use codex_utils_json_to_toml::json_to_toml; use rmcp::model::JsonObject; use rmcp::model::Tool; diff --git a/codex-rs/mcp-server/src/codex_tool_runner.rs b/codex-rs/mcp-server/src/codex_tool_runner.rs index 762052ccf4..b720a1b258 100644 --- a/codex-rs/mcp-server/src/codex_tool_runner.rs +++ b/codex-rs/mcp-server/src/codex_tool_runner.rs @@ -13,15 +13,15 @@ use codex_core::CodexThread; use codex_core::NewThread; use codex_core::ThreadManager; use codex_core::config::Config as CodexConfig; -use codex_core::protocol::AgentMessageEvent; -use codex_core::protocol::ApplyPatchApprovalRequestEvent; -use codex_core::protocol::Event; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecApprovalRequestEvent; -use codex_core::protocol::Op; -use codex_core::protocol::Submission; -use codex_core::protocol::TurnCompleteEvent; use codex_protocol::ThreadId; +use codex_protocol::protocol::AgentMessageEvent; +use codex_protocol::protocol::ApplyPatchApprovalRequestEvent; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecApprovalRequestEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::Submission; +use codex_protocol::protocol::TurnCompleteEvent; use codex_protocol::user_input::UserInput; use rmcp::model::CallToolResult; use rmcp::model::Content; diff --git a/codex-rs/mcp-server/src/exec_approval.rs b/codex-rs/mcp-server/src/exec_approval.rs index 54994f9fdb..3b5ef87cdb 100644 --- a/codex-rs/mcp-server/src/exec_approval.rs +++ b/codex-rs/mcp-server/src/exec_approval.rs @@ -2,10 +2,10 @@ use std::path::PathBuf; use std::sync::Arc; use codex_core::CodexThread; -use codex_core::protocol::Op; -use codex_core::protocol::ReviewDecision; use codex_protocol::ThreadId; use codex_protocol::parse_command::ParsedCommand; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::ReviewDecision; use rmcp::model::ErrorData; use rmcp::model::RequestId; use serde::Deserialize; diff --git a/codex-rs/mcp-server/src/message_processor.rs b/codex-rs/mcp-server/src/message_processor.rs index 3b18f2fd43..95d48aa822 100644 --- a/codex-rs/mcp-server/src/message_processor.rs +++ b/codex-rs/mcp-server/src/message_processor.rs @@ -6,9 +6,9 @@ use codex_core::ThreadManager; use codex_core::config::Config; use codex_core::default_client::USER_AGENT_SUFFIX; use codex_core::default_client::get_codex_user_agent; -use codex_core::protocol::Submission; use codex_protocol::ThreadId; use codex_protocol::protocol::SessionSource; +use codex_protocol::protocol::Submission; use rmcp::model::CallToolRequestParams; use rmcp::model::CallToolResult; use rmcp::model::ClientNotification; @@ -572,7 +572,7 @@ impl MessageProcessor { if let Err(e) = codex_arc .submit_with_id(Submission { id: request_id_string, - op: codex_core::protocol::Op::Interrupt, + op: codex_protocol::protocol::Op::Interrupt, }) .await { diff --git a/codex-rs/mcp-server/src/outgoing_message.rs b/codex-rs/mcp-server/src/outgoing_message.rs index 3f83e1990e..7dcfa0c233 100644 --- a/codex-rs/mcp-server/src/outgoing_message.rs +++ b/codex-rs/mcp-server/src/outgoing_message.rs @@ -2,8 +2,8 @@ use std::collections::HashMap; use std::sync::atomic::AtomicI64; use std::sync::atomic::Ordering; -use codex_core::protocol::Event; use codex_protocol::ThreadId; +use codex_protocol::protocol::Event; use rmcp::model::CustomNotification; use rmcp::model::CustomRequest; use rmcp::model::ErrorData; @@ -200,7 +200,7 @@ pub(crate) struct OutgoingNotificationParams { pub event: serde_json::Value, } -// Additional mcp-specific data to be added to a [`codex_core::protocol::Event`] as notification.params._meta +// Additional mcp-specific data to be added to a [`codex_protocol::protocol::Event`] as notification.params._meta // MCP Spec: https://modelcontextprotocol.io/specification/2025-06-18/basic#meta // Typescript Schema: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/0695a497eb50a804fc0e88c18a93a21a675d6b3e/schema/2025-06-18/schema.ts #[derive(Debug, Clone, PartialEq, Serialize)] @@ -231,12 +231,12 @@ mod tests { use std::path::PathBuf; use anyhow::Result; - use codex_core::protocol::AskForApproval; - use codex_core::protocol::EventMsg; - use codex_core::protocol::SandboxPolicy; - use codex_core::protocol::SessionConfiguredEvent; use codex_protocol::ThreadId; use codex_protocol::openai_models::ReasoningEffort; + use codex_protocol::protocol::AskForApproval; + use codex_protocol::protocol::EventMsg; + use codex_protocol::protocol::SandboxPolicy; + use codex_protocol::protocol::SessionConfiguredEvent; use pretty_assertions::assert_eq; use serde_json::json; use tempfile::NamedTempFile; diff --git a/codex-rs/mcp-server/src/patch_approval.rs b/codex-rs/mcp-server/src/patch_approval.rs index 60eba66433..e392694d3a 100644 --- a/codex-rs/mcp-server/src/patch_approval.rs +++ b/codex-rs/mcp-server/src/patch_approval.rs @@ -3,10 +3,10 @@ use std::path::PathBuf; use std::sync::Arc; use codex_core::CodexThread; -use codex_core::protocol::FileChange; -use codex_core::protocol::Op; -use codex_core::protocol::ReviewDecision; use codex_protocol::ThreadId; +use codex_protocol::protocol::FileChange; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::ReviewDecision; use rmcp::model::ErrorData; use rmcp::model::RequestId; use serde::Deserialize; diff --git a/codex-rs/mcp-server/tests/suite/codex_tool.rs b/codex-rs/mcp-server/tests/suite/codex_tool.rs index de8a9306d4..041fcc0217 100644 --- a/codex-rs/mcp-server/tests/suite/codex_tool.rs +++ b/codex-rs/mcp-server/tests/suite/codex_tool.rs @@ -3,15 +3,15 @@ use std::env; use std::path::Path; use std::path::PathBuf; -use codex_core::parse_command; -use codex_core::protocol::FileChange; -use codex_core::protocol::ReviewDecision; use codex_core::spawn::CODEX_SANDBOX_NETWORK_DISABLED_ENV_VAR; use codex_mcp_server::CodexToolCallParam; use codex_mcp_server::ExecApprovalElicitRequestParams; use codex_mcp_server::ExecApprovalResponse; use codex_mcp_server::PatchApprovalElicitRequestParams; use codex_mcp_server::PatchApprovalResponse; +use codex_protocol::protocol::FileChange; +use codex_protocol::protocol::ReviewDecision; +use codex_shell_command::parse_command; use pretty_assertions::assert_eq; use rmcp::model::JsonRpcResponse; use rmcp::model::JsonRpcVersion2_0; diff --git a/codex-rs/tui/Cargo.toml b/codex-rs/tui/Cargo.toml index f791a3fc98..683b0828dc 100644 --- a/codex-rs/tui/Cargo.toml +++ b/codex-rs/tui/Cargo.toml @@ -38,6 +38,7 @@ codex-file-search = { workspace = true } codex-login = { workspace = true } codex-otel = { workspace = true } codex-protocol = { workspace = true } +codex-shell-command = { workspace = true } codex-state = { workspace = true } codex-utils-approval-presets = { workspace = true } codex-utils-absolute-path = { workspace = true } diff --git a/codex-rs/tui/src/additional_dirs.rs b/codex-rs/tui/src/additional_dirs.rs index 98724aa161..f7d2ef5508 100644 --- a/codex-rs/tui/src/additional_dirs.rs +++ b/codex-rs/tui/src/additional_dirs.rs @@ -1,4 +1,4 @@ -use codex_core::protocol::SandboxPolicy; +use codex_protocol::protocol::SandboxPolicy; use std::path::PathBuf; /// Returns a warning describing why `--add-dir` entries will be ignored for the @@ -34,8 +34,8 @@ fn format_warning(additional_dirs: &[PathBuf]) -> String { #[cfg(test)] mod tests { use super::add_dir_warning_message; - use codex_core::protocol::NetworkAccess; - use codex_core::protocol::SandboxPolicy; + use codex_protocol::protocol::NetworkAccess; + use codex_protocol::protocol::SandboxPolicy; use pretty_assertions::assert_eq; use std::path::PathBuf; diff --git a/codex-rs/tui/src/app.rs b/codex-rs/tui/src/app.rs index 0090ef5e9b..ebbf757523 100644 --- a/codex-rs/tui/src/app.rs +++ b/codex-rs/tui/src/app.rs @@ -45,16 +45,6 @@ use codex_core::features::Feature; use codex_core::models_manager::manager::RefreshStrategy; use codex_core::models_manager::model_presets::HIDE_GPT_5_1_CODEX_MAX_MIGRATION_PROMPT_CONFIG; use codex_core::models_manager::model_presets::HIDE_GPT5_1_MIGRATION_PROMPT_CONFIG; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::Event; -use codex_core::protocol::EventMsg; -use codex_core::protocol::FinalOutput; -use codex_core::protocol::ListSkillsResponseEvent; -use codex_core::protocol::Op; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol::SessionSource; -use codex_core::protocol::SkillErrorInfo; -use codex_core::protocol::TokenUsage; #[cfg(target_os = "windows")] use codex_core::windows_sandbox::WindowsSandboxLevelExt; use codex_otel::OtelManager; @@ -67,7 +57,17 @@ use codex_protocol::items::TurnItem; use codex_protocol::openai_models::ModelPreset; use codex_protocol::openai_models::ModelUpgrade; use codex_protocol::openai_models::ReasoningEffort as ReasoningEffortConfig; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::FinalOutput; +use codex_protocol::protocol::ListSkillsResponseEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::SandboxPolicy; use codex_protocol::protocol::SessionConfiguredEvent; +use codex_protocol::protocol::SessionSource; +use codex_protocol::protocol::SkillErrorInfo; +use codex_protocol::protocol::TokenUsage; use codex_utils_absolute_path::AbsolutePathBuf; use color_eyre::eyre::Result; use color_eyre::eyre::WrapErr; @@ -1248,8 +1248,8 @@ impl App { != WindowsSandboxLevel::Disabled && matches!( app.config.permissions.sandbox_policy.get(), - codex_core::protocol::SandboxPolicy::WorkspaceWrite { .. } - | codex_core::protocol::SandboxPolicy::ReadOnly { .. } + codex_protocol::protocol::SandboxPolicy::WorkspaceWrite { .. } + | codex_protocol::protocol::SandboxPolicy::ReadOnly { .. } ) && !app .config @@ -2200,8 +2200,8 @@ impl App { #[cfg(target_os = "windows")] let policy_is_workspace_write_or_ro = matches!( &policy, - codex_core::protocol::SandboxPolicy::WorkspaceWrite { .. } - | codex_core::protocol::SandboxPolicy::ReadOnly { .. } + codex_protocol::protocol::SandboxPolicy::WorkspaceWrite { .. } + | codex_protocol::protocol::SandboxPolicy::ReadOnly { .. } ); let policy_for_chat = policy.clone(); @@ -2767,7 +2767,7 @@ impl App { (!model.starts_with("codex-auto-")).then(|| Self::reasoning_label(reasoning_effort)) } - pub(crate) fn token_usage(&self) -> codex_core::protocol::TokenUsage { + pub(crate) fn token_usage(&self) -> codex_protocol::protocol::TokenUsage { self.chat_widget.token_usage() } @@ -2939,7 +2939,7 @@ impl App { cwd: PathBuf, env_map: std::collections::HashMap, logs_base_dir: PathBuf, - sandbox_policy: codex_core::protocol::SandboxPolicy, + sandbox_policy: codex_protocol::protocol::SandboxPolicy, tx: AppEventSender, ) { tokio::task::spawn_blocking(move || { @@ -3000,16 +3000,16 @@ mod tests { use codex_core::CodexAuth; use codex_core::config::ConfigBuilder; use codex_core::config::ConfigOverrides; - use codex_core::protocol::AskForApproval; - use codex_core::protocol::Event; - use codex_core::protocol::EventMsg; - use codex_core::protocol::SandboxPolicy; - use codex_core::protocol::SessionConfiguredEvent; - use codex_core::protocol::SessionSource; - use codex_core::protocol::ThreadRolledBackEvent; - use codex_core::protocol::UserMessageEvent; use codex_otel::OtelManager; use codex_protocol::ThreadId; + use codex_protocol::protocol::AskForApproval; + use codex_protocol::protocol::Event; + use codex_protocol::protocol::EventMsg; + use codex_protocol::protocol::SandboxPolicy; + use codex_protocol::protocol::SessionConfiguredEvent; + use codex_protocol::protocol::SessionSource; + use codex_protocol::protocol::ThreadRolledBackEvent; + use codex_protocol::protocol::UserMessageEvent; use codex_protocol::user_input::TextElement; use codex_protocol::user_input::UserInput; use crossterm::event::KeyModifiers; diff --git a/codex-rs/tui/src/app_backtrack.rs b/codex-rs/tui/src/app_backtrack.rs index b9b5be2b5f..1bb2c29569 100644 --- a/codex-rs/tui/src/app_backtrack.rs +++ b/codex-rs/tui/src/app_backtrack.rs @@ -34,11 +34,11 @@ use crate::history_cell::UserHistoryCell; use crate::pager_overlay::Overlay; use crate::tui; use crate::tui::TuiEvent; -use codex_core::protocol::CodexErrorInfo; -use codex_core::protocol::ErrorEvent; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; use codex_protocol::ThreadId; +use codex_protocol::protocol::CodexErrorInfo; +use codex_protocol::protocol::ErrorEvent; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use codex_protocol::user_input::TextElement; use color_eyre::eyre::Result; use crossterm::event::KeyCode; diff --git a/codex-rs/tui/src/app_event.rs b/codex-rs/tui/src/app_event.rs index 17ce9f14b4..159cda88f4 100644 --- a/codex-rs/tui/src/app_event.rs +++ b/codex-rs/tui/src/app_event.rs @@ -11,11 +11,11 @@ use std::path::PathBuf; use codex_chatgpt::connectors::AppInfo; -use codex_core::protocol::Event; -use codex_core::protocol::RateLimitSnapshot; use codex_file_search::FileMatch; use codex_protocol::ThreadId; use codex_protocol::openai_models::ModelPreset; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::RateLimitSnapshot; use codex_utils_approval_presets::ApprovalPreset; use crate::bottom_pane::ApprovalRequest; @@ -23,11 +23,11 @@ use crate::bottom_pane::StatusLineItem; use crate::history_cell::HistoryCell; use codex_core::features::Feature; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::CollaborationModeMask; use codex_protocol::config_types::Personality; use codex_protocol::openai_models::ReasoningEffort; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::SandboxPolicy; #[derive(Debug, Clone, Copy, PartialEq, Eq)] #[cfg_attr(not(target_os = "windows"), allow(dead_code))] @@ -73,7 +73,7 @@ pub(crate) enum AppEvent { /// Forward an `Op` to the Agent. Using an `AppEvent` for this avoids /// bubbling channels through layers of widgets. - CodexOp(codex_core::protocol::Op), + CodexOp(codex_protocol::protocol::Op), /// Kick off an asynchronous file search for the given query (text after /// the `@`). Previous searches may be cancelled by the app layer so there diff --git a/codex-rs/tui/src/bottom_pane/approval_overlay.rs b/codex-rs/tui/src/bottom_pane/approval_overlay.rs index 169c8bdcc6..bac964b919 100644 --- a/codex-rs/tui/src/bottom_pane/approval_overlay.rs +++ b/codex-rs/tui/src/bottom_pane/approval_overlay.rs @@ -17,13 +17,13 @@ use crate::render::highlight::highlight_bash_to_lines; use crate::render::renderable::ColumnRenderable; use crate::render::renderable::Renderable; use codex_core::features::Features; -use codex_core::protocol::ElicitationAction; -use codex_core::protocol::ExecPolicyAmendment; -use codex_core::protocol::FileChange; -use codex_core::protocol::NetworkApprovalContext; -use codex_core::protocol::Op; -use codex_core::protocol::ReviewDecision; use codex_protocol::mcp::RequestId; +use codex_protocol::protocol::ElicitationAction; +use codex_protocol::protocol::ExecPolicyAmendment; +use codex_protocol::protocol::FileChange; +use codex_protocol::protocol::NetworkApprovalContext; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::ReviewDecision; use crossterm::event::KeyCode; use crossterm::event::KeyEvent; use crossterm::event::KeyEventKind; @@ -576,7 +576,7 @@ fn elicitation_options() -> Vec { mod tests { use super::*; use crate::app_event::AppEvent; - use codex_core::protocol::NetworkApprovalProtocol; + use codex_protocol::protocol::NetworkApprovalProtocol; use pretty_assertions::assert_eq; use tokio::sync::mpsc::unbounded_channel; diff --git a/codex-rs/tui/src/bottom_pane/chat_composer.rs b/codex-rs/tui/src/bottom_pane/chat_composer.rs index 91dfa00a52..8498cd9b42 100644 --- a/codex-rs/tui/src/bottom_pane/chat_composer.rs +++ b/codex-rs/tui/src/bottom_pane/chat_composer.rs @@ -3252,7 +3252,7 @@ impl ChatComposer { insert_text: format!("${skill_name}"), search_terms, path: Some(skill.path.to_string_lossy().into_owned()), - category_tag: (skill.scope == codex_core::protocol::SkillScope::Repo) + category_tag: (skill.scope == codex_protocol::protocol::SkillScope::Repo) .then(|| "[Repo]".to_string()), }); } diff --git a/codex-rs/tui/src/bottom_pane/chat_composer_history.rs b/codex-rs/tui/src/bottom_pane/chat_composer_history.rs index 604641d208..f6df497187 100644 --- a/codex-rs/tui/src/bottom_pane/chat_composer_history.rs +++ b/codex-rs/tui/src/bottom_pane/chat_composer_history.rs @@ -5,7 +5,7 @@ use crate::app_event::AppEvent; use crate::app_event_sender::AppEventSender; use crate::bottom_pane::MentionBinding; use crate::mention_codec::decode_history_mentions; -use codex_core::protocol::Op; +use codex_protocol::protocol::Op; use codex_protocol::user_input::TextElement; /// A composer history entry that can rehydrate draft state. @@ -292,7 +292,7 @@ impl ChatComposerHistory { mod tests { use super::*; use crate::app_event::AppEvent; - use codex_core::protocol::Op; + use codex_protocol::protocol::Op; use pretty_assertions::assert_eq; use tokio::sync::mpsc::unbounded_channel; diff --git a/codex-rs/tui/src/bottom_pane/feedback_view.rs b/codex-rs/tui/src/bottom_pane/feedback_view.rs index eeca6aef18..03d3779c57 100644 --- a/codex-rs/tui/src/bottom_pane/feedback_view.rs +++ b/codex-rs/tui/src/bottom_pane/feedback_view.rs @@ -19,7 +19,7 @@ use crate::app_event::FeedbackCategory; use crate::app_event_sender::AppEventSender; use crate::history_cell; use crate::render::renderable::Renderable; -use codex_core::protocol::SessionSource; +use codex_protocol::protocol::SessionSource; use super::CancellationEvent; use super::bottom_pane_view::BottomPaneView; diff --git a/codex-rs/tui/src/bottom_pane/mod.rs b/codex-rs/tui/src/bottom_pane/mod.rs index 46917dd9fa..234bb8b728 100644 --- a/codex-rs/tui/src/bottom_pane/mod.rs +++ b/codex-rs/tui/src/bottom_pane/mod.rs @@ -979,7 +979,7 @@ impl Renderable for BottomPane { mod tests { use super::*; use crate::app_event::AppEvent; - use codex_core::protocol::Op; + use codex_protocol::protocol::Op; use codex_protocol::protocol::SkillScope; use crossterm::event::KeyModifiers; use insta::assert_snapshot; diff --git a/codex-rs/tui/src/bottom_pane/request_user_input/mod.rs b/codex-rs/tui/src/bottom_pane/request_user_input/mod.rs index c2a4291cf1..79b1229800 100644 --- a/codex-rs/tui/src/bottom_pane/request_user_input/mod.rs +++ b/codex-rs/tui/src/bottom_pane/request_user_input/mod.rs @@ -30,7 +30,7 @@ use crate::bottom_pane::selection_popup_common::measure_rows_height; use crate::history_cell; use crate::render::renderable::Renderable; -use codex_core::protocol::Op; +use codex_protocol::protocol::Op; use codex_protocol::request_user_input::RequestUserInputAnswer; use codex_protocol::request_user_input::RequestUserInputEvent; use codex_protocol::request_user_input::RequestUserInputResponse; diff --git a/codex-rs/tui/src/bottom_pane/skills_toggle_view.rs b/codex-rs/tui/src/bottom_pane/skills_toggle_view.rs index 7b25b9841e..1e0230c904 100644 --- a/codex-rs/tui/src/bottom_pane/skills_toggle_view.rs +++ b/codex-rs/tui/src/bottom_pane/skills_toggle_view.rs @@ -22,7 +22,7 @@ use crate::render::renderable::Renderable; use crate::skills_helpers::match_skill; use crate::skills_helpers::truncate_skill_name; use crate::style::user_message_style; -use codex_core::protocol::Op; +use codex_protocol::protocol::Op; use super::CancellationEvent; use super::bottom_pane_view::BottomPaneView; diff --git a/codex-rs/tui/src/chatwidget.rs b/codex-rs/tui/src/chatwidget.rs index 1cd3b3e14f..238a60730c 100644 --- a/codex-rs/tui/src/chatwidget.rs +++ b/codex-rs/tui/src/chatwidget.rs @@ -61,54 +61,6 @@ use codex_core::git_info::get_git_repo_root; use codex_core::git_info::local_git_branches; use codex_core::models_manager::manager::ModelsManager; use codex_core::project_doc::DEFAULT_PROJECT_DOC_FILENAME; -use codex_core::protocol::AgentMessageDeltaEvent; -use codex_core::protocol::AgentMessageEvent; -use codex_core::protocol::AgentReasoningDeltaEvent; -use codex_core::protocol::AgentReasoningEvent; -use codex_core::protocol::AgentReasoningRawContentDeltaEvent; -use codex_core::protocol::AgentReasoningRawContentEvent; -use codex_core::protocol::ApplyPatchApprovalRequestEvent; -use codex_core::protocol::BackgroundEventEvent; -use codex_core::protocol::CodexErrorInfo; -use codex_core::protocol::CreditsSnapshot; -use codex_core::protocol::DeprecationNoticeEvent; -use codex_core::protocol::ErrorEvent; -use codex_core::protocol::Event; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecApprovalRequestEvent; -use codex_core::protocol::ExecCommandBeginEvent; -use codex_core::protocol::ExecCommandEndEvent; -use codex_core::protocol::ExecCommandOutputDeltaEvent; -use codex_core::protocol::ExecCommandSource; -use codex_core::protocol::ExitedReviewModeEvent; -use codex_core::protocol::ListCustomPromptsResponseEvent; -use codex_core::protocol::ListSkillsResponseEvent; -use codex_core::protocol::McpListToolsResponseEvent; -use codex_core::protocol::McpStartupCompleteEvent; -use codex_core::protocol::McpStartupStatus; -use codex_core::protocol::McpStartupUpdateEvent; -use codex_core::protocol::McpToolCallBeginEvent; -use codex_core::protocol::McpToolCallEndEvent; -use codex_core::protocol::Op; -use codex_core::protocol::PatchApplyBeginEvent; -use codex_core::protocol::RateLimitSnapshot; -use codex_core::protocol::ReviewRequest; -use codex_core::protocol::ReviewTarget; -use codex_core::protocol::SkillMetadata as ProtocolSkillMetadata; -use codex_core::protocol::StreamErrorEvent; -use codex_core::protocol::TerminalInteractionEvent; -use codex_core::protocol::TokenUsage; -use codex_core::protocol::TokenUsageInfo; -use codex_core::protocol::TurnAbortReason; -use codex_core::protocol::TurnCompleteEvent; -use codex_core::protocol::TurnDiffEvent; -use codex_core::protocol::UndoCompletedEvent; -use codex_core::protocol::UndoStartedEvent; -use codex_core::protocol::UserMessageEvent; -use codex_core::protocol::ViewImageToolCallEvent; -use codex_core::protocol::WarningEvent; -use codex_core::protocol::WebSearchBeginEvent; -use codex_core::protocol::WebSearchEndEvent; use codex_core::skills::model::SkillMetadata; use codex_core::terminal::TerminalName; use codex_core::terminal::terminal_info; @@ -130,6 +82,54 @@ use codex_protocol::items::AgentMessageItem; use codex_protocol::models::MessagePhase; use codex_protocol::models::local_image_label_text; use codex_protocol::parse_command::ParsedCommand; +use codex_protocol::protocol::AgentMessageDeltaEvent; +use codex_protocol::protocol::AgentMessageEvent; +use codex_protocol::protocol::AgentReasoningDeltaEvent; +use codex_protocol::protocol::AgentReasoningEvent; +use codex_protocol::protocol::AgentReasoningRawContentDeltaEvent; +use codex_protocol::protocol::AgentReasoningRawContentEvent; +use codex_protocol::protocol::ApplyPatchApprovalRequestEvent; +use codex_protocol::protocol::BackgroundEventEvent; +use codex_protocol::protocol::CodexErrorInfo; +use codex_protocol::protocol::CreditsSnapshot; +use codex_protocol::protocol::DeprecationNoticeEvent; +use codex_protocol::protocol::ErrorEvent; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecApprovalRequestEvent; +use codex_protocol::protocol::ExecCommandBeginEvent; +use codex_protocol::protocol::ExecCommandEndEvent; +use codex_protocol::protocol::ExecCommandOutputDeltaEvent; +use codex_protocol::protocol::ExecCommandSource; +use codex_protocol::protocol::ExitedReviewModeEvent; +use codex_protocol::protocol::ListCustomPromptsResponseEvent; +use codex_protocol::protocol::ListSkillsResponseEvent; +use codex_protocol::protocol::McpListToolsResponseEvent; +use codex_protocol::protocol::McpStartupCompleteEvent; +use codex_protocol::protocol::McpStartupStatus; +use codex_protocol::protocol::McpStartupUpdateEvent; +use codex_protocol::protocol::McpToolCallBeginEvent; +use codex_protocol::protocol::McpToolCallEndEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::PatchApplyBeginEvent; +use codex_protocol::protocol::RateLimitSnapshot; +use codex_protocol::protocol::ReviewRequest; +use codex_protocol::protocol::ReviewTarget; +use codex_protocol::protocol::SkillMetadata as ProtocolSkillMetadata; +use codex_protocol::protocol::StreamErrorEvent; +use codex_protocol::protocol::TerminalInteractionEvent; +use codex_protocol::protocol::TokenUsage; +use codex_protocol::protocol::TokenUsageInfo; +use codex_protocol::protocol::TurnAbortReason; +use codex_protocol::protocol::TurnCompleteEvent; +use codex_protocol::protocol::TurnDiffEvent; +use codex_protocol::protocol::UndoCompletedEvent; +use codex_protocol::protocol::UndoStartedEvent; +use codex_protocol::protocol::UserMessageEvent; +use codex_protocol::protocol::ViewImageToolCallEvent; +use codex_protocol::protocol::WarningEvent; +use codex_protocol::protocol::WebSearchBeginEvent; +use codex_protocol::protocol::WebSearchEndEvent; use codex_protocol::request_user_input::RequestUserInputEvent; use codex_protocol::user_input::TextElement; use codex_protocol::user_input::UserInput; @@ -268,13 +268,13 @@ use chrono::Local; use codex_core::AuthManager; use codex_core::CodexAuth; use codex_core::ThreadManager; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::SandboxPolicy; use codex_file_search::FileMatch; use codex_protocol::openai_models::InputModality; use codex_protocol::openai_models::ModelPreset; use codex_protocol::openai_models::ReasoningEffort as ReasoningEffortConfig; use codex_protocol::plan_tool::UpdatePlanArgs; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::SandboxPolicy; use codex_utils_approval_presets::ApprovalPreset; use codex_utils_approval_presets::builtin_approval_presets; use strum::IntoEnumIterator; @@ -650,7 +650,7 @@ pub(crate) struct ChatWidget { // Current working directory (if known) current_cwd: Option, // Runtime network proxy bind addresses from SessionConfigured. - session_network_proxy: Option, + session_network_proxy: Option, // Shared latch so we only warn once about invalid status-line item IDs. status_line_invalid_items_warned: Arc, // Cached git branch name for the status line (None if unknown). @@ -1060,7 +1060,7 @@ impl ChatWidget { } // --- Small event handlers --- - fn on_session_configured(&mut self, event: codex_core::protocol::SessionConfiguredEvent) { + fn on_session_configured(&mut self, event: codex_protocol::protocol::SessionConfiguredEvent) { self.bottom_pane .set_history_metadata(event.history_log_id, event.history_entry_count); self.set_skills(None); @@ -1159,7 +1159,7 @@ impl ChatWidget { }); } - fn on_thread_name_updated(&mut self, event: codex_core::protocol::ThreadNameUpdatedEvent) { + fn on_thread_name_updated(&mut self, event: codex_protocol::protocol::ThreadNameUpdatedEvent) { if self.thread_id == Some(event.thread_id) { self.thread_name = event.thread_name; self.request_redraw(); @@ -1982,7 +1982,7 @@ impl ChatWidget { self.request_redraw(); } - fn on_patch_apply_end(&mut self, event: codex_core::protocol::PatchApplyEndEvent) { + fn on_patch_apply_end(&mut self, event: codex_protocol::protocol::PatchApplyEndEvent) { let ev2 = event.clone(); self.defer_or_handle( |q| q.push_patch_end(event), @@ -2144,9 +2144,9 @@ impl ChatWidget { fn on_get_history_entry_response( &mut self, - event: codex_core::protocol::GetHistoryEntryResponseEvent, + event: codex_protocol::protocol::GetHistoryEntryResponseEvent, ) { - let codex_core::protocol::GetHistoryEntryResponseEvent { + let codex_protocol::protocol::GetHistoryEntryResponseEvent { offset, log_id, entry, @@ -2412,7 +2412,7 @@ impl ChatWidget { pub(crate) fn handle_patch_apply_end_now( &mut self, - event: codex_core::protocol::PatchApplyEndEvent, + event: codex_protocol::protocol::PatchApplyEndEvent, ) { // If the patch was successful, just let the "Edited" block stand. // Otherwise, add a failure block. @@ -2923,7 +2923,7 @@ impl ChatWidget { pub(crate) fn new_from_existing( common: ChatWidgetInit, conversation: std::sync::Arc, - session_configured: codex_core::protocol::SessionConfiguredEvent, + session_configured: codex_protocol::protocol::SessionConfiguredEvent, ) -> Self { let ChatWidgetInit { config, @@ -3505,11 +3505,11 @@ impl ChatWidget { } } SlashCommand::TestApproval => { - use codex_core::protocol::EventMsg; + use codex_protocol::protocol::EventMsg; use std::collections::HashMap; - use codex_core::protocol::ApplyPatchApprovalRequestEvent; - use codex_core::protocol::FileChange; + use codex_protocol::protocol::ApplyPatchApprovalRequestEvent; + use codex_protocol::protocol::FileChange; self.app_event_tx.send(AppEvent::CodexEvent(Event { id: "1".to_string(), diff --git a/codex-rs/tui/src/chatwidget/agent.rs b/codex-rs/tui/src/chatwidget/agent.rs index d905f884f8..63d519a7a5 100644 --- a/codex-rs/tui/src/chatwidget/agent.rs +++ b/codex-rs/tui/src/chatwidget/agent.rs @@ -4,9 +4,9 @@ use codex_core::CodexThread; use codex_core::NewThread; use codex_core::ThreadManager; use codex_core::config::Config; -use codex_core::protocol::Event; -use codex_core::protocol::EventMsg; -use codex_core::protocol::Op; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::Op; use tokio::sync::mpsc::UnboundedSender; use tokio::sync::mpsc::unbounded_channel; @@ -44,10 +44,10 @@ pub(crate) fn spawn_agent( }; // Forward the captured `SessionConfigured` event so it can be rendered in the UI. - let ev = codex_core::protocol::Event { + let ev = codex_protocol::protocol::Event { // The `id` does not matter for rendering, so we can use a fake value. id: "".to_string(), - msg: codex_core::protocol::EventMsg::SessionConfigured(session_configured), + msg: codex_protocol::protocol::EventMsg::SessionConfigured(session_configured), }; app_event_tx_clone.send(AppEvent::CodexEvent(ev)); @@ -80,7 +80,7 @@ pub(crate) fn spawn_agent( /// events and accepts Ops for submission. pub(crate) fn spawn_agent_from_existing( thread: std::sync::Arc, - session_configured: codex_core::protocol::SessionConfiguredEvent, + session_configured: codex_protocol::protocol::SessionConfiguredEvent, app_event_tx: AppEventSender, ) -> UnboundedSender { let (codex_op_tx, mut codex_op_rx) = unbounded_channel::(); @@ -88,9 +88,9 @@ pub(crate) fn spawn_agent_from_existing( let app_event_tx_clone = app_event_tx; tokio::spawn(async move { // Forward the captured `SessionConfigured` event so it can be rendered in the UI. - let ev = codex_core::protocol::Event { + let ev = codex_protocol::protocol::Event { id: "".to_string(), - msg: codex_core::protocol::EventMsg::SessionConfigured(session_configured), + msg: codex_protocol::protocol::EventMsg::SessionConfigured(session_configured), }; app_event_tx_clone.send(AppEvent::CodexEvent(ev)); diff --git a/codex-rs/tui/src/chatwidget/interrupts.rs b/codex-rs/tui/src/chatwidget/interrupts.rs index fccd438434..8216398448 100644 --- a/codex-rs/tui/src/chatwidget/interrupts.rs +++ b/codex-rs/tui/src/chatwidget/interrupts.rs @@ -1,13 +1,13 @@ use std::collections::VecDeque; -use codex_core::protocol::ApplyPatchApprovalRequestEvent; -use codex_core::protocol::ExecApprovalRequestEvent; -use codex_core::protocol::ExecCommandBeginEvent; -use codex_core::protocol::ExecCommandEndEvent; -use codex_core::protocol::McpToolCallBeginEvent; -use codex_core::protocol::McpToolCallEndEvent; -use codex_core::protocol::PatchApplyEndEvent; use codex_protocol::approvals::ElicitationRequestEvent; +use codex_protocol::protocol::ApplyPatchApprovalRequestEvent; +use codex_protocol::protocol::ExecApprovalRequestEvent; +use codex_protocol::protocol::ExecCommandBeginEvent; +use codex_protocol::protocol::ExecCommandEndEvent; +use codex_protocol::protocol::McpToolCallBeginEvent; +use codex_protocol::protocol::McpToolCallEndEvent; +use codex_protocol::protocol::PatchApplyEndEvent; use codex_protocol::request_user_input::RequestUserInputEvent; use super::ChatWidget; diff --git a/codex-rs/tui/src/chatwidget/skills.rs b/codex-rs/tui/src/chatwidget/skills.rs index e7fadde1af..1d71cc61ec 100644 --- a/codex-rs/tui/src/chatwidget/skills.rs +++ b/codex-rs/tui/src/chatwidget/skills.rs @@ -14,13 +14,13 @@ use crate::skills_helpers::skill_description; use crate::skills_helpers::skill_display_name; use codex_chatgpt::connectors::AppInfo; use codex_core::connectors::connector_mention_slug; -use codex_core::protocol::ListSkillsResponseEvent; -use codex_core::protocol::SkillMetadata as ProtocolSkillMetadata; -use codex_core::protocol::SkillsListEntry; use codex_core::skills::model::SkillDependencies; use codex_core::skills::model::SkillInterface; use codex_core::skills::model::SkillMetadata; use codex_core::skills::model::SkillToolDependency; +use codex_protocol::protocol::ListSkillsResponseEvent; +use codex_protocol::protocol::SkillMetadata as ProtocolSkillMetadata; +use codex_protocol::protocol::SkillsListEntry; impl ChatWidget { pub(crate) fn open_skills_list(&mut self) { diff --git a/codex-rs/tui/src/chatwidget/tests.rs b/codex-rs/tui/src/chatwidget/tests.rs index f04d02f658..b9f5ddf814 100644 --- a/codex-rs/tui/src/chatwidget/tests.rs +++ b/codex-rs/tui/src/chatwidget/tests.rs @@ -1,6 +1,6 @@ //! Exercises `ChatWidget` event handling and rendering invariants. //! -//! These tests treat the widget as the adapter between `codex_core::protocol::EventMsg` inputs and +//! These tests treat the widget as the adapter between `codex_protocol::protocol::EventMsg` inputs and //! the TUI output. Many assertions are snapshot-based so that layout regressions and status/header //! changes show up as stable, reviewable diffs. @@ -25,47 +25,6 @@ use codex_core::config::types::WindowsSandboxModeToml; use codex_core::config_loader::RequirementSource; use codex_core::features::Feature; use codex_core::models_manager::manager::ModelsManager; -use codex_core::protocol::AgentMessageDeltaEvent; -use codex_core::protocol::AgentMessageEvent; -use codex_core::protocol::AgentReasoningDeltaEvent; -use codex_core::protocol::AgentReasoningEvent; -use codex_core::protocol::ApplyPatchApprovalRequestEvent; -use codex_core::protocol::BackgroundEventEvent; -use codex_core::protocol::CreditsSnapshot; -use codex_core::protocol::Event; -use codex_core::protocol::EventMsg; -use codex_core::protocol::ExecApprovalRequestEvent; -use codex_core::protocol::ExecCommandBeginEvent; -use codex_core::protocol::ExecCommandEndEvent; -use codex_core::protocol::ExecCommandSource; -use codex_core::protocol::ExecCommandStatus as CoreExecCommandStatus; -use codex_core::protocol::ExecPolicyAmendment; -use codex_core::protocol::ExitedReviewModeEvent; -use codex_core::protocol::FileChange; -use codex_core::protocol::ItemCompletedEvent; -use codex_core::protocol::McpStartupCompleteEvent; -use codex_core::protocol::McpStartupStatus; -use codex_core::protocol::McpStartupUpdateEvent; -use codex_core::protocol::Op; -use codex_core::protocol::PatchApplyBeginEvent; -use codex_core::protocol::PatchApplyEndEvent; -use codex_core::protocol::PatchApplyStatus as CorePatchApplyStatus; -use codex_core::protocol::RateLimitWindow; -use codex_core::protocol::ReviewRequest; -use codex_core::protocol::ReviewTarget; -use codex_core::protocol::SessionSource; -use codex_core::protocol::StreamErrorEvent; -use codex_core::protocol::TerminalInteractionEvent; -use codex_core::protocol::ThreadRolledBackEvent; -use codex_core::protocol::TokenCountEvent; -use codex_core::protocol::TokenUsage; -use codex_core::protocol::TokenUsageInfo; -use codex_core::protocol::TurnCompleteEvent; -use codex_core::protocol::TurnStartedEvent; -use codex_core::protocol::UndoCompletedEvent; -use codex_core::protocol::UndoStartedEvent; -use codex_core::protocol::ViewImageToolCallEvent; -use codex_core::protocol::WarningEvent; use codex_core::skills::model::SkillMetadata; use codex_core::terminal::TerminalName; use codex_otel::OtelManager; @@ -87,8 +46,49 @@ use codex_protocol::parse_command::ParsedCommand; use codex_protocol::plan_tool::PlanItemArg; use codex_protocol::plan_tool::StepStatus; use codex_protocol::plan_tool::UpdatePlanArgs; +use codex_protocol::protocol::AgentMessageDeltaEvent; +use codex_protocol::protocol::AgentMessageEvent; +use codex_protocol::protocol::AgentReasoningDeltaEvent; +use codex_protocol::protocol::AgentReasoningEvent; +use codex_protocol::protocol::ApplyPatchApprovalRequestEvent; +use codex_protocol::protocol::BackgroundEventEvent; use codex_protocol::protocol::CodexErrorInfo; +use codex_protocol::protocol::CreditsSnapshot; +use codex_protocol::protocol::Event; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ExecApprovalRequestEvent; +use codex_protocol::protocol::ExecCommandBeginEvent; +use codex_protocol::protocol::ExecCommandEndEvent; +use codex_protocol::protocol::ExecCommandSource; +use codex_protocol::protocol::ExecCommandStatus as CoreExecCommandStatus; +use codex_protocol::protocol::ExecPolicyAmendment; +use codex_protocol::protocol::ExitedReviewModeEvent; +use codex_protocol::protocol::FileChange; +use codex_protocol::protocol::ItemCompletedEvent; +use codex_protocol::protocol::McpStartupCompleteEvent; +use codex_protocol::protocol::McpStartupStatus; +use codex_protocol::protocol::McpStartupUpdateEvent; +use codex_protocol::protocol::Op; +use codex_protocol::protocol::PatchApplyBeginEvent; +use codex_protocol::protocol::PatchApplyEndEvent; +use codex_protocol::protocol::PatchApplyStatus as CorePatchApplyStatus; +use codex_protocol::protocol::RateLimitWindow; +use codex_protocol::protocol::ReviewRequest; +use codex_protocol::protocol::ReviewTarget; +use codex_protocol::protocol::SessionSource; use codex_protocol::protocol::SkillScope; +use codex_protocol::protocol::StreamErrorEvent; +use codex_protocol::protocol::TerminalInteractionEvent; +use codex_protocol::protocol::ThreadRolledBackEvent; +use codex_protocol::protocol::TokenCountEvent; +use codex_protocol::protocol::TokenUsage; +use codex_protocol::protocol::TokenUsageInfo; +use codex_protocol::protocol::TurnCompleteEvent; +use codex_protocol::protocol::TurnStartedEvent; +use codex_protocol::protocol::UndoCompletedEvent; +use codex_protocol::protocol::UndoStartedEvent; +use codex_protocol::protocol::ViewImageToolCallEvent; +use codex_protocol::protocol::WarningEvent; use codex_protocol::user_input::TextElement; use codex_protocol::user_input::UserInput; use codex_utils_absolute_path::AbsolutePathBuf; @@ -149,7 +149,7 @@ async fn resumed_initial_messages_render_history() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -218,7 +218,7 @@ async fn replayed_user_message_preserves_text_elements_and_local_images() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -277,7 +277,7 @@ async fn replayed_user_message_preserves_remote_image_urls() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -333,7 +333,7 @@ async fn replayed_user_message_with_only_remote_images_renders_history_cell() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -384,7 +384,7 @@ async fn replayed_user_message_with_only_local_images_does_not_render_history_ce let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -494,7 +494,7 @@ async fn submission_preserves_text_elements_and_local_images() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -576,7 +576,7 @@ async fn submission_with_remote_and_local_images_keeps_local_placeholder_numberi let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -669,7 +669,7 @@ async fn enter_with_only_remote_images_submits_user_turn() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -731,7 +731,7 @@ async fn shift_enter_with_only_remote_images_does_not_submit_user_turn() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -769,7 +769,7 @@ async fn enter_with_only_remote_images_does_not_submit_when_modal_is_active() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -807,7 +807,7 @@ async fn enter_with_only_remote_images_does_not_submit_when_input_disabled() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -846,7 +846,7 @@ async fn submission_prefers_selected_duplicate_skill_path() { let conversation_id = ThreadId::new(); let rollout_file = NamedTempFile::new().unwrap(); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: conversation_id, forked_from_id: None, thread_name: None, @@ -1119,7 +1119,7 @@ async fn interrupted_turn_restores_queued_messages_with_images_and_elements() { // must be renumbered to match the combined local image list. chat.handle_codex_event(Event { id: "interrupt".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, }), @@ -1184,7 +1184,7 @@ async fn interrupted_turn_restore_keeps_active_mode_for_resubmission() { chat.handle_codex_event(Event { id: "interrupt".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, }), @@ -2852,7 +2852,8 @@ fn begin_exec_with_source( // Build the full command vec and parse it using core's parser, // then convert to protocol variants for the event payload. let command = vec!["bash".to_string(), "-lc".to_string(), raw_cmd.to_string()]; - let parsed_cmd: Vec = codex_core::parse_command::parse_command(&command); + let parsed_cmd: Vec = + codex_shell_command::parse_command::parse_command(&command); let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from(".")); let interaction_input = None; let event = ExecCommandBeginEvent { @@ -3494,7 +3495,7 @@ async fn exec_end_without_begin_uses_event_command() { "-lc".to_string(), "echo orphaned".to_string(), ]; - let parsed_cmd = codex_core::parse_command::parse_command(&command); + let parsed_cmd = codex_shell_command::parse_command::parse_command(&command); let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from(".")); chat.handle_codex_event(Event { id: "call-orphan".to_string(), @@ -4037,7 +4038,7 @@ async fn plan_slash_command_with_args_submits_prompt_in_plan_mode() { let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(None).await; chat.set_feature_enabled(Feature::CollaborationModes, true); - let configured = codex_core::protocol::SessionConfiguredEvent { + let configured = codex_protocol::protocol::SessionConfiguredEvent { session_id: ThreadId::new(), forked_from_id: None, thread_name: None, @@ -4639,7 +4640,7 @@ async fn interrupt_exec_marks_failed_snapshot() { // cause the active exec cell to be finalized as failed and flushed. chat.handle_codex_event(Event { id: "call-int".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, }), @@ -4675,7 +4676,7 @@ async fn interrupted_turn_error_message_snapshot() { // Abort the turn (like pressing Esc) and drain inserted history. chat.handle_codex_event(Event { id: "task-1".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, }), @@ -6330,7 +6331,7 @@ async fn interrupt_restores_queued_messages_into_composer() { // Deliver a TurnAborted event with Interrupted reason (as if Esc was pressed). chat.handle_codex_event(Event { id: "turn-1".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, }), @@ -6369,7 +6370,7 @@ async fn interrupt_prepends_queued_messages_before_existing_composer_text() { chat.handle_codex_event(Event { id: "turn-1".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, }), @@ -6398,7 +6399,7 @@ async fn interrupt_clears_unified_exec_processes() { chat.handle_codex_event(Event { id: "turn-1".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, }), @@ -6419,7 +6420,7 @@ async fn review_ended_keeps_unified_exec_processes() { chat.handle_codex_event(Event { id: "turn-1".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::ReviewEnded, }), @@ -6464,7 +6465,7 @@ async fn interrupt_clears_unified_exec_wait_streak_snapshot() { chat.handle_codex_event(Event { id: "turn-1".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, }), @@ -6572,7 +6573,7 @@ async fn ui_snapshots_small_heights_task_running() { // task (status indicator active) while an approval request is shown. #[tokio::test] async fn status_widget_and_approval_modal_snapshot() { - use codex_core::protocol::ExecApprovalRequestEvent; + use codex_protocol::protocol::ExecApprovalRequestEvent; let (mut chat, _rx, _op_rx) = make_chatwidget_manual(None).await; // Begin a running task so the status indicator would be active. @@ -6955,7 +6956,7 @@ async fn apply_patch_approval_sends_op_with_call_id() { while let Ok(app_ev) = rx.try_recv() { if let AppEvent::CodexOp(Op::PatchApproval { id, decision }) = app_ev { assert_eq!(id, "call-999"); - assert_matches!(decision, codex_core::protocol::ReviewDecision::Approved); + assert_matches!(decision, codex_protocol::protocol::ReviewDecision::Approved); found = true; break; } @@ -7003,7 +7004,7 @@ async fn apply_patch_full_flow_integration_like() { match forwarded { Op::PatchApproval { id, decision } => { assert_eq!(id, "call-1"); - assert_matches!(decision, codex_core::protocol::ReviewDecision::Approved); + assert_matches!(decision, codex_protocol::protocol::ReviewDecision::Approved); } other => panic!("unexpected op forwarded: {other:?}"), } @@ -7344,7 +7345,7 @@ async fn status_line_branch_refreshes_after_interrupt() { chat.handle_codex_event(Event { id: "turn-1".into(), - msg: EventMsg::TurnAborted(codex_core::protocol::TurnAbortedEvent { + msg: EventMsg::TurnAborted(codex_protocol::protocol::TurnAbortedEvent { turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, }), diff --git a/codex-rs/tui/src/debug_config.rs b/codex-rs/tui/src/debug_config.rs index 38faf2d35b..a3e98d85c7 100644 --- a/codex-rs/tui/src/debug_config.rs +++ b/codex-rs/tui/src/debug_config.rs @@ -9,7 +9,7 @@ use codex_core::config_loader::RequirementSource; use codex_core::config_loader::ResidencyRequirement; use codex_core::config_loader::SandboxModeRequirement; use codex_core::config_loader::WebSearchModeRequirement; -use codex_core::protocol::SessionNetworkProxyRuntime; +use codex_protocol::protocol::SessionNetworkProxyRuntime; use ratatui::style::Stylize; use ratatui::text::Line; use toml::Value as TomlValue; @@ -404,9 +404,9 @@ mod tests { use codex_core::config_loader::SandboxModeRequirement; use codex_core::config_loader::Sourced; use codex_core::config_loader::WebSearchModeRequirement; - use codex_core::protocol::AskForApproval; - use codex_core::protocol::SandboxPolicy; use codex_protocol::config_types::WebSearchMode; + use codex_protocol::protocol::AskForApproval; + use codex_protocol::protocol::SandboxPolicy; use codex_utils_absolute_path::AbsolutePathBuf; use ratatui::text::Line; use std::collections::BTreeMap; diff --git a/codex-rs/tui/src/diff_render.rs b/codex-rs/tui/src/diff_render.rs index 9683df53ba..6fdf3a43f5 100644 --- a/codex-rs/tui/src/diff_render.rs +++ b/codex-rs/tui/src/diff_render.rs @@ -19,7 +19,7 @@ use crate::render::renderable::ColumnRenderable; use crate::render::renderable::InsetRenderable; use crate::render::renderable::Renderable; use codex_core::git_info::get_git_repo_root; -use codex_core::protocol::FileChange; +use codex_protocol::protocol::FileChange; // Internal representation for diff line rendering enum DiffLineType { diff --git a/codex-rs/tui/src/exec_cell/model.rs b/codex-rs/tui/src/exec_cell/model.rs index 21799c6199..f08b088ef7 100644 --- a/codex-rs/tui/src/exec_cell/model.rs +++ b/codex-rs/tui/src/exec_cell/model.rs @@ -1,8 +1,8 @@ use std::time::Duration; use std::time::Instant; -use codex_core::protocol::ExecCommandSource; use codex_protocol::parse_command::ParsedCommand; +use codex_protocol::protocol::ExecCommandSource; #[derive(Clone, Debug, Default)] pub(crate) struct CommandOutput { diff --git a/codex-rs/tui/src/exec_cell/render.rs b/codex-rs/tui/src/exec_cell/render.rs index 4f7b1cd635..6e57c21520 100644 --- a/codex-rs/tui/src/exec_cell/render.rs +++ b/codex-rs/tui/src/exec_cell/render.rs @@ -13,9 +13,9 @@ use crate::wrapping::RtOptions; use crate::wrapping::word_wrap_line; use crate::wrapping::word_wrap_lines; use codex_ansi_escape::ansi_escape_line; -use codex_core::bash::extract_bash_command; -use codex_core::protocol::ExecCommandSource; use codex_protocol::parse_command::ParsedCommand; +use codex_protocol::protocol::ExecCommandSource; +use codex_shell_command::bash::extract_bash_command; use codex_utils_elapsed::format_duration; use itertools::Itertools; use ratatui::prelude::*; @@ -611,7 +611,7 @@ const EXEC_DISPLAY_LAYOUT: ExecDisplayLayout = ExecDisplayLayout::new( #[cfg(test)] mod tests { use super::*; - use codex_core::protocol::ExecCommandSource; + use codex_protocol::protocol::ExecCommandSource; #[test] fn user_shell_output_is_limited_by_screen_lines() { diff --git a/codex-rs/tui/src/exec_command.rs b/codex-rs/tui/src/exec_command.rs index 8ce6c2632e..bcfbc1776d 100644 --- a/codex-rs/tui/src/exec_command.rs +++ b/codex-rs/tui/src/exec_command.rs @@ -1,7 +1,7 @@ use std::path::Path; use std::path::PathBuf; -use codex_core::parse_command::extract_shell_command; +use codex_shell_command::parse_command::extract_shell_command; use dirs::home_dir; use shlex::try_join; diff --git a/codex-rs/tui/src/history_cell.rs b/codex-rs/tui/src/history_cell.rs index 8789196946..016623470a 100644 --- a/codex-rs/tui/src/history_cell.rs +++ b/codex-rs/tui/src/history_cell.rs @@ -39,10 +39,6 @@ use crate::wrapping::word_wrap_lines; use base64::Engine; use codex_core::config::Config; use codex_core::config::types::McpServerTransportConfig; -use codex_core::protocol::FileChange; -use codex_core::protocol::McpAuthStatus; -use codex_core::protocol::McpInvocation; -use codex_core::protocol::SessionConfiguredEvent; use codex_core::web_search::web_search_detail; use codex_otel::RuntimeMetricsSummary; use codex_protocol::account::PlanType; @@ -54,6 +50,10 @@ use codex_protocol::openai_models::ReasoningEffort as ReasoningEffortConfig; use codex_protocol::plan_tool::PlanItemArg; use codex_protocol::plan_tool::StepStatus; use codex_protocol::plan_tool::UpdatePlanArgs; +use codex_protocol::protocol::FileChange; +use codex_protocol::protocol::McpAuthStatus; +use codex_protocol::protocol::McpInvocation; +use codex_protocol::protocol::SessionConfiguredEvent; use codex_protocol::request_user_input::RequestUserInputAnswer; use codex_protocol::request_user_input::RequestUserInputQuestion; use codex_protocol::user_input::TextElement; @@ -785,9 +785,9 @@ fn exec_snippet(command: &[String]) -> String { pub fn new_approval_decision_cell( command: Vec, - decision: codex_core::protocol::ReviewDecision, + decision: codex_protocol::protocol::ReviewDecision, ) -> Box { - use codex_core::protocol::ReviewDecision::*; + use codex_protocol::protocol::ReviewDecision::*; let (symbol, summary): (Span<'static>, Vec>) = match decision { Approved => { @@ -2377,19 +2377,19 @@ mod tests { use codex_core::config::ConfigBuilder; use codex_core::config::types::McpServerConfig; use codex_core::config::types::McpServerTransportConfig; - use codex_core::protocol::McpAuthStatus; use codex_otel::RuntimeMetricTotals; use codex_otel::RuntimeMetricsSummary; use codex_protocol::models::WebSearchAction; use codex_protocol::parse_command::ParsedCommand; + use codex_protocol::protocol::McpAuthStatus; use dirs::home_dir; use pretty_assertions::assert_eq; use serde_json::json; use std::collections::HashMap; - use codex_core::protocol::ExecCommandSource; use codex_protocol::mcp::CallToolResult; use codex_protocol::mcp::Tool; + use codex_protocol::protocol::ExecCommandSource; use rmcp::model::Content; const SMALL_PNG_BASE64: &str = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP4z8DwHwAFAAH/iZk9HQAAAABJRU5ErkJggg=="; diff --git a/codex-rs/tui/src/lib.rs b/codex-rs/tui/src/lib.rs index 20c9fc21b0..c44b5eb751 100644 --- a/codex-rs/tui/src/lib.rs +++ b/codex-rs/tui/src/lib.rs @@ -30,13 +30,13 @@ use codex_core::find_thread_path_by_id_str; use codex_core::find_thread_path_by_name_str; use codex_core::format_exec_policy_error_with_source; use codex_core::path_utils; -use codex_core::protocol::AskForApproval; use codex_core::read_session_meta_line; use codex_core::terminal::Multiplexer; use codex_core::windows_sandbox::WindowsSandboxLevelExt; use codex_protocol::config_types::AltScreenMode; use codex_protocol::config_types::SandboxMode; use codex_protocol::config_types::WindowsSandboxLevel; +use codex_protocol::protocol::AskForApproval; use codex_protocol::protocol::RolloutItem; use codex_protocol::protocol::RolloutLine; use codex_state::log_db; @@ -468,7 +468,7 @@ async fn run_ratatui_app( UpdatePromptOutcome::RunUpdate(action) => { crate::tui::restore()?; return Ok(AppExitInfo { - token_usage: codex_core::protocol::TokenUsage::default(), + token_usage: codex_protocol::protocol::TokenUsage::default(), thread_id: None, thread_name: None, update_action: Some(action), @@ -511,7 +511,7 @@ async fn run_ratatui_app( session_log::log_session_end(); let _ = tui.terminal.clear(); return Ok(AppExitInfo { - token_usage: codex_core::protocol::TokenUsage::default(), + token_usage: codex_protocol::protocol::TokenUsage::default(), thread_id: None, thread_name: None, update_action: None, @@ -551,7 +551,7 @@ async fn run_ratatui_app( session_log::log_session_end(); let _ = tui.terminal.clear(); Ok(AppExitInfo { - token_usage: codex_core::protocol::TokenUsage::default(), + token_usage: codex_protocol::protocol::TokenUsage::default(), thread_id: None, thread_name: None, update_action: None, @@ -600,7 +600,7 @@ async fn run_ratatui_app( restore(); session_log::log_session_end(); return Ok(AppExitInfo { - token_usage: codex_core::protocol::TokenUsage::default(), + token_usage: codex_protocol::protocol::TokenUsage::default(), thread_id: None, thread_name: None, update_action: None, @@ -651,7 +651,7 @@ async fn run_ratatui_app( restore(); session_log::log_session_end(); return Ok(AppExitInfo { - token_usage: codex_core::protocol::TokenUsage::default(), + token_usage: codex_protocol::protocol::TokenUsage::default(), thread_id: None, thread_name: None, update_action: None, @@ -681,7 +681,7 @@ async fn run_ratatui_app( restore(); session_log::log_session_end(); return Ok(AppExitInfo { - token_usage: codex_core::protocol::TokenUsage::default(), + token_usage: codex_protocol::protocol::TokenUsage::default(), thread_id: None, thread_name: None, update_action: None, @@ -965,7 +965,7 @@ mod tests { use codex_core::config::ConfigBuilder; use codex_core::config::ConfigOverrides; use codex_core::config::ProjectConfig; - use codex_core::protocol::AskForApproval; + use codex_protocol::protocol::AskForApproval; use codex_protocol::protocol::RolloutItem; use codex_protocol::protocol::RolloutLine; use codex_protocol::protocol::SessionMeta; diff --git a/codex-rs/tui/src/main.rs b/codex-rs/tui/src/main.rs index 7f043ef0f9..b7a27576e8 100644 --- a/codex-rs/tui/src/main.rs +++ b/codex-rs/tui/src/main.rs @@ -24,7 +24,10 @@ fn main() -> anyhow::Result<()> { let exit_info = run_main(inner, codex_linux_sandbox_exe).await?; let token_usage = exit_info.token_usage; if !token_usage.is_zero() { - println!("{}", codex_core::protocol::FinalOutput::from(token_usage),); + println!( + "{}", + codex_protocol::protocol::FinalOutput::from(token_usage), + ); } Ok(()) }) diff --git a/codex-rs/tui/src/multi_agents.rs b/codex-rs/tui/src/multi_agents.rs index 57df8b8891..806400f2e3 100644 --- a/codex-rs/tui/src/multi_agents.rs +++ b/codex-rs/tui/src/multi_agents.rs @@ -1,17 +1,17 @@ use crate::history_cell::PlainHistoryCell; use crate::render::line_utils::prefix_lines; use crate::text_formatting::truncate_text; -use codex_core::protocol::AgentStatus; -use codex_core::protocol::CollabAgentInteractionEndEvent; -use codex_core::protocol::CollabAgentRef; -use codex_core::protocol::CollabAgentSpawnEndEvent; -use codex_core::protocol::CollabAgentStatusEntry; -use codex_core::protocol::CollabCloseEndEvent; -use codex_core::protocol::CollabResumeBeginEvent; -use codex_core::protocol::CollabResumeEndEvent; -use codex_core::protocol::CollabWaitingBeginEvent; -use codex_core::protocol::CollabWaitingEndEvent; use codex_protocol::ThreadId; +use codex_protocol::protocol::AgentStatus; +use codex_protocol::protocol::CollabAgentInteractionEndEvent; +use codex_protocol::protocol::CollabAgentRef; +use codex_protocol::protocol::CollabAgentSpawnEndEvent; +use codex_protocol::protocol::CollabAgentStatusEntry; +use codex_protocol::protocol::CollabCloseEndEvent; +use codex_protocol::protocol::CollabResumeBeginEvent; +use codex_protocol::protocol::CollabResumeEndEvent; +use codex_protocol::protocol::CollabWaitingBeginEvent; +use codex_protocol::protocol::CollabWaitingEndEvent; use ratatui::style::Stylize; use ratatui::text::Line; use ratatui::text::Span; diff --git a/codex-rs/tui/src/pager_overlay.rs b/codex-rs/tui/src/pager_overlay.rs index f04310cd86..00c18dd71a 100644 --- a/codex-rs/tui/src/pager_overlay.rs +++ b/codex-rs/tui/src/pager_overlay.rs @@ -796,8 +796,8 @@ fn render_offset_content( #[cfg(test)] mod tests { use super::*; - use codex_core::protocol::ExecCommandSource; - use codex_core::protocol::ReviewDecision; + use codex_protocol::protocol::ExecCommandSource; + use codex_protocol::protocol::ReviewDecision; use insta::assert_snapshot; use pretty_assertions::assert_eq; use std::collections::HashMap; @@ -809,8 +809,8 @@ mod tests { use crate::history_cell; use crate::history_cell::HistoryCell; use crate::history_cell::new_patch_event; - use codex_core::protocol::FileChange; use codex_protocol::parse_command::ParsedCommand; + use codex_protocol::protocol::FileChange; use ratatui::Terminal; use ratatui::backend::TestBackend; use ratatui::text::Text; diff --git a/codex-rs/tui/src/session_log.rs b/codex-rs/tui/src/session_log.rs index b2858e8f21..ca4d39cd18 100644 --- a/codex-rs/tui/src/session_log.rs +++ b/codex-rs/tui/src/session_log.rs @@ -7,7 +7,7 @@ use std::sync::Mutex; use std::sync::OnceLock; use codex_core::config::Config; -use codex_core::protocol::Op; +use codex_protocol::protocol::Op; use serde::Serialize; use serde_json::json; diff --git a/codex-rs/tui/src/status/card.rs b/codex-rs/tui/src/status/card.rs index e6d5a27d29..bf55c0ace1 100644 --- a/codex-rs/tui/src/status/card.rs +++ b/codex-rs/tui/src/status/card.rs @@ -7,14 +7,14 @@ use chrono::DateTime; use chrono::Local; use codex_core::WireApi; use codex_core::config::Config; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::NetworkAccess; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol::TokenUsage; -use codex_core::protocol::TokenUsageInfo; use codex_protocol::ThreadId; use codex_protocol::account::PlanType; use codex_protocol::openai_models::ReasoningEffort; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::NetworkAccess; +use codex_protocol::protocol::SandboxPolicy; +use codex_protocol::protocol::TokenUsage; +use codex_protocol::protocol::TokenUsageInfo; use codex_utils_sandbox_summary::summarize_sandbox_policy; use ratatui::prelude::*; use ratatui::style::Stylize; diff --git a/codex-rs/tui/src/status/rate_limits.rs b/codex-rs/tui/src/status/rate_limits.rs index 8d46bc8c99..10dbaaaa2f 100644 --- a/codex-rs/tui/src/status/rate_limits.rs +++ b/codex-rs/tui/src/status/rate_limits.rs @@ -13,9 +13,9 @@ use chrono::DateTime; use chrono::Duration as ChronoDuration; use chrono::Local; use chrono::Utc; -use codex_core::protocol::CreditsSnapshot as CoreCreditsSnapshot; -use codex_core::protocol::RateLimitSnapshot; -use codex_core::protocol::RateLimitWindow; +use codex_protocol::protocol::CreditsSnapshot as CoreCreditsSnapshot; +use codex_protocol::protocol::RateLimitSnapshot; +use codex_protocol::protocol::RateLimitWindow; const STATUS_LIMIT_BAR_SEGMENTS: usize = 20; const STATUS_LIMIT_BAR_FILLED: &str = "█"; diff --git a/codex-rs/tui/src/status/tests.rs b/codex-rs/tui/src/status/tests.rs index 02838c651e..fb1aad7275 100644 --- a/codex-rs/tui/src/status/tests.rs +++ b/codex-rs/tui/src/status/tests.rs @@ -7,16 +7,16 @@ use chrono::Utc; use codex_core::AuthManager; use codex_core::config::Config; use codex_core::config::ConfigBuilder; -use codex_core::protocol::AskForApproval; -use codex_core::protocol::CreditsSnapshot; -use codex_core::protocol::RateLimitSnapshot; -use codex_core::protocol::RateLimitWindow; -use codex_core::protocol::SandboxPolicy; -use codex_core::protocol::TokenUsage; -use codex_core::protocol::TokenUsageInfo; use codex_protocol::ThreadId; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ReasoningEffort; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::CreditsSnapshot; +use codex_protocol::protocol::RateLimitSnapshot; +use codex_protocol::protocol::RateLimitWindow; +use codex_protocol::protocol::SandboxPolicy; +use codex_protocol::protocol::TokenUsage; +use codex_protocol::protocol::TokenUsageInfo; use insta::assert_snapshot; use pretty_assertions::assert_eq; use ratatui::prelude::*; diff --git a/codex-rs/tui/src/status_indicator_widget.rs b/codex-rs/tui/src/status_indicator_widget.rs index b41a2fa3ca..fa266f9760 100644 --- a/codex-rs/tui/src/status_indicator_widget.rs +++ b/codex-rs/tui/src/status_indicator_widget.rs @@ -7,7 +7,7 @@ use std::time::Duration; use std::time::Instant; -use codex_core::protocol::Op; +use codex_protocol::protocol::Op; use crossterm::event::KeyCode; use ratatui::buffer::Buffer; use ratatui::layout::Rect; diff --git a/codex-rs/utils/approval-presets/Cargo.toml b/codex-rs/utils/approval-presets/Cargo.toml index 1237545cd6..0e387f07a8 100644 --- a/codex-rs/utils/approval-presets/Cargo.toml +++ b/codex-rs/utils/approval-presets/Cargo.toml @@ -8,4 +8,4 @@ license.workspace = true workspace = true [dependencies] -codex-core = { workspace = true } +codex-protocol = { workspace = true } diff --git a/codex-rs/utils/approval-presets/src/lib.rs b/codex-rs/utils/approval-presets/src/lib.rs index 9e66e39e08..fbfa120e61 100644 --- a/codex-rs/utils/approval-presets/src/lib.rs +++ b/codex-rs/utils/approval-presets/src/lib.rs @@ -1,5 +1,5 @@ -use codex_core::protocol::AskForApproval; -use codex_core::protocol::SandboxPolicy; +use codex_protocol::protocol::AskForApproval; +use codex_protocol::protocol::SandboxPolicy; /// A simple preset pairing an approval policy with a sandbox policy. #[derive(Debug, Clone)] diff --git a/codex-rs/utils/cli/Cargo.toml b/codex-rs/utils/cli/Cargo.toml index 7e9d2c5a1d..d9adf42b3f 100644 --- a/codex-rs/utils/cli/Cargo.toml +++ b/codex-rs/utils/cli/Cargo.toml @@ -9,7 +9,6 @@ workspace = true [dependencies] clap = { workspace = true, features = ["derive", "wrap_help"] } -codex-core = { workspace = true } codex-protocol = { workspace = true } serde = { workspace = true } toml = { workspace = true } diff --git a/codex-rs/utils/cli/src/approval_mode_cli_arg.rs b/codex-rs/utils/cli/src/approval_mode_cli_arg.rs index 08b7be6cca..ee4ecabcb6 100644 --- a/codex-rs/utils/cli/src/approval_mode_cli_arg.rs +++ b/codex-rs/utils/cli/src/approval_mode_cli_arg.rs @@ -2,7 +2,7 @@ use clap::ValueEnum; -use codex_core::protocol::AskForApproval; +use codex_protocol::protocol::AskForApproval; #[derive(Clone, Copy, Debug, ValueEnum)] #[value(rename_all = "kebab-case")] diff --git a/codex-rs/utils/cli/src/sandbox_mode_cli_arg.rs b/codex-rs/utils/cli/src/sandbox_mode_cli_arg.rs index 18935840f4..b7d1a248b8 100644 --- a/codex-rs/utils/cli/src/sandbox_mode_cli_arg.rs +++ b/codex-rs/utils/cli/src/sandbox_mode_cli_arg.rs @@ -1,6 +1,6 @@ //! Standard type to use with the `--sandbox` (`-s`) CLI option. //! -//! This mirrors the variants of [`codex_core::protocol::SandboxPolicy`], but +//! This mirrors the variants of [`codex_protocol::protocol::SandboxPolicy`], but //! without any of the associated data so it can be expressed as a simple flag //! on the command-line. Users that need to tweak the advanced options for //! `workspace-write` can continue to do so via `-c` overrides or their diff --git a/codex-rs/utils/sandbox-summary/Cargo.toml b/codex-rs/utils/sandbox-summary/Cargo.toml index 6e44b2d201..202dfaf22b 100644 --- a/codex-rs/utils/sandbox-summary/Cargo.toml +++ b/codex-rs/utils/sandbox-summary/Cargo.toml @@ -9,6 +9,7 @@ workspace = true [dependencies] codex-core = { workspace = true } +codex-protocol = { workspace = true } [dev-dependencies] codex-utils-absolute-path = { workspace = true } diff --git a/codex-rs/utils/sandbox-summary/src/sandbox_summary.rs b/codex-rs/utils/sandbox-summary/src/sandbox_summary.rs index 53851d86b7..a5c9b31fdd 100644 --- a/codex-rs/utils/sandbox-summary/src/sandbox_summary.rs +++ b/codex-rs/utils/sandbox-summary/src/sandbox_summary.rs @@ -1,5 +1,5 @@ -use codex_core::protocol::NetworkAccess; -use codex_core::protocol::SandboxPolicy; +use codex_protocol::protocol::NetworkAccess; +use codex_protocol::protocol::SandboxPolicy; pub fn summarize_sandbox_policy(sandbox_policy: &SandboxPolicy) -> String { match sandbox_policy {