- df-ai: context 历史中毒三档自愈 sanitize_messages(AC3)+anthropic_compat tool_use_id None 跳过(AC1/AC2)+删 router/stream 死码
- df-core: events 加 select_type+decisions 多选审批契约(F-260615-01)
- df-execute: shell run_command 工具复用(F-260615-05)
- df-nodes: human_node 多选校验+2 端到端测(F-01)+取消跳 set_failed(B-03b-R1/R2/R8)
- df-workflow: executor/dag/state cancel 闭环(B-06/07/03a/b)+provider approve options(R-PD-5)
- df-storage: find_path_conflict 抽公共(R-PD-11)+COLS 常量断言
- df-ideas: 删 IdeaPromoter/PromotionPolicy 死码(R-PD-14)
- src-tauri/commands/ai: secret keyring 迁移(FR-S1/R-PD-4)+GeneratingGuard RAII+disarm(B-09/26)+newConversation 软复位(B-10)+stream 心跳/stop select/空回复判错(B-02/04/05/15)+run_command(F-05)+mask audit(AR-3)
- src-tauri/commands/{project,task,workflow,mod,lib,state}: task detail IPC(F-02)+approve decisions+task list 联动(B-29)
- Cargo.lock+Cargo.toml 依赖同步
41 lines
1.3 KiB
TOML
41 lines
1.3 KiB
TOML
[package]
|
|
name = "devflow"
|
|
version = "0.1.0"
|
|
description = "DevFlow Desktop App"
|
|
authors = [""]
|
|
edition = "2021"
|
|
|
|
[lib]
|
|
name = "devflow_lib"
|
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
|
|
[dependencies]
|
|
tauri = { version = "2", features = [] }
|
|
tauri-plugin-dialog = "2"
|
|
tauri-plugin-opener = "2"
|
|
tauri-plugin-window-state = "2"
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
tokio.workspace = true
|
|
anyhow.workspace = true
|
|
tracing.workspace = true
|
|
chrono.workspace = true
|
|
|
|
# 后端 crate
|
|
df-core = { path = "../crates/df-core" }
|
|
df-storage = { path = "../crates/df-storage" }
|
|
df-workflow = { path = "../crates/df-workflow" }
|
|
df-nodes = { path = "../crates/df-nodes" }
|
|
df-execute = { path = "../crates/df-execute" }
|
|
df-ai = { path = "../crates/df-ai" }
|
|
df-ideas = { path = "../crates/df-ideas" }
|
|
df-project = { path = "../crates/df-project" }
|
|
futures = "0.3"
|
|
# keyring v3 默认不带任何 platform 后端,必须显式启 feature——
|
|
# 否则 Entry 走 noop store:set_password 静默成功不持久化,get_password 永远空(=FR-S1 密钥存了等于没存,根因见 docs/09-问题排查/aichat-apikey-401排查-2026-06-15.md)
|
|
# Win+mac 启用原生后端;linux(secret-service)按需补
|
|
keyring = { version = "3", features = ["windows-native", "apple-native"] }
|