pub struct LeanCtxServer {Show 19 fields
pub cache: SharedCache,
pub session: Arc<RwLock<SessionState>>,
pub tool_calls: Arc<RwLock<Vec<ToolCallRecord>>>,
pub call_count: Arc<AtomicUsize>,
pub cache_ttl_secs: u64,
pub last_call: Arc<RwLock<Instant>>,
pub agent_id: Arc<RwLock<Option<String>>>,
pub client_name: Arc<RwLock<String>>,
pub autonomy: Arc<AutonomyState>,
pub loop_detector: Arc<RwLock<LoopDetector>>,
pub workflow: Arc<RwLock<Option<WorkflowRun>>>,
pub ledger: Arc<RwLock<ContextLedger>>,
pub pipeline_stats: Arc<RwLock<PipelineStats>>,
pub session_mode: SessionMode,
pub workspace_id: String,
pub channel_id: String,
pub context_os: Option<Arc<ContextOsRuntime>>,
pub context_ir: Option<Arc<RwLock<ContextIrV1>>>,
pub registry: Option<Arc<ToolRegistry>>,
/* private fields */
}Expand description
Central MCP server state: cache, session, metrics, and autonomy runtime.
Fields§
§cache: SharedCache§session: Arc<RwLock<SessionState>>§tool_calls: Arc<RwLock<Vec<ToolCallRecord>>>§call_count: Arc<AtomicUsize>§cache_ttl_secs: u64§last_call: Arc<RwLock<Instant>>§agent_id: Arc<RwLock<Option<String>>>§client_name: Arc<RwLock<String>>§autonomy: Arc<AutonomyState>§loop_detector: Arc<RwLock<LoopDetector>>§workflow: Arc<RwLock<Option<WorkflowRun>>>§ledger: Arc<RwLock<ContextLedger>>§pipeline_stats: Arc<RwLock<PipelineStats>>§session_mode: SessionMode§workspace_id: String§channel_id: String§context_os: Option<Arc<ContextOsRuntime>>§context_ir: Option<Arc<RwLock<ContextIrV1>>>§registry: Option<Arc<ToolRegistry>>Implementations§
Source§impl LeanCtxServer
impl LeanCtxServer
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new server with default settings, auto-detecting the project root.
Sourcepub fn new_with_project_root(project_root: Option<&str>) -> Self
pub fn new_with_project_root(project_root: Option<&str>) -> Self
Creates a new server rooted at the given project directory.
Creates a new server in Context OS shared mode for a specific workspace/channel.
Sourcepub async fn check_idle_expiry(&self)
pub async fn check_idle_expiry(&self)
Clears the cache and saves the session if the TTL idle threshold has been exceeded.
Source§impl LeanCtxServer
impl LeanCtxServer
Sourcepub async fn record_call(
&self,
tool: &str,
original: usize,
saved: usize,
mode: Option<String>,
)
pub async fn record_call( &self, tool: &str, original: usize, saved: usize, mode: Option<String>, )
Records a tool call’s token savings without timing information.
Sourcepub async fn record_call_with_path(
&self,
tool: &str,
original: usize,
saved: usize,
mode: Option<String>,
path: Option<&str>,
)
pub async fn record_call_with_path( &self, tool: &str, original: usize, saved: usize, mode: Option<String>, path: Option<&str>, )
Records a tool call like record_call, but includes an optional file path for observability.
Sourcepub async fn record_call_with_timing(
&self,
tool: &str,
original: usize,
saved: usize,
mode: Option<String>,
duration_ms: u64,
)
pub async fn record_call_with_timing( &self, tool: &str, original: usize, saved: usize, mode: Option<String>, duration_ms: u64, )
Records a tool call’s token savings, duration, and emits events and stats.
Sourcepub fn increment_and_check(&self) -> bool
pub fn increment_and_check(&self) -> bool
Increments the call counter and returns true if a checkpoint is due.
Sourcepub async fn auto_checkpoint(&self) -> Option<String>
pub async fn auto_checkpoint(&self) -> Option<String>
Generates a compressed context checkpoint with session state and multi-agent sync.
Sourcepub fn append_tool_call_log(
tool: &str,
duration_ms: u64,
original: usize,
saved: usize,
mode: Option<&str>,
timestamp: &str,
)
pub fn append_tool_call_log( tool: &str, duration_ms: u64, original: usize, saved: usize, mode: Option<&str>, timestamp: &str, )
Appends a tool call entry to the rotating tool-calls.log file.
Sourcepub async fn record_cep_snapshot(&self)
pub async fn record_cep_snapshot(&self)
Persists a CEP (Context Efficiency Protocol) score snapshot for analytics.
Source§impl LeanCtxServer
impl LeanCtxServer
pub fn checkpoint_interval_effective() -> usize
Sourcepub async fn resolve_path(&self, path: &str) -> Result<String, String>
pub async fn resolve_path(&self, path: &str) -> Result<String, String>
Resolves a (possibly relative) tool path against the session’s project_root. Absolute paths and “.” are returned as-is. Relative paths like “src/main.rs” are joined with project_root so tools work regardless of the server’s cwd.
Sourcepub async fn resolve_path_or_passthrough(&self, path: &str) -> String
pub async fn resolve_path_or_passthrough(&self, path: &str) -> String
Like resolve_path, but returns the original path on failure instead of an error.
Trait Implementations§
Source§impl Clone for LeanCtxServer
impl Clone for LeanCtxServer
Source§fn clone(&self) -> LeanCtxServer
fn clone(&self) -> LeanCtxServer
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Default for LeanCtxServer
impl Default for LeanCtxServer
Source§impl ServerHandler for LeanCtxServer
impl ServerHandler for LeanCtxServer
fn get_info(&self) -> ServerInfo
async fn initialize( &self, request: InitializeRequestParams, context: RequestContext<RoleServer>, ) -> Result<InitializeResult, ErrorData>
async fn list_tools( &self, _request: Option<PaginatedRequestParams>, _context: RequestContext<RoleServer>, ) -> Result<ListToolsResult, ErrorData>
async fn list_prompts( &self, _request: Option<PaginatedRequestParams>, _context: RequestContext<RoleServer>, ) -> Result<ListPromptsResult, ErrorData>
async fn get_prompt( &self, request: GetPromptRequestParams, _context: RequestContext<RoleServer>, ) -> Result<GetPromptResult, ErrorData>
async fn list_resources( &self, _request: Option<PaginatedRequestParams>, _context: RequestContext<RoleServer>, ) -> Result<ListResourcesResult, ErrorData>
async fn read_resource( &self, request: ReadResourceRequestParams, _context: RequestContext<RoleServer>, ) -> Result<ReadResourceResult, ErrorData>
async fn call_tool( &self, request: CallToolRequestParams, _context: RequestContext<RoleServer>, ) -> Result<CallToolResult, ErrorData>
fn enqueue_task( &self, _request: CallToolRequestParams, _context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CreateTaskResult, ErrorData>> + MaybeSendFuture
fn ping( &self, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn complete( &self, request: CompleteRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CompleteResult, ErrorData>> + MaybeSendFuture
fn set_level( &self, request: SetLevelRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn list_resource_templates( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<ListResourceTemplatesResult, ErrorData>> + MaybeSendFuture
fn subscribe( &self, request: SubscribeRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn unsubscribe( &self, request: UnsubscribeRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn on_custom_request( &self, request: CustomRequest, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CustomResult, ErrorData>> + MaybeSendFuture
fn on_cancelled( &self, notification: CancelledNotificationParam, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_progress( &self, notification: ProgressNotificationParam, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_initialized( &self, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_roots_list_changed( &self, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_custom_notification( &self, notification: CustomNotification, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn list_tasks( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<ListTasksResult, ErrorData>> + MaybeSendFuture
fn get_task_info( &self, request: GetTaskInfoParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<GetTaskResult, ErrorData>> + MaybeSendFuture
fn get_task_result( &self, request: GetTaskResultParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<GetTaskPayloadResult, ErrorData>> + MaybeSendFuture
fn cancel_task( &self, request: CancelTaskParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CancelTaskResult, ErrorData>> + MaybeSendFuture
Auto Trait Implementations§
impl Freeze for LeanCtxServer
impl !RefUnwindSafe for LeanCtxServer
impl Send for LeanCtxServer
impl Sync for LeanCtxServer
impl Unpin for LeanCtxServer
impl UnsafeUnpin for LeanCtxServer
impl !UnwindSafe for LeanCtxServer
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<R, S> DynService<R> for Swhere
R: ServiceRole,
S: Service<R>,
impl<R, S> DynService<R> for Swhere
R: ServiceRole,
S: Service<R>,
fn handle_request( &self, request: <R as ServiceRole>::PeerReq, context: RequestContext<R>, ) -> Pin<Box<dyn Future<Output = Result<<R as ServiceRole>::Resp, ErrorData>> + Send + '_>>
fn handle_notification( &self, notification: <R as ServiceRole>::PeerNot, context: NotificationContext<R>, ) -> Pin<Box<dyn Future<Output = Result<(), ErrorData>> + Send + '_>>
fn get_info(&self) -> <R as ServiceRole>::Info
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