Detailed changes
  
  
    
    @@ -189,7 +189,7 @@ dependencies = [
  "workspace",
  "workspace-hack",
  "zed_env_vars",
- "zstd",
+ "zstd 0.11.2+zstd.1.5.2",
 ]
 
 [[package]]
@@ -280,7 +280,7 @@ dependencies = [
  "worktree",
  "zed_env_vars",
  "zlog",
- "zstd",
+ "zstd 0.11.2+zstd.1.5.2",
 ]
 
 [[package]]
@@ -533,6 +533,21 @@ version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1"
 
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
+dependencies = [
+ "alloc-no-stdlib",
+]
+
 [[package]]
 name = "allocator-api2"
 version = "0.2.21"
@@ -709,6 +724,21 @@ dependencies = [
  "syn 2.0.101",
 ]
 
+[[package]]
+name = "argminmax"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70f13d10a41ac8d2ec79ee34178d61e6f47a29c2edfe7ef1721c7383b0359e65"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "array-init-cursor"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed51fe0f224d1d4ea768be38c51f9f831dee9d05c163c11fba0b8c44387b1fc3"
+
 [[package]]
 name = "arraydeque"
 version = "0.5.1"
@@ -1388,6 +1418,15 @@ dependencies = [
  "num-traits",
 ]
 
+[[package]]
+name = "atoi_simd"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2a49e05797ca52e312a0c658938b7d00693ef037799ef7187678f212d7684cf"
+dependencies = [
+ "debug_unsafe",
+]
+
 [[package]]
 name = "atomic"
 version = "0.5.3"
@@ -2178,6 +2217,26 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "bincode"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740"
+dependencies = [
+ "bincode_derive",
+ "serde",
+ "unty",
+]
+
+[[package]]
+name = "bincode_derive"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09"
+dependencies = [
+ "virtue",
+]
+
 [[package]]
 name = "bindgen"
 version = "0.69.5"
@@ -2366,6 +2425,19 @@ dependencies = [
  "profiling",
 ]
 
+[[package]]
+name = "blake3"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq 0.3.1",
+]
+
 [[package]]
 name = "block"
 version = "0.1.6"
@@ -2455,6 +2527,12 @@ dependencies = [
  "syn 2.0.101",
 ]
 
+[[package]]
+name = "boxcar"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e"
+
 [[package]]
 name = "breadcrumbs"
 version = "0.1.0"
@@ -2470,6 +2548,27 @@ dependencies = [
  "zed_actions",
 ]
 
+[[package]]
+name = "brotli"
+version = "8.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "5.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
 [[package]]
 name = "bstr"
 version = "1.12.0"
@@ -2601,6 +2700,9 @@ name = "bytes"
 version = "1.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "bytes-utils"
@@ -2890,6 +2992,15 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
 
+[[package]]
+name = "castaway"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
+dependencies = [
+ "rustversion",
+]
+
 [[package]]
 name = "cbc"
 version = "0.1.2"
@@ -3018,6 +3129,16 @@ dependencies = [
  "windows-link 0.1.1",
 ]
 
+[[package]]
+name = "chrono-tz"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3"
+dependencies = [
+ "chrono",
+ "phf 0.12.1",
+]
+
 [[package]]
 name = "chunked_transfer"
 version = "1.5.0"
@@ -3562,6 +3683,17 @@ dependencies = [
  "memchr",
 ]
 
+[[package]]
+name = "comfy-table"
+version = "7.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b"
+dependencies = [
+ "crossterm",
+ "unicode-segmentation",
+ "unicode-width",
+]
+
 [[package]]
 name = "command-fds"
 version = "0.3.1"
@@ -3616,6 +3748,21 @@ dependencies = [
  "workspace-hack",
 ]
 
+[[package]]
+name = "compact_str"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
+dependencies = [
+ "castaway",
+ "cfg-if",
+ "itoa",
+ "rustversion",
+ "ryu",
+ "serde",
+ "static_assertions",
+]
+
 [[package]]
 name = "component"
 version = "0.1.0"
@@ -3684,6 +3831,12 @@ version = "0.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
 
+[[package]]
+name = "constant_time_eq"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
+
 [[package]]
 name = "context_server"
 version = "0.1.0"
@@ -4159,7 +4312,7 @@ dependencies = [
 name = "crashes"
 version = "0.1.0"
 dependencies = [
- "bincode",
+ "bincode 1.3.3",
  "cfg-if",
  "crash-handler",
  "log",
@@ -4172,7 +4325,7 @@ dependencies = [
  "smol",
  "system_specs",
  "workspace-hack",
- "zstd",
+ "zstd 0.11.2+zstd.1.5.2",
 ]
 
 [[package]]
@@ -4323,6 +4476,29 @@ version = "0.8.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
 
+[[package]]
+name = "crossterm"
+version = "0.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
+dependencies = [
+ "bitflags 2.9.0",
+ "crossterm_winapi",
+ "document-features",
+ "parking_lot",
+ "rustix 1.0.7",
+ "winapi",
+]
+
+[[package]]
+name = "crossterm_winapi"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
+dependencies = [
+ "winapi",
+]
+
 [[package]]
 name = "crunchy"
 version = "0.2.3"
@@ -4371,7 +4547,7 @@ dependencies = [
  "cssparser-macros",
  "dtoa-short",
  "itoa",
- "phf",
+ "phf 0.11.3",
  "smallvec",
 ]
 
@@ -4674,6 +4850,12 @@ dependencies = [
  "workspace-hack",
 ]
 
+[[package]]
+name = "debug_unsafe"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85d3cef41d236720ed453e102153a53e4cc3d2fde848c0078a50cf249e8e3e5b"
+
 [[package]]
 name = "debugger_tools"
 version = "0.1.0"
@@ -5054,6 +5236,15 @@ dependencies = [
  "zlog",
 ]
 
+[[package]]
+name = "document-features"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d"
+dependencies = [
+ "litrs",
+]
+
 [[package]]
 name = "documented"
 version = "0.9.1"
@@ -5061,7 +5252,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bc6db32f0995bc4553d2de888999075acd0dbeef75ba923503f6a724263dc6f3"
 dependencies = [
  "documented-macros",
- "phf",
+ "phf 0.11.3",
  "thiserror 1.0.69",
 ]
 
@@ -5098,7 +5289,7 @@ version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "415b6ec780d34dcf624666747194393603d0373b7141eef01d12ee58881507d9"
 dependencies = [
- "phf",
+ "phf 0.11.3",
 ]
 
 [[package]]
@@ -5431,7 +5622,7 @@ version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "99e1f1df1f181f2539bac8bf027d31ca5ffbf9e559e3f2d09413b9107b5c02f4"
 dependencies = [
- "phf",
+ "phf 0.11.3",
 ]
 
 [[package]]
@@ -5601,6 +5792,12 @@ dependencies = [
  "windows-sys 0.48.0",
 ]
 
+[[package]]
+name = "ethnum"
+version = "1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca81e6b4777c89fd810c25a4be2b1bd93ea034fbe58e6a75216a34c6b82c539b"
+
 [[package]]
 name = "euclid"
 version = "0.22.11"
@@ -5883,6 +6080,12 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
 
+[[package]]
+name = "fallible-streaming-iterator"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
+
 [[package]]
 name = "fancy-regex"
 version = "0.13.0"
@@ -5905,6 +6108,12 @@ dependencies = [
  "regex-syntax",
 ]
 
+[[package]]
+name = "fast-float2"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55"
+
 [[package]]
 name = "fast-srgb8"
 version = "1.0.0"
@@ -6058,6 +6267,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece"
 dependencies = [
  "crc32fast",
+ "libz-rs-sys",
  "miniz_oxide",
 ]
 
@@ -6308,6 +6518,16 @@ dependencies = [
  "winapi",
 ]
 
+[[package]]
+name = "fs4"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4"
+dependencies = [
+ "rustix 1.0.7",
+ "windows-sys 0.59.0",
+]
+
 [[package]]
 name = "fs_extra"
 version = "1.3.0"
@@ -7344,6 +7564,7 @@ dependencies = [
  "allocator-api2",
  "equivalent",
  "foldhash",
+ "rayon",
  "serde",
 ]
 
@@ -7444,7 +7665,7 @@ version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "13c255bdf46e07fb840d120a36dcc81f385140d7191c76a7391672675c01a55d"
 dependencies = [
- "bincode",
+ "bincode 1.3.3",
  "byteorder",
  "heed-traits",
  "serde",
@@ -8253,7 +8474,7 @@ version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6fb8251fb7bcd9ccd3725ed8deae9fe7db8e586495c9eb5b0c52e6233e5e75ea"
 dependencies = [
- "bincode",
+ "bincode 1.3.3",
  "crossbeam-channel",
  "fnv",
  "lazy_static",
@@ -9035,7 +9256,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
 dependencies = [
  "cfg-if",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -9099,6 +9320,15 @@ dependencies = [
  "webrtc-sys",
 ]
 
+[[package]]
+name = "libz-rs-sys"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd"
+dependencies = [
+ "zlib-rs",
+]
+
 [[package]]
 name = "libz-sys"
 version = "1.1.22"
@@ -9162,6 +9392,12 @@ version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
 
+[[package]]
+name = "litrs"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed"
+
 [[package]]
 name = "livekit"
 version = "0.7.8"
@@ -9464,6 +9700,25 @@ dependencies = [
  "num-traits",
 ]
 
+[[package]]
+name = "lz4"
+version = "1.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a20b523e860d03443e98350ceaac5e71c6ba89aea7d960769ec3ce37f4de5af4"
+dependencies = [
+ "lz4-sys",
+]
+
+[[package]]
+name = "lz4-sys"
+version = "1.11.1+lz4-1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6"
+dependencies = [
+ "cc",
+ "libc",
+]
+
 [[package]]
 name = "mac"
 version = "0.1.1"
@@ -9560,7 +9815,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45"
 dependencies = [
  "log",
- "phf",
+ "phf 0.11.3",
  "phf_codegen",
  "string_cache",
  "string_cache_codegen",
@@ -10287,6 +10542,15 @@ name = "notify-types"
 version = "2.0.0"
 source = "git+https://github.com/zed-industries/notify.git?rev=bbb9ea5ae52b253e095737847e367c30653a2e96#bbb9ea5ae52b253e095737847e367c30653a2e96"
 
+[[package]]
+name = "now"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d89e9874397a1f0a52fc1f197a8effd9735223cb2390e9dcc83ac6cd02923d0"
+dependencies = [
+ "chrono",
+]
+
 [[package]]
 name = "ntapi"
 version = "0.4.1"
@@ -10673,6 +10937,41 @@ dependencies = [
  "memchr",
 ]
 
+[[package]]
+name = "object_store"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c1be0c6c22ec0817cdc77d3842f721a17fd30ab6965001415b5402a74e6b740"
+dependencies = [
+ "async-trait",
+ "base64 0.22.1",
+ "bytes 1.10.1",
+ "chrono",
+ "form_urlencoded",
+ "futures 0.3.31",
+ "http 1.3.1",
+ "http-body-util",
+ "humantime",
+ "hyper 1.6.0",
+ "itertools 0.14.0",
+ "parking_lot",
+ "percent-encoding",
+ "quick-xml 0.38.3",
+ "rand 0.9.1",
+ "reqwest 0.12.15",
+ "ring",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "thiserror 2.0.12",
+ "tokio",
+ "tracing",
+ "url",
+ "walkdir",
+ "wasm-bindgen-futures",
+ "web-time",
+]
+
 [[package]]
 name = "ollama"
 version = "0.1.0"
@@ -11708,7 +12007,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
 dependencies = [
  "phf_macros",
- "phf_shared",
+ "phf_shared 0.11.3",
+]
+
+[[package]]
+name = "phf"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7"
+dependencies = [
+ "phf_shared 0.12.1",
 ]
 
 [[package]]
@@ -11718,7 +12026,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
 dependencies = [
  "phf_generator",
- "phf_shared",
+ "phf_shared 0.11.3",
 ]
 
 [[package]]
@@ -11727,7 +12035,7 @@ version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
 dependencies = [
- "phf_shared",
+ "phf_shared 0.11.3",
  "rand 0.8.5",
 ]
 
@@ -11738,7 +12046,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
 dependencies = [
  "phf_generator",
- "phf_shared",
+ "phf_shared 0.11.3",
  "proc-macro2",
  "quote",
  "syn 2.0.101",
@@ -11753,6 +12061,15 @@ dependencies = [
  "siphasher",
 ]
 
+[[package]]
+name = "phf_shared"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981"
+dependencies = [
+ "siphasher",
+]
+
 [[package]]
 name = "picker"
 version = "0.1.0"
@@ -11864,6 +12181,16 @@ version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
 
+[[package]]
+name = "planus"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3daf8e3d4b712abe1d690838f6e29fb76b76ea19589c4afa39ec30e12f62af71"
+dependencies = [
+ "array-init-cursor",
+ "hashbrown 0.15.3",
+]
+
 [[package]]
 name = "plist"
 version = "1.7.1"
@@ -11919,28 +12246,542 @@ dependencies = [
 ]
 
 [[package]]
-name = "polling"
-version = "3.11.0"
+name = "polars"
+version = "0.51.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
+checksum = "a5f7feb5d56b954e691dff22a8b2d78d77433dcc93c35fe21c3777fdc121b697"
 dependencies = [
- "cfg-if",
- "concurrent-queue",
- "hermit-abi 0.5.0",
- "pin-project-lite",
- "rustix 1.0.7",
- "windows-sys 0.61.0",
+ "getrandom 0.2.15",
+ "getrandom 0.3.2",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-io",
+ "polars-lazy",
+ "polars-ops",
+ "polars-parquet",
+ "polars-sql",
+ "polars-time",
+ "polars-utils",
+ "version_check",
 ]
 
 [[package]]
-name = "pollster"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7"
-
-[[package]]
-name = "portable-atomic"
-version = "1.11.0"
+name = "polars-arrow"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b4fed2343961b3eea3db2cee165540c3e1ad9d5782350cc55a9e76cf440148"
+dependencies = [
+ "atoi_simd",
+ "bitflags 2.9.0",
+ "bytemuck",
+ "chrono",
+ "chrono-tz",
+ "dyn-clone",
+ "either",
+ "ethnum",
+ "getrandom 0.2.15",
+ "getrandom 0.3.2",
+ "hashbrown 0.15.3",
+ "itoa",
+ "lz4",
+ "num-traits",
+ "polars-arrow-format",
+ "polars-error",
+ "polars-schema",
+ "polars-utils",
+ "serde",
+ "simdutf8",
+ "streaming-iterator",
+ "strum_macros 0.27.1",
+ "version_check",
+ "zstd 0.13.3",
+]
+
+[[package]]
+name = "polars-arrow-format"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a556ac0ee744e61e167f34c1eb0013ce740e0ee6cd8c158b2ec0b518f10e6675"
+dependencies = [
+ "planus",
+ "serde",
+]
+
+[[package]]
+name = "polars-compute"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "138785beda4e4a90a025219f09d0d15a671b2be9091513ede58e05db6ad4413f"
+dependencies = [
+ "atoi_simd",
+ "bytemuck",
+ "chrono",
+ "either",
+ "fast-float2",
+ "hashbrown 0.15.3",
+ "itoa",
+ "num-traits",
+ "polars-arrow",
+ "polars-error",
+ "polars-utils",
+ "rand 0.9.1",
+ "ryu",
+ "serde",
+ "skiplist",
+ "strength_reduce",
+ "strum_macros 0.27.1",
+ "version_check",
+]
+
+[[package]]
+name = "polars-core"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e77b1f08ef6dbb032bb1d0d3365464be950df9905f6827a95b24c4ca5518901d"
+dependencies = [
+ "bitflags 2.9.0",
+ "boxcar",
+ "bytemuck",
+ "chrono",
+ "chrono-tz",
+ "comfy-table",
+ "either",
+ "hashbrown 0.15.3",
+ "indexmap 2.9.0",
+ "itoa",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-dtype",
+ "polars-error",
+ "polars-row",
+ "polars-schema",
+ "polars-utils",
+ "rand 0.9.1",
+ "rand_distr",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_json",
+ "strum_macros 0.27.1",
+ "uuid",
+ "version_check",
+ "xxhash-rust",
+]
+
+[[package]]
+name = "polars-dtype"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89c43d0ea57168be4546c4d8064479ed8b29a9c79c31a0c7c367ee734b9b7158"
+dependencies = [
+ "boxcar",
+ "hashbrown 0.15.3",
+ "polars-arrow",
+ "polars-error",
+ "polars-utils",
+ "serde",
+ "uuid",
+]
+
+[[package]]
+name = "polars-error"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9cb5d98f59f8b94673ee391840440ad9f0d2170afced95fc98aa86f895563c0"
+dependencies = [
+ "object_store",
+ "parking_lot",
+ "polars-arrow-format",
+ "regex",
+ "signal-hook",
+ "simdutf8",
+]
+
+[[package]]
+name = "polars-expr"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "343931b818cf136349135ba11dbc18c27683b52c3477b1ba8ca606cf5ab1965c"
+dependencies = [
+ "bitflags 2.9.0",
+ "hashbrown 0.15.3",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-io",
+ "polars-ops",
+ "polars-plan",
+ "polars-row",
+ "polars-time",
+ "polars-utils",
+ "rand 0.9.1",
+ "rayon",
+ "recursive",
+]
+
+[[package]]
+name = "polars-io"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10388c64b8155122488229a881d1c6f4fdc393bc988e764ab51b182fcb2307e4"
+dependencies = [
+ "async-trait",
+ "atoi_simd",
+ "blake3",
+ "bytes 1.10.1",
+ "chrono",
+ "fast-float2",
+ "fs4",
+ "futures 0.3.31",
+ "glob",
+ "hashbrown 0.15.3",
+ "home",
+ "itoa",
+ "memchr",
+ "memmap2",
+ "num-traits",
+ "object_store",
+ "percent-encoding",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-parquet",
+ "polars-schema",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "regex",
+ "reqwest 0.12.15",
+ "ryu",
+ "serde",
+ "serde_json",
+ "simdutf8",
+ "tokio",
+ "tokio-util",
+ "url",
+]
+
+[[package]]
+name = "polars-lazy"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fb6e2c6c2fa4ea0c660df1c06cf56960c81e7c2683877995bae3d4e3d408147"
+dependencies = [
+ "bitflags 2.9.0",
+ "chrono",
+ "either",
+ "memchr",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-expr",
+ "polars-io",
+ "polars-mem-engine",
+ "polars-ops",
+ "polars-plan",
+ "polars-stream",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "version_check",
+]
+
+[[package]]
+name = "polars-mem-engine"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20a856e98e253587c28d8132a5e7e5a75cb2c44731ca090f1481d45f1d123771"
+dependencies = [
+ "futures 0.3.31",
+ "memmap2",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-expr",
+ "polars-io",
+ "polars-ops",
+ "polars-plan",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "recursive",
+ "tokio",
+]
+
+[[package]]
+name = "polars-ops"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acf6062173fdc9ba05775548beb66e76643a148d9aeadc9984ed712bc4babd76"
+dependencies = [
+ "argminmax",
+ "base64 0.22.1",
+ "bytemuck",
+ "chrono",
+ "chrono-tz",
+ "either",
+ "hashbrown 0.15.3",
+ "hex",
+ "indexmap 2.9.0",
+ "libm",
+ "memchr",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-error",
+ "polars-schema",
+ "polars-utils",
+ "rayon",
+ "regex",
+ "regex-syntax",
+ "strum_macros 0.27.1",
+ "unicode-normalization",
+ "unicode-reverse",
+ "version_check",
+]
+
+[[package]]
+name = "polars-parquet"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc1d769180dec070df0dc4b89299b364bf2cfe32b218ecc4ddd8f1a49ae60669"
+dependencies = [
+ "async-stream",
+ "base64 0.22.1",
+ "brotli",
+ "bytemuck",
+ "ethnum",
+ "flate2",
+ "futures 0.3.31",
+ "hashbrown 0.15.3",
+ "lz4",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-error",
+ "polars-parquet-format",
+ "polars-utils",
+ "serde",
+ "simdutf8",
+ "snap",
+ "streaming-decompression",
+ "zstd 0.13.3",
+]
+
+[[package]]
+name = "polars-parquet-format"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c025243dcfe8dbc57e94d9f82eb3bef10b565ab180d5b99bed87fd8aea319ce1"
+dependencies = [
+ "async-trait",
+ "futures 0.3.31",
+]
+
+[[package]]
+name = "polars-plan"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cd3a2e33ae4484fe407ab2d2ba5684f0889d1ccf3ad6b844103c03638e6d0a0"
+dependencies = [
+ "bitflags 2.9.0",
+ "bytemuck",
+ "bytes 1.10.1",
+ "chrono",
+ "chrono-tz",
+ "either",
+ "futures 0.3.31",
+ "hashbrown 0.15.3",
+ "memmap2",
+ "num-traits",
+ "percent-encoding",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-error",
+ "polars-io",
+ "polars-ops",
+ "polars-parquet",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "recursive",
+ "regex",
+ "sha2",
+ "strum_macros 0.27.1",
+ "version_check",
+]
+
+[[package]]
+name = "polars-row"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18734f17e0e348724df3ae65f3ee744c681117c04b041cac969dfceb05edabc0"
+dependencies = [
+ "bitflags 2.9.0",
+ "bytemuck",
+ "polars-arrow",
+ "polars-compute",
+ "polars-dtype",
+ "polars-error",
+ "polars-utils",
+]
+
+[[package]]
+name = "polars-schema"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e6c1ab13e04d5167661a9854ed1ea0482b2ed9b8a0f1118dabed7cd994a85e3"
+dependencies = [
+ "indexmap 2.9.0",
+ "polars-error",
+ "polars-utils",
+ "serde",
+ "version_check",
+]
+
+[[package]]
+name = "polars-sql"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4e7766da02cc1d464994404d3e88a7a0ccd4933df3627c325480fbd9bbc0a11"
+dependencies = [
+ "bitflags 2.9.0",
+ "hex",
+ "polars-core",
+ "polars-error",
+ "polars-lazy",
+ "polars-ops",
+ "polars-plan",
+ "polars-time",
+ "polars-utils",
+ "rand 0.9.1",
+ "regex",
+ "serde",
+ "sqlparser",
+]
+
+[[package]]
+name = "polars-stream"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31f6c6ca1ea01f9dea424d167e4f33f5ec44cd67fbfac9efd40575ed20521f14"
+dependencies = [
+ "async-channel 2.3.1",
+ "async-trait",
+ "atomic-waker",
+ "bitflags 2.9.0",
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-queue",
+ "crossbeam-utils",
+ "futures 0.3.31",
+ "memmap2",
+ "parking_lot",
+ "percent-encoding",
+ "pin-project-lite",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-expr",
+ "polars-io",
+ "polars-mem-engine",
+ "polars-ops",
+ "polars-parquet",
+ "polars-plan",
+ "polars-utils",
+ "rand 0.9.1",
+ "rayon",
+ "recursive",
+ "slotmap",
+ "tokio",
+ "tokio-util",
+ "version_check",
+]
+
+[[package]]
+name = "polars-time"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6a3a6e279a7a984a0b83715660f9e880590c6129ec2104396bfa710bcd76dee"
+dependencies = [
+ "atoi_simd",
+ "bytemuck",
+ "chrono",
+ "chrono-tz",
+ "now",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-error",
+ "polars-ops",
+ "polars-utils",
+ "rayon",
+ "regex",
+ "strum_macros 0.27.1",
+]
+
+[[package]]
+name = "polars-utils"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57b267021b0e5422d7fbc70fd79e51b9f9a8466c585779373a18b0199e973f29"
+dependencies = [
+ "bincode 2.0.1",
+ "bytemuck",
+ "bytes 1.10.1",
+ "compact_str",
+ "either",
+ "flate2",
+ "foldhash",
+ "hashbrown 0.15.3",
+ "indexmap 2.9.0",
+ "libc",
+ "memmap2",
+ "num-traits",
+ "polars-error",
+ "rand 0.9.1",
+ "raw-cpuid 11.6.0",
+ "rayon",
+ "regex",
+ "rmp-serde",
+ "serde",
+ "serde_json",
+ "serde_stacker",
+ "slotmap",
+ "stacker",
+ "uuid",
+ "version_check",
+]
+
+[[package]]
+name = "polling"
+version = "3.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi 0.5.0",
+ "pin-project-lite",
+ "rustix 1.0.7",
+ "windows-sys 0.61.0",
+]
+
+[[package]]
+name = "pollster"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7"
+
+[[package]]
+name = "portable-atomic"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
 
  
  
  
    
    @@ -14,6 +14,7 @@ path = "src/main.rs"
 
 [dependencies]
 anyhow.workspace = true
+chrono.workspace = true
 clap.workspace = true
 client.workspace = true
 cloud_llm_client.workspace= true
@@ -35,6 +36,7 @@ log.workspace = true
 node_runtime.workspace = true
 ordered-float.workspace = true
 paths.workspace = true
+polars = { version = "0.51", features = ["lazy", "dtype-struct", "parquet"] }
 project.workspace = true
 prompt_store.workspace = true
 release_channel.workspace = true
@@ -44,6 +46,7 @@ serde_json.workspace = true
 settings.workspace = true
 shellexpand.workspace = true
 smol.workspace = true
+soa-rs = "0.8.1"
 terminal_view.workspace = true
 util.workspace = true
 watch.workspace = true
  
  
  
    
    @@ -13,8 +13,10 @@ use gpui::{AppContext, AsyncApp};
 use language::OffsetRangeExt;
 use language::{BufferSnapshot, Point};
 use ordered_float::OrderedFloat;
+use polars::prelude::*;
 use project::{Project, ProjectEntryId, ProjectPath, Worktree};
 use serde::{Deserialize, Serialize};
+use std::fs;
 use std::{
     cmp::Reverse,
     collections::{HashMap, HashSet},
@@ -163,16 +165,23 @@ pub async fn retrieval_stats(
     }
     let files_hash = hasher.finish();
     let file_snapshots = Arc::new(file_snapshots);
+    let target_cli_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("../../target/zeta_cli");
+    fs::create_dir_all(&target_cli_dir).unwrap();
+    let target_cli_dir = target_cli_dir.canonicalize().unwrap();
 
-    let lsp_definitions_path = std::env::current_dir()?.join(format!(
-        "target/zeta2-lsp-definitions-{:x}.jsonl",
+    let lsp_cache_dir = target_cli_dir.join("cache");
+    fs::create_dir_all(&lsp_cache_dir).unwrap();
+
+    let lsp_definitions_path = lsp_cache_dir.join(format!(
+        "{}-{:x}.jsonl",
+        worktree_path.file_stem().unwrap_or_default().display(),
         files_hash
     ));
 
     let mut lsp_definitions = HashMap::default();
     let mut lsp_files = 0;
 
-    if std::fs::exists(&lsp_definitions_path)? {
+    if fs::exists(&lsp_definitions_path)? {
         log::info!(
             "Using cached LSP definitions from {}",
             lsp_definitions_path.display()
@@ -246,8 +255,7 @@ pub async fn retrieval_stats(
     let files_len = files.len().min(file_limit.unwrap_or(usize::MAX));
     let done_count = Arc::new(AtomicUsize::new(0));
 
-    let (output_tx, mut output_rx) = mpsc::unbounded::<RetrievalStatsResult>();
-    let mut output = std::fs::File::create("target/zeta-retrieval-stats.txt")?;
+    let (output_tx, output_rx) = mpsc::unbounded::<ReferenceRetrievalResult>();
 
     let tasks = files
         .into_iter()
@@ -271,8 +279,6 @@ pub async fn retrieval_stats(
                     &snapshot,
                 );
 
-                println!("references: {}", references.len(),);
-
                 let imports = if options.context.use_imports {
                     Imports::gather(&snapshot, Some(&project_file.parent_abs_path))
                 } else {
@@ -309,65 +315,13 @@ pub async fn retrieval_stats(
                     )
                     .await?;
 
-                    // TODO: LSP returns things like locals, this filters out some of those, but potentially
-                    // hides some retrieval issues.
-                    if retrieve_result.definitions.is_empty() {
-                        continue;
-                    }
-
-                    let mut best_match = None;
-                    let mut has_external_definition = false;
-                    let mut in_excerpt = false;
-                    for (index, retrieved_definition) in
-                        retrieve_result.definitions.iter().enumerate()
-                    {
-                        for lsp_definition in &lsp_definitions {
-                            let SourceRange {
-                                path,
-                                point_range,
-                                offset_range,
-                            } = lsp_definition;
-                            let lsp_point_range =
-                                SerializablePoint::into_language_point_range(point_range.clone());
-                            has_external_definition = has_external_definition
-                                || path.is_absolute()
-                                || path
-                                    .components()
-                                    .any(|component| component.as_os_str() == "node_modules");
-                            let is_match = path.as_path()
-                                == retrieved_definition.path.as_std_path()
-                                && retrieved_definition
-                                    .range
-                                    .contains_inclusive(&lsp_point_range);
-                            if is_match {
-                                if best_match.is_none() {
-                                    best_match = Some(index);
-                                }
-                            }
-                            in_excerpt = in_excerpt
-                                || retrieve_result.excerpt_range.as_ref().is_some_and(
-                                    |excerpt_range| excerpt_range.contains_inclusive(&offset_range),
-                                );
-                        }
-                    }
-
-                    let outcome = if let Some(best_match) = best_match {
-                        RetrievalOutcome::Match { best_match }
-                    } else if has_external_definition {
-                        RetrievalOutcome::NoMatchDueToExternalLspDefinitions
-                    } else if in_excerpt {
-                        RetrievalOutcome::ProbablyLocal
-                    } else {
-                        RetrievalOutcome::NoMatch
-                    };
-
-                    let result = RetrievalStatsResult {
-                        outcome,
-                        path: path.clone(),
+                    let result = ReferenceRetrievalResult {
+                        cursor_path: path.clone(),
                         identifier: reference.identifier,
-                        point: query_point,
+                        cursor_point: query_point,
                         lsp_definitions,
                         retrieved_definitions: retrieve_result.definitions,
+                        excerpt_range: retrieve_result.excerpt_range,
                     };
 
                     output_tx.unbounded_send(result).ok();
@@ -386,139 +340,610 @@ pub async fn retrieval_stats(
 
     drop(output_tx);
 
-    let results_task = cx.background_spawn(async move {
-        let mut results = Vec::new();
-        while let Some(result) = output_rx.next().await {
-            output
-                .write_all(format!("{:#?}\n", result).as_bytes())
-                .log_err();
-            results.push(result)
-        }
-        results
-    });
+    let df_task = cx.background_spawn(build_dataframe(output_rx));
 
     futures::future::try_join_all(tasks).await?;
-    println!("Tasks completed");
-    let results = results_task.await;
-    println!("Results received");
-
-    let mut references_count = 0;
-
-    let mut included_count = 0;
-    let mut both_absent_count = 0;
-
-    let mut retrieved_count = 0;
-    let mut top_match_count = 0;
-    let mut non_top_match_count = 0;
-    let mut ranking_involved_top_match_count = 0;
-
-    let mut no_match_count = 0;
-    let mut no_match_none_retrieved = 0;
-    let mut no_match_wrong_retrieval = 0;
-
-    let mut expected_no_match_count = 0;
-    let mut in_excerpt_count = 0;
-    let mut external_definition_count = 0;
-
-    for result in results {
-        references_count += 1;
-        match &result.outcome {
-            RetrievalOutcome::Match { best_match } => {
-                included_count += 1;
-                retrieved_count += 1;
-                let multiple = result.retrieved_definitions.len() > 1;
-                if *best_match == 0 {
-                    top_match_count += 1;
-                    if multiple {
-                        ranking_involved_top_match_count += 1;
-                    }
-                } else {
-                    non_top_match_count += 1;
-                }
-            }
-            RetrievalOutcome::NoMatch => {
-                if result.lsp_definitions.is_empty() {
-                    included_count += 1;
-                    both_absent_count += 1;
-                } else {
-                    no_match_count += 1;
-                    if result.retrieved_definitions.is_empty() {
-                        no_match_none_retrieved += 1;
-                    } else {
-                        no_match_wrong_retrieval += 1;
-                    }
-                }
-            }
-            RetrievalOutcome::NoMatchDueToExternalLspDefinitions => {
-                expected_no_match_count += 1;
-                external_definition_count += 1;
+    let mut df = df_task.await?;
+
+    let run_id = format!(
+        "{}-{}",
+        worktree_path.file_stem().unwrap_or_default().display(),
+        chrono::Local::now().format("%Y%m%d_%H%M%S")
+    );
+    let run_dir = target_cli_dir.join(run_id);
+    fs::create_dir(&run_dir).unwrap();
+
+    let parquet_path = run_dir.join("stats.parquet");
+    let mut parquet_file = fs::File::create(&parquet_path)?;
+
+    ParquetWriter::new(&mut parquet_file)
+        .finish(&mut df)
+        .unwrap();
+
+    let stats = SummaryStats::from_dataframe(df)?;
+
+    let stats_path = run_dir.join("stats.txt");
+    fs::write(&stats_path, format!("{}", stats))?;
+
+    println!("{}", stats);
+    println!("\nWrote:");
+    println!("- {}", relativize_path(&parquet_path).display());
+    println!("- {}", relativize_path(&stats_path).display());
+    println!("- {}", relativize_path(&lsp_definitions_path).display());
+
+    Ok("".to_string())
+}
+
+async fn build_dataframe(
+    mut output_rx: mpsc::UnboundedReceiver<ReferenceRetrievalResult>,
+) -> Result<DataFrame> {
+    use soa_rs::{Soa, Soars};
+
+    #[derive(Default, Soars)]
+    struct Row {
+        ref_id: u32,
+        cursor_path: String,
+        cursor_row: u32,
+        cursor_column: u32,
+        cursor_identifier: String,
+        gold_in_excerpt: bool,
+        gold_path: String,
+        gold_row: u32,
+        gold_column: u32,
+        gold_is_external: bool,
+        candidate_count: u32,
+        candidate_path: Option<String>,
+        candidate_row: Option<u32>,
+        candidate_column: Option<u32>,
+        candidate_is_gold: Option<bool>,
+        candidate_rank: Option<u32>,
+        candidate_is_same_file: Option<bool>,
+        candidate_is_referenced_nearby: Option<bool>,
+        candidate_is_referenced_in_breadcrumb: Option<bool>,
+        candidate_reference_count: Option<u32>,
+        candidate_same_file_declaration_count: Option<u32>,
+        candidate_declaration_count: Option<u32>,
+        candidate_reference_line_distance: Option<u32>,
+        candidate_declaration_line_distance: Option<u32>,
+        candidate_excerpt_vs_item_jaccard: Option<f32>,
+        candidate_excerpt_vs_signature_jaccard: Option<f32>,
+        candidate_adjacent_vs_item_jaccard: Option<f32>,
+        candidate_adjacent_vs_signature_jaccard: Option<f32>,
+        candidate_excerpt_vs_item_weighted_overlap: Option<f32>,
+        candidate_excerpt_vs_signature_weighted_overlap: Option<f32>,
+        candidate_adjacent_vs_item_weighted_overlap: Option<f32>,
+        candidate_adjacent_vs_signature_weighted_overlap: Option<f32>,
+        candidate_path_import_match_count: Option<u32>,
+        candidate_wildcard_path_import_match_count: Option<u32>,
+        candidate_import_similarity: Option<f32>,
+        candidate_max_import_similarity: Option<f32>,
+        candidate_normalized_import_similarity: Option<f32>,
+        candidate_wildcard_import_similarity: Option<f32>,
+        candidate_normalized_wildcard_import_similarity: Option<f32>,
+        candidate_included_by_others: Option<u32>,
+        candidate_includes_others: Option<u32>,
+    }
+    let mut rows = Soa::<Row>::new();
+    let mut next_ref_id = 0;
+
+    while let Some(result) = output_rx.next().await {
+        let mut gold_is_external = false;
+        let mut gold_in_excerpt = false;
+        let cursor_path = result.cursor_path.as_unix_str();
+        let cursor_row = result.cursor_point.row + 1;
+        let cursor_column = result.cursor_point.column + 1;
+        let cursor_identifier = result.identifier.name.to_string();
+        let ref_id = next_ref_id;
+        next_ref_id += 1;
+
+        for lsp_definition in result.lsp_definitions {
+            let SourceRange {
+                path: gold_path,
+                point_range: gold_point_range,
+                offset_range: gold_offset_range,
+            } = lsp_definition;
+            let lsp_point_range =
+                SerializablePoint::into_language_point_range(gold_point_range.clone());
+
+            gold_is_external = gold_is_external
+                || gold_path.is_absolute()
+                || gold_path
+                    .components()
+                    .any(|component| component.as_os_str() == "node_modules");
+
+            gold_in_excerpt = gold_in_excerpt
+                || result.excerpt_range.as_ref().is_some_and(|excerpt_range| {
+                    excerpt_range.contains_inclusive(&gold_offset_range)
+                });
+
+            let gold_row = gold_point_range.start.row;
+            let gold_column = gold_point_range.start.column;
+            let candidate_count = result.retrieved_definitions.len() as u32;
+
+            for (candidate_rank, retrieved_definition) in
+                result.retrieved_definitions.iter().enumerate()
+            {
+                let candidate_is_gold = gold_path.as_path()
+                    == retrieved_definition.path.as_std_path()
+                    && retrieved_definition
+                        .range
+                        .contains_inclusive(&lsp_point_range);
+
+                let candidate_row = retrieved_definition.range.start.row + 1;
+                let candidate_column = retrieved_definition.range.start.column + 1;
+
+                let DeclarationScoreComponents {
+                    is_same_file,
+                    is_referenced_nearby,
+                    is_referenced_in_breadcrumb,
+                    reference_count,
+                    same_file_declaration_count,
+                    declaration_count,
+                    reference_line_distance,
+                    declaration_line_distance,
+                    excerpt_vs_item_jaccard,
+                    excerpt_vs_signature_jaccard,
+                    adjacent_vs_item_jaccard,
+                    adjacent_vs_signature_jaccard,
+                    excerpt_vs_item_weighted_overlap,
+                    excerpt_vs_signature_weighted_overlap,
+                    adjacent_vs_item_weighted_overlap,
+                    adjacent_vs_signature_weighted_overlap,
+                    path_import_match_count,
+                    wildcard_path_import_match_count,
+                    import_similarity,
+                    max_import_similarity,
+                    normalized_import_similarity,
+                    wildcard_import_similarity,
+                    normalized_wildcard_import_similarity,
+                    included_by_others,
+                    includes_others,
+                } = retrieved_definition.components;
+
+                rows.push(Row {
+                    ref_id,
+                    cursor_path: cursor_path.to_string(),
+                    cursor_row,
+                    cursor_column,
+                    cursor_identifier: cursor_identifier.clone(),
+                    gold_in_excerpt,
+                    gold_path: gold_path.to_string_lossy().to_string(),
+                    gold_row,
+                    gold_column,
+                    gold_is_external,
+                    candidate_count,
+                    candidate_path: Some(retrieved_definition.path.as_unix_str().to_string()),
+                    candidate_row: Some(candidate_row),
+                    candidate_column: Some(candidate_column),
+                    candidate_is_gold: Some(candidate_is_gold),
+                    candidate_rank: Some(candidate_rank as u32),
+                    candidate_is_same_file: Some(is_same_file),
+                    candidate_is_referenced_nearby: Some(is_referenced_nearby),
+                    candidate_is_referenced_in_breadcrumb: Some(is_referenced_in_breadcrumb),
+                    candidate_reference_count: Some(reference_count as u32),
+                    candidate_same_file_declaration_count: Some(same_file_declaration_count as u32),
+                    candidate_declaration_count: Some(declaration_count as u32),
+                    candidate_reference_line_distance: Some(reference_line_distance),
+                    candidate_declaration_line_distance: Some(declaration_line_distance),
+                    candidate_excerpt_vs_item_jaccard: Some(excerpt_vs_item_jaccard),
+                    candidate_excerpt_vs_signature_jaccard: Some(excerpt_vs_signature_jaccard),
+                    candidate_adjacent_vs_item_jaccard: Some(adjacent_vs_item_jaccard),
+                    candidate_adjacent_vs_signature_jaccard: Some(adjacent_vs_signature_jaccard),
+                    candidate_excerpt_vs_item_weighted_overlap: Some(
+                        excerpt_vs_item_weighted_overlap,
+                    ),
+                    candidate_excerpt_vs_signature_weighted_overlap: Some(
+                        excerpt_vs_signature_weighted_overlap,
+                    ),
+                    candidate_adjacent_vs_item_weighted_overlap: Some(
+                        adjacent_vs_item_weighted_overlap,
+                    ),
+                    candidate_adjacent_vs_signature_weighted_overlap: Some(
+                        adjacent_vs_signature_weighted_overlap,
+                    ),
+                    candidate_path_import_match_count: Some(path_import_match_count as u32),
+                    candidate_wildcard_path_import_match_count: Some(
+                        wildcard_path_import_match_count as u32,
+                    ),
+                    candidate_import_similarity: Some(import_similarity),
+                    candidate_max_import_similarity: Some(max_import_similarity),
+                    candidate_normalized_import_similarity: Some(normalized_import_similarity),
+                    candidate_wildcard_import_similarity: Some(wildcard_import_similarity),
+                    candidate_normalized_wildcard_import_similarity: Some(
+                        normalized_wildcard_import_similarity,
+                    ),
+                    candidate_included_by_others: Some(included_by_others as u32),
+                    candidate_includes_others: Some(includes_others as u32),
+                });
             }
-            RetrievalOutcome::ProbablyLocal => {
-                included_count += 1;
-                in_excerpt_count += 1;
+
+            if result.retrieved_definitions.is_empty() {
+                rows.push(Row {
+                    ref_id,
+                    cursor_path: cursor_path.to_string(),
+                    cursor_row,
+                    cursor_column,
+                    cursor_identifier: cursor_identifier.clone(),
+                    gold_in_excerpt,
+                    gold_path: gold_path.to_string_lossy().to_string(),
+                    gold_row,
+                    gold_column,
+                    gold_is_external,
+                    candidate_count,
+                    ..Default::default()
+                });
             }
         }
     }
+    let slices = rows.slices();
+
+    let RowSlices {
+        ref_id,
+        cursor_path,
+        cursor_row,
+        cursor_column,
+        cursor_identifier,
+        gold_in_excerpt,
+        gold_path,
+        gold_row,
+        gold_column,
+        gold_is_external,
+        candidate_path,
+        candidate_row,
+        candidate_column,
+        candidate_is_gold,
+        candidate_rank,
+        candidate_count,
+        candidate_is_same_file,
+        candidate_is_referenced_nearby,
+        candidate_is_referenced_in_breadcrumb,
+        candidate_reference_count,
+        candidate_same_file_declaration_count,
+        candidate_declaration_count,
+        candidate_reference_line_distance,
+        candidate_declaration_line_distance,
+        candidate_excerpt_vs_item_jaccard,
+        candidate_excerpt_vs_signature_jaccard,
+        candidate_adjacent_vs_item_jaccard,
+        candidate_adjacent_vs_signature_jaccard,
+        candidate_excerpt_vs_item_weighted_overlap,
+        candidate_excerpt_vs_signature_weighted_overlap,
+        candidate_adjacent_vs_item_weighted_overlap,
+        candidate_adjacent_vs_signature_weighted_overlap,
+        candidate_path_import_match_count,
+        candidate_wildcard_path_import_match_count,
+        candidate_import_similarity,
+        candidate_max_import_similarity,
+        candidate_normalized_import_similarity,
+        candidate_wildcard_import_similarity,
+        candidate_normalized_wildcard_import_similarity,
+        candidate_included_by_others,
+        candidate_includes_others,
+    } = slices;
+
+    let df = DataFrame::new(vec![
+        Series::new(PlSmallStr::from_str("ref_id"), ref_id).into(),
+        Series::new(PlSmallStr::from_str("cursor_path"), cursor_path).into(),
+        Series::new(PlSmallStr::from_str("cursor_row"), cursor_row).into(),
+        Series::new(PlSmallStr::from_str("cursor_column"), cursor_column).into(),
+        Series::new(PlSmallStr::from_str("cursor_identifier"), cursor_identifier).into(),
+        Series::new(PlSmallStr::from_str("gold_in_excerpt"), gold_in_excerpt).into(),
+        Series::new(PlSmallStr::from_str("gold_path"), gold_path).into(),
+        Series::new(PlSmallStr::from_str("gold_row"), gold_row).into(),
+        Series::new(PlSmallStr::from_str("gold_column"), gold_column).into(),
+        Series::new(PlSmallStr::from_str("gold_is_external"), gold_is_external).into(),
+        Series::new(PlSmallStr::from_str("candidate_count"), candidate_count).into(),
+        Series::new(PlSmallStr::from_str("candidate_path"), candidate_path).into(),
+        Series::new(PlSmallStr::from_str("candidate_row"), candidate_row).into(),
+        Series::new(PlSmallStr::from_str("candidate_column"), candidate_column).into(),
+        Series::new(PlSmallStr::from_str("candidate_is_gold"), candidate_is_gold).into(),
+        Series::new(PlSmallStr::from_str("candidate_rank"), candidate_rank).into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_is_same_file"),
+            candidate_is_same_file,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_is_referenced_nearby"),
+            candidate_is_referenced_nearby,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_is_referenced_in_breadcrumb"),
+            candidate_is_referenced_in_breadcrumb,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_reference_count"),
+            candidate_reference_count,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_same_file_declaration_count"),
+            candidate_same_file_declaration_count,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_declaration_count"),
+            candidate_declaration_count,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_reference_line_distance"),
+            candidate_reference_line_distance,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_declaration_line_distance"),
+            candidate_declaration_line_distance,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_excerpt_vs_item_jaccard"),
+            candidate_excerpt_vs_item_jaccard,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_excerpt_vs_signature_jaccard"),
+            candidate_excerpt_vs_signature_jaccard,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_adjacent_vs_item_jaccard"),
+            candidate_adjacent_vs_item_jaccard,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_adjacent_vs_signature_jaccard"),
+            candidate_adjacent_vs_signature_jaccard,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_excerpt_vs_item_weighted_overlap"),
+            candidate_excerpt_vs_item_weighted_overlap,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_excerpt_vs_signature_weighted_overlap"),
+            candidate_excerpt_vs_signature_weighted_overlap,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_adjacent_vs_item_weighted_overlap"),
+            candidate_adjacent_vs_item_weighted_overlap,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_adjacent_vs_signature_weighted_overlap"),
+            candidate_adjacent_vs_signature_weighted_overlap,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_path_import_match_count"),
+            candidate_path_import_match_count,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_wildcard_path_import_match_count"),
+            candidate_wildcard_path_import_match_count,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_import_similarity"),
+            candidate_import_similarity,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_max_import_similarity"),
+            candidate_max_import_similarity,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_normalized_import_similarity"),
+            candidate_normalized_import_similarity,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_wildcard_import_similarity"),
+            candidate_wildcard_import_similarity,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_normalized_wildcard_import_similarity"),
+            candidate_normalized_wildcard_import_similarity,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_included_by_others"),
+            candidate_included_by_others,
+        )
+        .into(),
+        Series::new(
+            PlSmallStr::from_str("candidate_includes_others"),
+            candidate_includes_others,
+        )
+        .into(),
+    ])?;
+
+    Ok(df)
+}
+
+fn relativize_path(path: &Path) -> &Path {
+    path.strip_prefix(std::env::current_dir().unwrap())
+        .unwrap_or(path)
+}
+
+struct SummaryStats {
+    references_count: u32,
+    retrieved_count: u32,
+    top_match_count: u32,
+    non_top_match_count: u32,
+    ranking_involved_top_match_count: u32,
+    missing_none_retrieved: u32,
+    missing_wrong_retrieval: u32,
+    missing_external: u32,
+    in_excerpt_count: u32,
+}
 
-    fn count_and_percentage(part: usize, total: usize) -> String {
+impl SummaryStats {
+    fn from_dataframe(df: DataFrame) -> Result<Self> {
+        // TODO: use lazy more
+        let unique_refs =
+            df.unique::<(), ()>(Some(&["ref_id".into()]), UniqueKeepStrategy::Any, None)?;
+        let references_count = unique_refs.height() as u32;
+
+        let gold_mask = df.column("candidate_is_gold")?.bool()?;
+        let gold_df = df.filter(&gold_mask)?;
+        let retrieved_count = gold_df.height() as u32;
+
+        let top_match_mask = gold_df.column("candidate_rank")?.u32()?.equal(0);
+        let top_match_df = gold_df.filter(&top_match_mask)?;
+        let top_match_count = top_match_df.height() as u32;
+
+        let ranking_involved_top_match_count = top_match_df
+            .column("candidate_count")?
+            .u32()?
+            .gt(1)
+            .sum()
+            .unwrap_or_default();
+
+        let non_top_match_count = (!top_match_mask).sum().unwrap_or(0);
+
+        let not_retrieved_df = df
+            .lazy()
+            .group_by(&[col("ref_id"), col("candidate_count")])
+            .agg(&[
+                col("candidate_is_gold")
+                    .fill_null(false)
+                    .sum()
+                    .alias("gold_count"),
+                col("gold_in_excerpt").sum().alias("gold_in_excerpt_count"),
+                col("gold_is_external")
+                    .sum()
+                    .alias("gold_is_external_count"),
+            ])
+            .filter(col("gold_count").eq(lit(0)))
+            .collect()?;
+
+        let in_excerpt_mask = not_retrieved_df
+            .column("gold_in_excerpt_count")?
+            .u32()?
+            .gt(0);
+        let in_excerpt_count = in_excerpt_mask.sum().unwrap_or(0);
+
+        let missing_df = not_retrieved_df.filter(&!in_excerpt_mask)?;
+
+        let missing_none_retrieved_mask = missing_df.column("candidate_count")?.u32()?.equal(0);
+        let missing_none_retrieved = missing_none_retrieved_mask.sum().unwrap_or(0);
+        let external_mask = missing_df.column("gold_is_external_count")?.u32()?.gt(0);
+        let missing_external = (missing_none_retrieved_mask & external_mask)
+            .sum()
+            .unwrap_or(0);
+
+        let missing_wrong_retrieval = missing_df
+            .column("candidate_count")?
+            .u32()?
+            .gt(0)
+            .sum()
+            .unwrap_or(0);
+
+        Ok(SummaryStats {
+            references_count,
+            retrieved_count,
+            top_match_count,
+            non_top_match_count,
+            ranking_involved_top_match_count,
+            missing_none_retrieved,
+            missing_wrong_retrieval,
+            missing_external,
+            in_excerpt_count,
+        })
+    }
+
+    fn count_and_percentage(part: u32, total: u32) -> String {
         format!("{} ({:.2}%)", part, (part as f64 / total as f64) * 100.0)
     }
+}
 
-    println!("");
-    println!("╮ references: {}", references_count);
-    println!(
-        "├─╮ included: {}",
-        count_and_percentage(included_count, references_count),
-    );
-    println!(
-        "│ ├─╮ retrieved: {}",
-        count_and_percentage(retrieved_count, references_count)
-    );
-    println!(
-        "│ │ ├─╮ top match : {}",
-        count_and_percentage(top_match_count, retrieved_count)
-    );
-    println!(
-        "│ │ │ ╰─╴ involving ranking: {}",
-        count_and_percentage(ranking_involved_top_match_count, top_match_count)
-    );
-    println!(
-        "│ │ ╰─╴ non-top match: {}",
-        count_and_percentage(non_top_match_count, retrieved_count)
-    );
-    println!(
-        "│ ├─╴ both absent: {}",
-        count_and_percentage(both_absent_count, included_count)
-    );
-    println!(
-        "│ ╰─╴ in excerpt: {}",
-        count_and_percentage(in_excerpt_count, included_count)
-    );
-    println!(
-        "├─╮ no match: {}",
-        count_and_percentage(no_match_count, references_count)
-    );
-    println!(
-        "│ ├─╴ none retrieved: {}",
-        count_and_percentage(no_match_none_retrieved, no_match_count)
-    );
-    println!(
-        "│ ╰─╴ wrong retrieval: {}",
-        count_and_percentage(no_match_wrong_retrieval, no_match_count)
-    );
-    println!(
-        "╰─╮ expected no match: {}",
-        count_and_percentage(expected_no_match_count, references_count)
-    );
-    println!(
-        "  ╰─╴ external definition: {}",
-        count_and_percentage(external_definition_count, expected_no_match_count)
-    );
+impl std::fmt::Display for SummaryStats {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        let included = self.in_excerpt_count + self.retrieved_count;
+        let missing = self.references_count - included;
+        writeln!(f)?;
+        writeln!(f, "╮ references: {}", self.references_count)?;
+        writeln!(
+            f,
+            "├─╮ included: {}",
+            Self::count_and_percentage(included, self.references_count),
+        )?;
+        writeln!(
+            f,
+            "│ ├─╮ retrieved: {}",
+            Self::count_and_percentage(self.retrieved_count, self.references_count)
+        )?;
+        writeln!(
+            f,
+            "│ │ ├─╮ top match : {}",
+            Self::count_and_percentage(self.top_match_count, self.retrieved_count)
+        )?;
+        writeln!(
+            f,
+            "│ │ │ ╰─╴ involving ranking: {}",
+            Self::count_and_percentage(self.ranking_involved_top_match_count, self.top_match_count)
+        )?;
+        writeln!(
+            f,
+            "│ │ ╰─╴ non-top match: {}",
+            Self::count_and_percentage(self.non_top_match_count, self.retrieved_count)
+        )?;
+        writeln!(
+            f,
+            "│ ╰─╴ in excerpt: {}",
+            Self::count_and_percentage(self.in_excerpt_count, included)
+        )?;
+        writeln!(
+            f,
+            "╰─╮ missing: {}",
+            Self::count_and_percentage(missing, self.references_count)
+        )?;
+        writeln!(
+            f,
+            "  ├─╮ none retrieved: {}",
+            Self::count_and_percentage(self.missing_none_retrieved, missing)
+        )?;
+        writeln!(
+            f,
+            "  │ ╰─╴ external (expected): {}",
+            Self::count_and_percentage(self.missing_external, missing)
+        )?;
+        writeln!(
+            f,
+            "  ╰─╴ wrong retrieval: {}",
+            Self::count_and_percentage(self.missing_wrong_retrieval, missing)
+        )?;
+        Ok(())
+    }
+}
 
-    println!("");
-    println!("LSP definition cache at {}", lsp_definitions_path.display());
+#[derive(Debug)]
+struct ReferenceRetrievalResult {
+    cursor_path: Arc<RelPath>,
+    cursor_point: Point,
+    identifier: Identifier,
+    excerpt_range: Option<Range<usize>>,
+    lsp_definitions: Vec<SourceRange>,
+    retrieved_definitions: Vec<RetrievedDefinition>,
+}
 
-    Ok("".to_string())
+#[derive(Debug)]
+struct RetrievedDefinition {
+    path: Arc<RelPath>,
+    range: Range<Point>,
+    score: f32,
+    #[allow(dead_code)]
+    retrieval_score: f32,
+    #[allow(dead_code)]
+    components: DeclarationScoreComponents,
 }
 
 struct RetrieveResult {
@@ -828,39 +1253,3 @@ impl From<SerializablePoint> for Point {
         }
     }
 }
-
-#[derive(Debug)]
-struct RetrievalStatsResult {
-    outcome: RetrievalOutcome,
-    #[allow(dead_code)]
-    path: Arc<RelPath>,
-    #[allow(dead_code)]
-    identifier: Identifier,
-    #[allow(dead_code)]
-    point: Point,
-    #[allow(dead_code)]
-    lsp_definitions: Vec<SourceRange>,
-    retrieved_definitions: Vec<RetrievedDefinition>,
-}
-
-#[derive(Debug)]
-enum RetrievalOutcome {
-    Match {
-        /// Lowest index within retrieved_definitions that matches an LSP definition.
-        best_match: usize,
-    },
-    ProbablyLocal,
-    NoMatch,
-    NoMatchDueToExternalLspDefinitions,
-}
-
-#[derive(Debug)]
-struct RetrievedDefinition {
-    path: Arc<RelPath>,
-    range: Range<Point>,
-    score: f32,
-    #[allow(dead_code)]
-    retrieval_score: f32,
-    #[allow(dead_code)]
-    components: DeclarationScoreComponents,
-}
  
  
  
    
    @@ -14,6 +14,7 @@ accepted = [
     "Unicode-3.0",
     "OpenSSL",
     "Zlib",
+    "BSL-1.0",
 ]
 
 [procinfo.clarify]
  
  
  
    
    @@ -38,9 +38,9 @@ bit-set = { version = "0.8", default-features = false, features = ["std"] }
 bit-vec = { version = "0.8", default-features = false, features = ["std"] }
 bitflags = { version = "2", default-features = false, features = ["serde", "std"] }
 bstr = { version = "1" }
-bytemuck = { version = "1", default-features = false, features = ["aarch64_simd", "derive", "extern_crate_alloc"] }
+bytemuck = { version = "1", default-features = false, features = ["aarch64_simd", "derive", "extern_crate_alloc", "must_cast"] }
 byteorder = { version = "1" }
-bytes = { version = "1" }
+bytes = { version = "1", features = ["serde"] }
 chrono = { version = "0.4", features = ["serde"] }
 clap = { version = "4", features = ["cargo", "derive", "string", "wrap_help"] }
 clap_builder = { version = "4", default-features = false, features = ["cargo", "color", "std", "string", "suggestions", "usage", "wrap_help"] }
@@ -55,6 +55,8 @@ either = { version = "1", features = ["serde", "use_std"] }
 euclid = { version = "0.22" }
 event-listener = { version = "5" }
 event-listener-strategy = { version = "0.5" }
+flate2 = { version = "1", features = ["zlib-rs"] }
+foldhash = { version = "0.1" }
 form_urlencoded = { version = "1" }
 futures = { version = "0.3", features = ["io-compat"] }
 futures-channel = { version = "0.3", features = ["sink"] }
@@ -67,7 +69,7 @@ futures-util = { version = "0.3", features = ["channel", "io-compat", "sink"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["std"] }
 half = { version = "2", features = ["bytemuck", "num-traits", "rand_distr", "use-intrinsics"] }
 handlebars = { version = "4", features = ["rust-embed"] }
-hashbrown-3575ec1268b04181 = { package = "hashbrown", version = "0.15", features = ["serde"] }
+hashbrown-3575ec1268b04181 = { package = "hashbrown", version = "0.15", features = ["rayon", "serde"] }
 hashbrown-582f2526e08bb6a0 = { package = "hashbrown", version = "0.14", features = ["raw"] }
 hmac = { version = "0.12", default-features = false, features = ["reset"] }
 hyper = { version = "0.14", features = ["client", "http1", "http2", "runtime", "server", "stream"] }
@@ -105,6 +107,8 @@ regalloc2 = { version = "0.11", features = ["checker", "enable-serde"] }
 regex = { version = "1" }
 regex-automata = { version = "0.4" }
 regex-syntax = { version = "0.8" }
+reqwest = { version = "0.12", default-features = false, features = ["blocking", "http2", "json", "rustls-tls-native-roots", "stream"] }
+ring = { version = "0.17", features = ["std"] }
 rust_decimal = { version = "1", default-features = false, features = ["maths", "serde", "std"] }
 rustc-hash = { version = "1" }
 rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "net"] }
@@ -129,7 +133,7 @@ thiserror = { version = "2" }
 time = { version = "0.3", features = ["local-offset", "macros", "serde-well-known"] }
 tokio = { version = "1", features = ["full"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["tls12"] }
-tokio-util = { version = "0.7", features = ["codec", "compat", "io"] }
+tokio-util = { version = "0.7", features = ["codec", "compat", "io-util", "rt"] }
 toml_datetime = { version = "0.6", default-features = false, features = ["serde"] }
 toml_edit = { version = "0.22", default-features = false, features = ["display", "parse", "serde"] }
 tracing = { version = "0.1", features = ["log"] }
@@ -167,9 +171,9 @@ bit-set = { version = "0.8", default-features = false, features = ["std"] }
 bit-vec = { version = "0.8", default-features = false, features = ["std"] }
 bitflags = { version = "2", default-features = false, features = ["serde", "std"] }
 bstr = { version = "1" }
-bytemuck = { version = "1", default-features = false, features = ["aarch64_simd", "derive", "extern_crate_alloc"] }
+bytemuck = { version = "1", default-features = false, features = ["aarch64_simd", "derive", "extern_crate_alloc", "must_cast"] }
 byteorder = { version = "1" }
-bytes = { version = "1" }
+bytes = { version = "1", features = ["serde"] }
 cc = { version = "1", default-features = false, features = ["parallel"] }
 chrono = { version = "0.4", features = ["serde"] }
 clap = { version = "4", features = ["cargo", "derive", "string", "wrap_help"] }
@@ -185,6 +189,8 @@ either = { version = "1", features = ["serde", "use_std"] }
 euclid = { version = "0.22" }
 event-listener = { version = "5" }
 event-listener-strategy = { version = "0.5" }
+flate2 = { version = "1", features = ["zlib-rs"] }
+foldhash = { version = "0.1" }
 form_urlencoded = { version = "1" }
 futures = { version = "0.3", features = ["io-compat"] }
 futures-channel = { version = "0.3", features = ["sink"] }
@@ -197,7 +203,7 @@ futures-util = { version = "0.3", features = ["channel", "io-compat", "sink"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["std"] }
 half = { version = "2", features = ["bytemuck", "num-traits", "rand_distr", "use-intrinsics"] }
 handlebars = { version = "4", features = ["rust-embed"] }
-hashbrown-3575ec1268b04181 = { package = "hashbrown", version = "0.15", features = ["serde"] }
+hashbrown-3575ec1268b04181 = { package = "hashbrown", version = "0.15", features = ["rayon", "serde"] }
 hashbrown-582f2526e08bb6a0 = { package = "hashbrown", version = "0.14", features = ["raw"] }
 heck = { version = "0.4", features = ["unicode"] }
 hmac = { version = "0.12", default-features = false, features = ["reset"] }
@@ -240,6 +246,8 @@ regalloc2 = { version = "0.11", features = ["checker", "enable-serde"] }
 regex = { version = "1" }
 regex-automata = { version = "0.4" }
 regex-syntax = { version = "0.8" }
+reqwest = { version = "0.12", default-features = false, features = ["blocking", "http2", "json", "rustls-tls-native-roots", "stream"] }
+ring = { version = "0.17", features = ["std"] }
 rust_decimal = { version = "1", default-features = false, features = ["maths", "serde", "std"] }
 rustc-hash = { version = "1" }
 rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "net"] }
@@ -269,7 +277,7 @@ time = { version = "0.3", features = ["local-offset", "macros", "serde-well-know
 time-macros = { version = "0.2", default-features = false, features = ["formatting", "parsing", "serde"] }
 tokio = { version = "1", features = ["full"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["tls12"] }
-tokio-util = { version = "0.7", features = ["codec", "compat", "io"] }
+tokio-util = { version = "0.7", features = ["codec", "compat", "io-util", "rt"] }
 toml_datetime = { version = "0.6", default-features = false, features = ["serde"] }
 toml_edit = { version = "0.22", default-features = false, features = ["display", "parse", "serde"] }
 tracing = { version = "0.1", features = ["log"] }
@@ -287,8 +295,6 @@ wasmtime-environ = { version = "29", default-features = false, features = ["comp
 codespan-reporting = { version = "0.12" }
 core-foundation = { version = "0.9" }
 core-foundation-sys = { version = "0.8" }
-flate2 = { version = "1" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
 hyper-rustls = { version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
@@ -301,13 +307,11 @@ objc2-foundation = { version = "0.3", default-features = false, features = ["NSA
 objc2-metal = { version = "0.3" }
 object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "process"] }
-rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 security-framework = { version = "3", features = ["OSX_10_14"] }
 security-framework-sys = { version = "2", features = ["OSX_10_14"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -317,8 +321,6 @@ tower = { version = "0.5", default-features = false, features = ["timeout", "uti
 codespan-reporting = { version = "0.12" }
 core-foundation = { version = "0.9" }
 core-foundation-sys = { version = "0.8" }
-flate2 = { version = "1" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
 hyper-rustls = { version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
@@ -332,13 +334,11 @@ objc2-metal = { version = "0.3" }
 object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
 proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "process"] }
-rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 security-framework = { version = "3", features = ["OSX_10_14"] }
 security-framework-sys = { version = "2", features = ["OSX_10_14"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -348,8 +348,6 @@ tower = { version = "0.5", default-features = false, features = ["timeout", "uti
 codespan-reporting = { version = "0.12" }
 core-foundation = { version = "0.9" }
 core-foundation-sys = { version = "0.8" }
-flate2 = { version = "1" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
 hyper-rustls = { version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
@@ -362,13 +360,11 @@ objc2-foundation = { version = "0.3", default-features = false, features = ["NSA
 objc2-metal = { version = "0.3" }
 object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "process"] }
-rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 security-framework = { version = "3", features = ["OSX_10_14"] }
 security-framework-sys = { version = "2", features = ["OSX_10_14"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -378,8 +374,6 @@ tower = { version = "0.5", default-features = false, features = ["timeout", "uti
 codespan-reporting = { version = "0.12" }
 core-foundation = { version = "0.9" }
 core-foundation-sys = { version = "0.8" }
-flate2 = { version = "1" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
 hyper-rustls = { version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
@@ -393,13 +387,11 @@ objc2-metal = { version = "0.3" }
 object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
 proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "process"] }
-rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 security-framework = { version = "3", features = ["OSX_10_14"] }
 security-framework-sys = { version = "2", features = ["OSX_10_14"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -413,9 +405,7 @@ bytemuck = { version = "1", default-features = false, features = ["min_const_gen
 cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
 codespan-reporting = { version = "0.12" }
 crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
-flate2 = { version = "1" }
 flume = { version = "0.11" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
@@ -436,13 +426,11 @@ proc-macro2 = { version = "1", features = ["span-locations"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
 quote = { version = "1" }
 rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "pipe", "process", "shm", "system"] }
 rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "pty", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 smallvec = { version = "1", default-features = false, features = ["write"] }
 syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -460,9 +448,7 @@ bytemuck = { version = "1", default-features = false, features = ["min_const_gen
 cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
 codespan-reporting = { version = "0.12" }
 crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
-flate2 = { version = "1" }
 flume = { version = "0.11" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
@@ -482,12 +468,10 @@ object = { version = "0.36", default-features = false, features = ["archive", "r
 proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
 rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "pipe", "process", "shm", "system"] }
 rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "pty", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 smallvec = { version = "1", default-features = false, features = ["write"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -506,9 +490,7 @@ bytemuck = { version = "1", default-features = false, features = ["min_const_gen
 cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
 codespan-reporting = { version = "0.12" }
 crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
-flate2 = { version = "1" }
 flume = { version = "0.11" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
@@ -529,13 +511,11 @@ proc-macro2 = { version = "1", features = ["span-locations"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
 quote = { version = "1" }
 rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "pipe", "process", "shm", "system"] }
 rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "pty", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 smallvec = { version = "1", default-features = false, features = ["write"] }
 syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -553,9 +533,7 @@ bytemuck = { version = "1", default-features = false, features = ["min_const_gen
 cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
 codespan-reporting = { version = "0.12" }
 crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
-flate2 = { version = "1" }
 flume = { version = "0.11" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
@@ -575,12 +553,10 @@ object = { version = "0.36", default-features = false, features = ["archive", "r
 proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
 rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "pipe", "process", "shm", "system"] }
 rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "pty", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 smallvec = { version = "1", default-features = false, features = ["write"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -592,18 +568,14 @@ zeroize = { version = "1", features = ["zeroize_derive"] }
 zvariant = { version = "5", features = ["enumflags2", "gvariant", "url"] }
 
 [target.x86_64-pc-windows-msvc.dependencies]
-flate2 = { version = "1" }
 flume = { version = "0.11" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
 hyper-rustls = { version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
 livekit-runtime = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d" }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "fs", "net"] }
 scopeguard = { version = "1" }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -618,19 +590,15 @@ windows-sys-c8eced492e86ede7 = { package = "windows-sys", version = "0.48", feat
 windows-sys-d4189bed749088b6 = { package = "windows-sys", version = "0.61", features = ["Wdk_Foundation", "Wdk_Storage_FileSystem", "Win32_Globalization", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Com", "Win32_System_IO", "Win32_System_LibraryLoader", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Shell"] }
 
 [target.x86_64-pc-windows-msvc.build-dependencies]
-flate2 = { version = "1" }
 flume = { version = "0.11" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
 hyper-rustls = { version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
 livekit-runtime = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d" }
 proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "fs", "net"] }
 scopeguard = { version = "1" }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -652,9 +620,7 @@ bytemuck = { version = "1", default-features = false, features = ["min_const_gen
 cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
 codespan-reporting = { version = "0.12" }
 crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
-flate2 = { version = "1" }
 flume = { version = "0.11" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
@@ -675,13 +641,11 @@ proc-macro2 = { version = "1", features = ["span-locations"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
 quote = { version = "1" }
 rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "pipe", "process", "shm", "system"] }
 rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "pty", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 smallvec = { version = "1", default-features = false, features = ["write"] }
 syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }
@@ -699,9 +663,7 @@ bytemuck = { version = "1", default-features = false, features = ["min_const_gen
 cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
 codespan-reporting = { version = "0.12" }
 crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
-flate2 = { version = "1" }
 flume = { version = "0.11" }
-foldhash = { version = "0.1", default-features = false, features = ["std"] }
 getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
 getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
 gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
@@ -721,12 +683,10 @@ object = { version = "0.36", default-features = false, features = ["archive", "r
 proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
 prost-5ef9efb8ec2df382 = { package = "prost", version = "0.12", features = ["prost-derive"] }
 rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
-ring = { version = "0.17", features = ["std"] }
 rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["event", "mm", "net", "param", "pipe", "process", "shm", "system"] }
 rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", default-features = false, features = ["event", "pipe", "process", "pty", "stdio", "termios", "time"] }
 scopeguard = { version = "1" }
 smallvec = { version = "1", default-features = false, features = ["write"] }
-sync_wrapper = { version = "1", default-features = false, features = ["futures"] }
 tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring"] }
 tokio-socks = { version = "0.5", features = ["futures-io"] }
 tokio-stream = { version = "0.1", features = ["fs"] }