pub struct AppState {Show 41 fields
pub db: Database,
pub config: Arc<RwLock<RoboticusConfig>>,
pub llm: Arc<RwLock<LlmService>>,
pub wallet: Arc<WalletService>,
pub a2a: Arc<RwLock<A2aProtocol>>,
pub personality: Arc<RwLock<PersonalityState>>,
pub hmac_secret: Arc<Vec<u8>>,
pub interviews: Arc<RwLock<HashMap<String, InterviewSession>>>,
pub plugins: Arc<PluginRegistry>,
pub policy_engine: Arc<PolicyEngine>,
pub browser: Arc<Browser>,
pub registry: Arc<SubagentRegistry>,
pub event_bus: EventBus,
pub channel_router: Arc<ChannelRouter>,
pub telegram: Option<Arc<TelegramAdapter>>,
pub whatsapp: Option<Arc<WhatsAppAdapter>>,
pub retriever: Arc<MemoryRetriever>,
pub ann_index: AnnIndex,
pub tools: Arc<ToolRegistry>,
pub capabilities: Arc<CapabilityRegistry>,
pub approvals: Arc<ApprovalManager>,
pub discord: Option<Arc<DiscordAdapter>>,
pub signal: Option<Arc<SignalAdapter>>,
pub email: Option<Arc<EmailAdapter>>,
pub voice: Option<Arc<RwLock<VoicePipeline>>>,
pub media_service: Option<Arc<MediaService>>,
pub discovery: Arc<RwLock<DiscoveryRegistry>>,
pub devices: Arc<RwLock<DeviceManager>>,
pub mcp_clients: Arc<RwLock<McpClientManager>>,
pub mcp_server: Arc<RwLock<McpServerRegistry>>,
pub live_mcp: Arc<McpConnectionManager>,
pub oauth: Arc<OAuthManager>,
pub keystore: Arc<Keystore>,
pub obsidian: Option<Arc<RwLock<ObsidianVault>>>,
pub started_at: Instant,
pub config_path: Arc<PathBuf>,
pub config_apply_status: Arc<RwLock<ConfigApplyStatus>>,
pub pending_specialist_proposals: Arc<RwLock<HashMap<String, Value>>>,
pub ws_tickets: TicketStore,
pub rate_limiter: GlobalRateLimitLayer,
pub semantic_classifier: Arc<SemanticClassifier>,
}Fields§
§db: Database§config: Arc<RwLock<RoboticusConfig>>§llm: Arc<RwLock<LlmService>>§wallet: Arc<WalletService>§a2a: Arc<RwLock<A2aProtocol>>§personality: Arc<RwLock<PersonalityState>>§hmac_secret: Arc<Vec<u8>>§interviews: Arc<RwLock<HashMap<String, InterviewSession>>>§plugins: Arc<PluginRegistry>§policy_engine: Arc<PolicyEngine>§browser: Arc<Browser>§registry: Arc<SubagentRegistry>§event_bus: EventBus§channel_router: Arc<ChannelRouter>§telegram: Option<Arc<TelegramAdapter>>§whatsapp: Option<Arc<WhatsAppAdapter>>§retriever: Arc<MemoryRetriever>§ann_index: AnnIndex§tools: Arc<ToolRegistry>§capabilities: Arc<CapabilityRegistry>Mirror of tools for LLM catalog and capability-aware execution paths.
approvals: Arc<ApprovalManager>§discord: Option<Arc<DiscordAdapter>>§signal: Option<Arc<SignalAdapter>>§email: Option<Arc<EmailAdapter>>§voice: Option<Arc<RwLock<VoicePipeline>>>§media_service: Option<Arc<MediaService>>§discovery: Arc<RwLock<DiscoveryRegistry>>§devices: Arc<RwLock<DeviceManager>>§mcp_clients: Arc<RwLock<McpClientManager>>§mcp_server: Arc<RwLock<McpServerRegistry>>§live_mcp: Arc<McpConnectionManager>§oauth: Arc<OAuthManager>§keystore: Arc<Keystore>§obsidian: Option<Arc<RwLock<ObsidianVault>>>§started_at: Instant§config_path: Arc<PathBuf>§config_apply_status: Arc<RwLock<ConfigApplyStatus>>§pending_specialist_proposals: Arc<RwLock<HashMap<String, Value>>>§ws_tickets: TicketStore§rate_limiter: GlobalRateLimitLayer§semantic_classifier: Arc<SemanticClassifier>Shared semantic classifier backed by the embedding client. Used for guard pre-computation and specialist workflow detection.
Implementations§
Source§impl AppState
impl AppState
Sourcepub async fn resync_capabilities_from_tools(&self)
pub async fn resync_capabilities_from_tools(&self)
Rebuild CapabilityRegistry from the current ToolRegistry (e.g. after plugin hot-load).
pub async fn reload_personality(&self)
Trait Implementations§
Source§impl HasAgent for AppState
impl HasAgent for AppState
fn tools(&self) -> &Arc<ToolRegistry>
fn capabilities(&self) -> &Arc<CapabilityRegistry>
fn policy_engine(&self) -> &Arc<PolicyEngine>
fn approvals(&self) -> &Arc<ApprovalManager>
fn registry(&self) -> &Arc<SubagentRegistry>
fn plugins(&self) -> &Arc<PluginRegistry>
Source§impl HasChannels for AppState
impl HasChannels for AppState
fn channel_router(&self) -> &Arc<ChannelRouter>
Source§impl HasInference for AppState
impl HasInference for AppState
fn llm(&self) -> &Arc<RwLock<LlmService>>
fn semantic_classifier(&self) -> &Arc<SemanticClassifier>
Source§impl InferenceRunner for AppState
impl InferenceRunner for AppState
Source§fn select_and_audit_model<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>(
&'life0 self,
user_content: &'life1 str,
session_id: &'life2 str,
turn_id: &'life3 str,
channel_label: &'life4 str,
complexity: Option<&'life5 str>,
) -> Pin<Box<dyn Future<Output = String> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
'life5: 'async_trait,
fn select_and_audit_model<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>(
&'life0 self,
user_content: &'life1 str,
session_id: &'life2 str,
turn_id: &'life3 str,
channel_label: &'life4 str,
complexity: Option<&'life5 str>,
) -> Pin<Box<dyn Future<Output = String> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
'life5: 'async_trait,
Select the best model for a request and persist the audit trail. Read more
Source§fn infer_with_fallback<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
request: &'life1 UnifiedRequest,
initial_model: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<InferenceResult, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn infer_with_fallback<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
request: &'life1 UnifiedRequest,
initial_model: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<InferenceResult, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Run inference with fallback chain. Routes to the best available
provider, escalates on low confidence, falls back on provider errors.
Source§fn infer_stream_with_fallback<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
request: &'life1 UnifiedRequest,
initial_model: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<StreamResolvedInference, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn infer_stream_with_fallback<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
request: &'life1 UnifiedRequest,
initial_model: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<StreamResolvedInference, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Resolve a streaming provider and return a ready-to-consume SSE stream
with provider metadata for post-stream bookkeeping.
Source§impl PipelineCoordination for AppState
impl PipelineCoordination for AppState
fn channel_router(&self) -> &Arc<ChannelRouter>
fn event_bus(&self) -> &EventBus
Source§impl PipelineCore for AppState
impl PipelineCore for AppState
Source§impl PipelineExecution for AppState
impl PipelineExecution for AppState
Source§impl PipelinePersonality for AppState
impl PipelinePersonality for AppState
fn personality(&self) -> &Arc<RwLock<PersonalityState>>
Source§impl PipelineReasoning for AppState
impl PipelineReasoning for AppState
fn llm(&self) -> &Arc<RwLock<LlmService>>
fn semantic_classifier(&self) -> &Arc<SemanticClassifier>
Source§impl PipelineRetrieval for AppState
impl PipelineRetrieval for AppState
Source§impl PipelineSecurity for AppState
impl PipelineSecurity for AppState
fn hmac_secret(&self) -> &[u8] ⓘ
Source§impl PipelineTooling for AppState
impl PipelineTooling for AppState
fn tools(&self) -> &Arc<ToolRegistry>
fn capabilities(&self) -> &Arc<CapabilityRegistry>
fn policy_engine(&self) -> &Arc<PolicyEngine>
fn approvals(&self) -> &Arc<ApprovalManager>
fn registry(&self) -> &Arc<SubagentRegistry>
fn plugins(&self) -> &Arc<PluginRegistry>
fn mcp_server(&self) -> &Arc<RwLock<McpServerRegistry>>
Source§impl ToolExecutor for AppState
impl ToolExecutor for AppState
Source§fn execute_tool<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
params: &'life2 Value,
turn_id: &'life3 str,
authority: InputAuthority,
channel: Option<&'life4 str>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn execute_tool<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
params: &'life2 Value,
turn_id: &'life3 str,
authority: InputAuthority,
channel: Option<&'life4 str>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Execute a tool by name, returning the output text. Read more
Source§fn execute_tool_detailed<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
params: &'life2 Value,
turn_id: &'life3 str,
authority: InputAuthority,
channel: Option<&'life4 str>,
) -> Pin<Box<dyn Future<Output = Result<ToolExecutionDetails, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn execute_tool_detailed<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
params: &'life2 Value,
turn_id: &'life3 str,
authority: InputAuthority,
channel: Option<&'life4 str>,
) -> Pin<Box<dyn Future<Output = Result<ToolExecutionDetails, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Execute a tool and return detailed metadata (output + source). Read more
Auto Trait Implementations§
impl Freeze for AppState
impl !RefUnwindSafe for AppState
impl Send for AppState
impl Sync for AppState
impl Unpin for AppState
impl UnsafeUnpin for AppState
impl !UnwindSafe for AppState
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Upcastable for T
impl<T> Upcastable for T
Source§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
Source§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref