mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
34bb85519f
## Why Extensions can observe thread and turn lifecycle events today, but there was no single host-owned hook for changes to the effective thread configuration. That makes features that need to react to model, permission, or tool-suggest updates either depend on individual mutation paths or risk going stale after runtime config refreshes. This adds a typed config-change contributor so extension-owned state can stay synchronized with the effective thread config while the host remains responsible for deciding when config changed. ## What Changed - Added `ConfigContributor<C>` to `codex_extension_api`, with before/after immutable snapshots of the effective config plus session/thread extension stores. - Added registry builder/accessor support through `config_contributor` and `config_contributors`. - Emits config-change callbacks after committed updates from session settings, per-turn setting updates, and `refresh_runtime_config`. - Builds effective config snapshots only when config contributors are registered, and suppresses no-op callbacks when the before/after snapshots are equal. - Added a core session regression test that verifies contributors observe both model changes and user-layer runtime config changes, including access to session and thread extension stores. ## Validation Added `config_change_contributor_observes_effective_config_changes` in `codex-rs/core/src/session/tests.rs` to cover the new contributor path.
41 lines
1.4 KiB
Rust
41 lines
1.4 KiB
Rust
mod capabilities;
|
|
mod contributors;
|
|
mod registry;
|
|
mod state;
|
|
|
|
pub use capabilities::AgentSpawnFuture;
|
|
pub use capabilities::AgentSpawner;
|
|
pub use codex_tools::FunctionCallError;
|
|
pub use codex_tools::JsonToolOutput;
|
|
pub use codex_tools::ResponsesApiTool;
|
|
pub use codex_tools::ToolCall;
|
|
pub use codex_tools::ToolName;
|
|
pub use codex_tools::ToolPayload;
|
|
pub use codex_tools::ToolSpec;
|
|
pub use codex_tools::parse_tool_input_schema;
|
|
pub use contributors::ApprovalReviewContributor;
|
|
pub use contributors::ApprovalReviewFuture;
|
|
pub use contributors::ConfigContributor;
|
|
pub use contributors::ContextContributor;
|
|
pub use contributors::ExtensionToolExecutor;
|
|
pub use contributors::ExtensionToolFuture;
|
|
pub use contributors::ExtensionToolOutput;
|
|
pub use contributors::PromptFragment;
|
|
pub use contributors::PromptSlot;
|
|
pub use contributors::ThreadLifecycleContributor;
|
|
pub use contributors::ThreadResumeInput;
|
|
pub use contributors::ThreadStartInput;
|
|
pub use contributors::ThreadStopInput;
|
|
pub use contributors::TokenUsageContributor;
|
|
pub use contributors::ToolContributor;
|
|
pub use contributors::TurnAbortInput;
|
|
pub use contributors::TurnItemContributionFuture;
|
|
pub use contributors::TurnItemContributor;
|
|
pub use contributors::TurnLifecycleContributor;
|
|
pub use contributors::TurnStartInput;
|
|
pub use contributors::TurnStopInput;
|
|
pub use registry::ExtensionRegistry;
|
|
pub use registry::ExtensionRegistryBuilder;
|
|
pub use registry::empty_extension_registry;
|
|
pub use state::ExtensionData;
|