mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
c9e6d9783d
## Why #29856 already owns the durable thread intent and exact environment binding. This PR adds only the small missing extension boundary: an extension can contribute one named World State section, while core still owns persistence, diffing, and model-visible fragment types. This lets skills stay in the skills extension instead of moving their runtime into core. ## Shape ```text extension-owned state | | contribute section id + JSON snapshot + renderer v core World State | | compare with the previous snapshot v no message, or one incremental model-visible update ``` The extension API is deliberately small: ```rust fn contribute_world_state(...) -> Vec<WorldStateSectionContribution> ``` Core adapts the rendered result to `ContextualUserFragment`, records the snapshot, and keeps the existing compaction/resume behavior. ## What changes - Adds extension-owned World State section contributions. - Calls those contributors from the existing per-step World State builder. - Restores durable selected capability roots into extension thread state on resume. - Keeps the actual model-context fragment and rollout machinery in core. ## What does not change - No skill or MCP implementation moves out of its extension. - No new file watcher, generation, or RPC. - No generic migration of existing World State sections. - No change to the stable environment-ID assumption from #29856. ## Example ```text step 1 snapshot: skills = [] step 2 snapshot: skills = [executor-demo:deploy] core asks the skills extension to render only that change. ``` ## Stack 1. **This PR:** let extensions contribute World State sections. 2. Project executor skills through the skills extension. 3. Pin one MCP runtime to each model step. 4. Project selected MCP/app/connector metadata by environment availability. 5. One end-to-end integration scenario.
79 lines
3.1 KiB
Rust
79 lines
3.1 KiB
Rust
mod capabilities;
|
|
mod contributors;
|
|
mod registry;
|
|
mod state;
|
|
mod user_instructions;
|
|
|
|
pub use capabilities::AgentSpawnFuture;
|
|
pub use capabilities::AgentSpawner;
|
|
pub use capabilities::ExtensionEventSink;
|
|
pub use capabilities::NoopExtensionEventSink;
|
|
pub use capabilities::NoopResponseItemInjector;
|
|
pub use capabilities::ResponseItemInjectionFuture;
|
|
pub use capabilities::ResponseItemInjector;
|
|
pub use codex_context_fragments::ContextualUserFragment;
|
|
pub use codex_protocol::models::ResponseItem;
|
|
pub use codex_tools::ConversationHistory;
|
|
pub use codex_tools::ExtensionTurnItem;
|
|
pub use codex_tools::FunctionCallError;
|
|
pub use codex_tools::JsonToolOutput;
|
|
pub use codex_tools::NoopTurnItemEmitter;
|
|
pub use codex_tools::ResponsesApiTool;
|
|
pub use codex_tools::ToolCall;
|
|
pub use codex_tools::ToolEnvironment;
|
|
pub use codex_tools::ToolExecutor;
|
|
pub use codex_tools::ToolExecutorFuture;
|
|
pub use codex_tools::ToolName;
|
|
pub use codex_tools::ToolOutput;
|
|
pub use codex_tools::ToolPayload;
|
|
pub use codex_tools::ToolSpec;
|
|
pub use codex_tools::TurnItemEmissionFuture;
|
|
pub use codex_tools::TurnItemEmitter;
|
|
pub use codex_tools::parse_tool_input_schema;
|
|
pub use codex_tools::parse_tool_input_schema_without_compaction;
|
|
pub use contributors::ApprovalReviewContributor;
|
|
pub use contributors::ConfigContributor;
|
|
pub use contributors::ContextContributor;
|
|
pub use contributors::ExtensionFuture;
|
|
pub use contributors::McpServerContribution;
|
|
pub use contributors::McpServerContributionContext;
|
|
pub use contributors::McpServerContributor;
|
|
pub use contributors::PreviousWorldStateSection;
|
|
pub use contributors::PromptFragment;
|
|
pub use contributors::PromptSlot;
|
|
pub use contributors::RenderedWorldStateFragment;
|
|
pub use contributors::ThreadIdleInput;
|
|
pub use contributors::ThreadLifecycleContributor;
|
|
pub use contributors::ThreadResumeInput;
|
|
pub use contributors::ThreadStartInput;
|
|
pub use contributors::ThreadStopInput;
|
|
pub use contributors::TokenUsageContributor;
|
|
pub use contributors::ToolCallOutcome;
|
|
pub use contributors::ToolCallSource;
|
|
pub use contributors::ToolContributor;
|
|
pub use contributors::ToolFinishInput;
|
|
pub use contributors::ToolLifecycleContributor;
|
|
pub use contributors::ToolLifecycleFuture;
|
|
pub use contributors::ToolStartInput;
|
|
pub use contributors::TurnAbortInput;
|
|
pub use contributors::TurnContextContributionInput;
|
|
pub use contributors::TurnErrorInput;
|
|
pub use contributors::TurnInputContext;
|
|
pub use contributors::TurnInputContributor;
|
|
pub use contributors::TurnInputEnvironment;
|
|
pub use contributors::TurnItemContributor;
|
|
pub use contributors::TurnLifecycleContributor;
|
|
pub use contributors::TurnStartInput;
|
|
pub use contributors::TurnStopInput;
|
|
pub use contributors::WorldStateContributionInput;
|
|
pub use contributors::WorldStateSectionContribution;
|
|
pub use registry::ExtensionRegistry;
|
|
pub use registry::ExtensionRegistryBuilder;
|
|
pub use registry::empty_extension_registry;
|
|
pub use state::ExtensionData;
|
|
pub use state::ExtensionDataInit;
|
|
pub use user_instructions::LoadUserInstructionsFuture;
|
|
pub use user_instructions::LoadedUserInstructions;
|
|
pub use user_instructions::UserInstructions;
|
|
pub use user_instructions::UserInstructionsProvider;
|