diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index cb758898c7..a78a9ab91c 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -2976,6 +2976,7 @@ dependencies = [ "codex-protocol", "codex-state", "codex-tools", + "codex-utils-template", "pretty_assertions", "serde", "serde_json", diff --git a/codex-rs/ext/goal/BUILD.bazel b/codex-rs/ext/goal/BUILD.bazel index 05b80c3706..e13276ddd5 100644 --- a/codex-rs/ext/goal/BUILD.bazel +++ b/codex-rs/ext/goal/BUILD.bazel @@ -3,5 +3,8 @@ load("//:defs.bzl", "codex_rust_crate") codex_rust_crate( name = "goal", crate_name = "codex_goal_extension", + compile_data = glob([ + "templates/**", + ]), integration_compile_data_extra = ["src/accounting.rs"], ) diff --git a/codex-rs/ext/goal/Cargo.toml b/codex-rs/ext/goal/Cargo.toml index 3bf0eca8d5..667ed5d14d 100644 --- a/codex-rs/ext/goal/Cargo.toml +++ b/codex-rs/ext/goal/Cargo.toml @@ -21,6 +21,7 @@ codex-otel = { workspace = true } codex-protocol = { workspace = true } codex-state = { workspace = true } codex-tools = { workspace = true } +codex-utils-template = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } tracing = { workspace = true } diff --git a/codex-rs/ext/goal/src/steering.rs b/codex-rs/ext/goal/src/steering.rs index 27ffd6a02b..d53ed7a4ad 100644 --- a/codex-rs/ext/goal/src/steering.rs +++ b/codex-rs/ext/goal/src/steering.rs @@ -2,6 +2,47 @@ use codex_core::context::ContextualUserFragment; use codex_core::context::ExtensionContext; use codex_protocol::models::ResponseInputItem; use codex_protocol::protocol::ThreadGoal; +use codex_utils_template::Template; +use std::sync::LazyLock; + +static CONTINUATION_TEMPLATE: LazyLock