diff --git a/codex-rs/ext/memories/src/lib.rs b/codex-rs/ext/memories/src/lib.rs index d17c4c4956..25120c7a3a 100644 --- a/codex-rs/ext/memories/src/lib.rs +++ b/codex-rs/ext/memories/src/lib.rs @@ -15,7 +15,7 @@ pub(crate) const MAX_SEARCH_RESULTS: usize = 200; pub(crate) const DEFAULT_READ_MAX_TOKENS: usize = 20_000; pub(crate) const MEMORY_TOOL_DEVELOPER_INSTRUCTIONS_SUMMARY_TOKEN_LIMIT: usize = 2_500; -pub(crate) const MEMORY_TOOLS_NAMESPACE: &str = "memories/"; +pub(crate) const MEMORY_TOOLS_NAMESPACE: &str = "memories"; pub(crate) const ADD_AD_HOC_NOTE_TOOL_NAME: &str = "add_ad_hoc_note"; pub(crate) const LIST_TOOL_NAME: &str = "list"; pub(crate) const READ_TOOL_NAME: &str = "read"; diff --git a/codex-rs/ext/memories/src/metrics.rs b/codex-rs/ext/memories/src/metrics.rs index 610a3cb9ed..443156b724 100644 --- a/codex-rs/ext/memories/src/metrics.rs +++ b/codex-rs/ext/memories/src/metrics.rs @@ -15,7 +15,7 @@ pub(crate) fn record_tool_call( return; }; - let tool = format!("{MEMORY_TOOLS_NAMESPACE}{operation}"); + let tool = format!("{MEMORY_TOOLS_NAMESPACE}/{operation}"); let _ = metrics_client.counter( MEMORIES_TOOL_CALL_METRIC, /*inc*/ 1, diff --git a/codex-rs/ext/memories/src/tests.rs b/codex-rs/ext/memories/src/tests.rs index fbb23bd7ac..b70c5f802d 100644 --- a/codex-rs/ext/memories/src/tests.rs +++ b/codex-rs/ext/memories/src/tests.rs @@ -22,6 +22,16 @@ use crate::extension::MemoriesExtension; use crate::extension::MemoriesExtensionConfig; use crate::local::LocalMemoriesBackend; +#[test] +fn memory_tool_namespace_matches_responses_api_identifier() { + assert!(!crate::MEMORY_TOOLS_NAMESPACE.is_empty()); + assert!( + crate::MEMORY_TOOLS_NAMESPACE + .bytes() + .all(|byte| byte.is_ascii_alphanumeric() || matches!(byte, b'_' | b'-')) + ); +} + #[test] fn tools_are_not_contributed_without_thread_config() { let extension = MemoriesExtension::default();