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 const fn active_provider(&self) -> CliRunnerType
pub const fn active_provider(&self) -> CliRunnerType
Get the currently active provider type
Sourcepub fn set_active_provider(&mut self, provider: CliRunnerType)
pub fn set_active_provider(&mut self, provider: CliRunnerType)
Switch the active provider (resets the active model)
Sourcepub fn active_model(&self) -> Option<&str>
pub fn active_model(&self) -> Option<&str>
Get the currently selected model (None means use provider default)
Sourcepub fn set_active_model(&mut self, model: Option<String>)
pub fn set_active_model(&mut self, model: Option<String>)
Set the model to use for subsequent requests
Sourcepub fn multiplex_providers(&self) -> &[CliRunnerType]
pub fn multiplex_providers(&self) -> &[CliRunnerType]
Get the list of providers configured for multiplex dispatch
Sourcepub fn set_multiplex_providers(&mut self, providers: Vec<CliRunnerType>)
pub fn set_multiplex_providers(&mut 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) -> ToolDefinition
fn definition(&self) -> ToolDefinition
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the tool with the given arguments against the shared server state
Source§impl McpTool<ServerState> for GetMultiplexProvider
impl McpTool<ServerState> for GetMultiplexProvider
Source§fn definition(&self) -> ToolDefinition
fn definition(&self) -> ToolDefinition
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the tool with the given arguments against the shared server state
Source§impl McpTool<ServerState> for GetProvider
impl McpTool<ServerState> for GetProvider
Source§fn definition(&self) -> ToolDefinition
fn definition(&self) -> ToolDefinition
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
_arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the tool with the given arguments against the shared server state
Source§impl McpTool<ServerState> for Prompt
impl McpTool<ServerState> for Prompt
Source§fn definition(&self) -> ToolDefinition
fn definition(&self) -> ToolDefinition
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the tool with the given arguments against the shared server state
Source§impl McpTool<ServerState> for SetModel
impl McpTool<ServerState> for SetModel
Source§fn definition(&self) -> ToolDefinition
fn definition(&self) -> ToolDefinition
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the tool with the given arguments against the shared server state
Source§impl McpTool<ServerState> for SetMultiplexProvider
impl McpTool<ServerState> for SetMultiplexProvider
Source§fn definition(&self) -> ToolDefinition
fn definition(&self) -> ToolDefinition
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the tool with the given arguments against the shared server state
Source§impl McpTool<ServerState> for SetProvider
impl McpTool<ServerState> for SetProvider
Source§fn definition(&self) -> ToolDefinition
fn definition(&self) -> ToolDefinition
Return the tool’s MCP definition (name, description, input schema)
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
arguments: Value,
) -> Pin<Box<dyn Future<Output = CallToolResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the tool with the given arguments against the shared server state
Auto Trait Implementations§
impl !Freeze for ServerState
impl !RefUnwindSafe for ServerState
impl Send for ServerState
impl Sync for ServerState
impl Unpin for ServerState
impl UnsafeUnpin for ServerState
impl !UnwindSafe 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
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