Skip to main content

MemoryPack

Struct MemoryPack 

Source
pub struct MemoryPack { /* private fields */ }
Expand description

Pack implementation providing memory.remember and memory.recall verbs.

Implementations§

Source§

impl MemoryPack

Source

pub fn new(runtime: KhiveRuntime) -> Self

Create a new MemoryPack backed by the given runtime.

Trait Implementations§

Source§

impl Pack for MemoryPack

Source§

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 NAME: &'static str = "memory"

Short identifier for this pack (e.g. “kg”, “tasks”).
Source§

const NOTE_KINDS: &'static [&'static str]

Note kinds this pack contributes to the runtime vocabulary.
Source§

const ENTITY_KINDS: &'static [&'static str]

Entity kinds this pack contributes to the runtime vocabulary.
Source§

const HANDLERS: &'static [HandlerDef]

Handlers this pack registers. Read more
Source§

const REQUIRES: &'static [&'static str]

Other pack names whose vocabulary this pack references. Read more
Source§

const EDGE_RULES: &'static [EdgeEndpointRule] = _

Additional edge endpoint rules this pack contributes. Read more
Source§

const NOTE_KIND_SPECS: &'static [NoteKindSpec] = _

Lifecycle and schema specs for note kinds this pack owns. Read more
Source§

const VALIDATION_RULES: &'static [&'static str] = _

Validation rule IDs contributed by this pack. Read more
Source§

impl PackRuntime for MemoryPack

Source§

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 name(&self) -> &str

Pack name — must equal <Self as Pack>::NAME.
Source§

fn note_kinds(&self) -> &'static [&'static str]

Note kinds this pack owns — must equal <Self as Pack>::NOTE_KINDS.
Source§

fn entity_kinds(&self) -> &'static [&'static str]

Entity kinds this pack owns — must equal <Self as Pack>::ENTITY_KINDS.
Source§

fn handlers(&self) -> &'static [HandlerDef]

Handlers this pack registers — must equal <Self as Pack>::HANDLERS.
Source§

fn requires(&self) -> &'static [&'static str]

Pack names whose vocabulary this pack references. Defaults to empty so existing packs compile without changes.
Source§

fn schema_plan(&self) -> SchemaPlan

Pack-auxiliary schema. Read more
Source§

fn warm<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Warm up any in-memory state from persisted snapshots (optional). Read more
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,

Dispatch a verb call. Returns serialized JSON response. Read more
Source§

fn edge_rules(&self) -> &'static [EdgeEndpointRule]

Pack-extensible edge endpoint rules — must equal <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]

NoteKindSpec declarations for note kinds this pack owns. Read more
Source§

fn kind_hook(&self, _kind: &str) -> Option<Arc<dyn KindHook>>

Optional per-kind hook for shared CRUD specialization. Read more
Source§

fn validation_rules(&self) -> &'static [ValidationRule]

Domain-specific validation rules contributed by this pack. Read more
Source§

fn register_embedders(&self, _runtime: &KhiveRuntime)

Register custom embedding providers with the runtime. Read more
Source§

fn register_entity_type_validator(&self, _runtime: &KhiveRuntime)

Install a pack-owned entity-type validator on the runtime. Read more
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).

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

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>

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().

Source§

fn parameter_space(&self) -> ParameterSpace

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more