pub struct MemoryPatch {
pub content: Option<String>,
pub vector: Option<Vec<f32>>,
pub importance: Option<f32>,
pub memory_type: Option<MemoryType>,
pub metadata: Option<Map<String, Value>>,
pub ttl_secs: Option<Option<i64>>,
}Expand description
Patch body for crate::Mnemo::update (Phase 12.1): every field is
optional, and only the Some(...) fields overwrite the corresponding
field on the target memory. All fields can be set independently.
content paired with vector updates both at once — the engine does
not re-embed under update (use update_text for that). A content
change without a new vector is rejected to prevent the embedding
drifting silently out of sync with the text.
metadata replaces the full user-metadata map — the engine’s own
_mnemo.* reserved keys on the target record are preserved across
the replacement (updated-at timestamp, supersession markers, etc.).
Passing an empty map drops every user-visible metadata key but keeps
the reserved ones.
ttl_secs is Option<Option<i64>> so a caller can distinguish
“leave it alone” (None) from “set it to a value” (Some(Some(s)))
and “clear it” (Some(None)).
Fields§
§content: Option<String>New text content. If set, a matching vector must also be set
(or call update_text, which re-embeds through the registered
embedder).
vector: Option<Vec<f32>>New embedding. Must match the database’s dimensionality.
importance: Option<f32>New importance in [0, 1].
memory_type: Option<MemoryType>Replace the memory type.
metadata: Option<Map<String, Value>>Replace the user-visible metadata (preserves _mnemo.* reserved
keys).
ttl_secs: Option<Option<i64>>Change the TTL. Outer None → leave unchanged; Some(Some(s)) →
set TTL to s; Some(None) → clear any existing TTL.