This is an automated email from the ASF dual-hosted git repository.

gkoszyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git


The following commit(s) were added to refs/heads/master by this push:
     new dbd0e25cd deps(rust): bump workspace dependencies (#3005)
dbd0e25cd is described below

commit dbd0e25cdc2b31635ceb05d3fcb23ae029e99598
Author: Hubert Gruszecki <[email protected]>
AuthorDate: Sat Mar 21 12:41:39 2026 +0100

    deps(rust): bump workspace dependencies (#3005)
    
    cargo upgrade bumped several crates with breaking API changes:
    
    - bit-set 0.9: len() -> count(), clear() -> make_empty()
    - figlet-rs 1.0: FIGfont renamed to FIGlet
    - tungstenite 0.29 vs compio-ws 0.3 (pinned to 0.28):
      construct WebSocket config via compio's re-exported
      tungstenite to avoid cross-version type mismatch
    - arrow/parquet 58 vs iceberg 0.9 (pinned to arrow 57):
      downgrade workspace arrow/parquet to match iceberg's
      transitive dependency
---
 Cargo.lock                                         | 503 ++++++++++++++-------
 Cargo.toml                                         |  49 +-
 DEPENDENCIES.md                                    | 151 ++++---
 core/ai/mcp/src/main.rs                            |   4 +-
 core/bench/src/main.rs                             |   4 +-
 core/cli/src/args/mod.rs                           |   4 +-
 core/connectors/runtime/src/main.rs                |   4 +-
 core/connectors/sinks/iceberg_sink/Cargo.toml      |   1 +
 core/connectors/sinks/iceberg_sink/src/catalog.rs  |  18 +-
 core/consensus/src/impls.rs                        |   8 +-
 .../tests/cli/general/test_overview_command.rs     |  16 +-
 core/server/Cargo.toml                             |   1 -
 core/server/src/main.rs                            |   4 +-
 core/server/src/websocket/mod.rs                   |  41 ++
 core/server/src/websocket/websocket_listener.rs    |   4 +-
 .../server/src/websocket/websocket_tls_listener.rs |   4 +-
 16 files changed, 525 insertions(+), 291 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 4a091845a..63420b7b5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -349,9 +349,9 @@ dependencies = [
 
 [[package]]
 name = "anstream"
-version = "0.6.21"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
+checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -364,15 +364,15 @@ dependencies = [
 
 [[package]]
 name = "anstyle"
-version = "1.0.13"
+version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
+checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
 
 [[package]]
 name = "anstyle-parse"
-version = "0.2.7"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
+checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
 dependencies = [
  "utf8parse",
 ]
@@ -706,9 +706,9 @@ dependencies = [
 
 [[package]]
 name = "assert_cmd"
-version = "2.1.2"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "9c5bcfa8749ac45dd12cb11055aeeb6b27a3895560d60d71e3c23bf979e60514"
+checksum = "9a686bbee5efb88a82df0621b236e74d925f470e5445d3220a5648b892ec99c9"
 dependencies = [
  "anstyle",
  "bstr",
@@ -980,9 +980,9 @@ dependencies = [
 
 [[package]]
 name = "aws-lc-rs"
-version = "1.16.1"
+version = "1.16.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "94bffc006df10ac2a68c83692d734a465f8ee6c5b384d8545a636f81d858f4bf"
+checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc"
 dependencies = [
  "aws-lc-sys",
  "zeroize",
@@ -990,9 +990,9 @@ dependencies = [
 
 [[package]]
 name = "aws-lc-sys"
-version = "0.38.0"
+version = "0.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4321e568ed89bb5a7d291a7f37997c2c0df89809d7b6d12062c81ddb54aa782e"
+checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a"
 dependencies = [
  "cc",
  "cmake",
@@ -1269,7 +1269,16 @@ version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
 dependencies = [
- "bit-vec",
+ "bit-vec 0.8.0",
+]
+
+[[package]]
+name = "bit-set"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd"
+dependencies = [
+ "bit-vec 0.9.1",
 ]
 
 [[package]]
@@ -1278,6 +1287,15 @@ version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
 
+[[package]]
+name = "bit-vec"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51"
+dependencies = [
+ "serde",
+]
+
 [[package]]
 name = "bit_field"
 version = "0.10.3"
@@ -1361,11 +1379,21 @@ dependencies = [
  "objc2",
 ]
 
+[[package]]
+name = "bnum"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "f781dba93de3a5ef6dc5b17c9958b208f6f3f021623b360fb605ea51ce443f10"
+dependencies = [
+ "serde",
+ "serde-big-array",
+]
+
 [[package]]
 name = "bollard"
-version = "0.20.1"
+version = "0.20.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "227aa051deec8d16bd9c34605e7aaf153f240e35483dd42f6f78903847934738"
+checksum = "ee04c4c84f1f811b017f2fbb7dd8815c976e7ca98593de9c1e2afad0f636bff4"
 dependencies = [
  "async-stream",
  "base64 0.22.1",
@@ -1437,9 +1465,9 @@ dependencies = [
 
 [[package]]
 name = "bon"
-version = "3.9.0"
+version = "3.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "2d13a61f2963b88eef9c1be03df65d42f6996dfeac1054870d950fcf66686f83"
+checksum = "f47dbe92550676ee653353c310dfb9cf6ba17ee70396e1f7cf0a2020ad49b2fe"
 dependencies = [
  "bon-macros",
  "rustversion",
@@ -1447,9 +1475,9 @@ dependencies = [
 
 [[package]]
 name = "bon-macros"
-version = "3.9.0"
+version = "3.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d314cc62af2b6b0c65780555abb4d02a03dd3b799cd42419044f0c38d99738c0"
+checksum = "519bd3116aeeb42d5372c29d982d16d0170d3d4a5ed85fc7dd91642ffff3c67c"
 dependencies = [
  "darling 0.23.0",
  "ident_case",
@@ -1462,19 +1490,20 @@ dependencies = [
 
 [[package]]
 name = "borsh"
-version = "1.6.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f"
+checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a"
 dependencies = [
  "borsh-derive",
+ "bytes",
  "cfg_aliases",
 ]
 
 [[package]]
 name = "borsh-derive"
-version = "1.6.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c"
+checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59"
 dependencies = [
  "once_cell",
  "proc-macro-crate 3.5.0",
@@ -1701,9 +1730,9 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.2.56"
+version = "1.2.57"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
+checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423"
 dependencies = [
  "find-msvc-tools",
  "jobserver",
@@ -1818,9 +1847,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.60"
+version = "4.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a"
+checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -1828,9 +1857,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.60"
+version = "4.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876"
+checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
 dependencies = [
  "anstream",
  "anstyle",
@@ -1841,18 +1870,18 @@ dependencies = [
 
 [[package]]
 name = "clap_complete"
-version = "4.5.66"
+version = "4.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c757a3b7e39161a4e56f9365141ada2a6c915a8622c408ab6bb4b5d047371031"
+checksum = "19c9f1dde76b736e3681f28cec9d5a61299cbaae0fce80a68e43724ad56031eb"
 dependencies = [
  "clap",
 ]
 
 [[package]]
 name = "clap_derive"
-version = "4.5.55"
+version = "4.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5"
+checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -1862,9 +1891,9 @@ dependencies = [
 
 [[package]]
 name = "clap_lex"
-version = "1.0.0"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831"
+checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
 
 [[package]]
 name = "clock"
@@ -1899,9 +1928,9 @@ checksum = 
"3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
 
 [[package]]
 name = "colorchoice"
-version = "1.0.4"
+version = "1.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
+checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
 
 [[package]]
 name = "colored"
@@ -2132,7 +2161,7 @@ dependencies = [
  "compio-log",
  "compio-net",
  "compio-tls",
- "tungstenite",
+ "tungstenite 0.28.0",
 ]
 
 [[package]]
@@ -2181,7 +2210,7 @@ dependencies = [
  "static-toml",
  "strum 0.28.0",
  "tracing",
- "tungstenite",
+ "tungstenite 0.29.0",
 ]
 
 [[package]]
@@ -2198,7 +2227,7 @@ dependencies = [
 name = "consensus"
 version = "0.1.0"
 dependencies = [
- "bit-set",
+ "bit-set 0.9.1",
  "bytemuck",
  "bytes",
  "futures",
@@ -2210,13 +2239,12 @@ dependencies = [
 
 [[package]]
 name = "console"
-version = "0.16.2"
+version = "0.16.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4"
+checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87"
 dependencies = [
  "encode_unicode",
  "libc",
- "once_cell",
  "unicode-width 0.2.2",
  "windows-sys 0.61.2",
 ]
@@ -2458,9 +2486,9 @@ checksum = 
"d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
 
 [[package]]
 name = "crossfire"
-version = "3.1.5"
+version = "3.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "cf877d485f079160883c76912869ac04132035f7ea787712264d422793f808df"
+checksum = "e0042e53977a94d5d10de04ce7eb6016aa212c08e83ea202f7a9f102ff104303"
 dependencies = [
  "crossbeam-utils",
  "futures-core",
@@ -2642,9 +2670,9 @@ dependencies = [
 
 [[package]]
 name = "cyper"
-version = "0.8.2"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "b707a1802eb4d8e914f3797b3103fe65bb8d4f8d2c10b9e23f155fe9f18e1d8b"
+checksum = "9123b02f7942d1f9e7608a2243d4d1face2935facda972a3551ea7a087f722ab"
 dependencies = [
  "async-stream",
  "base64 0.22.1",
@@ -2754,7 +2782,6 @@ dependencies = [
  "ident_case",
  "proc-macro2",
  "quote",
- "strsim",
  "syn 2.0.117",
 ]
 
@@ -2871,8 +2898,8 @@ dependencies = [
  "anyhow",
  "az",
  "bincode",
- "bit-set",
- "bit-vec",
+ "bit-set 0.8.0",
+ "bit-vec 0.8.0",
  "bytes",
  "capacity_builder",
  "cooked-waker",
@@ -3031,9 +3058,9 @@ dependencies = [
 
 [[package]]
 name = "derive-where"
-version = "1.6.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f"
+checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3169,9 +3196,9 @@ dependencies = [
 
 [[package]]
 name = "dissimilar"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "8975ffdaa0ef3661bfe02dbdcc06c9f829dfafe6a3c474de366a8d5e44276921"
+checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e"
 
 [[package]]
 name = "dlopen2"
@@ -3459,6 +3486,17 @@ version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
 
+[[package]]
+name = "erased-serde"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec"
+dependencies = [
+ "serde",
+ "serde_core",
+ "typeid",
+]
+
 [[package]]
 name = "err_trail"
 version = "0.11.0"
@@ -3522,9 +3560,9 @@ dependencies = [
 
 [[package]]
 name = "euclid"
-version = "0.22.13"
+version = "0.22.14"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "df61bf483e837f88d5c2291dcf55c67be7e676b3a51acc48db3a7b163b91ed63"
+checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
 dependencies = [
  "num-traits",
 ]
@@ -3616,6 +3654,18 @@ dependencies = [
  "siphasher",
 ]
 
+[[package]]
+name = "fastnum"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "4089ab2dfd45d8ddc92febb5ca80644389d5ebb954f40231274a3f18341762e2"
+dependencies = [
+ "bnum",
+ "num-integer",
+ "num-traits",
+ "serde",
+]
+
 [[package]]
 name = "fastrand"
 version = "2.3.0"
@@ -3683,9 +3733,12 @@ checksum = 
"28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
 
 [[package]]
 name = "figlet-rs"
-version = "0.1.5"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4742a071cd9694fc86f9fa1a08fa3e53d40cc899d7ee532295da2d085639fbc5"
+checksum = "aad4cf7e378685c1af30f41b4832c29700325524c648d47752cabd5b97e7b09b"
+dependencies = [
+ "zip 0.6.6",
+]
 
 [[package]]
 name = "figment"
@@ -4927,9 +4980,9 @@ dependencies = [
 
 [[package]]
 name = "iceberg"
-version = "0.8.0"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "e65918e701cf610ab0cea57f7f31db5bf4f973230c2c160244067bce01f7c5fa"
+checksum = "1b795ef2e2197596efad630c5e8cc4b4ebdfc488c02dadc709bef0416e1ffd49"
 dependencies = [
  "anyhow",
  "apache-avro",
@@ -4951,22 +5004,19 @@ dependencies = [
  "chrono",
  "derive_builder",
  "expect-test",
+ "fastnum",
  "flate2",
  "fnv",
  "futures",
  "itertools 0.13.0",
  "moka",
  "murmur3",
- "num-bigint",
  "once_cell",
- "opendal",
  "ordered-float 4.6.0",
  "parquet",
  "rand 0.8.5",
- "reqsign",
  "reqwest 0.12.28",
  "roaring",
- "rust_decimal",
  "serde",
  "serde_bytes",
  "serde_derive",
@@ -4976,6 +5026,7 @@ dependencies = [
  "strum 0.27.2",
  "tokio",
  "typed-builder 0.20.1",
+ "typetag",
  "url",
  "uuid",
  "zstd",
@@ -4983,9 +5034,9 @@ dependencies = [
 
 [[package]]
 name = "iceberg-catalog-rest"
-version = "0.8.0"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d6d5e120317ab88a3af332c17166aad101f2aee9bfb098d63d4525bdd5cc2da7"
+checksum = "892fe71df3f5d1707c7ede042545051aca659a8a4a8ca828c5a13064338f56fc"
 dependencies = [
  "async-trait",
  "chrono",
@@ -5002,6 +5053,25 @@ dependencies = [
  "uuid",
 ]
 
+[[package]]
+name = "iceberg-storage-opendal"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "3b8745ded8db2a4c2febc84ce2d5e9aaf5e2a1c0c9f6a82a1ea8134691e30a0b"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "bytes",
+ "cfg-if",
+ "iceberg",
+ "opendal",
+ "reqsign",
+ "reqwest 0.12.28",
+ "serde",
+ "typetag",
+ "url",
+]
+
 [[package]]
 name = "icu_collections"
 version = "2.1.1"
@@ -5150,7 +5220,7 @@ dependencies = [
  "tokio-tungstenite",
  "tracing",
  "trait-variant",
- "tungstenite",
+ "tungstenite 0.29.0",
  "webpki-roots 1.0.6",
 ]
 
@@ -5207,7 +5277,7 @@ dependencies = [
  "tracing-subscriber",
  "uuid",
  "walkdir",
- "zip",
+ "zip 8.3.0",
 ]
 
 [[package]]
@@ -5233,7 +5303,7 @@ dependencies = [
  "serde_json",
  "thiserror 2.0.18",
  "tokio",
- "toml 1.0.6+spec-1.1.0",
+ "toml 1.0.7+spec-1.1.0",
  "tracing",
  "tracing-appender",
  "tracing-subscriber",
@@ -5284,7 +5354,7 @@ dependencies = [
  "tempfile",
  "thiserror 2.0.18",
  "tokio",
- "toml 1.0.6+spec-1.1.0",
+ "toml 1.0.7+spec-1.1.0",
  "tower-http",
  "tracing",
  "tracing-opentelemetry",
@@ -5374,7 +5444,7 @@ dependencies = [
  "thiserror 2.0.18",
  "tokio",
  "tracing",
- "tungstenite",
+ "tungstenite 0.29.0",
  "twox-hash",
  "ulid",
  "uuid",
@@ -5427,6 +5497,7 @@ dependencies = [
  "dashmap",
  "iceberg",
  "iceberg-catalog-rest",
+ "iceberg-storage-opendal",
  "iggy_connector_sdk",
  "once_cell",
  "parquet",
@@ -5582,7 +5653,7 @@ dependencies = [
  "clap",
  "futures-util",
  "iggy",
- "lz4_flex",
+ "lz4_flex 0.13.0",
  "rand 0.10.0",
  "serde",
  "serde_json",
@@ -5610,9 +5681,9 @@ dependencies = [
 
 [[package]]
 name = "image"
-version = "0.25.9"
+version = "0.25.10"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a"
+checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104"
 dependencies = [
  "bytemuck",
  "byteorder-lite",
@@ -5629,7 +5700,7 @@ dependencies = [
  "rgb",
  "tiff",
  "zune-core 0.5.1",
- "zune-jpeg 0.5.12",
+ "zune-jpeg 0.5.13",
 ]
 
 [[package]]
@@ -5796,12 +5867,12 @@ dependencies = [
  "test-case",
  "testcontainers-modules",
  "tokio",
- "toml 1.0.6+spec-1.1.0",
+ "toml 1.0.7+spec-1.1.0",
  "tracing",
  "tracing-subscriber",
  "twox-hash",
  "uuid",
- "zip",
+ "zip 8.3.0",
 ]
 
 [[package]]
@@ -5907,9 +5978,9 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.17"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
 
 [[package]]
 name = "jiff"
@@ -6317,9 +6388,9 @@ dependencies = [
 
 [[package]]
 name = "libz-sys"
-version = "1.1.24"
+version = "1.1.25"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4735e9cbde5aac84a5ce588f6b23a90b9b0b528f6c5a8db8a4aff300463a0839"
+checksum = "d52f4c29e2a68ac30c9087e1b772dc9f44a2b66ed44edf2266cf2be9b03dafc1"
 dependencies = [
  "cc",
  "libc",
@@ -6454,9 +6525,18 @@ checksum = 
"112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
 
 [[package]]
 name = "lz4_flex"
-version = "0.12.0"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "98c23545df7ecf1b16c303910a69b079e8e251d60f7dd2cc9b4177f2afaf1746"
+dependencies = [
+ "twox-hash",
+]
+
+[[package]]
+name = "lz4_flex"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "ab6473172471198271ff72e9379150e9dfd70d8e533e0752a27e515b48dd375e"
+checksum = "db9a0d582c2874f68138a16ce1867e0ffde6c0bb0a0df85e1f36d04146db488a"
 dependencies = [
  "twox-hash",
 ]
@@ -6743,9 +6823,9 @@ checksum = 
"224484c5d09285a7b8cb0a0c117e847ebd14cb6e4470ecf68cdb89c503b0edb9"
 
 [[package]]
 name = "mongodb"
-version = "3.5.1"
+version = "3.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "803dd859e8afa084c255a8effd8000ff86f7c8076a50cd6d8c99e8f3496f75c2"
+checksum = "2c5941683db2ab2697f71e58dc0319024e808d3b28e7cf20f4bfb445fe54a30b"
 dependencies = [
  "base64 0.22.1",
  "bitflags 2.11.0",
@@ -6789,9 +6869,9 @@ dependencies = [
 
 [[package]]
 name = "mongodb-internal-macros"
-version = "3.5.1"
+version = "3.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "a973ef3dd3dbc6f6e65bbdecfd9ec5e781b9e7493b0f369a7c62e35d8e5ae2c8"
+checksum = "47021a12bbf0dffde9c890fa2d36ff6ae342c532016226b04a42301b2b912660"
 dependencies = [
  "macro_magic",
  "proc-macro2",
@@ -6801,9 +6881,9 @@ dependencies = [
 
 [[package]]
 name = "moxcms"
-version = "0.7.11"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97"
+checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
 dependencies = [
  "num-traits",
  "pxfm",
@@ -7189,9 +7269,9 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.21.3"
+version = "1.21.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
 dependencies = [
  "critical-section",
  "portable-atomic",
@@ -7240,9 +7320,9 @@ dependencies = [
 
 [[package]]
 name = "openssl"
-version = "0.10.75"
+version = "0.10.76"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
+checksum = "951c002c75e16ea2c65b8c7e4d3d51d5530d8dfa7d060b4776828c88cfb18ecf"
 dependencies = [
  "bitflags 2.11.0",
  "cfg-if",
@@ -7281,9 +7361,9 @@ dependencies = [
 
 [[package]]
 name = "openssl-sys"
-version = "0.9.111"
+version = "0.9.112"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
+checksum = "57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb"
 dependencies = [
  "cc",
  "libc",
@@ -7334,9 +7414,9 @@ dependencies = [
 
 [[package]]
 name = "opentelemetry-otlp"
-version = "0.31.0"
+version = "0.31.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf"
+checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f"
 dependencies = [
  "http 1.4.0",
  "opentelemetry",
@@ -7522,7 +7602,7 @@ dependencies = [
  "futures",
  "half",
  "hashbrown 0.16.1",
- "lz4_flex",
+ "lz4_flex 0.12.1",
  "num-bigint",
  "num-integer",
  "num-traits",
@@ -7889,9 +7969,9 @@ checksum = 
"c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
 
 [[package]]
 name = "portable-atomic-util"
-version = "0.2.5"
+version = "0.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5"
+checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3"
 dependencies = [
  "portable-atomic",
 ]
@@ -7998,7 +8078,7 @@ version = "3.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
 dependencies = [
- "toml_edit 0.25.4+spec-1.1.0",
+ "toml_edit 0.25.5+spec-1.1.0",
 ]
 
 [[package]]
@@ -8472,9 +8552,9 @@ dependencies = [
 
 [[package]]
 name = "ravif"
-version = "0.12.0"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "ef69c1990ceef18a116855938e74793a5f7496ee907562bd0857b6ac734ab285"
+checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45"
 dependencies = [
  "avif-serialize",
  "imgref",
@@ -8887,9 +8967,9 @@ dependencies = [
 
 [[package]]
 name = "rmcp"
-version = "1.1.1"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "ee4950422f87cf98fffc36946ad672c3024750b3c301491599715b7d6497dfbc"
+checksum = "ba6b9d2f0efe2258b23767f1f9e0054cfbcac9c2d6f81a031214143096d7864f"
 dependencies = [
  "async-trait",
  "base64 0.22.1",
@@ -8919,9 +8999,9 @@ dependencies = [
 
 [[package]]
 name = "rmcp-macros"
-version = "1.1.1"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "2f9a2cbdcc704fa56c3fe79c681bd8f739d77c68ede3a670faeb6df50f836874"
+checksum = "ab9d95d7ed26ad8306352b0d5f05b593222b272790564589790d210aa15caa9e"
 dependencies = [
  "darling 0.23.0",
  "proc-macro2",
@@ -9196,9 +9276,9 @@ checksum = 
"f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
 
 [[package]]
 name = "rustls-webpki"
-version = "0.103.9"
+version = "0.103.10"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
+checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
 dependencies = [
  "aws-lc-rs",
  "ring",
@@ -9256,9 +9336,9 @@ dependencies = [
 
 [[package]]
 name = "schannel"
-version = "0.1.28"
+version = "0.1.29"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
+checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
 dependencies = [
  "windows-sys 0.61.2",
 ]
@@ -9428,6 +9508,15 @@ dependencies = [
  "serde_derive",
 ]
 
+[[package]]
+name = "serde-big-array"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f"
+dependencies = [
+ "serde",
+]
+
 [[package]]
 name = "serde-wasm-bindgen"
 version = "0.6.5"
@@ -9562,9 +9651,9 @@ dependencies = [
 
 [[package]]
 name = "serde_with"
-version = "3.17.0"
+version = "3.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9"
+checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f"
 dependencies = [
  "base64 0.22.1",
  "chrono",
@@ -9581,11 +9670,11 @@ dependencies = [
 
 [[package]]
 name = "serde_with_macros"
-version = "3.17.0"
+version = "3.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0"
+checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65"
 dependencies = [
- "darling 0.21.3",
+ "darling 0.23.0",
  "proc-macro2",
  "quote",
  "syn 2.0.117",
@@ -9691,13 +9780,12 @@ dependencies = [
  "sysinfo 0.38.4",
  "tempfile",
  "thiserror 2.0.18",
- "toml 1.0.6+spec-1.1.0",
+ "toml 1.0.7+spec-1.1.0",
  "tower-http",
  "tracing",
  "tracing-appender",
  "tracing-opentelemetry",
  "tracing-subscriber",
- "tungstenite",
  "ulid",
  "uuid",
  "vergen-git2",
@@ -10441,9 +10529,9 @@ dependencies = [
 
 [[package]]
 name = "sys_traits"
-version = "0.1.24"
+version = "0.1.26"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "5410f31d223892c1ce7a098da845c99d023b4c7f18632bc8f09e60dfae3cbb75"
+checksum = "fe719c6bb50991671073b1469be68ccbcb5a2a2730873eab49b88c35a908037e"
 dependencies = [
  "sys_traits_macros",
 ]
@@ -10507,9 +10595,9 @@ checksum = 
"55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
 
 [[package]]
 name = "tar"
-version = "0.4.44"
+version = "0.4.45"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a"
+checksum = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973"
 dependencies = [
  "filetime",
  "libc",
@@ -10518,9 +10606,9 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.26.0"
+version = "3.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0"
+checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
 dependencies = [
  "fastrand",
  "getrandom 0.4.2",
@@ -10697,16 +10785,16 @@ dependencies = [
 
 [[package]]
 name = "tiff"
-version = "0.10.3"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
+checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52"
 dependencies = [
  "fax",
  "flate2",
  "half",
  "quick-error",
  "weezl",
- "zune-jpeg 0.4.21",
+ "zune-jpeg 0.5.13",
 ]
 
 [[package]]
@@ -10789,9 +10877,9 @@ dependencies = [
 
 [[package]]
 name = "tinyvec"
-version = "1.10.0"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
+checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
 dependencies = [
  "tinyvec_macros",
 ]
@@ -10853,9 +10941,9 @@ dependencies = [
 
 [[package]]
 name = "tokio-tungstenite"
-version = "0.28.0"
+version = "0.29.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857"
+checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c"
 dependencies = [
  "futures-util",
  "log",
@@ -10863,7 +10951,7 @@ dependencies = [
  "rustls-pki-types",
  "tokio",
  "tokio-rustls",
- "tungstenite",
+ "tungstenite 0.29.0",
  "webpki-roots 0.26.11",
 ]
 
@@ -10883,9 +10971,9 @@ dependencies = [
 
 [[package]]
 name = "tokise"
-version = "0.2.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "decf97738ce15b9e9cc1671ea29b0f6c56538719e1a092d19cc2134bf144e40e"
+checksum = "ba44a1b36f42a95bd21b5e4acc1468547f75a73e7cf619312408d1f74c7fb687"
 dependencies = [
  "futures",
  "gloo",
@@ -10912,17 +11000,17 @@ dependencies = [
 
 [[package]]
 name = "toml"
-version = "1.0.6+spec-1.1.0"
+version = "1.0.7+spec-1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "399b1124a3c9e16766831c6bba21e50192572cdd98706ea114f9502509686ffc"
+checksum = "dd28d57d8a6f6e458bc0b8784f8fdcc4b99a437936056fa122cb234f18656a96"
 dependencies = [
  "indexmap 2.13.0",
  "serde_core",
  "serde_spanned 1.0.4",
- "toml_datetime 1.0.0+spec-1.1.0",
+ "toml_datetime 1.0.1+spec-1.1.0",
  "toml_parser",
  "toml_writer",
- "winnow 0.7.15",
+ "winnow 1.0.0",
 ]
 
 [[package]]
@@ -10936,9 +11024,9 @@ dependencies = [
 
 [[package]]
 name = "toml_datetime"
-version = "1.0.0+spec-1.1.0"
+version = "1.0.1+spec-1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e"
+checksum = "9b320e741db58cac564e26c607d3cc1fdc4a88fd36c879568c07856ed83ff3e9"
 dependencies = [
  "serde_core",
 ]
@@ -10970,23 +11058,23 @@ dependencies = [
 
 [[package]]
 name = "toml_edit"
-version = "0.25.4+spec-1.1.0"
+version = "0.25.5+spec-1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2"
+checksum = "8ca1a40644a28bce036923f6a431df0b34236949d111cc07cb6dca830c9ef2e1"
 dependencies = [
  "indexmap 2.13.0",
- "toml_datetime 1.0.0+spec-1.1.0",
+ "toml_datetime 1.0.1+spec-1.1.0",
  "toml_parser",
- "winnow 0.7.15",
+ "winnow 1.0.0",
 ]
 
 [[package]]
 name = "toml_parser"
-version = "1.0.9+spec-1.1.0"
+version = "1.0.10+spec-1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4"
+checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420"
 dependencies = [
- "winnow 0.7.15",
+ "winnow 1.0.0",
 ]
 
 [[package]]
@@ -10997,9 +11085,9 @@ checksum = 
"5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
 
 [[package]]
 name = "toml_writer"
-version = "1.0.6+spec-1.1.0"
+version = "1.0.7+spec-1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607"
+checksum = "f17aaa1c6e3dc22b1da4b6bba97d066e354c7945cac2f7852d4e4e7ca7a6b56d"
 
 [[package]]
 name = "tonic"
@@ -11183,9 +11271,9 @@ dependencies = [
 
 [[package]]
 name = "tracing-subscriber"
-version = "0.3.22"
+version = "0.3.23"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e"
+checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
 dependencies = [
  "matchers",
  "nu-ansi-term",
@@ -11244,6 +11332,24 @@ dependencies = [
  "utf-8",
 ]
 
+[[package]]
+name = "tungstenite"
+version = "0.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8"
+dependencies = [
+ "bytes",
+ "data-encoding",
+ "http 1.4.0",
+ "httparse",
+ "log",
+ "rand 0.9.2",
+ "rustls",
+ "rustls-pki-types",
+ "sha1",
+ "thiserror 2.0.18",
+]
+
 [[package]]
 name = "twox-hash"
 version = "2.1.2"
@@ -11319,12 +11425,42 @@ version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e"
 
+[[package]]
+name = "typeid"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
+
 [[package]]
 name = "typenum"
 version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
 
+[[package]]
+name = "typetag"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf"
+dependencies = [
+ "erased-serde",
+ "inventory",
+ "once_cell",
+ "serde",
+ "typetag-impl",
+]
+
+[[package]]
+name = "typetag-impl"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.117",
+]
+
 [[package]]
 name = "ucd-trie"
 version = "0.1.7"
@@ -11467,9 +11603,9 @@ checksum = 
"8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
 [[package]]
 name = "ureq"
-version = "3.2.0"
+version = "3.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "fdc97a28575b85cfedf2a7e7d3cc64b3e11bd8ac766666318003abbacc7a21fc"
+checksum = "4ab5172ab0c2b6d01a9bb4f9332f7c1211193ea002742188040d09ea4eafe867"
 dependencies = [
  "base64 0.22.1",
  "flate2",
@@ -11478,7 +11614,7 @@ dependencies = [
  "rustls",
  "rustls-pki-types",
  "ureq-proto",
- "utf-8",
+ "utf8-zero",
  "webpki-roots 1.0.6",
 ]
 
@@ -11552,6 +11688,12 @@ version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091"
 
+[[package]]
+name = "utf8-zero"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e"
+
 [[package]]
 name = "utf8_iter"
 version = "1.0.4"
@@ -12524,6 +12666,15 @@ dependencies = [
  "memchr",
 ]
 
+[[package]]
+name = "winnow"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8"
+dependencies = [
+ "memchr",
+]
+
 [[package]]
 name = "winreg"
 version = "0.50.0"
@@ -12700,9 +12851,9 @@ dependencies = [
 
 [[package]]
 name = "yew"
-version = "0.22.1"
+version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "94b446be974884d87d58548f1662bc50c051996203a17d2558f8d6c56942b6ac"
+checksum = "2c154fadfa97eabdd3f3b79345ceeb9c05ee8f13f76d3d881d17fba618bf558d"
 dependencies = [
  "console_error_panic_hook",
  "futures",
@@ -12725,9 +12876,9 @@ dependencies = [
 
 [[package]]
 name = "yew-macro"
-version = "0.22.1"
+version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "a708a4027c143be6ca160a341700b59f9ecc36a7ebd95e3c477018de8cf71c75"
+checksum = "c08b883d84a035f57519d057f65a2a07ae25f1884ad485e1a9a523c9d880c1ad"
 dependencies = [
  "prettyplease",
  "proc-macro-error",
@@ -12739,9 +12890,9 @@ dependencies = [
 
 [[package]]
 name = "yew-router"
-version = "0.19.0"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "415cb628900ddf1eaf55ebd04163adf1ea80d3f5a9832a876554f9c0fdd4c282"
+checksum = "870bd2a1aa6d608c0c789c122654e25f4927bb6bfe344cc0da3b630ac3c73260"
 dependencies = [
  "gloo",
  "js-sys",
@@ -12758,9 +12909,9 @@ dependencies = [
 
 [[package]]
 name = "yew-router-macro"
-version = "0.19.0"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "9e87a3ce33434ab66a700edbaf2cc8a417d9b89f00a6fd8216fd6ac83b0e7b1c"
+checksum = "8399f1d134ab8e69abc7cded19f114621d520bd9c79c5a0f34091bf664d7325b"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -12792,18 +12943,18 @@ dependencies = [
 
 [[package]]
 name = "zerocopy"
-version = "0.8.42"
+version = "0.8.47"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3"
+checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.8.42"
+version = "0.8.47"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f"
+checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -12886,9 +13037,21 @@ dependencies = [
 
 [[package]]
 name = "zip"
-version = "8.2.0"
+version = "0.6.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "b680f2a0cd479b4cff6e1233c483fdead418106eae419dc60200ae9850f6d004"
+checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
+dependencies = [
+ "byteorder",
+ "crc32fast",
+ "crossbeam-utils",
+ "flate2",
+]
+
+[[package]]
+name = "zip"
+version = "8.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "4a243cfad17427fc077f529da5a95abe4e94fd2bfdb601611870a6557cc67657"
 dependencies = [
  "crc32fast",
  "flate2",
@@ -12982,9 +13145,9 @@ dependencies = [
 
 [[package]]
 name = "zune-jpeg"
-version = "0.5.12"
+version = "0.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "410e9ecef634c709e3831c2cfdb8d9c32164fae1c67496d5b68fff728eec37fe"
+checksum = "ec5f41c76397b7da451efd19915684f727d7e1d516384ca6bd0ec43ec94de23c"
 dependencies = [
  "zune-core 0.5.1",
 ]
diff --git a/Cargo.toml b/Cargo.toml
index 2abd1fe87..3843f5649 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -71,7 +71,7 @@ argon2 = "0.5.3"
 arrow = "57.3.0"
 arrow-array = "57.3.0"
 arrow-json = "57.3.0"
-assert_cmd = "2.1.2"
+assert_cmd = "2.2.0"
 async-broadcast = "0.7.2"
 async-channel = "2.5.0"
 async-dropper = { version = "0.3.1", features = ["tokio", "simple"] }
@@ -85,16 +85,16 @@ bench-dashboard-server = { path = 
"core/bench/dashboard/server" }
 bench-dashboard-shared = { path = "core/bench/dashboard/shared" }
 bench-report = { path = "core/bench/report" }
 bench-runner = { path = "core/bench/runner" }
-bit-set = "0.8.0"
+bit-set = "0.9.1"
 blake3 = "1.8.3"
-bon = "3.9.0"
+bon = "3.9.1"
 byte-unit = { version = "5.2.0", default-features = false, features = 
["serde", "byte", "std"] }
 bytemuck = { version = "1.25", features = ["derive", "min_const_generics"] }
 bytes = "1.11.1"
 charming = "0.6.0"
 chrono = { version = "0.4.44", features = ["serde"] }
-clap = { version = "4.5.60", features = ["derive", "wrap_help"] }
-clap_complete = "4.5.66"
+clap = { version = "4.6.0", features = ["derive", "wrap_help"] }
+clap_complete = "4.6.0"
 clock = { path = "core/clock" }
 colored = "3.1.1"
 comfy-table = "7.2.2"
@@ -118,11 +118,11 @@ configs_derive = { path = "core/configs_derive", version 
= "0.1.0" }
 consensus = { path = "core/consensus" }
 console-subscriber = "0.5.0"
 crossbeam = "0.8.4"
-crossfire = "3.1.5"
+crossfire = "3.1.7"
 ctor = "0.6.3"
 ctrlc = { version = "3.5", features = ["termination"] }
 cucumber = "0.22"
-cyper = { version = "0.8.2", features = ["rustls"], default-features = false }
+cyper = { version = "0.8.3", features = ["rustls"], default-features = false }
 cyper-axum = { version = "0.8.0" }
 darling = "0.23"
 dashmap = "6.1.0"
@@ -139,7 +139,7 @@ enumset = "1.1"
 env_logger = "0.11.9"
 err_trail = { version = "0.11.0", features = ["tracing"] }
 error_set = "0.9.1"
-figlet-rs = "0.1.5"
+figlet-rs = "1.0.0"
 figment = { version = "0.10.19", features = ["toml", "env"] }
 file-operation = "0.8.19"
 flatbuffers = "25.12.19"
@@ -157,8 +157,9 @@ hostname = "0.4.2"
 human-repr = "1.1.0"
 humantime = "2.3.0"
 hwlocality = "1.0.0-alpha.11"
-iceberg = "0.8.0"
-iceberg-catalog-rest = "0.8.0"
+iceberg = "0.9.0"
+iceberg-catalog-rest = "0.9.0"
+iceberg-storage-opendal = "0.9.0"
 iggy = { path = "core/sdk", version = "0.9.3-edge.1" }
 iggy-cli = { path = "core/cli", version = "0.11.3-edge.1" }
 iggy_binary_protocol = { path = "core/binary_protocol", version = 
"0.9.3-edge.1" }
@@ -174,22 +175,22 @@ left-right = "0.11"
 lending-iterator = "0.1.7"
 libc = "0.2.183"
 log = "0.4.29"
-lz4_flex = "0.12.0"
+lz4_flex = "0.13.0"
 message_bus = { path = "core/message_bus" }
 metadata = { path = "core/metadata" }
 mimalloc = "0.1"
 mime_guess = "2.0"
 mockall = "0.14.0"
 moka = { version = "0.12.14", features = ["future"] }
-mongodb = { version = "3.5.1", features = ["rustls-tls"] }
+mongodb = { version = "3.5.2", features = ["rustls-tls"] }
 nix = { version = "0.31.2", features = ["fs", "resource", "sched"] }
 nonzero_lit = "0.1.2"
 notify = "8.2.0"
 octocrab = "0.49.5"
-once_cell = "1.21.3"
+once_cell = "1.21.4"
 opentelemetry = { version = "0.31.0", features = ["trace", "logs"] }
 opentelemetry-appender-tracing = { version = "0.31.1", features = ["log"] }
-opentelemetry-otlp = { version = "0.31.0", features = [
+opentelemetry-otlp = { version = "0.31.1", features = [
     "logs",
     "trace",
     "grpc-tonic",
@@ -231,7 +232,7 @@ reqwest-retry = "0.9.1"
 reqwest-tracing = "0.7.0"
 ring = "0.17.14"
 ringbuffer = "0.16.0"
-rmcp = "1.1.1"
+rmcp = "1.2.0"
 rmp-serde = "1.3.1"
 rolling-file = "0.2.0"
 rust-embed = "8.11.0"
@@ -242,7 +243,7 @@ secrecy = { version = "0.10", features = ["serde"] }
 send_wrapper = "0.6.0"
 serde = { version = "1.0.228", features = ["derive", "rc"] }
 serde_json = "1.0.149"
-serde_with = { version = "3.17.0", features = ["base64", "macros"] }
+serde_with = { version = "3.18.0", features = ["base64", "macros"] }
 serde_yaml_ng = "0.10.0"
 serial_test = "3.4.0"
 server = { path = "core/server" }
@@ -261,26 +262,26 @@ strum = { version = "0.28.0", features = ["derive"] }
 strum_macros = "0.28.0"
 syn = { version = "2", features = ["full", "extra-traits"] }
 sysinfo = "0.38.4"
-tempfile = "3.26.0"
+tempfile = "3.27.0"
 test-case = "3.3.1"
 testcontainers-modules = { version = "0.15.0", features = ["postgres"] }
 thiserror = "2.0.18"
 tokio = { version = "1.50.0", features = ["full"] }
 tokio-rustls = "0.26.4"
-tokio-tungstenite = { version = "0.28", features = ["rustls-tls-webpki-roots"] 
}
+tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"] 
}
 tokio-util = { version = "0.7.18", features = ["compat"] }
-toml = "1.0.6"
+toml = "1.0.7"
 tower-http = { version = "0.6.8", features = ["add-extension", "cors", 
"trace"] }
 tracing = "0.1.44"
 tracing-appender = "0.2.4"
 tracing-opentelemetry = "0.32.1"
-tracing-subscriber = { version = "0.3.22", default-features = false, features 
= [
+tracing-subscriber = { version = "0.3.23", default-features = false, features 
= [
     "fmt",
     "env-filter",
     "ansi",
 ] }
 trait-variant = "0.1.2"
-tungstenite = "0.28.0"
+tungstenite = "0.29.0"
 twox-hash = { version = "2.1.2", features = ["xxhash32"] }
 ulid = "1.2.1"
 uuid = { version = "1.22.0", features = ["v4", "v7", "fast-rng", "serde", 
"zerocopy"] }
@@ -297,9 +298,9 @@ web-sys = { version = "0.3", features = [
     "ResizeObserverEntry",
 ] }
 webpki-roots = "1.0.6"
-yew = { version = "0.22", features = ["csr"] }
-yew-router = "0.19"
-zip = { version = "8.2.0", default-features = false, features = ["deflate"] }
+yew = { version = "0.23", features = ["csr"] }
+yew-router = "0.20"
+zip = { version = "8.3.0", default-features = false, features = ["deflate"] }
 
 [profile.release]
 lto = true
diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md
index 804404fb9..e89e01db6 100644
--- a/DEPENDENCIES.md
+++ b/DEPENDENCIES.md
@@ -25,9 +25,9 @@ alloc-no-stdlib: 2.0.4, "BSD-3-Clause",
 alloc-stdlib: 0.2.2, "BSD-3-Clause",
 allocator-api2: 0.2.21, "Apache-2.0 OR MIT",
 android_system_properties: 0.1.5, "Apache-2.0 OR MIT",
-anstream: 0.6.21, "Apache-2.0 OR MIT",
-anstyle: 1.0.13, "Apache-2.0 OR MIT",
-anstyle-parse: 0.2.7, "Apache-2.0 OR MIT",
+anstream: 1.0.0, "Apache-2.0 OR MIT",
+anstyle: 1.0.14, "Apache-2.0 OR MIT",
+anstyle-parse: 1.0.0, "Apache-2.0 OR MIT",
 anstyle-query: 1.1.5, "Apache-2.0 OR MIT",
 anstyle-wincon: 3.0.11, "Apache-2.0 OR MIT",
 anyhow: 1.0.102, "Apache-2.0 OR MIT",
@@ -55,7 +55,7 @@ as-slice: 0.2.1, "Apache-2.0 OR MIT",
 asn1-rs: 0.7.1, "Apache-2.0 OR MIT",
 asn1-rs-derive: 0.6.0, "Apache-2.0 OR MIT",
 asn1-rs-impl: 0.2.0, "Apache-2.0 OR MIT",
-assert_cmd: 2.1.2, "Apache-2.0 OR MIT",
+assert_cmd: 2.2.0, "Apache-2.0 OR MIT",
 astral-tokio-tar: 0.5.6, "Apache-2.0 OR MIT",
 async-broadcast: 0.7.2, "Apache-2.0 OR MIT",
 async-channel: 2.5.0, "Apache-2.0 OR MIT",
@@ -79,8 +79,8 @@ autotools: 0.2.7, "MIT",
 av-scenechange: 0.14.1, "MIT",
 av1-grain: 0.2.5, "BSD-2-Clause",
 avif-serialize: 0.8.8, "BSD-3-Clause",
-aws-lc-rs: 1.16.1, "(Apache-2.0 OR ISC) AND ISC",
-aws-lc-sys: 0.38.0, "(Apache-2.0 OR ISC) AND ISC AND OpenSSL",
+aws-lc-rs: 1.16.2, "(Apache-2.0 OR ISC) AND ISC",
+aws-lc-sys: 0.39.0, "(Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR ISC OR 
MIT-0) AND (Apache-2.0 OR ISC) AND Apache-2.0 AND BSD-3-Clause AND ISC AND MIT",
 axum: 0.8.8, "MIT",
 axum-core: 0.5.6, "MIT",
 axum-macros: 0.5.0, "MIT",
@@ -103,7 +103,9 @@ bimap: 0.6.3, "Apache-2.0 OR MIT",
 bincode: 1.3.3, "MIT",
 bindgen: 0.71.1, "BSD-3-Clause",
 bit-set: 0.8.0, "Apache-2.0 OR MIT",
+bit-set: 0.9.1, "Apache-2.0 OR MIT",
 bit-vec: 0.8.0, "Apache-2.0 OR MIT",
+bit-vec: 0.9.1, "Apache-2.0 OR MIT",
 bit_field: 0.10.3, "Apache-2.0 OR MIT",
 bitflags: 1.3.2, "Apache-2.0 OR MIT",
 bitflags: 2.11.0, "Apache-2.0 OR MIT",
@@ -113,13 +115,14 @@ blake2: 0.10.6, "Apache-2.0 OR MIT",
 blake3: 1.8.3, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR CC0-1.0",
 block-buffer: 0.10.4, "Apache-2.0 OR MIT",
 block2: 0.6.2, "MIT",
-bollard: 0.20.1, "Apache-2.0",
+bnum: 0.12.1, "Apache-2.0 OR MIT",
+bollard: 0.20.2, "Apache-2.0",
 bollard-buildkit-proto: 0.7.0, "Apache-2.0",
 bollard-stubs: 1.52.1-rc.29.1.3, "Apache-2.0",
-bon: 3.9.0, "Apache-2.0 OR MIT",
-bon-macros: 3.9.0, "Apache-2.0 OR MIT",
-borsh: 1.6.0, "Apache-2.0 OR MIT",
-borsh-derive: 1.6.0, "Apache-2.0",
+bon: 3.9.1, "Apache-2.0 OR MIT",
+bon-macros: 3.9.1, "Apache-2.0 OR MIT",
+borsh: 1.6.1, "Apache-2.0 OR MIT",
+borsh-derive: 1.6.1, "Apache-2.0",
 brotli: 8.0.2, "BSD-3-Clause AND MIT",
 brotli-decompressor: 5.0.0, "BSD-3-Clause OR MIT",
 bson: 2.15.0, "MIT",
@@ -142,7 +145,7 @@ capacity_builder: 0.5.0, "MIT",
 capacity_builder_macros: 0.3.0, "MIT",
 cargo-platform: 0.3.2, "Apache-2.0 OR MIT",
 cargo_metadata: 0.23.1, "MIT",
-cc: 1.2.56, "Apache-2.0 OR MIT",
+cc: 1.2.57, "Apache-2.0 OR MIT",
 cesu8: 1.1.0, "Apache-2.0 OR MIT",
 cexpr: 0.6.0, "Apache-2.0 OR MIT",
 cfg-if: 1.0.4, "Apache-2.0 OR MIT",
@@ -153,16 +156,16 @@ charming_macros: 0.1.0, "Apache-2.0 OR MIT",
 chrono: 0.4.44, "Apache-2.0 OR MIT",
 cipher: 0.4.4, "Apache-2.0 OR MIT",
 clang-sys: 1.8.1, "Apache-2.0",
-clap: 4.5.60, "Apache-2.0 OR MIT",
-clap_builder: 4.5.60, "Apache-2.0 OR MIT",
-clap_complete: 4.5.66, "Apache-2.0 OR MIT",
-clap_derive: 4.5.55, "Apache-2.0 OR MIT",
-clap_lex: 1.0.0, "Apache-2.0 OR MIT",
+clap: 4.6.0, "Apache-2.0 OR MIT",
+clap_builder: 4.6.0, "Apache-2.0 OR MIT",
+clap_complete: 4.6.0, "Apache-2.0 OR MIT",
+clap_derive: 4.6.0, "Apache-2.0 OR MIT",
+clap_lex: 1.1.0, "Apache-2.0 OR MIT",
 clock: 0.1.0, "N/A",
 cmake: 0.1.57, "Apache-2.0 OR MIT",
 cobs: 0.3.0, "Apache-2.0 OR MIT",
 color_quant: 1.1.0, "MIT",
-colorchoice: 1.0.4, "Apache-2.0 OR MIT",
+colorchoice: 1.0.5, "Apache-2.0 OR MIT",
 colored: 3.1.1, "MPL-2.0",
 combine: 4.6.7, "MIT",
 comfy-table: 7.2.2, "MIT",
@@ -184,7 +187,7 @@ concurrent-queue: 2.5.0, "Apache-2.0 OR MIT",
 configs: 0.1.0, "Apache-2.0",
 configs_derive: 0.1.0, "Apache-2.0",
 consensus: 0.1.0, "Apache-2.0",
-console: 0.16.2, "MIT",
+console: 0.16.3, "MIT",
 console_error_panic_hook: 0.1.7, "Apache-2.0 OR MIT",
 const-oid: 0.9.6, "Apache-2.0 OR MIT",
 const-random: 0.1.18, "Apache-2.0 OR MIT",
@@ -212,7 +215,7 @@ crossbeam-deque: 0.8.6, "Apache-2.0 OR MIT",
 crossbeam-epoch: 0.9.18, "Apache-2.0 OR MIT",
 crossbeam-queue: 0.3.12, "Apache-2.0 OR MIT",
 crossbeam-utils: 0.8.21, "Apache-2.0 OR MIT",
-crossfire: 3.1.5, "Apache-2.0",
+crossfire: 3.1.7, "Apache-2.0",
 crossterm: 0.29.0, "MIT",
 crossterm_winapi: 0.9.1, "MIT",
 crunchy: 0.2.4, "MIT",
@@ -227,7 +230,7 @@ cucumber-codegen: 0.22.1, "Apache-2.0 OR MIT",
 cucumber-expressions: 0.5.0, "Apache-2.0 OR MIT",
 curve25519-dalek: 4.1.3, "BSD-3-Clause",
 curve25519-dalek-derive: 0.1.1, "Apache-2.0 OR MIT",
-cyper: 0.8.2, "MIT",
+cyper: 0.8.3, "MIT",
 cyper-axum: 0.8.0, "MIT",
 cyper-core: 0.8.0, "MIT",
 darling: 0.20.11, "MIT",
@@ -257,7 +260,7 @@ der-parser: 10.0.0, "Apache-2.0 OR MIT",
 deranged: 0.5.8, "Apache-2.0 OR MIT",
 derive-new: 0.7.0, "MIT",
 derive-syn-parse: 0.2.0, "Apache-2.0 OR MIT",
-derive-where: 1.6.0, "Apache-2.0 OR MIT",
+derive-where: 1.6.1, "Apache-2.0 OR MIT",
 derive_builder: 0.20.2, "Apache-2.0 OR MIT",
 derive_builder_core: 0.20.2, "Apache-2.0 OR MIT",
 derive_builder_macro: 0.20.2, "Apache-2.0 OR MIT",
@@ -270,7 +273,7 @@ dirs: 6.0.0, "Apache-2.0 OR MIT",
 dirs-sys: 0.5.0, "Apache-2.0 OR MIT",
 dispatch2: 0.3.1, "Apache-2.0 OR MIT OR Zlib",
 displaydoc: 0.2.5, "Apache-2.0 OR MIT",
-dissimilar: 1.0.10, "Apache-2.0",
+dissimilar: 1.0.11, "Apache-2.0",
 dlopen2: 0.8.2, "MIT",
 dlopen2_derive: 0.4.3, "MIT",
 dlv-list: 0.5.2, "Apache-2.0 OR MIT",
@@ -300,13 +303,14 @@ enumset_derive: 0.14.0, "Apache-2.0 OR MIT",
 equator: 0.4.2, "MIT",
 equator-macro: 0.4.2, "MIT",
 equivalent: 1.0.2, "Apache-2.0 OR MIT",
+erased-serde: 0.4.10, "Apache-2.0 OR MIT",
 err_trail: 0.11.0, "Apache-2.0",
 errno: 0.3.14, "Apache-2.0 OR MIT",
 error_set: 0.9.1, "Apache-2.0",
 error_set_impl: 0.9.1, "Apache-2.0",
 etcetera: 0.8.0, "Apache-2.0 OR MIT",
 etcetera: 0.11.0, "Apache-2.0 OR MIT",
-euclid: 0.22.13, "Apache-2.0 OR MIT",
+euclid: 0.22.14, "Apache-2.0 OR MIT",
 event-listener: 5.4.1, "Apache-2.0 OR MIT",
 event-listener-strategy: 0.5.4, "Apache-2.0 OR MIT",
 expect-test: 1.5.1, "Apache-2.0 OR MIT",
@@ -315,6 +319,7 @@ ext-trait: 1.0.1, "Apache-2.0 OR MIT OR Zlib",
 ext-trait-proc_macros: 1.0.1, "Apache-2.0 OR MIT OR Zlib",
 extension-traits: 1.0.1, "Apache-2.0 OR MIT OR Zlib",
 fastbloom: 0.14.1, "Apache-2.0 OR MIT",
+fastnum: 0.7.4, "Apache-2.0 OR MIT",
 fastrand: 2.3.0, "Apache-2.0 OR MIT",
 fax: 0.2.6, "MIT",
 fax_derive: 0.2.0, "MIT",
@@ -322,7 +327,7 @@ fdeflate: 0.3.7, "Apache-2.0 OR MIT",
 ferroid: 0.8.9, "Apache-2.0 OR MIT",
 ff: 0.13.1, "Apache-2.0 OR MIT",
 fiat-crypto: 0.2.9, "Apache-2.0 OR BSD-1-Clause OR MIT",
-figlet-rs: 0.1.5, "Apache-2.0",
+figlet-rs: 1.0.0, "Apache-2.0",
 figment: 0.10.19, "Apache-2.0 OR MIT",
 file-operation: 0.8.19, "MIT",
 filetime: 0.2.27, "Apache-2.0 OR MIT",
@@ -432,8 +437,9 @@ hyper-util: 0.1.20, "MIT",
 hyperlocal: 0.9.1, "MIT",
 iana-time-zone: 0.1.65, "Apache-2.0 OR MIT",
 iana-time-zone-haiku: 0.1.2, "Apache-2.0 OR MIT",
-iceberg: 0.8.0, "Apache-2.0",
-iceberg-catalog-rest: 0.8.0, "Apache-2.0",
+iceberg: 0.9.0, "Apache-2.0",
+iceberg-catalog-rest: 0.9.0, "Apache-2.0",
+iceberg-storage-opendal: 0.9.0, "Apache-2.0",
 icu_collections: 2.1.1, "Unicode-3.0",
 icu_locale_core: 2.1.1, "Unicode-3.0",
 icu_normalizer: 2.1.1, "Unicode-3.0",
@@ -466,7 +472,7 @@ iggy_connector_sdk: 0.2.1-edge.1, "Apache-2.0",
 iggy_connector_stdout_sink: 0.3.2-edge.1, "Apache-2.0",
 iggy_examples: 0.0.6, "Apache-2.0",
 ignore: 0.4.25, "MIT OR Unlicense",
-image: 0.25.9, "Apache-2.0 OR MIT",
+image: 0.25.10, "Apache-2.0 OR MIT",
 image-webp: 0.2.4, "Apache-2.0 OR MIT",
 imagesize: 0.13.0, "MIT",
 imgref: 1.12.0, "Apache-2.0 OR CC0-1.0",
@@ -493,7 +499,7 @@ iri-string: 0.7.10, "Apache-2.0 OR MIT",
 is_terminal_polyfill: 1.70.2, "Apache-2.0 OR MIT",
 itertools: 0.13.0, "Apache-2.0 OR MIT",
 itertools: 0.14.0, "Apache-2.0 OR MIT",
-itoa: 1.0.17, "Apache-2.0 OR MIT",
+itoa: 1.0.18, "Apache-2.0 OR MIT",
 jiff: 0.2.23, "MIT OR Unlicense",
 jiff-static: 0.2.23, "MIT OR Unlicense",
 jiff-tzdb: 0.1.6, "MIT OR Unlicense",
@@ -535,7 +541,7 @@ libm: 0.2.16, "MIT",
 libmimalloc-sys: 0.1.44, "MIT",
 libredox: 0.1.14, "MIT",
 libsqlite3-sys: 0.30.1, "MIT",
-libz-sys: 1.1.24, "Apache-2.0 OR MIT",
+libz-sys: 1.1.25, "Apache-2.0 OR MIT",
 linked-hash-map: 0.5.6, "Apache-2.0 OR MIT",
 linux-raw-sys: 0.4.15, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
 linux-raw-sys: 0.12.1, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
@@ -551,7 +557,8 @@ logos-derive: 0.15.1, "Apache-2.0 OR MIT",
 loom: 0.7.2, "MIT",
 loop9: 0.1.5, "MIT",
 lru-slab: 0.1.2, "Apache-2.0 OR MIT OR Zlib",
-lz4_flex: 0.12.0, "MIT",
+lz4_flex: 0.12.1, "MIT",
+lz4_flex: 0.13.0, "MIT",
 macro_magic: 0.5.1, "MIT",
 macro_magic_core: 0.5.1, "MIT",
 macro_magic_core_macros: 0.5.1, "MIT",
@@ -579,9 +586,9 @@ mockall_derive: 0.14.0, "Apache-2.0 OR MIT",
 moka: 0.12.14, "(Apache-2.0 OR MIT) AND Apache-2.0",
 mongocrypt: 0.3.2, "Apache-2.0",
 mongocrypt-sys: 0.1.5+1.15.1, "Apache-2.0",
-mongodb: 3.5.1, "Apache-2.0",
-mongodb-internal-macros: 3.5.1, "Apache-2.0",
-moxcms: 0.7.11, "Apache-2.0 OR BSD-3-Clause",
+mongodb: 3.5.2, "Apache-2.0",
+mongodb-internal-macros: 3.5.2, "Apache-2.0",
+moxcms: 0.8.1, "Apache-2.0 OR BSD-3-Clause",
 murmur3: 0.5.2, "Apache-2.0 OR MIT",
 never-say-never: 6.6.666, "Apache-2.0 OR MIT OR Zlib",
 new_debug_unreachable: 1.0.6, "MIT",
@@ -619,19 +626,19 @@ objc2-encode: 4.1.0, "MIT",
 objc2-io-kit: 0.3.2, "Apache-2.0 OR MIT OR Zlib",
 octocrab: 0.49.5, "Apache-2.0 OR MIT",
 oid-registry: 0.8.1, "Apache-2.0 OR MIT",
-once_cell: 1.21.3, "Apache-2.0 OR MIT",
+once_cell: 1.21.4, "Apache-2.0 OR MIT",
 once_cell_polyfill: 1.70.2, "Apache-2.0 OR MIT",
 opaque-debug: 0.3.1, "Apache-2.0 OR MIT",
 opendal: 0.55.0, "Apache-2.0",
-openssl: 0.10.75, "Apache-2.0",
+openssl: 0.10.76, "Apache-2.0",
 openssl-macros: 0.1.1, "Apache-2.0 OR MIT",
 openssl-probe: 0.2.1, "Apache-2.0 OR MIT",
 openssl-src: 300.5.5+3.5.5, "Apache-2.0 OR MIT",
-openssl-sys: 0.9.111, "MIT",
+openssl-sys: 0.9.112, "MIT",
 opentelemetry: 0.31.0, "Apache-2.0",
 opentelemetry-appender-tracing: 0.31.1, "Apache-2.0",
 opentelemetry-http: 0.31.0, "Apache-2.0",
-opentelemetry-otlp: 0.31.0, "Apache-2.0",
+opentelemetry-otlp: 0.31.1, "Apache-2.0",
 opentelemetry-proto: 0.31.0, "Apache-2.0",
 opentelemetry-semantic-conventions: 0.31.0, "Apache-2.0",
 opentelemetry_sdk: 0.31.0, "Apache-2.0",
@@ -685,7 +692,7 @@ polling: 3.11.0, "Apache-2.0 OR MIT",
 polonius-the-crab: 0.2.1, "Apache-2.0 OR MIT OR Zlib",
 polyval: 0.6.2, "Apache-2.0 OR MIT",
 portable-atomic: 1.13.1, "Apache-2.0 OR MIT",
-portable-atomic-util: 0.2.5, "Apache-2.0 OR MIT",
+portable-atomic-util: 0.2.6, "Apache-2.0 OR MIT",
 postcard: 1.1.3, "Apache-2.0 OR MIT",
 potential_utf: 0.1.4, "Unicode-3.0",
 powerfmt: 0.2.0, "Apache-2.0 OR MIT",
@@ -739,7 +746,7 @@ rand_core: 0.9.5, "Apache-2.0 OR MIT",
 rand_core: 0.10.0, "Apache-2.0 OR MIT",
 rand_xoshiro: 0.8.0, "Apache-2.0 OR MIT",
 rav1e: 0.8.1, "BSD-2-Clause",
-ravif: 0.12.0, "BSD-3-Clause",
+ravif: 0.13.0, "BSD-3-Clause",
 raw-cpuid: 11.6.0, "MIT",
 rayon: 1.11.0, "Apache-2.0 OR MIT",
 rayon-core: 1.13.0, "Apache-2.0 OR MIT",
@@ -769,8 +776,8 @@ ring: 0.17.14, "Apache-2.0 AND ISC",
 ringbuffer: 0.16.0, "MIT",
 rkyv: 0.7.46, "MIT",
 rkyv_derive: 0.7.46, "MIT",
-rmcp: 1.1.1, "Apache-2.0",
-rmcp-macros: 1.1.1, "Apache-2.0",
+rmcp: 1.2.0, "Apache-2.0",
+rmcp-macros: 1.2.0, "Apache-2.0",
 rmp: 0.8.15, "MIT",
 rmp-serde: 1.3.1, "MIT",
 roaring: 0.11.3, "Apache-2.0 OR MIT",
@@ -795,13 +802,13 @@ rustls-pemfile: 2.2.0, "Apache-2.0 OR ISC OR MIT",
 rustls-pki-types: 1.14.0, "Apache-2.0 OR MIT",
 rustls-platform-verifier: 0.6.2, "Apache-2.0 OR MIT",
 rustls-platform-verifier-android: 0.1.1, "Apache-2.0 OR MIT",
-rustls-webpki: 0.103.9, "ISC",
+rustls-webpki: 0.103.10, "ISC",
 rustversion: 1.0.22, "Apache-2.0 OR MIT",
 rustybuzz: 0.20.1, "MIT",
 ryu: 1.0.23, "Apache-2.0 OR BSL-1.0",
 same-file: 1.0.6, "MIT OR Unlicense",
 scc: 2.4.0, "Apache-2.0",
-schannel: 0.1.28, "MIT",
+schannel: 0.1.29, "MIT",
 schemars: 0.9.0, "MIT",
 schemars: 1.2.1, "MIT",
 schemars_derive: 1.2.1, "MIT",
@@ -819,6 +826,7 @@ semver: 1.0.27, "Apache-2.0 OR MIT",
 send_wrapper: 0.6.0, "Apache-2.0 OR MIT",
 seq-macro: 0.3.6, "Apache-2.0 OR MIT",
 serde: 1.0.228, "Apache-2.0 OR MIT",
+serde-big-array: 0.5.1, "Apache-2.0 OR MIT",
 serde-wasm-bindgen: 0.6.5, "MIT",
 serde_bytes: 0.11.19, "Apache-2.0 OR MIT",
 serde_core: 1.0.228, "Apache-2.0 OR MIT",
@@ -831,8 +839,8 @@ serde_spanned: 0.6.9, "Apache-2.0 OR MIT",
 serde_spanned: 1.0.4, "Apache-2.0 OR MIT",
 serde_urlencoded: 0.7.1, "Apache-2.0 OR MIT",
 serde_v8: 0.260.0, "MIT",
-serde_with: 3.17.0, "Apache-2.0 OR MIT",
-serde_with_macros: 3.17.0, "Apache-2.0 OR MIT",
+serde_with: 3.18.0, "Apache-2.0 OR MIT",
+serde_with_macros: 3.18.0, "Apache-2.0 OR MIT",
 serde_yaml_ng: 0.10.0, "MIT",
 serial_test: 3.4.0, "MIT",
 serial_test_derive: 3.4.0, "MIT",
@@ -898,15 +906,15 @@ synstructure: 0.13.2, "MIT",
 synthez: 0.4.0, "BlueOak-1.0.0",
 synthez-codegen: 0.4.0, "BlueOak-1.0.0",
 synthez-core: 0.4.0, "BlueOak-1.0.0",
-sys_traits: 0.1.24, "MIT",
+sys_traits: 0.1.26, "MIT",
 sys_traits_macros: 0.1.0, "MIT",
 sysinfo: 0.37.2, "MIT",
 sysinfo: 0.38.4, "MIT",
 tagptr: 0.2.0, "Apache-2.0 OR MIT",
 take_mut: 0.2.2, "MIT",
 tap: 1.0.1, "MIT",
-tar: 0.4.44, "Apache-2.0 OR MIT",
-tempfile: 3.26.0, "Apache-2.0 OR MIT",
+tar: 0.4.45, "Apache-2.0 OR MIT",
+tempfile: 3.27.0, "Apache-2.0 OR MIT",
 terminal_size: 0.4.3, "Apache-2.0 OR MIT",
 termtree: 0.5.1, "MIT",
 test-case: 3.3.1, "MIT",
@@ -922,7 +930,7 @@ thiserror-impl: 1.0.69, "Apache-2.0 OR MIT",
 thiserror-impl: 2.0.18, "Apache-2.0 OR MIT",
 thread_local: 1.1.9, "Apache-2.0 OR MIT",
 thrift: 0.17.0, "Apache-2.0",
-tiff: 0.10.3, "MIT",
+tiff: 0.11.3, "MIT",
 time: 0.3.47, "Apache-2.0 OR MIT",
 time-core: 0.1.8, "Apache-2.0 OR MIT",
 time-macros: 0.2.27, "Apache-2.0 OR MIT",
@@ -930,25 +938,25 @@ tiny-keccak: 2.0.2, "CC0-1.0",
 tiny-skia: 0.11.4, "BSD-3-Clause",
 tiny-skia-path: 0.11.4, "BSD-3-Clause",
 tinystr: 0.8.2, "Unicode-3.0",
-tinyvec: 1.10.0, "Apache-2.0 OR MIT OR Zlib",
+tinyvec: 1.11.0, "Apache-2.0 OR MIT OR Zlib",
 tinyvec_macros: 0.1.1, "Apache-2.0 OR MIT OR Zlib",
 tokio: 1.50.0, "MIT",
 tokio-macros: 2.6.1, "MIT",
 tokio-rustls: 0.26.4, "Apache-2.0 OR MIT",
 tokio-stream: 0.1.18, "MIT",
-tokio-tungstenite: 0.28.0, "MIT",
+tokio-tungstenite: 0.29.0, "MIT",
 tokio-util: 0.7.18, "MIT",
-tokise: 0.2.0, "Apache-2.0 OR MIT",
+tokise: 0.2.1, "Apache-2.0 OR MIT",
 toml: 0.8.23, "Apache-2.0 OR MIT",
-toml: 1.0.6+spec-1.1.0, "Apache-2.0 OR MIT",
+toml: 1.0.7+spec-1.1.0, "Apache-2.0 OR MIT",
 toml_datetime: 0.6.11, "Apache-2.0 OR MIT",
-toml_datetime: 1.0.0+spec-1.1.0, "Apache-2.0 OR MIT",
+toml_datetime: 1.0.1+spec-1.1.0, "Apache-2.0 OR MIT",
 toml_edit: 0.19.15, "Apache-2.0 OR MIT",
 toml_edit: 0.22.27, "Apache-2.0 OR MIT",
-toml_edit: 0.25.4+spec-1.1.0, "Apache-2.0 OR MIT",
-toml_parser: 1.0.9+spec-1.1.0, "Apache-2.0 OR MIT",
+toml_edit: 0.25.5+spec-1.1.0, "Apache-2.0 OR MIT",
+toml_parser: 1.0.10+spec-1.1.0, "Apache-2.0 OR MIT",
 toml_write: 0.1.2, "Apache-2.0 OR MIT",
-toml_writer: 1.0.6+spec-1.1.0, "Apache-2.0 OR MIT",
+toml_writer: 1.0.7+spec-1.1.0, "Apache-2.0 OR MIT",
 tonic: 0.14.5, "MIT",
 tonic-prost: 0.14.5, "MIT",
 tools: 0.1.0, "Apache-2.0",
@@ -962,11 +970,12 @@ tracing-attributes: 0.1.31, "MIT",
 tracing-core: 0.1.36, "MIT",
 tracing-log: 0.2.0, "MIT",
 tracing-opentelemetry: 0.32.1, "MIT",
-tracing-subscriber: 0.3.22, "MIT",
+tracing-subscriber: 0.3.23, "MIT",
 trait-variant: 0.1.2, "Apache-2.0 OR MIT",
 try-lock: 0.2.5, "MIT",
 ttf-parser: 0.25.1, "Apache-2.0 OR MIT",
 tungstenite: 0.28.0, "Apache-2.0 OR MIT",
+tungstenite: 0.29.0, "Apache-2.0 OR MIT",
 twox-hash: 2.1.2, "MIT",
 typed-builder: 0.20.1, "Apache-2.0 OR MIT",
 typed-builder: 0.22.0, "Apache-2.0 OR MIT",
@@ -975,7 +984,10 @@ typed-builder-macro: 0.20.1, "Apache-2.0 OR MIT",
 typed-builder-macro: 0.22.0, "Apache-2.0 OR MIT",
 typed-builder-macro: 0.23.2, "Apache-2.0 OR MIT",
 typed-path: 0.12.3, "Apache-2.0 OR MIT",
+typeid: 1.0.3, "Apache-2.0 OR MIT",
 typenum: 1.19.0, "Apache-2.0 OR MIT",
+typetag: 0.2.21, "Apache-2.0 OR MIT",
+typetag-impl: 0.2.21, "Apache-2.0 OR MIT",
 ucd-trie: 0.1.7, "Apache-2.0 OR MIT",
 ulid: 1.2.1, "MIT",
 uncased: 0.9.10, "Apache-2.0 OR MIT",
@@ -997,13 +1009,14 @@ unicode-xid: 0.2.6, "Apache-2.0 OR MIT",
 universal-hash: 0.5.1, "Apache-2.0 OR MIT",
 unsafe-libyaml: 0.2.11, "MIT",
 untrusted: 0.9.0, "ISC",
-ureq: 3.2.0, "Apache-2.0 OR MIT",
+ureq: 3.2.1, "Apache-2.0 OR MIT",
 ureq-proto: 0.5.3, "Apache-2.0 OR MIT",
 url: 2.5.8, "Apache-2.0 OR MIT",
 urlencoding: 2.1.3, "MIT",
 usvg: 0.45.1, "Apache-2.0 OR MIT",
 utf-8: 0.7.6, "Apache-2.0 OR MIT",
 utf8-width: 0.1.8, "MIT",
+utf8-zero: 0.8.1, "Apache-2.0 OR MIT",
 utf8_iter: 1.0.4, "Apache-2.0 OR MIT",
 utf8parse: 0.2.2, "Apache-2.0 OR MIT",
 uuid: 1.22.0, "Apache-2.0 OR MIT",
@@ -1113,6 +1126,7 @@ windows_x86_64_msvc: 0.52.6, "Apache-2.0 OR MIT",
 windows_x86_64_msvc: 0.53.1, "Apache-2.0 OR MIT",
 winnow: 0.5.40, "MIT",
 winnow: 0.7.15, "MIT",
+winnow: 1.0.0, "MIT",
 winreg: 0.50.0, "MIT",
 winsafe: 0.0.19, "MIT",
 wit-bindgen: 0.51.0, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
@@ -1129,14 +1143,14 @@ xmlwriter: 0.1.0, "MIT",
 y4m: 0.8.0, "MIT",
 yansi: 1.0.1, "Apache-2.0 OR MIT",
 yasna: 0.5.2, "Apache-2.0 OR MIT",
-yew: 0.22.1, "Apache-2.0 OR MIT",
-yew-macro: 0.22.1, "Apache-2.0 OR MIT",
-yew-router: 0.19.0, "Apache-2.0 OR MIT",
-yew-router-macro: 0.19.0, "Apache-2.0 OR MIT",
+yew: 0.23.0, "Apache-2.0 OR MIT",
+yew-macro: 0.23.0, "Apache-2.0 OR MIT",
+yew-router: 0.20.0, "Apache-2.0 OR MIT",
+yew-router-macro: 0.20.0, "Apache-2.0 OR MIT",
 yoke: 0.8.1, "Unicode-3.0",
 yoke-derive: 0.8.1, "Unicode-3.0",
-zerocopy: 0.8.42, "Apache-2.0 OR BSD-2-Clause OR MIT",
-zerocopy-derive: 0.8.42, "Apache-2.0 OR BSD-2-Clause OR MIT",
+zerocopy: 0.8.47, "Apache-2.0 OR BSD-2-Clause OR MIT",
+zerocopy-derive: 0.8.47, "Apache-2.0 OR BSD-2-Clause OR MIT",
 zerofrom: 0.1.6, "Unicode-3.0",
 zerofrom-derive: 0.1.6, "Unicode-3.0",
 zeroize: 1.8.2, "Apache-2.0 OR MIT",
@@ -1144,7 +1158,8 @@ zeroize_derive: 1.4.3, "Apache-2.0 OR MIT",
 zerotrie: 0.2.3, "Unicode-3.0",
 zerovec: 0.11.5, "Unicode-3.0",
 zerovec-derive: 0.11.2, "Unicode-3.0",
-zip: 8.2.0, "MIT",
+zip: 0.6.6, "MIT",
+zip: 8.3.0, "MIT",
 zlib-rs: 0.6.3, "Zlib",
 zmij: 1.0.21, "MIT",
 zopfli: 0.8.3, "Apache-2.0",
@@ -1155,4 +1170,4 @@ zune-core: 0.4.12, "Apache-2.0 OR MIT OR Zlib",
 zune-core: 0.5.1, "Apache-2.0 OR MIT OR Zlib",
 zune-inflate: 0.2.54, "Apache-2.0 OR MIT OR Zlib",
 zune-jpeg: 0.4.21, "Apache-2.0 OR MIT OR Zlib",
-zune-jpeg: 0.5.12, "Apache-2.0 OR MIT OR Zlib",
+zune-jpeg: 0.5.13, "Apache-2.0 OR MIT OR Zlib",
diff --git a/core/ai/mcp/src/main.rs b/core/ai/mcp/src/main.rs
index 73135cf1c..bc2af46e4 100644
--- a/core/ai/mcp/src/main.rs
+++ b/core/ai/mcp/src/main.rs
@@ -21,7 +21,7 @@ use ::configs::ConfigProvider;
 use configs::{McpServerConfig, McpTransport};
 use dotenvy::dotenv;
 use error::McpRuntimeError;
-use figlet_rs::FIGfont;
+use figlet_rs::FIGlet;
 use iggy::prelude::{Client, Identifier};
 use rmcp::{ServiceExt, model::ErrorData, transport::stdio};
 use service::IggyService;
@@ -41,7 +41,7 @@ const DEFAULT_CONFIG_PATH: &str = "core/ai/mcp/config.toml";
 
 #[tokio::main]
 async fn main() -> Result<(), McpRuntimeError> {
-    let standard_font = FIGfont::standard().unwrap();
+    let standard_font = FIGlet::standard().unwrap();
     let figure = standard_font.convert("Iggy MCP Server");
     eprintln!("{}", figure.unwrap());
 
diff --git a/core/bench/src/main.rs b/core/bench/src/main.rs
index 77d7d66bf..efcacabd2 100644
--- a/core/bench/src/main.rs
+++ b/core/bench/src/main.rs
@@ -26,7 +26,7 @@ mod utils;
 
 use crate::{args::common::IggyBenchArgs, runner::BenchmarkRunner};
 use clap::Parser;
-use figlet_rs::FIGfont;
+use figlet_rs::FIGlet;
 use iggy::prelude::IggyError;
 use std::fs;
 use std::path::Path;
@@ -36,7 +36,7 @@ use utils::cpu_name::append_cpu_name_lowercase;
 
 #[tokio::main]
 async fn main() -> Result<(), IggyError> {
-    let standard_font = FIGfont::standard().unwrap();
+    let standard_font = FIGlet::standard().unwrap();
     let figure = standard_font.convert("Iggy Bench");
     println!("{}", figure.unwrap());
 
diff --git a/core/cli/src/args/mod.rs b/core/cli/src/args/mod.rs
index 99b7bbd74..428d4d5e4 100644
--- a/core/cli/src/args/mod.rs
+++ b/core/cli/src/args/mod.rs
@@ -21,7 +21,7 @@ use std::path::PathBuf;
 use clap::{Args, Command as ClapCommand};
 use clap::{Parser, Subcommand};
 use clap_complete::{Generator, Shell, generate};
-use figlet_rs::FIGfont;
+use figlet_rs::FIGlet;
 
 use iggy::prelude::{Args as IggyArgs, ArgsOptional as IggyArgsOptional};
 use iggy_cli::commands::binary_context::common::ContextConfig;
@@ -231,7 +231,7 @@ impl IggyConsoleArgs {
             "",
         );
 
-        let standard_font = FIGfont::standard().unwrap();
+        let standard_font = FIGlet::standard().unwrap();
         let figure = standard_font.convert("Iggy CLI").unwrap();
 
         println!("{figure}");
diff --git a/core/connectors/runtime/src/main.rs 
b/core/connectors/runtime/src/main.rs
index cca15d47a..908fe44ad 100644
--- a/core/connectors/runtime/src/main.rs
+++ b/core/connectors/runtime/src/main.rs
@@ -25,7 +25,7 @@ use configs::runtime::ConnectorsRuntimeConfig;
 use dlopen2::wrapper::{Container, WrapperApi};
 use dotenvy::dotenv;
 use error::RuntimeError;
-use figlet_rs::FIGfont;
+use figlet_rs::FIGlet;
 use iggy::prelude::{Client, IggyConsumer, IggyProducer};
 use iggy_connector_sdk::{
     StreamDecoder, StreamEncoder,
@@ -108,7 +108,7 @@ pub(crate) struct SinkApi {
 }
 
 fn print_ascii_art(text: &str) {
-    let standard_font = FIGfont::standard().unwrap();
+    let standard_font = FIGlet::standard().unwrap();
     let figure = standard_font.convert(text);
     println!("{}", figure.unwrap());
 }
diff --git a/core/connectors/sinks/iceberg_sink/Cargo.toml 
b/core/connectors/sinks/iceberg_sink/Cargo.toml
index baff71c9f..527a27d44 100644
--- a/core/connectors/sinks/iceberg_sink/Cargo.toml
+++ b/core/connectors/sinks/iceberg_sink/Cargo.toml
@@ -39,6 +39,7 @@ async-trait = { workspace = true }
 dashmap = { workspace = true }
 iceberg = { workspace = true }
 iceberg-catalog-rest = { workspace = true }
+iceberg-storage-opendal = { workspace = true }
 iggy_connector_sdk = { workspace = true }
 once_cell = { workspace = true }
 parquet = { workspace = true }
diff --git a/core/connectors/sinks/iceberg_sink/src/catalog.rs 
b/core/connectors/sinks/iceberg_sink/src/catalog.rs
index 54c27efac..64fe8e429 100644
--- a/core/connectors/sinks/iceberg_sink/src/catalog.rs
+++ b/core/connectors/sinks/iceberg_sink/src/catalog.rs
@@ -16,14 +16,15 @@
  * under the License.
  */
 
-use super::{Error, IcebergSinkConfig, IcebergSinkTypes};
+use super::{Error, IcebergSinkConfig, IcebergSinkStoreClass, IcebergSinkTypes};
 use crate::props::init_props;
 use iceberg::{Catalog, CatalogBuilder};
 use iceberg_catalog_rest::{
     REST_CATALOG_PROP_URI, REST_CATALOG_PROP_WAREHOUSE, RestCatalogBuilder,
 };
-
+use iceberg_storage_opendal::OpenDalStorageFactory;
 use std::collections::HashMap;
+use std::sync::Arc;
 
 pub async fn init_catalog(config: &IcebergSinkConfig) -> Result<Box<dyn 
Catalog>, Error> {
     let props = init_props(config)?;
@@ -46,7 +47,20 @@ async fn get_rest_catalog(
     ]);
     new_props.extend(props);
 
+    let storage_factory: Arc<dyn iceberg::io::StorageFactory> = match 
&config.store_class {
+        IcebergSinkStoreClass::S3 => Arc::new(OpenDalStorageFactory::S3 {
+            configured_scheme: "s3".to_string(),
+            customized_credential_load: None,
+        }),
+        other => {
+            return Err(Error::InitError(format!(
+                "Unsupported store class: {other}"
+            )));
+        }
+    };
+
     let catalog = RestCatalogBuilder::default()
+        .with_storage_factory(storage_factory)
         .load("rest", new_props)
         .await
         .map_err(|err| {
diff --git a/core/consensus/src/impls.rs b/core/consensus/src/impls.rs
index 016fe839f..882340d30 100644
--- a/core/consensus/src/impls.rs
+++ b/core/consensus/src/impls.rs
@@ -108,7 +108,7 @@ impl PipelineEntry {
     /// Returns the new count of acknowledgments.
     pub fn add_ack(&mut self, replica: u8) -> usize {
         self.ok_from_replicas.insert(replica as usize);
-        self.ok_from_replicas.len()
+        self.ok_from_replicas.count()
     }
 
     /// Check if we have an ack from the given replica.
@@ -120,7 +120,7 @@ impl PipelineEntry {
     /// Get the number of acks received.
     #[must_use]
     pub fn ack_count(&self) -> usize {
-        self.ok_from_replicas.len()
+        self.ok_from_replicas.count()
     }
 }
 
@@ -650,7 +650,7 @@ impl<B: MessageBus, P: Pipeline<Entry = PipelineEntry>> 
VsrConsensus<B, P> {
     /// Count SVCs from OTHER replicas (excluding self).
     fn svc_count_excluding_self(&self) -> usize {
         let svc = self.start_view_change_from_all_replicas.borrow();
-        let total = svc.len();
+        let total = svc.count();
         if svc.contains(self.replica as usize) {
             total.saturating_sub(1)
         } else {
@@ -662,7 +662,7 @@ impl<B: MessageBus, P: Pipeline<Entry = PipelineEntry>> 
VsrConsensus<B, P> {
     fn reset_svc_quorum(&self) {
         self.start_view_change_from_all_replicas
             .borrow_mut()
-            .clear();
+            .make_empty();
     }
 
     /// Reset DVC quorum tracking.
diff --git a/core/integration/tests/cli/general/test_overview_command.rs 
b/core/integration/tests/cli/general/test_overview_command.rs
index e351c039c..a5a88d2e9 100644
--- a/core/integration/tests/cli/general/test_overview_command.rs
+++ b/core/integration/tests/cli/general/test_overview_command.rs
@@ -19,8 +19,8 @@
 use crate::cli::common::{IggyCmdTest, help::TestHelpCmd};
 use serial_test::parallel;
 
-const FIGLET_INDENT: &str = " ";
-const FIGLET_FILL: &str = "                         ";
+const FIGLET_SP: &str = " ";
+const FIGLET_FILL: &str = "                   ";
 
 #[tokio::test]
 #[parallel]
@@ -32,12 +32,12 @@ pub async fn should_help_match() {
         .execute_test_for_help_command(TestHelpCmd::new(
             no_arg,
             format!(
-                r#"  ___                              ____   _       
___{FIGLET_INDENT}
- |_ _|   __ _    __ _   _   _     / ___| | |     |_ _|
-  | |   / _` |  / _` | | | | |   | |     | |      | |{FIGLET_INDENT}
-  | |  | (_| | | (_| | | |_| |   | |___  | |___   | |{FIGLET_INDENT}
- |___|  \__, |  \__, |  \__, |    \____| |_____| |___|
-        |___/   |___/   |___/{FIGLET_FILL}
+                r#" ___                     ____ _     ___{FIGLET_SP}
+|_ _|__ _  __ _ _   _   / ___| |   |_ _|
+ | |/ _` |/ _` | | | | | |   | |    | |{FIGLET_SP}
+ | | (_| | (_| | |_| | | |___| |___ | |{FIGLET_SP}
+|___\__, |\__, |\__, |  \____|_____|___|
+    |___/ |___/ |___/{FIGLET_FILL}
 
 CLI for Iggy message streaming platform
 
diff --git a/core/server/Cargo.toml b/core/server/Cargo.toml
index 5138288c3..c852010f3 100644
--- a/core/server/Cargo.toml
+++ b/core/server/Cargo.toml
@@ -100,7 +100,6 @@ tracing = { workspace = true }
 tracing-appender = { workspace = true }
 tracing-opentelemetry = { workspace = true }
 tracing-subscriber = { workspace = true }
-tungstenite = { workspace = true }
 ulid = { workspace = true }
 uuid = { workspace = true }
 
diff --git a/core/server/src/main.rs b/core/server/src/main.rs
index 6a7fc1e06..1a13ba31f 100644
--- a/core/server/src/main.rs
+++ b/core/server/src/main.rs
@@ -22,7 +22,7 @@ use clap::Parser;
 use dashmap::DashMap;
 use dotenvy::dotenv;
 use err_trail::ErrContext;
-use figlet_rs::FIGfont;
+use figlet_rs::FIGlet;
 use iggy_common::SemanticVersion;
 use iggy_common::sharding::{IggyNamespace, LocalIdx, PartitionLocation, 
ShardId};
 use iggy_common::{Aes256GcmEncryptor, EncryptorKind, IggyError, MemoryPool};
@@ -99,7 +99,7 @@ fn extract_panic_message(payload: Box<dyn std::any::Any + 
Send>) -> String {
 }
 
 fn print_ascii_art(text: &str) {
-    let standard_font = FIGfont::standard().unwrap();
+    let standard_font = FIGlet::standard().unwrap();
     let figure = standard_font.convert(text);
     println!("{}", figure.unwrap());
 }
diff --git a/core/server/src/websocket/mod.rs b/core/server/src/websocket/mod.rs
index 3ee16e8af..435648fe8 100644
--- a/core/server/src/websocket/mod.rs
+++ b/core/server/src/websocket/mod.rs
@@ -21,3 +21,44 @@ pub mod websocket_server;
 pub mod websocket_tls_listener;
 
 pub const COMPONENT: &str = "WEBSOCKET";
+
+use crate::configs::websocket::WebSocketConfig;
+use compio::ws::tungstenite::protocol::WebSocketConfig as CompioWsConfig;
+use iggy_common::IggyByteSize;
+
+/// Build a `compio-ws`-compatible `WebSocketConfig` from the server config.
+///
+/// The standalone `tungstenite` crate may be a different major version than
+/// the one re-exported by `compio-ws`, so we construct the config through
+/// `compio::ws::tungstenite` to guarantee type compatibility.
+pub fn build_compio_ws_config(config: &WebSocketConfig) -> CompioWsConfig {
+    let mut ws = CompioWsConfig::default();
+
+    if let Some(ref s) = config.read_buffer_size
+        && let Ok(b) = s.parse::<IggyByteSize>()
+    {
+        ws = ws.read_buffer_size(b.as_bytes_u64() as usize);
+    }
+    if let Some(ref s) = config.write_buffer_size
+        && let Ok(b) = s.parse::<IggyByteSize>()
+    {
+        ws = ws.write_buffer_size(b.as_bytes_u64() as usize);
+    }
+    if let Some(ref s) = config.max_write_buffer_size
+        && let Ok(b) = s.parse::<IggyByteSize>()
+    {
+        ws = ws.max_write_buffer_size(b.as_bytes_u64() as usize);
+    }
+    if let Some(ref s) = config.max_message_size
+        && let Ok(b) = s.parse::<IggyByteSize>()
+    {
+        ws = ws.max_message_size(Some(b.as_bytes_u64() as usize));
+    }
+    if let Some(ref s) = config.max_frame_size
+        && let Ok(b) = s.parse::<IggyByteSize>()
+    {
+        ws = ws.max_frame_size(Some(b.as_bytes_u64() as usize));
+    }
+    ws = ws.accept_unmasked_frames(config.accept_unmasked_frames);
+    ws
+}
diff --git a/core/server/src/websocket/websocket_listener.rs 
b/core/server/src/websocket/websocket_listener.rs
index 045f15c03..56a6225c8 100644
--- a/core/server/src/websocket/websocket_listener.rs
+++ b/core/server/src/websocket/websocket_listener.rs
@@ -98,7 +98,7 @@ pub async fn start(
             .ok();
     }
 
-    let ws_config = config.to_tungstenite_config();
+    let ws_config = super::build_compio_ws_config(&config);
     info!(
         "WebSocket config: max_message_size: {:?}, max_frame_size: {:?}, 
accept_unmasked_frames: {}",
         config.max_message_size, config.max_frame_size, 
config.accept_unmasked_frames
@@ -109,7 +109,7 @@ pub async fn start(
 
 async fn accept_loop(
     listener: TcpListener,
-    ws_config: Option<tungstenite::protocol::WebSocketConfig>,
+    ws_config: Option<compio::ws::tungstenite::protocol::WebSocketConfig>,
     shard: Rc<IggyShard>,
     shutdown: ShutdownToken,
 ) -> Result<(), IggyError> {
diff --git a/core/server/src/websocket/websocket_tls_listener.rs 
b/core/server/src/websocket/websocket_tls_listener.rs
index 10f196a5f..bc75d9e50 100644
--- a/core/server/src/websocket/websocket_tls_listener.rs
+++ b/core/server/src/websocket/websocket_tls_listener.rs
@@ -140,7 +140,7 @@ pub async fn start(
         "{} has started on: wss://{}",
         "WebSocket TLS Server", local_addr
     );
-    let ws_config = config.to_tungstenite_config();
+    let ws_config = super::build_compio_ws_config(&config);
     info!(
         "WebSocket TLS config: max_message_size: {:?}, max_frame_size: {:?}, 
accept_unmasked_frames: {}",
         config.max_message_size, config.max_frame_size, 
config.accept_unmasked_frames
@@ -159,7 +159,7 @@ pub async fn start(
 async fn accept_loop(
     listener: TcpListener,
     acceptor: TlsAcceptor,
-    ws_config: tungstenite::protocol::WebSocketConfig,
+    ws_config: compio::ws::tungstenite::protocol::WebSocketConfig,
     shard: Rc<IggyShard>,
     shutdown: ShutdownToken,
 ) -> Result<(), IggyError> {

Reply via email to