MCPcopy Create free account
hub / github.com/GCWing/BitFun / new_async

Method new_async

src/apps/desktop/src/api/app_state.rs:91–319  ·  view source on GitHub ↗
(
        token_usage_service: Arc<token_usage::TokenUsageService>,
    )

Source from the content-addressed store, hash-verified

89
90impl AppState {
91 pub async fn new_async(
92 token_usage_service: Arc<token_usage::TokenUsageService>,
93 ) -> BitFunResult<Self> {
94 let start_time = std::time::Instant::now();
95
96 let config_service = config::get_global_config_service().await.map_err(|e| {
97 BitFunError::config(format!("Failed to get global config service: {}", e))
98 })?;
99
100 let ai_client = Arc::new(RwLock::new(None));
101 let ai_client_factory = AIClientFactory::get_global().await.map_err(|e| {
102 BitFunError::service(format!("Failed to get global AIClientFactory: {}", e))
103 })?;
104 let side_question_runtime = Arc::new(SideQuestionRuntime::new());
105
106 let tool_registry = {
107 let registry = tools::registry::get_global_tool_registry();
108 let lock = registry.read().await;
109 Arc::new(lock.get_all_tools())
110 };
111
112 let workspace_service = Arc::new(workspace::WorkspaceService::new().await?);
113 let workspace_identity_watch_service = Arc::new(
114 workspace::WorkspaceIdentityWatchService::new(workspace_service.clone()),
115 );
116 workspace::set_global_workspace_service(workspace_service.clone());
117 let filesystem_service = Arc::new(filesystem::FileSystemServiceFactory::create_default());
118 let workspace_search_service = Arc::new(search::WorkspaceSearchService::new());
119 search::set_global_workspace_search_service(workspace_search_service.clone());
120
121 let agent_registry = agents::get_agent_registry();
122
123 let mcp_service = match mcp::MCPService::new(config_service.clone()) {
124 Ok(service) => {
125 log::info!("MCP service initialized successfully");
126 let service = Arc::new(service);
127 mcp::set_global_mcp_service(service.clone());
128 Some(service)
129 }
130 Err(e) => {
131 log::warn!("Failed to initialize MCP service: {}", e);
132 None
133 }
134 };
135 let path_manager = workspace_service.path_manager().clone();
136 let acp_client_service = Some(
137 bitfun_acp::AcpClientService::new(config_service.clone(), path_manager.clone())
138 .map_err(|e| {
139 BitFunError::service(format!("Failed to initialize ACP client service: {}", e))
140 })?,
141 );
142
143 let announcement_scheduler = Arc::new(
144 announcement::AnnouncementScheduler::new(&path_manager)
145 .await
146 .map_err(|e| {
147 BitFunError::service(format!(
148 "Failed to initialize announcement scheduler: {}",

Callers

nothing calls this directly

Calls 15

get_global_tool_registryFunction · 0.85
get_agent_registryFunction · 0.85
set_global_mcp_serviceFunction · 0.85
seed_builtin_miniappsFunction · 0.85
resolve_worker_host_pathFunction · 0.85
readMethod · 0.45
get_all_toolsMethod · 0.45

Tested by

no test coverage detected