[workspace] members = [ "crates/*", "app", ] resolver = "2" # Include all members except serve-wasm (since it's a helper helper for serving # wasm binaries and not something we want to regularly compile or run # tests against) and integration (since it is only used for testing). default-members = [ "app", "crates/channel_versions", "crates/command", "crates/editor", "crates/graphql", "crates/markdown_parser", "crates/sum_tree", "crates/warpui", "crates/warp_completer", "crates/warp_terminal", "crates/warp_util", ] [workspace.package] authors = ["Warp Team "] license = "AGPL-3.0-only" publish = false [workspace.dependencies] # Local workspace crates. This lets us reference them in other crates without specifying a path. ai = { path = "crates/ai" } app-installation-detection = { path = "crates/app-installation-detection" } asset_cache = { path = "crates/asset_cache" } asset_macro = { path = "crates/asset_macro" } channel_versions = { path = "crates/channel_versions", default-features = false } command = { path = "crates/command" } command-signatures-v2 = { path = "crates/command-signatures-v2" } computer_use = { path = "crates/computer_use" } field_mask = { path = "crates/field_mask" } firebase = { path = "crates/firebase" } fuzzy_match = { path = "crates/fuzzy_match" } handlebars = { path = "crates/handlebars" } http_client = { path = "crates/http_client" } http_server = { path = "crates/http_server" } input_classifier = { path = "crates/input_classifier" } integration = { path = "crates/integration" } ipc = { path = "crates/ipc" } jsonrpc = { path = "crates/jsonrpc" } languages = { path = "crates/languages" } lsp = { path = "crates/lsp" } markdown_parser = { path = "crates/markdown_parser" } natural_language_detection = { path = "crates/natural_language_detection" } node_runtime = { path = "crates/node_runtime" } onboarding = { path = "crates/onboarding" } persistence = { path = "crates/persistence" } prevent_sleep = { path = "crates/prevent_sleep" } repo_metadata = { path = "crates/repo_metadata" } settings = { path = "crates/settings" } settings_value = { path = "crates/settings_value", default-features = false } settings_value_derive = { path = "crates/settings_value_derive" } simple_logger = { path = "crates/simple_logger" } string-offset = { path = "crates/string-offset" } sum_tree = { path = "crates/sum_tree" } syntax_tree = { path = "crates/syntax_tree" } ui_components = { path = "crates/ui_components" } vim = { path = "crates/vim" } virtual-fs = { path = "crates/virtual_fs" } voice_input = { path = "crates/voice_input" } warp = { path = "app" } warp_cli = { path = "crates/warp_cli" } warp_completer = { path = "crates/warp_completer" } warp_core = { path = "crates/warp_core" } warp_editor = { path = "crates/editor" } warp_features = { path = "crates/warp_features" } remote_server = { path = "crates/remote_server" } warp_files = { path = "crates/warp_files" } warp_graphql = { path = "crates/graphql" } warp_graphql_schema = { path = "crates/warp_graphql_schema" } warp_isolation_platform = { path = "crates/isolation_platform" } warp_js = { path = "crates/warp_js" } warp_logging = { path = "crates/warp_logging" } warp_managed_secrets = { path = "crates/managed_secrets" } warp_ripgrep = { path = "crates/warp_ripgrep" } warp_server_client = { path = "crates/warp_server_client" } warp_terminal = { path = "crates/warp_terminal" } warp_util = { path = "crates/warp_util" } warp_web_event_bus = { path = "crates/warp_web_event_bus" } warpui = { path = "crates/warpui" } warpui_core = { path = "crates/warpui_core" } warpui_extras = { path = "crates/warpui_extras", default-features = false } watcher = { path = "crates/watcher" } websocket = { path = "crates/websocket" } # Workspace-level dependencies used by multiple crates. Prefer adding dependencies # here to copying-and-pasting versions. axum = "0.8.4" anyhow = "1.0" arboard = { version = "3.6.1", default-features = false } arrayvec = "0.7.4" async-broadcast = "0.7.2" ashpd = { version = "0.11", default-features = false, features = ["async-std"] } async-channel = "2.3.1" async-compat = "0.2.5" async-io = "2.4.0" async-process = "2.3.0" async-stream = "0.3.5" async-task = "4.2.0" async-trait = "0.1.89" async-fs = "2.1.2" backtrace = "0.3.76" base64 = "0.22" bincode = "1.3.3" bitflags = { version = "2.4.0", features = ["serde"] } bitflags-serde-legacy = "0.1.1" block = "0.1.6" blocking = "1.6.2" bytemuck = { version = "1.13.1" } bytes = { version = "1.11.1", features = ["serde"] } command-corrections = { git = "https://github.com/warpdotdev/command-corrections.git", rev = "eae08c8c51d9bc9741fcb17eef2c21f696aebbeb" } core-foundation = "0.10.1" concat-idents = "1.1.4" cfg_aliases = "0.2.1" cfg-if = "1.0.0" chrono = { version = "0.4.38", features = ["serde"] } clap = { version = "4.5", features = ["derive"] } cocoa = "=0.26.0" ctrlc = "3.4.7" crc = "3.4.0" cynic = { version = "3" } cynic-codegen = { version = "3", features = ["rkyv"] } dashmap = "6.1.0" derive_more = "0.99.17" diesel = { version = "2.3.4", default-features = false } directories = "6.0" dunce = "1.0.1" enum-iterator = "1.1.3" env_logger = "0.10.0" float-cmp = "0.9.0" font-kit = { git = "https://github.com/warpdotdev/font-kit", rev = "a04b225ecb639bb850f21d05212cfdc7465000f3", default-features = false, features = [ "source", ] } futures = { version = "0.3", features = ["executor", "thread-pool"] } futures-lite = "1.13.0" futures-util = { version = "0.3", default-features = false } get-size = { version = "0.1.4", features = ["derive"] } globset = "0.4.18" gloo = { version = "0.11.0", default-features = false, features = [ "events", "futures", "utils", ] } graphql-ws-client = { version = "0.11.1", default-features = false } hex = "0.4.3" # This matches the version of hyper used by reqwest. hyper = "1.6.0" html5ever = "0.35.0" http = "1.1.0" humantime = "2.1.0" image = { version = "0.25.9", default-features = false, features = [ "rayon", "jpeg", "png", "gif", "webp", ] } instant = { version = "0.1.12", features = ["wasm-bindgen"] } itertools = "0.14.0" jaq-json = { version = "2.0", features = ["serde"] } # Disabling the default `formats` feature is intended to avoid pulling in # CBOR/TOML/XML/YAML support, but `jaq-all` currently depends on `jaq-fmts` # with its default features enabled, which re-enables all those parsers transitively. # The long-term fix is https://github.com/01mf02/jaq/issues/431. jaq-all = { version = "0.1", default-features = false } jsonschema = { version = "0.45", default-features = false } lasso = { version = "0.7.3", features = ["multi-threaded"] } lazy_static = "1.4.0" libc = "0.2.81" line-ending = "1.4.0" log = { version = "0.4", features = ["serde", "std"] } mermaid_to_svg = { git = "https://github.com/warpdotdev/mermaid-to-svg.git", rev = "f7233f69965c59760fad98d684c786569814d821" } mime_guess = "2.0" minimp4 = "0.1.2" nix = { version = "0.26.4", default-features = false, features = ["signal"] } notify-debouncer-full = { git = "https://github.com/warpdotdev/notify", rev = "f3afcda3058941e17e09689afea40e2a2db057e0" } nom = "7.1.1" num-traits = "0.2" # We disable default features as the "rustls-tls" feature enables the reqwest # feature of the same name, which itself enables the "rustls-tls-webpki-roots" # feature, whereas we want to use native roots instead. oauth2 = { version = "5.0.0", default-features = false, features = ["reqwest"] } openh264 = "0.8" static_assertions = "1.1.0" url = "2.5.4" urlocator = "0.1.4" objc = "0.2" objc2 = "0.6.3" objc2-app-kit = { version = "0.3.2", default-features = false, features = ["NSScreen", "objc2-core-foundation"] } objc2-core-foundation = "0.3.2" objc2-core-graphics = "0.3.2" objc2-foundation = { version = "0.3", default-features = false, features = ["std"] } once_cell = "1.20.2" ordered-float = { version = "3.0.0", features = ["serde"] } parking_lot = "0.12.1" pathfinder_color = "0.5" pathfinder_geometry = "0.5.1" pin-project = "1.0.10" pprof = "0.15.0" prost = "0.14.3" prost-build = "0.14.3" prost-reflect = "0.16.3" prost-types = "0.14.3" rand = "0.8.6" rangemap = "1.3.0" reqwest = { version = "0.12.28", default-features = false, features = [ "blocking", "brotli", "charset", "gzip", "http2", "json", "macos-system-configuration", "rustls-tls-native-roots-no-provider", "stream", "system-proxy", ] } reqwest-eventsource = "0.6.0" resvg = "0.47.0" rust-embed = { version = "8.7.0", features = ["include-exclude"] } rustc-hash = "2.1.1" rustls = "0.23.39" schemars = { version = "1", features = ["chrono04"] } sentry = { version = "0.41.0", default-features = false, features = [ "anyhow", "backtrace", "contexts", "debug-images", "panic", "release-health", "reqwest", "rustls", ] } sentry-log = "0.41.0" serde = { version = "1.0", features = ["derive", "rc"] } serde_bytes = "0.11" serde-bytes-repr = "0.3" serde_json = { version = "1.0", features = ["raw_value"] } serde_urlencoded = "0.7" serde_with = "2.0.1" serde_yaml = "0.8" session-sharing-protocol = { git = "https://github.com/warpdotdev/session-sharing-protocol.git", rev = "3a12b871dfd1019a66057e4d9b7d5c812b73ee8c" } similar = { version = "2.7", features = ["inline"] } simplelog = "0.12.2" smallvec = "1.6.1" smol_str = "0.2.2" strsim = "0.11" strum = "0.27" strum_macros = "0.27" tempfile = "3.8.0" thiserror = "2.0.17" tokio = "1.47.1" tokio-util = { version = "0.7", features = ["io"] } toml_edit = "0.25.5" tower = "0.5.2" tower-http = "0.6.6" tracing = "0.1.40" arborium = { version = "2", default-features = false, features = [ "lang-rust", "lang-go", "lang-yaml", "lang-python", "lang-javascript", "lang-typescript", "lang-tsx", "lang-java", "lang-cpp", "lang-bash", "lang-c-sharp", "lang-html", "lang-css", "lang-c", "lang-json", "lang-hcl", "lang-lua", "lang-ruby", "lang-php", "lang-toml", "lang-swift", "lang-kotlin", "lang-scala", "lang-powershell", "lang-elixir", "lang-sql", "lang-starlark", "lang-objc", "lang-xml", "lang-vue", "lang-dockerfile", ] } unicode-width = "0.1.12" uuid = { version = "1.1.2", features = ["v4", "serde", "js"] } vec1 = { version = "1.8.0", features = ["serde"] } version-compare = "0.1" vte = { git = "https://github.com/warpdotdev/vte.git", rev = "4b399c87b63ba88f45709edaa6383fc519f6c900", default-features = false } walkdir = "2" warp-workflows = { git = "https://github.com/warpdotdev/workflows", rev = "793a98ddda6ef19682aed66364faebd2829f0e01" } warp_multi_agent_api = { git = "https://github.com/warpdotdev/warp-proto-apis.git", rev = "02997b8fc6a468783642d93bf1bfa89fb7f42502" } wasm-bindgen = "0.2.89" wasm-bindgen-futures = "0.4.42" web-sys = { version = "0.3.69", features = [ "Blob", "Clipboard", "ClipboardEvent", "ClipboardItem", "CompositionEvent", "Document", "DataTransfer", "Event", "HtmlCanvasElement", "HtmlInputElement", "InputEvent", "Navigator", "MediaQueryList", "Window", "Notification", "NotificationPermission", ] } # Disable default features to disable support for WebGPU, which does not yet # have wide browser support. We enable all other default feature of wgpu, # though. wgpu = { version = "29.0.1", default-features = false, features = [ "dx12", "gles", "metal", "parking_lot", "std", "vulkan", "wgsl", ] } zbus = "5.9.0" memchr = "2" memo-map = "0.3.1" async-recursion = "1.0.0" getset = "0.1.1" regex = "1.11.1" rquickjs = { version = "0.3.1" } dirs = "6.0.0" rayon = "1.10.0" sha2 = "0.10" shellexpand = "3.1.1" warp-command-signatures = { git = "https://github.com/warpdotdev/command-signatures.git", rev = "00a032b8ea0ee5711e2077e39a92dc9ca2051cd3", default-features = false } winit = { git = "https://github.com/warpdotdev/winit.git", rev = "7ef01853ae3fe952e6014080a88dc4352662dfb1" } x11rb = "0.13.0" mockito = "1.7.0" sysinfo = { version = "0.37.0", default-features = false, features = [ "system", "multithread", ] } windows = { version = "0.62.2", features = [ "Win32", "Win32_System", "Win32_System_Kernel", "Win32_System_Threading", "Wdk_System", "Wdk_System_SystemServices", "Win32_System_Com", "Win32_System_SecurityCenter", "Win32_System_SystemInformation", "Win32_System_Console", ] } windows-core = { version = "0.62.2" } windows-registry = { version = "0.2.0" } windows-result = { version = "0.2.0" } winreg = "0.55.0" typed-path = "0.10.0" streaming-iterator = "0.1.0" derivative = "2.2.0" parquet = { version = "55.0.0", features = ["arrow"] } rmcp = { git = "https://github.com/warpdotdev/rmcp.git", rev = "c0f65dc441af7d714b9c453ac5e7ef641451abe3" } [profile.release] # Use line-tables-only (debug = 1) rather than full debuginfo (debug = 2 / # `true`). Line tables are enough to symbolicate panics and Sentry stack # traces with file/line info, but they omit the per-variable/type DWARF that # dominates DWARF size. Dropping the type info significantly reduces rustc's # peak memory during ThinLTO + codegen (which was OOM-killing release builds # on CI), at the cost of not being able to inspect locals/types when # attaching a debugger to a release binary. debug = 1 # Force the rust compiler to create a dSYM. Starting in 1.53 the default on MacOS is "unpacked". split-debuginfo = "packed" [profile.dev] # Use line-tables-only to speed up dev builds. Change to `debug = true` if you # need full debuginfo for step-through debugging (gdb/lldb). debug = "line-tables-only" # loads debuginfo without needing to run dsymutil, leave the .o object files # in the build output directory instead of deleting them, and skips the step of running dsymutil. # Rust's backtrace support is smart enough to know how to find these .o files. # This should work as long as you don't need to move the binary to a different # location while retaining the debug information. split-debuginfo = "unpacked" [profile.dev.package] # Minimize the runtime overhead of CPU profiling at the cost of a small # increase in compile time for this crate. backtrace.opt-level = 3 # Minimize the runtime overhead of CPU profiling at the cost of a small # increase in compile time for this crate. pprof.opt-level = 3 # Ensure jemalloc is optimized for performance. tikv-jemallocator.opt-level = 3 tikv-jemalloc-sys.opt-level = 3 jemalloc_pprof.opt-level = 3 pprof_util.opt-level = 3 # Vastly improve runtime performance of some font and text layout logic # at the cost of a small increase in compile time for this crate. ttf-parser.opt-level = 3 # Improve the performance of Agent Mode diff application, particularly in tests. strsim.opt-level = 3 # Improve performance of SSE stream parsing. eventsource-stream.opt-level = 3 memchr.opt-level = 3 nom.opt-level = 3 # Improve performance of core runtime components slightly. tokio.opt-level = 1 rayon-core.opt-level = 1 # Improve performance of image processing for debug builds. fdeflate.opt-level = 3 image.opt-level = 3 png.opt-level = 3 miniz_oxide.opt-level = 3 # A profile that behaves like release but enables ThinLTO, which should produce # binaries with better runtime performance with little build-time overhead. [profile.release-lto] inherits = "release" lto = "thin" # A shorthand profile for `release-lto`. # Windows enforces that any path is a maximum of 255 characters and # the length of this profile is sufficiently long that it can cause # compiler errors. We use a shorthand to get around these issues. [profile.rlto] inherits = "release-lto" # A custom release-like profile that forces debug assertions on. [profile.release-lto-debug_assertions] inherits = "release-lto" debug-assertions = true # A shorthand profile for `release-lto-debug_assertions`. # Windows enforces that any path is a maximum of 255 characters and # the length of this profile is sufficiently long that it can cause # compiler errors. We use a shorthand to get around these issues. [profile.rltoda] inherits = "release-lto-debug_assertions" # A profile tuned for the `oz` CLI tarball. The CLI is shipped over the network # and run headlessly, so we trade some compile time and a small amount of # runtime perf for a smaller binary by mirroring the size-leaning settings used # by `release-wasm`. [profile.release-cli] inherits = "release-lto" opt-level = "s" codegen-units = 1 # A custom CLI release-like profile that forces debug assertions on, used for # dev/local channel CLI bundles. [profile.release-cli-debug_assertions] inherits = "release-cli" debug-assertions = true [profile.release-wasm] inherits = "release" opt-level = "s" lto = true codegen-units = 1 [profile.release-wasm-debug_assertions] inherits = "release-wasm" debug-assertions = true # A dev profile optimized for remote server deployment. Strips symbols to # reduce binary size and improve rsync delta transfer efficiency. [profile.dev-remote] inherits = "dev" strip = "symbols" [profile.dev-wasm] inherits = "dev" opt-level = "s" [patch.crates-io] # Pinned to the merge commit of servo/core-foundation-rs#746, which fixes a # double-retain bug in `CTFontCollection::get_descriptors` that leaks the # CoreText font-descriptor NSArray on every call. The fix is not yet in any # crates.io release; the latest published `core-text` (21.1.0) was cut from # a commit that predates the merge. core-foundation = { git = "https://github.com/servo/core-foundation-rs", rev = "6f844cf1a1a18e25b70fcdf1bcdc458555bd2eff" } core-foundation-sys = { git = "https://github.com/servo/core-foundation-rs", rev = "6f844cf1a1a18e25b70fcdf1bcdc458555bd2eff" } core-graphics = { git = "https://github.com/servo/core-foundation-rs", rev = "6f844cf1a1a18e25b70fcdf1bcdc458555bd2eff" } core-text = { git = "https://github.com/servo/core-foundation-rs", rev = "6f844cf1a1a18e25b70fcdf1bcdc458555bd2eff" } objc = { git = "https://github.com/warpdotdev/rust-objc.git", rev = "5b656827fa9f863ef0eb22e444a3fedac009e78a" } pathfinder_simd = { git = "https://github.com/warpdotdev/pathfinder.git", rev = "34128a129ca6aee168fbc5060a4f21b4f7e486a9" } yaml-rust = { git = "https://github.com/warpdotdev/yaml-rust.git", rev = "51684719d0102ca85ff4b21cec39877a0c669e19" } tink-core = { git = "https://github.com/warpdotdev/tink-rust", branch = "warpdotdev/main" } tink-proto = { git = "https://github.com/warpdotdev/tink-rust", branch = "warpdotdev/main" } tink-hybrid = { git = "https://github.com/warpdotdev/tink-rust", branch = "warpdotdev/main" } tikv-jemallocator = { git = "https://github.com/warpdotdev/jemallocator.git", rev = "2ee30bfdf7059223b54810e4ea6c666f0a379e0b" } tikv-jemalloc-sys = { git = "https://github.com/warpdotdev/jemallocator.git", rev = "2ee30bfdf7059223b54810e4ea6c666f0a379e0b" } [patch."https://github.com/warpdotdev/warp-proto-apis.git"] # Uncomment for local development of warp-proto-apis # warp_multi_agent_api = { path = "../warp-proto-apis/apis/multi_agent/v1/gen/rust" }