| 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 | default-run = "codewhale-tui" |
| 10 | |
| 11 | [features] |
| 12 | default = ["tui", "json", "toml"] |
| 13 | tui = ["dep:schemaui", "schemaui/tui", "json", "toml"] |
| 14 | web = ["dep:schemaui", "schemaui/web", "json", "toml"] |
| 15 | json = ["schemaui/json"] |
| 16 | toml = ["schemaui/toml"] |
| 17 | long-running-tests = [] |
| 18 | |
| 19 | [[bin]] |
| 20 | name = "codewhale-tui" |
| 21 | path = "src/main.rs" |
| 22 | |
| 23 | [dependencies] |
| 24 | ahash = "0.8" |
| 25 | anyhow.workspace = true |
| 26 | codewhale-config = { path = "../config", version = "0.9.4" } |
| 27 | codewhale-execpolicy = { path = "../execpolicy", version = "0.9.4" } |
| 28 | codewhale-lane = { path = "../lane", version = "0.9.4" } |
| 29 | codewhale-paths = { path = "../paths", version = "0.9.4" } |
| 30 | codewhale-protocol = { path = "../protocol", version = "0.9.4" } |
| 31 | codewhale-release = { path = "../release", version = "0.9.4" } |
| 32 | codewhale-secrets = { path = "../secrets", version = "0.9.4" } |
| 33 | codewhale-telemetry = { path = "../telemetry", version = "0.9.4" } |
| 34 | codewhale-tools = { path = "../tools", version = "0.9.4" } |
| 35 | codewhale-workflow = { path = "../workflow", version = "0.9.4" } |
| 36 | codewhale-workflow-js = { path = "../workflow-js", version = "0.9.4" } |
| 37 | schemaui = { version = "0.12.0", default-features = false, optional = true } |
| 38 | async-stream = "0.3.6" |
| 39 | async-trait.workspace = true |
| 40 | base64 = "0.23.0" |
| 41 | axum.workspace = true |
| 42 | clap.workspace = true |
| 43 | clap_complete.workspace = true |
| 44 | colored = "3.0.0" |
| 45 | crossterm = "0.29" |
| 46 | dotenvy = "0.15.7" |
| 47 | encoding_rs.workspace = true |
| 48 | fd-lock = "4.0.4" |
| 49 | dirs.workspace = true |
| 50 | futures-util = "0.3.31" |
| 51 | oauth2 = "5" |
| 52 | # Pin ratatui 0.30.0 + transitive ratatui-core 0.1.0: core 0.1.1+ queries |
| 53 | # cursor position in Terminal::clear and races our input loop at startup |
| 54 | # (ratatui/ratatui#2483/#2640). Unpin when upstream fixes that. |
| 55 | ratatui = { version = "=0.30.0", features = ["unstable-rendered-line-info"] } |
| 56 | ratatui-core = "=0.1.0" |
| 57 | regex = "1.11" |
| 58 | reqwest = { workspace = true, features = ["blocking", "stream", "form", "http2", "gzip"] } |
| 59 | rusqlite.workspace = true |
| 60 | rmcp = { version = "2.2.0", default-features = false, features = ["auth", "client"] } |
| 61 | rustls.workspace = true |
| 62 | qrcode = { version = "0.14", default-features = false } |
| 63 | similar = "3" |
| 64 | syntect = { version = "5.2", default-features = false, features = ["default-fancy"] } |
| 65 | serde.workspace = true |
| 66 | serde_json = { workspace = true, features = ["preserve_order"] } |
| 67 | schemars = { version = "1.2.1", features = ["derive", "preserve_order"] } |
| 68 | shellexpand = "3" |
| 69 | toml.workspace = true |
| 70 | toml_edit.workspace = true |
| 71 | tokio.workspace = true |
| 72 | tokio-util = { version = "0.7.16", features = ["io"] } |
| 73 | unicode-width = "0.2" |
| 74 | unicode-segmentation = "1.12" |
| 75 | unicode-normalization = "0.1" |
| 76 | urlencoding = "2.1" |
| 77 | uuid.workspace = true |
| 78 | chrono.workspace = true |
| 79 | tempfile.workspace = true |
| 80 | thiserror.workspace = true |
| 81 | tracing.workspace = true |
| 82 | tracing-subscriber.workspace = true |
| 83 | tower-http.workspace = true |
| 84 | wait-timeout = "0.2" |
| 85 | webbrowser = "1.0" |
| 86 | shlex = "1.3.0" |
| 87 | tiny_http = "0.12" |
| 88 | globset = "0.4" |
| 89 | ignore = "0.4" |
| 90 | image = { version = "0.25", default-features = false, features = ["png"] } |
| 91 | htmd = "0.5.4" |
| 92 | lru = "0.18" |
| 93 | parking_lot = "0.12" |
| 94 | readability = { version = "0.3.0", default-features = false } |
| 95 | tar = "0.4" |
| 96 | flate2 = "1.1" |
| 97 | sha2.workspace = true |
| 98 | semver.workspace = true |
| 99 | rust-i18n = "4.1.0" |
| 100 | shell-words = "1.1.1" |
| 101 | mimalloc.workspace = true |
| 102 | |
| 103 | [build-dependencies] |
| 104 | codewhale-build-support = { path = "../build-support", version = "0.9.4" } |
| 105 | |
| 106 | [dev-dependencies] |
| 107 | cucumber = "0.23.0" |
| 108 | wiremock = "0.6" |
| 109 | pretty_assertions = "1.4" |
| 110 | rio-vt = "0.5.1" |
| 111 | |
| 112 | [target.'cfg(unix)'.dependencies] |
| 113 | libc = "0.2" |
| 114 | |
| 115 | [target.'cfg(windows)'.dependencies] |
| 116 | windows-sys = { version = "0.61.2", features = ["Win32_Foundation", "Win32_Security", "Win32_Security_Authorization", "Win32_Storage_FileSystem", "Win32_System_Threading"] } |
| 117 | |
| 118 | [target.'cfg(any(target_os = "macos", target_os = "windows", all(target_os = "linux", not(target_env = "ohos"))))'.dependencies] |
| 119 | arboard = "3.4" |
| 120 | |
| 121 | [target.'cfg(not(target_env = "ohos"))'.dependencies] |
| 122 | portable-pty = "0.9" |
| 123 | |
| 124 | [target.'cfg(target_os = "macos")'.dependencies] |
| 125 | objc2 = "0.6.3" |
| 126 | objc2-foundation = { version = "0.3.2", default-features = false, features = ["std", "NSArray", "NSDictionary", "NSError", "NSObject", "NSString", "NSURL"] } |
| 127 | |
| 128 | [target.'cfg(target_os = "windows")'.dependencies] |
| 129 | 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"] } |
| 130 |