From c3443dad05b54e838e3a57e9f83dff834ae120c7 Mon Sep 17 00:00:00 2001 From: Ajay RV Date: Tue, 29 Jul 2025 11:26:24 +0530 Subject: [PATCH] CLI worker commands for files and file-contents --- Cargo.lock | 568 ++++++++++++-------- golem-cli/src/command.rs | 18 + golem-cli/src/command_handler/worker/mod.rs | 141 +++++ golem-cli/src/model/text/worker.rs | 50 ++ golem-cli/src/wasm_rpc_stubgen/cargo.rs | 3 +- 5 files changed, 545 insertions(+), 235 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 83b5daa36..229866431 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -203,21 +203,20 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "assert2" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d31fea2b6e18dfe892863c3a0a68f9e005b0195565f3d55b8612946ebca789cc" +checksum = "0d6c710e60d14b07d8f42d0e702b16120865eea39edb751e75cd6bf401d18f14" dependencies = [ "assert2-macros", "diff", - "is-terminal", "yansi", ] [[package]] name = "assert2-macros" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c1ac052c642f6d94e4be0b33028b346b7ab809ea5432b584eb8859f12f7ad2c" +checksum = "9008cbbba9e1d655538870b91fd93814bd82e6968f27788fc734375120ac6f57" dependencies = [ "proc-macro2", "quote", @@ -239,9 +238,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -251,9 +250,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.25" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f6024f3f856663b45fd0c9b6f2024034a702f453549449e0d84a305900dad4" +checksum = "ddb939d66e4ae03cee6091612804ba446b12878410cfa17f785f4dd67d4014e8" dependencies = [ "flate2", "futures-core", @@ -292,9 +291,9 @@ dependencies = [ [[package]] name = "async-fs" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +checksum = "09f7e37c0ed80b2a977691c47dae8625cfb21e205827106c64f7c588766b2e50" dependencies = [ "async-lock", "blocking", @@ -315,9 +314,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" dependencies = [ "async-lock", "cfg-if", @@ -326,10 +325,9 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.0.7", + "rustix 1.0.8", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -354,9 +352,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" +checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" dependencies = [ "async-channel", "async-io", @@ -367,8 +365,7 @@ dependencies = [ "cfg-if", "event-listener 5.4.0", "futures-lite", - "rustix 1.0.7", - "tracing", + "rustix 1.0.8", ] [[package]] @@ -405,9 +402,9 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" +checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" dependencies = [ "async-io", "async-lock", @@ -415,10 +412,10 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.0.7", + "rustix 1.0.8", "signal-hook-registry", "slab", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -549,9 +546,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "687bc16bc431a8533fe0097c7f0182874767f920989d7260950172ae8e3c4465" +checksum = "b68c2194a190e1efc999612792e25b1ab3abfefe4306494efaaabc25933c0cbe" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -561,9 +558,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.13.1" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fcc8f365936c834db5514fc45aee5b1202d677e6b40e48468aaaa8183ca8c7" +checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" dependencies = [ "aws-lc-sys", "zeroize", @@ -571,9 +568,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079" +checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" dependencies = [ "bindgen", "cc", @@ -584,15 +581,15 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.8" +version = "1.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f6c68419d8ba16d9a7463671593c54f81ba58cab466e9b759418da606dcc2e2" +checksum = "b2090e664216c78e766b6bac10fe74d2f451c02441d43484cd76ac9a295075f7" dependencies = [ "aws-credential-types", "aws-sigv4", "aws-smithy-async", "aws-smithy-eventstream", - "aws-smithy-http 0.62.1", + "aws-smithy-http 0.62.2", "aws-smithy-runtime", "aws-smithy-runtime-api", "aws-smithy-types", @@ -643,14 +640,14 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.73.0" +version = "1.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ac1674cba7872061a29baaf02209fefe499ff034dfd91bd4cc59e4d7741489" +checksum = "dbd7bc4bd34303733bded362c4c997a39130eac4310257c79aae8484b1c4b724" dependencies = [ "aws-credential-types", "aws-runtime", "aws-smithy-async", - "aws-smithy-http 0.62.1", + "aws-smithy-http 0.62.2", "aws-smithy-json 0.61.4", "aws-smithy-runtime", "aws-smithy-runtime-api", @@ -665,14 +662,14 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.74.0" +version = "1.79.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6a22f077f5fd3e3c0270d4e1a110346cddf6769e9433eb9e6daceb4ca3b149" +checksum = "77358d25f781bb106c1a69531231d4fd12c6be904edb0c47198c604df5a2dbca" dependencies = [ "aws-credential-types", "aws-runtime", "aws-smithy-async", - "aws-smithy-http 0.62.1", + "aws-smithy-http 0.62.2", "aws-smithy-json 0.61.4", "aws-smithy-runtime", "aws-smithy-runtime-api", @@ -687,14 +684,14 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.75.0" +version = "1.80.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3258fa707f2f585ee3049d9550954b959002abd59176975150a01d5cf38ae3f" +checksum = "06e3ed2a9b828ae7763ddaed41d51724d2661a50c45f845b08967e52f4939cfc" dependencies = [ "aws-credential-types", "aws-runtime", "aws-smithy-async", - "aws-smithy-http 0.62.1", + "aws-smithy-http 0.62.2", "aws-smithy-json 0.61.4", "aws-smithy-query", "aws-smithy-runtime", @@ -716,7 +713,7 @@ checksum = "ddfb9021f581b71870a17eac25b52335b82211cdc092e02b6876b2bcefa61666" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", - "aws-smithy-http 0.62.1", + "aws-smithy-http 0.62.2", "aws-smithy-runtime-api", "aws-smithy-types", "bytes 1.10.1", @@ -770,9 +767,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.9" +version = "0.60.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "338a3642c399c0a5d157648426110e199ca7fd1c689cc395676b81aa563700c4" +checksum = "604c7aec361252b8f1c871a7641d5e0ba3a7f5a586e51b66bc9510a5519594d9" dependencies = [ "aws-smithy-types", "bytes 1.10.1", @@ -802,9 +799,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.62.1" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99335bec6cdc50a346fda1437f9fefe33abf8c99060739a546a16457f2862ca9" +checksum = "43c82ba4cab184ea61f6edaafc1072aad3c2a17dcf4c0fce19ac5694b90d8b5f" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -829,8 +826,8 @@ dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", - "h2 0.3.26", - "h2 0.4.10", + "h2 0.3.27", + "h2 0.4.11", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.32", @@ -880,12 +877,12 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.8.3" +version = "1.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14302f06d1d5b7d333fd819943075b13d27c7700b414f574c3c35859bfb55d5e" +checksum = "660f70d9d8af6876b4c9aa8dcb0dbaf0f89b04ee9a4455bea1b4ba03b15f26f6" dependencies = [ "aws-smithy-async", - "aws-smithy-http 0.62.1", + "aws-smithy-http 0.62.2", "aws-smithy-http-client", "aws-smithy-observability", "aws-smithy-runtime-api", @@ -904,9 +901,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.8.1" +version = "1.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8531b6d8882fd8f48f82a9754e682e29dd44cff27154af51fa3eb730f59efb" +checksum = "937a49ecf061895fca4a6dd8e864208ed9be7546c0527d04bc07d502ec5fba1c" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -956,9 +953,9 @@ dependencies = [ [[package]] name = "aws-types" -version = "1.3.7" +version = "1.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a322fec39e4df22777ed3ad8ea868ac2f94cd15e1a55f6ee8d8d6305057689a" +checksum = "b069d19bf01e46298eaedd7c6f283fe565a59263e53eebec945f3e6398f42390" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1259,9 +1256,9 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ "async-channel", "async-task", @@ -1363,7 +1360,7 @@ checksum = "9f83833816c66c986e913b22ac887cec216ea09301802054316fc5301809702c" dependencies = [ "cap-primitives", "cap-std", - "rustix 1.0.7", + "rustix 1.0.8", "smallvec", ] @@ -1379,7 +1376,7 @@ dependencies = [ "io-lifetimes", "ipnet", "maybe-owned", - "rustix 1.0.7", + "rustix 1.0.8", "rustix-linux-procfs", "windows-sys 0.59.0", "winx", @@ -1404,7 +1401,7 @@ dependencies = [ "cap-primitives", "io-extras", "io-lifetimes", - "rustix 1.0.7", + "rustix 1.0.8", ] [[package]] @@ -1417,7 +1414,7 @@ dependencies = [ "cap-primitives", "iana-time-zone", "once_cell", - "rustix 1.0.7", + "rustix 1.0.8", "winx", ] @@ -1492,13 +1489,13 @@ dependencies = [ [[package]] name = "cargo-config2" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82de3b1a1dd72252c6d456247864ffe52110d109da949f579eeb16349e0eb5d" +checksum = "2f307d010782c2a4066cc5125ba8c6b68db926b3a1bb82bd6d0b38950c6d4815" dependencies = [ "serde", "serde_derive", - "toml_edit", + "toml 0.9.3", "windows-sys 0.60.2", ] @@ -1531,7 +1528,7 @@ dependencies = [ "serde-untagged", "serde-value", "thiserror 1.0.69", - "toml", + "toml 0.8.23", "unicode-xid", "url", ] @@ -1567,12 +1564,12 @@ dependencies = [ [[package]] name = "cargo_toml" -version = "0.22.1" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" dependencies = [ "serde", - "toml", + "toml 0.9.3", ] [[package]] @@ -1586,9 +1583,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.27" +version = "1.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7" dependencies = [ "jobserver", "libc", @@ -1654,9 +1651,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.40" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" +checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9" dependencies = [ "clap_builder", "clap_derive", @@ -1675,9 +1672,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.40" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" +checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d" dependencies = [ "anstream", "anstyle", @@ -1687,18 +1684,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.54" +version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aad5b1b4de04fead402672b48897030eec1f3bfe1550776322f59f6d6e6a5677" +checksum = "a5abde44486daf70c5be8b8f8f1b66c49f86236edf6fa2abadb4d961c4c6229a" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.40" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" +checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -1737,9 +1734,9 @@ dependencies = [ [[package]] name = "clipboard-win" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ "error-code", ] @@ -1781,13 +1778,13 @@ dependencies = [ "poem-openapi", "poem-openapi-derive", "prometheus 0.13.4", - "reqwest 0.12.20", + "reqwest 0.12.22", "serde", "serde_json", "serde_with", "sqlx", - "strum 0.27.1", - "strum_macros 0.27.1", + "strum 0.27.2", + "strum_macros 0.27.2", "tap", "thiserror 2.0.12", "tokio", @@ -1881,7 +1878,7 @@ dependencies = [ "rust-ini", "serde", "serde_json", - "toml", + "toml 0.8.23", "yaml-rust2", ] @@ -2233,9 +2230,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -2398,9 +2395,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4735f265ba6a1188052ca32d461028a7d1125868be18e287e756019da7607b5" +checksum = "ec09e802f5081de6157da9a75701d6c713d8dc3ba52571fd4bd25f412644e8a6" dependencies = [ "ctor-proc-macro", "dtor", @@ -2408,9 +2405,9 @@ dependencies = [ [[package]] name = "ctor-proc-macro" -version = "0.0.5" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f211af61d8efdd104f96e57adf5e426ba1bc3ed7a4ead616e15e5881fd79c4d" +checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2" [[package]] name = "ctr" @@ -2883,9 +2880,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "ecdsa" @@ -2925,9 +2922,9 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", @@ -3216,7 +3213,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" dependencies = [ "cfg-if", - "rustix 1.0.7", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -3255,7 +3252,7 @@ dependencies = [ "atomic", "pear", "serde", - "toml", + "toml 0.8.23", "uncased", "version_check", ] @@ -3364,7 +3361,7 @@ dependencies = [ "redis-protocol", "semver", "serde_json", - "socket2", + "socket2 0.5.10", "tokio", "tokio-stream", "tokio-util", @@ -3392,7 +3389,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94e7099f6313ecacbe1256e8ff9d617b75d1bcb16a6fddef94866d225a01a14a" dependencies = [ "io-lifetimes", - "rustix 1.0.7", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -3600,7 +3597,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" dependencies = [ - "rustix 1.0.7", + "rustix 1.0.8", "windows-targets 0.52.6", ] @@ -3733,8 +3730,8 @@ dependencies = [ "poem", "prometheus 0.13.4", "regex", - "reqwest 0.12.20", - "rustls 0.23.28", + "reqwest 0.12.22", + "rustls 0.23.29", "serde", "tempfile", "test-r", @@ -3838,7 +3835,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "reqwest 0.12.20", + "reqwest 0.12.22", "semver", "serde", "serde_derive", @@ -3850,8 +3847,8 @@ dependencies = [ "similar", "spdx", "strip-ansi-escapes", - "strum 0.27.1", - "strum_macros 0.27.1", + "strum 0.27.2", + "strum_macros 0.27.2", "syn 2.0.104", "tempfile", "terminal_size", @@ -3860,7 +3857,7 @@ dependencies = [ "tokio", "tokio-stream", "tokio-tungstenite 0.26.2", - "toml", + "toml 0.8.23", "toml_edit", "tracing", "tracing-subscriber", @@ -3896,7 +3893,7 @@ dependencies = [ "golem-wasm-ast 1.3.0-dev.21", "golem-wasm-rpc 1.3.0-dev.21", "http 1.3.1", - "reqwest 0.12.20", + "reqwest 0.12.22", "serde", "serde_json", "serde_yaml", @@ -3941,7 +3938,7 @@ dependencies = [ "prometheus 0.13.4", "prost 0.13.5", "prost-types 0.13.5", - "rand 0.9.1", + "rand 0.9.2", "range-set-blaze", "regex", "serde", @@ -3949,11 +3946,11 @@ dependencies = [ "serde_yaml", "shadow-rs", "sqlx", - "strum 0.27.1", - "strum_macros 0.27.1", + "strum 0.27.2", + "strum_macros 0.27.2", "thiserror 2.0.12", "tokio", - "toml", + "toml 0.8.23", "tonic", "tracing", "tracing-serde", @@ -4001,7 +3998,7 @@ dependencies = [ "prometheus 0.13.4", "prost 0.13.5", "prost-types 0.13.5", - "rand 0.9.1", + "rand 0.9.2", "range-set-blaze", "regex", "serde", @@ -4009,11 +4006,11 @@ dependencies = [ "serde_yaml", "shadow-rs", "sqlx", - "strum 0.27.1", - "strum_macros 0.27.1", + "strum 0.27.2", + "strum_macros 0.27.2", "thiserror 2.0.12", "tokio", - "toml", + "toml 0.8.23", "tonic", "tracing", "tracing-serde", @@ -4088,7 +4085,7 @@ dependencies = [ "prometheus 0.13.4", "prost 0.13.5", "prost-types 0.13.5", - "reqwest 0.12.20", + "reqwest 0.12.22", "sanitize-filename", "serde", "serde_json", @@ -4241,7 +4238,7 @@ dependencies = [ "poem-openapi-derive", "prometheus 0.13.4", "prost-types 0.13.5", - "reqwest 0.12.20", + "reqwest 0.12.22", "serde", "serde_json", "sqlx", @@ -4278,7 +4275,7 @@ dependencies = [ "k8s-openapi", "kube", "prometheus 0.13.4", - "rustls 0.23.28", + "rustls 0.23.29", "serde", "thiserror 2.0.12", "tokio", @@ -4311,8 +4308,8 @@ dependencies = [ "regex", "serde", "serde_json", - "strum 0.27.1", - "strum_macros 0.27.1", + "strum 0.27.2", + "strum_macros 0.27.2", "test-r", "toml_edit", ] @@ -4510,7 +4507,7 @@ dependencies = [ "nonempty-collections", "prometheus 0.13.4", "prost 0.13.5", - "rand 0.9.1", + "rand 0.9.2", "ringbuf", "serde", "serde_json", @@ -4590,8 +4587,8 @@ dependencies = [ "serde_json", "serde_yaml", "sqlx", - "strum 0.27.1", - "strum_macros 0.27.1", + "strum 0.27.2", + "strum_macros 0.27.2", "tap", "thiserror 2.0.12", "tokio", @@ -4641,9 +4638,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes 1.10.1", "fnv", @@ -4660,9 +4657,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" dependencies = [ "atomic-waker", "bytes 1.10.1", @@ -4953,14 +4950,14 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.26", + "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -4976,7 +4973,7 @@ dependencies = [ "bytes 1.10.1", "futures-channel", "futures-util", - "h2 0.4.10", + "h2 0.4.11", "http 1.3.1", "http-body 1.0.1", "httparse", @@ -5034,13 +5031,13 @@ dependencies = [ "hyper 1.6.0", "hyper-util", "log", - "rustls 0.23.28", + "rustls 0.23.29", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", "tokio-rustls 0.26.2", "tower-service", - "webpki-roots 1.0.1", + "webpki-roots 1.0.2", ] [[package]] @@ -5087,9 +5084,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ "base64 0.22.1", "bytes 1.10.1", @@ -5103,7 +5100,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.0", "system-configuration 0.6.1", "tokio", "tower-service", @@ -5397,6 +5394,17 @@ version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06432fb54d3be7964ecd3649233cddf80db2832f47fec34c01f65b3d9d774983" +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -5638,9 +5646,9 @@ dependencies = [ [[package]] name = "keyring" -version = "3.6.2" +version = "3.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1961983669d57bdfe6c0f3ef8e4c229b5ef751afcc7d87e4271d2f71f6ccfa8b" +checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c" dependencies = [ "byteorder", "dbus-secret-service", @@ -5649,8 +5657,9 @@ dependencies = [ "secret-service", "security-framework 2.11.1", "security-framework 3.2.0", - "windows-sys 0.59.0", + "windows-sys 0.60.2", "zbus", + "zeroize", ] [[package]] @@ -5690,7 +5699,7 @@ dependencies = [ "k8s-openapi", "kube-core", "pem", - "rustls 0.23.28", + "rustls 0.23.29", "rustls-pemfile 2.2.0", "secrecy 0.10.3", "serde", @@ -5901,7 +5910,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.53.2", + "windows-targets 0.53.3", ] [[package]] @@ -5912,9 +5921,9 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.4" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" +checksum = "360e552c93fa0e8152ab463bc4c4837fce76a225df11dfaeea66c313de5e61f7" dependencies = [ "bitflags 2.9.1", "libc", @@ -6572,7 +6581,7 @@ dependencies = [ "oci-spec", "olpc-cjson", "regex", - "reqwest 0.12.20", + "reqwest 0.12.22", "serde", "serde_json", "sha2 0.10.9", @@ -7379,17 +7388,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.8.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +checksum = "8ee9b2fa7a4517d2c91ff5bc6c297a427a96749d15f98fcdbb22c05571a4d4b7" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.0.7", - "tracing", - "windows-sys 0.59.0", + "rustix 1.0.8", + "windows-sys 0.60.2", ] [[package]] @@ -7430,9 +7438,9 @@ dependencies = [ [[package]] name = "postcard" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c1de96e20f51df24ca73cafcc4690e044854d803259db27a00a461cb3b9d17a" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -7496,9 +7504,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.35" +version = "0.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" +checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" dependencies = [ "proc-macro2", "syn 2.0.104", @@ -7881,8 +7889,8 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.1", - "rustls 0.23.28", - "socket2", + "rustls 0.23.29", + "socket2 0.5.10", "thiserror 2.0.12", "tokio", "tracing", @@ -7898,10 +7906,10 @@ dependencies = [ "bytes 1.10.1", "getrandom 0.3.3", "lru-slab", - "rand 0.9.1", + "rand 0.9.2", "ring", "rustc-hash 2.1.1", - "rustls 0.23.28", + "rustls 0.23.29", "rustls-pki-types", "slab", "thiserror 2.0.12", @@ -7919,7 +7927,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2", + "socket2 0.5.10", "tracing", "windows-sys 0.59.0", ] @@ -7962,9 +7970,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", @@ -8070,9 +8078,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.13" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ "bitflags 2.9.1", ] @@ -8194,7 +8202,7 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.3.26", + "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.32", @@ -8226,9 +8234,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.20" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ "async-compression", "base64 0.22.1", @@ -8237,7 +8245,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.10", + "h2 0.4.11", "http 1.3.1", "http-body 1.0.1", "http-body-util", @@ -8253,7 +8261,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.28", + "rustls 0.23.29", "rustls-pki-types", "serde", "serde_json", @@ -8271,7 +8279,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 1.0.1", + "webpki-roots 1.0.2", ] [[package]] @@ -8519,9 +8527,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -8559,15 +8567,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -8577,7 +8585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fc84bf7e9aa16c4f2c758f27412dc9841341e16aa682d9c7ac308fe3ee12056" dependencies = [ "once_cell", - "rustix 1.0.7", + "rustix 1.0.8", ] [[package]] @@ -8608,16 +8616,16 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.28" +version = "0.23.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" dependencies = [ "aws-lc-rs", "log", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.3", + "rustls-webpki 0.103.4", "subtle", "zeroize", ] @@ -8710,9 +8718,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "aws-lc-rs", "ring", @@ -8805,6 +8813,18 @@ dependencies = [ "serde_json", ] +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + [[package]] name = "schemars_derive" version = "0.8.22" @@ -8998,9 +9018,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.141" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3" dependencies = [ "itoa", "memchr", @@ -9097,6 +9117,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -9111,9 +9140,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" dependencies = [ "base64 0.22.1", "chrono", @@ -9121,6 +9150,7 @@ dependencies = [ "indexmap 1.9.3", "indexmap 2.10.0", "schemars 0.9.0", + "schemars 1.0.4", "serde", "serde_derive", "serde_json", @@ -9130,9 +9160,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ "darling", "proc-macro2", @@ -9363,11 +9393,21 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "spdx" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58b69356da67e2fc1f542c71ea7e654a361a79c938e4424392ecf4fa065d2193" +checksum = "c3e17e880bafaeb362a7b751ec46bdc5b61445a188f80e0606e68167cd540fa3" dependencies = [ "smallvec", ] @@ -9671,9 +9711,9 @@ checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" [[package]] name = "strum" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" [[package]] name = "strum_macros" @@ -9690,14 +9730,13 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "rustversion", "syn 2.0.104", ] @@ -9848,7 +9887,7 @@ dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix 1.0.7", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -9867,7 +9906,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" dependencies = [ - "rustix 1.0.7", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -9900,7 +9939,7 @@ dependencies = [ "interprocess", "parking_lot", "quick-xml 0.37.5", - "rand 0.9.1", + "rand 0.9.2", "tokio", "topological-sort", "uuid", @@ -9916,7 +9955,7 @@ dependencies = [ "humantime", "proc-macro2", "quote", - "rand 0.9.1", + "rand 0.9.2", "syn 2.0.104", "test-r-core", ] @@ -10059,21 +10098,23 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.1" +version = "1.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35" dependencies = [ "backtrace", "bytes 1.10.1", + "io-uring", "libc", "mio 1.0.4", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "slab", + "socket2 0.6.0", "tokio-macros", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -10124,7 +10165,7 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.23.28", + "rustls 0.23.29", "tokio", ] @@ -10188,11 +10229,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", - "serde_spanned", - "toml_datetime", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", "toml_edit", ] +[[package]] +name = "toml" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e06723639aaded957e5a80be250c1f82f274b9d23ebb4d94163668470623461c" +dependencies = [ + "indexmap 2.10.0", + "serde", + "serde_spanned 1.0.0", + "toml_datetime 0.7.0", + "toml_parser", + "toml_writer", + "winnow", +] + [[package]] name = "toml_datetime" version = "0.6.11" @@ -10202,6 +10258,15 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" +dependencies = [ + "serde", +] + [[package]] name = "toml_edit" version = "0.22.27" @@ -10210,18 +10275,33 @@ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap 2.10.0", "serde", - "serde_spanned", - "toml_datetime", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", "toml_write", "winnow", ] +[[package]] +name = "toml_parser" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97200572db069e74c512a14117b296ba0a80a30123fbbb5aa1f4a348f639ca30" +dependencies = [ + "winnow", +] + [[package]] name = "toml_write" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +[[package]] +name = "toml_writer" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64" + [[package]] name = "tonic" version = "0.12.3" @@ -10234,7 +10314,7 @@ dependencies = [ "base64 0.22.1", "bytes 1.10.1", "flate2", - "h2 0.4.10", + "h2 0.4.11", "http 1.3.1", "http-body 1.0.1", "http-body-util", @@ -10244,7 +10324,7 @@ dependencies = [ "percent-encoding", "pin-project 1.1.10", "prost 0.13.5", - "socket2", + "socket2 0.5.10", "tokio", "tokio-stream", "tower 0.4.13", @@ -10529,7 +10609,7 @@ dependencies = [ "httparse", "log", "native-tls", - "rand 0.9.1", + "rand 0.9.2", "sha1", "thiserror 2.0.12", "utf-8", @@ -10907,7 +10987,7 @@ dependencies = [ "once_cell", "pathdiff", "ptree", - "reqwest 0.12.20", + "reqwest 0.12.22", "secrecy 0.8.0", "semver", "serde", @@ -11206,6 +11286,16 @@ dependencies = [ "wasmparser 0.235.0", ] +[[package]] +name = "wasm-encoder" +version = "0.236.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3108979166ab0d3c7262d2e16a2190ffe784b2a5beb963edef154b5e8e07680b" +dependencies = [ + "leb128fmt", + "wasmparser 0.236.0", +] + [[package]] name = "wasm-metadata" version = "0.202.0" @@ -11339,7 +11429,7 @@ dependencies = [ "thiserror 1.0.69", "tokio", "tokio-util", - "toml", + "toml 0.8.23", "tracing", "tracing-subscriber", "url", @@ -11362,14 +11452,14 @@ dependencies = [ "etcetera", "futures-util", "http 1.3.1", - "reqwest 0.12.20", + "reqwest 0.12.22", "semver", "serde", "serde_json", "sha2 0.10.9", "thiserror 1.0.69", "tokio", - "toml", + "toml 0.8.23", "tracing", ] @@ -11527,6 +11617,17 @@ dependencies = [ "serde", ] +[[package]] +name = "wasmparser" +version = "0.236.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d1eee846a705f6f3cb9d7b9f79b54583810f1fb57a1e3aea76d1742db2e3d2" +dependencies = [ + "bitflags 2.9.1", + "indexmap 2.10.0", + "semver", +] + [[package]] name = "wasmprinter" version = "0.2.80" @@ -11576,7 +11677,7 @@ dependencies = [ "psm", "pulley-interpreter", "rayon", - "rustix 1.0.7", + "rustix 1.0.8", "semver", "serde", "serde_derive", @@ -11622,11 +11723,11 @@ dependencies = [ "directories-next", "log", "postcard", - "rustix 1.0.7", + "rustix 1.0.8", "serde", "serde_derive", "sha2 0.10.9", - "toml", + "toml 0.8.23", "windows-sys 0.59.0", "zstd", ] @@ -11709,7 +11810,7 @@ dependencies = [ "anyhow", "cc", "cfg-if", - "rustix 1.0.7", + "rustix 1.0.8", "wasmtime-asm-macros", "wasmtime-versioned-export-macros", "windows-sys 0.59.0", @@ -11722,7 +11823,7 @@ source = "git+https://github.com/golemcloud/wasmtime.git?branch=golem-wasmtime-v dependencies = [ "cc", "object", - "rustix 1.0.7", + "rustix 1.0.8", "wasmtime-versioned-export-macros", ] @@ -11778,7 +11879,7 @@ dependencies = [ "futures", "io-extras", "io-lifetimes", - "rustix 1.0.7", + "rustix 1.0.8", "system-interface", "thiserror 2.0.12", "tokio", @@ -11862,24 +11963,24 @@ dependencies = [ [[package]] name = "wast" -version = "235.0.0" +version = "236.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eda4293f626c99021bb3a6fbe4fbbe90c0e31a5ace89b5f620af8925de72e13" +checksum = "11d6b6faeab519ba6fbf9b26add41617ca6f5553f99ebc33d876e591d2f4f3c6" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width 0.2.1", - "wasm-encoder 0.235.0", + "wasm-encoder 0.236.0", ] [[package]] name = "wat" -version = "1.235.0" +version = "1.236.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e777e0327115793cb96ab220b98f85327ec3d11f34ec9e8d723264522ef206aa" +checksum = "cc31704322400f461f7f31a5f9190d5488aaeafb63ae69ad2b5888d2704dcb08" dependencies = [ - "wast 235.0.0", + "wast 236.0.0", ] [[package]] @@ -11929,14 +12030,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.1", + "webpki-roots 1.0.2", ] [[package]] name = "webpki-roots" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] @@ -12230,7 +12331,7 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.3", ] [[package]] @@ -12266,10 +12367,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ + "windows-link", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -12420,9 +12522,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ "memchr", ] @@ -12812,9 +12914,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] name = "xmlparser" diff --git a/golem-cli/src/command.rs b/golem-cli/src/command.rs index 2fd907eee..a3fb68f36 100644 --- a/golem-cli/src/command.rs +++ b/golem-cli/src/command.rs @@ -1132,6 +1132,24 @@ pub mod worker { /// Idempotency key of the invocation to be cancelled idempotency_key: IdempotencyKey, }, + /// List files in a worker's directory + Files { + #[command(flatten)] + worker_name: WorkerNameArg, + /// Path to the directory to list files from + #[arg(default_value = "/")] + path: String, + }, + /// Get contents of a file in a worker + FileContents { + #[command(flatten)] + worker_name: WorkerNameArg, + /// Path to the file to get contents from + path: String, + /// Local path (including filename) to save the file contents. Optional. + #[arg(long)] + output: Option, + }, } } diff --git a/golem-cli/src/command_handler/worker/mod.rs b/golem-cli/src/command_handler/worker/mod.rs index 2b1d21445..da54975f5 100644 --- a/golem-cli/src/command_handler/worker/mod.rs +++ b/golem-cli/src/command_handler/worker/mod.rs @@ -37,6 +37,7 @@ use crate::model::text::help::{ ArgumentError, AvailableComponentNamesHelp, AvailableFunctionNamesHelp, ComponentNameHelp, ParameterErrorTableView, WorkerNameHelp, }; +use crate::model::text::worker::{FileNodeView, WorkerFilesView}; use crate::model::text::worker::{WorkerCreateView, WorkerGetView}; use crate::model::worker::fuzzy_match_function_name; use crate::model::{ @@ -164,6 +165,14 @@ impl WorkerCommandHandler { self.cmd_cancel_invocation(worker_name, idempotency_key) .await } + WorkerSubcommand::Files { worker_name, path } => { + self.cmd_files(worker_name, path).await + } + WorkerSubcommand::FileContents { + worker_name, + path, + output, + } => self.cmd_file_contents(worker_name, path, output).await, } } @@ -844,6 +853,138 @@ impl WorkerCommandHandler { Ok(()) } + async fn cmd_files(&self, worker_name: WorkerNameArg, path: String) -> anyhow::Result<()> { + self.ctx.silence_app_context_init().await; + let worker_name_match = self.match_worker_name(worker_name.worker_name).await?; + let (component, worker_name) = self + .component_by_worker_name_match(&worker_name_match) + .await?; + log_action( + "Listing files", + format!( + "for worker {} at path {}", + format_worker_name_match(&worker_name_match), + path.log_color_highlight() + ), + ); + let clients = self.ctx.golem_clients().await?; + let nodes = match clients + .worker + .get_files( + &component.versioned_component_id.component_id, + &worker_name.0, + &path, + ) + .await + .map_service_error() + { + Ok(nodes) => nodes, + Err(e) => { + log_warn_action( + "Failed to list files", + format!( + "for worker {} at path {}: {e}", + format_worker_name_match(&worker_name_match), + path.log_color_error_highlight() + ), + ); + return Err(e); + } + }; + // Convert nodes to WorkerFilesView + let view = WorkerFilesView { + nodes: nodes + .nodes + .into_iter() + .map(|n| FileNodeView { + name: n.name, + last_modified: n.last_modified, + kind: n.kind.to_string(), + permissions: n + .permissions + .map(|p| p.to_string()) + .unwrap_or_else(|| "-".to_string()), + size: n.size.unwrap_or(0), + }) + .collect(), + }; + self.ctx.log_handler().log_view(&view); + log_action( + "Listed files", + format!( + "for worker {} at path {}", + format_worker_name_match(&worker_name_match), + path.log_color_highlight() + ), + ); + Ok(()) + } + + async fn cmd_file_contents( + &self, + worker_name: WorkerNameArg, + path: String, + output: Option, + ) -> anyhow::Result<()> { + use std::fs::File; + use std::io::Write; + self.ctx.silence_app_context_init().await; + let worker_name_match = self.match_worker_name(worker_name.worker_name).await?; + let (component, worker_name) = self + .component_by_worker_name_match(&worker_name_match) + .await?; + log_action( + "Downloading file", + format!( + "from worker {} at path {}", + format_worker_name_match(&worker_name_match), + path.log_color_highlight() + ), + ); + let clients = self.ctx.golem_clients().await?; + let file_contents = match clients + .worker + .get_file_content( + &component.versioned_component_id.component_id, + &worker_name.0, + &path, + ) + .await + .map_service_error() + { + Ok(contents) => contents, + Err(e) => { + log_warn_action( + "Failed to download file", + format!( + "from worker {} at path {}: {e}", + format_worker_name_match(&worker_name_match), + path.log_color_error_highlight() + ), + ); + return Err(e); + } + }; + let output_path = if let Some(ref output) = output { + output.clone() + } else { + std::path::Path::new(&path) + .file_name() + .map(|f| f.to_string_lossy().to_string()) + .unwrap_or_else(|| "output.bin".to_string()) + }; + match File::create(&output_path).and_then(|mut file| file.write_all(&file_contents)) { + Ok(_) => { + log_action("File saved", format!("to {output_path}")); + Ok(()) + } + Err(e) => { + log_warn_action("Failed to save file", format!("to {output_path}: {e}")); + Err(e.into()) + } + } + } + async fn new_worker( &self, component_id: Uuid, diff --git a/golem-cli/src/model/text/worker.rs b/golem-cli/src/model/text/worker.rs index d46abcf8b..ed3e67769 100644 --- a/golem-cli/src/model/text/worker.rs +++ b/golem-cli/src/model/text/worker.rs @@ -802,6 +802,56 @@ impl TextView for PublicOplogEntry { } } +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct WorkerFilesView { + pub nodes: Vec, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct FileNodeView { + pub name: String, + pub last_modified: u64, + pub kind: String, + pub permissions: String, + pub size: u64, +} + +#[derive(Table)] +pub struct WorkerFileNodeTableView { + #[table(title = "Name")] + pub name: String, + #[table(title = "Kind")] + pub kind: String, + #[table(title = "Permissions")] + pub permissions: String, + #[table(title = "Size", justify = "Justify::Right")] + pub size: u64, + #[table(title = "Last Modified", justify = "Justify::Right")] + pub last_modified: u64, +} + +impl From<&FileNodeView> for WorkerFileNodeTableView { + fn from(value: &FileNodeView) -> Self { + Self { + name: value.name.clone(), + kind: value.kind.clone(), + permissions: value.permissions.clone(), + size: value.size, + last_modified: value.last_modified, + } + } +} + +impl TextView for WorkerFilesView { + fn log(&self) { + if self.nodes.is_empty() { + logln("No files found."); + } else { + log_table::<_, WorkerFileNodeTableView>(&self.nodes); + } + } +} + fn log_plugin_description(pad: &str, value: &PluginInstallationDescription) { logln(format!( "{pad}plugin name: {}", diff --git a/golem-cli/src/wasm_rpc_stubgen/cargo.rs b/golem-cli/src/wasm_rpc_stubgen/cargo.rs index 879a1af7e..7e2591f84 100644 --- a/golem-cli/src/wasm_rpc_stubgen/cargo.rs +++ b/golem-cli/src/wasm_rpc_stubgen/cargo.rs @@ -24,13 +24,12 @@ use crate::wasm_rpc_stubgen::{ use anyhow::{anyhow, Context}; use cargo_toml::{ Dependency, DependencyDetail, DepsSet, Edition, Inheritable, LtoSetting, Manifest, Profile, - Profiles, StripSetting, Workspace, + Profiles, StripSetting, Value, Workspace, }; use heck::ToSnakeCase; use serde::{Deserialize, Serialize}; use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use std::path::{Path, PathBuf}; -use toml::Value; use toml_edit::{DocumentMut, InlineTable}; use wit_parser::PackageName;