| |
|
|
| use super::ContextualUserFragment; |
| use codex_protocol::models::ContentItemKind; |
| use codex_utils_output_truncation::TruncationPolicy; |
| use codex_utils_output_truncation::truncate_text; |
|
|
| |
| pub enum MemoryContextFragment { |
| ReadInstructions(String), |
| ExtractionEvidence(String), |
| } |
|
|
| impl ContextualUserFragment for MemoryContextFragment { |
| fn role(&self) -> &'static str { |
| match self { |
| Self::ReadInstructions(_) => "developer", |
| Self::ExtractionEvidence(_) => "user", |
| } |
| } |
| fn content_kind(&self) -> ContentItemKind { |
| ContentItemKind( |
| match self { |
| Self::ReadInstructions(_) => "memories.instructions", |
| Self::ExtractionEvidence(_) => "memories.extraction_evidence", |
| } |
| .to_string(), |
| ) |
| } |
| fn requires_separate_message(&self) -> bool { |
| true |
| } |
| fn markers(&self) -> (&'static str, &'static str) { |
| Self::type_markers() |
| } |
| fn type_markers() -> (&'static str, &'static str) { |
| ("", "") |
| } |
| fn body(&self) -> String { |
| let (Self::ReadInstructions(text) | Self::ExtractionEvidence(text)) = self; |
| truncate_text(text, TruncationPolicy::Bytes(8_900)) |
| } |
| } |
|
|