mirror of
https://github.com/aiclientproxy/proxycast.git
synced 2026-09-24 23:10:56 +08:00
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
355 lines
8.5 KiB
TOML
355 lines
8.5 KiB
TOML
[workspace]
|
||
members = ["crates/*"]
|
||
resolver = "2"
|
||
|
||
[workspace.package]
|
||
version = "0.84.0"
|
||
edition = "2021"
|
||
authors = ["coso"]
|
||
repository = "https://github.com/aiclientproxy/proxycast"
|
||
homepage = "https://github.com/aiclientproxy/proxycast"
|
||
|
||
[workspace.dependencies]
|
||
# 项目内 crate 依赖
|
||
proxycast-core = { path = "crates/core" }
|
||
proxycast-config = { path = "crates/config" }
|
||
proxycast-infra = { path = "crates/infra" }
|
||
proxycast-providers = { path = "crates/providers" }
|
||
proxycast-services = { path = "crates/services" }
|
||
proxycast-terminal = { path = "crates/terminal" }
|
||
proxycast-credential = { path = "crates/credential" }
|
||
proxycast-websocket = { path = "crates/websocket" }
|
||
proxycast-processor = { path = "crates/processor" }
|
||
proxycast-server-utils = { path = "crates/server-utils" }
|
||
proxycast-server = { path = "crates/server" }
|
||
proxycast-skills = { path = "crates/skills" }
|
||
proxycast-mcp = { path = "crates/mcp" }
|
||
proxycast-agent = { path = "crates/agent" }
|
||
proxycast-scheduler = { path = "crates/scheduler" }
|
||
proxycast-memory = { path = "crates/memory" }
|
||
proxycast-embedding = { path = "crates/embedding" }
|
||
proxycast-gateway = { path = "crates/gateway" }
|
||
voice-core = { path = "crates/voice-core" }
|
||
|
||
# 序列化
|
||
serde = { version = "1", features = ["derive"] }
|
||
serde_json = "1"
|
||
serde_yaml = "0.9"
|
||
serde_urlencoded = "0.7"
|
||
|
||
# 异步运行时
|
||
tokio = { version = "1", features = ["full"] }
|
||
tokio-util = "0.7"
|
||
futures = "0.3"
|
||
async-stream = "0.3"
|
||
async-trait = "0.1"
|
||
|
||
# 错误处理
|
||
anyhow = "1"
|
||
thiserror = "1"
|
||
|
||
# 日志
|
||
tracing = "0.1"
|
||
tracing-subscriber = "0.3"
|
||
sentry = "0.43"
|
||
|
||
# HTTP 服务器
|
||
axum = { version = "0.7", features = ["ws"] }
|
||
axum-server = { version = "0.7", features = ["tls-rustls"] }
|
||
tower = "0.5"
|
||
tower-http = { version = "0.6", features = ["limit", "cors", "timeout"] }
|
||
|
||
# HTTP 客户端
|
||
reqwest = { version = "0.12", features = ["json", "stream", "gzip", "brotli", "deflate"] }
|
||
|
||
# 数据库
|
||
rusqlite = { version = "0.31", features = ["bundled", "backup"] }
|
||
|
||
# 时间和 UUID
|
||
chrono = { version = "0.4", features = ["serde"] }
|
||
chrono-tz = "0.10"
|
||
uuid = { version = "1", features = ["v4"] }
|
||
|
||
# Cron 调度
|
||
cron = "0.15"
|
||
|
||
# 工具库
|
||
dirs = "5"
|
||
regex = "1"
|
||
md5 = "0.7"
|
||
urlencoding = "2"
|
||
subtle = "2.5"
|
||
flate2 = "1"
|
||
tar = "0.4"
|
||
fs2 = "0.4"
|
||
indexmap = { version = "2", features = ["serde"] }
|
||
zip = "0.6"
|
||
dashmap = "5"
|
||
notify = { version = "6", default-features = false, features = ["macos_fsevent"] }
|
||
parking_lot = "0.12"
|
||
tiktoken-rs = "0.6"
|
||
base64 = "0.22"
|
||
bytes = "1"
|
||
rand = "0.8"
|
||
sha2 = "0.10"
|
||
open = "5"
|
||
url = "2"
|
||
once_cell = "1"
|
||
arboard = "3"
|
||
glob = "0.3.3"
|
||
hex = "0.4.3"
|
||
scopeguard = "1"
|
||
sysinfo = "0.32"
|
||
whoami = "1"
|
||
|
||
# 音频
|
||
cpal = "0.15"
|
||
|
||
# TLS
|
||
rustls-pemfile = "2"
|
||
|
||
# 终端
|
||
portable-pty = "0.8"
|
||
|
||
# SSH
|
||
ssh2 = "0.9"
|
||
openssl = { version = "0.10", features = ["vendored"] }
|
||
|
||
# 系统交互
|
||
mouse_position = "0.1.4"
|
||
window-vibrancy = "0.7.1"
|
||
if-addrs = "0.13"
|
||
enigo = "0.3"
|
||
|
||
# Aster Agent Framework
|
||
# 开发时使用本地 aster-rust,CI/CD 使用远程 GitHub 仓库
|
||
# 本地开发: path = "../../../astercloud/aster-rust/crates/aster" (相对 src-tauri/)
|
||
# CI/CD: git = "https://github.com/astercloud/aster-rust", tag = "v0.17.0"
|
||
# aster = { package = "aster-core", path = "../../../astercloud/aster-rust/crates/aster" }
|
||
aster = { package = "aster-core", git = "https://github.com/astercloud/aster-rust", tag = "v0.17.0" }
|
||
# 本地开发: aster-models = { path = "../../../astercloud/aster-rust/crates/aster-models" }
|
||
aster-models = { git = "https://github.com/astercloud/aster-rust", tag = "v0.17.0" }
|
||
|
||
# MCP (Model Context Protocol)
|
||
rmcp = { version = "0.12.0", features = ["client", "transport-io", "transport-child-process"] }
|
||
|
||
|
||
|
||
# Tauri
|
||
tauri = { version = "2.10.3", features = ["tray-icon", "image-png", "unstable", "macos-private-api"] }
|
||
tauri-build = { version = "2", features = [] }
|
||
tauri-plugin-shell = "2.3"
|
||
tauri-plugin-autostart = "2.3"
|
||
tauri-plugin-dialog = "2.5.0"
|
||
tauri-plugin-single-instance = "2.3"
|
||
tauri-plugin-global-shortcut = "2.3"
|
||
|
||
# 测试
|
||
proptest = "1"
|
||
tempfile = "3"
|
||
|
||
# Windows 平台依赖
|
||
[workspace.dependencies.windows]
|
||
version = "0.56"
|
||
features = [
|
||
"Win32_Foundation",
|
||
"Win32_System_Registry",
|
||
"Win32_System_Threading",
|
||
"Win32_System_ProcessStatus",
|
||
"Win32_UI_Shell",
|
||
"Win32_UI_WindowsAndMessaging",
|
||
"Win32_System_LibraryLoader",
|
||
"Win32_System_Memory",
|
||
"Win32_System_Diagnostics_ToolHelp",
|
||
"Win32_Security",
|
||
]
|
||
|
||
[workspace.dependencies.winapi]
|
||
version = "0.3"
|
||
features = [
|
||
"winuser",
|
||
"winreg",
|
||
"processthreadsapi",
|
||
"handleapi",
|
||
"shellapi",
|
||
"psapi",
|
||
"tlhelp32",
|
||
]
|
||
|
||
[workspace.dependencies.winreg]
|
||
version = "0.52"
|
||
|
||
# macOS 平台依赖
|
||
[workspace.dependencies.cocoa]
|
||
version = "0.26"
|
||
|
||
[workspace.dependencies.objc]
|
||
version = "0.2"
|
||
|
||
[workspace.dependencies.tauri-plugin-deep-link]
|
||
version = "2.4"
|
||
|
||
[package]
|
||
name = "proxycast"
|
||
version = "0.84.0"
|
||
description = "AI API Proxy Desktop App"
|
||
authors = ["you"]
|
||
edition = "2021"
|
||
repository = "https://github.com/aiclientproxy/proxycast"
|
||
homepage = "https://github.com/aiclientproxy/proxycast"
|
||
|
||
[lib]
|
||
name = "proxycast_lib"
|
||
crate-type = ["lib", "cdylib", "staticlib"]
|
||
|
||
[build-dependencies]
|
||
tauri-build.workspace = true
|
||
|
||
[dependencies]
|
||
# 项目内 crate
|
||
proxycast-core.workspace = true
|
||
proxycast-config.workspace = true
|
||
proxycast-infra.workspace = true
|
||
proxycast-providers.workspace = true
|
||
proxycast-services.workspace = true
|
||
proxycast-terminal.workspace = true
|
||
proxycast-credential.workspace = true
|
||
proxycast-websocket.workspace = true
|
||
proxycast-processor.workspace = true
|
||
proxycast-server-utils.workspace = true
|
||
proxycast-server.workspace = true
|
||
proxycast-skills.workspace = true
|
||
proxycast-mcp.workspace = true
|
||
proxycast-gateway.workspace = true
|
||
proxycast-agent.workspace = true
|
||
proxycast-scheduler.workspace = true
|
||
proxycast-memory.workspace = true
|
||
proxycast-embedding.workspace = true
|
||
voice-core.workspace = true
|
||
|
||
# Tauri
|
||
tauri.workspace = true
|
||
tauri-plugin-shell.workspace = true
|
||
tauri-plugin-autostart.workspace = true
|
||
tauri-plugin-dialog.workspace = true
|
||
tauri-plugin-single-instance.workspace = true
|
||
tauri-plugin-global-shortcut.workspace = true
|
||
|
||
# 序列化
|
||
serde.workspace = true
|
||
serde_json.workspace = true
|
||
serde_yaml.workspace = true
|
||
serde_urlencoded.workspace = true
|
||
|
||
# 异步运行时
|
||
tokio.workspace = true
|
||
tokio-util.workspace = true
|
||
futures.workspace = true
|
||
async-stream.workspace = true
|
||
async-trait.workspace = true
|
||
|
||
# 错误处理
|
||
anyhow.workspace = true
|
||
thiserror.workspace = true
|
||
|
||
# 日志
|
||
tracing.workspace = true
|
||
tracing-subscriber.workspace = true
|
||
sentry.workspace = true
|
||
|
||
# HTTP 服务器
|
||
axum.workspace = true
|
||
axum-server.workspace = true
|
||
tower.workspace = true
|
||
tower-http.workspace = true
|
||
rustls-pemfile.workspace = true
|
||
|
||
# HTTP 客户端
|
||
reqwest.workspace = true
|
||
|
||
# 数据库
|
||
rusqlite.workspace = true
|
||
|
||
# 时间和 UUID
|
||
chrono.workspace = true
|
||
chrono-tz.workspace = true
|
||
uuid.workspace = true
|
||
|
||
# Cron 调度
|
||
cron.workspace = true
|
||
|
||
# 工具库
|
||
dirs.workspace = true
|
||
regex.workspace = true
|
||
md5.workspace = true
|
||
urlencoding.workspace = true
|
||
subtle.workspace = true
|
||
flate2.workspace = true
|
||
tar.workspace = true
|
||
fs2.workspace = true
|
||
indexmap.workspace = true
|
||
zip.workspace = true
|
||
dashmap.workspace = true
|
||
notify.workspace = true
|
||
parking_lot.workspace = true
|
||
tiktoken-rs.workspace = true
|
||
base64.workspace = true
|
||
bytes.workspace = true
|
||
rand.workspace = true
|
||
sha2.workspace = true
|
||
open.workspace = true
|
||
url.workspace = true
|
||
once_cell.workspace = true
|
||
arboard.workspace = true
|
||
glob.workspace = true
|
||
hex.workspace = true
|
||
scopeguard.workspace = true
|
||
sysinfo.workspace = true
|
||
whoami.workspace = true
|
||
tempfile.workspace = true
|
||
|
||
# 终端
|
||
portable-pty.workspace = true
|
||
|
||
# SSH
|
||
ssh2.workspace = true
|
||
openssl.workspace = true
|
||
|
||
# 系统交互
|
||
mouse_position.workspace = true
|
||
window-vibrancy.workspace = true
|
||
if-addrs.workspace = true
|
||
enigo.workspace = true
|
||
|
||
# 音频
|
||
cpal.workspace = true
|
||
|
||
# Aster Agent Framework
|
||
aster.workspace = true
|
||
|
||
# MCP (Model Context Protocol)
|
||
rmcp.workspace = true
|
||
|
||
# Windows specific dependencies for browser interceptor and machine ID management
|
||
[target.'cfg(windows)'.dependencies]
|
||
windows.workspace = true
|
||
winapi.workspace = true
|
||
winreg.workspace = true
|
||
|
||
# macOS specific dependencies for browser interceptor
|
||
[target.'cfg(target_os = "macos")'.dependencies]
|
||
cocoa.workspace = true
|
||
objc.workspace = true
|
||
tauri-plugin-deep-link.workspace = true
|
||
|
||
[dev-dependencies]
|
||
proptest.workspace = true
|
||
tempfile.workspace = true
|
||
|
||
[features]
|
||
default = ["custom-protocol"]
|
||
custom-protocol = ["tauri/custom-protocol"]
|
||
# 本地 Whisper 语音识别(编译很慢,CI 默认不启用)
|
||
local-whisper = ["voice-core/local-whisper"]
|
||
notification = [] # 预留特性:系统通知功能
|