pub struct ServerState { /* private fields */ }Expand description
Central server state tracking provider configuration and cached runners
Runners are created lazily on first access and cached for reuse. The active provider and model determine how prompt dispatch behaves.
Implementations§
Source§impl ServerState
impl ServerState
Sourcepub fn new(default_provider: CliRunnerType) -> Self
pub fn new(default_provider: CliRunnerType) -> Self
Create server state with the given default provider
Sourcepub async fn active_provider(&self) -> CliRunnerType
pub async fn active_provider(&self) -> CliRunnerType
Get the currently active provider type
Sourcepub async fn set_active_provider(&self, provider: CliRunnerType)
pub async fn set_active_provider(&self, provider: CliRunnerType)
Switch the active provider (resets the active model)
Sourcepub async fn active_model(&self) -> Option<String>
pub async fn active_model(&self) -> Option<String>
Get the currently selected model (None means use provider default)
Sourcepub async fn set_active_model(&self, model: Option<String>)
pub async fn set_active_model(&self, model: Option<String>)
Set the model to use for subsequent requests
Sourcepub async fn multiplex_providers(&self) -> Vec<CliRunnerType>
pub async fn multiplex_providers(&self) -> Vec<CliRunnerType>
Get the list of providers configured for multiplex dispatch
Sourcepub async fn set_multiplex_providers(&self, providers: Vec<CliRunnerType>)
pub async fn set_multiplex_providers(&self, providers: Vec<CliRunnerType>)
Set the providers used when multiplexing prompts
Sourcepub async fn get_runner(
&self,
provider: CliRunnerType,
) -> Result<Arc<dyn LlmProvider>, RunnerError>
pub async fn get_runner( &self, provider: CliRunnerType, ) -> Result<Arc<dyn LlmProvider>, RunnerError>
Get or lazily create a runner for the given provider type
Created runners are cached for future calls. The runner cache uses
interior mutability so callers only need &self.
Trait Implementations§
Source§impl McpTool<ServerState> for GetModel
impl McpTool<ServerState> for GetModel
Source§fn definition(&self) -> Tool
fn definition(&self) -> Tool
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute the tool against the shared server state and per-call context
Source§fn capabilities(&self) -> ToolCapabilities
fn capabilities(&self) -> ToolCapabilities
Declare the tool’s host-agnostic capabilities (auth/tenant/admin/…). Read more
Source§impl McpTool<ServerState> for SetModel
impl McpTool<ServerState> for SetModel
Source§fn definition(&self) -> Tool
fn definition(&self) -> Tool
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute the tool against the shared server state and per-call context
Source§fn capabilities(&self) -> ToolCapabilities
fn capabilities(&self) -> ToolCapabilities
Declare the tool’s host-agnostic capabilities (auth/tenant/admin/…). Read more
Source§impl McpTool<ServerState> for GetMultiplexProvider
impl McpTool<ServerState> for GetMultiplexProvider
Source§fn definition(&self) -> Tool
fn definition(&self) -> Tool
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute the tool against the shared server state and per-call context
Source§fn capabilities(&self) -> ToolCapabilities
fn capabilities(&self) -> ToolCapabilities
Declare the tool’s host-agnostic capabilities (auth/tenant/admin/…). Read more
Source§impl McpTool<ServerState> for SetMultiplexProvider
impl McpTool<ServerState> for SetMultiplexProvider
Source§fn definition(&self) -> Tool
fn definition(&self) -> Tool
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute the tool against the shared server state and per-call context
Source§fn capabilities(&self) -> ToolCapabilities
fn capabilities(&self) -> ToolCapabilities
Declare the tool’s host-agnostic capabilities (auth/tenant/admin/…). Read more
Source§impl McpTool<ServerState> for Prompt
impl McpTool<ServerState> for Prompt
Source§fn definition(&self) -> Tool
fn definition(&self) -> Tool
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute the tool against the shared server state and per-call context
Source§fn capabilities(&self) -> ToolCapabilities
fn capabilities(&self) -> ToolCapabilities
Declare the tool’s host-agnostic capabilities (auth/tenant/admin/…). Read more
Source§impl McpTool<ServerState> for GetProvider
impl McpTool<ServerState> for GetProvider
Source§fn definition(&self) -> Tool
fn definition(&self) -> Tool
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute the tool against the shared server state and per-call context
Source§fn capabilities(&self) -> ToolCapabilities
fn capabilities(&self) -> ToolCapabilities
Declare the tool’s host-agnostic capabilities (auth/tenant/admin/…). Read more
Source§impl McpTool<ServerState> for SetProvider
impl McpTool<ServerState> for SetProvider
Source§fn definition(&self) -> Tool
fn definition(&self) -> Tool
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_ctx: &'life2 ToolContext,
arguments: Value,
) -> Pin<Box<dyn Future<Output = ToolResponse> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute the tool against the shared server state and per-call context
Source§fn capabilities(&self) -> ToolCapabilities
fn capabilities(&self) -> ToolCapabilities
Declare the tool’s host-agnostic capabilities (auth/tenant/admin/…). Read more
Auto Trait Implementations§
impl !Freeze for ServerState
impl !RefUnwindSafe for ServerState
impl !UnwindSafe for ServerState
impl Send for ServerState
impl Sync for ServerState
impl Unpin for ServerState
impl UnsafeUnpin for ServerState
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
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>
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 more