pub struct MemoryPack { /* private fields */ }Expand description
Pack implementation providing memory.remember and memory.recall verbs.
Implementations§
Source§impl MemoryPack
impl MemoryPack
Sourcepub fn new(runtime: KhiveRuntime) -> Self
pub fn new(runtime: KhiveRuntime) -> Self
Create a new MemoryPack backed by the given runtime.
Trait Implementations§
Source§impl Pack for MemoryPack
impl Pack for MemoryPack
Source§const SCHEMA_PLAN: Option<PackSchemaPlan>
const SCHEMA_PLAN: Option<PackSchemaPlan>
memory_ann_epoch (#812 review REQUEST CHANGES MEDIUM — pack schema
contract): declared here instead of created inline on the epoch
bump/read path, matching every other pack-auxiliary table in this
codebase (ADR-028). Applied at boot by server.rs/serve.rs.
Source§const NOTE_KINDS: &'static [&'static str]
const NOTE_KINDS: &'static [&'static str]
Source§const ENTITY_KINDS: &'static [&'static str]
const ENTITY_KINDS: &'static [&'static str]
Source§const HANDLERS: &'static [HandlerDef]
const HANDLERS: &'static [HandlerDef]
Source§const REQUIRES: &'static [&'static str]
const REQUIRES: &'static [&'static str]
Source§const EDGE_RULES: &'static [EdgeEndpointRule] = _
const EDGE_RULES: &'static [EdgeEndpointRule] = _
Source§const NOTE_KIND_SPECS: &'static [NoteKindSpec] = _
const NOTE_KIND_SPECS: &'static [NoteKindSpec] = _
Source§const VALIDATION_RULES: &'static [&'static str] = _
const VALIDATION_RULES: &'static [&'static str] = _
Source§impl PackRuntime for MemoryPack
impl PackRuntime for MemoryPack
Source§fn register_note_mutation_hook(&self, _runtime: &KhiveRuntime)
fn register_note_mutation_hook(&self, _runtime: &KhiveRuntime)
#750 fix-round 1: install a note-mutation hook on the runtime THIS
pack owns (self.runtime, not the _runtime param — mirrors
KgPack::register_entity_type_validator’s multi-backend rationale:
in a multi-backend deployment each pack is constructed with its own
per-pack runtime, and self.runtime is always that one).
KG’s update/delete verbs reach KhiveRuntime::update_note/
delete_note with no dependency on khive-pack-memory at all. When
those touch a kind="memory" note (content update, soft delete, or
hard delete), this hook bumps the affected models’ write-generation
counter (#750) and fires the same background warm memory.remember
fires on its own write path (#791) — so ann::is_current() correctly
treats the stale-but-still-installed index as behind, search_loaded
keeps serving it in the meantime, and the background warm eventually
installs a fresh one. This hook no longer clears the cache or deletes
the persisted snapshot (see remember.rs’s #791 rationale).
Source§fn note_kinds(&self) -> &'static [&'static str]
fn note_kinds(&self) -> &'static [&'static str]
<Self as Pack>::NOTE_KINDS.Source§fn entity_kinds(&self) -> &'static [&'static str]
fn entity_kinds(&self) -> &'static [&'static str]
<Self as Pack>::ENTITY_KINDS.Source§fn handlers(&self) -> &'static [HandlerDef]
fn handlers(&self) -> &'static [HandlerDef]
<Self as Pack>::HANDLERS.Source§fn requires(&self) -> &'static [&'static str]
fn requires(&self) -> &'static [&'static str]
Source§fn schema_plan(&self) -> SchemaPlan
fn schema_plan(&self) -> SchemaPlan
Source§fn warm<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn warm<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn dispatch<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
verb: &'life1 str,
params: Value,
registry: &'life2 VerbRegistry,
token: &'life3 NamespaceToken,
) -> Pin<Box<dyn Future<Output = Result<Value, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn dispatch<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
verb: &'life1 str,
params: Value,
registry: &'life2 VerbRegistry,
token: &'life3 NamespaceToken,
) -> Pin<Box<dyn Future<Output = Result<Value, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Source§fn edge_rules(&self) -> &'static [EdgeEndpointRule]
fn edge_rules(&self) -> &'static [EdgeEndpointRule]
<Self as Pack>::EDGE_RULES.
Defaults to empty so existing packs that don’t extend the edge contract
can ignore it.Source§fn note_kind_specs(&self) -> &'static [NoteKindSpec]
fn note_kind_specs(&self) -> &'static [NoteKindSpec]
Source§fn kind_hook(&self, _kind: &str) -> Option<Arc<dyn KindHook>>
fn kind_hook(&self, _kind: &str) -> Option<Arc<dyn KindHook>>
Source§fn validation_rules(&self) -> &'static [ValidationRule]
fn validation_rules(&self) -> &'static [ValidationRule]
Source§fn register_embedders(&self, _runtime: &KhiveRuntime)
fn register_embedders(&self, _runtime: &KhiveRuntime)
Source§fn register_entity_type_validator(&self, _runtime: &KhiveRuntime)
fn register_entity_type_validator(&self, _runtime: &KhiveRuntime)
Source§impl PackTunable for MemoryPack
MemoryPack implements PackTunable so that the brain can adjust the
recall scoring pipeline based on observed usage patterns (Issue #159).
impl PackTunable for MemoryPack
MemoryPack implements PackTunable so that the brain can adjust the
recall scoring pipeline based on observed usage patterns (Issue #159).
Parameter names (memory::relevance_weight, memory::salience_weight,
memory::temporal_weight) correspond to the three Beta posteriors in
BalancedRecallState. Posterior means flow directly into
RecallConfig.
project_config reads posterior means → RecallConfig.
apply_config validates and stores the new config; future recall calls
pick it up via MemoryPack::active_config().
Source§fn project_config(&self, state: &BalancedRecallState) -> Value
fn project_config(&self, state: &BalancedRecallState) -> Value
Project the current BalancedRecallState posteriors into a RecallConfig value.
Reads the three posterior means from the profile state. Falls back to the current active config if a parameter is absent (brain not yet warmed up).
Source§fn apply_config(&self, config: Value) -> Result<(), RuntimeError>
fn apply_config(&self, config: Value) -> Result<(), RuntimeError>
Apply a projected config to the pack.
Deserializes the JSON value into a RecallConfig, validates it, and
stores it as the active config. Future recall calls pick up the new
weights via MemoryPack::active_config().
fn parameter_space(&self) -> ParameterSpace
Auto Trait Implementations§
impl !Freeze for MemoryPack
impl !RefUnwindSafe for MemoryPack
impl !UnwindSafe for MemoryPack
impl Send for MemoryPack
impl Sync for MemoryPack
impl Unpin for MemoryPack
impl UnsafeUnpin for MemoryPack
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more