Skip to main content

MemoryServiceImpl

Struct MemoryServiceImpl 

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

Canonical PostCortexService implementation backed by ConversationMemorySystem.

Construct with Self::new passing an Arc<ConversationMemorySystem> (typically the singleton owned by the daemon).

Implementations§

Source§

impl MemoryServiceImpl

Source

pub fn new(system: Arc<ConversationMemorySystem>) -> Self

Wrap an existing memory system in the canonical service trait, starting the non-blocking write pipeline with default capacities. Must be called from inside a Tokio runtime.

Source

pub fn with_pipeline_config( system: Arc<ConversationMemorySystem>, config: PipelineConfig, ) -> Self

Wrap an existing memory system in the service trait with an explicit pipeline configuration.

Source

pub fn pipeline(&self) -> &Arc<Pipeline>

Borrow the non-blocking pipeline. Exposed so transport adapters can submit derived-work items directly (e.g. enqueue an embedding compute after a manual storage write).

Source

pub fn inner(&self) -> &Arc<ConversationMemorySystem>

Borrow the underlying memory system. Provided so the daemon’s gRPC handlers can fall back to direct calls for methods that have not been migrated to the trait yet.

Trait Implementations§

Source§

impl PostCortexService for MemoryServiceImpl

Source§

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

Returns a snapshot of system health. Cheap — the only operation that does not flow through the storage actor and is safe to call from a heartbeat probe.
Source§

fn update_context<'life0, 'async_trait>( &'life0 self, req: UpdateContextRequest, ) -> Pin<Box<dyn Future<Output = Result<UpdateContextResponse, SystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Persist a single context update for a session and enqueue derived work (embedding, HNSW upsert, graph update, summary refresh) onto background pipelines. Returns once the entry is durably persisted; embeddings / vector index land asynchronously per TODO.md:136-145.
Source§

fn bulk_update_context<'life0, 'async_trait>( &'life0 self, req: BulkUpdateContextRequest, ) -> Pin<Box<dyn Future<Output = Result<BulkUpdateContextResponse, SystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Batch variant of Self::update_context. Backends use storage write batches when available (RocksDB transaction).
Run a semantic similarity search against persisted content. Scope determines whether the query runs against a single session, a workspace, or the global index.
Source§

fn query_context<'life0, 'async_trait>( &'life0 self, _req: QueryContextRequest, ) -> Pin<Box<dyn Future<Output = Result<QueryContextResponse, SystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Run a structured/keyword query against the session’s context updates. Faster than semantic search; no embedding required.
Source§

fn assemble_context<'life0, 'async_trait>( &'life0 self, _req: AssembleContextRequest, ) -> Pin<Box<dyn Future<Output = Result<AssembleContextResponse, SystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Graph-aware retrieval: semantic search + entity neighbourhood traversal + impact analysis, all merged into one assembled context payload.
Source§

fn manage_session<'life0, 'async_trait>( &'life0 self, _req: ManageSessionRequest, ) -> Pin<Box<dyn Future<Output = Result<ManageSessionResponse, SystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Manage session lifecycle (create / list / load / search / update / delete). The variant carried in the request determines which operation runs — letting callers (especially MCP) treat sessions as a single tool surface.
Source§

fn manage_workspace<'life0, 'async_trait>( &'life0 self, _req: ManageWorkspaceRequest, ) -> Pin<Box<dyn Future<Output = Result<ManageWorkspaceResponse, SystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Manage workspace lifecycle (create / list / get / delete / add-session / remove-session). Same shape as Self::manage_session.
Source§

fn manage_entity<'life0, 'async_trait>( &'life0 self, _req: ManageEntityRequest, ) -> Pin<Box<dyn Future<Output = Result<ManageEntityResponse, SystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Manage entity lifecycle (delete / delete-update). Cascades through the entity graph; storage-layer side effects (vector index purge, summary invalidation) run on background pipelines.
Source§

fn get_structured_summary<'life0, 'async_trait>( &'life0 self, _req: StructuredSummaryRequest, ) -> Pin<Box<dyn Future<Output = Result<StructuredSummaryResponse, SystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Compose the structured summary view for a session — a hierarchical projection over context updates, decisions, problems, and entity importance.
Source§

fn admin<'life0, 'async_trait>( &'life0 self, _req: AdminRequest, ) -> Pin<Box<dyn Future<Output = Result<AdminResponse, SystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Run an admin operation (vectorize session, create checkpoint, fetch vectorization stats, etc.). Variant-dispatched like session/workspace/entity for symmetry.

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<U> As for U

Source§

fn as_<T>(self) -> T
where T: CastFrom<U>,

Casts self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. 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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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
Source§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

fn is_within(&self, b: &G2) -> bool

Source§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

fn is_within(&self, b: &G2) -> bool

Source§

impl<T> ErasedDestructor for T
where T: 'static,