From 383559c79e1f9c1b4dd36fbeed5bbcc3e91952a1 Mon Sep 17 00:00:00 2001 From: Daniel Vigovszky Date: Tue, 12 Aug 2025 20:20:35 -0400 Subject: [PATCH 1/7] Updated to the resource-improvements branch of golem --- Cargo.lock | 313 ++++---------------- Cargo.toml | 51 ++-- golem-cli/src/command_handler/worker/mod.rs | 2 + golem-cli/src/model/mod.rs | 4 +- golem-cli/tests/stubgen/stub_wasm.rs | 3 + golem-cli/wit/deps.lock | 18 +- golem-cli/wit/deps.toml | 2 +- golem-cli/wit/deps/agent/main.wit | 6 +- golem-cli/wit/deps/golem-1.x/golem-host.wit | 2 +- golem-cli/wit/deps/golem-agent/guest.wit | 4 + golem-cli/wit/deps/golem-rpc/wasm-rpc.wit | 1 + golem/Cargo.toml | 25 +- golem/src/launch.rs | 5 + 13 files changed, 142 insertions(+), 294 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eb272758c..c7526fe81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1747,7 +1747,6 @@ dependencies = [ [[package]] name = "cloud-service" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "anyhow", "async-trait", @@ -1761,9 +1760,8 @@ dependencies = [ "darling", "figment", "futures", - "futures-util", - "golem-api-grpc 0.0.0", - "golem-common 0.0.0", + "golem-api-grpc", + "golem-common", "golem-service-base", "http 1.3.1", "humantime-serde", @@ -3717,7 +3715,7 @@ dependencies = [ "dirs 6.0.0", "futures", "golem-cli", - "golem-common 0.0.0", + "golem-common", "golem-component-compilation-service", "golem-component-service", "golem-service-base", @@ -3746,33 +3744,13 @@ dependencies = [ [[package]] name = "golem-api-grpc" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "async-trait", "bincode", "bytes 1.10.1", "cargo_metadata 0.19.2", - "golem-wasm-ast 0.0.0", - "golem-wasm-rpc 0.0.0", - "prost 0.13.5", - "prost-types 0.13.5", - "tonic", - "tonic-build", - "uuid", -] - -[[package]] -name = "golem-api-grpc" -version = "1.3.0-dev.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "204ac174cb1337917bc2130fd9741bcf35d5f88fa9582c44ca086894dfe468ba" -dependencies = [ - "async-trait", - "bincode", - "bytes 1.10.1", - "cargo_metadata 0.19.2", - "golem-wasm-ast 1.3.0-dev.21", - "golem-wasm-rpc 1.3.0-dev.21", + "golem-wasm-ast", + "golem-wasm-rpc", "prost 0.13.5", "prost-types 0.13.5", "tonic", @@ -3811,13 +3789,13 @@ dependencies = [ "futures-util", "fuzzy-matcher", "golem-client", - "golem-common 1.3.0-dev.21", - "golem-rib 1.3.0-dev.21", + "golem-common", + "golem-rib", "golem-rib-repl", "golem-templates", - "golem-wasm-ast 1.3.0-dev.21", - "golem-wasm-rpc 1.3.0-dev.21", - "golem-wasm-rpc-derive 1.3.0-dev.21", + "golem-wasm-ast", + "golem-wasm-rpc", + "golem-wasm-rpc-derive", "golem-wit", "heck 0.5.0", "humansize", @@ -3884,17 +3862,15 @@ dependencies = [ [[package]] name = "golem-client" -version = "1.3.0-dev.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "017ea90814f90e9864d011344070e7e6287f2620d523d489399c22a2d9db3535" +version = "0.0.0" dependencies = [ "async-trait", "bytes 1.10.1", "chrono", - "golem-common 1.3.0-dev.21", + "golem-common", "golem-openapi-client-generator", - "golem-wasm-ast 1.3.0-dev.21", - "golem-wasm-rpc 1.3.0-dev.21", + "golem-wasm-ast", + "golem-wasm-rpc", "http 1.3.1", "reqwest 0.12.20", "serde", @@ -3908,71 +3884,11 @@ dependencies = [ [[package]] name = "golem-common" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" -dependencies = [ - "anyhow", - "async-trait", - "base64 0.22.1", - "bincode", - "bytes 1.10.1", - "chrono", - "combine", - "console-subscriber", - "darling", - "dashmap", - "derive_more 2.0.1", - "figment", - "fred", - "golem-api-grpc 0.0.0", - "golem-rib 0.0.0", - "golem-wasm-ast 0.0.0", - "golem-wasm-rpc 0.0.0", - "golem-wasm-rpc-derive 0.0.0", - "http 1.3.1", - "humantime-serde", - "iso8601-timestamp", - "itertools 0.14.0", - "lazy_static 1.5.0", - "nonempty-collections", - "poem", - "poem-derive", - "poem-openapi", - "poem-openapi-derive", - "prometheus 0.13.4", - "prost 0.13.5", - "prost-types 0.13.5", - "rand 0.9.1", - "range-set-blaze", - "regex", - "serde", - "serde_json", - "serde_yaml", - "shadow-rs", - "sqlx", - "strum 0.27.1", - "strum_macros 0.27.1", - "thiserror 2.0.12", - "tokio", - "toml", - "tonic", - "tracing", - "tracing-serde", - "tracing-subscriber", - "typed-path", - "url", - "uuid", - "wasmtime", -] - -[[package]] -name = "golem-common" -version = "1.3.0-dev.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6ac398e7e07d5e117954e72f8e1dcf550f306d8678d29802e2f4535750ef05" dependencies = [ "anyhow", "async-trait", "base64 0.22.1", + "bigdecimal", "bincode", "bytes 1.10.1", "chrono", @@ -3983,17 +3899,20 @@ dependencies = [ "derive_more 2.0.1", "figment", "fred", - "golem-api-grpc 1.3.0-dev.21", - "golem-rib 1.3.0-dev.21", - "golem-wasm-ast 1.3.0-dev.21", - "golem-wasm-rpc 1.3.0-dev.21", - "golem-wasm-rpc-derive 1.3.0-dev.21", + "golem-api-grpc", + "golem-rib", + "golem-wasm-ast", + "golem-wasm-rpc", + "golem-wasm-rpc-derive", + "heck 0.5.0", "http 1.3.1", "humantime-serde", "iso8601-timestamp", "itertools 0.14.0", "lazy_static 1.5.0", "nonempty-collections", + "openapiv3", + "openidconnect", "poem", "poem-derive", "poem-openapi", @@ -4027,13 +3946,11 @@ dependencies = [ [[package]] name = "golem-component-compilation-service" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "async-trait", "futures", - "futures-util", - "golem-api-grpc 0.0.0", - "golem-common 0.0.0", + "golem-api-grpc", + "golem-common", "golem-service-base", "golem-worker-executor", "http 1.3.1", @@ -4053,7 +3970,6 @@ dependencies = [ [[package]] name = "golem-component-service" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "anyhow", "async-trait", @@ -4066,13 +3982,12 @@ dependencies = [ "darling", "figment", "futures", - "futures-util", - "golem-api-grpc 0.0.0", - "golem-common 0.0.0", - "golem-rib 0.0.0", + "golem-api-grpc", + "golem-common", + "golem-rib", "golem-service-base", - "golem-wasm-ast 0.0.0", - "golem-wasm-rpc 0.0.0", + "golem-wasm-ast", + "golem-wasm-rpc", "http 1.3.1", "humantime-serde", "include_dir", @@ -4136,36 +4051,14 @@ checksum = "1270134f61673cd221121fad55752b4692a5bc3f7a5f9b30e4d45d7b2e044946" [[package]] name = "golem-rib" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "async-trait", "bigdecimal", "bincode", "combine", - "golem-api-grpc 0.0.0", - "golem-wasm-ast 0.0.0", - "golem-wasm-rpc 0.0.0", - "poem-openapi", - "poem-openapi-derive", - "semver", - "serde", - "serde_json", - "uuid", -] - -[[package]] -name = "golem-rib" -version = "1.3.0-dev.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1029a76bc6be6ee7655c18ca35c3a12618a88288e9bd74231d4b8074bbb9e32b" -dependencies = [ - "async-trait", - "bigdecimal", - "bincode", - "combine", - "golem-api-grpc 1.3.0-dev.21", - "golem-wasm-ast 1.3.0-dev.21", - "golem-wasm-rpc 1.3.0-dev.21", + "golem-api-grpc", + "golem-wasm-ast", + "golem-wasm-rpc", "poem-openapi", "poem-openapi-derive", "semver", @@ -4176,9 +4069,7 @@ dependencies = [ [[package]] name = "golem-rib-repl" -version = "1.3.0-dev.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14bf9e0899e8df18954fe1ab4a5d431f8faed11202075b8f0163dce5cc50e53a" +version = "0.0.0" dependencies = [ "anyhow", "async-trait", @@ -4187,9 +4078,9 @@ dependencies = [ "convert_case 0.8.0", "crossterm 0.28.1", "dirs 4.0.0", - "golem-rib 1.3.0-dev.21", - "golem-wasm-ast 1.3.0-dev.21", - "golem-wasm-rpc 1.3.0-dev.21", + "golem-rib", + "golem-wasm-ast", + "golem-wasm-rpc", "prometheus 0.13.4", "rustyline", "serde_json", @@ -4204,7 +4095,6 @@ dependencies = [ [[package]] name = "golem-service-base" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "anyhow", "applying", @@ -4222,11 +4112,11 @@ dependencies = [ "dashmap", "figment", "futures", - "golem-api-grpc 0.0.0", - "golem-common 0.0.0", - "golem-wasm-ast 0.0.0", - "golem-wasm-rpc 0.0.0", - "golem-wasm-rpc-derive 0.0.0", + "golem-api-grpc", + "golem-common", + "golem-wasm-ast", + "golem-wasm-rpc", + "golem-wasm-rpc-derive", "headers", "hex", "http 1.3.1", @@ -4260,7 +4150,6 @@ dependencies = [ [[package]] name = "golem-shard-manager" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "anyhow", "async-rwlock", @@ -4269,8 +4158,8 @@ dependencies = [ "bytes 1.10.1", "fred", "futures", - "golem-api-grpc 0.0.0", - "golem-common 0.0.0", + "golem-api-grpc", + "golem-common", "golem-service-base", "http 1.3.1", "humantime-serde", @@ -4320,34 +4209,6 @@ dependencies = [ [[package]] name = "golem-wasm-ast" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" -dependencies = [ - "bincode", - "bincode_derive", - "itertools 0.14.0", - "leb128", - "mappable-rc", - "poem-openapi", - "poem-openapi-derive", - "prost 0.13.5", - "prost-build 0.13.5", - "semver", - "serde", - "serde_json", - "time", - "wasm-encoder 0.227.1", - "wasm-metadata 0.227.1", - "wasm-wave", - "wasmparser 0.227.1", - "wit-component 0.229.0", - "wit-parser 0.229.0", -] - -[[package]] -name = "golem-wasm-ast" -version = "1.3.0-dev.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1f1498e5eef4c273a4ac6525908f3b5885fe56b5d41b97ecb56e9a3a1d120e6" dependencies = [ "bincode", "bincode_derive", @@ -4373,7 +4234,6 @@ dependencies = [ [[package]] name = "golem-wasm-rpc" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "arbitrary", "async-recursion", @@ -4385,7 +4245,7 @@ dependencies = [ "cargo_metadata 0.19.2", "chrono", "git-version", - "golem-wasm-ast 0.0.0", + "golem-wasm-ast", "poem-openapi", "poem-openapi-derive", "prost 0.13.5", @@ -4400,51 +4260,9 @@ dependencies = [ "wit-bindgen-rt 0.40.0", ] -[[package]] -name = "golem-wasm-rpc" -version = "1.3.0-dev.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb59ace8286dd608a9efe2ed55075aad9b21f0e3f5a1417754e3dc5feb1b315" -dependencies = [ - "arbitrary", - "async-recursion", - "async-trait", - "bigdecimal", - "bincode", - "bincode_derive", - "cargo_metadata 0.19.2", - "chrono", - "git-version", - "golem-wasm-ast 1.3.0-dev.21", - "poem-openapi", - "poem-openapi-derive", - "prost 0.13.5", - "prost-build 0.13.5", - "serde", - "serde_json", - "uuid", - "wasm-wave", - "wasmtime", - "wasmtime-wasi", - "wit-bindgen-rt 0.40.0", -] - [[package]] name = "golem-wasm-rpc-derive" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "golem-wasm-rpc-derive" -version = "1.3.0-dev.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd44d020dd03bd8c483a6a4c84e78017f8241229ee753d2e6c533c77d96919e" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -4454,14 +4272,11 @@ dependencies = [ [[package]] name = "golem-wit" -version = "1.3.0-dev.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6552cbc30303cdbed1ac24a9352287fbc8e97b26a28472b3972e296e5509734" +version = "0.0.0" [[package]] name = "golem-worker-executor" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "anyhow", "applying", @@ -4485,15 +4300,14 @@ dependencies = [ "fred", "fs-set-times", "futures", - "futures-util", "gethostname", - "golem-api-grpc 0.0.0", - "golem-common 0.0.0", - "golem-rib 0.0.0", + "golem-api-grpc", + "golem-common", + "golem-rib", "golem-service-base", - "golem-wasm-ast 0.0.0", - "golem-wasm-rpc 0.0.0", - "golem-wasm-rpc-derive 0.0.0", + "golem-wasm-ast", + "golem-wasm-rpc", + "golem-wasm-rpc-derive", "hex", "http 1.3.1", "http-body 1.0.1", @@ -4537,7 +4351,6 @@ dependencies = [ [[package]] name = "golem-worker-service" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" dependencies = [ "anyhow", "async-trait", @@ -4551,18 +4364,18 @@ dependencies = [ "figment", "fred", "futures", - "futures-util", - "golem-api-grpc 0.0.0", - "golem-common 0.0.0", - "golem-rib 0.0.0", + "golem-api-grpc", + "golem-common", + "golem-rib", "golem-service-base", - "golem-wasm-ast 0.0.0", - "golem-wasm-rpc 0.0.0", + "golem-wasm-ast", + "golem-wasm-rpc", "headers", "http 1.3.1", "http-body-util", "hyper 1.6.0", "include_dir", + "indexmap 2.10.0", "mime", "mime_guess", "nom 7.1.3", @@ -13044,13 +12857,3 @@ dependencies = [ "quote", "syn 2.0.104", ] - -[[patch.unused]] -name = "golem-client" -version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" - -[[patch.unused]] -name = "golem-rib-repl" -version = "0.0.0" -source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.21#02b343f95f50b29b0c3f60b6e61c59fb59409cde" diff --git a/Cargo.toml b/Cargo.toml index ec9e92e04..a0e1ae87e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,22 +11,39 @@ license-file = "LICENSE" [workspace.dependencies] # Golem dep -golem-client = "=1.3.0-dev.21" -golem-common = "=1.3.0-dev.21" -golem-rib = "=1.3.0-dev.21" -golem-rib-repl = "=1.3.0-dev.21" -golem-service-base = "=1.3.0-dev.21" -golem-wasm-ast = { version = "=1.3.0-dev.21", default-features = false, features = [ +#golem-client = "=1.3.0-dev.21" +#golem-common = "=1.3.0-dev.21" +#golem-rib = "=1.3.0-dev.21" +#golem-rib-repl = "=1.3.0-dev.21" +#golem-service-base = "=1.3.0-dev.21" +#golem-wasm-ast = { version = "=1.3.0-dev.21", default-features = false, features = [ +# "analysis", +# "wave", +#] } +#golem-wasm-rpc = { version = "=1.3.0-dev.21", default-features = false, features = [ +# "host", +#] } +#golem-wasm-rpc-derive = "=1.3.0-dev.21" +# +#golem-rdbms = "=0.0.2" +#golem-wit = "=1.3.0-dev.5" + +golem-client = { path = "../golem/golem-client" } +golem-common = { path = "../golem/golem-common" } +golem-rib = { path = "../golem/golem-rib" } +golem-rib-repl = { path = "../golem/golem-rib-repl" } +golem-service-base = { path = "../golem/golem-service-base" } +golem-wasm-ast = { path = "../golem/wasm-ast", default-features = false, features = [ "analysis", "wave", ] } -golem-wasm-rpc = { version = "=1.3.0-dev.21", default-features = false, features = [ +golem-wasm-rpc = { path = "../golem/wasm-rpc", default-features = false, features = [ "host", ] } -golem-wasm-rpc-derive = "=1.3.0-dev.21" +golem-wasm-rpc-derive = { path = "../golem/wasm-rpc-derive" } golem-rdbms = "=0.0.2" -golem-wit = "=1.3.0-dev.5" +golem-wit = { path = "../golem-wit" } # External deps anyhow = "1.0.97" @@ -135,14 +152,14 @@ wit-encoder = "0.235" wit-parser = "0.235" [patch.crates-io] -golem-client = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -golem-common = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -golem-rib = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -golem-rib-repl = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -golem-service-base = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -golem-wasm-ast = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -golem-wasm-rpc = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -golem-wasm-rpc-derive = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } +#golem-client = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } +#golem-common = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } +#golem-rib = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } +#golem-rib-repl = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } +#golem-service-base = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } +#golem-wasm-ast = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } +#golem-wasm-rpc = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } +#golem-wasm-rpc-derive = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } redis-protocol = { git = "https://github.com/golemcloud/redis-protocol.rs.git", branch = "unpin-cookie-factory" } wasmtime = { git = "https://github.com/golemcloud/wasmtime.git", branch = "golem-wasmtime-v33.0.0" } diff --git a/golem-cli/src/command_handler/worker/mod.rs b/golem-cli/src/command_handler/worker/mod.rs index 2b1d21445..e0d4142eb 100644 --- a/golem-cli/src/command_handler/worker/mod.rs +++ b/golem-cli/src/command_handler/worker/mod.rs @@ -57,6 +57,7 @@ use golem_client::model::{ WorkerCreationRequest as WorkerCreationRequestCloud, }; use golem_common::model::public_oplog::OplogCursor; +use golem_common::model::worker::WasiConfigVars; use golem_wasm_ast::analysis::AnalysedType; use golem_wasm_rpc::json::OptionallyValueAndTypeJson; use golem_wasm_rpc::{parse_value_and_type, ValueAndType}; @@ -861,6 +862,7 @@ impl WorkerCommandHandler { name: worker_name, args, env, + wasi_config_vars: WasiConfigVars::default(), }, ) .await diff --git a/golem-cli/src/model/mod.rs b/golem-cli/src/model/mod.rs index f0989c55f..1a9393032 100644 --- a/golem-cli/src/model/mod.rs +++ b/golem-cli/src/model/mod.rs @@ -462,7 +462,7 @@ pub struct WorkerMetadataView { pub last_error: Option, pub component_size: u64, pub total_linear_memory_size: u64, - pub owned_resources: HashMap, + pub owned_resources: HashMap, } impl TrimDateTime for WorkerMetadataView { @@ -514,7 +514,7 @@ pub struct WorkerMetadata { pub last_error: Option, pub component_size: u64, pub total_linear_memory_size: u64, - pub owned_resources: HashMap, + pub owned_resources: HashMap, } impl WorkerMetadata { diff --git a/golem-cli/tests/stubgen/stub_wasm.rs b/golem-cli/tests/stubgen/stub_wasm.rs index f8a6ff1ca..d9c8e3f4e 100644 --- a/golem-cli/tests/stubgen/stub_wasm.rs +++ b/golem-cli/tests/stubgen/stub_wasm.rs @@ -701,6 +701,7 @@ fn assert_has_stub( resource_id, mode: AnalysedResourceMode::Borrowed, name: None, + owner: None, })], parameters, ] @@ -727,6 +728,7 @@ fn assert_has_stub( mode: AnalysedResourceMode::Owned, resource_id, name: None, + owner: None, }) => resource_id.clone(), _ => panic!("unexpected async result return type"), }; @@ -762,6 +764,7 @@ fn assert_valid_polling_resource( resource_id: resource_id.clone(), mode: AnalysedResourceMode::Borrowed, name: None, + owner: None, }) }) .collect::>(); diff --git a/golem-cli/wit/deps.lock b/golem-cli/wit/deps.lock index e906775ae..2eec6c192 100644 --- a/golem-cli/wit/deps.lock +++ b/golem-cli/wit/deps.lock @@ -1,7 +1,7 @@ [agent] -url = "https://github.com/golemcloud/golem-agentic/archive/main.tar.gz" -sha256 = "860bbac7d96cfcdfb2c31bbb8c8d8430e55f87300042ee94228228c37d554872" -sha512 = "cb3d758b6b8c834131479ebd17e63a83ac9f376e33183bb00947e269da0ffefbeb1c945be5a51fc30497d8f6e833e20124f3f1ff6a63e9b67afeed094cfa8961" +url = "https://github.com/golemcloud/golem-agentic/archive/type-owner.tar.gz" +sha256 = "92738a15004db69c4c7dd4c7d531d3fb40d10779ff130d2c0d008d3984d2f73f" +sha512 = "b37e4979adfe4f35c44786a1b79db9455ab56a02f28dfc6ae1cfb8d658bd92793d87e6aef98fa8b21c5ffdef1016893887199011953cae6744e74efefbd186af" deps = ["all", "blobstore", "cli", "clocks", "config", "filesystem", "golem-1.x", "golem-agent", "golem-durability", "golem-rpc", "http", "io", "keyvalue", "logging", "random", "sockets"] [all] @@ -29,20 +29,20 @@ sha256 = "69d42fb10a04a33545b17e055f13db9b1e10e82ba0ed5bdb52334e40dc07c679" sha512 = "612effbac6f4804fe0c29dae20b78bbba59e52cb754c15402f5fe229c3153a221e0fbdff1d9d00ceaa3fe049c6a95523a5b99f772f1c16d972eade2c88326a30" ["golem-1.x"] -sha256 = "d707888500487684ea753aa86547665221803d64445fcb1ef23470ded04eaab7" -sha512 = "7558b6110b7f8b43b8b9858e9236eba2569babf9a23204d186785e6693172c94856e271406b7753ed75c8e1fefb2558e7038b10f3dead448a4ea23975f3d10df" +sha256 = "831dbbcffd5061289633f68704593d4d22e8c7a6c95b65493f0d103a8d1eed04" +sha512 = "4830f5095505702aeaeb5838810be9fe2d69929f3b7a2156621e34d350f270ab224d13e007ceab9b9a4f4990593b88c211209f644253767a04eb7f2bd4333fc9" [golem-agent] -sha256 = "7a7bab29059c195c95878c1ad3cacdb2e82ba7a89e309684eedfe02cbe2c5bcf" -sha512 = "71c638d2f5c75627423f31ce4e8b518831636ebb32b1948384df3a47595a408e8b3a4a415f20ec571135ca2a5e1fc5684bb9c91f0b7f00fcb79bef3f00e11d8f" +sha256 = "8203e5ef06976efafd35534eef86f507dc478744452ab0f13e27d7a46bf7dd94" +sha512 = "87e6de91f964e4394073175bf7326abf37c748e08327e74a4e896e986256da7bca6cd49400a2e438a3d9f29791e6f9ec14648af5a0063b98ea50a9123765e7d3" [golem-durability] sha256 = "c5f8b9b4bda5a8d5d1d008978abed617c18da7d9c24167bf20a81a379d10d688" sha512 = "40e09d412fd6faee904ce6f8abdcf3f83a604eca3628bf5605b7667540874ea53f9e29392059dac327ca96a0f1298372cb0626abcf66a1df4f4180731c13646a" [golem-rpc] -sha256 = "a73f66a61e81b237057117b14aecc6c4c20eb004a4244ae10a51a876f71cf626" -sha512 = "396a1738320f7dc34a9a066755397b132b976e81c7cd28a8f45ff32aa5ea3226eb91d1e26d73995104b397fbd063ff83090550718f805773ceb78eb4f2155acf" +sha256 = "5ba11ce01c333b3e9ef877431c8d447c9617711cf40cb2f41c1261ea7b883f14" +sha512 = "fafc17bdc2bdc4eb84510272e4ddec587ad0d835d764124b20cd67cb8d91551d4b603e63cb8d04721b43843de56249c0420e4cdfd788367fd746c3196c1d46c6" [http] sha256 = "72d3a00dbf39eed40a134e8b1dee85834961153f9d205ee4dd56657270c084ce" diff --git a/golem-cli/wit/deps.toml b/golem-cli/wit/deps.toml index f1ad03aa3..0c6d02cdd 100644 --- a/golem-cli/wit/deps.toml +++ b/golem-cli/wit/deps.toml @@ -1 +1 @@ -agent = "https://github.com/golemcloud/golem-agentic/archive/main.tar.gz" +agent = "https://github.com/golemcloud/golem-agentic/archive/type-owner.tar.gz" diff --git a/golem-cli/wit/deps/agent/main.wit b/golem-cli/wit/deps/agent/main.wit index 1c300786e..0e5cb88b3 100644 --- a/golem-cli/wit/deps/agent/main.wit +++ b/golem-cli/wit/deps/agent/main.wit @@ -1 +1,5 @@ -package unused:agentic; +package golem:agent-guest; + +world agent-guest { + include golem:agent/agent-guest; +} diff --git a/golem-cli/wit/deps/golem-1.x/golem-host.wit b/golem-cli/wit/deps/golem-1.x/golem-host.wit index bb932f767..62dcef06e 100644 --- a/golem-cli/wit/deps/golem-1.x/golem-host.wit +++ b/golem-cli/wit/deps/golem-1.x/golem-host.wit @@ -4,7 +4,7 @@ package golem:api@1.1.7; /// the durability and transactional guarantees the executor provides. interface host { use wasi:clocks/monotonic-clock@0.2.3.{duration}; - use golem:rpc/types@0.2.2.{component-id, uuid, worker-id}; + use golem:rpc/types@0.2.2.{component-id, uuid, value-and-type, worker-id}; /// An index into the persistent log storing all performed operations of a worker type oplog-index = u64; diff --git a/golem-cli/wit/deps/golem-agent/guest.wit b/golem-cli/wit/deps/golem-agent/guest.wit index e71b8c8e7..1e08dde86 100644 --- a/golem-cli/wit/deps/golem-agent/guest.wit +++ b/golem-cli/wit/deps/golem-agent/guest.wit @@ -25,3 +25,7 @@ world agent-guest { import golem:rpc/types@0.2.2; export guest; } + +world agent-host { + export host; +} diff --git a/golem-cli/wit/deps/golem-rpc/wasm-rpc.wit b/golem-cli/wit/deps/golem-rpc/wasm-rpc.wit index c4ed84cc3..372919b05 100644 --- a/golem-cli/wit/deps/golem-rpc/wasm-rpc.wit +++ b/golem-cli/wit/deps/golem-rpc/wasm-rpc.wit @@ -71,6 +71,7 @@ interface types { record named-wit-type-node { name: option, + owner: option, %type: wit-type-node } diff --git a/golem/Cargo.toml b/golem/Cargo.toml index 3bac2b570..e072a123e 100644 --- a/golem/Cargo.toml +++ b/golem/Cargo.toml @@ -23,14 +23,23 @@ golem-cli = { path = "../golem-cli", features = [ ], version = "=0.0.0" } # Golem - git deps -golem-common = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -golem-service-base = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -cloud-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -golem-component-compilation-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -golem-component-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -golem-shard-manager = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -golem-worker-executor = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -golem-worker-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } +#golem-common = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } +#golem-service-base = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } +#cloud-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } +#golem-component-compilation-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } +#golem-component-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } +#golem-shard-manager = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } +#golem-worker-executor = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } +#golem-worker-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } + +golem-common = { path = "../../golem/golem-common" } +golem-service-base = { path = "../../golem/golem-service-base" } +cloud-service = { path = "../../golem/cloud-service" } +golem-component-compilation-service = { path = "../../golem/golem-component-compilation-service" } +golem-component-service = { path = "../../golem/golem-component-service" } +golem-shard-manager = { path = "../../golem/golem-shard-manager" } +golem-worker-executor = { path = "../../golem/golem-worker-executor" } +golem-worker-service = { path = "../../golem/golem-worker-service" } # External deps anyhow = { workspace = true } diff --git a/golem/src/launch.rs b/golem/src/launch.rs index 9edc7871d..3f67bbb9e 100644 --- a/golem/src/launch.rs +++ b/golem/src/launch.rs @@ -157,6 +157,7 @@ fn cloud_service_config(args: &LaunchArgs) -> CloudServiceConfig { db: DbConfig::Sqlite(DbSqliteConfig { database: args.data_dir.join("cloud.db").to_string_lossy().to_string(), max_connections: 4, + foreign_keys: false, }), accounts: AccountsConfig { accounts }, ..Default::default() @@ -224,6 +225,7 @@ fn component_service_config( .to_string_lossy() .to_string(), max_connections: 4, + foreign_keys: false, }), blob_storage: blob_storage_config(args), compilation: golem_component_service::config::ComponentCompilationConfig::Enabled( @@ -276,6 +278,7 @@ fn worker_executor_config( .to_string_lossy() .to_string(), max_connections: 4, + foreign_keys: false, }), indexed_storage: IndexedStorageConfig::KVStoreSqlite(IndexedStorageKVStoreSqliteConfig {}), blob_storage: blob_storage_config(args), @@ -337,6 +340,7 @@ fn worker_service_config( .to_string_lossy() .to_string(), max_connections: 4, + foreign_keys: false, }), gateway_session_storage: golem_worker_service::config::GatewaySessionStorageConfig::Sqlite( DbSqliteConfig { @@ -346,6 +350,7 @@ fn worker_service_config( .to_string_lossy() .to_string(), max_connections: 4, + foreign_keys: false, }, ), blob_storage: blob_storage_config(args), From 7d4c0593737b61ae95aaa842be42a7a865709884 Mon Sep 17 00:00:00 2001 From: Daniel Vigovszky Date: Wed, 13 Aug 2025 21:03:12 -0400 Subject: [PATCH 2/7] Updates --- golem-cli/src/command_handler/partial_match.rs | 2 +- golem-cli/src/command_handler/rib_repl.rs | 6 +++--- golem-cli/src/command_handler/worker/mod.rs | 4 ++-- golem-cli/src/model/agent/wit.rs | 5 +++++ golem-cli/src/model/component.rs | 10 +++++----- golem-cli/src/model/deploy_diff/component.rs | 2 +- golem-cli/src/wasm_rpc_stubgen/wit_generate.rs | 1 + golem-cli/wit/deps.lock | 4 ++-- golem-cli/wit/deps/golem-agent/guest.wit | 4 ++++ 9 files changed, 24 insertions(+), 14 deletions(-) diff --git a/golem-cli/src/command_handler/partial_match.rs b/golem-cli/src/command_handler/partial_match.rs index 5327500ee..1a98443d0 100644 --- a/golem-cli/src/command_handler/partial_match.rs +++ b/golem-cli/src/command_handler/partial_match.rs @@ -181,7 +181,7 @@ impl ErrorHandler { log_text_view(&AvailableFunctionNamesHelp { component_name: worker_name_match.component_name.0, function_names: show_exported_functions( - component.metadata.exports.as_slice(), + component.metadata.exports(), true, ), }); diff --git a/golem-cli/src/command_handler/rib_repl.rs b/golem-cli/src/command_handler/rib_repl.rs index ec36962d0..b0fe00ea3 100644 --- a/golem-cli/src/command_handler/rib_repl.rs +++ b/golem-cli/src/command_handler/rib_repl.rs @@ -80,15 +80,15 @@ impl RibReplHandler { let component_dependency_key = ComponentDependencyKey { component_name: component.component_name.0.clone(), component_id: component.versioned_component_id.component_id, - root_package_name: component.metadata.root_package_name.clone(), - root_package_version: component.metadata.root_package_version.clone(), + root_package_name: component.metadata.root_package_name().clone(), + root_package_version: component.metadata.root_package_version().clone(), }; self.ctx .set_rib_repl_dependencies(ReplComponentDependencies { component_dependencies: vec![ComponentDependency::new( component_dependency_key, - component.metadata.exports.clone(), + component.metadata.exports().to_vec(), )], }) .await; diff --git a/golem-cli/src/command_handler/worker/mod.rs b/golem-cli/src/command_handler/worker/mod.rs index e0d4142eb..72e81e160 100644 --- a/golem-cli/src/command_handler/worker/mod.rs +++ b/golem-cli/src/command_handler/worker/mod.rs @@ -279,7 +279,7 @@ impl WorkerCommandHandler { .await?; let matched_function_name = - fuzzy_match_function_name(function_name, &component.metadata.exports); + fuzzy_match_function_name(function_name, component.metadata.exports()); let function_name = match matched_function_name { Ok(match_) => { log_fuzzy_match(&match_); @@ -287,7 +287,7 @@ impl WorkerCommandHandler { } Err(error) => { let component_functions = - show_exported_functions(&component.metadata.exports, false); + show_exported_functions(component.metadata.exports(), false); match error { Error::Ambiguous { diff --git a/golem-cli/src/model/agent/wit.rs b/golem-cli/src/model/agent/wit.rs index 879c68ea3..3ec84754d 100644 --- a/golem-cli/src/model/agent/wit.rs +++ b/golem-cli/src/model/agent/wit.rs @@ -644,6 +644,7 @@ fn add_golem_host(resolve: &mut Resolve) -> anyhow::Result { fn add_golem_agent(resolve: &mut Resolve) -> anyhow::Result { const GOLEM_AGENT_GUEST_WIT: &str = include_str!("../../../wit/deps/golem-agent/guest.wit"); + const GOLEM_AGENT_HOST_WIT: &str = include_str!("../../../wit/deps/golem-agent/host.wit"); const GOLEM_AGENT_COMMON_WIT: &str = include_str!("../../../wit/deps/golem-agent/common.wit"); let mut golem_agent_source = SourceMap::default(); @@ -655,6 +656,10 @@ fn add_golem_agent(resolve: &mut Resolve) -> anyhow::Result { Path::new("wit/deps/golem-agent/guest.wit"), GOLEM_AGENT_GUEST_WIT, ); + golem_agent_source.push( + Path::new("wit/deps/golem-agent/host.wit"), + GOLEM_AGENT_HOST_WIT, + ); let golem_agent_pkg_group = golem_agent_source.parse()?; resolve.push_group(golem_agent_pkg_group) } diff --git a/golem-cli/src/model/component.rs b/golem-cli/src/model/component.rs index 18c5f4474..497a2190f 100644 --- a/golem-cli/src/model/component.rs +++ b/golem-cli/src/model/component.rs @@ -179,14 +179,14 @@ impl ComponentView { component_size: value.component_size, created_at: value.created_at, project_id: value.project_id, - exports: show_exported_functions(&value.metadata.exports, true), + exports: show_exported_functions(value.metadata.exports(), true), dynamic_linking: value .metadata - .dynamic_linking - .into_iter() + .dynamic_linking() + .iter() .map(|(name, link)| { ( - name, + name.clone(), match link { DynamicLinkedInstance::WasmRpc(links) => links .targets @@ -363,7 +363,7 @@ fn resolve_function<'t>( let parsed = ParsedFunctionName::parse(function).map_err(|err| anyhow!(err))?; let mut functions = Vec::new(); - for export in &component.metadata.exports { + for export in component.metadata.exports() { match export { AnalysedExport::Instance(interface) => { if matches!(parsed.site().interface_name(), Some(name) if name == interface.name) { diff --git a/golem-cli/src/model/deploy_diff/component.rs b/golem-cli/src/model/deploy_diff/component.rs index 34ecc8828..743435276 100644 --- a/golem-cli/src/model/deploy_diff/component.rs +++ b/golem-cli/src/model/deploy_diff/component.rs @@ -57,7 +57,7 @@ impl DiffableComponent { files, dynamic_linking: component .metadata - .dynamic_linking + .dynamic_linking() .iter() .map(|(name, link)| { ( diff --git a/golem-cli/src/wasm_rpc_stubgen/wit_generate.rs b/golem-cli/src/wasm_rpc_stubgen/wit_generate.rs index b244c249b..a3e698b1f 100644 --- a/golem-cli/src/wasm_rpc_stubgen/wit_generate.rs +++ b/golem-cli/src/wasm_rpc_stubgen/wit_generate.rs @@ -551,6 +551,7 @@ pub fn add_client_as_dependency_to_wit_dir(config: AddClientAsDepConfig) -> anyh &naming::wit::client_import_exports_prefix_from_client_package_name(&client_package.name)?, ); add_world_named_interface_import(package, &naming::wit::client_import_name(client_package)?); + let content = package.to_string(); actions.add(OverwriteSafeAction::WriteFile { diff --git a/golem-cli/wit/deps.lock b/golem-cli/wit/deps.lock index 2eec6c192..de5720d09 100644 --- a/golem-cli/wit/deps.lock +++ b/golem-cli/wit/deps.lock @@ -33,8 +33,8 @@ sha256 = "831dbbcffd5061289633f68704593d4d22e8c7a6c95b65493f0d103a8d1eed04" sha512 = "4830f5095505702aeaeb5838810be9fe2d69929f3b7a2156621e34d350f270ab224d13e007ceab9b9a4f4990593b88c211209f644253767a04eb7f2bd4333fc9" [golem-agent] -sha256 = "8203e5ef06976efafd35534eef86f507dc478744452ab0f13e27d7a46bf7dd94" -sha512 = "87e6de91f964e4394073175bf7326abf37c748e08327e74a4e896e986256da7bca6cd49400a2e438a3d9f29791e6f9ec14648af5a0063b98ea50a9123765e7d3" +sha256 = "6be6440f46d8dfe021950d9bfd90749f41015e01ead9a08442c66288121b8e96" +sha512 = "f0db1297f3bfa15ed8fa76bfae5b0accc2a6eabe2243f415b8398540d801509160ab0965aa60e52d744dc28ce068b23aab730daaf0317b0b8f41d25a9f42788f" [golem-durability] sha256 = "c5f8b9b4bda5a8d5d1d008978abed617c18da7d9c24167bf20a81a379d10d688" diff --git a/golem-cli/wit/deps/golem-agent/guest.wit b/golem-cli/wit/deps/golem-agent/guest.wit index 1e08dde86..4fe6473ee 100644 --- a/golem-cli/wit/deps/golem-agent/guest.wit +++ b/golem-cli/wit/deps/golem-agent/guest.wit @@ -15,6 +15,10 @@ interface guest { get-agent: func(agent-type: string, agent-id: string) -> agent; + /// Invokes an agent method on an agent of a given type and ID. + /// Equivalent of getting an agent with `get-agent` and calling `invoke` on that. + invoke-agent: func(agent-type: string, agent-id: string, method-name: string, input: data-value) -> result; + discover-agents: func() -> list; discover-agent-types: func() -> list; From 87326660cfa207fafd162e7ee4b8b7e013b2ca93 Mon Sep 17 00:00:00 2001 From: Daniel Vigovszky Date: Thu, 14 Aug 2025 12:23:17 -0400 Subject: [PATCH 3/7] Sync with golem changes --- Cargo.lock | 43 +-- Cargo.toml | 2 +- golem-cli/src/command_handler/worker/mod.rs | 6 +- golem-cli/src/model/agent/extraction.rs | 247 +----------------- golem-cli/src/model/mod.rs | 53 ++-- golem-cli/src/wasm_rpc_stubgen/wit_resolve.rs | 2 +- 6 files changed, 36 insertions(+), 317 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c7526fe81..d0f33224c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3941,6 +3941,8 @@ dependencies = [ "url", "uuid", "wasmtime", + "wasmtime-wasi", + "wit-parser 0.235.0", ] [[package]] @@ -4227,8 +4229,8 @@ dependencies = [ "wasm-metadata 0.227.1", "wasm-wave", "wasmparser 0.227.1", - "wit-component 0.229.0", - "wit-parser 0.229.0", + "wit-component 0.235.0", + "wit-parser 0.235.0", ] [[package]] @@ -11106,18 +11108,6 @@ dependencies = [ "wasmparser 0.228.0", ] -[[package]] -name = "wasm-metadata" -version = "0.229.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78fdb7d29a79191ab363dc90c1ddd3a1e880ffd5348d92d48482393a9e6c5f4d" -dependencies = [ - "anyhow", - "indexmap 2.10.0", - "wasm-encoder 0.229.0", - "wasmparser 0.229.0", -] - [[package]] name = "wasm-metadata" version = "0.235.0" @@ -11222,14 +11212,14 @@ dependencies = [ [[package]] name = "wasm-wave" -version = "0.229.0" +version = "0.235.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd33c30a68c41ff354d7b3741f5d2d3dfbf8eb52033176bb01364cbdf016c17c" +checksum = "034bc908dc5c1257ffc63b42c7ac7039092bd369e858c5e78e3242b662a8b7d1" dependencies = [ "indexmap 2.10.0", "logos", "thiserror 1.0.69", - "wit-parser 0.229.0", + "wit-parser 0.235.0", ] [[package]] @@ -12396,25 +12386,6 @@ dependencies = [ "wit-parser 0.227.1", ] -[[package]] -name = "wit-component" -version = "0.229.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f550067740e223bfe6c4878998e81cdbe2529dd9a793dc49248dd6613394e8b" -dependencies = [ - "anyhow", - "bitflags 2.9.1", - "indexmap 2.10.0", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder 0.229.0", - "wasm-metadata 0.229.0", - "wasmparser 0.229.0", - "wit-parser 0.229.0", -] - [[package]] name = "wit-component" version = "0.235.0" diff --git a/Cargo.toml b/Cargo.toml index a0e1ae87e..277b39987 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ license-file = "LICENSE" #golem-wit = "=1.3.0-dev.5" golem-client = { path = "../golem/golem-client" } -golem-common = { path = "../golem/golem-common" } +golem-common = { path = "../golem/golem-common", features = ["agent-extraction"] } golem-rib = { path = "../golem/golem-rib" } golem-rib-repl = { path = "../golem/golem-rib-repl" } golem-service-base = { path = "../golem/golem-service-base" } diff --git a/golem-cli/src/command_handler/worker/mod.rs b/golem-cli/src/command_handler/worker/mod.rs index 72e81e160..871e2d392 100644 --- a/golem-cli/src/command_handler/worker/mod.rs +++ b/golem-cli/src/command_handler/worker/mod.rs @@ -809,7 +809,7 @@ impl WorkerCommandHandler { .await .map_service_error()?; - WorkerMetadata::from_cloud(worker_name_match.component_name, result) + WorkerMetadata::from(worker_name_match.component_name, result) }; self.ctx @@ -1003,7 +1003,7 @@ impl WorkerCommandHandler { .await .map_service_error()?; - Ok(WorkerMetadata::from_cloud(component_name.clone(), result)) + Ok(WorkerMetadata::from(component_name.clone(), result)) } async fn delete(&self, component_id: Uuid, worker_name: &str) -> anyhow::Result<()> { @@ -1371,7 +1371,7 @@ impl WorkerCommandHandler { results .workers .into_iter() - .map(|meta| WorkerMetadata::from_cloud(component_name.clone(), meta)), + .map(|meta| WorkerMetadata::from(component_name.clone(), meta)), ); results.cursor diff --git a/golem-cli/src/model/agent/extraction.rs b/golem-cli/src/model/agent/extraction.rs index ea1f0e99e..bbd1f819d 100644 --- a/golem-cli/src/model/agent/extraction.rs +++ b/golem-cli/src/model/agent/extraction.rs @@ -45,250 +45,5 @@ pub async fn extract_agent_types(wasm_path: &Path) -> anyhow::Result = Linker::new(&engine); - linker.allow_shadowing(true); - - wasmtime_wasi::p2::add_to_linker_with_options_async( - &mut linker, - &wasmtime_wasi::p2::bindings::LinkOptions::default(), - )?; - - let (wasi, io) = WasiCtx::builder().inherit_stdout().inherit_stderr().build(); - let host = Host { - table: Arc::new(Mutex::new(ResourceTable::new())), - wasi: Arc::new(Mutex::new(wasi)), - io: Arc::new(Mutex::new(io)), - }; - - let component = Component::from_file(&engine, wasm_path)?; - let mut store = Store::new(&engine, host); - - let mut linker_instance = linker.root(); - let component_type = component.component_type(); - for (name, item) in component_type.imports(&engine) { - let name = name.to_string(); - match item { - ComponentItem::ComponentFunc(_) => {} - ComponentItem::CoreFunc(_) => {} - ComponentItem::Module(_) => {} - ComponentItem::Component(_) => {} - ComponentItem::ComponentInstance(ref inst) => { - dynamic_import(&name, &engine, &mut linker_instance, inst)?; - } - ComponentItem::Type(_) => {} - ComponentItem::Resource(_) => {} - } - } - - debug!("Instantiating component"); - let instance = linker.instantiate_async(&mut store, &component).await?; - - let func = find_discover_function(&mut store, &instance)?; - let typed_func = func.typed::<(), ( - Vec, - )>(&mut store)?; - let results = typed_func.call_async(&mut store, ()).await?; - typed_func.post_return_async(&mut store).await?; - - let agent_types = results.0.into_iter().map(AgentType::from).collect(); - debug!("Discovered agent types: {:#?}", agent_types); - Ok(agent_types) -} - -/// Checks if the given resolved component implements the `golem:agent/guest` interface. -pub fn is_agent( - resolve: &Resolve, - root_package_id: &PackageId, - world: Option<&str>, -) -> anyhow::Result { - let golem_agent_package = wit_parser::PackageName { - namespace: "golem".to_string(), - name: "agent".to_string(), - version: None, - }; - const GOLEM_AGENT_INTERFACE_NAME: &str = "guest"; - - let world_id = resolve.select_world(*root_package_id, world)?; - let world = resolve - .worlds - .get(world_id) - .ok_or_else(|| anyhow!("Could not get {world_id:?}"))?; - let world_name = &world.name; - for (key, item) in &world.exports { - if let WorldItem::Interface { id, .. } = &item { - let interface = resolve.interfaces.get(*id).ok_or_else(|| { - anyhow!("Could not get exported interface {key:?} exported from world {world_name}") - })?; - if let Some(interface_name) = interface.name.as_ref() { - if interface_name == GOLEM_AGENT_INTERFACE_NAME { - if let Some(package_id) = &interface.package { - let package = resolve.packages.get(*package_id).ok_or_else(|| { - anyhow!( - "Could not get owner package of exported interface {interface_name}" - ) - })?; - - if package.name == golem_agent_package { - return Ok(true); - } - } - } - } - } - } - - Ok(false) -} - -fn find_discover_function( - mut store: impl AsContextMut, - instance: &Instance, -) -> anyhow::Result { - let (_, exported_instance_id) = instance - .get_export(&mut store, None, INTERFACE_NAME) - .ok_or_else(|| anyhow!("Interface {INTERFACE_NAME} not found"))?; - let (_, func_id) = instance - .get_export(&mut store, Some(&exported_instance_id), FUNCTION_NAME) - .ok_or_else(|| { - anyhow!("Function {FUNCTION_NAME} not found in interface {INTERFACE_NAME}") - })?; - let func = instance - .get_func(&mut store, func_id) - .ok_or_else(|| anyhow!("Function {FUNCTION_NAME} not found"))?; - - Ok(func) -} - -#[derive(Clone)] -struct Host { - pub table: Arc>, - pub wasi: Arc>, - pub io: Arc>, + golem_common::model::agent::extraction::extract_agent_types(wasm_path).await } - -impl IoView for Host { - fn table(&mut self) -> &mut ResourceTable { - Arc::get_mut(&mut self.table) - .expect("ResourceTable is shared and cannot be borrowed mutably") - .get_mut() - .expect("ResourceTable mutex must never fail") - } - - fn io_ctx(&mut self) -> &mut IoCtx { - Arc::get_mut(&mut self.io) - .expect("IoCtx is shared and cannot be borrowed mutably") - .get_mut() - .expect("IoCtx mutex must never fail") - } -} - -impl WasiView for Host { - fn ctx(&mut self) -> &mut WasiCtx { - Arc::get_mut(&mut self.wasi) - .expect("WasiCtx is shared and cannot be borrowed mutably") - .get_mut() - .expect("WasiCtx mutex must never fail") - } -} - -fn dynamic_import( - name: &str, - engine: &Engine, - root: &mut LinkerInstance, - inst: &ComponentInstance, -) -> anyhow::Result<()> { - if name.starts_with("wasi:cli") - || name.starts_with("wasi:clocks") - || name.starts_with("wasi:filesystem") - || name.starts_with("wasi:io") - || name.starts_with("wasi:random") - || name.starts_with("wasi:sockets") - { - // These does not have to be mocked, we allow them through wasmtime-wasi - Ok(()) - } else { - let mut instance = root.instance(name)?; - let mut functions = Vec::new(); - - for (inner_name, inner_item) in inst.exports(engine) { - let name = name.to_owned(); - let inner_name = inner_name.to_owned(); - - match inner_item { - ComponentItem::ComponentFunc(fun) => { - let param_types: Vec = fun.params().map(|(_, t)| t).collect(); - let result_types: Vec = fun.results().collect(); - - let function_name = ParsedFunctionName::parse(format!( - "{name}.{{{inner_name}}}" - )) - .map_err(|err| anyhow!(format!("Unexpected linking error: {name}.{{{inner_name}}} is not a valid function name: {err}")))?; - - functions.push(FunctionInfo { - name: function_name, - params: param_types, - results: result_types, - }); - } - ComponentItem::CoreFunc(_) => {} - ComponentItem::Module(_) => {} - ComponentItem::Component(_) => {} - ComponentItem::ComponentInstance(_) => {} - ComponentItem::Type(_) => {} - ComponentItem::Resource(_resource) => { - if &inner_name != "pollable" - && &inner_name != "input-stream" - && &inner_name != "output-stream" - { - // TODO: figure out how to do this properly - instance.resource( - &inner_name, - ResourceType::host::(), - |_store, _rep| Ok(()), - )?; - } - } - } - } - - for function in functions { - instance.func_new_async( - &function.name.function.function_name(), - move |_store, _params, _results| { - let function_name = function.name.clone(); - Box::new(async move { - error!( - "External function called in get-agent-definitions: {function_name}", - ); - Err(anyhow!( - "External function called in get-agent-definitions: {function_name}" - )) - }) - }, - )?; - } - - Ok(()) - } -} - -#[allow(unused)] -struct MethodInfo { - method_name: String, - params: Vec, - results: Vec, -} - -#[allow(unused)] -struct FunctionInfo { - name: ParsedFunctionName, - params: Vec, - results: Vec, -} - -struct ResourceEntry; diff --git a/golem-cli/src/model/mod.rs b/golem-cli/src/model/mod.rs index 1a9393032..4648c1cba 100644 --- a/golem-cli/src/model/mod.rs +++ b/golem-cli/src/model/mod.rs @@ -40,6 +40,9 @@ use clap_verbosity_flag::Verbosity; use colored::control::SHOULD_COLORIZE; use golem_client::model::PluginTypeSpecificDefinition; use golem_common::model::trim_date::TrimDateTime; +use golem_common::model::{ + AgentInstanceDescription, AgentInstanceKey, ExportedResourceInstanceDescription, +}; use golem_templates::model::{ GuestLanguage, GuestLanguageTier, PackageName, Template, TemplateName, }; @@ -152,7 +155,7 @@ impl FromStr for PluginReference { let version = segments.pop().unwrap().to_string(); let name = segments.pop().unwrap().to_string(); Ok(Self::RelativeToCurrentAccount { name, version }) - }, + } 3 => { let version = segments.pop().unwrap().to_string(); let name = segments.pop().unwrap().to_string(); @@ -462,7 +465,8 @@ pub struct WorkerMetadataView { pub last_error: Option, pub component_size: u64, pub total_linear_memory_size: u64, - pub owned_resources: HashMap, + pub exported_resource_instances: HashMap, + pub agent_instances: HashMap, } impl TrimDateTime for WorkerMetadataView { @@ -492,7 +496,8 @@ impl From for WorkerMetadataView { last_error: value.last_error, component_size: value.component_size, total_linear_memory_size: value.total_linear_memory_size, - owned_resources: value.owned_resources, + exported_resource_instances: value.exported_resource_instances, + agent_instances: value.agent_instances, } } } @@ -514,11 +519,12 @@ pub struct WorkerMetadata { pub last_error: Option, pub component_size: u64, pub total_linear_memory_size: u64, - pub owned_resources: HashMap, + pub exported_resource_instances: HashMap, + pub agent_instances: HashMap, } impl WorkerMetadata { - pub fn from_oss( + pub fn from( component_name: ComponentName, value: golem_client::model::WorkerMetadata, ) -> Self { @@ -538,31 +544,18 @@ impl WorkerMetadata { last_error: value.last_error, component_size: value.component_size, total_linear_memory_size: value.total_linear_memory_size, - owned_resources: value.owned_resources, - } - } - - pub fn from_cloud( - component_name: ComponentName, - value: golem_client::model::WorkerMetadata, - ) -> Self { - WorkerMetadata { - worker_id: value.worker_id, - component_name, - created_by: Some(AccountId(value.created_by)), - project_id: Some(ProjectId(value.project_id)), - args: value.args, - env: value.env, - status: value.status, - component_version: value.component_version, - retry_count: value.retry_count, - pending_invocation_count: value.pending_invocation_count, - updates: value.updates, - created_at: value.created_at, - last_error: value.last_error, - component_size: value.component_size, - total_linear_memory_size: value.total_linear_memory_size, - owned_resources: value.owned_resources, + exported_resource_instances: HashMap::from_iter( + value.exported_resource_instances.into_iter().map(|desc| { + let key = desc.key.resource_id.to_string(); + (key, desc.description) + }), + ), + agent_instances: HashMap::from_iter( + value + .agent_instances + .into_iter() + .map(|desc| (desc.key, desc.description)), + ), } } } diff --git a/golem-cli/src/wasm_rpc_stubgen/wit_resolve.rs b/golem-cli/src/wasm_rpc_stubgen/wit_resolve.rs index ea81d7a4e..738b7230e 100644 --- a/golem-cli/src/wasm_rpc_stubgen/wit_resolve.rs +++ b/golem-cli/src/wasm_rpc_stubgen/wit_resolve.rs @@ -148,7 +148,7 @@ impl ResolvedWitDir { } pub fn is_agent(&self) -> anyhow::Result { - crate::model::agent::extraction::is_agent(&self.resolve, &self.package_id, None) + golem_common::model::agent::extraction::is_agent(&self.resolve, &self.package_id, None) } } From 1957197b88d277209164c58bf2b2adda832116f9 Mon Sep 17 00:00:00 2001 From: Daniel Vigovszky Date: Thu, 14 Aug 2025 23:08:20 -0400 Subject: [PATCH 4/7] Updates --- Cargo.toml | 51 ++++------- golem-cli/agent_wrapper/guest.mbt | 6 ++ golem-cli/src/model/text/worker.rs | 87 +++++++++++++++++++ .../cargo/Cargo.toml.with_deps_and_comments | 2 +- .../rust/rust-app-common/Cargo.toml._ | 2 +- golem/Cargo.toml | 25 ++---- 6 files changed, 120 insertions(+), 53 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 277b39987..9f53aae22 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,39 +11,22 @@ license-file = "LICENSE" [workspace.dependencies] # Golem dep -#golem-client = "=1.3.0-dev.21" -#golem-common = "=1.3.0-dev.21" -#golem-rib = "=1.3.0-dev.21" -#golem-rib-repl = "=1.3.0-dev.21" -#golem-service-base = "=1.3.0-dev.21" -#golem-wasm-ast = { version = "=1.3.0-dev.21", default-features = false, features = [ -# "analysis", -# "wave", -#] } -#golem-wasm-rpc = { version = "=1.3.0-dev.21", default-features = false, features = [ -# "host", -#] } -#golem-wasm-rpc-derive = "=1.3.0-dev.21" -# -#golem-rdbms = "=0.0.2" -#golem-wit = "=1.3.0-dev.5" - -golem-client = { path = "../golem/golem-client" } -golem-common = { path = "../golem/golem-common", features = ["agent-extraction"] } -golem-rib = { path = "../golem/golem-rib" } -golem-rib-repl = { path = "../golem/golem-rib-repl" } -golem-service-base = { path = "../golem/golem-service-base" } -golem-wasm-ast = { path = "../golem/wasm-ast", default-features = false, features = [ +golem-client = "=1.3.0-dev.22" +golem-common = "=1.3.0-dev.22" +golem-rib = "=1.3.0-dev.22" +golem-rib-repl = "=1.3.0-dev.22" +golem-service-base = "=1.3.0-dev.22" +golem-wasm-ast = { version = "=1.3.0-dev.22", default-features = false, features = [ "analysis", "wave", ] } -golem-wasm-rpc = { path = "../golem/wasm-rpc", default-features = false, features = [ +golem-wasm-rpc = { version = "=1.3.0-dev.22", default-features = false, features = [ "host", ] } -golem-wasm-rpc-derive = { path = "../golem/wasm-rpc-derive" } +golem-wasm-rpc-derive = "=1.3.0-dev.22" golem-rdbms = "=0.0.2" -golem-wit = { path = "../golem-wit" } +golem-wit = "=1.3.0-dev.6" # External deps anyhow = "1.0.97" @@ -152,14 +135,14 @@ wit-encoder = "0.235" wit-parser = "0.235" [patch.crates-io] -#golem-client = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -#golem-common = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -#golem-rib = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -#golem-rib-repl = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -#golem-service-base = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -#golem-wasm-ast = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -#golem-wasm-rpc = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } -#golem-wasm-rpc-derive = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.21" } +golem-client = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } +golem-common = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } +golem-rib = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } +golem-rib-repl = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } +golem-service-base = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } +golem-wasm-ast = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } +golem-wasm-rpc = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } +golem-wasm-rpc-derive = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } redis-protocol = { git = "https://github.com/golemcloud/redis-protocol.rs.git", branch = "unpin-cookie-factory" } wasmtime = { git = "https://github.com/golemcloud/wasmtime.git", branch = "golem-wasmtime-v33.0.0" } diff --git a/golem-cli/agent_wrapper/guest.mbt b/golem-cli/agent_wrapper/guest.mbt index 91292563a..614d3e29c 100644 --- a/golem-cli/agent_wrapper/guest.mbt +++ b/golem-cli/agent_wrapper/guest.mbt @@ -91,3 +91,9 @@ pub fn discover_agents() -> Array[Agent] { pub fn discover_agent_types() -> Array[@common.AgentType] { @guest.discover_agent_types() } + +///| +pub fn invoke_agent(agent_type : String, agent_id : String, method_name : String, input : @common.DataValue) -> Result[@common.DataValue, @common.AgentError] { + let inner_agent = @guest.get_agent(agent_type, agent_id) + inner_agent.invoke(method_name, input) +} \ No newline at end of file diff --git a/golem-cli/src/model/text/worker.rs b/golem-cli/src/model/text/worker.rs index d46abcf8b..bfa9f0fbf 100644 --- a/golem-cli/src/model/text/worker.rs +++ b/golem-cli/src/model/text/worker.rs @@ -25,6 +25,7 @@ use chrono::{DateTime, Utc}; use cli_table::{format::Justify, Table}; use colored::Colorize; use golem_client::model::{PublicOplogEntry, UpdateRecord}; +use golem_common::model::agent::{BinaryReference, DataValue, ElementValue, TextReference}; use golem_common::model::public_oplog::{ PluginInstallationDescription, PublicAttributeValue, PublicUpdateDescription, PublicWorkerInvocation, StringAttributeValue, @@ -798,6 +799,38 @@ impl TextView for PublicOplogEntry { format_id(&format!("{:?}", ¶ms.persistence_level)) )); } + PublicOplogEntry::CreateAgentInstance(params) => { + logln(format_message_highlight("CREATE AGENT INSTANCE")); + logln(format!( + "{pad}at: {}", + format_id(¶ms.timestamp) + )); + logln(format!( + "{pad}agent type: {}", + format_id(¶ms.key.agent_type) + )); + logln(format!( + "{pad}agent id: {}", + format_id(¶ms.key.agent_id) + )); + logln(format!("{pad}constructor params:")); + log_data_value(pad, ¶ms.parameters); + } + PublicOplogEntry::DropAgentInstance(params) => { + logln(format_message_highlight("DROP AGENT INSTANCE")); + logln(format!( + "{pad}at: {}", + format_id(¶ms.timestamp) + )); + logln(format!( + "{pad}agent type: {}", + format_id(¶ms.key.agent_type) + )); + logln(format!( + "{pad}agent id: {}", + format_id(¶ms.key.agent_id) + )); + } } } } @@ -823,3 +856,57 @@ fn log_plugin_description(pad: &str, value: &PluginInstallationDescription) { fn value_to_string(value: &ValueAndType) -> String { print_value_and_type(value).expect("Failed to convert value to string") } + +fn log_data_value(pad: &str, value: &DataValue) { + match value { + DataValue::Tuple(values) => { + logln(format!("{pad} tuple:")); + for value in &values.elements { + log_element_value(&format!("{pad} "), value); + } + } + DataValue::Multimodal(values) => { + logln(format!("{pad} multi-modal:")); + for value in &values.elements { + log_element_value(&format!("{pad} "), &value.value); + } + } + } +} + +fn log_element_value(pad: &str, value: &ElementValue) { + match value { + ElementValue::ComponentModel(value) => { + logln(format!("{pad}- {}", value_to_string(value))); + } + ElementValue::UnstructuredText(value) => match value { + TextReference::Url(url) => { + logln(format!("{pad}- URL: {}", format_id(&url.value))); + } + TextReference::Inline(inline) => { + logln(format!("{pad}- Inline: {}", format_id(&inline.data))); + if let Some(text_type) = &inline.text_type { + logln(format!( + "{pad} Language code: {}", + format_id(&text_type.language_code) + )); + } + } + }, + ElementValue::UnstructuredBinary(value) => match value { + BinaryReference::Url(url) => { + logln(format!("{pad}- URL: {}", format_id(&url.value))); + } + BinaryReference::Inline(inline) => { + logln(format!( + "{pad}- Inline: {} bytes", + format_id(&inline.data.len().to_string()) + )); + logln(format!( + "{pad} MIME type: {}", + format_id(&inline.binary_type.mime_type) + )); + } + }, + } +} diff --git a/golem-cli/test-data/cargo/Cargo.toml.with_deps_and_comments b/golem-cli/test-data/cargo/Cargo.toml.with_deps_and_comments index dd4660802..8d59cd23a 100644 --- a/golem-cli/test-data/cargo/Cargo.toml.with_deps_and_comments +++ b/golem-cli/test-data/cargo/Cargo.toml.with_deps_and_comments @@ -4,7 +4,7 @@ version = "0.0.1" edition = "2021" [dependencies] -golem-rust = "1.7.0" +golem-rust = "1.7.1" serde_json = "1.0.139" # Hello wit-bindgen-rt = "0.40.0" diff --git a/golem-templates/templates/rust/rust-app-common/Cargo.toml._ b/golem-templates/templates/rust/rust-app-common/Cargo.toml._ index 56559d5ed..246c775da 100644 --- a/golem-templates/templates/rust/rust-app-common/Cargo.toml._ +++ b/golem-templates/templates/rust/rust-app-common/Cargo.toml._ @@ -7,7 +7,7 @@ opt-level = "s" lto = true [workspace.dependencies] -golem-rust = { version = "1.7.0", features = ["export_load_snapshot", "export_save_snapshot", "export_oplog_processor"] } +golem-rust = { version = "1.7.1", features = ["export_load_snapshot", "export_save_snapshot", "export_oplog_processor"] } reqwest = { git = "https://github.com/zivergetech/reqwest", branch = "update-july-2025", features = ["json"] } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/golem/Cargo.toml b/golem/Cargo.toml index e072a123e..0c3bf3500 100644 --- a/golem/Cargo.toml +++ b/golem/Cargo.toml @@ -23,23 +23,14 @@ golem-cli = { path = "../golem-cli", features = [ ], version = "=0.0.0" } # Golem - git deps -#golem-common = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -#golem-service-base = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -#cloud-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -#golem-component-compilation-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -#golem-component-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -#golem-shard-manager = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -#golem-worker-executor = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } -#golem-worker-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.21" } - -golem-common = { path = "../../golem/golem-common" } -golem-service-base = { path = "../../golem/golem-service-base" } -cloud-service = { path = "../../golem/cloud-service" } -golem-component-compilation-service = { path = "../../golem/golem-component-compilation-service" } -golem-component-service = { path = "../../golem/golem-component-service" } -golem-shard-manager = { path = "../../golem/golem-shard-manager" } -golem-worker-executor = { path = "../../golem/golem-worker-executor" } -golem-worker-service = { path = "../../golem/golem-worker-service" } +golem-common = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } +golem-service-base = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } +cloud-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } +golem-component-compilation-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } +golem-component-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } +golem-shard-manager = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } +golem-worker-executor = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } +golem-worker-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } # External deps anyhow = { workspace = true } From 4a5fb72f4797d78670fe715a9db336d63e410f07 Mon Sep 17 00:00:00 2001 From: Daniel Vigovszky Date: Thu, 14 Aug 2025 23:08:37 -0400 Subject: [PATCH 5/7] Missing file --- golem-cli/wit/deps/golem-agent/host.wit | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 golem-cli/wit/deps/golem-agent/host.wit diff --git a/golem-cli/wit/deps/golem-agent/host.wit b/golem-cli/wit/deps/golem-agent/host.wit new file mode 100644 index 000000000..46018ced9 --- /dev/null +++ b/golem-cli/wit/deps/golem-agent/host.wit @@ -0,0 +1,9 @@ +package golem:agent; + +interface host { + use guest.{agent}; + use golem:rpc/types@0.2.2.{value-and-type}; + + register-agent: func(agent-type: string, agent-id: string, constructor-parameters: list); + unregister-agent: func(agent-id: string, constructor-parameters: list); +} From 7745432aee5a92f7b7c710c5e458ab00ed25f83f Mon Sep 17 00:00:00 2001 From: Daniel Vigovszky Date: Fri, 15 Aug 2025 11:35:18 -0400 Subject: [PATCH 6/7] Fixes --- Cargo.lock | 307 ++++++++++++++---- Cargo.toml | 32 +- .../src/command_handler/partial_match.rs | 5 +- golem-cli/src/model/agent/extraction.rs | 15 - golem-cli/src/model/mod.rs | 5 +- golem-cli/tests/stubgen/stub_wasm.rs | 6 +- golem/Cargo.toml | 16 +- golem/src/launch.rs | 5 - 8 files changed, 280 insertions(+), 111 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d0f33224c..22b1c35d3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1747,6 +1747,7 @@ dependencies = [ [[package]] name = "cloud-service" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "anyhow", "async-trait", @@ -1760,8 +1761,8 @@ dependencies = [ "darling", "figment", "futures", - "golem-api-grpc", - "golem-common", + "golem-api-grpc 0.0.0", + "golem-common 0.0.0", "golem-service-base", "http 1.3.1", "humantime-serde", @@ -3715,7 +3716,7 @@ dependencies = [ "dirs 6.0.0", "futures", "golem-cli", - "golem-common", + "golem-common 0.0.0", "golem-component-compilation-service", "golem-component-service", "golem-service-base", @@ -3744,13 +3745,33 @@ dependencies = [ [[package]] name = "golem-api-grpc" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "async-trait", "bincode", "bytes 1.10.1", "cargo_metadata 0.19.2", - "golem-wasm-ast", - "golem-wasm-rpc", + "golem-wasm-ast 0.0.0", + "golem-wasm-rpc 0.0.0", + "prost 0.13.5", + "prost-types 0.13.5", + "tonic", + "tonic-build", + "uuid", +] + +[[package]] +name = "golem-api-grpc" +version = "1.3.0-dev.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75dea31ecab145717c25e006c0f46d50e344ca5f888040c7f83c6ee2ca5426b9" +dependencies = [ + "async-trait", + "bincode", + "bytes 1.10.1", + "cargo_metadata 0.19.2", + "golem-wasm-ast 1.3.0-dev.25", + "golem-wasm-rpc 1.3.0-dev.25", "prost 0.13.5", "prost-types 0.13.5", "tonic", @@ -3789,13 +3810,13 @@ dependencies = [ "futures-util", "fuzzy-matcher", "golem-client", - "golem-common", - "golem-rib", + "golem-common 1.3.0-dev.25", + "golem-rib 1.3.0-dev.25", "golem-rib-repl", "golem-templates", - "golem-wasm-ast", - "golem-wasm-rpc", - "golem-wasm-rpc-derive", + "golem-wasm-ast 1.3.0-dev.25", + "golem-wasm-rpc 1.3.0-dev.25", + "golem-wasm-rpc-derive 1.3.0-dev.25", "golem-wit", "heck 0.5.0", "humansize", @@ -3862,15 +3883,17 @@ dependencies = [ [[package]] name = "golem-client" -version = "0.0.0" +version = "1.3.0-dev.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec6975892a26533c5c39af0b83802304cb4d85ab086cea5b42f49b0e01edd0b4" dependencies = [ "async-trait", "bytes 1.10.1", "chrono", - "golem-common", + "golem-common 1.3.0-dev.25", "golem-openapi-client-generator", - "golem-wasm-ast", - "golem-wasm-rpc", + "golem-wasm-ast 1.3.0-dev.25", + "golem-wasm-rpc 1.3.0-dev.25", "http 1.3.1", "reqwest 0.12.20", "serde", @@ -3884,11 +3907,11 @@ dependencies = [ [[package]] name = "golem-common" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "anyhow", "async-trait", "base64 0.22.1", - "bigdecimal", "bincode", "bytes 1.10.1", "chrono", @@ -3899,11 +3922,72 @@ dependencies = [ "derive_more 2.0.1", "figment", "fred", - "golem-api-grpc", - "golem-rib", - "golem-wasm-ast", - "golem-wasm-rpc", - "golem-wasm-rpc-derive", + "golem-api-grpc 0.0.0", + "golem-rib 0.0.0", + "golem-wasm-ast 0.0.0", + "golem-wasm-rpc 0.0.0", + "golem-wasm-rpc-derive 0.0.0", + "heck 0.5.0", + "http 1.3.1", + "humantime-serde", + "iso8601-timestamp", + "itertools 0.14.0", + "lazy_static 1.5.0", + "nonempty-collections", + "poem", + "poem-derive", + "poem-openapi", + "poem-openapi-derive", + "prometheus 0.13.4", + "prost 0.13.5", + "prost-types 0.13.5", + "rand 0.9.1", + "range-set-blaze", + "regex", + "serde", + "serde_json", + "serde_yaml", + "shadow-rs", + "sqlx", + "strum 0.27.1", + "strum_macros 0.27.1", + "thiserror 2.0.12", + "tokio", + "toml", + "tonic", + "tracing", + "tracing-serde", + "tracing-subscriber", + "typed-path", + "url", + "uuid", + "wasmtime", +] + +[[package]] +name = "golem-common" +version = "1.3.0-dev.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614fc5778362cfa6a7c368520ac726fe01a3006b2fcbd16db7ef4033638a75ce" +dependencies = [ + "anyhow", + "async-trait", + "base64 0.22.1", + "bincode", + "bytes 1.10.1", + "chrono", + "combine", + "console-subscriber", + "darling", + "dashmap", + "derive_more 2.0.1", + "figment", + "fred", + "golem-api-grpc 1.3.0-dev.25", + "golem-rib 1.3.0-dev.25", + "golem-wasm-ast 1.3.0-dev.25", + "golem-wasm-rpc 1.3.0-dev.25", + "golem-wasm-rpc-derive 1.3.0-dev.25", "heck 0.5.0", "http 1.3.1", "humantime-serde", @@ -3911,8 +3995,6 @@ dependencies = [ "itertools 0.14.0", "lazy_static 1.5.0", "nonempty-collections", - "openapiv3", - "openidconnect", "poem", "poem-derive", "poem-openapi", @@ -3948,11 +4030,12 @@ dependencies = [ [[package]] name = "golem-component-compilation-service" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "async-trait", "futures", - "golem-api-grpc", - "golem-common", + "golem-api-grpc 0.0.0", + "golem-common 0.0.0", "golem-service-base", "golem-worker-executor", "http 1.3.1", @@ -3972,6 +4055,7 @@ dependencies = [ [[package]] name = "golem-component-service" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "anyhow", "async-trait", @@ -3984,12 +4068,12 @@ dependencies = [ "darling", "figment", "futures", - "golem-api-grpc", - "golem-common", - "golem-rib", + "golem-api-grpc 0.0.0", + "golem-common 0.0.0", + "golem-rib 0.0.0", "golem-service-base", - "golem-wasm-ast", - "golem-wasm-rpc", + "golem-wasm-ast 0.0.0", + "golem-wasm-rpc 0.0.0", "http 1.3.1", "humantime-serde", "include_dir", @@ -4053,14 +4137,36 @@ checksum = "1270134f61673cd221121fad55752b4692a5bc3f7a5f9b30e4d45d7b2e044946" [[package]] name = "golem-rib" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "async-trait", "bigdecimal", "bincode", "combine", - "golem-api-grpc", - "golem-wasm-ast", - "golem-wasm-rpc", + "golem-api-grpc 0.0.0", + "golem-wasm-ast 0.0.0", + "golem-wasm-rpc 0.0.0", + "poem-openapi", + "poem-openapi-derive", + "semver", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "golem-rib" +version = "1.3.0-dev.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f08b047b501955e1c757218b74a04d82c3a881abf3001c98f7c4c7afa7dfd04" +dependencies = [ + "async-trait", + "bigdecimal", + "bincode", + "combine", + "golem-api-grpc 1.3.0-dev.25", + "golem-wasm-ast 1.3.0-dev.25", + "golem-wasm-rpc 1.3.0-dev.25", "poem-openapi", "poem-openapi-derive", "semver", @@ -4071,7 +4177,9 @@ dependencies = [ [[package]] name = "golem-rib-repl" -version = "0.0.0" +version = "1.3.0-dev.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e5e0e2c5c80195d070f72bdf12b6c303ec00a6ffaa0bbc2ad43e009e6c165f4" dependencies = [ "anyhow", "async-trait", @@ -4080,9 +4188,9 @@ dependencies = [ "convert_case 0.8.0", "crossterm 0.28.1", "dirs 4.0.0", - "golem-rib", - "golem-wasm-ast", - "golem-wasm-rpc", + "golem-rib 1.3.0-dev.25", + "golem-wasm-ast 1.3.0-dev.25", + "golem-wasm-rpc 1.3.0-dev.25", "prometheus 0.13.4", "rustyline", "serde_json", @@ -4097,6 +4205,7 @@ dependencies = [ [[package]] name = "golem-service-base" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "anyhow", "applying", @@ -4114,11 +4223,11 @@ dependencies = [ "dashmap", "figment", "futures", - "golem-api-grpc", - "golem-common", - "golem-wasm-ast", - "golem-wasm-rpc", - "golem-wasm-rpc-derive", + "golem-api-grpc 0.0.0", + "golem-common 0.0.0", + "golem-wasm-ast 0.0.0", + "golem-wasm-rpc 0.0.0", + "golem-wasm-rpc-derive 0.0.0", "headers", "hex", "http 1.3.1", @@ -4152,6 +4261,7 @@ dependencies = [ [[package]] name = "golem-shard-manager" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "anyhow", "async-rwlock", @@ -4160,8 +4270,8 @@ dependencies = [ "bytes 1.10.1", "fred", "futures", - "golem-api-grpc", - "golem-common", + "golem-api-grpc 0.0.0", + "golem-common 0.0.0", "golem-service-base", "http 1.3.1", "humantime-serde", @@ -4211,6 +4321,34 @@ dependencies = [ [[package]] name = "golem-wasm-ast" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" +dependencies = [ + "bincode", + "bincode_derive", + "itertools 0.14.0", + "leb128", + "mappable-rc", + "poem-openapi", + "poem-openapi-derive", + "prost 0.13.5", + "prost-build 0.13.5", + "semver", + "serde", + "serde_json", + "time", + "wasm-encoder 0.227.1", + "wasm-metadata 0.227.1", + "wasm-wave", + "wasmparser 0.227.1", + "wit-component 0.235.0", + "wit-parser 0.235.0", +] + +[[package]] +name = "golem-wasm-ast" +version = "1.3.0-dev.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0fb3fc254e8815ef90b8a7c3fcfc14c72803197dab9582e5fb1c11fdbb6e51" dependencies = [ "bincode", "bincode_derive", @@ -4236,6 +4374,7 @@ dependencies = [ [[package]] name = "golem-wasm-rpc" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "arbitrary", "async-recursion", @@ -4247,7 +4386,7 @@ dependencies = [ "cargo_metadata 0.19.2", "chrono", "git-version", - "golem-wasm-ast", + "golem-wasm-ast 0.0.0", "poem-openapi", "poem-openapi-derive", "prost 0.13.5", @@ -4262,9 +4401,51 @@ dependencies = [ "wit-bindgen-rt 0.40.0", ] +[[package]] +name = "golem-wasm-rpc" +version = "1.3.0-dev.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1657acd01d3238efb2f7e09e11d17fdd765c4e921d4f062d951ea70b8dd40f4" +dependencies = [ + "arbitrary", + "async-recursion", + "async-trait", + "bigdecimal", + "bincode", + "bincode_derive", + "cargo_metadata 0.19.2", + "chrono", + "git-version", + "golem-wasm-ast 1.3.0-dev.25", + "poem-openapi", + "poem-openapi-derive", + "prost 0.13.5", + "prost-build 0.13.5", + "serde", + "serde_json", + "uuid", + "wasm-wave", + "wasmtime", + "wasmtime-wasi", + "wit-bindgen-rt 0.40.0", +] + [[package]] name = "golem-wasm-rpc-derive" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "golem-wasm-rpc-derive" +version = "1.3.0-dev.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d07778973734f7b3c4d87d277396f52e8d832bd45c47524946f8e24be893010" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -4274,11 +4455,14 @@ dependencies = [ [[package]] name = "golem-wit" -version = "0.0.0" +version = "1.3.0-dev.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e0ac59fbab5d8b57743298453cccbce2408a6cca2e1bbfba75a9b922c36546" [[package]] name = "golem-worker-executor" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "anyhow", "applying", @@ -4303,13 +4487,13 @@ dependencies = [ "fs-set-times", "futures", "gethostname", - "golem-api-grpc", - "golem-common", - "golem-rib", + "golem-api-grpc 0.0.0", + "golem-common 0.0.0", + "golem-rib 0.0.0", "golem-service-base", - "golem-wasm-ast", - "golem-wasm-rpc", - "golem-wasm-rpc-derive", + "golem-wasm-ast 0.0.0", + "golem-wasm-rpc 0.0.0", + "golem-wasm-rpc-derive 0.0.0", "hex", "http 1.3.1", "http-body 1.0.1", @@ -4353,6 +4537,7 @@ dependencies = [ [[package]] name = "golem-worker-service" version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" dependencies = [ "anyhow", "async-trait", @@ -4366,12 +4551,12 @@ dependencies = [ "figment", "fred", "futures", - "golem-api-grpc", - "golem-common", - "golem-rib", + "golem-api-grpc 0.0.0", + "golem-common 0.0.0", + "golem-rib 0.0.0", "golem-service-base", - "golem-wasm-ast", - "golem-wasm-rpc", + "golem-wasm-ast 0.0.0", + "golem-wasm-rpc 0.0.0", "headers", "http 1.3.1", "http-body-util", @@ -12828,3 +13013,13 @@ dependencies = [ "quote", "syn 2.0.104", ] + +[[patch.unused]] +name = "golem-client" +version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" + +[[patch.unused]] +name = "golem-rib-repl" +version = "0.0.0" +source = "git+https://github.com/golemcloud/golem.git?tag=v1.3.0-dev.25#3b14a53f776b3e9430c69d898c34bc8c29b68a9c" diff --git a/Cargo.toml b/Cargo.toml index 9f53aae22..beaeb3a2f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,19 +11,19 @@ license-file = "LICENSE" [workspace.dependencies] # Golem dep -golem-client = "=1.3.0-dev.22" -golem-common = "=1.3.0-dev.22" -golem-rib = "=1.3.0-dev.22" -golem-rib-repl = "=1.3.0-dev.22" -golem-service-base = "=1.3.0-dev.22" -golem-wasm-ast = { version = "=1.3.0-dev.22", default-features = false, features = [ +golem-client = "=1.3.0-dev.25" +golem-common = { version = "=1.3.0-dev.25", features = ["agent-extraction"] } +golem-rib = "=1.3.0-dev.25" +golem-rib-repl = "=1.3.0-dev.25" +golem-service-base = "=1.3.0-dev.25" +golem-wasm-ast = { version = "=1.3.0-dev.25", default-features = false, features = [ "analysis", "wave", ] } -golem-wasm-rpc = { version = "=1.3.0-dev.22", default-features = false, features = [ +golem-wasm-rpc = { version = "=1.3.0-dev.25", default-features = false, features = [ "host", ] } -golem-wasm-rpc-derive = "=1.3.0-dev.22" +golem-wasm-rpc-derive = "=1.3.0-dev.25" golem-rdbms = "=0.0.2" golem-wit = "=1.3.0-dev.6" @@ -135,14 +135,14 @@ wit-encoder = "0.235" wit-parser = "0.235" [patch.crates-io] -golem-client = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } -golem-common = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } -golem-rib = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } -golem-rib-repl = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } -golem-service-base = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } -golem-wasm-ast = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } -golem-wasm-rpc = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } -golem-wasm-rpc-derive = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.22" } +golem-client = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.25" } +golem-common = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.25" } +golem-rib = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.25" } +golem-rib-repl = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.25" } +golem-service-base = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.25" } +golem-wasm-ast = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.25" } +golem-wasm-rpc = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.25" } +golem-wasm-rpc-derive = { git = "https://github.com/golemcloud/golem.git", tag = "v1.3.0-dev.25" } redis-protocol = { git = "https://github.com/golemcloud/redis-protocol.rs.git", branch = "unpin-cookie-factory" } wasmtime = { git = "https://github.com/golemcloud/wasmtime.git", branch = "golem-wasmtime-v33.0.0" } diff --git a/golem-cli/src/command_handler/partial_match.rs b/golem-cli/src/command_handler/partial_match.rs index 1a98443d0..91148200b 100644 --- a/golem-cli/src/command_handler/partial_match.rs +++ b/golem-cli/src/command_handler/partial_match.rs @@ -180,10 +180,7 @@ impl ErrorHandler { { log_text_view(&AvailableFunctionNamesHelp { component_name: worker_name_match.component_name.0, - function_names: show_exported_functions( - component.metadata.exports(), - true, - ), + function_names: show_exported_functions(component.metadata.exports(), true), }); logln(""); } diff --git a/golem-cli/src/model/agent/extraction.rs b/golem-cli/src/model/agent/extraction.rs index bbd1f819d..1e83654a3 100644 --- a/golem-cli/src/model/agent/extraction.rs +++ b/golem-cli/src/model/agent/extraction.rs @@ -13,23 +13,8 @@ // limitations under the License. use crate::log::{log_action, LogColorize}; -use anyhow::anyhow; use golem_common::model::agent::AgentType; -use rib::ParsedFunctionName; use std::path::Path; -use std::sync::{Arc, Mutex}; -use tracing::{debug, error}; -use wasmtime::component::types::{ComponentInstance, ComponentItem}; -use wasmtime::component::{ - Component, Func, Instance, Linker, LinkerInstance, ResourceTable, ResourceType, Type, -}; -use wasmtime::{AsContextMut, Engine, Store}; -use wasmtime_wasi::p2::{WasiCtx, WasiView}; -use wasmtime_wasi::{IoCtx, IoView}; -use wit_parser::{PackageId, Resolve, WorldItem}; - -const INTERFACE_NAME: &str = "golem:agent/guest"; -const FUNCTION_NAME: &str = "discover-agent-types"; /// Extracts the implemented agent types from the given WASM component, assuming it implements the `golem:agent/guest` interface. /// If it does not, it fails. diff --git a/golem-cli/src/model/mod.rs b/golem-cli/src/model/mod.rs index 4648c1cba..63f3904b8 100644 --- a/golem-cli/src/model/mod.rs +++ b/golem-cli/src/model/mod.rs @@ -524,10 +524,7 @@ pub struct WorkerMetadata { } impl WorkerMetadata { - pub fn from( - component_name: ComponentName, - value: golem_client::model::WorkerMetadata, - ) -> Self { + pub fn from(component_name: ComponentName, value: golem_client::model::WorkerMetadata) -> Self { WorkerMetadata { worker_id: value.worker_id, component_name, diff --git a/golem-cli/tests/stubgen/stub_wasm.rs b/golem-cli/tests/stubgen/stub_wasm.rs index d9c8e3f4e..3547c5c69 100644 --- a/golem-cli/tests/stubgen/stub_wasm.rs +++ b/golem-cli/tests/stubgen/stub_wasm.rs @@ -653,7 +653,7 @@ fn assert_has_stub( mode: AnalysedResourceMode::Owned, resource_id, .. - }) => resource_id.clone(), + }) => *resource_id, _ => panic!("unexpected constructor return type"), }; @@ -729,7 +729,7 @@ fn assert_has_stub( resource_id, name: None, owner: None, - }) => resource_id.clone(), + }) => *resource_id, _ => panic!("unexpected async result return type"), }; @@ -761,7 +761,7 @@ fn assert_valid_polling_resource( .filter(|r| { r.parameters[0].typ == AnalysedType::Handle(TypeHandle { - resource_id: resource_id.clone(), + resource_id, mode: AnalysedResourceMode::Borrowed, name: None, owner: None, diff --git a/golem/Cargo.toml b/golem/Cargo.toml index 0c3bf3500..c326b3f86 100644 --- a/golem/Cargo.toml +++ b/golem/Cargo.toml @@ -23,14 +23,14 @@ golem-cli = { path = "../golem-cli", features = [ ], version = "=0.0.0" } # Golem - git deps -golem-common = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } -golem-service-base = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } -cloud-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } -golem-component-compilation-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } -golem-component-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } -golem-shard-manager = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } -golem-worker-executor = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } -golem-worker-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.22" } +golem-common = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.25" } +golem-service-base = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.25" } +cloud-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.25" } +golem-component-compilation-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.25" } +golem-component-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.25" } +golem-shard-manager = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.25" } +golem-worker-executor = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.25" } +golem-worker-service = { git = "https://github.com/golemcloud/golem", tag="v1.3.0-dev.25" } # External deps anyhow = { workspace = true } diff --git a/golem/src/launch.rs b/golem/src/launch.rs index 3f67bbb9e..9edc7871d 100644 --- a/golem/src/launch.rs +++ b/golem/src/launch.rs @@ -157,7 +157,6 @@ fn cloud_service_config(args: &LaunchArgs) -> CloudServiceConfig { db: DbConfig::Sqlite(DbSqliteConfig { database: args.data_dir.join("cloud.db").to_string_lossy().to_string(), max_connections: 4, - foreign_keys: false, }), accounts: AccountsConfig { accounts }, ..Default::default() @@ -225,7 +224,6 @@ fn component_service_config( .to_string_lossy() .to_string(), max_connections: 4, - foreign_keys: false, }), blob_storage: blob_storage_config(args), compilation: golem_component_service::config::ComponentCompilationConfig::Enabled( @@ -278,7 +276,6 @@ fn worker_executor_config( .to_string_lossy() .to_string(), max_connections: 4, - foreign_keys: false, }), indexed_storage: IndexedStorageConfig::KVStoreSqlite(IndexedStorageKVStoreSqliteConfig {}), blob_storage: blob_storage_config(args), @@ -340,7 +337,6 @@ fn worker_service_config( .to_string_lossy() .to_string(), max_connections: 4, - foreign_keys: false, }), gateway_session_storage: golem_worker_service::config::GatewaySessionStorageConfig::Sqlite( DbSqliteConfig { @@ -350,7 +346,6 @@ fn worker_service_config( .to_string_lossy() .to_string(), max_connections: 4, - foreign_keys: false, }, ), blob_storage: blob_storage_config(args), From 0d3d012909128a2dd9be9a732d8a6d37cebfa3f5 Mon Sep 17 00:00:00 2001 From: Daniel Vigovszky Date: Fri, 15 Aug 2025 11:53:12 -0400 Subject: [PATCH 7/7] Fix golem-rust dep --- golem-cli/test-data/cargo/Cargo.toml.with_deps_and_comments | 2 +- golem-templates/templates/rust/rust-app-common/Cargo.toml._ | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/golem-cli/test-data/cargo/Cargo.toml.with_deps_and_comments b/golem-cli/test-data/cargo/Cargo.toml.with_deps_and_comments index 8d59cd23a..32f07473c 100644 --- a/golem-cli/test-data/cargo/Cargo.toml.with_deps_and_comments +++ b/golem-cli/test-data/cargo/Cargo.toml.with_deps_and_comments @@ -4,7 +4,7 @@ version = "0.0.1" edition = "2021" [dependencies] -golem-rust = "1.7.1" +golem-rust = "1.7.2" serde_json = "1.0.139" # Hello wit-bindgen-rt = "0.40.0" diff --git a/golem-templates/templates/rust/rust-app-common/Cargo.toml._ b/golem-templates/templates/rust/rust-app-common/Cargo.toml._ index 246c775da..7685ae5bf 100644 --- a/golem-templates/templates/rust/rust-app-common/Cargo.toml._ +++ b/golem-templates/templates/rust/rust-app-common/Cargo.toml._ @@ -7,7 +7,7 @@ opt-level = "s" lto = true [workspace.dependencies] -golem-rust = { version = "1.7.1", features = ["export_load_snapshot", "export_save_snapshot", "export_oplog_processor"] } +golem-rust = { version = "1.7.2", features = ["export_load_snapshot", "export_save_snapshot", "export_oplog_processor"] } reqwest = { git = "https://github.com/zivergetech/reqwest", branch = "update-july-2025", features = ["json"] } serde = { version = "1", features = ["derive"] } serde_json = "1"