feat(desktop): embed BoosAPI Desktop client as a subproject

Vendor the rebranded BoosAPI Desktop client (Tauri + Vue) into metapi as
a monorepo subdirectory under desktop/. Source only — node_modules,
dist, Cargo target and the upstream .git history are excluded.

desktop/ keeps its own independent Cargo workspace (desktop/src-tauri
with crates/*); it is not part of the backend boosapi crate, so a
`cargo check` at the metapi root still compiles only the backend. Build
the desktop app from desktop/src-tauri per desktop/README.md.

Note: app icons are still placeholder assets pending the final BoosAPI
logo. The updater signing keys live outside the repo and are not
included.
This commit is contained in:
boos
2026-06-22 11:32:57 +08:00
parent d9c78ecc73
commit e0a5f57793
2305 changed files with 449355 additions and 0 deletions
+91
View File
@@ -0,0 +1,91 @@
[workspace]
members = [".", "crates/core", "crates/providers", "crates/gateway", "crates/migration", "crates/agent"]
resolver = "2"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sea-orm = { version = "1", features = ["sqlx-sqlite", "runtime-tokio-native-tls", "macros"] }
tokio = { version = "1", features = ["full"] }
thiserror = "2"
uuid = { version = "1", features = ["v4"] }
chrono = { version = "0.4", features = ["serde"] }
tracing = "0.1"
tracing-subscriber = "0.3"
anyhow = "1"
sqlite-vec = "0.1.8-alpha.1"
libsqlite3-sys = "0.30"
[package]
name = "boosapi"
version = "0.0.1"
description = "BoosApi - AI Chat Desktop App"
authors = ["you"]
license = "AGPL-3.0-only"
edition = "2021"
default-run = "BoosApi"
[lib]
name = "boosapi_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[[bin]]
name = "BoosApi"
path = "src/main.rs"
[build-dependencies]
tauri-build = { version = "2", features = [] }
[dependencies]
tauri = { version = "2", features = ["tray-icon", "image-png", "devtools"] }
tauri-plugin-opener = "2"
tauri-plugin-dialog = "2"
tauri-plugin-fs = "2"
tauri-plugin-autostart = "2"
tauri-plugin-global-shortcut = "2"
tauri-plugin-process = "2"
tauri-plugin-updater = "2"
serde = { workspace = true }
serde_json = { workspace = true }
boosapi-core = { path = "crates/core" }
boosapi-providers = { path = "crates/providers" }
boosapi-agent = { path = "crates/agent" }
open-agent-sdk = { path = "crates/open-agent-sdk" }
boosapi-gateway = { path = "crates/gateway" }
tokio = { workspace = true }
sea-orm = { workspace = true }
chrono = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
async-trait = "0.1"
futures = "0.3"
base64 = "0.22"
rcgen = "0.13"
rustls = { version = "0.23", default-features = false, features = ["aws-lc-rs"] }
tauri-plugin-mcp-bridge = "0.2"
font-kit = "0.14"
tauri-plugin-clipboard-manager = "2"
reqwest = { version = "0.12", features = ["json"] }
zip = "2"
tempfile = "3"
open = "5"
urlencoding = "2"
dirs = "5"
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp"] }
tauri-plugin-deep-link = "2.4.7"
tauri-plugin-single-instance = { version = "=2.4.0", features = ["deep-link"] }
[target.'cfg(target_vendor = "apple")'.dependencies]
objc2 = { version = "0.6", features = ["relax-sign-encoding"] }
[target.'cfg(target_os = "windows")'.dependencies]
windows-sys = { version = "0.59", features = [
"Win32_UI_WindowsAndMessaging",
"Win32_Foundation",
] }
[profile.release]
strip = true
lto = true
codegen-units = 1
opt-level = "s"