mirror of
https://github.com/openai/codex.git
synced 2026-11-11 14:32:25 +00:00
## Why Codex memory updates currently rely on instructions that tell agents to create ad-hoc note files directly in the memory workspace. The memories extension already has a `MemoriesBackend` abstraction for local storage and future non-filesystem backends, so the ad-hoc note writer should live behind that same interface instead of baking local filesystem assumptions into the tool shape. ## What - Adds a `memories/add_ad_hoc_note` tool to the existing memories tool bundle. - Extends `MemoriesBackend` with `add_ad_hoc_note` plus request/response types so remote memory stores can implement the same operation later. - Implements the local backend by creating append-only notes under `extensions/ad_hoc/notes`. - Validates the tool-provided filename contract (`YYYY-MM-DDTHH-MM-SS-<slug>.md`), rejects path-like filenames, rejects empty notes, and uses create-new semantics so existing notes are never overwritten. - Keeps memories tool contribution behind the existing commented-out registration path; this defines the tool surface without newly exposing it through app-server. ## Test Plan - `just test -p codex-memories-extension`
25 lines
772 B
Rust
25 lines
772 B
Rust
mod backend;
|
|
mod extension;
|
|
mod local;
|
|
mod prompts;
|
|
mod schema;
|
|
mod tools;
|
|
|
|
pub use extension::install;
|
|
|
|
pub(crate) const DEFAULT_LIST_MAX_RESULTS: usize = 2_000;
|
|
pub(crate) const MAX_LIST_RESULTS: usize = 2_000;
|
|
pub(crate) const DEFAULT_SEARCH_MAX_RESULTS: usize = 200;
|
|
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 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";
|
|
pub(crate) const SEARCH_TOOL_NAME: &str = "search";
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|