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