#![allow(
clippy::missing_errors_doc,
clippy::missing_panics_doc,
clippy::must_use_candidate
)]
pub mod app;
pub mod app_templates;
pub mod appserver;
pub mod citations;
pub mod config;
pub mod db;
pub mod extract;
pub mod host;
pub mod markdown;
pub mod provider;
pub mod skills;
pub mod space;
pub mod sync;
pub mod tools;
pub mod update;
use anyhow::Result;
pub async fn boot(saved: config::SavedCreds) -> Result<app::App> {
let key = config::first_configured(&saved).map(|(_, k)| k);
let space = space::Space::open()?;
let db = db::Db::open(&space.db_path())?;
let mut app = app::App::new(db, key.as_deref(), space);
app.saved = saved;
app.rebuild_all_backends();
app.app_server = appserver::AppServer::start(app.space.spaces_root()).await;
app.refresh_toolbox();
Ok(app)
}