105 lines
4.6 KiB
TOML
105 lines
4.6 KiB
TOML
[package]
|
|
name = "whispassist"
|
|
version = "0.0.0"
|
|
description = "Privacy-first, fully local Windows meeting assistant"
|
|
authors = ["WhispAssist contributors"]
|
|
license = "MIT OR Apache-2.0"
|
|
edition = "2021"
|
|
rust-version = "1.77"
|
|
|
|
# NOTE: versions are indicative. Pin + verify at implementation time
|
|
# (see docs/07-research-findings.md "Open items").
|
|
|
|
[lib]
|
|
name = "whispassist_lib"
|
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
|
|
[dependencies]
|
|
tauri = { version = "2", features = ["tray-icon", "image-png"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "1"
|
|
async-trait = "0.1"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time", "fs"] }
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
uuid = { version = "1", features = ["v4"] }
|
|
|
|
# storage
|
|
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite", "migrate"] }
|
|
|
|
# llm + sync (HTTP/WebDAV)
|
|
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] }
|
|
futures-util = "0.3"
|
|
sha2 = "0.10" # skip-if-unchanged hashing (sync)
|
|
|
|
# At-rest encryption vault (Phase 8, T8.8, FR-SEC-3). Pure-Rust RustCrypto — no
|
|
# C build. Argon2id derives the vault key from the password; XChaCha20-Poly1305
|
|
# (24-byte nonce → safe random nonces) is the AEAD for artifacts + key wrapping.
|
|
argon2 = "0.5"
|
|
chacha20poly1305 = "0.10"
|
|
getrandom = "0.2"
|
|
keyring = { version = "3", optional = true } # OS credential store (sync + AI creds)
|
|
rmcp = { version = "0.16", optional = true, features = ["server"] } # MCP server (ADR-0011)
|
|
|
|
# audio / transcription / diarization / calendar are integrated per-phase and are
|
|
# feature-gated so the CPU-only build always compiles (NFR-MNT-4).
|
|
hound = { version = "3", optional = true } # WAV I/O (Phase 1)
|
|
whisper-rs = { version = "0.16", optional = true } # whisper.cpp bindings (Phase 1)
|
|
|
|
# NPU transcription (Phase 3, T3.4): ONNX Runtime + OpenVINO EP. `load-dynamic`
|
|
# dlopens the on-demand-downloaded runtime, so cargo compiles no C++/OpenVINO —
|
|
# keeps the CPU-only build untouched (NFR-MNT-4). `rustfft` powers the log-mel
|
|
# front-end (detok is hand-rolled off serde_json, no `tokenizers`/C dep).
|
|
ort = { version = "=2.0.0-rc.10", optional = true, default-features = false, features = ["load-dynamic", "openvino"] }
|
|
rustfft = { version = "6", optional = true }
|
|
sherpa-rs = { version = "0.6", optional = true, default-features = false, features = ["download-binaries"] } # sherpa-onnx bindings (Phase 4, ADR-0005)
|
|
tauri-plugin-dialog = "2" # native Save/choose-folder (Phase 2 export)
|
|
|
|
# notes export (Phase 8, FR-NOTE-4) — pure-Rust, no external binary/cloud
|
|
# conversion service, consistent with the fully-local invariant.
|
|
pulldown-cmark = "0.12"
|
|
printpdf = "0.7"
|
|
docx-rs = "0.4"
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows = { version = "0.58", features = [
|
|
"Win32_Media_Audio", # WASAPI (Phase 1)
|
|
"Win32_Graphics_Dxgi", # GPU enumeration (Phase 3)
|
|
"Win32_Devices_DeviceAndDriverInstallation", # SetupAPI: NPU detection (Phase 3, T3.4)
|
|
"Win32_System_Com",
|
|
"Win32_UI_Shell", # SetCurrentProcessExplicitAppUserModelID (Phase 8, T8.6)
|
|
"UI_Notifications", # scheduled toast reminders (Phase 8, T8.6, FR-CAL-5) — the
|
|
"Data_Xml_Dom", # OS delivers these itself at the due time, no polling timer
|
|
"Foundation",
|
|
"Foundation_Collections", # IVectorView iteration (GetScheduledToastNotifications)
|
|
] }
|
|
wasapi = { version = "0.15", optional = true } # Phase 1
|
|
|
|
[features]
|
|
default = ["audio", "cpu-transcription", "diarization", "pst", "sync"]
|
|
# Phase 1
|
|
audio = ["dep:wasapi", "dep:hound"]
|
|
cpu-transcription = ["dep:whisper-rs"] # whisper-rs CPU build
|
|
# Phase 3 acceleration (built on capable CI runners; never required)
|
|
cuda = ["whisper-rs?/cuda"] # whisper.cpp CUDA
|
|
vulkan = ["whisper-rs?/vulkan"] # whisper.cpp Vulkan
|
|
npu = ["dep:ort", "dep:rustfft"] # ort + OpenVINO EP NPU path (T3.4)
|
|
# Phase 4 / 6 (added when integrated)
|
|
diarization = ["dep:sherpa-rs"] # sherpa-onnx
|
|
pst = [] # shells out to readpst (libpst) — no crate dep, see ADR-0008 update
|
|
# Phase 9
|
|
sync = ["dep:keyring"] # remote upload (WebDAV + OAuth providers)
|
|
# Phase 10
|
|
mcp = ["dep:rmcp", "dep:keyring"] # WhispAssist as an MCP server + hosted-AI creds
|
|
|
|
[profile.release]
|
|
opt-level = "z" # optimize for size — keep the binary small (NFR-RES-1)
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|
|
panic = "abort"
|