返回 CodeWhale
Cargo.toml
根目录 / Cargo.toml
1 [workspace]
2 members = [
3 "crates/agent",
4 "crates/app-server",
5 "crates/build-support",
6 "crates/cli",
7 "crates/config",
8 "crates/core",
9 "crates/execpolicy",
10 "crates/hooks",
11 "crates/lane",
12 "crates/mcp",
13 "crates/paths",
14 "crates/protocol",
15 "crates/release",
16 "crates/secrets",
17 "crates/state",
18 "crates/telemetry",
19 "crates/tools",
20 "crates/tui",
21 "crates/workflow",
22 "crates/workflow-js",
23 ]
24 default-members = ["crates/cli", "crates/app-server", "crates/tui"]
25 resolver = "2"
26
27 [workspace.package]
28 version = "0.9.4"
29 edition = "2024"
30 # Rust 1.88 stabilized `let_chains` in `if`/`while` conditions, which the
31 # codebase relies on extensively. Cargo enforces this so users on older
32 # toolchains get a clear "package requires rustc 1.88+" error instead of a
33 # confusing E0658 from rustc.
34 rust-version = "1.88"
35 license = "MIT"
36 repository = "https://github.com/Hmbown/CodeWhale"
37
38 [workspace.dependencies]
39 anyhow = "1.0.100"
40 async-trait = "0.1.89"
41 axum = { version = "0.8.5", features = ["json"] }
42 chrono = { version = "0.4.43", features = ["serde"] }
43 clap = { version = "4.5.54", features = ["derive"] }
44 clap_complete = "4.5"
45 dirs = "6.0.0"
46 encoding_rs = "0.8.35"
47 jsonschema = { version = "0.48", default-features = false }
48 reqwest = { version = "0.13.1", default-features = false, features = ["json", "rustls-no-provider", "socks"] }
49 # NOT "parallel": the Workflow VM stays single-threaded and bridges to the
50 # multi-thread engine over channels (see crates/workflow-js).
51 rquickjs = { version = "0.12", features = ["futures"] }
52 rustls = { version = "0.23.36", default-features = false, features = ["ring", "std", "tls12"] }
53 rusqlite = { version = "0.39.0", features = ["bundled"] }
54 serde = { version = "1.0.228", features = ["derive"] }
55 serde_json = "1.0.149"
56 semver = "1.0.28"
57 thiserror = "2.0"
58 tempfile = "3.27"
59 tokio = { version = "1.50.0", features = ["fs", "io-util", "io-std", "macros", "net", "process", "rt", "rt-multi-thread", "signal", "sync", "time"] }
60 toml = "1.0.6"
61 toml_edit = "0.25.12"
62 sha2 = "0.11"
63 tower-http = { version = "0.7", features = ["cors"] }
64 tracing = "0.1"
65 tracing-appender = "0.2"
66 tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
67 uuid = { version = "1.11", features = ["v4"] }
68 mimalloc = { version = "0.1", default-features = false }
69
70 # The everyday `--release` gate (AGENTS.md pre-push build): optimized but
71 # fast to produce. Shipping artifacts use `--profile dist` below — fat LTO on
72 # a 680k-line crate belongs in release CI, not in every contributor's loop
73 # (#5246; community-reported 8–16 minute local release builds, #4991).
74 # Dev/test carry line tables instead of full debug info. Backtraces still name
75 # the file and line of every frame — the thing anyone actually reads — but the
76 # per-variable DWARF that no one inspects without a debugger attached is gone.
77 # The debug binary was 227 MB and target/debug had grown past 260 GB; those
78 # links are IO-bound, so the debuginfo is paid on every incremental build.
79 # Anyone stepping through under lldb can override this locally.
80 [profile.dev]
81 debug = "line-tables-only"
82
83 [profile.release]
84 lto = "thin"
85 strip = true
86 codegen-units = 16
87
88 # Shipping profile: exactly the optimization the released binaries have
89 # always had. Every workflow that uploads a binary to users builds with
90 # `--profile dist` and collects from `target/**/dist/`.
91 # NOTE: no `panic = "abort"` here — the TUI's panic supervision
92 # (catch_unwind/spawn_supervised) needs unwinding so one panicking tool call
93 # or task fails gracefully instead of aborting the whole session.
94 [profile.dist]
95 inherits = "release"
96 lto = true
97 strip = true
98 codegen-units = 1
99
100 # Patch unicode-width so that width() uses CJK tables when the cjk feature
101 # is enabled. Vanilla unicode-width 0.2.2 provides width_cjk() as a separate
102 # method but the original width() always uses non-CJK tables, so Ratatui
103 # (which calls width() internally) measures ambiguous-width characters
104 # (circled digits, enclosed alphanumerics) as 1 column. CJK terminals render
105 # them as 2 columns, causing cell-offset rendering glitches. (#4479)
106 [patch.crates-io]
107 unicode-width = { path = "patches/unicode-width-0.2.2" }
108
108 lines TOML