- 新增 auth_token 配置项:非 loopback 绑定强制认证,loopback 可选加固 - 新增 auth.rs:loopback 判定(IpAddr 解析)、常量时间 token 比较、RFC 6750 Bearer 解析 - 新增 Bearer token 中间件(/api/*)与 WebSocket ?token= 校验 - 新增 CORS layer:loopback 镜像 Origin 防 DNS rebinding,非 loopback permissive - 修复 .gitignore 遗漏 tests/test.env,补充通用 *.env 规则 - 修复前端 experts/skills/subagents.ts 直接 fetch 不带 token(13 处),统一走 authedFetch - config.json host 从 0.0.0.0 改回 127.0.0.1 - mask_config/save_config 处理 auth_token 掩码与保留 - ConnectionTab/GatewayTab 增加认证 token 配置入口
82 lines
2.6 KiB
TOML
82 lines
2.6 KiB
TOML
[package]
|
||
name = "picobot"
|
||
version = "0.3.1"
|
||
edition = "2024"
|
||
|
||
[lints.rust]
|
||
# 编译期硬错误:避免明显的内存安全/正确性隐患
|
||
unsafe_op_in_unsafe_fn = "warn"
|
||
rust_2018_idioms = "warn"
|
||
|
||
[lints.clippy]
|
||
# 渐进式策略:
|
||
# - 不直接声明 lint group(correctness/suspicious/complexity/perf),
|
||
# 因为 lint group 在 [lints] 中需用 priority 语法,简单 = "warn" 会报错;
|
||
# 且 clippy 默认已把 correctness 设为 deny,无需重复声明。
|
||
# - 仅显式 warn 少量高价值且存量不大的具体规则,避免一上线淹没在噪音中。
|
||
# 后续随着存量问题清理,可逐步把 unwrap_used/expect_used 升级为 warn。
|
||
redundant_clone = "warn"
|
||
dbg_macro = "warn"
|
||
print_stderr = "warn"
|
||
print_stdout = "warn"
|
||
|
||
[dependencies]
|
||
reqwest = { version = "0.13.2", default-features = false, features = ["json", "rustls", "multipart", "stream"] }
|
||
dotenv = "0.15"
|
||
serde = { version = "1.0", features = ["derive"] }
|
||
regex = "1.0"
|
||
serde_json = "1.0"
|
||
serde_yaml = "0.9"
|
||
async-trait = "0.1"
|
||
thiserror = "2.0.18"
|
||
tokio = { version = "1.0", features = ["full"] }
|
||
tokio-util = { version = "0.7", features = ["rt"] }
|
||
uuid = { version = "1.0", features = ["v4"] }
|
||
axum = { version = "0.8", features = ["ws"] }
|
||
tokio-tungstenite = { version = "0.29.0", features = ["rustls-tls-webpki-roots", "rustls"] }
|
||
futures-util = "0.3"
|
||
clap = { version = "4", features = ["derive"] }
|
||
dirs = "6.0.0"
|
||
prost = "0.14"
|
||
tracing = "0.1"
|
||
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
|
||
tracing-appender = "0.2"
|
||
anyhow = "1.0"
|
||
chrono = { version = "0.4", features = ["serde"] }
|
||
chrono-tz = "0.10"
|
||
cron = { version = "0.13", features = ["serde"] }
|
||
iana-time-zone = "0.1"
|
||
mime_guess = "2.0"
|
||
base64 = "0.22"
|
||
image = { version = "0.25", default-features = false, features = ["jpeg", "png", "gif", "webp"] }
|
||
tempfile = "3"
|
||
meval = "0.2"
|
||
rusqlite = { version = "0.39", features = ["bundled"] }
|
||
r2d2 = "0.8"
|
||
r2d2_sqlite = "0.34"
|
||
rustls = { version = "0.23", features = ["ring"] }
|
||
subtle = "2.6"
|
||
wechatbot = { path = "vendor/wechatbot" }
|
||
encoding_rs = "0.8"
|
||
libc = "0.2"
|
||
gray_matter = { version = "0.2", default-features = false, features = ["yaml"] }
|
||
# MCP (Model Context Protocol) support
|
||
rmcp = { version = "1.7", features = [
|
||
"client",
|
||
"transport-child-process",
|
||
"transport-streamable-http-client-reqwest",
|
||
"reqwest",
|
||
] }
|
||
schemars = "1.0"
|
||
http = "1"
|
||
tower-http = { version = "0.6", features = ["fs", "cors"] }
|
||
rust-embed = "8"
|
||
|
||
[target.'cfg(windows)'.dependencies]
|
||
windows-sys = { version = "0.59", features = [
|
||
"Win32_System_Threading",
|
||
"Win32_System_Diagnostics_Debug",
|
||
"Win32_Foundation",
|
||
"Win32_System_Kernel",
|
||
] }
|