pub struct PcxGrpcService { /* private fields */ }Expand description
gRPC service backed by ConversationMemorySystem.
Holds both the raw ConversationMemorySystem (used by handlers
that have not yet migrated to the canonical trait) and the
canonical MemoryServiceImpl. Newly-migrated handlers — currently
update_context / bulk_update_context — translate proto types
into post_cortex_core::services requests and delegate to
self.service, so validation lives in exactly one place.
Implementations§
Source§impl PcxGrpcService
impl PcxGrpcService
Sourcepub fn new(memory: Arc<ConversationMemorySystem>) -> Self
pub fn new(memory: Arc<ConversationMemorySystem>) -> Self
Wrap a shared memory system in a new gRPC service handle.
Sourcepub fn from_service(service: Arc<MemoryServiceImpl>) -> Self
pub fn from_service(service: Arc<MemoryServiceImpl>) -> Self
Build a gRPC service from an existing canonical service so several transports can share the same background pipeline (Phase 11).
Sourcepub fn into_server(self) -> PostCortexServer<Self>
pub fn into_server(self) -> PostCortexServer<Self>
Consume self and return a tonic PostCortexServer ready to serve.
Trait Implementations§
Source§impl PostCortex for PcxGrpcService
impl PostCortex for PcxGrpcService
Source§fn health<'life0, 'async_trait>(
&'life0 self,
_request: Request<HealthRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<HealthResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn health<'life0, 'async_trait>(
&'life0 self,
_request: Request<HealthRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<HealthResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Health —
Source§fn create_session<'life0, 'async_trait>(
&'life0 self,
request: Request<CreateSessionRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<CreateSessionResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_session<'life0, 'async_trait>(
&'life0 self,
request: Request<CreateSessionRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<CreateSessionResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Session Management —
fn list_sessions<'life0, 'async_trait>(
&'life0 self,
request: Request<ListSessionsRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<ListSessionsResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_session<'life0, 'async_trait>(
&'life0 self,
request: Request<LoadSessionRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<LoadSessionResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn search_sessions<'life0, 'async_trait>(
&'life0 self,
request: Request<SearchSessionsRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<SearchSessionsResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_session_metadata<'life0, 'async_trait>(
&'life0 self,
request: Request<UpdateSessionMetadataRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<UpdateSessionMetadataResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_session<'life0, 'async_trait>(
&'life0 self,
request: Request<DeleteSessionRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<DeleteSessionResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn delete_entity<'life0, 'async_trait>(
&'life0 self,
request: Request<DeleteEntityRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<DeleteEntityResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_entity<'life0, 'async_trait>(
&'life0 self,
request: Request<DeleteEntityRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<DeleteEntityResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Graph Maintenance —
Delete a single entity and cascade-delete all its incident edges from
the 8 relation tables. Atomic against in-memory session cache so the
delete sticks even when the daemon has the session loaded.
Source§fn update_context<'life0, 'async_trait>(
&'life0 self,
request: Request<UpdateContextRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<UpdateContextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_context<'life0, 'async_trait>(
&'life0 self,
request: Request<UpdateContextRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<UpdateContextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Context Operations —
fn bulk_update_context<'life0, 'async_trait>(
&'life0 self,
request: Request<BulkUpdateContextRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<BulkUpdateContextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_checkpoint<'life0, 'async_trait>(
&'life0 self,
request: Request<CreateCheckpointRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<CreateCheckpointResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query_context<'life0, 'async_trait>(
&'life0 self,
request: Request<QueryContextRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<QueryContextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn semantic_search<'life0, 'async_trait>(
&'life0 self,
request: Request<SemanticSearchRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<SemanticSearchResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn semantic_search<'life0, 'async_trait>(
&'life0 self,
request: Request<SemanticSearchRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<SemanticSearchResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Semantic Search —
fn vectorize_session<'life0, 'async_trait>(
&'life0 self,
request: Request<VectorizeSessionRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<VectorizeSessionResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_vectorization_stats<'life0, 'async_trait>(
&'life0 self,
_request: Request<GetVectorizationStatsRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<TextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_structured_summary<'life0, 'async_trait>(
&'life0 self,
request: Request<GetStructuredSummaryRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<TextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_structured_summary<'life0, 'async_trait>(
&'life0 self,
request: Request<GetStructuredSummaryRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<TextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Analysis & Insights —
fn get_key_decisions<'life0, 'async_trait>(
&'life0 self,
request: Request<GetKeyDecisionsRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<TextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_key_insights<'life0, 'async_trait>(
&'life0 self,
request: Request<GetKeyInsightsRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<TextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_entity_importance<'life0, 'async_trait>(
&'life0 self,
request: Request<GetEntityImportanceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<TextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_entity_network<'life0, 'async_trait>(
&'life0 self,
request: Request<GetEntityNetworkRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<TextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_session_statistics<'life0, 'async_trait>(
&'life0 self,
request: Request<GetSessionStatisticsRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<TextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn assemble_context<'life0, 'async_trait>(
&'life0 self,
request: Request<AssembleContextRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<AssembleContextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn assemble_context<'life0, 'async_trait>(
&'life0 self,
request: Request<AssembleContextRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<AssembleContextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Graph-Aware Context Assembly —
Source§fn create_workspace<'life0, 'async_trait>(
&'life0 self,
request: Request<CreateWorkspaceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<CreateWorkspaceResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_workspace<'life0, 'async_trait>(
&'life0 self,
request: Request<CreateWorkspaceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<CreateWorkspaceResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Workspace Management —
fn get_workspace<'life0, 'async_trait>(
&'life0 self,
request: Request<GetWorkspaceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<GetWorkspaceResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_workspaces<'life0, 'async_trait>(
&'life0 self,
_request: Request<ListWorkspacesRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<ListWorkspacesResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_workspace<'life0, 'async_trait>(
&'life0 self,
request: Request<DeleteWorkspaceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<DeleteWorkspaceResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add_session_to_workspace<'life0, 'async_trait>(
&'life0 self,
request: Request<AddSessionToWorkspaceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<AddSessionToWorkspaceResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn remove_session_from_workspace<'life0, 'async_trait>(
&'life0 self,
request: Request<RemoveSessionFromWorkspaceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<RemoveSessionFromWorkspaceResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn register_source<'life0, 'async_trait>(
&'life0 self,
request: Request<RegisterSourceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<RegisterSourceAck>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn register_source<'life0, 'async_trait>(
&'life0 self,
request: Request<RegisterSourceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<RegisterSourceAck>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Source Tracking —
fn register_source_batch<'life0, 'async_trait>(
&'life0 self,
request: Request<RegisterSourceBatchRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<RegisterSourceBatchAck>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn check_freshness<'life0, 'async_trait>(
&'life0 self,
request: Request<FreshnessRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<FreshnessReport>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn invalidate<'life0, 'async_trait>(
&'life0 self,
request: Request<InvalidateRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<InvalidateAck>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn register_symbol_dependency<'life0, 'async_trait>(
&'life0 self,
request: Request<RegisterSymbolDependencyRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<RegisterSymbolDependencyAck>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn register_symbol_dependency<'life0, 'async_trait>(
&'life0 self,
request: Request<RegisterSymbolDependencyRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<RegisterSymbolDependencyAck>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Symbol Dependencies (Phase 9.2) —
fn cascade_invalidate<'life0, 'async_trait>(
&'life0 self,
request: Request<CascadeInvalidateRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<CascadeInvalidateReport>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_stale_entries_by_source<'life0, 'async_trait>(
&'life0 self,
request: Request<GetStaleEntriesBySourceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<GetStaleEntriesBySourceResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_stale_entries_by_source<'life0, 'async_trait>(
&'life0 self,
request: Request<GetStaleEntriesBySourceRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<GetStaleEntriesBySourceResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
— Stale Entry Query —
Returns all source_reference entries for a file that are still marked stale
(status=1). Used by Axon after register_source_batch to detect deleted symbols
(entries that were marked stale by invalidate_source but never re-registered).
Auto Trait Implementations§
impl Freeze for PcxGrpcService
impl !RefUnwindSafe for PcxGrpcService
impl Send for PcxGrpcService
impl Sync for PcxGrpcService
impl Unpin for PcxGrpcService
impl UnsafeUnpin for PcxGrpcService
impl !UnwindSafe for PcxGrpcService
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
Mutably borrows from an owned value. Read more
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>
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 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>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request