diff --git a/codex-rs/ext/memories/src/prompt_contributor.rs b/codex-rs/ext/memories/src/prompt_contributor.rs new file mode 100644 index 0000000000..1244e2e7ce --- /dev/null +++ b/codex-rs/ext/memories/src/prompt_contributor.rs @@ -0,0 +1,19 @@ +use codex_extension_api::ContextContributor; +use codex_extension_api::PromptFragment; +use codex_extension_api::Stores; + +use crate::MemoriesExtension; +use crate::ctx::MemoriesContext; + +impl ContextContributor for MemoriesExtension { + fn contribute(&self, context: &C, _stores: &Stores<'_>) -> Vec { + if !self.is_read_surface_enabled(context) { + return Vec::new(); + } + + self.read_prompt() + .map(PromptFragment::developer_policy) + .into_iter() + .collect() + } +} diff --git a/codex-rs/ext/memories/src/tool_contributor.rs b/codex-rs/ext/memories/src/tool_contributor.rs new file mode 100644 index 0000000000..b4a9198d3b --- /dev/null +++ b/codex-rs/ext/memories/src/tool_contributor.rs @@ -0,0 +1,17 @@ +use codex_extension_api::Stores; +use codex_extension_api::ToolContribution; +use codex_extension_api::ToolContributor; + +use crate::MemoriesExtension; +use crate::ctx::MemoriesContext; + +impl ToolContributor for MemoriesExtension { + fn tools(&self, context: &C, _stores: &Stores<'_>) -> Vec> { + if !self.is_read_surface_enabled(context) { + return Vec::new(); + } + + // TODO(jif) add more tools ofc + vec![self.list_tool.contribution()] + } +}