返回 CodeWhale
Cargo.toml
根目录 / crates / tui / Cargo.toml
1 [package]
2 name = "codewhale-tui"
3 version.workspace = true
4 edition.workspace = true
5 rust-version.workspace = true
6 license.workspace = true
7 repository.workspace = true
8 description = "Terminal UI for open-source and open-weight coding models"
9 autobins = false
10
11 [lints]
12 workspace = true
13
14 [features]
15 default = []
16 long-running-tests = []
17 # Accepted compatibility feature names. Allocators belong exclusively to the
18 # canonical codewhale-cli executable; these library aliases have no effect.
19 mimalloc-allocator = []
20 rusty-alloc = []
21
22 [lib]
23 name = "codewhale_tui"
24 path = "src/lib.rs"
25
26 [dependencies]
27 # Independent terminal kit, pinned and vendored for reproducible binary builds.
28 codewhale-ratatui = { path = "../../vendor/codewhale-ratatui", version = "0.1.0" }
29 codewhale-sanitize = { path = "../sanitize", version = "0.10.1" }
30 codewhale-memory = { path = "../memory", version = "0.10.1" }
31 ahash = "0.8"
32 anyhow.workspace = true
33 codewhale-app-server = { path = "../app-server", version = "0.10.1" }
34 codewhale-config = { path = "../config", version = "0.10.1" }
35 codewhale-cloud-facts = { path = "../cloud-facts", version = "0.10.1" }
36 codewhale-command-contract = { path = "../command-contract", version = "0.10.1" }
37 codewhale-core = { path = "../core", version = "0.10.1" }
38 codewhale-execpolicy = { path = "../execpolicy", version = "0.10.1" }
39 codewhale-hooks = { path = "../hooks", version = "0.10.1" }
40 codewhale-lane = { path = "../lane", version = "0.10.1" }
41 codewhale-mcp = { path = "../mcp", version = "0.10.1" }
42 codewhale-models = { path = "../models", version = "0.10.1" }
43 codewhale-palette = { path = "../palette", version = "0.10.1" }
44 codewhale-paths = { path = "../paths", version = "0.10.1" }
45 codewhale-protocol = { path = "../protocol", version = "0.10.1" }
46 codewhale-release = { path = "../release", version = "0.10.1" }
47 codewhale-runtime = { path = "../runtime", version = "0.10.1" }
48 codewhale-secrets = { path = "../secrets", version = "0.10.1" }
49 codewhale-telemetry = { path = "../telemetry", version = "0.10.1" }
50 codewhale-tools = { path = "../tools", version = "0.10.1" }
51 codewhale-workflow = { path = "../workflow", version = "0.10.1" }
52 codewhale-workflow-js = { path = "../workflow-js", version = "0.10.1" }
53 async-stream = "0.3.6"
54 async-trait.workspace = true
55 base64 = "0.23.1"
56 axum.workspace = true
57 clap.workspace = true
58 colored = "3.0.0"
59 crossterm = "0.29"
60 dotenvy = "0.15.7"
61 encoding_rs.workspace = true
62 fd-lock = "4.0.4"
63 dirs.workspace = true
64 futures-util = "0.3.31"
65 hyper-util = { version = "=0.1.20", features = ["client-proxy"] }
66 oauth2 = { version = "5", default-features = false }
67 jsonwebtoken = { version = "10", default-features = false, features = ["aws_lc_rs"] }
68 # No ratatui-core pin: ColorCompatBackend answers `get_cursor_position()`
69 # from tracked state (ratatui#2640's recommended workaround), so the CPR query
70 # inside `Terminal::clear()` no longer races the input loop. See
71 # `tui/color_compat.rs`.
72 ratatui = { version = "=0.30.2", features = ["unstable-rendered-line-info"] }
73 regex = "1.11"
74 reqwest = { workspace = true, features = ["blocking", "stream", "form", "http2"] }
75 rusqlite.workspace = true
76 rquickjs.workspace = true
77 rmcp = { version = "3.2.0", default-features = false, features = ["auth", "client"] }
78 rustls.workspace = true
79 qrcode = { version = "0.14", default-features = false }
80 similar = { version = "3", features = ["unicode"] }
81 ansi-to-tui = { version = "8.0.1", default-features = false }
82 # The renderer uses embedded syntax/theme dumps, not external YAML/plist loaders.
83 # `regex-onig` (syntect's reference engine) instead of `regex-fancy`: compiled
84 # fancy-regex programs for the default syntaxes cost tens of MB of process-lifetime
85 # heap once a few languages have been highlighted; Oniguruma holds the same
86 # grammars in single-digit MB. The TUI already builds C (bundled SQLite, QuickJS).
87 syntect = { version = "5.2", default-features = false, features = ["default-syntaxes", "default-themes", "regex-onig"] }
88 serde.workspace = true
89 serde_json = { workspace = true, features = ["preserve_order", "raw_value"] }
90 yaml-rust2 = { workspace = true }
91 schemars = { version = "1.2.1", features = ["derive", "preserve_order"] }
92 shellexpand = "3"
93 # Grammar-exact Rust parsing for the post-edit syntax gate (#6204). `syn` is
94 # already in the lockfile as a proc-macro build dependency; this reuses that
95 # same version rather than vendoring a second parser (#6151). `span-locations`
96 # is what turns a parse failure into the `line:column` the model needs — the
97 # feature is inert without it.
98 syn = { version = "3.0.3", default-features = false, features = ["full", "parsing"] }
99 proc-macro2 = { version = "1.0.107", features = ["span-locations"] }
100 toml.workspace = true
101 toml_edit.workspace = true
102 tokio.workspace = true
103 tokio-util = { version = "0.7.16", features = ["io"] }
104 unicode-width = "0.2"
105 unicode-segmentation = "1.12"
106 unicode-normalization = "0.1"
107 urlencoding = "2.1"
108 # Structcopy uses the URL parser directly so its portable closure needs no HTTP client.
109 url = "2.5"
110 uuid.workspace = true
111 chrono.workspace = true
112 tempfile.workspace = true
113 thiserror.workspace = true
114 tracing.workspace = true
115 tracing-subscriber.workspace = true
116 tower-http.workspace = true
117 wait-timeout = "0.2"
118 webbrowser = "1.0"
119 shlex = "2.0.1"
120 globset = "0.4"
121 ignore = "0.4"
122 image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp", "gif"] }
123 # Already a regular dependency of codewhale-workflow-js (so already linked into
124 # this binary); the extension host validates tool input against the schema the
125 # plugin registered with it.
126 jsonschema.workspace = true
127 htmd = "0.5.4"
128 # lru >= 0.18.2 fixes RUSTSEC-2026-0253 (panic-unsafe `pop()`).
129 lru = "0.18"
130 parking_lot = "0.12"
131 tar = "0.4"
132 # Vendored static liblzma keeps the full-fidelity session archive export
133 # (`session_export`) hermetic on every release target; no system xz headers.
134 # liblzma is the maintained, API-compatible continuation of xz2.
135 liblzma = { version = "0.4", features = ["static"] }
136 flate2 = "1.1"
137 sha2.workspace = true
138 # Reuse the locked cryptographic implementation for exact-call user decisions.
139 ring = "0.17"
140 semver.workspace = true
141 codewhale-localization = { path = "../localization", version = "0.10.1" }
142 shell-words = "1.1.1"
143
144 [build-dependencies]
145 codewhale-build-support = { path = "../build-support", version = "0.10.1" }
146
147 [dev-dependencies]
148 codewhale-runtime = { path = "../runtime", version = "0.10.1", features = [
149 "test-support",
150 "test-thread-scoped-state",
151 ] }
152 codewhale-models = { path = "../models", version = "0.10.1", features = [
153 "test-support",
154 ] }
155 cucumber = "0.23.0"
156 wiremock = "0.6"
157 tiny_http = "0.12"
158 pretty_assertions = "1.4"
159 rio-vt = "0.5.1"
160 tokio-tungstenite = "0.30"
161
162 [target.'cfg(unix)'.dependencies]
163 libc = "0.2"
164
165 [target.'cfg(windows)'.dependencies]
166 windows-sys = { version = "0.61.2", features = ["Wdk_Storage_FileSystem", "Win32_System_IO", "Win32_Foundation", "Win32_Security", "Win32_Security_Authorization", "Win32_Security_Isolation", "Win32_Storage_FileSystem", "Win32_System_Pipes", "Win32_System_Threading", "Win32_System_SystemServices", "Win32_System_WindowsProgramming"] }
167
168 [target.'cfg(all(target_os = "windows", target_arch = "x86_64"))'.dependencies]
169 # JWT verification uses upstream assembly objects when NASM is unavailable.
170 aws-lc-rs = { version = "1.18.1", default-features = false, features = ["prebuilt-nasm"] }
171
172 [target.'cfg(any(target_os = "macos", target_os = "windows", all(target_os = "linux", not(target_env = "ohos"))))'.dependencies]
173 arboard = { version = "3.4", features = ["wayland-data-control"] }
174
175 [target.'cfg(not(target_env = "ohos"))'.dependencies]
176 portable-pty = "0.9"
177
178 [target.'cfg(target_os = "macos")'.dependencies]
179 objc2 = "0.6.3"
180 objc2-foundation = { version = "0.3.2", default-features = false, features = ["std", "NSArray", "NSDictionary", "NSError", "NSObject", "NSString", "NSURL"] }
181
182 [target.'cfg(target_os = "windows")'.dependencies]
183 windows = { version = "0.62", features = ["Win32_Foundation", "Win32_Media_Audio", "Win32_Security", "Win32_Security_Authorization", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_Diagnostics_Debug", "Win32_System_Diagnostics_ToolHelp", "Win32_System_Environment", "Win32_System_JobObjects", "Win32_System_Registry", "Win32_System_Threading", "Win32_UI_WindowsAndMessaging"] }
184
184 lines TOML