diff --git a/Cargo.lock b/Cargo.lock index 535748314..e91be8604 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -156,9 +156,9 @@ checksum = "90c6333e01ba7235575b6ab53e5af10f1c327927fd97c36462917e289557ea64" [[package]] name = "anyhow" -version = "1.0.101" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "approx" @@ -198,9 +198,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ded5f9a03ac8f24d1b8a25101ee812cd32cdc8c50a4c50237de2c4915850e73" +checksum = "f9f3647c145568cec02c42054e07bdf9a5a698e15b466fb2341bfc393cd24aa5" dependencies = [ "rustversion", ] @@ -219,7 +219,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -582,6 +582,7 @@ version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06575e6a9673580f52661c92107baabffbf41e2141373441cbcdc47cb733003c" dependencies = [ + "brotli 7.0.0", "bzip2 0.5.2", "flate2", "futures-core", @@ -595,9 +596,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ "async-task", "concurrent-queue", @@ -661,11 +662,11 @@ dependencies = [ "Inflector", "async-graphql-parser", "darling 0.23.0", - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.5.0", "proc-macro2", "quote", "strum 0.27.2", - "syn 2.0.114", + "syn 2.0.117", "thiserror 2.0.18", ] @@ -706,7 +707,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.1.3", + "rustix 1.1.4", "slab", "windows-sys 0.61.2", ] @@ -746,7 +747,7 @@ dependencies = [ "cfg-if", "event-listener 5.4.1", "futures-lite", - "rustix 1.1.3", + "rustix 1.1.4", ] [[package]] @@ -757,7 +758,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -772,7 +773,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.1.3", + "rustix 1.1.4", "signal-hook-registry", "slab", "windows-sys 0.61.2", @@ -825,7 +826,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -842,7 +843,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -987,9 +988,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.15.4" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7b6141e96a8c160799cc2d5adecd5cbbe5054cb8c7c4af53da0f83bb7ad256" +checksum = "94bffc006df10ac2a68c83692d734a465f8ee6c5b384d8545a636f81d858f4bf" dependencies = [ "aws-lc-sys", "untrusted 0.7.1", @@ -998,9 +999,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c34dda4df7017c8db52132f0f8a2e0f8161649d15723ed63fc00c82d0f2081a" +checksum = "4321e568ed89bb5a7d291a7f37997c2c0df89809d7b6d12062c81ddb54aa782e" dependencies = [ "cc", "cmake", @@ -1197,7 +1198,7 @@ dependencies = [ "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-native-certs 0.8.3", "rustls-pki-types", "tokio", @@ -1359,6 +1360,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ "axum-core 0.5.6", + "axum-macros", + "base64 0.22.1", "bytes", "form_urlencoded", "futures-util", @@ -1377,8 +1380,10 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", + "sha1", "sync_wrapper", "tokio", + "tokio-tungstenite 0.28.0", "tower 0.5.3", "tower-layer", "tower-service", @@ -1424,6 +1429,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "backoff" version = "0.4.0" @@ -1541,9 +1557,9 @@ checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" dependencies = [ "serde_core", ] @@ -1669,7 +1685,7 @@ dependencies = [ "num", "pin-project-lite", "rand 0.9.2", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-native-certs 0.8.3", "rustls-pki-types", "serde", @@ -1681,7 +1697,7 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util", - "tonic 0.14.3", + "tonic 0.14.5", "tower-service", "url", "winapi", @@ -1695,7 +1711,7 @@ checksum = "85a885520bf6249ab931a764ffdb87b0ceef48e6e7d807cfdb21b751e086e1ad" dependencies = [ "prost 0.14.3", "prost-types 0.14.3", - "tonic 0.14.3", + "tonic 0.14.5", "tonic-prost", "ureq 3.2.0", ] @@ -1718,9 +1734,9 @@ dependencies = [ [[package]] name = "bon" -version = "3.8.2" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234655ec178edd82b891e262ea7cf71f6584bcd09eff94db786be23f1821825c" +checksum = "2d13a61f2963b88eef9c1be03df65d42f6996dfeac1054870d950fcf66686f83" dependencies = [ "bon-macros", "rustversion", @@ -1728,9 +1744,9 @@ dependencies = [ [[package]] name = "bon-macros" -version = "3.8.2" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ec27229c38ed0eb3c0feee3d2c1d6a4379ae44f418a29a658890e062d8f365" +checksum = "d314cc62af2b6b0c65780555abb4d02a03dd3b799cd42419044f0c38d99738c0" dependencies = [ "darling 0.23.0", "ident_case", @@ -1738,7 +1754,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -1758,10 +1774,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" dependencies = [ "once_cell", - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", +] + +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 4.0.3", ] [[package]] @@ -1772,7 +1799,17 @@ checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor", + "brotli-decompressor 5.0.0", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", ] [[package]] @@ -1826,9 +1863,9 @@ checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "bytecheck" @@ -1836,8 +1873,20 @@ version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" dependencies = [ - "bytecheck_derive", - "ptr_meta", + "bytecheck_derive 0.6.12", + "ptr_meta 0.1.4", + "simdutf8", +] + +[[package]] +name = "bytecheck" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0caa33a2c0edca0419d15ac723dff03f1956f7978329b1e3b5fdaaaed9d3ca8b" +dependencies = [ + "bytecheck_derive 0.8.2", + "ptr_meta 0.3.1", + "rancor", "simdutf8", ] @@ -1852,6 +1901,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "bytecheck_derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "bytecount" version = "0.6.9" @@ -1974,9 +2034,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.55" +version = "1.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" dependencies = [ "find-msvc-tools", "jobserver", @@ -2371,6 +2431,19 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + [[package]] name = "crossbeam-channel" version = "0.5.15" @@ -2450,7 +2523,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2515,7 +2588,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2529,7 +2602,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2542,7 +2615,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2553,7 +2626,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2564,7 +2637,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2575,7 +2648,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3079,7 +3152,7 @@ checksum = "ec6f637bce95efac05cdfb9b6c19579ed4aa5f6b94d951cfa5bb054b7bb4f730" dependencies = [ "datafusion-expr", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3324,7 +3397,7 @@ dependencies = [ "deluxe-macros", "once_cell", "proc-macro2", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3337,7 +3410,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3352,7 +3425,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3374,9 +3447,9 @@ checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" [[package]] name = "deranged" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc3dc5ad92c2e2d1c193bbbbdf2ea477cb81331de4f3103f267ca18368b988c4" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", "serde_core", @@ -3390,7 +3463,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3401,7 +3474,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3412,7 +3485,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3433,7 +3506,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3443,7 +3516,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3465,7 +3538,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.114", + "syn 2.0.117", "unicode-xid", ] @@ -3564,7 +3637,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3706,7 +3779,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3739,7 +3812,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3913,6 +3986,18 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "faststr" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca7d44d22004409a61c393afb3369c8f7bb74abcae49fe249ee01dcc3002113" +dependencies = [ + "bytes", + "rkyv 0.8.15", + "serde", + "simdutf8", +] + [[package]] name = "fax" version = "0.2.6" @@ -3930,7 +4015,7 @@ checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -4003,6 +4088,15 @@ dependencies = [ "zlib-rs", ] +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + [[package]] name = "float_next_after" version = "1.0.0" @@ -4109,9 +4203,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -4124,9 +4218,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -4134,15 +4228,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -4162,9 +4256,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-lite" @@ -4181,26 +4275,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-timer" @@ -4214,9 +4308,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -4226,7 +4320,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -4409,9 +4502,9 @@ dependencies = [ [[package]] name = "geographiclib-rs" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc8f647bd562db28a15e0dce4a77d89e3a78f6f85943e782418ebdbb420ea3c4" +checksum = "c5a7f08910fd98737a6eda7568e7c5e645093e073328eeef49758cfe8b0489c7" dependencies = [ "libm", ] @@ -4448,20 +4541,20 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", "rand_core 0.10.0", "wasip2", "wasip3", @@ -4533,9 +4626,9 @@ dependencies = [ [[package]] name = "google-cloud-aiplatform-v1" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8284c51a8f1f8cd0905303d3ccfab8484f0d42a79b5c1da4a3a3be08285176a1" +checksum = "ec31f835bc3cce6e67a36f80fc09885d85f6fcdea1c794db321b548b8a18ca71" dependencies = [ "async-trait", "bytes", @@ -4550,7 +4643,6 @@ dependencies = [ "google-cloud-type", "google-cloud-wkt", "lazy_static", - "reqwest 0.13.2", "serde", "serde_json", "serde_with", @@ -4559,9 +4651,9 @@ dependencies = [ [[package]] name = "google-cloud-api" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d899d2ca24e2f017dfe803f2b79cdf1479a3661789753e5c9de86f569e2c126b" +checksum = "5f90898c75e98534a2d1f4fe161551d00beb01b0d198df11836e0970dc896b11" dependencies = [ "bytes", "google-cloud-wkt", @@ -4572,9 +4664,9 @@ dependencies = [ [[package]] name = "google-cloud-auth" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e806615abbb009b47212a12d1ea0aa15aa3f07a3202f82d2067e3a78a4cbe5a7" +checksum = "36ad774d41426ab205eeec577540f209a5485c366814dd5c89a7e3018fe84e7c" dependencies = [ "async-trait", "aws-lc-rs", @@ -4585,7 +4677,7 @@ dependencies = [ "jsonwebtoken 10.3.0", "reqwest 0.13.2", "rustc_version", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-pki-types", "serde", "serde_json", @@ -4596,9 +4688,9 @@ dependencies = [ [[package]] name = "google-cloud-gax" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81f4d3c28009c5f7ea624468e280d4edc447e48cc5bde9f29d7a389295fb49bc" +checksum = "2973715fe664ecb0d883926c8b5f66cb9d52a44add1d0be1cad1907d832bf0af" dependencies = [ "base64 0.22.1", "bytes", @@ -4607,7 +4699,7 @@ dependencies = [ "google-cloud-wkt", "http 1.4.0", "pin-project", - "rand 0.9.2", + "rand 0.10.0", "serde", "serde_json", "thiserror 2.0.18", @@ -4616,9 +4708,9 @@ dependencies = [ [[package]] name = "google-cloud-gax-internal" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3243e16dfc4cf73e3bf3d4813e910d4b1f2ded87900b0bce78dd75c95cdaadf" +checksum = "598e5ffec2c1c9b43e83847b2badc0f128a03e541b75f1ecd8acf0a2605c40cf" dependencies = [ "bytes", "futures", @@ -4641,9 +4733,9 @@ dependencies = [ [[package]] name = "google-cloud-iam-v1" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4887dd50f1e7510e9c91b9581313827120f903c489426e15231f367ee191030c" +checksum = "b41025359d1f52c24966c24d5ecb7f91198ded13c9cbf57c2d2e735dae93c814" dependencies = [ "async-trait", "bytes", @@ -4652,7 +4744,6 @@ dependencies = [ "google-cloud-type", "google-cloud-wkt", "lazy_static", - "reqwest 0.13.2", "serde", "serde_json", "serde_with", @@ -4661,9 +4752,9 @@ dependencies = [ [[package]] name = "google-cloud-location" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd024c8eb53d94e45f0f032499f6de17e07d72d75759149b6d023d1eeda7a1ec" +checksum = "86c138736ce3dc6b2cf0eacf34d47c39364194ede3c02eb0f7786889b2ba024c" dependencies = [ "async-trait", "bytes", @@ -4671,7 +4762,6 @@ dependencies = [ "google-cloud-gax-internal", "google-cloud-wkt", "lazy_static", - "reqwest 0.13.2", "serde", "serde_json", "serde_with", @@ -4680,9 +4770,9 @@ dependencies = [ [[package]] name = "google-cloud-longrunning" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd5ac41700cf35600752386270a744345d550b843b5356feaa75064e97ceb94a" +checksum = "daafe6c2859976ca51571db6c7bbf96bdce0122e81e6854a6c62554c4f63bae8" dependencies = [ "async-trait", "bytes", @@ -4691,7 +4781,6 @@ dependencies = [ "google-cloud-rpc", "google-cloud-wkt", "lazy_static", - "reqwest 0.13.2", "serde", "serde_json", "serde_with", @@ -4700,9 +4789,9 @@ dependencies = [ [[package]] name = "google-cloud-lro" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52a26fb12ea9b67eab358dbb8dc5e22aac666cab947a10d15699ff95f203b87" +checksum = "7ef3969c85cf6b163c655f7ddcdee5bb5c3241f680ab648951239ef9cd4ffb0f" dependencies = [ "google-cloud-gax", "google-cloud-longrunning", @@ -4740,9 +4829,9 @@ dependencies = [ [[package]] name = "google-cloud-wkt" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f270e404be7ce76a3260abe0c3c71492ab2599ccd877f3253f3dd552f48cc9" +checksum = "a0ade65b0e4fa9cb4b6f147c8e726803bff453e3190910a53cbd3b0c019f5c2a" dependencies = [ "base64 0.22.1", "bytes", @@ -4804,6 +4893,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "halfbrown" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8588661a8607108a5ca69cab034063441a0413a0b041c13618a7dd348021ef6f" +dependencies = [ + "hashbrown 0.14.5", + "serde", +] + [[package]] name = "hash32" version = "0.1.1" @@ -4859,6 +4958,7 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash", + "serde", ] [[package]] @@ -4885,6 +4985,16 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "hdrhistogram" +version = "7.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" +dependencies = [ + "byteorder", + "num-traits", +] + [[package]] name = "heapless" version = "0.6.1" @@ -4941,7 +5051,7 @@ dependencies = [ "dirs 5.0.1", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5137,6 +5247,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + [[package]] name = "httparse" version = "1.10.1" @@ -5269,7 +5385,7 @@ dependencies = [ "http 1.4.0", "hyper 1.8.1", "hyper-util", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-native-certs 0.8.3", "rustls-pki-types", "tokio", @@ -5327,6 +5443,7 @@ dependencies = [ "socket2 0.6.2", "system-configuration", "tokio", + "tower-layer", "tower-service", "tracing", "windows-registry", @@ -5411,7 +5528,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.2", ] [[package]] @@ -5677,7 +5794,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5694,9 +5811,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "iri-string" @@ -5752,9 +5869,9 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jiff" -version = "0.2.19" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89a5b5e10d5a9ad6e5d1f4bd58225f655d6fe9767575a5e8ac5a6fe64e04495" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -5767,20 +5884,20 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.19" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7a39c8862fc1369215ccf0a8f12dd4598c7f6484704359f0351bd617034dbf" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "jiff-tzdb" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68971ebff725b9e2ca27a601c5eb38a4c5d64422c4cbab0c535f248087eda5c2" +checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076" [[package]] name = "jiff-tzdb-platform" @@ -5825,9 +5942,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -6584,9 +6701,9 @@ checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" [[package]] name = "libc" -version = "0.2.181" +version = "0.2.182" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459427e2af2b9c839b132acb702a1c654d95e10f8c326bfc2ad11310e458b1c5" +checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" [[package]] name = "libfuzzer-sys" @@ -6606,13 +6723,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" dependencies = [ "bitflags", "libc", - "redox_syscall 0.7.0", + "plain", + "redox_syscall 0.7.3", ] [[package]] @@ -6646,9 +6764,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" @@ -6795,7 +6913,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6809,7 +6927,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6820,7 +6938,7 @@ checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6831,7 +6949,7 @@ checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6875,7 +6993,7 @@ checksum = "ac84fd3f360fcc43dc5f5d186f02a94192761a080e8bc58621ad4d12296a58cf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6949,9 +7067,9 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memmap2" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" dependencies = [ "libc", ] @@ -6976,7 +7094,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7045,9 +7163,9 @@ checksum = "dce6dd36094cac388f119d2e9dc82dc730ef91c32a6222170d630e5414b956e6" [[package]] name = "moka" -version = "0.12.13" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac832c50ced444ef6be0767a008b02c106a909ba79d1d830501e94b96f6b7e" +checksum = "85f8024e1c8e71c778968af91d43700ce1d11b219d127d79fb2934153b82b42b" dependencies = [ "async-lock", "crossbeam-channel", @@ -7107,7 +7225,7 @@ dependencies = [ "percent-encoding", "rand 0.9.2", "rustc_version_runtime", - "rustls 0.23.36", + "rustls 0.23.37", "rustversion", "serde", "serde_bytes", @@ -7136,7 +7254,7 @@ dependencies = [ "macro_magic", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7158,7 +7276,7 @@ checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7194,6 +7312,26 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" +[[package]] +name = "munge" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e17401f259eba956ca16491461b6e8f72913a0a114e39736ce404410f915a0c" +dependencies = [ + "munge_macro", +] + +[[package]] +name = "munge_macro" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "murmurhash32" version = "0.3.1" @@ -7211,17 +7349,17 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" dependencies = [ "libc", "log", "openssl", - "openssl-probe 0.1.6", + "openssl-probe 0.2.1", "openssl-sys", "schannel", - "security-framework 2.11.1", + "security-framework 3.7.0", "security-framework-sys", "tempfile", ] @@ -7305,7 +7443,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53a0d57c55d2d1dc62a2b1d16a0a1079eb78d67c36bdf468d582ab4482ec7002" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7449,7 +7587,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7519,10 +7657,10 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7625,7 +7763,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7839,7 +7977,7 @@ dependencies = [ "arrow-schema", "arrow-select", "base64 0.22.1", - "brotli", + "brotli 8.0.2", "bytes", "chrono", "flate2", @@ -7883,7 +8021,7 @@ dependencies = [ "regex", "regex-syntax", "structmeta", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8101,7 +8239,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "unicase", ] @@ -8132,29 +8270,29 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -8164,9 +8302,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" dependencies = [ "atomic-waker", "fastrand", @@ -8200,11 +8338,17 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + [[package]] name = "png" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ "bitflags", "crc32fast", @@ -8223,7 +8367,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.3", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -8274,9 +8418,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "predicates" -version = "3.1.3" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" +checksum = "ada8f2932f28a27ee7b70dd6c1c39ea0675c55a36879ab92f3a715eaa1e63cfe" dependencies = [ "anstyle", "difflib", @@ -8285,15 +8429,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" +checksum = "cad38746f3166b4031b1a0d39ad9f954dd291e7854fcc0eed52ee41a0b50d144" [[package]] name = "predicates-tree" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" +checksum = "d0de1b847b39c8131db0467e9df1ff60e6d0562ab8e9a16e568ad0fdb372e2f2" dependencies = [ "predicates-core", "termtree", @@ -8306,7 +8450,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8321,11 +8465,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit 0.25.4+spec-1.1.0", ] [[package]] @@ -8353,7 +8497,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8382,7 +8526,7 @@ version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "itertools 0.14.0", "log", "multimap", @@ -8392,7 +8536,7 @@ dependencies = [ "prost 0.13.5", "prost-types 0.13.5", "regex", - "syn 2.0.114", + "syn 2.0.117", "tempfile", ] @@ -8406,7 +8550,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8419,7 +8563,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8526,7 +8670,16 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" dependencies = [ - "ptr_meta_derive", + "ptr_meta_derive 0.1.4", +] + +[[package]] +name = "ptr_meta" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9a0cf95a1196af61d4f1cbdab967179516d9a4a4312af1f31948f8f6224a79" +dependencies = [ + "ptr_meta_derive 0.3.1", ] [[package]] @@ -8540,6 +8693,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ptr_meta_derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "pulldown-cmark" version = "0.9.6" @@ -8553,18 +8717,15 @@ dependencies = [ [[package]] name = "pxfm" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" -dependencies = [ - "num-traits", -] +checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" [[package]] name = "qdrant-client" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76499f3e8385dae785d65a0216e0dfa8fadaddd18038adf04f438631683b26a" +checksum = "f5d0a9b168ecf8f30a3eb7e8f4766e3050701242ffbe99838b58e6c4251e7211" dependencies = [ "anyhow", "derive_builder", @@ -8640,7 +8801,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.36", + "rustls 0.23.37", "socket2 0.6.2", "thiserror 2.0.18", "tokio", @@ -8661,7 +8822,7 @@ dependencies = [ "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-pki-types", "slab", "thiserror 2.0.18", @@ -8686,9 +8847,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -8699,6 +8860,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "radium" version = "0.7.0" @@ -8716,6 +8883,15 @@ dependencies = [ "serde", ] +[[package]] +name = "rancor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a063ea72381527c2a0561da9c80000ef822bdd7c3241b1cc1b12100e3df081ee" +dependencies = [ + "ptr_meta 0.3.1", +] + [[package]] name = "rand" version = "0.8.5" @@ -8744,7 +8920,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" dependencies = [ "chacha20", - "getrandom 0.4.1", + "getrandom 0.4.2", "rand_core 0.10.0", ] @@ -8837,7 +9013,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e47a395bdb55442b883c89062d6bcff25dc90fa5f8369af81e0ac6d49d78cf81" dependencies = [ "ahash 0.8.12", - "brotli", + "brotli 8.0.2", "paste", "rand 0.9.2", "unicase", @@ -8959,14 +9135,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "redis" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e969d1d702793536d5fda739a82b88ad7cbe7d04f8386ee8cd16ad3eff4854a5" +checksum = "dbe7f6e08ce1c6a9b21684e643926f6fc3b683bc006cb89afd72a5e0eb16e3a2" dependencies = [ "arcstr", "bytes", @@ -8999,9 +9175,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" dependencies = [ "bitflags", ] @@ -9045,7 +9221,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -9079,9 +9255,9 @@ checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" [[package]] name = "regex-syntax" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "rend" @@ -9089,7 +9265,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" dependencies = [ - "bytecheck", + "bytecheck 0.6.12", +] + +[[package]] +name = "rend" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6" +dependencies = [ + "bytecheck 0.8.2", ] [[package]] @@ -9120,7 +9305,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-native-certs 0.8.3", "rustls-pki-types", "serde", @@ -9169,7 +9354,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-pki-types", "rustls-platform-verifier", "serde", @@ -9279,7 +9464,7 @@ checksum = "5f0ec466e5d8dca9965eb6871879677bef5590cf7525ad96cae14376efb75073" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -9290,14 +9475,14 @@ checksum = "d3415e1bc838c36f9a0a2ac60c0fa0851c72297685e66592c44870d82834dfa2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rig-bedrock" @@ -9371,6 +9556,11 @@ dependencies = [ "tracing-futures", "tracing-opentelemetry", "tracing-subscriber", + "turbomcp", + "turbomcp-client", + "turbomcp-protocol", + "turbomcp-server", + "turbomcp-transport", "url", "wasm-bindgen-futures", ] @@ -9387,7 +9577,7 @@ dependencies = [ "rig-core", "serde", "serde_json", - "syn 2.0.114", + "syn 2.0.117", "tokio", "tracing-subscriber", ] @@ -9663,17 +9853,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2297bf9c81a3f0dc96bc9521370b88f054168c29826a75e89c55ff196e7ed6a1" dependencies = [ "bitvec", - "bytecheck", + "bytecheck 0.6.12", "bytes", "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", + "ptr_meta 0.1.4", + "rend 0.4.2", + "rkyv_derive 0.7.46", "seahash", "tinyvec", "uuid", ] +[[package]] +name = "rkyv" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a30e631b7f4a03dee9056b8ef6982e8ba371dd5bedb74d3ec86df4499132c70" +dependencies = [ + "bytecheck 0.8.2", + "bytes", + "hashbrown 0.15.5", + "hashbrown 0.16.1", + "indexmap 2.13.0", + "munge", + "ptr_meta 0.3.1", + "rancor", + "rend 0.5.3", + "rkyv_derive 0.8.15", + "smallvec", + "tinyvec", + "uuid", +] + [[package]] name = "rkyv_derive" version = "0.7.46" @@ -9685,6 +9896,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "rkyv_derive" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8100bb34c0a1d0f907143db3149e6b4eea3c33b9ee8b189720168e818303986f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "rmcp" version = "0.16.0" @@ -9727,7 +9949,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -9891,7 +10113,7 @@ dependencies = [ "bytes", "num-traits", "rand 0.8.5", - "rkyv", + "rkyv 0.7.46", "serde", "serde_json", ] @@ -9945,14 +10167,14 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] @@ -9984,9 +10206,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ "aws-lc-rs", "log", @@ -10020,7 +10242,7 @@ dependencies = [ "openssl-probe 0.2.1", "rustls-pki-types", "schannel", - "security-framework 3.5.1", + "security-framework 3.7.0", ] [[package]] @@ -10053,11 +10275,11 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-native-certs 0.8.3", "rustls-platform-verifier-android", "rustls-webpki 0.103.9", - "security-framework 3.5.1", + "security-framework 3.7.0", "security-framework-sys", "webpki-root-certs", "windows-sys 0.61.2", @@ -10165,6 +10387,7 @@ dependencies = [ "schemars_derive", "serde", "serde_json", + "uuid", ] [[package]] @@ -10176,7 +10399,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -10267,7 +10490,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -10301,9 +10524,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.5.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ "bitflags", "core-foundation 0.10.1", @@ -10314,9 +10537,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.15.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -10405,7 +10628,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -10416,7 +10639,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -10462,7 +10685,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -10479,9 +10702,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.1" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9" dependencies = [ "base64 0.22.1", "chrono", @@ -10498,14 +10721,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.1" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -10584,9 +10807,9 @@ dependencies = [ [[package]] name = "shellexpand" -version = "3.1.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1fdf65dd6331831494dd616b30351c38e96e45921a27745cf98490458b90bb" +checksum = "32824fab5e16e6c4d86dc1ba84489390419a39f97699852b66480bb87d297ed8" dependencies = [ "dirs 6.0.0", ] @@ -10624,12 +10847,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] -name = "simd_helpers" -version = "0.1.0" +name = "simd-json" +version = "0.13.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +checksum = "a0228a564470f81724e30996bbc2b171713b37b15254a6440c7e2d5449b95691" dependencies = [ - "quote", + "getrandom 0.2.17", + "halfbrown", + "lexical-core", + "ref-cast", + "serde", + "serde_json", + "simdutf8", + "value-trait", +] + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", ] [[package]] @@ -10646,9 +10885,9 @@ checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] name = "simple_asn1" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +checksum = "0d585997b0ac10be3c5ee635f1bab02d512760d14b7c468801ac8a01d9ae5f1d" dependencies = [ "num-bigint", "num-traits", @@ -10679,9 +10918,9 @@ dependencies = [ [[package]] name = "sketches-ddsketch" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" +checksum = "0c6f73aeb92d671e0cc4dca167e59b2deb6387c375391bc99ee743f326994a2b" dependencies = [ "serde", ] @@ -10731,10 +10970,10 @@ version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -10774,6 +11013,45 @@ dependencies = [ "winapi", ] +[[package]] +name = "sonic-number" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5661364b38abad49cf1ade6631fcc35d2ccf882a7d68616b4228b7717feb5fba" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "sonic-rs" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16b39f36452a4fa6f14a481b02e9ba5c6842c6a44d0545da967eca122f2eed9" +dependencies = [ + "ahash 0.8.12", + "bumpalo", + "bytes", + "cfg-if", + "faststr", + "itoa", + "ref-cast", + "serde", + "simdutf8", + "sonic-number", + "sonic-simd", + "thiserror 2.0.18", + "zmij", +] + +[[package]] +name = "sonic-simd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f944718c33623919878cf74b4c9361eb3024f635733922b26722b14cd3f8cc" +dependencies = [ + "cfg-if", +] + [[package]] name = "spade" version = "2.15.0" @@ -10845,7 +11123,7 @@ checksum = "da5fc6819faabb412da764b99d3b713bb55083c11e7e0c00144d386cd6a1939c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -10906,7 +11184,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -10929,7 +11207,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.114", + "syn 2.0.117", "tokio", "url", ] @@ -11165,7 +11443,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -11176,7 +11454,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -11207,7 +11485,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -11219,7 +11497,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -11230,9 +11508,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "surrealdb" -version = "2.6.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b7720b39ce2985efbfa10858b7397ffd95655a9bab6d9dfaa03622bbdc3bc2" +checksum = "b15697afb724b2ee5432b6be91e23dad09c4376ac53b25beecafba02d7998f31" dependencies = [ "arrayvec", "async-channel 2.5.0", @@ -11250,7 +11528,7 @@ dependencies = [ "revision 0.11.0", "ring", "rust_decimal", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-pki-types", "semver", "serde", @@ -11272,9 +11550,9 @@ dependencies = [ [[package]] name = "surrealdb-core" -version = "2.6.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c48e42c81713be2f9b3dae64328999eafe8b8060dd584059445a908748b39787" +checksum = "a825cd689bd35cadcb4edfb668da7315df34033d0ccb0f2be47d17e230035709" dependencies = [ "addr", "affinitypool", @@ -11312,7 +11590,6 @@ dependencies = [ "lexicmp", "linfa-linalg", "md-5", - "nanoid", "ndarray 0.15.6", "ndarray-stats", "num-traits", @@ -11395,9 +11672,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.114" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -11421,7 +11698,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -11636,14 +11913,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.25.0" +version = "3.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" +checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" dependencies = [ "fastrand", - "getrandom 0.4.1", + "getrandom 0.4.2", "once_cell", - "rustix 1.1.3", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -11753,7 +12030,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -11764,7 +12041,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -11816,7 +12093,7 @@ version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ - "deranged 0.5.6", + "deranged 0.5.8", "itoa", "num-conv", "powerfmt", @@ -11910,9 +12187,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.49.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" dependencies = [ "bytes", "libc", @@ -11927,13 +12204,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -11984,7 +12261,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.36", + "rustls 0.23.37", "tokio", ] @@ -12034,7 +12311,7 @@ checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" dependencies = [ "futures-util", "log", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -12042,6 +12319,22 @@ dependencies = [ "webpki-roots 0.26.11", ] +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "rustls 0.23.37", + "rustls-native-certs 0.8.3", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tungstenite 0.28.0", +] + [[package]] name = "tokio-util" version = "0.7.18" @@ -12052,7 +12345,10 @@ dependencies = [ "futures-core", "futures-io", "futures-sink", + "futures-util", + "hashbrown 0.15.5", "pin-project-lite", + "slab", "tokio", ] @@ -12064,9 +12360,9 @@ checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.0.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" dependencies = [ "serde_core", ] @@ -12084,23 +12380,23 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" +version = "0.25.4+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" dependencies = [ "indexmap 2.13.0", - "toml_datetime 0.7.5+spec-1.1.0", + "toml_datetime 1.0.0+spec-1.1.0", "toml_parser", - "winnow 0.7.14", + "winnow 0.7.15", ] [[package]] name = "toml_parser" -version = "1.0.7+spec-1.1.0" +version = "1.0.9+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247eaa3197818b831697600aadf81514e577e0cba5eab10f7e064e78ae154df1" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" dependencies = [ - "winnow 0.7.14", + "winnow 0.7.15", ] [[package]] @@ -12162,9 +12458,9 @@ dependencies = [ [[package]] name = "tonic" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a286e33f82f8a1ee2df63f4fa35c0becf4a85a0cb03091a15fd7bf0b402dc94a" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" dependencies = [ "async-trait", "axum 0.8.8", @@ -12200,18 +12496,18 @@ dependencies = [ "prost-build", "prost-types 0.13.5", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "tonic-prost" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c55a2d6a14174563de34409c9f92ff981d006f56da9c6ecd40d9d4a31500b0" +checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" dependencies = [ "bytes", "prost 0.14.3", - "tonic 0.14.3", + "tonic 0.14.5", ] [[package]] @@ -12242,6 +12538,7 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", + "hdrhistogram", "indexmap 2.13.0", "pin-project-lite", "slab", @@ -12260,6 +12557,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "async-compression", + "base64 0.22.1", "bitflags", "bytes", "futures-core", @@ -12267,13 +12565,20 @@ dependencies = [ "http 1.4.0", "http-body 1.0.1", "http-body-util", + "http-range-header", + "httpdate", "iri-string", + "mime", + "mime_guess", + "percent-encoding", "pin-project-lite", "tokio", "tokio-util", "tower 0.5.3", "tower-layer", "tower-service", + "tracing", + "uuid", ] [[package]] @@ -12308,7 +12613,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -12437,7 +12742,7 @@ dependencies = [ "httparse", "log", "rand 0.8.5", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-pki-types", "sha1", "thiserror 1.0.69", @@ -12445,6 +12750,296 @@ dependencies = [ "utf-8", ] +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http 1.4.0", + "httparse", + "log", + "rand 0.9.2", + "rustls 0.23.37", + "rustls-pki-types", + "sha1", + "thiserror 2.0.18", + "utf-8", +] + +[[package]] +name = "turbomcp" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b639e02c04c8bea85f3c0e94c9d824bfe22e4d56de1d53d3fbb3a4d78704c8" +dependencies = [ + "axum 0.8.8", + "schemars 1.2.1", + "serde", + "serde_json", + "tokio", + "tower 0.5.3", + "tracing", + "turbomcp-core", + "turbomcp-macros", + "turbomcp-protocol", + "turbomcp-server", + "turbomcp-transport", + "turbomcp-types", + "uuid", +] + +[[package]] +name = "turbomcp-client" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27a373d794ef27a64cbb16f27215eead6db78a6d07b6759de55d3715a818fc25" +dependencies = [ + "chrono", + "futures", + "futures-util", + "parking_lot", + "reqwest 0.13.2", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tower 0.5.3", + "tower-layer", + "tower-service", + "tracing", + "turbomcp-protocol", + "turbomcp-transport", + "uuid", +] + +[[package]] +name = "turbomcp-core" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c063aaa881276d093f38fcceea0f77827ec2472b08df58c5b6c79e39ce43a2" +dependencies = [ + "base64 0.22.1", + "chrono", + "compact_str", + "hashbrown 0.15.5", + "rkyv 0.8.15", + "serde", + "serde_json", + "smallvec", + "turbomcp-types", + "uuid", +] + +[[package]] +name = "turbomcp-http" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0383267ccfed935896f191b7e3746377dabf58f4c980df19e36c231598a50b65" +dependencies = [ + "bytes", + "futures", + "reqwest 0.13.2", + "serde", + "serde_json", + "tokio", + "tracing", + "turbomcp-protocol", + "turbomcp-transport-traits", + "url", +] + +[[package]] +name = "turbomcp-macros" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4933ccdb1a18ffbd7b4f76fdaf2f654e1d77981900e31249b4bbfce359389e0a" +dependencies = [ + "axum 0.8.8", + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "schemars 1.2.1", + "serde", + "serde_json", + "syn 2.0.117", + "turbomcp-protocol", +] + +[[package]] +name = "turbomcp-protocol" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4d3a99536d82545e9c36034f5c9d7a1c0427e4721cbdef69a03074e15d4a4fc" +dependencies = [ + "ahash 0.8.12", + "arc-swap", + "bytes", + "chrono", + "ciborium", + "compact_str", + "crossbeam", + "dashmap 6.1.0", + "flate2", + "futures", + "parking_lot", + "percent-encoding", + "pin-project-lite", + "rand 0.9.2", + "regex", + "serde", + "serde_json", + "simd-json", + "simdutf8", + "smallvec", + "sonic-rs", + "thiserror 2.0.18", + "tokio", + "tokio-util", + "tracing", + "turbomcp-core", + "url", + "uuid", +] + +[[package]] +name = "turbomcp-server" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d579a0ca9f16af73dc566f4de9cde8877a9e981225a2cd54cba0d4f84669b7c" +dependencies = [ + "async-stream", + "async-trait", + "axum 0.8.8", + "bytes", + "dashmap 6.1.0", + "futures", + "http 1.4.0", + "parking_lot", + "schemars 1.2.1", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tokio-util", + "tower 0.5.3", + "tower-http", + "tracing", + "turbomcp-core", + "turbomcp-macros", + "turbomcp-protocol", + "turbomcp-transport", + "turbomcp-types", + "uuid", +] + +[[package]] +name = "turbomcp-stdio" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891f40d7673ff0e673abfc5abdc9535103ed57f243265aeab0738c02b902500c" +dependencies = [ + "bytes", + "futures", + "parking_lot", + "serde_json", + "tokio", + "tokio-util", + "tracing", + "turbomcp-protocol", + "turbomcp-transport-traits", + "uuid", +] + +[[package]] +name = "turbomcp-transport" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5233024757a74bf896c4e707b9c5a02f61ca778678095627a8226dbc36d1d58" +dependencies = [ + "ahash 0.8.12", + "anyhow", + "arc-swap", + "async-stream", + "axum 0.8.8", + "bytes", + "chrono", + "dashmap 6.1.0", + "fastrand", + "futures", + "futures-util", + "hyper 1.8.1", + "hyper-util", + "parking_lot", + "pin-project-lite", + "rand 0.9.2", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tokio-tungstenite 0.28.0", + "tokio-util", + "tower 0.5.3", + "tower-http", + "tracing", + "turbomcp-http", + "turbomcp-protocol", + "turbomcp-stdio", + "turbomcp-transport-traits", + "turbomcp-websocket", + "url", + "uuid", +] + +[[package]] +name = "turbomcp-transport-traits" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba02ddb5412c1bd70fa4d86213c29704f7987acdec02b04a075daffeb3da7a39" +dependencies = [ + "bytes", + "futures", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "turbomcp-protocol", +] + +[[package]] +name = "turbomcp-types" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ed5d1c155421b03a832cf9b85f0d1ca7775439e7fdb78776f2dcf5e863672e" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "turbomcp-websocket" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f159c03aec9af6f4548d46a8593ae28ec4787bf0725ab02768156fcd85d99784" +dependencies = [ + "bytes", + "chrono", + "dashmap 6.1.0", + "fastrand", + "futures", + "parking_lot", + "serde", + "serde_json", + "tokio", + "tokio-tungstenite 0.28.0", + "tracing", + "turbomcp-protocol", + "turbomcp-transport-traits", + "uuid", +] + [[package]] name = "twox-hash" version = "2.1.2" @@ -12471,7 +13066,7 @@ checksum = "0e48cea23f68d1f78eb7bc092881b6bb88d3d6b5b7e6234f6f9c911da1ffb221" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -12512,7 +13107,7 @@ checksum = "536b6812192bda8551cfa0e52524e328c6a951b48e66529ee4522d6c721243d6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -12546,9 +13141,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-linebreak" @@ -12649,7 +13244,7 @@ dependencies = [ "log", "native-tls", "once_cell", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-pki-types", "serde", "serde_json", @@ -12667,7 +13262,7 @@ dependencies = [ "base64 0.22.1", "log", "percent-encoding", - "rustls 0.23.36", + "rustls 0.23.37", "rustls-pki-types", "ureq-proto", "utf-8", @@ -12724,11 +13319,11 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.20.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.2", "js-sys", "serde_core", "wasm-bindgen", @@ -12763,6 +13358,18 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" +[[package]] +name = "value-trait" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dad8db98c1e677797df21ba03fca7d3bf9bec3ca38db930954e4fe6e1ea27eb4" +dependencies = [ + "float-cmp", + "halfbrown", + "itoa", + "ryu", +] + [[package]] name = "vart" version = "0.8.1" @@ -12844,9 +13451,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ "cfg-if", "once_cell", @@ -12857,9 +13464,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" dependencies = [ "cfg-if", "futures-util", @@ -12871,9 +13478,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -12881,22 +13488,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] @@ -12990,9 +13597,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" dependencies = [ "js-sys", "wasm-bindgen", @@ -13106,7 +13713,7 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core", + "windows-core 0.57.0", "windows-targets 0.52.6", ] @@ -13116,12 +13723,25 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.57.0", + "windows-interface 0.57.0", "windows-result 0.1.2", "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link", + "windows-result 0.4.1", + "windows-strings", +] + [[package]] name = "windows-implement" version = "0.57.0" @@ -13130,7 +13750,18 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -13141,7 +13772,18 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -13496,9 +14138,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" dependencies = [ "memchr", ] @@ -13543,7 +14185,7 @@ dependencies = [ "heck 0.5.0", "indexmap 2.13.0", "prettyplease", - "syn 2.0.114", + "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -13559,7 +14201,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -13667,7 +14309,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.3", + "rustix 1.1.4", ] [[package]] @@ -13731,28 +14373,28 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -13772,7 +14414,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "synstructure", ] @@ -13812,7 +14454,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -13831,15 +14473,15 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.6.0" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7948af682ccbc3342b6e9420e8c51c1fe5d7bf7756002b4a3c6cabfe96a7e3c" +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" [[package]] name = "zmij" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4de98dfa5d5b7fef4ee834d0073d560c9ca7b6c46a71d058c48db7960f8cfaf7" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zopfli" diff --git a/rig/rig-core/Cargo.toml b/rig/rig-core/Cargo.toml index 484ffc9dd..e5c11a459 100644 --- a/rig/rig-core/Cargo.toml +++ b/rig/rig-core/Cargo.toml @@ -41,6 +41,7 @@ thiserror = { workspace = true } tracing = { workspace = true } url = { workspace = true } rmcp = { version = "0.16", optional = true, features = ["client"] } +turbomcp-client = { version = "3.0.0", optional = true, default-features = false, features = ["http"] } tokio = { workspace = true, features = ["rt", "sync"] } http = "1.3.1" tracing-futures = { version = "0.2.5", features = ["futures-03"] } @@ -91,6 +92,13 @@ rmcp = { version = "0.16", features = [ ] } axum = "0.8.4" +# Required for `turbomcp` example +turbomcp = { version = "3.0.0", features = ["http", "websocket"] } +turbomcp-server = { version = "3.0.0", features = ["http", "websocket"] } +turbomcp-client = { version = "3.0.0", features = ["http"] } +turbomcp-protocol = "3.0.0" +turbomcp-transport = { version = "3.0.0", features = ["http"] } + # required for otel opentelemetry = "0.30.0" opentelemetry_sdk = { version = "0.30.0", features = ["rt-tokio"] } @@ -115,6 +123,7 @@ wasm = [ "getrandom/js", ] rmcp = ["dep:rmcp"] +turbomcp = ["dep:turbomcp-client"] socks = ["reqwest/socks"] reqwest-native-tls = ["reqwest/native-tls"] reqwest-rustls = [ @@ -196,6 +205,10 @@ name = "request_hook" name = "discord_bot" required-features = ["discord-bot"] +[[example]] +name = "turbomcp" +required-features = ["turbomcp"] + [[example]] name = "custom_vector_store" diff --git a/rig/rig-core/examples/turbomcp.rs b/rig/rig-core/examples/turbomcp.rs new file mode 100644 index 000000000..9600178a3 --- /dev/null +++ b/rig/rig-core/examples/turbomcp.rs @@ -0,0 +1,83 @@ +//! An example of how you can use TurboMCP with Rig to create an MCP friendly agent. +//! +//! This example demonstrates the same functionality as the rmcp example, but using TurboMCP +//! as the MCP implementation. TurboMCP is a high-performance Rust SDK for the Model Context +//! Protocol with zero-boilerplate development and automatic schema generation. +//! +//! ## Running the Example +//! +//! This example requires: +//! 1. An MCP server running on http://localhost:8080 +//! 2. OPENAI_API_KEY environment variable set +//! +//! ```bash +//! # Terminal 1: Start any TurboMCP server (or use your own) +//! cargo run --example http_server -p turbomcp +//! +//! # Terminal 2: Run this example +//! OPENAI_API_KEY=your_api_key cargo run --example turbomcp --features turbomcp +//! ``` + +use rig::{ + client::{CompletionClient, ProviderClient}, + completion::Prompt, + providers::openai, +}; +use turbomcp_client::{ClientBuilder, StreamableHttpClientConfig, StreamableHttpClientTransport}; + +#[tokio::main] +async fn main() -> anyhow::Result<()> { + tracing_subscriber::fmt::init(); + + // Create a TurboMCP client that connects to an MCP server + let config = StreamableHttpClientConfig { + base_url: "http://localhost:8080".to_string(), + endpoint_path: "/mcp".to_string(), + ..Default::default() + }; + + let transport = StreamableHttpClientTransport::new(config); + + let client = ClientBuilder::new().with_tools(true).build_sync(transport); + + // Initialize the client + tracing::info!("Connecting to TurboMCP server..."); + client.initialize().await?; + tracing::info!("Connected to TurboMCP server"); + + // List tools from the server + let tools = client.list_tools().await?; + tracing::info!( + "Available tools: {:?}", + tools.iter().map(|t| &t.name).collect::>() + ); + + if tools.is_empty() { + tracing::warn!( + "No tools available from server. Make sure the server has tools registered." + ); + return Ok(()); + } + + // Create an OpenAI agent with TurboMCP tools + let openai_client = openai::Client::from_env(); + let agent = openai_client + .agent(openai::GPT_4O) + .preamble( + "You are a helpful assistant who has access to a number of tools from an MCP server. \ + Use the available tools to answer questions.", + ) + .turbomcp_tools(tools, client) + .build(); + + // Use the agent to answer a question that may require tool usage + let res = agent + .prompt("What tools do you have available?") + .max_turns(2) + .await + .unwrap(); + + println!("GPT-4o: {res}"); + + Ok(()) +} diff --git a/rig/rig-core/src/agent/builder.rs b/rig/rig-core/src/agent/builder.rs index 6e5c287cd..ba20f4a2d 100644 --- a/rig/rig-core/src/agent/builder.rs +++ b/rig/rig-core/src/agent/builder.rs @@ -18,6 +18,10 @@ use crate::{ #[cfg_attr(docsrs, doc(cfg(feature = "rmcp")))] use crate::tool::rmcp::McpTool as RmcpTool; +#[cfg(feature = "turbomcp")] +#[cfg_attr(docsrs, doc(cfg(feature = "turbomcp")))] +use crate::tool::turbomcp::TurboMcpTool; + use super::Agent; /// Marker type indicating no tool configuration has been set yet. @@ -408,6 +412,97 @@ where } } + /// Add an MCP tool (from TurboMCP) to the agent. + /// + /// Transitions the builder to the `WithBuilderTools` state. + #[cfg(feature = "turbomcp")] + #[cfg_attr(docsrs, doc(cfg(feature = "turbomcp")))] + pub fn turbomcp_tool( + self, + tool: turbomcp_client::Tool, + client: turbomcp_client::Client, + ) -> AgentBuilder + where + T: turbomcp_client::Transport + 'static, + { + let toolname = tool.name.clone(); + let tools = ToolSet::from_tools(vec![TurboMcpTool::from_mcp_server(tool, client)]); + + AgentBuilder { + name: self.name, + description: self.description, + model: self.model, + preamble: self.preamble, + static_context: self.static_context, + additional_params: self.additional_params, + max_tokens: self.max_tokens, + dynamic_context: self.dynamic_context, + temperature: self.temperature, + tool_choice: self.tool_choice, + default_max_turns: self.default_max_turns, + hook: self.hook, + output_schema: self.output_schema, + tool_state: WithBuilderTools { + static_tools: vec![toolname], + tools, + dynamic_tools: vec![], + }, + } + } + + /// Add an array of MCP tools (from TurboMCP) to the agent. + /// + /// Transitions the builder to the `WithBuilderTools` state. + #[cfg(feature = "turbomcp")] + #[cfg_attr(docsrs, doc(cfg(feature = "turbomcp")))] + pub fn turbomcp_tools( + self, + tools: Vec, + client: turbomcp_client::Client, + ) -> AgentBuilder + where + T: turbomcp_client::Transport + 'static, + { + use crate::tool::turbomcp::TurboMcpToolCaller; + use std::sync::Arc; + + let client_arc: Arc = Arc::new(client); + + let (static_tools, tools) = tools.into_iter().fold( + (Vec::new(), Vec::new()), + |(mut toolnames, mut toolset), tool| { + let tool_name = tool.name.clone(); + let tool = TurboMcpTool::from_client_arc(tool, client_arc.clone()); + toolnames.push(tool_name); + toolset.push(tool); + (toolnames, toolset) + }, + ); + + let tools = ToolSet::from_tools(tools); + + AgentBuilder { + name: self.name, + description: self.description, + model: self.model, + preamble: self.preamble, + static_context: self.static_context, + additional_params: self.additional_params, + max_tokens: self.max_tokens, + dynamic_context: self.dynamic_context, + temperature: self.temperature, + tool_choice: self.tool_choice, + default_max_turns: self.default_max_turns, + hook: self.hook, + output_schema: self.output_schema, + tool_state: WithBuilderTools { + static_tools, + tools, + dynamic_tools: vec![], + }, + } + } + /// Add some dynamic tools to the agent. On each prompt, `sample` tools from the /// dynamic toolset will be inserted in the request. /// @@ -557,6 +652,32 @@ where self } + /// Add an array of MCP tools (from TurboMCP) to the agent. + #[cfg(feature = "turbomcp")] + #[cfg_attr(docsrs, doc(cfg(feature = "turbomcp")))] + pub fn turbomcp_tools( + mut self, + tools: Vec, + client: turbomcp_client::Client, + ) -> Self + where + T: turbomcp_client::Transport + 'static, + { + use crate::tool::turbomcp::TurboMcpToolCaller; + use std::sync::Arc; + + let client_arc: Arc = Arc::new(client); + + for tool in tools { + let tool_name = tool.name.clone(); + let tool = TurboMcpTool::from_client_arc(tool, client_arc.clone()); + self.tool_state.static_tools.push(tool_name); + self.tool_state.tools.add_tool(tool); + } + + self + } + /// Add some dynamic tools to the agent. On each prompt, `sample` tools from the /// dynamic toolset will be inserted in the request. pub fn dynamic_tools( diff --git a/rig/rig-core/src/tool/mod.rs b/rig/rig-core/src/tool/mod.rs index fddc3df2b..a46eaefea 100644 --- a/rig/rig-core/src/tool/mod.rs +++ b/rig/rig-core/src/tool/mod.rs @@ -355,6 +355,193 @@ pub mod rmcp { } } +#[cfg(feature = "turbomcp")] +#[cfg_attr(docsrs, doc(cfg(feature = "turbomcp")))] +pub mod turbomcp { + use crate::completion::ToolDefinition; + use crate::tool::ToolDyn; + use crate::tool::ToolError; + use crate::wasm_compat::WasmBoxedFuture; + use std::collections::HashMap; + use std::sync::Arc; + use turbomcp_client::{ + CallToolResult, Client, ContentBlock, ResourceContent, Result as McpResult, Tool, Transport, + }; + + /// Trait for abstracting over TurboMCP client tool calling. + /// + /// This trait allows storing a type-erased client that can call tools + /// regardless of the underlying transport type (HTTP, WebSocket, TCP, etc.). + pub trait TurboMcpToolCaller: Send + Sync { + fn call_tool( + &self, + name: &str, + arguments: Option>, + ) -> std::pin::Pin< + Box> + Send + '_>, + >; + } + + impl TurboMcpToolCaller for Client + where + T: Transport + 'static, + { + fn call_tool( + &self, + name: &str, + arguments: Option>, + ) -> std::pin::Pin< + Box> + Send + '_>, + > { + let name = name.to_string(); + Box::pin(async move { self.call_tool(&name, arguments, None).await }) + } + } + + /// A wrapper around a TurboMCP tool that implements Rig's ToolDyn trait. + /// + /// Bridges TurboMCP's tool system with Rig's tool abstraction, + /// allowing TurboMCP tools to be used seamlessly with Rig agents. + #[derive(Clone)] + pub struct TurboMcpTool { + definition: Tool, + client: Arc, + } + + impl TurboMcpTool { + pub fn from_mcp_server(definition: Tool, client: Client) -> Self + where + T: Transport + 'static, + { + Self { + definition, + client: Arc::new(client), + } + } + + pub fn from_client_arc(definition: Tool, client: Arc) -> Self { + Self { definition, client } + } + } + + impl From<&Tool> for ToolDefinition { + fn from(val: &Tool) -> Self { + Self { + name: val.name.clone(), + description: val.description.clone().unwrap_or_default(), + parameters: serde_json::to_value(&val.input_schema).unwrap_or_default(), + } + } + } + + impl From for ToolDefinition { + fn from(val: Tool) -> Self { + Self { + name: val.name.clone(), + description: val.description.clone().unwrap_or_default(), + parameters: serde_json::to_value(&val.input_schema).unwrap_or_default(), + } + } + } + + #[derive(Debug, thiserror::Error)] + #[error("TurboMCP tool error: {0}")] + pub struct TurboMcpToolError(String); + + impl From for ToolError { + fn from(e: TurboMcpToolError) -> Self { + ToolError::ToolCallError(Box::new(e)) + } + } + + impl ToolDyn for TurboMcpTool { + fn name(&self) -> String { + self.definition.name.clone() + } + + fn definition(&self, _prompt: String) -> WasmBoxedFuture<'_, ToolDefinition> { + Box::pin(async move { + ToolDefinition { + name: self.definition.name.clone(), + description: self.definition.description.clone().unwrap_or_default(), + parameters: serde_json::to_value(&self.definition.input_schema) + .unwrap_or_default(), + } + }) + } + + fn call(&self, args: String) -> WasmBoxedFuture<'_, Result> { + let name = self.definition.name.clone(); + let arguments: Option> = + serde_json::from_str(&args).ok(); + + Box::pin(async move { + let result = self + .client + .call_tool(&name, arguments) + .await + .map_err(|e| TurboMcpToolError(format!("Tool returned an error: {e}")))?; + + if let Some(true) = result.is_error { + let error_msg = result + .content + .iter() + .filter_map(|c| { + if let ContentBlock::Text(text) = c { + Some(text.text.clone()) + } else { + None + } + }) + .collect::>() + .join("\n"); + + if !error_msg.is_empty() { + return Err(TurboMcpToolError(error_msg).into()); + } else { + return Err( + TurboMcpToolError("No error message returned".to_string()).into() + ); + } + } + + Ok(result + .content + .into_iter() + .map(|c| match c { + ContentBlock::Text(text) => text.text, + ContentBlock::Image(img) => { + format!("data:{};base64,{}", img.mime_type, img.data) + } + ContentBlock::Resource(res) => match res.resource { + ResourceContent::Text(text_res) => { + format!("resource:{}", text_res.uri) + } + ResourceContent::Blob(blob_res) => { + format!("resource:{}", blob_res.uri) + } + }, + ContentBlock::ResourceLink(link) => { + format!("resource-link:{}", link.uri) + } + ContentBlock::Audio(audio) => { + format!("data:{};base64,{}", audio.mime_type, audio.data) + } + // ToolUse and ToolResult are MCP 2025-11-25 content types + // for nested tool invocations; convert to descriptive text + ContentBlock::ToolUse(tu) => { + format!("tool-use:{}:{}", tu.name, tu.id) + } + ContentBlock::ToolResult(tr) => { + format!("tool-result:{}", tr.tool_use_id) + } + }) + .collect::()) + }) + } + } +} + /// Wrapper trait to allow for dynamic dispatch of raggable tools pub trait ToolEmbeddingDyn: ToolDyn { fn context(&self) -> serde_json::Result; @@ -699,3 +886,334 @@ mod tests { assert_eq!(toolset.tools.len(), 1); } } + +#[cfg(all(test, feature = "turbomcp"))] +mod turbomcp_tests { + use super::turbomcp::*; + use super::*; + use std::collections::HashMap; + use std::sync::Arc; + use turbomcp_client::{CallToolResult, ContentBlock, Tool}; + use turbomcp_protocol::types::content::{ + AudioContent, ImageContent, ResourceLink, TextContent, + }; + + /// Mock TurboMcpToolCaller for testing without a real MCP server + struct MockToolCaller { + response: CallToolResult, + } + + impl MockToolCaller { + fn success(text: &str) -> Self { + Self { + response: CallToolResult { + content: vec![ContentBlock::Text(TextContent { + text: text.to_string(), + annotations: None, + meta: None, + })], + is_error: None, + structured_content: None, + _meta: None, + task_id: None, + }, + } + } + + fn error(msg: &str) -> Self { + Self { + response: CallToolResult { + content: vec![ContentBlock::Text(TextContent { + text: msg.to_string(), + annotations: None, + meta: None, + })], + is_error: Some(true), + structured_content: None, + _meta: None, + task_id: None, + }, + } + } + + fn with_content(content: Vec) -> Self { + Self { + response: CallToolResult { + content, + is_error: None, + structured_content: None, + _meta: None, + task_id: None, + }, + } + } + } + + impl TurboMcpToolCaller for MockToolCaller { + fn call_tool( + &self, + _name: &str, + _arguments: Option>, + ) -> std::pin::Pin< + Box< + dyn std::future::Future> + + Send + + '_, + >, + > { + let result = self.response.clone(); + Box::pin(async move { Ok(result) }) + } + } + + fn make_tool(name: &str, description: &str) -> Tool { + serde_json::from_value(serde_json::json!({ + "name": name, + "description": description, + "inputSchema": { + "type": "object", + "properties": { + "x": { "type": "number" }, + "y": { "type": "number" } + }, + "required": ["x", "y"] + } + })) + .expect("valid tool JSON") + } + + #[test] + fn test_tool_definition_from_ref() { + let tool = make_tool("add", "Add two numbers"); + let def: ToolDefinition = (&tool).into(); + + assert_eq!(def.name, "add"); + assert_eq!(def.description, "Add two numbers"); + assert!(def.parameters.is_object()); + } + + #[test] + fn test_tool_definition_from_owned() { + let tool = make_tool("multiply", "Multiply two numbers"); + let def: ToolDefinition = tool.into(); + + assert_eq!(def.name, "multiply"); + assert_eq!(def.description, "Multiply two numbers"); + } + + #[test] + fn test_tool_definition_empty_description() { + let tool: Tool = serde_json::from_value(serde_json::json!({ + "name": "no_desc", + "inputSchema": { "type": "object" } + })) + .expect("valid tool JSON"); + let def: ToolDefinition = tool.into(); + + assert_eq!(def.name, "no_desc"); + assert_eq!(def.description, ""); + } + + #[tokio::test] + async fn test_turbomcp_tool_name() { + let tool = make_tool("my_tool", "A test tool"); + let caller = MockToolCaller::success("ok"); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + assert_eq!(ToolDyn::name(&mcp_tool), "my_tool"); + } + + #[tokio::test] + async fn test_turbomcp_tool_definition() { + let tool = make_tool("calc", "Calculate things"); + let caller = MockToolCaller::success("ok"); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let def = ToolDyn::definition(&mcp_tool, "prompt".into()).await; + assert_eq!(def.name, "calc"); + assert_eq!(def.description, "Calculate things"); + } + + #[tokio::test] + async fn test_turbomcp_tool_call_text_result() { + let tool = make_tool("add", "Add"); + let caller = MockToolCaller::success("42"); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let result = ToolDyn::call(&mcp_tool, r#"{"x": 1, "y": 2}"#.to_string()).await; + assert!(result.is_ok()); + assert_eq!(result.unwrap(), "42"); + } + + #[tokio::test] + async fn test_turbomcp_tool_call_error_result() { + let tool = make_tool("fail", "Fail"); + let caller = MockToolCaller::error("something went wrong"); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let result = ToolDyn::call(&mcp_tool, r#"{}"#.to_string()).await; + assert!(result.is_err()); + let err = result.unwrap_err(); + assert!(err.to_string().contains("something went wrong")); + } + + #[tokio::test] + async fn test_turbomcp_tool_call_error_no_message() { + let caller = MockToolCaller { + response: CallToolResult { + content: vec![ContentBlock::Image(ImageContent { + data: "abc".to_string(), + mime_type: "image/png".to_string(), + annotations: None, + meta: None, + })], + is_error: Some(true), + structured_content: None, + _meta: None, + task_id: None, + }, + }; + let tool = make_tool("fail2", "Fail2"); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let result = ToolDyn::call(&mcp_tool, r#"{}"#.to_string()).await; + assert!(result.is_err()); + assert!(result.unwrap_err().to_string().contains("No error message")); + } + + #[tokio::test] + async fn test_turbomcp_tool_call_image_content() { + let tool = make_tool("img", "Image"); + let caller = MockToolCaller::with_content(vec![ContentBlock::Image(ImageContent { + data: "base64data".to_string(), + mime_type: "image/png".to_string(), + annotations: None, + meta: None, + })]); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let result = ToolDyn::call(&mcp_tool, r#"{}"#.to_string()).await.unwrap(); + assert_eq!(result, "data:image/png;base64,base64data"); + } + + #[tokio::test] + async fn test_turbomcp_tool_call_audio_content() { + let tool = make_tool("audio", "Audio"); + let caller = MockToolCaller::with_content(vec![ContentBlock::Audio(AudioContent { + data: "audiodata".to_string(), + mime_type: "audio/wav".to_string(), + annotations: None, + meta: None, + })]); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let result = ToolDyn::call(&mcp_tool, r#"{}"#.to_string()).await.unwrap(); + assert_eq!(result, "data:audio/wav;base64,audiodata"); + } + + #[tokio::test] + async fn test_turbomcp_tool_call_resource_link_content() { + let tool = make_tool("reslink", "ResLink"); + let link: ResourceLink = serde_json::from_value(serde_json::json!({ + "uri": "file:///tmp/test.txt", + "name": "test" + })) + .expect("valid resource link JSON"); + let caller = MockToolCaller::with_content(vec![ContentBlock::ResourceLink(link)]); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let result = ToolDyn::call(&mcp_tool, r#"{}"#.to_string()).await.unwrap(); + assert_eq!(result, "resource-link:file:///tmp/test.txt"); + } + + #[tokio::test] + async fn test_turbomcp_tool_call_mixed_content() { + let tool = make_tool("mixed", "Mixed"); + let caller = MockToolCaller::with_content(vec![ + ContentBlock::Text(TextContent { + text: "Hello ".to_string(), + annotations: None, + meta: None, + }), + ContentBlock::Text(TextContent { + text: "World".to_string(), + annotations: None, + meta: None, + }), + ]); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let result = ToolDyn::call(&mcp_tool, r#"{}"#.to_string()).await.unwrap(); + assert_eq!(result, "Hello World"); + } + + #[tokio::test] + async fn test_turbomcp_tool_call_invalid_json_args() { + let tool = make_tool("t", "T"); + let caller = MockToolCaller::success("ok"); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + // Invalid JSON args should still work (parsed as None) + let result = ToolDyn::call(&mcp_tool, "not json".to_string()).await; + assert!(result.is_ok()); + assert_eq!(result.unwrap(), "ok"); + } + + #[test] + fn test_turbomcp_tool_clone() { + let tool = make_tool("cloneable", "Clone"); + let caller = MockToolCaller::success("ok"); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let cloned = mcp_tool.clone(); + assert_eq!(ToolDyn::name(&cloned), "cloneable"); + } + + #[tokio::test] + async fn test_turbomcp_tool_in_toolset() { + let tool = make_tool("set_tool", "Tool in set"); + let caller = MockToolCaller::success("result"); + let mcp_tool = TurboMcpTool::from_client_arc(tool, Arc::new(caller)); + + let toolset = ToolSet::from_tools(vec![mcp_tool]); + assert!(toolset.contains("set_tool")); + + let result = toolset.call("set_tool", r#"{}"#.to_string()).await; + assert!(result.is_ok()); + assert_eq!(result.unwrap(), "result"); + } + + #[tokio::test] + async fn test_turbomcp_multiple_tools_shared_client() { + let caller: Arc = Arc::new(MockToolCaller::success("shared")); + + let tool1 = TurboMcpTool::from_client_arc(make_tool("t1", "Tool 1"), caller.clone()); + let tool2 = TurboMcpTool::from_client_arc(make_tool("t2", "Tool 2"), caller.clone()); + + let toolset = ToolSet::from_tools(vec![tool1, tool2]); + assert!(toolset.contains("t1")); + assert!(toolset.contains("t2")); + assert_eq!(toolset.tools.len(), 2); + + let r1 = toolset.call("t1", r#"{}"#.to_string()).await.unwrap(); + let r2 = toolset.call("t2", r#"{}"#.to_string()).await.unwrap(); + assert_eq!(r1, "shared"); + assert_eq!(r2, "shared"); + } + + #[tokio::test] + async fn test_turbomcp_tool_definitions_in_toolset() { + let caller: Arc = Arc::new(MockToolCaller::success("x")); + + let tool1 = TurboMcpTool::from_client_arc(make_tool("alpha", "Alpha tool"), caller.clone()); + let tool2 = TurboMcpTool::from_client_arc(make_tool("beta", "Beta tool"), caller); + + let toolset = ToolSet::from_tools(vec![tool1, tool2]); + let defs = toolset.get_tool_definitions().await.unwrap(); + + assert_eq!(defs.len(), 2); + let names: Vec<&str> = defs.iter().map(|d| d.name.as_str()).collect(); + assert!(names.contains(&"alpha")); + assert!(names.contains(&"beta")); + } +} diff --git a/rig/rig-core/src/tool/server.rs b/rig/rig-core/src/tool/server.rs index 31c81405b..1971b8ca0 100644 --- a/rig/rig-core/src/tool/server.rs +++ b/rig/rig-core/src/tool/server.rs @@ -88,6 +88,27 @@ impl ToolServer { self } + // Add an MCP tool (from TurboMCP) to the agent + #[cfg_attr(docsrs, doc(cfg(feature = "turbomcp")))] + #[cfg(feature = "turbomcp")] + pub fn turbomcp_tool( + mut self, + tool: turbomcp_client::Tool, + client: turbomcp_client::Client, + ) -> Self + where + T: turbomcp_client::Transport + 'static, + { + use crate::tool::turbomcp::TurboMcpTool; + let toolname = tool.name.clone(); + Arc::get_mut(&mut self.toolset) + .expect("ToolServer::turbomcp_tool() called after run()") + .get_mut() + .add_tool(TurboMcpTool::from_mcp_server(tool, client)); + self.static_tool_names.push(toolname); + self + } + /// Add some dynamic tools to the agent. On each prompt, `sample` tools from the /// dynamic toolset will be inserted in the request. pub fn dynamic_tools(