mirror of
https://github.com/openai/codex.git
synced 2026-05-23 20:44:50 +00:00
## Why Goal creation and completion are moving through the goal extension, but the rest of Codex still observes goal state through `ThreadGoalUpdated` events. Without an event from the extension-owned tool path, a model-initiated `create_goal` or `update_goal` can mutate the backend and return a tool result while app-server and TUI listeners miss the goal state transition. ## What changed - Added `GoalEventEmitter` as a small wrapper around the host `ExtensionEventSink` to build `EventMsg::ThreadGoalUpdated` events for goal updates. - Threaded the registry event sink into `GoalExtension` and the `GoalToolExecutor`s created by the extension. The public `GoalExtension::new` constructor keeps a `NoopExtensionEventSink` fallback for standalone use. - Emitted a goal update after successful `create_goal` and `update_goal` tool calls. Until `ToolCall` exposes the current turn submission id, these events use the tool call id as the event id and leave `turn_id` unset. Relevant code: - [`GoalEventEmitter::thread_goal_updated`](1fe2d73890/codex-rs/ext/goal/src/events.rs (L19-L32)) - [`GoalToolExecutor` emission points](1fe2d73890/codex-rs/ext/goal/src/tool.rs (L161-L190)) ## Testing - `cargo test -p codex-goal-extension`
23 lines
699 B
Rust
23 lines
699 B
Rust
//! Extension crate sketch for the `/goal` feature.
|
|
//!
|
|
//! This crate is intentionally not wired into the host yet. It contains the
|
|
//! goal tool specs, extension registration shape, and the parts of runtime
|
|
//! accounting that can be represented with today's extension API.
|
|
|
|
mod accounting;
|
|
mod events;
|
|
mod extension;
|
|
mod spec;
|
|
mod tool;
|
|
|
|
pub use extension::GoalExtension;
|
|
pub use extension::GoalExtensionConfig;
|
|
pub use extension::GoalToolBackend;
|
|
pub use extension::NoGoalToolBackend;
|
|
pub use extension::install;
|
|
pub use extension::install_with_backend;
|
|
pub use spec::CREATE_GOAL_TOOL_NAME;
|
|
pub use spec::GET_GOAL_TOOL_NAME;
|
|
pub use spec::UPDATE_GOAL_TOOL_NAME;
|
|
pub use tool::CreateGoalRequest;
|