From 9a0a9c5a52f5ba227bf0371dbeb5e5963e4aaefa Mon Sep 17 00:00:00 2001 From: Copybara Bot Date: Tue, 23 Jun 2026 13:11:23 +0000 Subject: [PATCH] Sync cd879201bd0534dfa23b327b92c6b7467b3abb15 FolderOrigin-RevId: cd879201bd0534dfa23b327b92c6b7467b3abb15 --- Cargo.lock | 2 +- beam-apps/README.md | 16 +- beam-apps/apps/erc8004/Cargo.lock | 319 ++++++++++++ beam-apps/apps/erc8004/Cargo.toml | 19 + beam-apps/apps/erc8004/README.md | 30 ++ beam-apps/apps/erc8004/assets/icon.svg | 7 + beam-apps/apps/erc8004/manifest.json | 426 +++++++++++++++ beam-apps/apps/erc8004/src/abi.rs | 231 +++++++++ beam-apps/apps/erc8004/src/args.rs | 331 ++++++++++++ beam-apps/apps/erc8004/src/config.rs | 275 ++++++++++ beam-apps/apps/erc8004/src/error.rs | 34 ++ beam-apps/apps/erc8004/src/host.rs | 434 ++++++++++++++++ beam-apps/apps/erc8004/src/lib.rs | 483 +++++++++++++++++ beam-apps/apps/erc8004/src/plan.rs | 82 +++ beam-apps/apps/erc8004/src/tests.rs | 153 ++++++ beam-apps/apps/uniswap/README.md | 13 +- beam-apps/apps/uniswap/src/api.rs | 4 +- beam-apps/apps/uniswap/src/host.rs | 4 +- beam-apps/apps/uniswap/src/lib.rs | 5 +- beam-apps/apps/uniswap/src/plan.rs | 4 +- beam-apps/apps/uniswap/src/tests.rs | 11 +- .../apps/erc8004/1.0.0/icon.svg | 7 + .../apps/erc8004/1.0.0/manifest.json | 464 +++++++++++++++++ .../apps/erc8004/1.0.0/manifest.json.sig | 5 + .../apps/erc8004/1.0.0/module.wasm | Bin 0 -> 440196 bytes .../apps/erc8004/1.0.0/version.json.sig | 5 + .../apps/uniswap/1.0.2/manifest.json | 79 ++- .../apps/uniswap/1.0.2/manifest.json.sig | 2 +- .../apps/uniswap/1.0.2/module.wasm | Bin 403598 -> 403592 bytes .../apps/uniswap/1.0.2/version.json.sig | 2 +- .../fixtures/broad-wildcard/catalog/apps.json | 44 +- .../broad-wildcard/catalog/apps.json.sig | 2 +- .../broad-wildcard/catalog/apps/erc8004.json | 485 ++++++++++++++++++ .../catalog/apps/erc8004.json.sig | 5 + beam-apps/fixtures/broad-wildcard/index.json | 29 +- .../fixtures/broad-wildcard/index.json.sig | 2 +- .../apps/erc8004/1.0.0/icon.svg | 7 + .../apps/erc8004/1.0.0/manifest.json | 480 +++++++++++++++++ .../apps/erc8004/1.0.0/manifest.json.sig | 5 + .../apps/erc8004/1.0.0/module.wasm | Bin 0 -> 440196 bytes .../apps/erc8004/1.0.0/version.json.sig | 5 + .../apps/uniswap/1.0.2/manifest.json | 4 +- .../apps/uniswap/1.0.2/manifest.json.sig | 2 +- .../apps/uniswap/1.0.2/module.wasm | Bin 403598 -> 403592 bytes .../apps/uniswap/1.0.2/version.json.sig | 2 +- .../fixtures/invalid-digest/catalog/apps.json | 44 +- .../invalid-digest/catalog/apps.json.sig | 2 +- .../invalid-digest/catalog/apps/erc8004.json | 485 ++++++++++++++++++ .../catalog/apps/erc8004.json.sig | 5 + beam-apps/fixtures/invalid-digest/index.json | 29 +- .../fixtures/invalid-digest/index.json.sig | 2 +- .../apps/erc8004/1.0.0/icon.svg | 7 + .../apps/erc8004/1.0.0/manifest.json | 466 +++++++++++++++++ .../apps/erc8004/1.0.0/manifest.json.sig | 5 + .../apps/erc8004/1.0.0/module.wasm | Bin 0 -> 440196 bytes .../apps/erc8004/1.0.0/version.json.sig | 5 + .../apps/uniswap/1.0.2/manifest.json | 77 ++- .../apps/uniswap/1.0.2/manifest.json.sig | 2 +- .../apps/uniswap/1.0.2/module.wasm | Bin 403598 -> 403592 bytes .../apps/uniswap/1.0.2/version.json.sig | 2 +- .../malformed-permissions/catalog/apps.json | 44 +- .../catalog/apps.json.sig | 2 +- .../catalog/apps/erc8004.json | 485 ++++++++++++++++++ .../catalog/apps/erc8004.json.sig | 5 + .../fixtures/malformed-permissions/index.json | 29 +- .../malformed-permissions/index.json.sig | 2 +- .../apps/erc8004/1.0.0/icon.svg | 7 + .../apps/erc8004/1.0.0/manifest.json | 79 +++ .../apps/erc8004/1.0.0/manifest.json.sig | 5 + .../apps/erc8004/1.0.0/module.wasm | Bin 0 -> 440196 bytes .../apps/erc8004/1.0.0/version.json.sig | 5 + .../apps/uniswap/1.0.2/manifest.json | 165 +++++- .../apps/uniswap/1.0.2/manifest.json.sig | 2 +- .../apps/uniswap/1.0.2/module.wasm | Bin 403598 -> 403592 bytes .../apps/uniswap/1.0.2/version.json.sig | 2 +- .../fixtures/missing-fields/catalog/apps.json | 44 +- .../missing-fields/catalog/apps.json.sig | 2 +- .../missing-fields/catalog/apps/erc8004.json | 485 ++++++++++++++++++ .../catalog/apps/erc8004.json.sig | 5 + beam-apps/fixtures/missing-fields/index.json | 29 +- .../fixtures/missing-fields/index.json.sig | 2 +- .../apps/erc8004/1.0.0/icon.svg | 7 + .../apps/erc8004/1.0.0/manifest.json | 480 +++++++++++++++++ .../apps/erc8004/1.0.0/manifest.json.sig | 5 + .../apps/erc8004/1.0.0/module.wasm | Bin 0 -> 440196 bytes .../apps/erc8004/1.0.0/version.json.sig | 5 + .../apps/uniswap/1.0.2/manifest.json | 6 +- .../apps/uniswap/1.0.2/manifest.json.sig | 2 +- .../apps/uniswap/1.0.2/module.wasm | Bin 403598 -> 403592 bytes .../apps/uniswap/1.0.2/version.json.sig | 2 +- .../unsupported-beam/catalog/apps.json | 44 +- .../unsupported-beam/catalog/apps.json.sig | 2 +- .../catalog/apps/erc8004.json | 485 ++++++++++++++++++ .../catalog/apps/erc8004.json.sig | 5 + .../fixtures/unsupported-beam/index.json | 29 +- .../fixtures/unsupported-beam/index.json.sig | 2 +- .../valid/apps/erc8004/1.0.0/icon.svg | 7 + .../valid/apps/erc8004/1.0.0/manifest.json | 480 +++++++++++++++++ .../apps/erc8004/1.0.0/manifest.json.sig | 5 + .../valid/apps/erc8004/1.0.0/module.wasm | Bin 0 -> 440196 bytes .../valid/apps/erc8004/1.0.0/version.json.sig | 5 + .../valid/apps/uniswap/1.0.2/manifest.json | 4 +- .../apps/uniswap/1.0.2/manifest.json.sig | 2 +- .../valid/apps/uniswap/1.0.2/module.wasm | Bin 403598 -> 403592 bytes .../valid/apps/uniswap/1.0.2/version.json.sig | 2 +- beam-apps/fixtures/valid/catalog/apps.json | 44 +- .../fixtures/valid/catalog/apps.json.sig | 2 +- .../fixtures/valid/catalog/apps/erc8004.json | 485 ++++++++++++++++++ .../valid/catalog/apps/erc8004.json.sig | 5 + beam-apps/fixtures/valid/index.json | 29 +- beam-apps/fixtures/valid/index.json.sig | 2 +- pkg/beam-cli/Cargo.toml | 2 +- pkg/beam-cli/README.md | 37 +- pkg/beam-cli/src/apps/app_storage.rs | 62 +++ pkg/beam-cli/src/apps/approvals.rs | 9 +- pkg/beam-cli/src/apps/chain_logs.rs | 129 +++++ pkg/beam-cli/src/apps/error.rs | 14 + pkg/beam-cli/src/apps/host.rs | 126 +++-- pkg/beam-cli/src/apps/mod.rs | 3 + pkg/beam-cli/src/apps/model.rs | 33 +- pkg/beam-cli/src/apps/permissions.rs | 78 ++- pkg/beam-cli/src/apps/runtime/debug.rs | 4 + pkg/beam-cli/src/apps/typed_data.rs | 135 +++++ pkg/beam-cli/src/cli.rs | 2 +- pkg/beam-cli/src/cli/apps.rs | 4 + pkg/beam-cli/src/commands/apps/args.rs | 32 ++ pkg/beam-cli/src/commands/apps/execution.rs | 77 ++- pkg/beam-cli/src/commands/apps/fee_caps.rs | 218 ++++++++ pkg/beam-cli/src/commands/apps/mod.rs | 45 +- pkg/beam-cli/src/commands/apps/plans.rs | 16 +- pkg/beam-cli/src/commands/apps/render.rs | 32 +- pkg/beam-cli/src/commands/apps/tests.rs | 272 ++++++++++ pkg/beam-cli/src/commands/fetch/payment.rs | 10 +- pkg/beam-cli/src/commands/gas.rs | 42 +- pkg/beam-cli/src/commands/gas/tests.rs | 8 +- pkg/beam-cli/src/error.rs | 8 +- pkg/beam-cli/src/evm.rs | 81 ++- pkg/beam-cli/src/evm/fees.rs | 136 +++++ pkg/beam-cli/src/evm/gas.rs | 74 ++- pkg/beam-cli/src/tests.rs | 3 +- pkg/beam-cli/src/tests/apps.rs | 1 + pkg/beam-cli/src/tests/apps_host.rs | 33 +- pkg/beam-cli/src/tests/apps_runtime.rs | 29 +- pkg/beam-cli/src/tests/evm.rs | 22 +- pkg/beam-cli/src/tests/evm_fee.rs | 189 +++++++ pkg/beam-cli/src/tests/evm_gas.rs | 7 +- pkg/beam-cli/src/tests/evm_prepared_gas.rs | 24 +- pkg/beam-cli/src/tests/evm_retries.rs | 16 +- pkg/beam-cli/src/tests/fixtures.rs | 4 +- 149 files changed, 10914 insertions(+), 298 deletions(-) create mode 100644 beam-apps/apps/erc8004/Cargo.lock create mode 100644 beam-apps/apps/erc8004/Cargo.toml create mode 100644 beam-apps/apps/erc8004/README.md create mode 100644 beam-apps/apps/erc8004/assets/icon.svg create mode 100644 beam-apps/apps/erc8004/manifest.json create mode 100644 beam-apps/apps/erc8004/src/abi.rs create mode 100644 beam-apps/apps/erc8004/src/args.rs create mode 100644 beam-apps/apps/erc8004/src/config.rs create mode 100644 beam-apps/apps/erc8004/src/error.rs create mode 100644 beam-apps/apps/erc8004/src/host.rs create mode 100644 beam-apps/apps/erc8004/src/lib.rs create mode 100644 beam-apps/apps/erc8004/src/plan.rs create mode 100644 beam-apps/apps/erc8004/src/tests.rs create mode 100644 beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/icon.svg create mode 100644 beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/manifest.json create mode 100644 beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/manifest.json.sig create mode 100644 beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/module.wasm create mode 100644 beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/version.json.sig create mode 100644 beam-apps/fixtures/broad-wildcard/catalog/apps/erc8004.json create mode 100644 beam-apps/fixtures/broad-wildcard/catalog/apps/erc8004.json.sig create mode 100644 beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/icon.svg create mode 100644 beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/manifest.json create mode 100644 beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/manifest.json.sig create mode 100644 beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/module.wasm create mode 100644 beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/version.json.sig create mode 100644 beam-apps/fixtures/invalid-digest/catalog/apps/erc8004.json create mode 100644 beam-apps/fixtures/invalid-digest/catalog/apps/erc8004.json.sig create mode 100644 beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/icon.svg create mode 100644 beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/manifest.json create mode 100644 beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/manifest.json.sig create mode 100644 beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/module.wasm create mode 100644 beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/version.json.sig create mode 100644 beam-apps/fixtures/malformed-permissions/catalog/apps/erc8004.json create mode 100644 beam-apps/fixtures/malformed-permissions/catalog/apps/erc8004.json.sig create mode 100644 beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/icon.svg create mode 100644 beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/manifest.json create mode 100644 beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/manifest.json.sig create mode 100644 beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/module.wasm create mode 100644 beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/version.json.sig create mode 100644 beam-apps/fixtures/missing-fields/catalog/apps/erc8004.json create mode 100644 beam-apps/fixtures/missing-fields/catalog/apps/erc8004.json.sig create mode 100644 beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/icon.svg create mode 100644 beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/manifest.json create mode 100644 beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/manifest.json.sig create mode 100644 beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/module.wasm create mode 100644 beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/version.json.sig create mode 100644 beam-apps/fixtures/unsupported-beam/catalog/apps/erc8004.json create mode 100644 beam-apps/fixtures/unsupported-beam/catalog/apps/erc8004.json.sig create mode 100644 beam-apps/fixtures/valid/apps/erc8004/1.0.0/icon.svg create mode 100644 beam-apps/fixtures/valid/apps/erc8004/1.0.0/manifest.json create mode 100644 beam-apps/fixtures/valid/apps/erc8004/1.0.0/manifest.json.sig create mode 100644 beam-apps/fixtures/valid/apps/erc8004/1.0.0/module.wasm create mode 100644 beam-apps/fixtures/valid/apps/erc8004/1.0.0/version.json.sig create mode 100644 beam-apps/fixtures/valid/catalog/apps/erc8004.json create mode 100644 beam-apps/fixtures/valid/catalog/apps/erc8004.json.sig create mode 100644 pkg/beam-cli/src/apps/app_storage.rs create mode 100644 pkg/beam-cli/src/apps/chain_logs.rs create mode 100644 pkg/beam-cli/src/apps/typed_data.rs create mode 100644 pkg/beam-cli/src/commands/apps/args.rs create mode 100644 pkg/beam-cli/src/commands/apps/fee_caps.rs create mode 100644 pkg/beam-cli/src/commands/apps/tests.rs create mode 100644 pkg/beam-cli/src/evm/fees.rs create mode 100644 pkg/beam-cli/src/tests/evm_fee.rs diff --git a/Cargo.lock b/Cargo.lock index 5967688..1a2ab1c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1924,7 +1924,7 @@ checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" [[package]] name = "beam-cli" -version = "0.2.3" +version = "0.2.4" dependencies = [ "argon2", "async-trait", diff --git a/beam-apps/README.md b/beam-apps/README.md index 364ce0e..736e3c4 100644 --- a/beam-apps/README.md +++ b/beam-apps/README.md @@ -43,6 +43,7 @@ In another shell: export BEAM_APP_REGISTRY_URL=http://127.0.0.1:8787 export BEAM_HOME="$(mktemp -d)" cargo run -p beam-cli --bin beam -- apps install uniswap --dry-run +cargo run -p beam-cli --bin beam -- apps install erc8004 --dry-run ``` Set `BEAM_UNISWAP_PUBLIC_API_KEY` before starting `run-local.py` when testing @@ -65,11 +66,16 @@ the `payy.network` zone. App source stays separate from Beam core. Product apps live under `beam-apps/apps/` and must not path-depend on `pkg/*` crates or inherit root -workspace dependencies. The Uniswap app is its own Rust workspace; CI installs -`wasm32-unknown-unknown`, injects the Payy-managed public Uniswap API key from -the `BEAM_UNISWAP_PUBLIC_API_KEY` GitHub secret, builds its release WASM, -verifies the generated registry bundle, and bakes only the signed static bundle -into the registry image. +workspace dependencies. The Uniswap and ERC-8004 apps are independent Rust +workspaces; CI installs `wasm32-unknown-unknown`, injects the Payy-managed public +Uniswap API key from the `BEAM_UNISWAP_PUBLIC_API_KEY` GitHub secret, builds +release WASM for every app, verifies the generated registry bundle, and bakes +only the signed static bundle into the registry image. + +ERC-8004 agent identity management ships as the `erc8004` registry app. Beam CLI +provides only generic app-host capabilities for it: bounded `eth_getLogs`, chain +calls, invocation-scoped contract overrides, typed-data signing, and approved +action-plan execution. Until a shared app SDK crate is published, product apps may vendor app-local host ABI structs. Beam CLI remains the generic host/runtime and must not contain diff --git a/beam-apps/apps/erc8004/Cargo.lock b/beam-apps/apps/erc8004/Cargo.lock new file mode 100644 index 0000000..5366915 --- /dev/null +++ b/beam-apps/apps/erc8004/Cargo.lock @@ -0,0 +1,319 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "beam-app-erc8004" +version = "1.0.0" +dependencies = [ + "ethabi", + "hex", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "sha3", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "fixed-hash", + "primitive-types", + "uint", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "memchr" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "uint", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/beam-apps/apps/erc8004/Cargo.toml b/beam-apps/apps/erc8004/Cargo.toml new file mode 100644 index 0000000..c9c6946 --- /dev/null +++ b/beam-apps/apps/erc8004/Cargo.toml @@ -0,0 +1,19 @@ +[workspace] + +[package] +name = "beam-app-erc8004" +version = "1.0.0" +edition = "2024" +publish = false + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +ethabi = { version = "18", default-features = false } +hex = "0.4" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +sha2 = "0.10" +sha3 = "0.10" +thiserror = "2" diff --git a/beam-apps/apps/erc8004/README.md b/beam-apps/apps/erc8004/README.md new file mode 100644 index 0000000..43734c1 --- /dev/null +++ b/beam-apps/apps/erc8004/README.md @@ -0,0 +1,30 @@ +# ERC-8004 Beam App + +The ERC-8004 app manages identity-registry agents through Beam's generic app +host. It keeps registry defaults and overrides in app space rather than as a +native Beam command. + +```text +beam x erc8004 support +beam x erc8004 config show +beam x erc8004 config set --identity-registry
+beam x erc8004 register [--uri |--empty-uri] [--identity-registry
] +beam x erc8004 show [--fetch-uri] [--identity-registry
] +beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--identity-registry
] +beam x erc8004 set-uri [--identity-registry
] +beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
] +beam x erc8004 unset-wallet [--identity-registry
] +``` + +Default ERC-8004 identity registry addresses are manifest-scoped. Custom +registry addresses come from app-local config or an explicit +`--identity-registry` flag and are included as invocation-scoped contract rules +in host calls and action plans. + +`list` uses `eth_getLogs` through the Beam host. The host enforces a bounded +block range and the app defaults to the active wallet with owner filtering, so +it does not scan from genesis unless the user passes a broad explicit range. + +`set-wallet` resolves the wallet argument through Beam and requests an EIP-712 +typed-data signature from the host. The app receives only the signature and +digest, never raw private keys. diff --git a/beam-apps/apps/erc8004/assets/icon.svg b/beam-apps/apps/erc8004/assets/icon.svg new file mode 100644 index 0000000..91a16e6 --- /dev/null +++ b/beam-apps/apps/erc8004/assets/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/beam-apps/apps/erc8004/manifest.json b/beam-apps/apps/erc8004/manifest.json new file mode 100644 index 0000000..3041e57 --- /dev/null +++ b/beam-apps/apps/erc8004/manifest.json @@ -0,0 +1,426 @@ +{ + "format_version": 1, + "id": "erc8004", + "display_name": "ERC-8004", + "version": "1.0.0", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "min_beam_version": "0.2.4", + "wasm": { + "sha256": "", + "entrypoint": "beam_app_main" + }, + "icon": { + "path": "assets/icon.svg", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + }, + "catalog": { + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "sensitive_args": [], + "input_schema": { "type": "object" }, + "output_schema": { "type": "object" }, + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": ["Includes the identity registry and whether it is default or overridden."] + } + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry
[--reputation-registry
]", + "sensitive_args": [], + "input_schema": { "type": "object" }, + "output_schema": { "type": "object" }, + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
[--reputation-registry
]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": ["Registry overrides are stored in app-local Beam storage."] + } + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
]", + "sensitive_args": [], + "input_schema": { "type": "object" }, + "output_schema": { "type": "object" }, + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": ["Returns an action plan that Beam approves and executes."] + } + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
]", + "sensitive_args": [], + "input_schema": { "type": "object" }, + "output_schema": { "type": "object" }, + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": ["Non-HTTPS URIs are not fetched."] + } + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
]", + "sensitive_args": [], + "input_schema": { "type": "object" }, + "output_schema": { "type": "object" }, + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": ["The host caps log ranges and response size."] + } + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
]", + "sensitive_args": [], + "input_schema": { "type": "object" }, + "output_schema": { "type": "object" }, + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": ["Returns an action plan."] + } + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
]", + "sensitive_args": [], + "input_schema": { "type": "object" }, + "output_schema": { "type": "object" }, + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": ["The app never receives raw private keys."] + } + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
]", + "sensitive_args": [], + "input_schema": { "type": "object" }, + "output_schema": { "type": "object" }, + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": ["Returns an action plan."] + } + } + ], + "permissions": { + "http": [ + { + "url": "https://*" + } + ], + "chains": [ + { + "chain": "*", + "operations": ["read", "logs", "send-transaction", "sign-typed-data"], + "contracts": [ + "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "0x8004A818BFB912233c491871b3d84c89A494BD9e" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ] + } + ], + "wallet": { + "read_balances": false, + "propose_transactions": true, + "erc20_approval": false, + "sign_typed_data": true + }, + "storage": { + "app_local": true + }, + "privacy": [] + }, + "host_api": { + "privacy_reserved": true + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "" + } +} diff --git a/beam-apps/apps/erc8004/src/abi.rs b/beam-apps/apps/erc8004/src/abi.rs new file mode 100644 index 0000000..689780e --- /dev/null +++ b/beam-apps/apps/erc8004/src/abi.rs @@ -0,0 +1,231 @@ +use ethabi::{ + ParamType, Token, decode, encode, + ethereum_types::{Address, U256}, +}; +use sha3::{Digest, Keccak256}; + +use crate::{Error, Result, host::LogEntry}; + +pub const AGENT_WALLET_DOMAIN_NAME: &str = "ERC8004IdentityRegistry"; +pub const AGENT_WALLET_DOMAIN_VERSION: &str = "1"; +pub const REGISTERED_EVENT_SIGNATURE: &str = "Registered(uint256,string,address)"; + +pub fn selector(signature: &str) -> String { + let hash = keccak(signature.as_bytes()); + format!("0x{}", hex::encode(&hash[..4])) +} + +pub fn register_calldata(uri: Option<&str>) -> String { + match uri { + Some(uri) => calldata("register(string)", &[Token::String(uri.to_string())]), + None => calldata("register()", &[]), + } +} + +pub fn set_uri_calldata(agent_id: U256, uri: &str) -> String { + calldata( + "setAgentURI(uint256,string)", + &[Token::Uint(agent_id), Token::String(uri.to_string())], + ) +} + +pub fn unset_wallet_calldata(agent_id: U256) -> String { + calldata("unsetAgentWallet(uint256)", &[Token::Uint(agent_id)]) +} + +pub fn set_wallet_calldata( + agent_id: U256, + wallet: Address, + deadline: u64, + signature: &str, +) -> Result { + let signature = hex_bytes(signature)?; + Ok(calldata( + "setAgentWallet(uint256,address,uint256,bytes)", + &[ + Token::Uint(agent_id), + Token::Address(wallet), + Token::Uint(U256::from(deadline)), + Token::Bytes(signature), + ], + )) +} + +pub fn owner_of_calldata(agent_id: U256) -> String { + calldata("ownerOf(uint256)", &[Token::Uint(agent_id)]) +} + +pub fn token_uri_calldata(agent_id: U256) -> String { + calldata("tokenURI(uint256)", &[Token::Uint(agent_id)]) +} + +pub fn get_agent_wallet_calldata(agent_id: U256) -> String { + calldata("getAgentWallet(uint256)", &[Token::Uint(agent_id)]) +} + +pub fn decode_address(raw: &str) -> Result
{ + let tokens = decode(&[ParamType::Address], &hex_bytes(raw)?).map_err(|err| { + Error::InvalidHostResponse { + reason: format!("{err:?}"), + } + })?; + match tokens.as_slice() { + [Token::Address(value)] => Ok(*value), + _ => Err(Error::InvalidHostResponse { + reason: "address response had wrong ABI shape".to_string(), + }), + } +} + +pub fn decode_string(raw: &str) -> Result { + let tokens = decode(&[ParamType::String], &hex_bytes(raw)?).map_err(|err| { + Error::InvalidHostResponse { + reason: format!("{err:?}"), + } + })?; + match tokens.as_slice() { + [Token::String(value)] => Ok(value.clone()), + _ => Err(Error::InvalidHostResponse { + reason: "string response had wrong ABI shape".to_string(), + }), + } +} + +pub fn registered_topic() -> String { + format!( + "0x{}", + hex::encode(keccak(REGISTERED_EVENT_SIGNATURE.as_bytes())) + ) +} + +pub fn parse_registered_event(log: &LogEntry, registry: &str) -> Option { + if !log.address.eq_ignore_ascii_case(registry) || log.topics.len() != 3 { + return None; + } + if log.topics.first()?.to_ascii_lowercase() != registered_topic() { + return None; + } + + let agent_id = parse_u256_word(log.topics.get(1)?)?; + let owner = address_from_topic(log.topics.get(2)?)?; + let uri = decode(&[ParamType::String], &hex_bytes(&log.data).ok()?) + .ok() + .and_then(|tokens| match tokens.as_slice() { + [Token::String(value)] => Some(value.clone()), + _ => None, + })?; + + Some(RegisteredEvent { + agent_id, + owner, + uri, + }) +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct RegisteredEvent { + pub agent_id: U256, + pub owner: Address, + pub uri: String, +} + +pub fn agent_wallet_hashes( + chain_id: u64, + verifying_contract: Address, + agent_id: U256, + new_wallet: Address, + owner: Address, + deadline: u64, +) -> (String, String) { + let domain_separator = keccak(&encode(&[ + bytes32_token(&keccak( + b"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)", + )), + bytes32_token(&keccak(AGENT_WALLET_DOMAIN_NAME.as_bytes())), + bytes32_token(&keccak(AGENT_WALLET_DOMAIN_VERSION.as_bytes())), + Token::Uint(U256::from(chain_id)), + Token::Address(verifying_contract), + ])); + let struct_hash = keccak(&encode(&[ + bytes32_token(&keccak( + b"AgentWalletSet(uint256 agentId,address newWallet,address owner,uint256 deadline)", + )), + Token::Uint(agent_id), + Token::Address(new_wallet), + Token::Address(owner), + Token::Uint(U256::from(deadline)), + ])); + + ( + format!("0x{}", hex::encode(domain_separator)), + format!("0x{}", hex::encode(struct_hash)), + ) +} + +pub fn parse_address(value: &str) -> Result
{ + value.parse::
().map_err(|_| Error::InvalidAddress { + value: value.to_string(), + }) +} + +pub fn parse_agent_id(value: &str) -> Result { + if let Some(value) = value.strip_prefix("0x") { + return U256::from_str_radix(value, 16).map_err(|_| Error::InvalidAgentId { + value: format!("0x{value}"), + }); + } + value.parse::().map_err(|_| Error::InvalidAgentId { + value: value.to_string(), + }) +} + +pub fn address_hex(address: Address) -> String { + format!("{address:#x}") +} + +pub fn calldata_hash(data: &str) -> String { + format!( + "sha256:{}", + hex::encode(sha2::Sha256::digest(data.as_bytes())) + ) +} + +fn calldata(signature: &str, tokens: &[Token]) -> String { + let selector = selector(signature); + format!("{selector}{}", hex::encode(encode(tokens))) +} + +fn bytes32_token(bytes: &[u8; 32]) -> Token { + Token::FixedBytes(bytes.to_vec()) +} + +fn keccak(bytes: &[u8]) -> [u8; 32] { + let mut hasher = Keccak256::new(); + hasher.update(bytes); + hasher.finalize().into() +} + +fn hex_bytes(value: &str) -> Result> { + hex::decode(value.strip_prefix("0x").unwrap_or(value)).map_err(|_| Error::InvalidHostResponse { + reason: format!("invalid hex value {value}"), + }) +} + +fn parse_u256_word(value: &str) -> Option { + let bytes = hex::decode(value.strip_prefix("0x").unwrap_or(value)).ok()?; + if bytes.len() != 32 { + return None; + } + Some(U256::from_big_endian(&bytes)) +} + +fn address_from_topic(value: &str) -> Option
{ + let bytes = hex::decode(value.strip_prefix("0x").unwrap_or(value)).ok()?; + if bytes.len() != 32 { + return None; + } + Some(Address::from_slice(&bytes[12..])) +} + +pub type AgentId = U256; +pub type EvmAddress = Address; diff --git a/beam-apps/apps/erc8004/src/args.rs b/beam-apps/apps/erc8004/src/args.rs new file mode 100644 index 0000000..d1077c6 --- /dev/null +++ b/beam-apps/apps/erc8004/src/args.rs @@ -0,0 +1,331 @@ +use crate::{Error, Result}; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum Command { + Support, + ConfigShow, + ConfigSet(ConfigSetArgs), + Register(RegisterArgs), + Show(ShowArgs), + List(ListArgs), + SetUri(SetUriArgs), + SetWallet(SetWalletArgs), + UnsetWallet(UnsetWalletArgs), +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct ConfigSetArgs { + pub identity_registry: String, + pub reputation_registry: Option, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct RegisterArgs { + pub uri: Option, + pub identity_registry: Option, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct ShowArgs { + pub agent_id: String, + pub fetch_uri: bool, + pub identity_registry: Option, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct ListArgs { + pub connection: ConnectionMode, + pub from_block: Option, + pub identity_registry: Option, + pub to_block: Option, + pub wallet: Option, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct SetUriArgs { + pub agent_id: String, + pub identity_registry: Option, + pub uri: String, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct SetWalletArgs { + pub agent_id: String, + pub deadline_seconds: u64, + pub identity_registry: Option, + pub wallet: String, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct UnsetWalletArgs { + pub agent_id: String, + pub identity_registry: Option, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum ConnectionMode { + Owner, + AgentWallet, + Both, +} + +impl ConnectionMode { + pub fn label(&self) -> &'static str { + match self { + Self::Owner => "owner", + Self::AgentWallet => "agent-wallet", + Self::Both => "both", + } + } +} + +pub fn parse(args: &[String]) -> Result { + let command = args + .first() + .map(String::as_str) + .ok_or_else(|| Error::UnsupportedCommand { + command: "".to_string(), + })?; + match command { + "support" => Ok(Command::Support), + "config" => parse_config(args), + "register" => parse_register(args), + "show" => parse_show(args), + "list" => parse_list(args), + "set-uri" => parse_set_uri(args), + "set-wallet" => parse_set_wallet(args), + "unset-wallet" => parse_unset_wallet(args), + other => Err(Error::UnsupportedCommand { + command: other.to_string(), + }), + } +} + +fn parse_config(args: &[String]) -> Result { + match args.get(1).map(String::as_str) { + Some("show") => Ok(Command::ConfigShow), + Some("set") => { + let mut identity_registry = None; + let mut reputation_registry = None; + let mut index = 2; + while index < args.len() { + match args[index].as_str() { + "--identity-registry" => { + identity_registry = + Some(parse_next(args, &mut index, "--identity-registry")?) + } + "--reputation-registry" => { + reputation_registry = + Some(parse_next(args, &mut index, "--reputation-registry")?) + } + other => return unsupported_flag(other), + } + index += 1; + } + Ok(Command::ConfigSet(ConfigSetArgs { + identity_registry: identity_registry.ok_or_else(|| Error::InvalidArgument { + reason: "config set requires --identity-registry".to_string(), + })?, + reputation_registry, + })) + } + other => Err(Error::UnsupportedCommand { + command: format!("config {}", other.unwrap_or("")), + }), + } +} + +fn parse_register(args: &[String]) -> Result { + let mut uri = None; + let mut empty_uri = false; + let mut identity_registry = None; + let mut index = 1; + while index < args.len() { + match args[index].as_str() { + "--uri" => uri = Some(parse_next(args, &mut index, "--uri")?), + "--empty-uri" => empty_uri = true, + "--identity-registry" => { + identity_registry = Some(parse_next(args, &mut index, "--identity-registry")?) + } + other => return unsupported_flag(other), + } + index += 1; + } + if uri.is_some() && empty_uri { + return Err(Error::InvalidArgument { + reason: "register accepts either --uri or --empty-uri".to_string(), + }); + } + Ok(Command::Register(RegisterArgs { + uri: if empty_uri { None } else { uri }, + identity_registry, + })) +} + +fn parse_show(args: &[String]) -> Result { + let agent_id = args.get(1).cloned().ok_or_else(|| Error::InvalidArgument { + reason: "show requires ".to_string(), + })?; + let mut fetch_uri = false; + let mut identity_registry = None; + let mut index = 2; + while index < args.len() { + match args[index].as_str() { + "--fetch-uri" => fetch_uri = true, + "--identity-registry" => { + identity_registry = Some(parse_next(args, &mut index, "--identity-registry")?) + } + other => return unsupported_flag(other), + } + index += 1; + } + Ok(Command::Show(ShowArgs { + agent_id, + fetch_uri, + identity_registry, + })) +} + +fn parse_list(args: &[String]) -> Result { + let mut connection = ConnectionMode::Owner; + let mut from_block = None; + let mut identity_registry = None; + let mut to_block = None; + let mut wallet = None; + let mut index = 1; + while index < args.len() { + match args[index].as_str() { + "--connection" => { + connection = match parse_next(args, &mut index, "--connection")?.as_str() { + "owner" => ConnectionMode::Owner, + "agent-wallet" => ConnectionMode::AgentWallet, + "both" => ConnectionMode::Both, + value => { + return Err(Error::InvalidArgument { + reason: format!("invalid connection mode {value}"), + }); + } + } + } + "--from-block" => from_block = Some(parse_u64_flag(args, &mut index, "--from-block")?), + "--identity-registry" => { + identity_registry = Some(parse_next(args, &mut index, "--identity-registry")?) + } + "--to-block" => to_block = Some(parse_u64_flag(args, &mut index, "--to-block")?), + "--wallet" => wallet = Some(parse_next(args, &mut index, "--wallet")?), + other => return unsupported_flag(other), + } + index += 1; + } + Ok(Command::List(ListArgs { + connection, + from_block, + identity_registry, + to_block, + wallet, + })) +} + +fn parse_set_uri(args: &[String]) -> Result { + let agent_id = args.get(1).cloned().ok_or_else(|| Error::InvalidArgument { + reason: "set-uri requires ".to_string(), + })?; + let uri = args.get(2).cloned().ok_or_else(|| Error::InvalidArgument { + reason: "set-uri requires ".to_string(), + })?; + let mut identity_registry = None; + let mut index = 3; + while index < args.len() { + match args[index].as_str() { + "--identity-registry" => { + identity_registry = Some(parse_next(args, &mut index, "--identity-registry")?) + } + other => return unsupported_flag(other), + } + index += 1; + } + Ok(Command::SetUri(SetUriArgs { + agent_id, + identity_registry, + uri, + })) +} + +fn parse_set_wallet(args: &[String]) -> Result { + let agent_id = args.get(1).cloned().ok_or_else(|| Error::InvalidArgument { + reason: "set-wallet requires ".to_string(), + })?; + let wallet = args.get(2).cloned().ok_or_else(|| Error::InvalidArgument { + reason: "set-wallet requires ".to_string(), + })?; + let mut deadline_seconds = 300; + let mut identity_registry = None; + let mut index = 3; + while index < args.len() { + match args[index].as_str() { + "--deadline-seconds" => { + deadline_seconds = parse_u64_flag(args, &mut index, "--deadline-seconds")?; + } + "--identity-registry" => { + identity_registry = Some(parse_next(args, &mut index, "--identity-registry")?) + } + other => return unsupported_flag(other), + } + index += 1; + } + if deadline_seconds > 300 { + return Err(Error::InvalidArgument { + reason: "set-wallet deadline cannot exceed 300 seconds".to_string(), + }); + } + Ok(Command::SetWallet(SetWalletArgs { + agent_id, + deadline_seconds, + identity_registry, + wallet, + })) +} + +fn parse_unset_wallet(args: &[String]) -> Result { + let agent_id = args.get(1).cloned().ok_or_else(|| Error::InvalidArgument { + reason: "unset-wallet requires ".to_string(), + })?; + let mut identity_registry = None; + let mut index = 2; + while index < args.len() { + match args[index].as_str() { + "--identity-registry" => { + identity_registry = Some(parse_next(args, &mut index, "--identity-registry")?) + } + other => return unsupported_flag(other), + } + index += 1; + } + Ok(Command::UnsetWallet(UnsetWalletArgs { + agent_id, + identity_registry, + })) +} + +fn parse_next(args: &[String], index: &mut usize, flag: &str) -> Result { + *index += 1; + args.get(*index) + .cloned() + .ok_or_else(|| Error::InvalidArgument { + reason: format!("{flag} requires a value"), + }) +} + +fn parse_u64_flag(args: &[String], index: &mut usize, flag: &str) -> Result { + parse_next(args, index, flag)? + .parse::() + .map_err(|_| Error::InvalidArgument { + reason: format!("{flag} must be an integer"), + }) +} + +fn unsupported_flag(flag: &str) -> Result { + Err(Error::InvalidArgument { + reason: format!("unsupported erc8004 flag {flag}"), + }) +} diff --git a/beam-apps/apps/erc8004/src/config.rs b/beam-apps/apps/erc8004/src/config.rs new file mode 100644 index 0000000..790cb20 --- /dev/null +++ b/beam-apps/apps/erc8004/src/config.rs @@ -0,0 +1,275 @@ +use serde_json::{Value, json}; + +use crate::{ + Error, Result, + abi::parse_address, + host::{self, DynamicContractScope}, +}; + +const LEGACY_STORAGE_KEY: &str = "registry-config-v1"; +const MAINNET_IDENTITY_REGISTRY: &str = "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432"; +const MAINNET_REPUTATION_REGISTRY: &str = "0x8004BAa17C55a88189AE136b182e5fdA19dE9b63"; +const TESTNET_IDENTITY_REGISTRY: &str = "0x8004A818BFB912233c491871b3d84c89A494BD9e"; +const TESTNET_REPUTATION_REGISTRY: &str = "0x8004B663056A597Dffe9eCcC1965A193B7388713"; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct RegistryConfig { + pub chain_id: u64, + pub display_name: String, + pub identity_registry: String, + pub is_default_identity: bool, + pub reputation_registry: String, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct RegistrySelection { + pub config: RegistryConfig, + pub dynamic_contracts: Vec, +} + +#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +struct StoredConfig { + #[serde(default)] + chains: Vec, +} + +#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +struct StoredChainConfig { + chain_id: u64, + identity_registry: String, + reputation_registry: String, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +struct Deployment { + chain_id: u64, + display_name: &'static str, + identity_registry: &'static str, + reputation_registry: &'static str, +} + +pub fn select( + chain_id: u64, + chain_display_name: &str, + override_identity: Option<&str>, +) -> Result { + let stored_chain = load_stored_chain_config(chain_id)?; + let default = deployment_for_chain_id(chain_id); + let identity_registry = override_identity + .map(normalize_address) + .transpose()? + .or_else(|| { + stored_chain + .as_ref() + .map(|chain| chain.identity_registry.clone()) + }) + .or_else(|| { + default + .as_ref() + .map(|deployment| deployment.identity_registry.to_string()) + }) + .ok_or(Error::UnsupportedChain { chain_id })?; + let reputation_registry = stored_chain + .as_ref() + .map(|chain| chain.reputation_registry.clone()) + .or_else(|| { + default + .as_ref() + .map(|deployment| deployment.reputation_registry.to_string()) + }) + .unwrap_or_else(|| TESTNET_REPUTATION_REGISTRY.to_string()); + let default_identity = default + .as_ref() + .map(|deployment| deployment.identity_registry) + .unwrap_or_default(); + let is_default_identity = identity_registry.eq_ignore_ascii_case(default_identity); + let dynamic_contracts = (!is_default_identity) + .then(|| DynamicContractScope { + chain: chain_display_name.to_string(), + contract: identity_registry.clone(), + reason: "ERC-8004 identity registry override".to_string(), + }) + .into_iter() + .collect(); + + Ok(RegistrySelection { + config: RegistryConfig { + chain_id, + display_name: default + .as_ref() + .map(|deployment| deployment.display_name.to_string()) + .unwrap_or_else(|| chain_display_name.to_string()), + identity_registry, + is_default_identity, + reputation_registry, + }, + dynamic_contracts, + }) +} + +pub fn show(chain_id: u64, chain_display_name: &str) -> Result { + Ok(select(chain_id, chain_display_name, None)?.config) +} + +pub fn set( + chain_id: u64, + chain_display_name: &str, + identity_registry: &str, + reputation_registry: Option<&str>, +) -> Result { + let identity_registry = normalize_address(identity_registry)?; + let default = deployment_for_chain_id(chain_id); + let reputation_registry = reputation_registry + .map(normalize_address) + .transpose()? + .unwrap_or_else(|| { + default + .clone() + .map(|deployment| deployment.reputation_registry.to_string()) + .unwrap_or_else(|| TESTNET_REPUTATION_REGISTRY.to_string()) + }); + let default_identity = default + .as_ref() + .map(|deployment| deployment.identity_registry) + .unwrap_or_default(); + let is_default_identity = identity_registry.eq_ignore_ascii_case(default_identity); + let display_name = default + .as_ref() + .map(|deployment| deployment.display_name.to_string()) + .unwrap_or_else(|| chain_display_name.to_string()); + let stored = StoredChainConfig { + chain_id, + identity_registry: identity_registry.clone(), + reputation_registry: reputation_registry.clone(), + }; + let stored = serde_json::to_string(&stored).map_err(|err| Error::Serialization { + reason: err.to_string(), + })?; + host::storage_set(&chain_storage_key(chain_id), &stored)?; + Ok(RegistryConfig { + chain_id, + display_name, + identity_registry, + is_default_identity, + reputation_registry, + }) +} + +pub fn to_json(config: &RegistryConfig) -> Value { + json!({ + "chain_id": config.chain_id, + "display_name": config.display_name, + "identity_registry": config.identity_registry, + "identity_registry_source": if config.is_default_identity { "default" } else { "override" }, + "reputation_registry": config.reputation_registry, + }) +} + +fn load_stored_chain_config(chain_id: u64) -> Result> { + if let Some(value) = host::storage_get(&chain_storage_key(chain_id))? { + return Ok(Some(parse_storage_value(value)?)); + } + + let Some(value) = host::storage_get(LEGACY_STORAGE_KEY)? else { + return Ok(None); + }; + Ok(parse_storage_value::(value)? + .chains + .into_iter() + .find(|chain| chain.chain_id == chain_id)) +} + +fn parse_storage_value(value: Value) -> Result { + match value { + Value::String(value) => { + serde_json::from_str::(&value).map_err(|err| Error::Serialization { + reason: err.to_string(), + }) + } + value => serde_json::from_value::(value).map_err(|err| Error::Serialization { + reason: err.to_string(), + }), + } +} + +fn chain_storage_key(chain_id: u64) -> String { + format!("registry-config-v1-{chain_id}") +} + +fn normalize_address(value: &str) -> Result { + Ok(format!("{:#x}", parse_address(value)?)) +} + +fn deployment_for_chain_id(chain_id: u64) -> Option { + DEPLOYMENTS + .iter() + .find(|deployment| deployment.chain_id == chain_id) + .cloned() +} + +const fn mainnet(chain_id: u64, display_name: &'static str) -> Deployment { + Deployment { + chain_id, + display_name, + identity_registry: MAINNET_IDENTITY_REGISTRY, + reputation_registry: MAINNET_REPUTATION_REGISTRY, + } +} + +const fn testnet(chain_id: u64, display_name: &'static str) -> Deployment { + Deployment { + chain_id, + display_name, + identity_registry: TESTNET_IDENTITY_REGISTRY, + reputation_registry: TESTNET_REPUTATION_REGISTRY, + } +} + +const DEPLOYMENTS: &[Deployment] = &[ + mainnet(1, "Ethereum Mainnet"), + testnet(11155111, "Ethereum Sepolia"), + mainnet(8453, "Base Mainnet"), + testnet(84532, "Base Sepolia"), + mainnet(2741, "Abstract Mainnet"), + testnet(11124, "Abstract Testnet"), + mainnet(42161, "Arbitrum Mainnet"), + testnet(421614, "Arbitrum Testnet"), + mainnet(43114, "Avalanche Mainnet"), + testnet(43113, "Avalanche Testnet"), + mainnet(56, "BSC Mainnet"), + testnet(97, "BSC Testnet"), + mainnet(42220, "Celo Mainnet"), + testnet(11142220, "Celo Testnet"), + mainnet(100, "Gnosis Mainnet"), + mainnet(2345, "GOAT Network Mainnet"), + mainnet(59144, "Linea Mainnet"), + testnet(59141, "Linea Sepolia"), + mainnet(5000, "Mantle Mainnet"), + testnet(5003, "Mantle Testnet"), + mainnet(4326, "MegaETH Mainnet"), + testnet(6343, "MegaETH Testnet"), + mainnet(1088, "Metis Mainnet"), + testnet(59902, "Metis Sepolia"), + mainnet(143, "Monad Mainnet"), + testnet(10143, "Monad Testnet"), + mainnet(10, "Optimism Mainnet"), + testnet(11155420, "Optimism Testnet"), + mainnet(137, "Polygon Mainnet"), + testnet(80002, "Polygon Amoy"), + mainnet(534352, "Scroll Mainnet"), + testnet(534351, "Scroll Testnet"), + mainnet(1187947933, "SKALE Base Mainnet"), + testnet(324705682, "SKALE Base Sepolia"), + mainnet(1868, "Soneium Mainnet"), + testnet(1946, "Soneium Minato"), + mainnet(167000, "Taiko Mainnet"), + testnet(167012, "Taiko Hoodi"), + mainnet(196, "XLayer Mainnet"), + testnet(1952, "XLayer Testnet"), + testnet(296, "Hedera Testnet"), + testnet(5042002, "Arc Testnet"), + mainnet(45056, "Billions Mainnet"), + testnet(6913, "Billions Testnet"), + mainnet(1776, "Injective Mainnet"), + testnet(1439, "Injective Testnet"), +]; diff --git a/beam-apps/apps/erc8004/src/error.rs b/beam-apps/apps/erc8004/src/error.rs new file mode 100644 index 0000000..95bf578 --- /dev/null +++ b/beam-apps/apps/erc8004/src/error.rs @@ -0,0 +1,34 @@ +pub type Result = std::result::Result; + +#[derive(Clone, Debug, Eq, PartialEq, thiserror::Error)] +pub enum Error { + #[error("[beam-app-erc8004] unsupported command: {command}")] + UnsupportedCommand { command: String }, + + #[error("[beam-app-erc8004] invalid argument: {reason}")] + InvalidArgument { reason: String }, + + #[error("[beam-app-erc8004] unsupported ERC-8004 chain id: {chain_id}")] + UnsupportedChain { chain_id: u64 }, + + #[error("[beam-app-erc8004] invalid agent uri: {uri}")] + InvalidAgentUri { uri: String }, + + #[error("[beam-app-erc8004] invalid agent id: {value}")] + InvalidAgentId { value: String }, + + #[error("[beam-app-erc8004] address value is invalid: {value}")] + InvalidAddress { value: String }, + + #[error("[beam-app-erc8004] integer value is invalid: {value}")] + InvalidInteger { value: String }, + + #[error("[beam-app-erc8004] host call failed: {message}")] + HostCallFailed { message: String }, + + #[error("[beam-app-erc8004] host response is invalid: {reason}")] + InvalidHostResponse { reason: String }, + + #[error("[beam-app-erc8004] serialization failed: {reason}")] + Serialization { reason: String }, +} diff --git a/beam-apps/apps/erc8004/src/host.rs b/beam-apps/apps/erc8004/src/host.rs new file mode 100644 index 0000000..ddd9efb --- /dev/null +++ b/beam-apps/apps/erc8004/src/host.rs @@ -0,0 +1,434 @@ +// lint-long-file-override allow-max-lines=500 +use serde_json::Value; + +use crate::{Error, Result}; + +const HOST_API_VERSION: u32 = 1; +const HOST_RESPONSE_CAPACITY: usize = 2 * 1024 * 1024; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct PlanContext { + pub app_id: String, + pub app_version: String, + pub chain: String, + pub manifest_sha256: String, + pub wallet: String, + pub wasm_sha256: String, +} + +#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +pub struct GuestInvocation { + pub args: Vec, + pub host_api_version: u32, + pub metadata: HostMetadata, + pub output_mode: String, +} + +#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +pub struct HostMetadata { + pub app_id: String, + pub app_version: String, + pub chain: String, + pub chain_id: u64, + #[serde(default)] + pub debug: bool, + pub host_api_version: u32, + pub manifest_sha256: String, + pub now: u64, + pub wallet: String, + pub wasm_sha256: String, +} + +impl HostMetadata { + pub fn plan_context(&self) -> PlanContext { + PlanContext { + app_id: self.app_id.clone(), + app_version: self.app_version.clone(), + chain: self.chain.clone(), + manifest_sha256: self.manifest_sha256.clone(), + wallet: self.wallet.clone(), + wasm_sha256: self.wasm_sha256.clone(), + } + } +} + +#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +pub struct ActionPlan { + pub app_id: String, + pub app_version: String, + pub wasm_sha256: String, + pub manifest_sha256: String, + pub command: String, + pub wallet: Option, + pub chain: String, + #[serde(default)] + pub steps: Vec, + #[serde(default)] + pub bindings: Vec, + #[serde(default)] + pub constraints: Vec, + #[serde(default)] + pub dynamic_contracts: Vec, + pub expires_at: u64, +} + +#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +pub struct DynamicContractScope { + pub chain: String, + pub contract: String, + #[serde(default)] + pub reason: String, +} + +#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +pub struct ActionStep { + pub kind: String, + pub summary: String, + pub target: Option, + pub selector: Option, + pub spender: Option, + pub value: Option, + #[serde(default)] + pub metadata: Value, +} + +#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +pub struct ActionBinding { + pub key: String, + pub value: String, +} + +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +#[serde(rename_all = "kebab-case")] +enum HostRequest { + HttpFetch(HttpFetchRequest), + ChainRead(ChainReadRequest), + SignTypedData(TypedDataSignRequest), + Diagnostic { level: String, message: String }, + ResolveAddress { value: Option }, + AppStorageGet { key: String }, + AppStorageSet { key: String, value: String }, +} + +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +struct HttpFetchRequest { + method: String, + url: String, + headers: Vec, + body: Vec, +} + +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +struct HttpHeader { + name: String, + value: String, +} + +#[derive(Clone, Debug, serde::Deserialize)] +pub struct HttpFetchResponse { + pub body: Vec, + pub status: u16, + pub url: String, +} + +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +struct ChainReadRequest { + chain: String, + operation: ChainReadOperation, + address: Option, + data: Option, + dynamic_contracts: Vec, + from_block: Option, + owner: Option, + spender: Option, + target: Option, + token: Option, + topics: Vec>>, + to_block: Option, + value: Option, + selector: Option, +} + +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +#[serde(rename_all = "kebab-case")] +enum ChainReadOperation { + Call, + Logs, +} + +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +struct TypedDataSignRequest { + chain: String, + dynamic_contracts: Vec, + domain_separator: String, + fields: Vec, + primary_type: String, + struct_hash: String, + verifying_contract: String, + wallet: String, +} + +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +struct TypedDataDisplayField { + name: String, + kind: String, + value: String, +} + +#[derive(Clone, Debug, serde::Deserialize)] +struct HostCallResponse { + ok: bool, + value: Option, + error: Option, +} + +#[derive(Clone, Debug, serde::Deserialize)] +struct StorageGetResponse { + exists: bool, + value: Option, +} + +#[derive(Clone, Debug, serde::Deserialize)] +pub struct CallResponse { + pub raw: String, +} + +#[derive(Clone, Debug, serde::Deserialize)] +pub struct LogsResponse { + pub logs: Vec, +} + +#[derive(Clone, Debug, serde::Deserialize)] +pub struct LogEntry { + pub address: String, + pub data: String, + pub topics: Vec, +} + +#[derive(Clone, Debug, serde::Deserialize)] +pub struct SignatureResponse { + pub digest: String, + pub signature: String, + pub signer: String, +} + +pub fn ensure_host_abi(invocation: &GuestInvocation) -> Result<()> { + if invocation.host_api_version < HOST_API_VERSION + || invocation.metadata.host_api_version < HOST_API_VERSION + { + return Err(Error::InvalidHostResponse { + reason: format!( + "unsupported host abi version {}", + invocation.host_api_version + ), + }); + } + + Ok(()) +} + +pub fn eth_call( + chain: &str, + target: &str, + data: &str, + dynamic_contracts: &[DynamicContractScope], +) -> Result { + let response = chain_read(ChainReadRequest { + address: None, + chain: chain.to_string(), + data: Some(data.to_string()), + dynamic_contracts: dynamic_contracts.to_vec(), + from_block: None, + operation: ChainReadOperation::Call, + owner: None, + selector: selector_from_calldata(data), + spender: None, + target: Some(target.to_string()), + token: None, + topics: Vec::new(), + to_block: None, + value: None, + })?; + Ok(parse_host_value::(response)?.raw) +} + +pub fn logs( + chain: &str, + target: &str, + topics: Vec>>, + from_block: Option, + to_block: Option, + dynamic_contracts: &[DynamicContractScope], +) -> Result { + let response = chain_read(ChainReadRequest { + address: None, + chain: chain.to_string(), + data: None, + dynamic_contracts: dynamic_contracts.to_vec(), + from_block, + operation: ChainReadOperation::Logs, + owner: None, + selector: None, + spender: None, + target: Some(target.to_string()), + token: None, + topics, + to_block, + value: None, + })?; + parse_host_value(response) +} + +pub fn sign_typed_data( + chain: &str, + wallet: &str, + verifying_contract: &str, + domain_separator: &str, + struct_hash: &str, + fields: Vec<(&str, &str, String)>, + dynamic_contracts: &[DynamicContractScope], +) -> Result { + let response = host_call(HostRequest::SignTypedData(TypedDataSignRequest { + chain: chain.to_string(), + dynamic_contracts: dynamic_contracts.to_vec(), + domain_separator: domain_separator.to_string(), + fields: fields + .into_iter() + .map(|(kind, name, value)| TypedDataDisplayField { + kind: kind.to_string(), + name: name.to_string(), + value, + }) + .collect(), + primary_type: "AgentWalletSet".to_string(), + struct_hash: struct_hash.to_string(), + verifying_contract: verifying_contract.to_string(), + wallet: wallet.to_string(), + }))?; + parse_host_value(response) +} + +pub fn http_get(url: &str) -> Result { + let response = host_call(HostRequest::HttpFetch(HttpFetchRequest { + method: "GET".to_string(), + url: url.to_string(), + headers: Vec::new(), + body: Vec::new(), + }))?; + parse_host_value(response) +} + +pub fn resolve_address(value: Option<&str>) -> Result { + let response = host_call(HostRequest::ResolveAddress { + value: value.map(str::to_string), + })?; + Ok(response + .get("address") + .and_then(Value::as_str) + .ok_or_else(|| Error::InvalidHostResponse { + reason: "resolve address response missing address".to_string(), + })? + .to_string()) +} + +pub fn storage_get(key: &str) -> Result> { + let response = host_call(HostRequest::AppStorageGet { + key: key.to_string(), + })?; + let response = parse_host_value::(response)?; + if response.exists { + Ok(response.value) + } else { + Ok(None) + } +} + +pub fn storage_set(key: &str, value: &str) -> Result<()> { + host_call(HostRequest::AppStorageSet { + key: key.to_string(), + value: value.to_string(), + })?; + Ok(()) +} + +fn chain_read(request: ChainReadRequest) -> Result { + host_call(HostRequest::ChainRead(request)) +} + +fn selector_from_calldata(data: &str) -> Option { + let data = data.strip_prefix("0x").unwrap_or(data); + (data.len() >= 8).then(|| format!("0x{}", &data[..8])) +} + +fn host_call(request: HostRequest) -> Result { + let request = serde_json::to_vec(&request).map_err(|err| Error::Serialization { + reason: err.to_string(), + })?; + let mut response = vec![0_u8; HOST_RESPONSE_CAPACITY]; + let len = beam_host_call_wrapper(&request, &mut response)?; + let response = serde_json::from_slice::(&response[..len]).map_err(|err| { + Error::InvalidHostResponse { + reason: err.to_string(), + } + })?; + if !response.ok { + return Err(Error::HostCallFailed { + message: response + .error + .unwrap_or_else(|| "host call failed without message".to_string()), + }); + } + response.value.ok_or_else(|| Error::InvalidHostResponse { + reason: "successful host response missing value".to_string(), + }) +} + +fn beam_host_call_wrapper(request: &[u8], response: &mut [u8]) -> Result { + #[cfg(target_arch = "wasm32")] + { + let len = unsafe { + beam_host_call( + request.as_ptr(), + request.len(), + response.as_mut_ptr(), + response.len(), + ) + }; + if len < 0 { + return Err(Error::HostCallFailed { + message: format!("host response exceeded buffer: {} bytes", -len), + }); + } + usize::try_from(len).map_err(|_| Error::InvalidHostResponse { + reason: format!("invalid host response length {len}"), + }) + } + + #[cfg(not(target_arch = "wasm32"))] + { + let _ = request; + let _ = response; + Err(Error::HostCallFailed { + message: "host calls are only available in wasm guest execution".to_string(), + }) + } +} + +fn parse_host_value(value: Value) -> Result +where + T: serde::de::DeserializeOwned, +{ + serde_json::from_value::(value).map_err(|err| Error::InvalidHostResponse { + reason: err.to_string(), + }) +} + +#[cfg(target_arch = "wasm32")] +unsafe extern "C" { + fn beam_host_call( + request_ptr: *const u8, + request_len: usize, + response_ptr: *mut u8, + response_capacity: usize, + ) -> i32; +} diff --git a/beam-apps/apps/erc8004/src/lib.rs b/beam-apps/apps/erc8004/src/lib.rs new file mode 100644 index 0000000..aea63c4 --- /dev/null +++ b/beam-apps/apps/erc8004/src/lib.rs @@ -0,0 +1,483 @@ +// lint-long-file-override allow-max-lines=700 +mod abi; +mod args; +mod config; +mod error; +mod host; +mod plan; + +pub use abi::selector; +pub use error::{Error, Result}; +pub use host::{ActionBinding, ActionPlan, ActionStep, GuestInvocation, PlanContext}; + +use abi::{ + AgentId, EvmAddress, address_hex, agent_wallet_hashes, decode_address, decode_string, + get_agent_wallet_calldata, owner_of_calldata, parse_address, parse_agent_id, + parse_registered_event, register_calldata, registered_topic, set_uri_calldata, + set_wallet_calldata, token_uri_calldata, unset_wallet_calldata, +}; +use args::{Command, ConnectionMode}; +use ethabi::ethereum_types::Address; +use plan::{TransactionPlanInput, agent_binding, binding, transaction_plan, wallet_binding}; +use serde_json::{Value, json}; + +#[cfg(test)] +mod tests; + +#[derive(Clone, Debug, Eq, PartialEq)] +struct Agent { + agent_id: AgentId, + agent_wallet: EvmAddress, + owner: EvmAddress, + uri: String, +} + +#[unsafe(no_mangle)] +pub extern "C" fn beam_alloc(len: usize) -> *mut u8 { + let mut buffer = Vec::::with_capacity(len); + let ptr = buffer.as_mut_ptr(); + core::mem::forget(buffer); + ptr +} + +#[unsafe(no_mangle)] +pub unsafe extern "C" fn beam_free(ptr: *mut u8, capacity: usize) { + if ptr.is_null() || capacity == 0 { + return; + } + unsafe { + let _ = Vec::::from_raw_parts(ptr, 0, capacity); + } +} + +#[unsafe(no_mangle)] +pub unsafe extern "C" fn beam_app_main(input_ptr: *const u8, input_len: usize) -> u64 { + let result = run_guest(input_ptr, input_len).unwrap_or_else(|error| GuestResponse::Error { + message: error.to_string(), + }); + pack_response(&result) +} + +fn run_guest(input_ptr: *const u8, input_len: usize) -> Result { + if input_ptr.is_null() { + return Err(Error::InvalidHostResponse { + reason: "guest invocation pointer is null".to_string(), + }); + } + let input = unsafe { core::slice::from_raw_parts(input_ptr, input_len) }; + let invocation = + serde_json::from_slice::(input).map_err(|err| Error::Serialization { + reason: err.to_string(), + })?; + host::ensure_host_abi(&invocation)?; + match args::parse(&invocation.args)? { + Command::Support => output(run_support(&invocation)?), + Command::ConfigShow => output(run_config_show(&invocation)?), + Command::ConfigSet(args) => output(run_config_set(&invocation, args)?), + Command::Register(args) => action_plan(run_register(&invocation, args)?), + Command::Show(args) => output(run_show(&invocation, args)?), + Command::List(args) => output(run_list(&invocation, args)?), + Command::SetUri(args) => action_plan(run_set_uri(&invocation, args)?), + Command::SetWallet(args) => action_plan(run_set_wallet(&invocation, args)?), + Command::UnsetWallet(args) => action_plan(run_unset_wallet(&invocation, args)?), + } +} + +fn run_support(invocation: &GuestInvocation) -> Result { + let selection = config::select( + invocation.metadata.chain_id, + &invocation.metadata.chain, + None, + )?; + let value = json!({ + "message": format!( + "ERC-8004 is supported on {} ({})\nidentity registry: {}", + selection.config.display_name, + selection.config.chain_id, + selection.config.identity_registry + ), + "supported": true, + "chain": invocation.metadata.chain, + "chain_id": invocation.metadata.chain_id, + "registry": config::to_json(&selection.config), + }); + Ok(value) +} + +fn run_config_show(invocation: &GuestInvocation) -> Result { + let config = config::show(invocation.metadata.chain_id, &invocation.metadata.chain)?; + Ok(json!({ + "message": format!("ERC-8004 identity registry: {}", config.identity_registry), + "registry": config::to_json(&config), + })) +} + +fn run_config_set(invocation: &GuestInvocation, args: args::ConfigSetArgs) -> Result { + let config = config::set( + invocation.metadata.chain_id, + &invocation.metadata.chain, + &args.identity_registry, + args.reputation_registry.as_deref(), + )?; + Ok(json!({ + "message": format!("Updated ERC-8004 registry config: {}", config.identity_registry), + "registry": config::to_json(&config), + })) +} + +fn run_register(invocation: &GuestInvocation, args: args::RegisterArgs) -> Result { + if let Some(uri) = args.uri.as_deref() { + validate_agent_uri(uri)?; + } + let selection = config::select( + invocation.metadata.chain_id, + &invocation.metadata.chain, + args.identity_registry.as_deref(), + )?; + let calldata = register_calldata(args.uri.as_deref()); + let mut bindings = vec![binding( + "agent_uri", + args.uri.as_deref().unwrap_or(""), + )]; + bindings.push(plan::selector_binding(if args.uri.is_some() { + "register(string)" + } else { + "register()" + })); + transaction_plan(TransactionPlanInput { + bindings, + calldata, + command: "register".to_string(), + context: invocation.metadata.plan_context(), + dynamic_contracts: selection.dynamic_contracts, + expires_at: invocation.metadata.now + 15 * 60, + registry: selection.config.identity_registry, + summary: "Register ERC-8004 agent".to_string(), + value: "0".to_string(), + }) +} + +fn run_show(invocation: &GuestInvocation, args: args::ShowArgs) -> Result { + let selection = config::select( + invocation.metadata.chain_id, + &invocation.metadata.chain, + args.identity_registry.as_deref(), + )?; + let agent_id = parse_agent_id(&args.agent_id)?; + let agent = read_agent( + &invocation.metadata.chain, + &selection.config.identity_registry, + &selection.dynamic_contracts, + agent_id, + )?; + let uri_body = if args.fetch_uri { + fetch_uri(agent.uri.as_str())? + } else { + None + }; + + Ok(json!({ + "message": format!("ERC-8004 agent {} owned by {}", agent.agent_id, address_hex(agent.owner)), + "agent": agent_json(&agent), + "agent_uri_body": uri_body, + "identity_registry": selection.config.identity_registry, + })) +} + +fn run_list(invocation: &GuestInvocation, args: args::ListArgs) -> Result { + let selection = config::select( + invocation.metadata.chain_id, + &invocation.metadata.chain, + args.identity_registry.as_deref(), + )?; + let wallet = host::resolve_address(args.wallet.as_deref())?; + let wallet = parse_address(&wallet)?; + let owner_topic = if matches!(args.connection, ConnectionMode::Owner) { + Some(vec![address_topic(wallet)]) + } else { + None + }; + let logs = host::logs( + &invocation.metadata.chain, + &selection.config.identity_registry, + vec![Some(vec![registered_topic()]), None, owner_topic], + args.from_block, + args.to_block, + &selection.dynamic_contracts, + )?; + let mut agents = Vec::new(); + for event in logs + .logs + .iter() + .filter_map(|log| parse_registered_event(log, &selection.config.identity_registry)) + { + let agent = read_agent( + &invocation.metadata.chain, + &selection.config.identity_registry, + &selection.dynamic_contracts, + event.agent_id, + )?; + if connects(&agent, wallet, &args.connection) { + agents.push(agent_json(&agent)); + } + } + + Ok(json!({ + "message": format!("Found {} ERC-8004 agents", agents.len()), + "agents": agents, + "connection": args.connection.label(), + "identity_registry": selection.config.identity_registry, + "wallet": address_hex(wallet), + })) +} + +fn run_set_uri(invocation: &GuestInvocation, args: args::SetUriArgs) -> Result { + validate_agent_uri(&args.uri)?; + let selection = config::select( + invocation.metadata.chain_id, + &invocation.metadata.chain, + args.identity_registry.as_deref(), + )?; + let agent_id = parse_agent_id(&args.agent_id)?; + let calldata = set_uri_calldata(agent_id, &args.uri); + transaction_plan(TransactionPlanInput { + bindings: vec![ + agent_binding(agent_id), + binding("agent_uri", &args.uri), + plan::selector_binding("setAgentURI(uint256,string)"), + ], + calldata, + command: format!("set-uri {agent_id}"), + context: invocation.metadata.plan_context(), + dynamic_contracts: selection.dynamic_contracts, + expires_at: invocation.metadata.now + 15 * 60, + registry: selection.config.identity_registry, + summary: format!("Update ERC-8004 agent {agent_id} URI"), + value: "0".to_string(), + }) +} + +fn run_unset_wallet(invocation: &GuestInvocation, args: args::UnsetWalletArgs) -> Result { + let selection = config::select( + invocation.metadata.chain_id, + &invocation.metadata.chain, + args.identity_registry.as_deref(), + )?; + let agent_id = parse_agent_id(&args.agent_id)?; + let calldata = unset_wallet_calldata(agent_id); + transaction_plan(TransactionPlanInput { + bindings: vec![ + agent_binding(agent_id), + plan::selector_binding("unsetAgentWallet(uint256)"), + ], + calldata, + command: format!("unset-wallet {agent_id}"), + context: invocation.metadata.plan_context(), + dynamic_contracts: selection.dynamic_contracts, + expires_at: invocation.metadata.now + 15 * 60, + registry: selection.config.identity_registry, + summary: format!("Clear ERC-8004 agent {agent_id} wallet"), + value: "0".to_string(), + }) +} + +fn run_set_wallet(invocation: &GuestInvocation, args: args::SetWalletArgs) -> Result { + let selection = config::select( + invocation.metadata.chain_id, + &invocation.metadata.chain, + args.identity_registry.as_deref(), + )?; + let agent_id = parse_agent_id(&args.agent_id)?; + let target_wallet = host::resolve_address(Some(&args.wallet))?; + let target_wallet = parse_address(&target_wallet)?; + let registry = parse_address(&selection.config.identity_registry)?; + let agent = read_agent( + &invocation.metadata.chain, + &selection.config.identity_registry, + &selection.dynamic_contracts, + agent_id, + )?; + let deadline = invocation + .metadata + .now + .saturating_add(args.deadline_seconds); + let (domain_separator, struct_hash) = agent_wallet_hashes( + invocation.metadata.chain_id, + registry, + agent_id, + target_wallet, + agent.owner, + deadline, + ); + let signature = host::sign_typed_data( + &invocation.metadata.chain, + &args.wallet, + &selection.config.identity_registry, + &domain_separator, + &struct_hash, + vec![ + ("uint256", "agentId", agent_id.to_string()), + ("address", "newWallet", address_hex(target_wallet)), + ("address", "owner", address_hex(agent.owner)), + ("uint256", "deadline", deadline.to_string()), + ], + &selection.dynamic_contracts, + )?; + let calldata = set_wallet_calldata(agent_id, target_wallet, deadline, &signature.signature)?; + transaction_plan(TransactionPlanInput { + bindings: vec![ + agent_binding(agent_id), + wallet_binding("agent_wallet", target_wallet), + wallet_binding("owner", agent.owner), + binding("deadline", &deadline.to_string()), + binding("signed_by", &signature.signer), + binding("typed_data_digest", &signature.digest), + binding("signature_hash", &abi::calldata_hash(&signature.signature)), + plan::selector_binding("setAgentWallet(uint256,address,uint256,bytes)"), + ], + calldata, + command: format!("set-wallet {agent_id} {}", args.wallet), + context: invocation.metadata.plan_context(), + dynamic_contracts: selection.dynamic_contracts, + expires_at: deadline, + registry: selection.config.identity_registry, + summary: format!("Update ERC-8004 agent {agent_id} wallet"), + value: "0".to_string(), + }) +} + +fn read_agent( + chain: &str, + registry: &str, + dynamic_contracts: &[host::DynamicContractScope], + agent_id: AgentId, +) -> Result { + let owner = decode_address(&host::eth_call( + chain, + registry, + &owner_of_calldata(agent_id), + dynamic_contracts, + )?)?; + let uri = decode_string(&host::eth_call( + chain, + registry, + &token_uri_calldata(agent_id), + dynamic_contracts, + )?)?; + let agent_wallet = decode_address(&host::eth_call( + chain, + registry, + &get_agent_wallet_calldata(agent_id), + dynamic_contracts, + )?)?; + + Ok(Agent { + agent_id, + agent_wallet, + owner, + uri, + }) +} + +fn fetch_uri(uri: &str) -> Result> { + if !uri.starts_with("https://") { + return Ok(None); + } + let response = host::http_get(uri)?; + let text = String::from_utf8(response.body).map_err(|err| Error::InvalidHostResponse { + reason: err.to_string(), + })?; + if !(200..300).contains(&response.status) { + return Ok(Some(json!({ + "body": sanitize_control_chars(&text), + "status": response.status, + "url": response.url, + }))); + } + match serde_json::from_str::(&text) { + Ok(value) => Ok(Some(value)), + Err(_) => Ok(Some(json!(sanitize_control_chars(&text)))), + } +} + +fn connects(agent: &Agent, wallet: Address, mode: &ConnectionMode) -> bool { + matches!(mode, ConnectionMode::Owner | ConnectionMode::Both) && agent.owner == wallet + || matches!(mode, ConnectionMode::AgentWallet | ConnectionMode::Both) + && agent.agent_wallet == wallet +} + +fn agent_json(agent: &Agent) -> Value { + json!({ + "agent_id": agent.agent_id.to_string(), + "agent_uri": agent.uri, + "agent_wallet": address_hex(agent.agent_wallet), + "owner": address_hex(agent.owner), + }) +} + +fn validate_agent_uri(uri: &str) -> Result<()> { + if uri.starts_with("https://") || uri.starts_with("ipfs://") || uri.starts_with("data:") { + Ok(()) + } else { + Err(Error::InvalidAgentUri { + uri: uri.to_string(), + }) + } +} + +fn address_topic(address: Address) -> String { + format!("0x{:0>64}", hex::encode(address.as_bytes())) +} + +fn sanitize_control_chars(value: &str) -> String { + value.chars().filter(|ch| !ch.is_control()).collect() +} + +enum GuestResponse { + Output { value: Value }, + ActionPlan { plan: ActionPlan }, + Error { message: String }, +} + +fn output(value: Value) -> Result { + Ok(GuestResponse::Output { value }) +} + +fn action_plan(plan: ActionPlan) -> Result { + Ok(GuestResponse::ActionPlan { plan }) +} + +fn pack_response(value: &GuestResponse) -> u64 { + let bytes = response_bytes(value).unwrap_or_else(|err| { + format!( + r#"{{"kind":"error","message":"[beam-app-erc8004] serialization failed: {}"}}"#, + err + ) + .into_bytes() + }); + let ptr = beam_alloc(bytes.len()); + if ptr.is_null() { + return 0; + } + unsafe { + core::ptr::copy_nonoverlapping(bytes.as_ptr(), ptr, bytes.len()); + } + ((ptr as u64) << 32) | bytes.len() as u64 +} + +fn response_bytes(value: &GuestResponse) -> std::result::Result, serde_json::Error> { + match value { + GuestResponse::Output { value } => serde_json::to_vec(&json!({ + "kind": "output", + "value": value, + })), + GuestResponse::ActionPlan { plan } => serde_json::to_vec(&json!({ + "kind": "action-plan", + "plan": plan, + })), + GuestResponse::Error { message } => serde_json::to_vec(&json!({ + "kind": "error", + "message": message, + })), + } +} diff --git a/beam-apps/apps/erc8004/src/plan.rs b/beam-apps/apps/erc8004/src/plan.rs new file mode 100644 index 0000000..e5f4069 --- /dev/null +++ b/beam-apps/apps/erc8004/src/plan.rs @@ -0,0 +1,82 @@ +use serde_json::json; + +use crate::{ + Result, + abi::{AgentId, EvmAddress, address_hex, calldata_hash, selector}, + host::{ActionBinding, ActionPlan, ActionStep, DynamicContractScope, PlanContext}, +}; + +#[derive(Clone, Debug)] +pub struct TransactionPlanInput { + pub bindings: Vec, + pub calldata: String, + pub command: String, + pub context: PlanContext, + pub dynamic_contracts: Vec, + pub expires_at: u64, + pub registry: String, + pub summary: String, + pub value: String, +} + +pub fn transaction_plan(input: TransactionPlanInput) -> Result { + let selector = selector_from_calldata(&input.calldata); + let mut bindings = input.bindings; + bindings.push(binding("calldata_hash", &calldata_hash(&input.calldata))); + let registry = input.registry; + let value = input.value; + let step = ActionStep { + kind: "transaction".to_string(), + metadata: json!({ + "transaction": { + "data": input.calldata, + "to": registry.clone(), + "value": value.clone(), + }, + }), + selector, + spender: None, + summary: input.summary, + target: Some(registry), + value: Some(value), + }; + + Ok(ActionPlan { + app_id: input.context.app_id, + app_version: input.context.app_version, + wasm_sha256: input.context.wasm_sha256, + manifest_sha256: input.context.manifest_sha256, + command: input.command, + wallet: Some(input.context.wallet), + chain: input.context.chain, + steps: vec![step], + bindings, + constraints: Vec::new(), + dynamic_contracts: input.dynamic_contracts, + expires_at: input.expires_at, + }) +} + +pub fn binding(key: &str, value: &str) -> ActionBinding { + ActionBinding { + key: key.to_string(), + value: value.to_string(), + } +} + +pub fn agent_binding(agent_id: AgentId) -> ActionBinding { + binding("agent_id", &agent_id.to_string()) +} + +pub fn wallet_binding(key: &str, wallet: EvmAddress) -> ActionBinding { + binding(key, &address_hex(wallet)) +} + +fn selector_from_calldata(data: &str) -> Option { + let data = data.strip_prefix("0x").unwrap_or(data); + (data.len() >= 8).then(|| format!("0x{}", &data[..8])) +} + +pub fn selector_binding(signature: &str) -> ActionBinding { + binding("selector", &selector(signature)) +} diff --git a/beam-apps/apps/erc8004/src/tests.rs b/beam-apps/apps/erc8004/src/tests.rs new file mode 100644 index 0000000..faecdcf --- /dev/null +++ b/beam-apps/apps/erc8004/src/tests.rs @@ -0,0 +1,153 @@ +use crate::{ + abi::{ + address_hex, agent_wallet_hashes, parse_address, parse_agent_id, register_calldata, + selector, set_wallet_calldata, + }, + args::{Command, ConnectionMode, parse}, + host::{GuestInvocation, HostMetadata, ensure_host_abi}, +}; + +#[test] +fn parses_named_wallet_set_wallet() { + let args = vec![ + "set-wallet".to_string(), + "7".to_string(), + "alice".to_string(), + "--deadline-seconds".to_string(), + "120".to_string(), + ]; + + let command = parse(&args).expect("parse set-wallet"); + + match command { + Command::SetWallet(args) => { + assert_eq!(args.agent_id, "7"); + assert_eq!(args.wallet, "alice"); + assert_eq!(args.deadline_seconds, 120); + } + other => panic!("unexpected command: {other:?}"), + } +} + +#[test] +fn list_defaults_to_owner_mode() { + let args = vec!["list".to_string()]; + + let command = parse(&args).expect("parse list"); + + match command { + Command::List(args) => assert_eq!(args.connection, ConnectionMode::Owner), + other => panic!("unexpected command: {other:?}"), + } +} + +#[test] +fn parses_mutating_commands_with_registry_override() { + let registry = "0x2222222222222222222222222222222222222222"; + let set_uri = parse(&[ + "set-uri".to_string(), + "7".to_string(), + "https://agent.example/new.json".to_string(), + "--identity-registry".to_string(), + registry.to_string(), + ]) + .expect("parse set-uri override"); + match set_uri { + Command::SetUri(args) => { + assert_eq!(args.agent_id, "7"); + assert_eq!(args.identity_registry.as_deref(), Some(registry)); + assert_eq!(args.uri, "https://agent.example/new.json"); + } + other => panic!("unexpected command: {other:?}"), + } + + let unset_wallet = parse(&[ + "unset-wallet".to_string(), + "7".to_string(), + "--identity-registry".to_string(), + registry.to_string(), + ]) + .expect("parse unset-wallet override"); + match unset_wallet { + Command::UnsetWallet(args) => { + assert_eq!(args.agent_id, "7"); + assert_eq!(args.identity_registry.as_deref(), Some(registry)); + } + other => panic!("unexpected command: {other:?}"), + } +} + +#[test] +fn selectors_match_registry_abi() { + assert_eq!(selector("register()"), "0x1aa3a008"); + assert_eq!(selector("register(string)"), "0xf2c298be"); + assert_eq!( + selector("setAgentWallet(uint256,address,uint256,bytes)"), + "0x2d1ef5ae" + ); + assert_eq!(selector("getAgentWallet(uint256)"), "0x00339509"); +} + +#[test] +fn host_abi_requires_signature_and_logs_surface() { + let invocation = GuestInvocation { + args: vec!["support".to_string()], + host_api_version: 1, + metadata: HostMetadata { + app_id: "erc8004".to_string(), + app_version: "1.0.0".to_string(), + chain: "base".to_string(), + chain_id: 8453, + debug: false, + host_api_version: 1, + manifest_sha256: "sha256:manifest".to_string(), + now: 1_000, + wallet: "0x3333333333333333333333333333333333333333".to_string(), + wasm_sha256: "sha256:wasm".to_string(), + }, + output_mode: "default".to_string(), + }; + + ensure_host_abi(&invocation).expect("erc8004 uses the current host api"); +} + +#[test] +fn encodes_register_and_set_wallet_calldata() { + let register = register_calldata(Some("https://agent.example/agent.json")); + assert!(register.starts_with("0xf2c298be")); + + let wallet = parse_address("0x1111111111111111111111111111111111111111").expect("wallet"); + let data = set_wallet_calldata( + parse_agent_id("1").expect("agent id"), + wallet, + 42, + "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1b", + ) + .expect("set wallet calldata"); + assert!(data.starts_with("0x2d1ef5ae")); +} + +#[test] +fn hashes_agent_wallet_typed_data() { + let registry = parse_address("0x8004A818BFB912233c491871b3d84c89A494BD9e").expect("registry"); + let wallet = parse_address("0x1111111111111111111111111111111111111111").expect("wallet"); + let owner = parse_address("0x2222222222222222222222222222222222222222").expect("owner"); + + let (domain_separator, struct_hash) = agent_wallet_hashes( + 11155111, + registry, + parse_agent_id("1").unwrap(), + wallet, + owner, + 300, + ); + + assert!(domain_separator.starts_with("0x")); + assert_eq!(domain_separator.len(), 66); + assert!(struct_hash.starts_with("0x")); + assert_eq!(struct_hash.len(), 66); + assert_eq!( + address_hex(wallet), + "0x1111111111111111111111111111111111111111" + ); +} diff --git a/beam-apps/apps/uniswap/README.md b/beam-apps/apps/uniswap/README.md index 0da5a32..9c5e738 100644 --- a/beam-apps/apps/uniswap/README.md +++ b/beam-apps/apps/uniswap/README.md @@ -42,12 +42,17 @@ beam x uniswap swap USDC ETH 100 --chain base --from alice ``` Beam shows the quote, any required approval, and the swap as a single plan. You -approve the final plan before Beam signs or submits anything. +approve the final plan before Beam signs or submits anything. Beam owns final +transaction pricing: the app may pass a route-specific gas-limit estimate, but +Uniswap API fee values are treated only as route metadata and Beam selects the +signed network fee within the approved cap. ## Options - `--min-receive ` sets the minimum acceptable output amount. -- `--max-gas ` rejects the plan if estimated gas exceeds the limit. +- `--max-gas ` rejects the plan if estimated gas limit exceeds the limit. + It is not a max network-fee cap; use Beam's `--max-network-fee-wei ` on + the app command to cap the per-step network fee. - `--slippage-bps ` sets max slippage in basis points. - `--recipient ` sends output to another wallet, ENS name, or EVM address. @@ -84,6 +89,10 @@ beam apps approvals show beam apps approvals approve --execute ``` +Prepared approval JSON includes Beam-owned network-fee caps for each executable +step. Old approvals created before fee caps existed require fresh approval +before execution. + `--no-prompt` fails closed for wallet-affecting swaps unless the command is preparing a continuation or executing an already-approved continuation. diff --git a/beam-apps/apps/uniswap/src/api.rs b/beam-apps/apps/uniswap/src/api.rs index f9e872f..bf41dc2 100644 --- a/beam-apps/apps/uniswap/src/api.rs +++ b/beam-apps/apps/uniswap/src/api.rs @@ -27,7 +27,7 @@ pub struct SwapResponse { pub struct UniswapTransaction { pub data: String, pub gas_limit: Option, - pub gas_price: Option, + pub gas_price_hint: Option, pub to: String, pub value: String, } @@ -196,7 +196,7 @@ fn parse_transaction(value: &Value) -> Option { Some(UniswapTransaction { data: first_string(value, &["data", "calldata", "input"])?, gas_limit: first_string(value, &["gasLimit", "gas"]), - gas_price: first_string(value, &["gasPrice", "maxFeePerGas"]), + gas_price_hint: first_string(value, &["gasPrice", "maxFeePerGas"]), to: first_string(value, &["to", "target"])?, value: first_string(value, &["value"]).unwrap_or_else(|| "0".to_string()), }) diff --git a/beam-apps/apps/uniswap/src/host.rs b/beam-apps/apps/uniswap/src/host.rs index 9419add..895d24a 100644 --- a/beam-apps/apps/uniswap/src/host.rs +++ b/beam-apps/apps/uniswap/src/host.rs @@ -207,8 +207,8 @@ struct StorageGetResponse { } pub fn ensure_host_abi(invocation: &GuestInvocation) -> Result<()> { - if invocation.host_api_version != HOST_API_VERSION - || invocation.metadata.host_api_version != HOST_API_VERSION + if invocation.host_api_version < HOST_API_VERSION + || invocation.metadata.host_api_version < HOST_API_VERSION { return Err(Error::InvalidHostResponse { reason: format!( diff --git a/beam-apps/apps/uniswap/src/lib.rs b/beam-apps/apps/uniswap/src/lib.rs index 0c8747e..a1d894c 100644 --- a/beam-apps/apps/uniswap/src/lib.rs +++ b/beam-apps/apps/uniswap/src/lib.rs @@ -180,16 +180,15 @@ fn run_swap(invocation: GuestInvocation) -> Result { raw: swap_value, }; debug(debug_enabled, "swap:transaction:parsed"); - if swap.transaction.gas_limit.is_none() || swap.transaction.gas_price.is_none() { + if swap.transaction.gas_limit.is_none() { debug(debug_enabled, "swap:gas:request"); - let (gas_limit, gas_price) = host::gas( + let (gas_limit, _) = host::gas( &chain, &swap.transaction.to, &swap.transaction.data, &swap.transaction.value, )?; swap.transaction.gas_limit = swap.transaction.gas_limit.or(gas_limit); - swap.transaction.gas_price = swap.transaction.gas_price.or(Some(gas_price)); debug(debug_enabled, "swap:gas:response"); } debug(debug_enabled, "swap:simulation:start"); diff --git a/beam-apps/apps/uniswap/src/plan.rs b/beam-apps/apps/uniswap/src/plan.rs index b716c47..b9efabb 100644 --- a/beam-apps/apps/uniswap/src/plan.rs +++ b/beam-apps/apps/uniswap/src/plan.rs @@ -158,6 +158,9 @@ fn swap_metadata(input: &SwapPlanInput, transaction: &UniswapTransaction) -> Val if let Some(gas_fee) = raw_string(&input.swap.raw, "gasFee") { metadata["gas_fee"] = json!(gas_fee); } + if let Some(gas_price_hint) = &transaction.gas_price_hint { + metadata["uniswap_gas_price_hint"] = json!(gas_price_hint); + } metadata } @@ -207,7 +210,6 @@ fn transaction_json(transaction: &UniswapTransaction) -> Value { json!({ "data": transaction.data, "gas_limit": transaction.gas_limit, - "gas_price": transaction.gas_price, "to": transaction.to, "value": transaction.value, }) diff --git a/beam-apps/apps/uniswap/src/tests.rs b/beam-apps/apps/uniswap/src/tests.rs index 47d6b7f..92f57e6 100644 --- a/beam-apps/apps/uniswap/src/tests.rs +++ b/beam-apps/apps/uniswap/src/tests.rs @@ -220,6 +220,15 @@ fn builds_approval_and_swap_action_plan() { Some("swap-request-1") ); assert_eq!(plan.steps[1].metadata["gas_fee"].as_str(), Some("123")); + assert_eq!( + plan.steps[1].metadata["uniswap_gas_price_hint"].as_str(), + Some("1") + ); + assert_eq!( + plan.steps[1].metadata["transaction"]["gas_limit"].as_str(), + Some("100000") + ); + assert_eq!(plan.steps[1].metadata["transaction"].get("gas_price"), None); assert!( plan.bindings .iter() @@ -258,7 +267,7 @@ fn transaction(data: &str) -> UniswapTransaction { UniswapTransaction { data: data.to_string(), gas_limit: Some("100000".to_string()), - gas_price: Some("1".to_string()), + gas_price_hint: Some("1".to_string()), to: "0x2222222222222222222222222222222222222222".to_string(), value: "0".to_string(), } diff --git a/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/icon.svg b/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/icon.svg new file mode 100644 index 0000000..91a16e6 --- /dev/null +++ b/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/manifest.json b/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/manifest.json new file mode 100644 index 0000000..0b1ad8a --- /dev/null +++ b/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/manifest.json @@ -0,0 +1,464 @@ +{ + "format_version": 1, + "id": "erc8004", + "display_name": "ERC-8004", + "version": "1.0.0", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "min_beam_version": "0.2.4", + "wasm": { + "sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "entrypoint": "beam_app_main" + }, + "catalog": { + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + } + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry
[--reputation-registry
]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
[--reputation-registry
]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + } + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + } + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + } + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + } + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + } + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + } + ], + "permissions": { + "http": [ + { + "url": "https://*" + } + ], + "chains": [ + { + "chain": "*", + "operations": [ + "read", + "simulate" + ] + } + ], + "wallet": { + "read_balances": false, + "propose_transactions": true, + "erc20_approval": false, + "sign_typed_data": true + }, + "storage": { + "app_local": true + }, + "privacy": [] + }, + "host_api": { + "privacy_reserved": true + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:55f29f9deb74b97a05806a3a833a0797fe7e54af7de7637c40732047e1bd49ff" + } +} diff --git a/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/manifest.json.sig b/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/manifest.json.sig new file mode 100644 index 0000000..33f51cd --- /dev/null +++ b/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/manifest.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:6ee2a1305f9f220a7270739de96db804fb63bc62d3bab2b8987e2731a978ea61" +} diff --git a/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/module.wasm b/beam-apps/fixtures/broad-wildcard/apps/erc8004/1.0.0/module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6e620ea47b1b5d6fdc2f878ec1901c9fc2117e41 GIT binary patch literal 440196 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
    &%GSPZ%9pQ~alW$l^jwFg~HnUBWG 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%0D>O#q)?bkL0si>ybRx z+Hy0Eye2W%KLR?3uYfkd) zdVOuF6?wu1iN1$1gpxeog;XO~yMA%>=hXXqy!WgT*~W0@WYu&=lM7kz6tkX94Sqox z%;qP#EXMN^kqAT?Zh%{{p~t*-vJFS=vSl-y>1G1(R$IB&vF>Q{5J8&2tI$KLKZJnS z&8CmQ!`4|Ja~-q{awtjaMHhEE{Dv0>uvYovTj4V=}PgycsaN3 zp>~v#MgOrKY0QS^=F<1*bZ5=QTF&E(KgX6eYm%!ew8Uej50D^uS4dRd8uWI61w?L= z@$~9=6JSPl`WCE;s7AQuI87Mb1TP`JvlJ%Li44}Mgh8^WxX(mSMd>JrDjX{U3#s>q z)Q5D%48JTe3sqj5aBq)2&oD(FRTmDv=Z?{*KKRJF)}hhDPkr{pL&-tapHDpE0xFY) z0aa=@wu5+ZN=WfaDZ6c5dQErY`A0&k;W~yzyVFql`8w%J;NZdWa)$Wv-jJ*we<<|$ zevE-$^@qx1Jtjs$bVO9z1sN3S4ZG{GpCZ6*Pd?Fs4(|BQ=`I+lS~Nj)oAbbS^a<_i?fiQco9&)DF~U`S%Sc^qE>EJ>xA5sPE2Z{<|bvgh(6FTFATK0h^wioo2b(yMXHA;=5Nw`?k?RP}YNEeHc z!iW{o48vHst zkXAdQq4m-8f+tzNJ#hjCeADq@Cs3(L(r^cx2Si17p=2Hr#yNzlfVZd6 zatNcqgzJC^txZzgkp0)4U_hQOoCb)52Vo1e6gY#eD)9vjKE&mV@@qBTmE|GFYPVRv zDqks9j}nyAm9G|ySl3uR=(!7_1c_n{GpZ1Frfb}ZKoUGE1GmMlPy(@h=fF)h+NfvKU904ZW9 zaDmj)HCSwsQSTH+;tmv11O$@jC7c!UhI)cb=osjO*e{3%v}aX<%Et{}Hg@jl47O%m zo#_TkwrNjZP0)W&guZZ)D7R2g*k={{h{e_wPFuy^T19!ogner)Ygoo&!-dUOu{1X} zGc6pMOXcfG^Dp4ta1vjO@bXtkgureubWm6b& z!wQ_h2$m<|ybE=i2o_tCgn~qR)GoFi5$Pg2f-+JKRz*eG+7muO_|O0dNVXqrDX^qC zt|aX9AcTNT&w=+KkkQig66|m@plUZT8Vr+5drftBcXBdgoDzB_a!U9P!(G8P5IVdR zwVsB7%W4ZjH8sR|eAdHuFg4x0B<6mkw8@Q}h!Yf2&RV9Nv|Oy}l|rzWRgtR4Yc;7n zUaR62g~*`hF1;$HT5Iz)eH5j3>Nd-X3u&Uc717WdC;atpJf2tl@M}MtqVxw2S}?K_ra^nfppbZhBWV?#z$5nq}e;| zZM>S`P5@UEz#B>cM}PpXCV)363vi(Ce-hxh{L>2H4J!tCtycy(Ts0hcHDh{t!CtS% zMp=hf(@#cimvT`X$8EkMYV&G!0~5gModLXo3~+|wGQj@?!$EQWlK{8H@IL@JK2oKn z{R$Y4jafo*p2u_&z$@eSRr~;OMvCw~S2-9CvGY{{j%8y4IK4A~d&mF>)etcpVhvhi z815lsICv8*0uxCAYhej+=z-)x%50d%mZYf5kQDn^USma4)D@8wT&qhM?kSTLGr);` z5*aaxq_7R*m4S{=?WFw^!lP{Ou^SrN1Q0yGw@@RBfyB91+nyuoO%8~%2AN` zg+DVtLCh9tJSkGk<0ts~1mF6&sksJNa7-Ck0x$r?W>j?p(+jW*vl*u-YZ)M6c7$*c z1yQj+QCmD zRljo1SFf{dk1A@tY|b(x1oX%cY8iu{BtHSLZrH)h|B3QTWm+(Q$_CT=E}suJrGOcN z2!lQ`*$7nHBc^tx{3D8*EMv?%P-{WvfyaO)I3 z1(m`TCZ<^}D12&0-GfJCamI0OgAQqqkMJn+rVUEyTKll zR#p61h?EB~36u5}4}*AaD}5d>kpWng%3b$mWlf?ZO5r{OjI3#3lm=iStEY*aKqMza zt9Y1@gRsjn-J97E=sW{fM~UTXTVnFDVdo0k5dZ@SMzFhfX0jHnVH`n6{12uj*a7TB zXIyFu(;}K_G@yDUo59`%Eu?sO5Pe#%fHR&aJ{$zr0kY^COXKlCaUAtYW;;4JSS&|o zGV)@VtYrA!2EB%E6?Pg=L5ayggSeN29{9$FM;}RPjIXfRY3)oyiK>NXqLEFmo)(L# zAv8;}mXyU)OrS2K4Kz&yLe+Gf2z|n!guSLN5E%_ZEks=)R)m_Tue#v^PRHW1-h0DF z%O-+>1p*~F2>@L-2dtwmnbZ_Jn314?aNa6*BPo&ujd05{_LQTQz1noHNHMMfu=i$j z`~RA~nwhC_j{#Y!b44R{DnhVP$KwGL^>7(qC9D-K)h^6ZE#WIP74~qY#Xpzu^)4KE z(uK;Ni%X!xdv$9p@DK+b5eTl)Uaekr-repdGv}*=+p;LZ8mVWcF5>X*(C$IoL$OF zYn2Tp01ps_CU{^qQUQr5$ODt?xC3d*!xVk-KtA-DII3=-fNao`4VT7HY$uUI-qCe( zC0Jb@VR2P4%d5TF>Us%YwbHV(Mj~^Fhdl=8uZZSXW~X7MSnRB1r(rf5d=~_Zy=bR_ zWrplD@Js0oy$a$B&E6nnvt`$sz*?)p2N@CQKJpi79K)3W0ATM76YhBITuu`-!0#yN zu^hX@iVC}rlv~V5p4Y9$Y8=PoO9aOWRGiFg4&8C*4H<)ZG6TDoZw4mR!9su@#cT@mAc)wR48+VljLwrKn4C)h9k|w#4})k|#_240 zbA}lcWhCn{#ne<+CW`B;^wCtI2M-&xrfQ+4TC`oE#tV>Gsi`hoi>r&)VsIOLb!HPL z<1Sf?5fZJ%u65KkEUm=|ySllH)?#F0)?${&WG!YnhzUg{W@~YEW-VqpMQgE?jaiGU zleM@8)oh`e-bz|$6Umn~)7PzHWzF>Lm6myB&Ga%WeYLEaK2I8IQ@y9yrr{?nv#Mb; zg#;tv|fp@EM#`A)NMOF&aFw)vkPPu$ivHeKu*brJZ_2R{h!_ z)ip^QUk(2h@v4ykA=aNmks6M$6z^7~_EJV+m=3%fhRnN@(%hYgksAzFAp{2iwK{!e zM9qO`X5+$oDkR2O>^J&|k3y&>bQu#x3GPnJ!x3}^W8h&p2T+}QqO&wekTSbMbv+_f zLO(qUfeC!oBEAZ;7OKgP>cEBo zBPhyI>m2JnI^`k_!IikkI(%Ik0-JGEM4l$BPbku#ap6v=jUZoyQP4@jtW)-EB;*-T z!q$*1Vqort*;X-*_>KsWtj9akXTUIdB0xO{R@9?DA)yG>*DLBtpMLBU5{SazK8YGgsV*svZA*Fwhl5tVWWq)g6K>sc`K9>GX<({3LP{e`76-&*ix~K@>4A)p9d9O9QM&Sn}7+cg(6mgn($&3%dniRtAXf! zkP1*WvVKTIrLL1}Hynpe)f^!zB35${j@=g3pqHZeguQSVW+0RI1mk6HQ9WSKCPSoH zM_5_-M-CL?%wjhsF^fKx5WOc*1-fn-L>Ej!k#D+1O_%Ylz-sTnpa)DA9V;|;k`INc zQqj`_L9tS^_O&rl!XPH@>`nM$q&F%smqiC zA{@+GT?vfLJf^o9w8P#$XsEVwO)zHi%pJc3tluT5f@YTXnEyc14l+Dzj>WoS-3!jQtNoHyy z4W<;BsVhiPnrgrMA=9nw^%5-?^u|ru{Y8wp9pBv6u?(^FK%F~1W?rHuMjm7&VKPJlz8k3{ZKk`7jc-VJ))oB+aG2M;G3++Qh;7!QM^pw>JjABMW6qb6@3Ik0`?Lht9)YY*e z0r+j1p9DO(>APFn6c8ufl}T|XABh_11o=qV3!Cv#rfp8dnS3N%B0NIQx(JsfM0NF3G)3IF+W0bK0+ZIG)lku{=O^&uU>~NAR88hVmwSA7a z+2_c@4Ky+DagycI+BT0Zj%}dWhG_#OX9&|4$4*Cqt3)YzLo^^yh)VRs6!An19eEg# zO>mZ>Z0&PWK9uR3z)EI^6ZTF92%da67zB9&GWnPgkP#pt^8{pakg)_Z5aT}yWH_i; zF%#+vfNX7#|05vda~^x1XB$lea)1Dw>+n4N*irzTovrX$DPc3&NFXsuzC9JgnFj)k z7!3%PkIXWh{|K3}7XOoQwngTO;0y(Uh2O&;!5Ot7kxjQN#u8fXew!|opAPUphcPlwl61Igh*WUbV| zcl+w8w+!52cATiTT12P5NIGZ)|7Kn^7bt=9x+Vza!oN z5Har3urOScc!QC%8MP-zxdkft4tdc}o;`SFS2%6Ngs{o_%VG`RP!wh$({v#P4SPCJ zY!_&cAgjwVx0lEVL4fsQ)5$OjudGkV2+o1VMBETwnE*-`i$bMM)D)eEw=yHD*uqt` zCEIcc5CZ56Bie;9>%au&cSt*7IczM_k;6)maw=Dlav}^D-5j78B(;^v-`7?sl2ZPX zAjQg%90oOEd4d!mbBY!4{;!cjF-QyHNevwe5F0)~G454?p`aPSy(z^Ut3Q;l`N%vZv;8zXsvyz&s6a36l6A2n7VZ%3; zR00Aq@wUno4dV~|WyMdTyJeV5`hfcy|j(*4vZ7AQ-y)uuYqJp~~d51`TDE30B zD&1T5L#fDP3=7>_+b2|%vkYh}%=zkdmgjR*)-SG%4;v=BOi9?LU{9cLtV|z!mM!-x zG3C__I19_H>LzQ1QrOJmWG}i`tG&$EOPB$94kX(M##h#pubh6BQ&P4}mav}5-^a*S z%zaj|vc>bXRjh0sy>Im`j%-Q2VihZY4|Lixwi_MGTS&TKXN`hR00P^k+1k3&5;kphRU(cvPnGT{M3 z6Bf1;eq_KTXEms6vAp3X2KP3$4=G3~z#$G2G8Q?-$^U^gxWGy;u**&H4s|$BH&Z}v zRtdyl4AH>6Npu2_3^kE!H>w^EJ9`2Y1N#oGD;{OQv$mZ4^=w5+O?AK&g@kuI70?s2`4R58qTR?JeZp)#Z8YB zHQ6DI;)BLP$EKk7?zpN={33|w$P!CUD$$IBhQW!$pm>aoq)ZHfMnhRaIFT1|Fi9c? z(R6?#hNz$~piD48PJ%k`qDD?Nok2uUMHa|w3f@_Cz`?=JNLHxnn^)A~2j!9x`1`b~raiKw<2n>43L`b!DUqqK{!P zt4^+m6y~!{&4&pf)t*}M<8a_UJshOtNC?w3=&lOREI?YyhhCHU03Lft6V9+xG++z^ zW|nD|a6qh?%AjUeP>;wBLBAQkZ?67m$VR2J|ClwdK>40=)3UvZk zRL~v=4K(K(%b{TfXv{ubynm<04nSvgxh6@LlEG+D&Mk)JM8h5vvAi5w-YcBu)|6Lb1YSW2v%SAeVlYs5*-U| z5S)gh_l`sL0%(}?5S~7(B}6JeO(cHhrd3o(!LIBBdSH2gV`J2f&MUwr0fY|N7H}#W z?zI+Pj(+Ae1h4FwE{ra=&!k&&0d`p0flb7~I||QmI3=WM4V{++jfXe@y7*ig09z3f zh>^#>{DBbP2_IPkIWp01DORK~S42PqCkS{@*Xj~v%IO)HMNBmVHtnG_73{zuyh?|L z)Beb&0qPfQ$AqaAgV}TEK{F1>k`5B4H-Gip-T~hulzAY;qx^ zTI7^?Y|NO9pH8mt(jn^RV^@^kj8$bzkU>nmV}k%gDsY?i%9gcsw*@0v8iwZ#ibS5> zGU*^NB{>V=n@b=q)ywLpONww}pu$eth(Ma`0r=eAXs8emG*n0j8Up{sBMsr019Itu!3wnb zItV-HLl)U3pFxbBQ;V5G_Z9Gv!b(=*^w|JC+D4NSQaj^p1PDv2TrmOB42_+IA|h-! z#?>+jYD4VaP}U&nx|3Csy_htDlHj(MZK}>eOc)MfhX(B+;4FEnq`(w`qs%A*$I(#^ zM%XdmU;xU4CBcafYX&g`D}yBrriCO%y8Vc@OcDEdh3jago#{wTa0d=z0!lk#@QfD# zY7@<8s~WqA#>HaN$d8EfS+Waos}jDKwl=H0AfP1dNnr^@I|P zb`x`exg>cHt}Wy~;b3MJuuVz~0^MmNG6;Ah27$gu27|yheDjY{y0*5q^+{M?kUOSV{V3SuRwVg-+CPFf$d7t}*7rp3LVlVVH0=rf&wY z^V2t6xP3ES*g;33;}r*(h_4{#o;yo0F1m%BwQQO#>yEh|cT~FKI2n^~e<^(XO+-j2 zh53*zHN26iPSYw*Epx?y-?PXIz_w#YEzoWtGK>HdBVABv5)H!UX;dpDdg}~&tHj(= zW*4Hp64wmy$G}E}Q#43}3CV?a8{&!7FcA@rbyvfihwVOY>(!N_p|#`{NK+viG7oBk zJWOB0Kxe?a!h@oacfr4WrICdiPtrnqlHL$W)BtS|w5wqGvgX{dFmc@wWG0slcu$PW>4-vX49WF?+7-S591|xGsQM8DL zX-H)7B8G-~KtQH(V_&et3*41Z3sRWRAbqDJp7SwPoKYI3O^iKRF$w;tzcQN!z#NN; zf!H0LP!WLe#D2(tuVN|0#;5>5Cv*yDq>&WIU;{Tys!3EBlP@Oqlw9w{t=~ZgKKW_V zF>2z`-Yx_og$3}P{s8zc)PQ(pFtHQ_diYRF*&|<(+P>GZlgr}5PzfzNbKj*sH-p+-w&=>?R zol}vFXeT%f74JAjB_7&ZpmTVy?tZZ;m?fM1lI_h z5mAwycS7Eu;KWdr2qLS2t}_IiK8n$Hw2j+MiE7&kJS|pQqvBDg9F3kS;KVLrHM7Ob zJ0cs%2^$<~BiNDWN}(|w#P0yiq>f_^5Xs}&CsIS{yi+c#U_9Wu+}B-+F_Aa7=&Or2 z9Jq-D{M(&Rco;M) zR+U(biq(SB_&AU_9tH`81c?dkggp6cMi~-P;&p2<@%Ext8JY!I;wJf-LGQ0@(nrjj zwD@YVNq??VIMOXu76^d#>P+j^PJjRjh8oV(aa@MO2J~OAO!^4Hbq6Xsc1*WA;sXvz}lO(0os5;QaHvWkQ`#&5muBs zf-+JKRz+3jy&H6be9u7Xz^Jo5TM7KY`Ra(mi~@Eff-uNB5@Z!f6}?U8vdI)WLkZ#Ks~^!k!%a{OmB?x zf+CUl$8zI=6;usM33Lf=j2cIrpDk?th$aTA={jOg2)p>koN~gImGBx;1Hh>ikIYw+ zK+i-)`a~QM2*IOxBdQ2f1i;Zj8LoH}F~0&v+oa6mBK^wSsRDCEgP-S9SD z&V_d$7TX?q9O&b{FhvAj=u()&N=8`)%Iej`fH?~6T0Znqa5GXl zOrM-fNx6_v#R%QfU2cdTt&2K&WMWh0jq-G>J=0&%0PH5bn695zpI!)`Y4W?;zsCZgaQPe!G@hEq@%(PAqA`Yq&Gp+!_(2S87buYmtN_ zY}iAv!>TQ##KKZ!FaS2gQVAZ)3_E<{E?xf3-q_{e7^8IgH@o@`*0#R{Hrs*xImD#h z{}0>wbAY`{JEZb9DNB{E6Wx?9;vwpg7(tytyuyI(AX7viLGNfaaI_-?P+Bvt5+0** zP=TA62&N;NZXd#K2Q@Y@3%rzQ$`|RG<-foyB6P?=5*uYy;mHaD9Z8vkorPpJx}}g! zkP_mXABW3habp6V$gQG~hUq1cnF((YUBycf=^khWJ~Jd+KeYk%4spw@321tV+yO;N zjfECeP-@YY0VIQQ_+XMw$-yCbDt4GFyZey3#k5Wq-IR4s(AP-a6!EBnZo+Dh5BTJ6 z!Vpdd8{2Nm`YK97H|Yie%WgXTSvNt5No=NHM~y4K6~tYOAWAsX9oJ&ud?O7;6$^#{ z`Je-lph}SB-97h~fPm9R$1I|5ERj~D0G}q>#Z=K8^HoPWOioP9rWj>ZG-JB}xnkcQQAMO^q&lSB$V&4>03j)xG@CR` zcer`r+dcd`))A+66!=efpxr12R?HMRlE^dX!1RSK_?i+Y^g13`A4C4q+)CagUi1*7$Sm%QA zJI2t-`OsKmj-46S!3O2Xix9EtKX?cw@LB9X+-1w_KL#Q7-%0Afs@#Pm^`9^jA5K#L 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 bv89Env6-cjiKf@|g$=Ay+b7hp{#y+IZ$~T+ delta 155 zcmeCUDA9LOVnY!NYtt*CH_Vd*q`x=kv2M>}Wh`99*th+`dd3@!ypD|SybKCV8cZ6F zjBf1*HZlS+6A&|RKd_M{X}8k9FH9_XiMgo^Vxmc@iMjEK1qJb?d6~uKi3NJ)iN(2$ zd$+sfvfkih44VG1npJALc@3+In4z(WfrXicg@L81nSr^Hk&%g|p{5r|f%Nw78rHw7 E0j6m;qW}N^ diff --git a/beam-apps/fixtures/broad-wildcard/apps/uniswap/1.0.2/version.json.sig b/beam-apps/fixtures/broad-wildcard/apps/uniswap/1.0.2/version.json.sig index 250c2e2..d1cb93b 100644 --- a/beam-apps/fixtures/broad-wildcard/apps/uniswap/1.0.2/version.json.sig +++ b/beam-apps/fixtures/broad-wildcard/apps/uniswap/1.0.2/version.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } diff --git a/beam-apps/fixtures/broad-wildcard/catalog/apps.json b/beam-apps/fixtures/broad-wildcard/catalog/apps.json index dbba548..b03a654 100644 --- a/beam-apps/fixtures/broad-wildcard/catalog/apps.json +++ b/beam-apps/fixtures/broad-wildcard/catalog/apps.json @@ -2,6 +2,48 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "install_command": "beam apps install erc8004", + "pinned_install_command": "beam apps install erc8004 --version 1.0.0", + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "version": { + "version": "1.0.0", + "min_beam_version": "0.2.4" + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, { "id": "uniswap", "display_name": "Uniswap", @@ -104,6 +146,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } } diff --git a/beam-apps/fixtures/broad-wildcard/catalog/apps.json.sig b/beam-apps/fixtures/broad-wildcard/catalog/apps.json.sig index 4d6ed71..d6d261d 100644 --- a/beam-apps/fixtures/broad-wildcard/catalog/apps.json.sig +++ b/beam-apps/fixtures/broad-wildcard/catalog/apps.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } diff --git a/beam-apps/fixtures/broad-wildcard/catalog/apps/erc8004.json b/beam-apps/fixtures/broad-wildcard/catalog/apps/erc8004.json new file mode 100644 index 0000000..7356f71 --- /dev/null +++ b/beam-apps/fixtures/broad-wildcard/catalog/apps/erc8004.json @@ -0,0 +1,485 @@ +{ + "format_version": 1, + "generated_at": "2026-05-26T00:00:00Z", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "app": { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "install_commands": { + "latest": "beam apps install erc8004", + "pinned": "beam apps install erc8004 --version 1.0.0", + "dry_run": "beam apps install erc8004 --dry-run" + }, + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "permission_summary": { + "http": [ + "https://*" + ], + "wallet": [ + "propose transactions" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ], + "storage": [ + "app-local" + ], + "privacy": [] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry

    [--reputation-registry
    ]", + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
    [--reputation-registry
    ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
    ]", + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
    ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
    ]", + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
    ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
    ]", + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
    ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
    ]", + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
    ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
    ]", + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
    ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
    ]", + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
    ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + } + ], + "readme_markdown": "# ERC-8004 Beam App\n\nThe ERC-8004 app manages identity-registry agents through Beam's generic app\nhost. It keeps registry defaults and overrides in app space rather than as a\nnative Beam command.\n\n```text\nbeam x erc8004 support\nbeam x erc8004 config show\nbeam x erc8004 config set --identity-registry
    \nbeam x erc8004 register [--uri |--empty-uri] [--identity-registry
    ]\nbeam x erc8004 show [--fetch-uri] [--identity-registry
    ]\nbeam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--identity-registry
    ]\nbeam x erc8004 set-uri [--identity-registry
    ]\nbeam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
    ]\nbeam x erc8004 unset-wallet [--identity-registry
    ]\n```\n\nDefault ERC-8004 identity registry addresses are manifest-scoped. Custom\nregistry addresses come from app-local config or an explicit\n`--identity-registry` flag and are included as invocation-scoped contract rules\nin host calls and action plans.\n\n`list` uses `eth_getLogs` through the Beam host. The host enforces a bounded\nblock range and the app defaults to the active wallet with owner filtering, so\nit does not scan from genesis unless the user passes a broad explicit range.\n\n`set-wallet` resolves the wallet argument through Beam and requests an EIP-712\ntyped-data signature from the host. The app receives only the signature and\ndigest, never raw private keys.\n", + "manifest_summary": { + "format_version": 1, + "min_beam_version": "0.2.4", + "wasm_entrypoint": "beam_app_main" + }, + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4" + } + ], + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" + } +} diff --git a/beam-apps/fixtures/broad-wildcard/catalog/apps/erc8004.json.sig b/beam-apps/fixtures/broad-wildcard/catalog/apps/erc8004.json.sig new file mode 100644 index 0000000..0c9c285 --- /dev/null +++ b/beam-apps/fixtures/broad-wildcard/catalog/apps/erc8004.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" +} diff --git a/beam-apps/fixtures/broad-wildcard/index.json b/beam-apps/fixtures/broad-wildcard/index.json index b3923c1..6ab4c79 100644 --- a/beam-apps/fixtures/broad-wildcard/index.json +++ b/beam-apps/fixtures/broad-wildcard/index.json @@ -2,6 +2,27 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4", + "manifest_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/manifest.json", + "manifest_sha256": "sha256:ddbfd3a3e4c03eb65003a2f44c231d85d22e4a2b9de9173b33894202cb2c3c3a", + "module_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/module.wasm", + "module_sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:baca7450d2f0fac5e7110d6bff85f030295b6acd94f6db994d3f16fca91dc062" + } + } + ] + }, { "id": "uniswap", "name": "Uniswap", @@ -12,13 +33,13 @@ "version": "1.0.2", "min_beam_version": "0.2.1", "manifest_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/manifest.json", - "manifest_sha256": "sha256:b3bee997c062dbf20de57c4176a010b3578bf4a5e7c8a57017733bd5a95e2b73", + "manifest_sha256": "sha256:36c9fc35b9d855622201146244eeb165e97592cbd333296d7e3f1454f37be545", "module_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/module.wasm", - "module_sha256": "sha256:58c5dbc8343f5281392269b72e0193b2c39f6a4b36942df1bea464699a36cdc2", + "module_sha256": "sha256:a5ca0f4124e59390c0c40c64e2792ae04712f5fdb9accf92fdfa76be8a8702d7", "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } } ] @@ -27,6 +48,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } } diff --git a/beam-apps/fixtures/broad-wildcard/index.json.sig b/beam-apps/fixtures/broad-wildcard/index.json.sig index 4193503..30b012f 100644 --- a/beam-apps/fixtures/broad-wildcard/index.json.sig +++ b/beam-apps/fixtures/broad-wildcard/index.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } diff --git a/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/icon.svg b/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/icon.svg new file mode 100644 index 0000000..91a16e6 --- /dev/null +++ b/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/manifest.json b/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/manifest.json new file mode 100644 index 0000000..f69e711 --- /dev/null +++ b/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/manifest.json @@ -0,0 +1,480 @@ +{ + "format_version": 1, + "id": "erc8004", + "display_name": "ERC-8004", + "version": "1.0.0", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "min_beam_version": "0.2.4", + "wasm": { + "sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "entrypoint": "beam_app_main" + }, + "catalog": { + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + } + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry
    [--reputation-registry
    ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
    [--reputation-registry
    ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + } + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
    ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
    ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + } + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
    ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
    ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + } + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
    ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
    ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + } + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
    ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
    ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
    ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
    ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + } + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
    ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
    ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + } + ], + "permissions": { + "http": [ + { + "url": "https://*" + } + ], + "chains": [ + { + "chain": "*", + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ], + "contracts": [ + "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "0x8004A818BFB912233c491871b3d84c89A494BD9e" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ] + } + ], + "wallet": { + "read_balances": false, + "propose_transactions": true, + "erc20_approval": false, + "sign_typed_data": true + }, + "storage": { + "app_local": true + }, + "privacy": [] + }, + "host_api": { + "privacy_reserved": true + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:6ee2a1305f9f220a7270739de96db804fb63bc62d3bab2b8987e2731a978ea61" + } +} diff --git a/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/manifest.json.sig b/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/manifest.json.sig new file mode 100644 index 0000000..33f51cd --- /dev/null +++ b/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/manifest.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:6ee2a1305f9f220a7270739de96db804fb63bc62d3bab2b8987e2731a978ea61" +} diff --git a/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/module.wasm b/beam-apps/fixtures/invalid-digest/apps/erc8004/1.0.0/module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6e620ea47b1b5d6fdc2f878ec1901c9fc2117e41 GIT binary patch literal 440196 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
      &%GSPZ%9pQ~alW$l^jwFg~HnUBWG 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%0D>O#q)?bkL0si>ybRx z+Hy0Eye2W%KLR?3uYfkd) zdVOuF6?wu1iN1$1gpxeog;XO~yMA%>=hXXqy!WgT*~W0@WYu&=lM7kz6tkX94Sqox z%;qP#EXMN^kqAT?Zh%{{p~t*-vJFS=vSl-y>1G1(R$IB&vF>Q{5J8&2tI$KLKZJnS z&8CmQ!`4|Ja~-q{awtjaMHhEE{Dv0>uvYovTj4V=}PgycsaN3 zp>~v#MgOrKY0QS^=F<1*bZ5=QTF&E(KgX6eYm%!ew8Uej50D^uS4dRd8uWI61w?L= z@$~9=6JSPl`WCE;s7AQuI87Mb1TP`JvlJ%Li44}Mgh8^WxX(mSMd>JrDjX{U3#s>q z)Q5D%48JTe3sqj5aBq)2&oD(FRTmDv=Z?{*KKRJF)}hhDPkr{pL&-tapHDpE0xFY) z0aa=@wu5+ZN=WfaDZ6c5dQErY`A0&k;W~yzyVFql`8w%J;NZdWa)$Wv-jJ*we<<|$ zevE-$^@qx1Jtjs$bVO9z1sN3S4ZG{GpCZ6*Pd?Fs4(|BQ=`I+lS~Nj)oAbbS^a<_i?fiQco9&)DF~U`S%Sc^qE>EJ>xA5sPE2Z{<|bvgh(6FTFATK0h^wioo2b(yMXHA;=5Nw`?k?RP}YNEeHc z!iW{o48vHst zkXAdQq4m-8f+tzNJ#hjCeADq@Cs3(L(r^cx2Si17p=2Hr#yNzlfVZd6 zatNcqgzJC^txZzgkp0)4U_hQOoCb)52Vo1e6gY#eD)9vjKE&mV@@qBTmE|GFYPVRv zDqks9j}nyAm9G|ySl3uR=(!7_1c_n{GpZ1Frfb}ZKoUGE1GmMlPy(@h=fF)h+NfvKU904ZW9 zaDmj)HCSwsQSTH+;tmv11O$@jC7c!UhI)cb=osjO*e{3%v}aX<%Et{}Hg@jl47O%m zo#_TkwrNjZP0)W&guZZ)D7R2g*k={{h{e_wPFuy^T19!ogner)Ygoo&!-dUOu{1X} zGc6pMOXcfG^Dp4ta1vjO@bXtkgureubWm6b& z!wQ_h2$m<|ybE=i2o_tCgn~qR)GoFi5$Pg2f-+JKRz*eG+7muO_|O0dNVXqrDX^qC zt|aX9AcTNT&w=+KkkQig66|m@plUZT8Vr+5drftBcXBdgoDzB_a!U9P!(G8P5IVdR zwVsB7%W4ZjH8sR|eAdHuFg4x0B<6mkw8@Q}h!Yf2&RV9Nv|Oy}l|rzWRgtR4Yc;7n zUaR62g~*`hF1;$HT5Iz)eH5j3>Nd-X3u&Uc717WdC;atpJf2tl@M}MtqVxw2S}?K_ra^nfppbZhBWV?#z$5nq}e;| zZM>S`P5@UEz#B>cM}PpXCV)363vi(Ce-hxh{L>2H4J!tCtycy(Ts0hcHDh{t!CtS% zMp=hf(@#cimvT`X$8EkMYV&G!0~5gModLXo3~+|wGQj@?!$EQWlK{8H@IL@JK2oKn z{R$Y4jafo*p2u_&z$@eSRr~;OMvCw~S2-9CvGY{{j%8y4IK4A~d&mF>)etcpVhvhi z815lsICv8*0uxCAYhej+=z-)x%50d%mZYf5kQDn^USma4)D@8wT&qhM?kSTLGr);` z5*aaxq_7R*m4S{=?WFw^!lP{Ou^SrN1Q0yGw@@RBfyB91+nyuoO%8~%2AN` zg+DVtLCh9tJSkGk<0ts~1mF6&sksJNa7-Ck0x$r?W>j?p(+jW*vl*u-YZ)M6c7$*c z1yQj+QCmD zRljo1SFf{dk1A@tY|b(x1oX%cY8iu{BtHSLZrH)h|B3QTWm+(Q$_CT=E}suJrGOcN z2!lQ`*$7nHBc^tx{3D8*EMv?%P-{WvfyaO)I3 z1(m`TCZ<^}D12&0-GfJCamI0OgAQqqkMJn+rVUEyTKll zR#p61h?EB~36u5}4}*AaD}5d>kpWng%3b$mWlf?ZO5r{OjI3#3lm=iStEY*aKqMza zt9Y1@gRsjn-J97E=sW{fM~UTXTVnFDVdo0k5dZ@SMzFhfX0jHnVH`n6{12uj*a7TB zXIyFu(;}K_G@yDUo59`%Eu?sO5Pe#%fHR&aJ{$zr0kY^COXKlCaUAtYW;;4JSS&|o zGV)@VtYrA!2EB%E6?Pg=L5ayggSeN29{9$FM;}RPjIXfRY3)oyiK>NXqLEFmo)(L# zAv8;}mXyU)OrS2K4Kz&yLe+Gf2z|n!guSLN5E%_ZEks=)R)m_Tue#v^PRHW1-h0DF z%O-+>1p*~F2>@L-2dtwmnbZ_Jn314?aNa6*BPo&ujd05{_LQTQz1noHNHMMfu=i$j z`~RA~nwhC_j{#Y!b44R{DnhVP$KwGL^>7(qC9D-K)h^6ZE#WIP74~qY#Xpzu^)4KE z(uK;Ni%X!xdv$9p@DK+b5eTl)Uaekr-repdGv}*=+p;LZ8mVWcF5>X*(C$IoL$OF zYn2Tp01ps_CU{^qQUQr5$ODt?xC3d*!xVk-KtA-DII3=-fNao`4VT7HY$uUI-qCe( zC0Jb@VR2P4%d5TF>Us%YwbHV(Mj~^Fhdl=8uZZSXW~X7MSnRB1r(rf5d=~_Zy=bR_ zWrplD@Js0oy$a$B&E6nnvt`$sz*?)p2N@CQKJpi79K)3W0ATM76YhBITuu`-!0#yN zu^hX@iVC}rlv~V5p4Y9$Y8=PoO9aOWRGiFg4&8C*4H<)ZG6TDoZw4mR!9su@#cT@mAc)wR48+VljLwrKn4C)h9k|w#4})k|#_240 zbA}lcWhCn{#ne<+CW`B;^wCtI2M-&xrfQ+4TC`oE#tV>Gsi`hoi>r&)VsIOLb!HPL z<1Sf?5fZJ%u65KkEUm=|ySllH)?#F0)?${&WG!YnhzUg{W@~YEW-VqpMQgE?jaiGU zleM@8)oh`e-bz|$6Umn~)7PzHWzF>Lm6myB&Ga%WeYLEaK2I8IQ@y9yrr{?nv#Mb; zg#;tv|fp@EM#`A)NMOF&aFw)vkPPu$ivHeKu*brJZ_2R{h!_ z)ip^QUk(2h@v4ykA=aNmks6M$6z^7~_EJV+m=3%fhRnN@(%hYgksAzFAp{2iwK{!e zM9qO`X5+$oDkR2O>^J&|k3y&>bQu#x3GPnJ!x3}^W8h&p2T+}QqO&wekTSbMbv+_f zLO(qUfeC!oBEAZ;7OKgP>cEBo zBPhyI>m2JnI^`k_!IikkI(%Ik0-JGEM4l$BPbku#ap6v=jUZoyQP4@jtW)-EB;*-T z!q$*1Vqort*;X-*_>KsWtj9akXTUIdB0xO{R@9?DA)yG>*DLBtpMLBU5{SazK8YGgsV*svZA*Fwhl5tVWWq)g6K>sc`K9>GX<({3LP{e`76-&*ix~K@>4A)p9d9O9QM&Sn}7+cg(6mgn($&3%dniRtAXf! zkP1*WvVKTIrLL1}Hynpe)f^!zB35${j@=g3pqHZeguQSVW+0RI1mk6HQ9WSKCPSoH zM_5_-M-CL?%wjhsF^fKx5WOc*1-fn-L>Ej!k#D+1O_%Ylz-sTnpa)DA9V;|;k`INc zQqj`_L9tS^_O&rl!XPH@>`nM$q&F%smqiC zA{@+GT?vfLJf^o9w8P#$XsEVwO)zHi%pJc3tluT5f@YTXnEyc14l+Dzj>WoS-3!jQtNoHyy z4W<;BsVhiPnrgrMA=9nw^%5-?^u|ru{Y8wp9pBv6u?(^FK%F~1W?rHuMjm7&VKPJlz8k3{ZKk`7jc-VJ))oB+aG2M;G3++Qh;7!QM^pw>JjABMW6qb6@3Ik0`?Lht9)YY*e z0r+j1p9DO(>APFn6c8ufl}T|XABh_11o=qV3!Cv#rfp8dnS3N%B0NIQx(JsfM0NF3G)3IF+W0bK0+ZIG)lku{=O^&uU>~NAR88hVmwSA7a z+2_c@4Ky+DagycI+BT0Zj%}dWhG_#OX9&|4$4*Cqt3)YzLo^^yh)VRs6!An19eEg# zO>mZ>Z0&PWK9uR3z)EI^6ZTF92%da67zB9&GWnPgkP#pt^8{pakg)_Z5aT}yWH_i; zF%#+vfNX7#|05vda~^x1XB$lea)1Dw>+n4N*irzTovrX$DPc3&NFXsuzC9JgnFj)k z7!3%PkIXWh{|K3}7XOoQwngTO;0y(Uh2O&;!5Ot7kxjQN#u8fXew!|opAPUphcPlwl61Igh*WUbV| zcl+w8w+!52cATiTT12P5NIGZ)|7Kn^7bt=9x+Vza!oN z5Har3urOScc!QC%8MP-zxdkft4tdc}o;`SFS2%6Ngs{o_%VG`RP!wh$({v#P4SPCJ zY!_&cAgjwVx0lEVL4fsQ)5$OjudGkV2+o1VMBETwnE*-`i$bMM)D)eEw=yHD*uqt` zCEIcc5CZ56Bie;9>%au&cSt*7IczM_k;6)maw=Dlav}^D-5j78B(;^v-`7?sl2ZPX zAjQg%90oOEd4d!mbBY!4{;!cjF-QyHNevwe5F0)~G454?p`aPSy(z^Ut3Q;l`N%vZv;8zXsvyz&s6a36l6A2n7VZ%3; zR00Aq@wUno4dV~|WyMdTyJeV5`hfcy|j(*4vZ7AQ-y)uuYqJp~~d51`TDE30B zD&1T5L#fDP3=7>_+b2|%vkYh}%=zkdmgjR*)-SG%4;v=BOi9?LU{9cLtV|z!mM!-x zG3C__I19_H>LzQ1QrOJmWG}i`tG&$EOPB$94kX(M##h#pubh6BQ&P4}mav}5-^a*S z%zaj|vc>bXRjh0sy>Im`j%-Q2VihZY4|Lixwi_MGTS&TKXN`hR00P^k+1k3&5;kphRU(cvPnGT{M3 z6Bf1;eq_KTXEms6vAp3X2KP3$4=G3~z#$G2G8Q?-$^U^gxWGy;u**&H4s|$BH&Z}v zRtdyl4AH>6Npu2_3^kE!H>w^EJ9`2Y1N#oGD;{OQv$mZ4^=w5+O?AK&g@kuI70?s2`4R58qTR?JeZp)#Z8YB zHQ6DI;)BLP$EKk7?zpN={33|w$P!CUD$$IBhQW!$pm>aoq)ZHfMnhRaIFT1|Fi9c? z(R6?#hNz$~piD48PJ%k`qDD?Nok2uUMHa|w3f@_Cz`?=JNLHxnn^)A~2j!9x`1`b~raiKw<2n>43L`b!DUqqK{!P zt4^+m6y~!{&4&pf)t*}M<8a_UJshOtNC?w3=&lOREI?YyhhCHU03Lft6V9+xG++z^ zW|nD|a6qh?%AjUeP>;wBLBAQkZ?67m$VR2J|ClwdK>40=)3UvZk zRL~v=4K(K(%b{TfXv{ubynm<04nSvgxh6@LlEG+D&Mk)JM8h5vvAi5w-YcBu)|6Lb1YSW2v%SAeVlYs5*-U| z5S)gh_l`sL0%(}?5S~7(B}6JeO(cHhrd3o(!LIBBdSH2gV`J2f&MUwr0fY|N7H}#W z?zI+Pj(+Ae1h4FwE{ra=&!k&&0d`p0flb7~I||QmI3=WM4V{++jfXe@y7*ig09z3f zh>^#>{DBbP2_IPkIWp01DORK~S42PqCkS{@*Xj~v%IO)HMNBmVHtnG_73{zuyh?|L z)Beb&0qPfQ$AqaAgV}TEK{F1>k`5B4H-Gip-T~hulzAY;qx^ zTI7^?Y|NO9pH8mt(jn^RV^@^kj8$bzkU>nmV}k%gDsY?i%9gcsw*@0v8iwZ#ibS5> zGU*^NB{>V=n@b=q)ywLpONww}pu$eth(Ma`0r=eAXs8emG*n0j8Up{sBMsr019Itu!3wnb zItV-HLl)U3pFxbBQ;V5G_Z9Gv!b(=*^w|JC+D4NSQaj^p1PDv2TrmOB42_+IA|h-! z#?>+jYD4VaP}U&nx|3Csy_htDlHj(MZK}>eOc)MfhX(B+;4FEnq`(w`qs%A*$I(#^ zM%XdmU;xU4CBcafYX&g`D}yBrriCO%y8Vc@OcDEdh3jago#{wTa0d=z0!lk#@QfD# zY7@<8s~WqA#>HaN$d8EfS+Waos}jDKwl=H0AfP1dNnr^@I|P zb`x`exg>cHt}Wy~;b3MJuuVz~0^MmNG6;Ah27$gu27|yheDjY{y0*5q^+{M?kUOSV{V3SuRwVg-+CPFf$d7t}*7rp3LVlVVH0=rf&wY z^V2t6xP3ES*g;33;}r*(h_4{#o;yo0F1m%BwQQO#>yEh|cT~FKI2n^~e<^(XO+-j2 zh53*zHN26iPSYw*Epx?y-?PXIz_w#YEzoWtGK>HdBVABv5)H!UX;dpDdg}~&tHj(= zW*4Hp64wmy$G}E}Q#43}3CV?a8{&!7FcA@rbyvfihwVOY>(!N_p|#`{NK+viG7oBk zJWOB0Kxe?a!h@oacfr4WrICdiPtrnqlHL$W)BtS|w5wqGvgX{dFmc@wWG0slcu$PW>4-vX49WF?+7-S591|xGsQM8DL zX-H)7B8G-~KtQH(V_&et3*41Z3sRWRAbqDJp7SwPoKYI3O^iKRF$w;tzcQN!z#NN; zf!H0LP!WLe#D2(tuVN|0#;5>5Cv*yDq>&WIU;{Tys!3EBlP@Oqlw9w{t=~ZgKKW_V zF>2z`-Yx_og$3}P{s8zc)PQ(pFtHQ_diYRF*&|<(+P>GZlgr}5PzfzNbKj*sH-p+-w&=>?R zol}vFXeT%f74JAjB_7&ZpmTVy?tZZ;m?fM1lI_h z5mAwycS7Eu;KWdr2qLS2t}_IiK8n$Hw2j+MiE7&kJS|pQqvBDg9F3kS;KVLrHM7Ob zJ0cs%2^$<~BiNDWN}(|w#P0yiq>f_^5Xs}&CsIS{yi+c#U_9Wu+}B-+F_Aa7=&Or2 z9Jq-D{M(&Rco;M) zR+U(biq(SB_&AU_9tH`81c?dkggp6cMi~-P;&p2<@%Ext8JY!I;wJf-LGQ0@(nrjj zwD@YVNq??VIMOXu76^d#>P+j^PJjRjh8oV(aa@MO2J~OAO!^4Hbq6Xsc1*WA;sXvz}lO(0os5;QaHvWkQ`#&5muBs zf-+JKRz+3jy&H6be9u7Xz^Jo5TM7KY`Ra(mi~@Eff-uNB5@Z!f6}?U8vdI)WLkZ#Ks~^!k!%a{OmB?x zf+CUl$8zI=6;usM33Lf=j2cIrpDk?th$aTA={jOg2)p>koN~gImGBx;1Hh>ikIYw+ zK+i-)`a~QM2*IOxBdQ2f1i;Zj8LoH}F~0&v+oa6mBK^wSsRDCEgP-S9SD z&V_d$7TX?q9O&b{FhvAj=u()&N=8`)%Iej`fH?~6T0Znqa5GXl zOrM-fNx6_v#R%QfU2cdTt&2K&WMWh0jq-G>J=0&%0PH5bn695zpI!)`Y4W?;zsCZgaQPe!G@hEq@%(PAqA`Yq&Gp+!_(2S87buYmtN_ zY}iAv!>TQ##KKZ!FaS2gQVAZ)3_E<{E?xf3-q_{e7^8IgH@o@`*0#R{Hrs*xImD#h z{}0>wbAY`{JEZb9DNB{E6Wx?9;vwpg7(tytyuyI(AX7viLGNfaaI_-?P+Bvt5+0** zP=TA62&N;NZXd#K2Q@Y@3%rzQ$`|RG<-foyB6P?=5*uYy;mHaD9Z8vkorPpJx}}g! zkP_mXABW3habp6V$gQG~hUq1cnF((YUBycf=^khWJ~Jd+KeYk%4spw@321tV+yO;N zjfECeP-@YY0VIQQ_+XMw$-yCbDt4GFyZey3#k5Wq-IR4s(AP-a6!EBnZo+Dh5BTJ6 z!Vpdd8{2Nm`YK97H|Yie%WgXTSvNt5No=NHM~y4K6~tYOAWAsX9oJ&ud?O7;6$^#{ z`Je-lph}SB-97h~fPm9R$1I|5ERj~D0G}q>#Z=K8^HoPWOioP9rWj>ZG-JB}xnkcQQAMO^q&lSB$V&4>03j)xG@CR` zcer`r+dcd`))A+66!=efpxr12R?HMRlE^dX!1RSK_?i+Y^g13`A4C4q+)CagUi1*7$Sm%QA zJI2t-`OsKmj-46S!3O2Xix9EtKX?cw@LB9X+-1w_KL#Q7-%0Afs@#Pm^`9^jA5K#L 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 bv89Env6-cjiKf@|g$=Ay+b7hp{#y+IZ$~T+ delta 155 zcmeCUDA9LOVnY!NYtt*CH_Vd*q`x=kv2M>}Wh`99*th+`dd3@!ypD|SybKCV8cZ6F zjBf1*HZlS+6A&|RKd_M{X}8k9FH9_XiMgo^Vxmc@iMjEK1qJb?d6~uKi3NJ)iN(2$ zd$+sfvfkih44VG1npJALc@3+In4z(WfrXicg@L81nSr^Hk&%g|p{5r|f%Nw78rHw7 E0j6m;qW}N^ diff --git a/beam-apps/fixtures/invalid-digest/apps/uniswap/1.0.2/version.json.sig b/beam-apps/fixtures/invalid-digest/apps/uniswap/1.0.2/version.json.sig index 250c2e2..d1cb93b 100644 --- a/beam-apps/fixtures/invalid-digest/apps/uniswap/1.0.2/version.json.sig +++ b/beam-apps/fixtures/invalid-digest/apps/uniswap/1.0.2/version.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } diff --git a/beam-apps/fixtures/invalid-digest/catalog/apps.json b/beam-apps/fixtures/invalid-digest/catalog/apps.json index dbba548..b03a654 100644 --- a/beam-apps/fixtures/invalid-digest/catalog/apps.json +++ b/beam-apps/fixtures/invalid-digest/catalog/apps.json @@ -2,6 +2,48 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "install_command": "beam apps install erc8004", + "pinned_install_command": "beam apps install erc8004 --version 1.0.0", + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "version": { + "version": "1.0.0", + "min_beam_version": "0.2.4" + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, { "id": "uniswap", "display_name": "Uniswap", @@ -104,6 +146,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } } diff --git a/beam-apps/fixtures/invalid-digest/catalog/apps.json.sig b/beam-apps/fixtures/invalid-digest/catalog/apps.json.sig index 4d6ed71..d6d261d 100644 --- a/beam-apps/fixtures/invalid-digest/catalog/apps.json.sig +++ b/beam-apps/fixtures/invalid-digest/catalog/apps.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } diff --git a/beam-apps/fixtures/invalid-digest/catalog/apps/erc8004.json b/beam-apps/fixtures/invalid-digest/catalog/apps/erc8004.json new file mode 100644 index 0000000..7356f71 --- /dev/null +++ b/beam-apps/fixtures/invalid-digest/catalog/apps/erc8004.json @@ -0,0 +1,485 @@ +{ + "format_version": 1, + "generated_at": "2026-05-26T00:00:00Z", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "app": { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "install_commands": { + "latest": "beam apps install erc8004", + "pinned": "beam apps install erc8004 --version 1.0.0", + "dry_run": "beam apps install erc8004 --dry-run" + }, + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "permission_summary": { + "http": [ + "https://*" + ], + "wallet": [ + "propose transactions" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ], + "storage": [ + "app-local" + ], + "privacy": [] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry

      [--reputation-registry
      ]", + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
      [--reputation-registry
      ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
      ]", + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
      ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
      ]", + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
      ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
      ]", + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
      ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
      ]", + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
      ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
      ]", + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
      ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
      ]", + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
      ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + } + ], + "readme_markdown": "# ERC-8004 Beam App\n\nThe ERC-8004 app manages identity-registry agents through Beam's generic app\nhost. It keeps registry defaults and overrides in app space rather than as a\nnative Beam command.\n\n```text\nbeam x erc8004 support\nbeam x erc8004 config show\nbeam x erc8004 config set --identity-registry
      \nbeam x erc8004 register [--uri |--empty-uri] [--identity-registry
      ]\nbeam x erc8004 show [--fetch-uri] [--identity-registry
      ]\nbeam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--identity-registry
      ]\nbeam x erc8004 set-uri [--identity-registry
      ]\nbeam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
      ]\nbeam x erc8004 unset-wallet [--identity-registry
      ]\n```\n\nDefault ERC-8004 identity registry addresses are manifest-scoped. Custom\nregistry addresses come from app-local config or an explicit\n`--identity-registry` flag and are included as invocation-scoped contract rules\nin host calls and action plans.\n\n`list` uses `eth_getLogs` through the Beam host. The host enforces a bounded\nblock range and the app defaults to the active wallet with owner filtering, so\nit does not scan from genesis unless the user passes a broad explicit range.\n\n`set-wallet` resolves the wallet argument through Beam and requests an EIP-712\ntyped-data signature from the host. The app receives only the signature and\ndigest, never raw private keys.\n", + "manifest_summary": { + "format_version": 1, + "min_beam_version": "0.2.4", + "wasm_entrypoint": "beam_app_main" + }, + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4" + } + ], + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" + } +} diff --git a/beam-apps/fixtures/invalid-digest/catalog/apps/erc8004.json.sig b/beam-apps/fixtures/invalid-digest/catalog/apps/erc8004.json.sig new file mode 100644 index 0000000..0c9c285 --- /dev/null +++ b/beam-apps/fixtures/invalid-digest/catalog/apps/erc8004.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" +} diff --git a/beam-apps/fixtures/invalid-digest/index.json b/beam-apps/fixtures/invalid-digest/index.json index ff3fde0..1f9f1c0 100644 --- a/beam-apps/fixtures/invalid-digest/index.json +++ b/beam-apps/fixtures/invalid-digest/index.json @@ -2,6 +2,27 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4", + "manifest_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/manifest.json", + "manifest_sha256": "sha256:ddbfd3a3e4c03eb65003a2f44c231d85d22e4a2b9de9173b33894202cb2c3c3a", + "module_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/module.wasm", + "module_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:baca7450d2f0fac5e7110d6bff85f030295b6acd94f6db994d3f16fca91dc062" + } + } + ] + }, { "id": "uniswap", "name": "Uniswap", @@ -12,13 +33,13 @@ "version": "1.0.2", "min_beam_version": "0.2.1", "manifest_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/manifest.json", - "manifest_sha256": "sha256:b3bee997c062dbf20de57c4176a010b3578bf4a5e7c8a57017733bd5a95e2b73", + "manifest_sha256": "sha256:36c9fc35b9d855622201146244eeb165e97592cbd333296d7e3f1454f37be545", "module_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/module.wasm", - "module_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "module_sha256": "sha256:a5ca0f4124e59390c0c40c64e2792ae04712f5fdb9accf92fdfa76be8a8702d7", "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } } ] @@ -27,6 +48,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:1d37a1f8f1729015d06f67214042aed05298a44e21bc07c63c266cb19e3f421d" + "value": "sha256:325441bbd9c9183309488eee5df775327e36015e356ab793efb9202ebcd1a595" } } diff --git a/beam-apps/fixtures/invalid-digest/index.json.sig b/beam-apps/fixtures/invalid-digest/index.json.sig index 4193503..30b012f 100644 --- a/beam-apps/fixtures/invalid-digest/index.json.sig +++ b/beam-apps/fixtures/invalid-digest/index.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } diff --git a/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/icon.svg b/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/icon.svg new file mode 100644 index 0000000..91a16e6 --- /dev/null +++ b/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/manifest.json b/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/manifest.json new file mode 100644 index 0000000..a88ae5a --- /dev/null +++ b/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/manifest.json @@ -0,0 +1,466 @@ +{ + "format_version": 1, + "id": "erc8004", + "display_name": "ERC-8004", + "version": "1.0.0", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "min_beam_version": "0.2.4", + "wasm": { + "sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "entrypoint": "beam_app_main" + }, + "catalog": { + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + } + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry
      [--reputation-registry
      ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
      [--reputation-registry
      ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + } + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
      ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
      ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + } + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
      ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
      ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + } + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
      ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
      ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + } + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
      ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
      ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
      ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
      ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + } + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
      ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
      ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + } + ], + "permissions": { + "http": [ + { + "url": "https://*" + } + ], + "chains": [ + { + "chain": "base", + "operations": [ + "read" + ], + "selectors": [ + "not-a-selector" + ] + } + ], + "wallet": { + "read_balances": false, + "propose_transactions": true, + "erc20_approval": false, + "sign_typed_data": true + }, + "storage": { + "app_local": true + }, + "privacy": [] + }, + "host_api": { + "privacy_reserved": true + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a0b37dca027eccfcfbbe37d7210bf657bd1e2e9918ab8e1d1a722d09facaae46" + } +} diff --git a/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/manifest.json.sig b/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/manifest.json.sig new file mode 100644 index 0000000..33f51cd --- /dev/null +++ b/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/manifest.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:6ee2a1305f9f220a7270739de96db804fb63bc62d3bab2b8987e2731a978ea61" +} diff --git a/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/module.wasm b/beam-apps/fixtures/malformed-permissions/apps/erc8004/1.0.0/module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6e620ea47b1b5d6fdc2f878ec1901c9fc2117e41 GIT binary patch literal 440196 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
        &%GSPZ%9pQ~alW$l^jwFg~HnUBWG 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%0D>O#q)?bkL0si>ybRx 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%0Afs@#Pm^`9^jA5K#L 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 bv89Env6-cjiKf@|g$=Ay+b7hp{#y+IZ$~T+ delta 155 zcmeCUDA9LOVnY!NYtt*CH_Vd*q`x=kv2M>}Wh`99*th+`dd3@!ypD|SybKCV8cZ6F zjBf1*HZlS+6A&|RKd_M{X}8k9FH9_XiMgo^Vxmc@iMjEK1qJb?d6~uKi3NJ)iN(2$ zd$+sfvfkih44VG1npJALc@3+In4z(WfrXicg@L81nSr^Hk&%g|p{5r|f%Nw78rHw7 E0j6m;qW}N^ diff --git a/beam-apps/fixtures/malformed-permissions/apps/uniswap/1.0.2/version.json.sig b/beam-apps/fixtures/malformed-permissions/apps/uniswap/1.0.2/version.json.sig index 250c2e2..d1cb93b 100644 --- a/beam-apps/fixtures/malformed-permissions/apps/uniswap/1.0.2/version.json.sig +++ b/beam-apps/fixtures/malformed-permissions/apps/uniswap/1.0.2/version.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } diff --git a/beam-apps/fixtures/malformed-permissions/catalog/apps.json b/beam-apps/fixtures/malformed-permissions/catalog/apps.json index dbba548..b03a654 100644 --- a/beam-apps/fixtures/malformed-permissions/catalog/apps.json +++ b/beam-apps/fixtures/malformed-permissions/catalog/apps.json @@ -2,6 +2,48 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "install_command": "beam apps install erc8004", + "pinned_install_command": "beam apps install erc8004 --version 1.0.0", + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "version": { + "version": "1.0.0", + "min_beam_version": "0.2.4" + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, { "id": "uniswap", "display_name": "Uniswap", @@ -104,6 +146,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } } diff --git a/beam-apps/fixtures/malformed-permissions/catalog/apps.json.sig b/beam-apps/fixtures/malformed-permissions/catalog/apps.json.sig index 4d6ed71..d6d261d 100644 --- a/beam-apps/fixtures/malformed-permissions/catalog/apps.json.sig +++ b/beam-apps/fixtures/malformed-permissions/catalog/apps.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } diff --git a/beam-apps/fixtures/malformed-permissions/catalog/apps/erc8004.json b/beam-apps/fixtures/malformed-permissions/catalog/apps/erc8004.json new file mode 100644 index 0000000..7356f71 --- /dev/null +++ b/beam-apps/fixtures/malformed-permissions/catalog/apps/erc8004.json @@ -0,0 +1,485 @@ +{ + "format_version": 1, + "generated_at": "2026-05-26T00:00:00Z", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "app": { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "install_commands": { + "latest": "beam apps install erc8004", + "pinned": "beam apps install erc8004 --version 1.0.0", + "dry_run": "beam apps install erc8004 --dry-run" + }, + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "permission_summary": { + "http": [ + "https://*" + ], + "wallet": [ + "propose transactions" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ], + "storage": [ + "app-local" + ], + "privacy": [] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry

        [--reputation-registry
        ]", + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
        [--reputation-registry
        ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
        ]", + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
        ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
        ]", + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
        ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
        ]", + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
        ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
        ]", + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
        ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
        ]", + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
        ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
        ]", + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
        ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + } + ], + "readme_markdown": "# ERC-8004 Beam App\n\nThe ERC-8004 app manages identity-registry agents through Beam's generic app\nhost. It keeps registry defaults and overrides in app space rather than as a\nnative Beam command.\n\n```text\nbeam x erc8004 support\nbeam x erc8004 config show\nbeam x erc8004 config set --identity-registry
        \nbeam x erc8004 register [--uri |--empty-uri] [--identity-registry
        ]\nbeam x erc8004 show [--fetch-uri] [--identity-registry
        ]\nbeam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--identity-registry
        ]\nbeam x erc8004 set-uri [--identity-registry
        ]\nbeam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
        ]\nbeam x erc8004 unset-wallet [--identity-registry
        ]\n```\n\nDefault ERC-8004 identity registry addresses are manifest-scoped. Custom\nregistry addresses come from app-local config or an explicit\n`--identity-registry` flag and are included as invocation-scoped contract rules\nin host calls and action plans.\n\n`list` uses `eth_getLogs` through the Beam host. The host enforces a bounded\nblock range and the app defaults to the active wallet with owner filtering, so\nit does not scan from genesis unless the user passes a broad explicit range.\n\n`set-wallet` resolves the wallet argument through Beam and requests an EIP-712\ntyped-data signature from the host. The app receives only the signature and\ndigest, never raw private keys.\n", + "manifest_summary": { + "format_version": 1, + "min_beam_version": "0.2.4", + "wasm_entrypoint": "beam_app_main" + }, + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4" + } + ], + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" + } +} diff --git a/beam-apps/fixtures/malformed-permissions/catalog/apps/erc8004.json.sig b/beam-apps/fixtures/malformed-permissions/catalog/apps/erc8004.json.sig new file mode 100644 index 0000000..0c9c285 --- /dev/null +++ b/beam-apps/fixtures/malformed-permissions/catalog/apps/erc8004.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" +} diff --git a/beam-apps/fixtures/malformed-permissions/index.json b/beam-apps/fixtures/malformed-permissions/index.json index b3923c1..6ab4c79 100644 --- a/beam-apps/fixtures/malformed-permissions/index.json +++ b/beam-apps/fixtures/malformed-permissions/index.json @@ -2,6 +2,27 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4", + "manifest_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/manifest.json", + "manifest_sha256": "sha256:ddbfd3a3e4c03eb65003a2f44c231d85d22e4a2b9de9173b33894202cb2c3c3a", + "module_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/module.wasm", + "module_sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:baca7450d2f0fac5e7110d6bff85f030295b6acd94f6db994d3f16fca91dc062" + } + } + ] + }, { "id": "uniswap", "name": "Uniswap", @@ -12,13 +33,13 @@ "version": "1.0.2", "min_beam_version": "0.2.1", "manifest_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/manifest.json", - "manifest_sha256": "sha256:b3bee997c062dbf20de57c4176a010b3578bf4a5e7c8a57017733bd5a95e2b73", + "manifest_sha256": "sha256:36c9fc35b9d855622201146244eeb165e97592cbd333296d7e3f1454f37be545", "module_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/module.wasm", - "module_sha256": "sha256:58c5dbc8343f5281392269b72e0193b2c39f6a4b36942df1bea464699a36cdc2", + "module_sha256": "sha256:a5ca0f4124e59390c0c40c64e2792ae04712f5fdb9accf92fdfa76be8a8702d7", "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } } ] @@ -27,6 +48,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } } diff --git a/beam-apps/fixtures/malformed-permissions/index.json.sig b/beam-apps/fixtures/malformed-permissions/index.json.sig index 4193503..30b012f 100644 --- a/beam-apps/fixtures/malformed-permissions/index.json.sig +++ b/beam-apps/fixtures/malformed-permissions/index.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } diff --git a/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/icon.svg b/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/icon.svg new file mode 100644 index 0000000..91a16e6 --- /dev/null +++ b/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/manifest.json b/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/manifest.json new file mode 100644 index 0000000..89fae03 --- /dev/null +++ b/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/manifest.json @@ -0,0 +1,79 @@ +{ + "format_version": 1, + "id": "erc8004", + "display_name": "ERC-8004", + "version": "1.0.0", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "min_beam_version": "0.2.4", + "wasm": { + "sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "entrypoint": "beam_app_main" + }, + "catalog": { + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ] + }, + "permissions": { + "http": [ + { + "url": "https://*" + } + ], + "chains": [ + { + "chain": "*", + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ], + "contracts": [ + "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "0x8004A818BFB912233c491871b3d84c89A494BD9e" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ] + } + ], + "wallet": { + "read_balances": false, + "propose_transactions": true, + "erc20_approval": false, + "sign_typed_data": true + }, + "storage": { + "app_local": true + }, + "privacy": [] + }, + "host_api": { + "privacy_reserved": true + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:c4e03f2cec7deacdd834d09aa0fc3708540cc261d4748f7abb62db1f7ce5b998" + } +} diff --git a/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/manifest.json.sig b/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/manifest.json.sig new file mode 100644 index 0000000..33f51cd --- /dev/null +++ b/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/manifest.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:6ee2a1305f9f220a7270739de96db804fb63bc62d3bab2b8987e2731a978ea61" +} diff --git a/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/module.wasm b/beam-apps/fixtures/missing-fields/apps/erc8004/1.0.0/module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6e620ea47b1b5d6fdc2f878ec1901c9fc2117e41 GIT binary patch literal 440196 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
          &%GSPZ%9pQ~alW$l^jwFg~HnUBWG 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%0D>O#q)?bkL0si>ybRx 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%0Afs@#Pm^`9^jA5K#L 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 [--min-receive ] [--max-gas ] [--slippage-bps ] [--recipient ] [--deadline-seconds ] [--unlimited-approval]", + "sensitive_args": [], + "input_schema": { + "type": "object", + "required": [ + "sell_token", + "buy_token", + "amount" + ], + "properties": { + "sell_token": { + "type": "string" + }, + "buy_token": { + "type": "string" + }, + "amount": { + "type": "string" + }, + "min_receive": { + "type": "string" + }, + "max_gas": { + "type": "string" + }, + "slippage_bps": { + "type": "integer" + }, + "recipient": { + "type": "string" + }, + "deadline_seconds": { + "type": "integer" + }, + "unlimited_approval": { + "type": "boolean" + } + } + }, + "output_schema": { + "type": "object", + "required": [ + "state", + "steps" + ], + "properties": { + "state": { + "enum": [ + "prepared", + "pending", + "confirmed", + "dropped" + ] + }, + "steps": { + "type": "array" + }, + "transaction_hash": { + "type": "string" + } + } + }, + "docs": { + "summary": "Fetch a quote and prepare an exact-approval Uniswap swap", + "invocation": "beam x uniswap swap [--min-receive ] [--max-gas ] [--slippage-bps ] [--recipient ] [--deadline-seconds ] [--unlimited-approval]", + "arguments": [ + { + "name": "sell-token", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Token to spend, provided as a symbol, Beam token alias, or address." + }, + { + "name": "buy-token", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Token to receive, provided as a symbol, Beam token alias, or address." + }, + { + "name": "amount", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Sell amount in human token units." + } + ], + "options": [ + { + "name": "--min-receive", + "value_name": "amount", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Minimum acceptable output amount; floors slippage." + }, + { + "name": "--max-gas", + "value_name": "wei", + "kind": "wei", + "required": false, + "sensitive": false, + "description": "Reject the plan if the estimated gas exceeds this value." + }, + { + "name": "--slippage-bps", + "value_name": "bps", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Maximum slippage in basis points." + }, + { + "name": "--recipient", + "value_name": "wallet-or-address", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Send output to another Beam wallet name, ENS name, or EVM address." + }, + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Quote and transaction deadline window." + }, + { + "name": "--unlimited-approval", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Request an unlimited ERC-20 approval instead of Beam's default exact approval." + } + ], + "examples": [ + { + "title": "Swap on Base", + "command": "beam x uniswap swap USDC ETH 100 --chain base --from alice", + "description": "Prepare and approve a public swap from the alice wallet on Base." + }, + { + "title": "Prepare for an agent", + "command": "beam x uniswap swap USDC ETH 100 --chain base --from alice --prepare --format json", + "description": "Create a continuation for non-interactive review and explicit approval." + } + ], + "output_notes": [ + "Returns structured output with state prepared, pending, confirmed, or dropped.", + "Includes the typed steps Beam executed and a transaction_hash once broadcast." + ] + } + } + ], "permissions": { "http": [ { @@ -129,6 +290,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:ce538d2a143e48a1d5dd7bd36896f3727f4148e589ddca7d601e6d5b4b5d5f9b" + "value": "sha256:6d2507ea791ccd9965f992f55e08bad878ceb9929611edb8fa32195994ce3588" } } diff --git a/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/manifest.json.sig b/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/manifest.json.sig index 53eeada..53f61c1 100644 --- a/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/manifest.json.sig +++ b/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/manifest.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:a529b79e6b23e784176b3f2f78334d26b5d7b8dba15b66262829eda3b15d360b" + "value": "sha256:6d2507ea791ccd9965f992f55e08bad878ceb9929611edb8fa32195994ce3588" } diff --git a/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/module.wasm b/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/module.wasm index 4d88a6a4cb99b2b7e47a0aecdc0e349e4ce27f9d..1d43407af881964a8d346b37810b36cfbd3ed01e 100644 GIT binary patch delta 123 zcmeCXDA93IVnY!N>))3`ZFHv2*)_^^7+dIb3-e6qq!aG}@1D zWCUU+AZFfvbR$dBZpOdUHF8-M824=V%w@g7#~3)Bv58e?x?K&clBlV%sfoFPv4Od< bv89Env6-cjiKf@|g$=Ay+b7hp{#y+IZ$~T+ delta 155 zcmeCUDA9LOVnY!NYtt*CH_Vd*q`x=kv2M>}Wh`99*th+`dd3@!ypD|SybKCV8cZ6F zjBf1*HZlS+6A&|RKd_M{X}8k9FH9_XiMgo^Vxmc@iMjEK1qJb?d6~uKi3NJ)iN(2$ zd$+sfvfkih44VG1npJALc@3+In4z(WfrXicg@L81nSr^Hk&%g|p{5r|f%Nw78rHw7 E0j6m;qW}N^ diff --git a/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/version.json.sig b/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/version.json.sig index 250c2e2..d1cb93b 100644 --- a/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/version.json.sig +++ b/beam-apps/fixtures/missing-fields/apps/uniswap/1.0.2/version.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } diff --git a/beam-apps/fixtures/missing-fields/catalog/apps.json b/beam-apps/fixtures/missing-fields/catalog/apps.json index dbba548..b03a654 100644 --- a/beam-apps/fixtures/missing-fields/catalog/apps.json +++ b/beam-apps/fixtures/missing-fields/catalog/apps.json @@ -2,6 +2,48 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "install_command": "beam apps install erc8004", + "pinned_install_command": "beam apps install erc8004 --version 1.0.0", + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "version": { + "version": "1.0.0", + "min_beam_version": "0.2.4" + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, { "id": "uniswap", "display_name": "Uniswap", @@ -104,6 +146,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } } diff --git a/beam-apps/fixtures/missing-fields/catalog/apps.json.sig b/beam-apps/fixtures/missing-fields/catalog/apps.json.sig index 4d6ed71..d6d261d 100644 --- a/beam-apps/fixtures/missing-fields/catalog/apps.json.sig +++ b/beam-apps/fixtures/missing-fields/catalog/apps.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } diff --git a/beam-apps/fixtures/missing-fields/catalog/apps/erc8004.json b/beam-apps/fixtures/missing-fields/catalog/apps/erc8004.json new file mode 100644 index 0000000..7356f71 --- /dev/null +++ b/beam-apps/fixtures/missing-fields/catalog/apps/erc8004.json @@ -0,0 +1,485 @@ +{ + "format_version": 1, + "generated_at": "2026-05-26T00:00:00Z", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "app": { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "install_commands": { + "latest": "beam apps install erc8004", + "pinned": "beam apps install erc8004 --version 1.0.0", + "dry_run": "beam apps install erc8004 --dry-run" + }, + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "permission_summary": { + "http": [ + "https://*" + ], + "wallet": [ + "propose transactions" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ], + "storage": [ + "app-local" + ], + "privacy": [] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry

          [--reputation-registry
          ]", + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
          [--reputation-registry
          ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
          ]", + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
          ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
          ]", + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
          ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
          ]", + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
          ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
          ]", + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
          ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
          ]", + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
          ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
          ]", + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
          ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + } + ], + "readme_markdown": "# ERC-8004 Beam App\n\nThe ERC-8004 app manages identity-registry agents through Beam's generic app\nhost. It keeps registry defaults and overrides in app space rather than as a\nnative Beam command.\n\n```text\nbeam x erc8004 support\nbeam x erc8004 config show\nbeam x erc8004 config set --identity-registry
          \nbeam x erc8004 register [--uri |--empty-uri] [--identity-registry
          ]\nbeam x erc8004 show [--fetch-uri] [--identity-registry
          ]\nbeam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--identity-registry
          ]\nbeam x erc8004 set-uri [--identity-registry
          ]\nbeam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
          ]\nbeam x erc8004 unset-wallet [--identity-registry
          ]\n```\n\nDefault ERC-8004 identity registry addresses are manifest-scoped. Custom\nregistry addresses come from app-local config or an explicit\n`--identity-registry` flag and are included as invocation-scoped contract rules\nin host calls and action plans.\n\n`list` uses `eth_getLogs` through the Beam host. The host enforces a bounded\nblock range and the app defaults to the active wallet with owner filtering, so\nit does not scan from genesis unless the user passes a broad explicit range.\n\n`set-wallet` resolves the wallet argument through Beam and requests an EIP-712\ntyped-data signature from the host. The app receives only the signature and\ndigest, never raw private keys.\n", + "manifest_summary": { + "format_version": 1, + "min_beam_version": "0.2.4", + "wasm_entrypoint": "beam_app_main" + }, + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4" + } + ], + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" + } +} diff --git a/beam-apps/fixtures/missing-fields/catalog/apps/erc8004.json.sig b/beam-apps/fixtures/missing-fields/catalog/apps/erc8004.json.sig new file mode 100644 index 0000000..0c9c285 --- /dev/null +++ b/beam-apps/fixtures/missing-fields/catalog/apps/erc8004.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" +} diff --git a/beam-apps/fixtures/missing-fields/index.json b/beam-apps/fixtures/missing-fields/index.json index b3923c1..6ab4c79 100644 --- a/beam-apps/fixtures/missing-fields/index.json +++ b/beam-apps/fixtures/missing-fields/index.json @@ -2,6 +2,27 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4", + "manifest_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/manifest.json", + "manifest_sha256": "sha256:ddbfd3a3e4c03eb65003a2f44c231d85d22e4a2b9de9173b33894202cb2c3c3a", + "module_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/module.wasm", + "module_sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:baca7450d2f0fac5e7110d6bff85f030295b6acd94f6db994d3f16fca91dc062" + } + } + ] + }, { "id": "uniswap", "name": "Uniswap", @@ -12,13 +33,13 @@ "version": "1.0.2", "min_beam_version": "0.2.1", "manifest_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/manifest.json", - "manifest_sha256": "sha256:b3bee997c062dbf20de57c4176a010b3578bf4a5e7c8a57017733bd5a95e2b73", + "manifest_sha256": "sha256:36c9fc35b9d855622201146244eeb165e97592cbd333296d7e3f1454f37be545", "module_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/module.wasm", - "module_sha256": "sha256:58c5dbc8343f5281392269b72e0193b2c39f6a4b36942df1bea464699a36cdc2", + "module_sha256": "sha256:a5ca0f4124e59390c0c40c64e2792ae04712f5fdb9accf92fdfa76be8a8702d7", "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } } ] @@ -27,6 +48,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } } diff --git a/beam-apps/fixtures/missing-fields/index.json.sig b/beam-apps/fixtures/missing-fields/index.json.sig index 4193503..30b012f 100644 --- a/beam-apps/fixtures/missing-fields/index.json.sig +++ b/beam-apps/fixtures/missing-fields/index.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } diff --git a/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/icon.svg b/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/icon.svg new file mode 100644 index 0000000..91a16e6 --- /dev/null +++ b/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/manifest.json b/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/manifest.json new file mode 100644 index 0000000..544f074 --- /dev/null +++ b/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/manifest.json @@ -0,0 +1,480 @@ +{ + "format_version": 1, + "id": "erc8004", + "display_name": "ERC-8004", + "version": "1.0.0", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "min_beam_version": "999.0.0", + "wasm": { + "sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "entrypoint": "beam_app_main" + }, + "catalog": { + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + } + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry
          [--reputation-registry
          ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
          [--reputation-registry
          ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + } + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
          ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
          ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + } + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
          ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
          ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + } + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
          ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
          ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + } + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
          ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
          ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
          ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
          ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + } + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
          ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
          ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + } + ], + "permissions": { + "http": [ + { + "url": "https://*" + } + ], + "chains": [ + { + "chain": "*", + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ], + "contracts": [ + "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "0x8004A818BFB912233c491871b3d84c89A494BD9e" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ] + } + ], + "wallet": { + "read_balances": false, + "propose_transactions": true, + "erc20_approval": false, + "sign_typed_data": true + }, + "storage": { + "app_local": true + }, + "privacy": [] + }, + "host_api": { + "privacy_reserved": true + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:f28094e7e85f0d592e7994f190f62fdfccd6e116700205f338c3615bf24bea88" + } +} diff --git a/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/manifest.json.sig b/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/manifest.json.sig new file mode 100644 index 0000000..33f51cd --- /dev/null +++ b/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/manifest.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:6ee2a1305f9f220a7270739de96db804fb63bc62d3bab2b8987e2731a978ea61" +} diff --git a/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/module.wasm b/beam-apps/fixtures/unsupported-beam/apps/erc8004/1.0.0/module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6e620ea47b1b5d6fdc2f878ec1901c9fc2117e41 GIT binary patch literal 440196 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
            &%GSPZ%9pQ~alW$l^jwFg~HnUBWG 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%0D>O#q)?bkL0si>ybRx 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%0Afs@#Pm^`9^jA5K#L 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 bv89Env6-cjiKf@|g$=Ay+b7hp{#y+IZ$~T+ delta 155 zcmeCUDA9LOVnY!NYtt*CH_Vd*q`x=kv2M>}Wh`99*th+`dd3@!ypD|SybKCV8cZ6F zjBf1*HZlS+6A&|RKd_M{X}8k9FH9_XiMgo^Vxmc@iMjEK1qJb?d6~uKi3NJ)iN(2$ zd$+sfvfkih44VG1npJALc@3+In4z(WfrXicg@L81nSr^Hk&%g|p{5r|f%Nw78rHw7 E0j6m;qW}N^ diff --git a/beam-apps/fixtures/unsupported-beam/apps/uniswap/1.0.2/version.json.sig b/beam-apps/fixtures/unsupported-beam/apps/uniswap/1.0.2/version.json.sig index 250c2e2..d1cb93b 100644 --- a/beam-apps/fixtures/unsupported-beam/apps/uniswap/1.0.2/version.json.sig +++ b/beam-apps/fixtures/unsupported-beam/apps/uniswap/1.0.2/version.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } diff --git a/beam-apps/fixtures/unsupported-beam/catalog/apps.json b/beam-apps/fixtures/unsupported-beam/catalog/apps.json index dbba548..b03a654 100644 --- a/beam-apps/fixtures/unsupported-beam/catalog/apps.json +++ b/beam-apps/fixtures/unsupported-beam/catalog/apps.json @@ -2,6 +2,48 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "install_command": "beam apps install erc8004", + "pinned_install_command": "beam apps install erc8004 --version 1.0.0", + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "version": { + "version": "1.0.0", + "min_beam_version": "0.2.4" + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, { "id": "uniswap", "display_name": "Uniswap", @@ -104,6 +146,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } } diff --git a/beam-apps/fixtures/unsupported-beam/catalog/apps.json.sig b/beam-apps/fixtures/unsupported-beam/catalog/apps.json.sig index 4d6ed71..d6d261d 100644 --- a/beam-apps/fixtures/unsupported-beam/catalog/apps.json.sig +++ b/beam-apps/fixtures/unsupported-beam/catalog/apps.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } diff --git a/beam-apps/fixtures/unsupported-beam/catalog/apps/erc8004.json b/beam-apps/fixtures/unsupported-beam/catalog/apps/erc8004.json new file mode 100644 index 0000000..7356f71 --- /dev/null +++ b/beam-apps/fixtures/unsupported-beam/catalog/apps/erc8004.json @@ -0,0 +1,485 @@ +{ + "format_version": 1, + "generated_at": "2026-05-26T00:00:00Z", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "app": { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "install_commands": { + "latest": "beam apps install erc8004", + "pinned": "beam apps install erc8004 --version 1.0.0", + "dry_run": "beam apps install erc8004 --dry-run" + }, + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "permission_summary": { + "http": [ + "https://*" + ], + "wallet": [ + "propose transactions" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ], + "storage": [ + "app-local" + ], + "privacy": [] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry

            [--reputation-registry
            ]", + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
            [--reputation-registry
            ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
            ]", + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
            ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
            ]", + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
            ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
            ]", + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
            ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
            ]", + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
            ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
            ]", + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
            ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
            ]", + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
            ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + } + ], + "readme_markdown": "# ERC-8004 Beam App\n\nThe ERC-8004 app manages identity-registry agents through Beam's generic app\nhost. It keeps registry defaults and overrides in app space rather than as a\nnative Beam command.\n\n```text\nbeam x erc8004 support\nbeam x erc8004 config show\nbeam x erc8004 config set --identity-registry
            \nbeam x erc8004 register [--uri |--empty-uri] [--identity-registry
            ]\nbeam x erc8004 show [--fetch-uri] [--identity-registry
            ]\nbeam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--identity-registry
            ]\nbeam x erc8004 set-uri [--identity-registry
            ]\nbeam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
            ]\nbeam x erc8004 unset-wallet [--identity-registry
            ]\n```\n\nDefault ERC-8004 identity registry addresses are manifest-scoped. Custom\nregistry addresses come from app-local config or an explicit\n`--identity-registry` flag and are included as invocation-scoped contract rules\nin host calls and action plans.\n\n`list` uses `eth_getLogs` through the Beam host. The host enforces a bounded\nblock range and the app defaults to the active wallet with owner filtering, so\nit does not scan from genesis unless the user passes a broad explicit range.\n\n`set-wallet` resolves the wallet argument through Beam and requests an EIP-712\ntyped-data signature from the host. The app receives only the signature and\ndigest, never raw private keys.\n", + "manifest_summary": { + "format_version": 1, + "min_beam_version": "0.2.4", + "wasm_entrypoint": "beam_app_main" + }, + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4" + } + ], + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" + } +} diff --git a/beam-apps/fixtures/unsupported-beam/catalog/apps/erc8004.json.sig b/beam-apps/fixtures/unsupported-beam/catalog/apps/erc8004.json.sig new file mode 100644 index 0000000..0c9c285 --- /dev/null +++ b/beam-apps/fixtures/unsupported-beam/catalog/apps/erc8004.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" +} diff --git a/beam-apps/fixtures/unsupported-beam/index.json b/beam-apps/fixtures/unsupported-beam/index.json index b3923c1..6ab4c79 100644 --- a/beam-apps/fixtures/unsupported-beam/index.json +++ b/beam-apps/fixtures/unsupported-beam/index.json @@ -2,6 +2,27 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4", + "manifest_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/manifest.json", + "manifest_sha256": "sha256:ddbfd3a3e4c03eb65003a2f44c231d85d22e4a2b9de9173b33894202cb2c3c3a", + "module_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/module.wasm", + "module_sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:baca7450d2f0fac5e7110d6bff85f030295b6acd94f6db994d3f16fca91dc062" + } + } + ] + }, { "id": "uniswap", "name": "Uniswap", @@ -12,13 +33,13 @@ "version": "1.0.2", "min_beam_version": "0.2.1", "manifest_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/manifest.json", - "manifest_sha256": "sha256:b3bee997c062dbf20de57c4176a010b3578bf4a5e7c8a57017733bd5a95e2b73", + "manifest_sha256": "sha256:36c9fc35b9d855622201146244eeb165e97592cbd333296d7e3f1454f37be545", "module_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/module.wasm", - "module_sha256": "sha256:58c5dbc8343f5281392269b72e0193b2c39f6a4b36942df1bea464699a36cdc2", + "module_sha256": "sha256:a5ca0f4124e59390c0c40c64e2792ae04712f5fdb9accf92fdfa76be8a8702d7", "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } } ] @@ -27,6 +48,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } } diff --git a/beam-apps/fixtures/unsupported-beam/index.json.sig b/beam-apps/fixtures/unsupported-beam/index.json.sig index 4193503..30b012f 100644 --- a/beam-apps/fixtures/unsupported-beam/index.json.sig +++ b/beam-apps/fixtures/unsupported-beam/index.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } diff --git a/beam-apps/fixtures/valid/apps/erc8004/1.0.0/icon.svg b/beam-apps/fixtures/valid/apps/erc8004/1.0.0/icon.svg new file mode 100644 index 0000000..91a16e6 --- /dev/null +++ b/beam-apps/fixtures/valid/apps/erc8004/1.0.0/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/beam-apps/fixtures/valid/apps/erc8004/1.0.0/manifest.json b/beam-apps/fixtures/valid/apps/erc8004/1.0.0/manifest.json new file mode 100644 index 0000000..f69e711 --- /dev/null +++ b/beam-apps/fixtures/valid/apps/erc8004/1.0.0/manifest.json @@ -0,0 +1,480 @@ +{ + "format_version": 1, + "id": "erc8004", + "display_name": "ERC-8004", + "version": "1.0.0", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "min_beam_version": "0.2.4", + "wasm": { + "sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "entrypoint": "beam_app_main" + }, + "catalog": { + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + } + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry
            [--reputation-registry
            ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
            [--reputation-registry
            ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + } + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
            ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
            ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + } + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
            ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
            ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + } + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
            ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
            ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + } + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
            ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
            ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
            ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
            ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + } + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
            ]", + "sensitive_args": [], + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
            ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + } + } + ], + "permissions": { + "http": [ + { + "url": "https://*" + } + ], + "chains": [ + { + "chain": "*", + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ], + "contracts": [ + "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "0x8004A818BFB912233c491871b3d84c89A494BD9e" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ] + } + ], + "wallet": { + "read_balances": false, + "propose_transactions": true, + "erc20_approval": false, + "sign_typed_data": true + }, + "storage": { + "app_local": true + }, + "privacy": [] + }, + "host_api": { + "privacy_reserved": true + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:6ee2a1305f9f220a7270739de96db804fb63bc62d3bab2b8987e2731a978ea61" + } +} diff --git a/beam-apps/fixtures/valid/apps/erc8004/1.0.0/manifest.json.sig b/beam-apps/fixtures/valid/apps/erc8004/1.0.0/manifest.json.sig new file mode 100644 index 0000000..33f51cd --- /dev/null +++ b/beam-apps/fixtures/valid/apps/erc8004/1.0.0/manifest.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:6ee2a1305f9f220a7270739de96db804fb63bc62d3bab2b8987e2731a978ea61" +} diff --git a/beam-apps/fixtures/valid/apps/erc8004/1.0.0/module.wasm b/beam-apps/fixtures/valid/apps/erc8004/1.0.0/module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6e620ea47b1b5d6fdc2f878ec1901c9fc2117e41 GIT binary patch literal 440196 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
              &%GSPZ%9pQ~alW$l^jwFg~HnUBWG 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%0D>O#q)?bkL0si>ybRx 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%0Afs@#Pm^`9^jA5K#L zao;Wjmb_}p??3s;%INr~{YPJ*4y9kmI#`peBPu4SlW#UHM0P(0ymCZj5->*hXs7zlLpqKVchl>H)+F&y}>!E5bF4E9#*}$3{WN6jekDc~@d- zFo|Hf@Bo?QMcP>xA$-eI6Av&s)$qXgr=ECJ3Ri+y()Y|HmxIU&^N6XHecj5&0Pb}4 z$G0q(tnUGZLfk>CI68`Cl~rBjEwI%p<`wdsQ^0Nps6*u@z#~!kXoEex0?35utY;58 z1AQN3Ph7!T3a&;CZll$Z(#&4Z9#$FTG{qmJ0TZcsx#cQMv&s&oq#_20r--FXA~j5Y zRtT(@q>+X>S?sYFl-R-@2k{1G#EJd?1CNf)<%%R>%7g*GrCej#f%i0FZRr3e+LI z#I+*83>ZzM`vy72JX4!^fhx@oFPErO!lk3Cb_n1EeFPTWRka&}(5@MI>B8_>dOdL& zA3*Eb>-1H49l~CVr{nd9O!2)K?~9D=eZzN#bYX-T{i0pEu;I&|EO2*hL@WS6*MmUQ zfNIHift&ylB-RlcX9iu~-j6%C4a27+9vv|jguiEDfE3#>AOV2Tp%~bc0A>dq_yoT; z^38+W3a%@Gn6MODPE3@rW;=nAsz*I`C~I9vI{gETDc}oWqefD*qEhM~ItLLJEUst~ z{^K4W-E7_CBP?v$V{ECW9)HVv47r%~7*1ls35ct-ES7Dlu*X!0c?d9{$BKI__LrUT zCe|!WAXTf$noqb0Y6%pgWhud4gf&6C33vY!8VfdS`pDdoIe{U;QMksyPpCCSa5e%| z4=5vHsa}m~q4~2X+WzPZYEF{m2$VR*jVfbYzJXwkswB`NnWoFSixu|l$WH1RtIVor zt3_`abI*=aMzLo!r{(ty3ytn=MbGSr%N2XJT3TU<81h%I5q|VBT4jEBwDObebBV-cgTu zx>=4{W{3!BaG#p!i-Hr1kU_MzfHmM;)6Jd`0VeMRKmu$44x%Kb8C|}{6mCl4I&Im^ z#{)OW(G6H;Ef?NJ?ST(UK`{zF3YC{!j5qi z&y(Ct`#RO>K+C}!l=`lPHbqpZk-p5NcEh{aA?W1r9)J$N2|UY8m5q} zx^WWjnczb0P@X8Ho8dy2G*WB?N;(MO_01 zPWt75-SvAV!NvYTi#d@g!vlBUC=V) z-gt0M(oQ2&0Lv%u=*MlPgVEq%#%}h-ho~^VrwcdV+l9FY=Ec?_4Rll&cREyn(R;|= zbmVrhM`j0Pau(u;;2^(t?k;3ybQTsvp-R?#4BJU) zfGbBqMcl|x=_HICB4oFN1CKLxi&^~Hn-eL-o#>cL$_q{fVm9SqT5xCKF3jze5P-WM zh}1a?)6fKp0Ad&z?pn7UH2j9Kw^A~=)rykIW^baM<=2Bg&}IoWJX*5{rwba3k;q~T z=9yL#CKY5$yxE;Zc6PHnl8_w-%(_t~OfA-+*(zKYOeaGYdcfXq>5A=o+k(V^oGHZR z%y0y%W?&4FMlccZy>G@b^DQl1g>Xq+Yc+X=NL}D5Xj(-aEf#!}Ed0w9r4XFh5`u9F z@y?92m@!y^1tuafzEl9v6+}L%l?4)YKr0}h-iWbj<?5ieX7{JbumNZXxK3cjDHYgWum;(}qpGo6 z+R?*7{0amdAJu~gsvwmJGP6ryG3`)9(0Xv~V`s;V@Yoe#*}^>Apex@hFeD z3<^ys!Fa&hjR%WQ+o_mmyjl^>LF%C{(|zKYNrAi@X* z92HUWf4qGGuPlh(#TDXsS+0AXl~B7V3V1s)3bj*|GbtgQg;pdeISCixcuU8AI%kkL z1PmpIB*IGJ5|$-yOY}TgQd|s-4TZg%4$V`cNmt8eL8_p2MsOgh+N25IUUET zDxyHbT_9p1BMzLU+IcAp^_(th?50uCg|P$;_~aGShbgd5NO_@#@Z3+mKwh|s_$s3` z?me+bU}gC#+iO%k@uqsK4nutvoLANtG4Q$gTg592 zX_67kqYRW=Jy|ilh{aHXjyp4#q&qrbfk|f_#Oa_IDSi0l?72?_5D_CbG*fqx{}STR z$z1wp7zQon^;J$l*9s}N*bd$eu7%L7IkFyNF4(wIi^Q?UYuwN?4NW5sIMkGxOFNoN z;+%LTAjmvlF*XrA_5>OGx9ZTB2CmTUKDG-w5i}2300LCgpI+HNZ`FZvjk>KQ;MCFBiy#G}Qw`4R(F3d$JIYWDxZ*N7H9Pj6 zwTeE0*q|tc|Cb(PHTK1Ti+tZ4EZrKn5*~31x`fS*GD=sjN%>1OXr@@BEK$SXlcs?x z=aG8??^vS7$$zrJ9tKCkZW}}eCxK%4{zJrE!f(tT*cuuNW{IbN0?=z26?u?wBw2)U zPORt!MOk4k!-=ps-VqOuCKu>cC|)RvFY3kFai!UDrP%@2WBVvX#{gpVo{-X&0I3oo z$d00=aj7sUMsg`x#&e3K4oifCbX{&H`ayay9IH#_I~xn|orjzqi(*04Cs zV0WbRKa~V;sI*673MdUB7x=;A!}swx=~S#6$UhQ^Kw6p+`X;^vD+$M0qVHH&xXzbX zj4Ui93fA7t7xN~{MHSOD!jAc638OH86toEp+_=jZx;oyTnsUJ0c#Hk6fW(^UDrl@s zZb4$Hdix3Dyh~(w0)rG#&6>oz9^R|4 zKF?sx%k?+rH10`C($31_ed1a!I;BZ0T>DSQAXsj5@tP<|oZ)@TYgJF-QNm z4>aA7lg$Pi7#hF^s?+N$Z04UBr6Dsd5wOMh{`s*D#Ztr?_)j$T_co$4rfL(?`~o9@ zkWn%ghCF=cCqrlo-N zmJ92=>@>nR|6KIis7=UZx&9aXioR4ZTmSyPQij}$BL@s;bQD1UKTJm6KG# zEd3+n(rfeMhJtaDoBbb;&ZfdLW3=SfUzX`r|Z%5j$TMCJ`y<_b{b-|1#)4d(fyNNjH0U2_ zh^;k08VV3V;)5hGVaEW^pv~kN``V0$^rO@3lK8xAU=l?S;IE`iRTTq4JDOYJ$B zTRBb+&qKHo!t$RTUg#(P(Ype_15Tb?8lHOmYT*ZYEiNsI{v8Tg4_pKj>)1btPtqmi zrI0Wcr_D{1b7X0=(~_}_;tZ+UpwO`Focw&Cs?M0NHDpO~*tqi&jeL8Q?5s0tle9)H zpPyz-J%%i)SWccXH_sRc!hsf9rS0Z9I>%9M=lAZXn84#_vsCR<5z2rPv9b-bVs}DeQ|pa+#@kuY_NBCfDoq zHqZzdhP3?3V&AF%;$M{f!Ub^Lsu7xuwCp5JGY!LQO%sg-E5r;)&}p+s5#y)RClZhc z@et=QSo0O!-+-K|Z`!LdygxxeV z4SP4F5nWPTLIDx#q&T80aY<<@APAJAHRkDcaj9BEs*I9iX%kjT)i#l_6!qu~3`s?F z=6UXC^pDoSzwo5>!HX#-+_bOi$y=E)2a67)1TWVrK}A?N>Jp z3?%4HW&u~r(UTj3@(w@{TE8F%Ikb?W%zZzJCK|{D;i*O*` zEz1WXOyz-^CW=dp01p)aFR=%T3EF?nL~BF6vU#CcG#>mg8@5&oFLGK zA+CZRIwK=Dj3@&kp)gE@5?BkpUQ$7}HY+U=%1klVkd%{!-8Igj%hfV%Vse@;Gs!^w z8#KysjC*5D0wV(GWm<9p8a0&{aTs;#hRY|c+@uoiN5}5rYFcYmepn9w&KeU#iE3k|KZ7G+J z1LKyNlVZrpCCw~2DJCQ(Kq;TWwsm7p2IeRyj>VwIsX0klhNzGqqHK9pV(MdP=4~qJA@5_h@#6Hh(;4Lij(d)^PxR;!#zXX| z4t_H2p#6tNskY7E*Cu}%6c7sp$)mwG&rLuX;x*+qQ05P1k{wbT zi~t!-yR8jVMMMeW=rEX}3~Vu#VGqg?i&#e5o~3121}}gP?2pzx{mD;y=egobqI}tm zE3PZ@T-fi5DUJRrVb3L8>w{kt{4ieHUi9*Qld4VP^YuB15~5>y)Re13E_3-Z8&o+3 z7$aU!q)Rfdu1hj;lVX!iq?(A0WV>29Vi2RJU6bXKzGkVw^d?s3%ZRQ;4Zdw-yM+e^ zwPE|7BvkOUfk_gUycNqVEzjmLHc9RkrHh+jYiSSl1&2mLL9E2LiUZRZ1X^#&a$iLO z&7wjRPi|_0jn32onN>HzL)_)%`s7k_{w5+1&NyI;9?02!<#{GPi+B=jZ{=lUygE&= zj8k9~A@C&eP_~E?8_#h&>U%PokMa?1p`RK*C=)1e7l2iIZG)W`3HX!q5sm0-Ox008 zQm(nAkNYrXyZ*QAH=8}^x_ngkN^eb0b$Ea6cVipWI(lh77oevWy`~6 z(==0;?c+m5;R6_KLyNEqiQeVbTVB7i$=o3I6`ixF=Lv{7^-msu zU-XywPd`6!PLlk=kVs2hp(KRJ6KKxDlM;wWxgy?^@dbW<#IpD?2F1@$CQ0C;M02^H zpD{;H6gfYThaq{ypYd8rj5p!S*Qm2H>W+30bu;y_0kJ(KH7DO(>`k$UX-O^7HtpV| z-N3>}Cn4TqevIb4<@U%-CQaRZQzDNorAjz1M=jDjRL8U@re2$yFPnspn6wYP77S6Y z(ZK7VbHi5a$EwMp7pA75Ad9mI^I1?-^9f+xv#}$?r9!6%TC%@i(Vwb#qeg83Y2BqV zsbWM+i;^;Z;1jjk**QjD#fMAB*S$(h;|p5rEJL|u=S z2wfh)L@7puu>?JHuPjTKoRl$Otx6 ztup$W1a32`n4(aJ4($+cl!YhZ>qx2HwlvYYyez&mz8Z87*i7!&`@jY9k^7BO-;i$ej=vflSFsLSST4 z+sK5lU{f1Cbh$a1X(WJt2`H(QP7iQX64m z!2zLRLTF@o8^{Ndy4H!U10%yi(Liu?cyI&?21je5j+Ms1-levL1niIy4CORaxF^&C z7_XpDNQ3BS8owzlr-Q_6q1-lAE|?;u9ML^m%azls6x&*tnIlKDcPYLdgfg%;Qcv4; z6?*brpaRd)XUK7#ps&(e2c)rd)@B=_&X>wcA*tTZx)g2Op6yMEQqYuYG&c&(Is$T? zIoaTNrUI<@63 zr^_Nn>Qs-MY+agpPE5fxsOoZhYSS`IpcMn{b8?c>`gYP5fM!WUkwQ|V?IB(2wes8u z`b7CPIxRC3BCKgbOkt^DY<4>7xuBVl>NQ75Ik1-2VJ(qvYzLmN<9SVb%4^!wTTJKi zr1TEbb7j~XggDNKFv(xG9*~sN$Izd?pjXy2(dW#SW34oua(m6 zUn?Jex1|1iO6j)cJK2lyuZwh&gKhhtB-Q^q(n&{Xo9;`@3I19lo%F7@>CQj1WUix> zZri?tl-{?3_9xKhiN9ni-M0KBDcy*4(vRAP&fc$y(SR!RwIyTw)fPaA6%~ zHZr3RB(u@Fpk?lj-)s2U>irra?(f$7*~+;AfkD9`p<&?>k=lgBBweyB@9jt1jqxkT zFlouzORDu|e7B~eo~)ewvQ!AIdLDTZz@o@;#mG-%E+@Zb{idm6EH|G93n<5JKv}|r za>|<8BB_*z$VB;XAwR+LPxFh_b9MbI?3=8D0wbEIBR!eaARALBlp~u?x$Q9NOj2vu zlq;#YoUIz2wX>t*{#onNZQ8k2aXaN3n=uye08uxISN2C_h1QV#M`25OiNX@;VOi+? zb@nFyLt$xaV-f#OSRyT^@)9XAg(cR?6mG)a#DAzgnj`s-!V)QEQ4}VcBmYs@Uk>0& zVWKheABBm&+v>Zukc@}q>9P}b&<%hdr6JEd7`O&cIXnen()qV_^W+9l9r)3junY?b z+pbwyPW5>@a`3QSy^t|oJh`DL^ExJl=(4Z$tjpjnG&vt)868odJY}bnITBAG@Ts^r#c<#WD!nSb#LgC37 z5&sYigKX+Frvy}HVMX{S2eGf@Z$rE{g!F8K=qO@JQzM?ok6{I#av8#3iYGn09M>6P zvInMyhO zB)+VWPZI{*W>_yG?3(dF=5b-7J$VwI#Np4vQ-$Y3JZbFmS|h&zDr&LRxLwFY_<9Ua zT5ED%hNIXSZy}y|c{#mp*BCxO6@F7ZTn|J~26V|_EGIsj&q*L{Lpe#jXyz#|g*9yI zVSKZA^LrCGpy~PeL1m+g%u$T9G?lTbO%pGVPiIJkDNGK*H#-4tr|e&zEb2MQJQi?@ zDTDM$19Ls)na2%uo+MzEvs4g-Ni2xz@4J_Xj3>0n~=8!x{gV_-XuDNhNOtvVj*CpmL z-&tS;9EpKvq8kL^ApJE7^4jT}zZIN!YNzbzh548#B+k}VNgbQrKrxB(- zi@s?7C;w;%Q(*VEhgHiFoR~A9Zrz>=Yuybpb|tKB>y%du{ZGrkS}XrQ*S`k=vZwOk zsH3=UTs)V{6?4;VX1Nrqh+W(X?h<#`Cgs&y{GXP8wO0OHbIJ5)69}9o{UM=`6lij~ z1H#1H$zd0SiLa5v#1G*h6H|CC>LcDqPG5m=TZ`~OoBFd6CVo}?yGtw*{=B2ugX)o_&ZT0kv&VknaiHKqetn<$CWCg@w`5?eKXVldN z0ZZ|mUVqmA$=bcPHP>QB{FS~xwvL*- zWmvtByxMfTbNTF*+8x`>Jk#0n_}$_*4?FyLK;gHg&E|#Q6|^39qs#UdsU&UyCT5&K&S@`XZ_fNct8PoZIUK<_U?kB$B_~R<6?dqiUX}z_^qIMgX zRDb={v6JoUby#r!?J-X6mk-=~&o{9}`=4vo4u3L8-(FjKY2UC1E7}(vtoiWl$LHI3 zDmvb8|DDRQiw3s7`)Ni@?Ec`Mx0X8=#ttmqys2@?##qC_C8dE^uf|SmcF1|;;5r@N zOB(rQr8;kQ*!BFv(39G69RiBpt=4Yawhk?`FJxwJzT4s0SJfuG{iAnB;aRQpUuyO5 zxVlBR%YogdcdXj^O8=Hg`#ScCUwE%`(c_L;TkW%#ocHh4=C?gpuKbeN$!o)J^#)&= z*Qw5e+~s-oj(3`&O@2E~uk8HbajRdHT_ZZ{A5HsdUqW{0c26TKZGXPBbFJYAzxLhv zP3Oh)n#CB`xpzrgd}ZyyNzq+e9Jp|HThsh5ZjtX!PJ6Ph%gWXleji=;a+eviPvCtU};JagiUr8m3I|6<(bPur@yjq-1N z?zOqSy2U-c`_`Rj?{urPFl?6B54*Z0w6TBmp4WqJBYHV}VmILRx3YTet^DJ#__q$e z9@4wk+}Upp58b`?;*PK0%G}-euxoX$`+<8+Kc8ABqYE8G3Xbxc>T}M=N_IZu&MM@8N|W z^>Ysla@kg;=WCrJw@gZH*R$#3x0ikxUDUH^@9fvs$9~*%;QhzhHP2t`X&AEgo%*xt z_PQRksrql{-s-iqX8id(-N*MjRDam1wLfp~)vD?nNr!Xq^{Vu3Xp0v|Uh7?@%h)3= zq6YLn?0Ir=Bj*{tU(DX$E}+Agy<0Tf+Hc2#C%u!st8RU;B%n|6uQeJO4kh)ubba9+ zkLUCIOy0QXfp5zbeeMhjHf-)}-!~(ao37SI_Wd%NyPx)1PT%dm#SxcJebD#ykkb9% zAN;m&sL*~`<)@YU?e_7zd1GMfe)sf`mcJGxzG_b(X@nr5{Zcv|YKR9-N5i%(2%De3^wMZYd@54cU>yk?c<<;I2 z(Wm(IpeowSj#;HHgVz>z_HJVzHTdkgc)wl_#=%Fbd^T*2V0WPa=$qrC55?#UHX0JPf4w(wf;75eNA08L(eX! zzU`vBb>O~dNxQMS>yHDybhWnXw8KXB|GdF%T?^M~kItUbB)c8^_>&_O`Xo;q9e3qr z`jq6y8@AuRn6M`~VqyA?xlbP^k8k5}wP;(Dl+zs=el+#IHf3VHTm3&CGAHGx_sVZo+*W#N7ycQ&P~ri_cQyLmmm)7=&0cfZykBcQj>{dxI4GPY*~1&-=9 zA!Ci>sOLYVf1dGrQqJJRir+FqTeyae+}k*FjN8<`gEkM!{Q5w|d)ubZ%-sKYf7CA_ z2QtIAKAPT8@jSDk;r(X4)j?S|yGDPtc6D;rwV!5guikS(R_?Lpp;I@1o#nRYojn`X zj@i@ne!=zEG|!%&^6X;w4nwj>jea`!=LO5NFKV9@sqN2YH!0e2d-i3|oS_RcUT;>X zZO-hmj$51)hUc`X;yt8o(T1EO)w7PyS#Tw1)WCzqJNDMfJsw$fqF3#1xveKGXmgV< z$?dsjuU8}A&vJj69rAvT;ZAPl3*7G4Ry7>byP6Q_KeO+UjD9noZ~J8Gke|L8{zFL6 z-XZ6w)T+Mc#qUFU+*|y<{)M0Z^uyLmoW4lVPrN^S;#b*o^=kv4+#J#2sNOZM&@iQo z!fg{*FmuWa*JfQjH(h`Gx_ky)Q^*w7CzoO5ax_4ZS)eb(qFeFbf z)*No^b?juGanZc5Z;WoY)|mKmPtZoUAB}H*VHkCxt5=@uN8K)-{-8r%O4dwQ-HPJ8 zUC#MkUL4cJ^3J~Kw0>kXKXh`-(!TY3^c?En<>2kBDHDfo*A7p=xciHt zUPY6azVY2}L;ElApEUHiPk!#$r+z(^arupcb}p!vFe`t<$Xk2oH#?X=aM8~pQL!)b zAMf#0AN)0F*w){A`ZimgGHiLknoSdCEgY6IxI=De;mKik4+kEJuH#fNCfGQt>g6{J z0!vrfRDQ}Fu*k;>^ zP7zNxx@O!R5$8C3(Xnyfg%97Z856y-U*VIU$1^56PcMvkeeeFYs(pnA?i;rDc7I&> z=-%|?b=~}nn$NAhD`RG2k*bAygJb@@qE3^22OgY#tZ2jU^CO?vRgPSc$4z+iO87|S zEN)H53t1yC4~Xi}bts`TK^alak;aTJ7j667J(gOdVNCF{J1;Q}+oc*8vDFTt3dm#mjV=BKDF zN9KRyZ{WXC=09D;R!=JHbvxNfb_VEX0)hg91405q1HuBr10n(<0|NpB1A_vC149Bs z1H%Ht10w<>g93u!$Q2YE6cQ8~6c!X7gkuka1A+sC;oKD*5*!*F77S0V;K-1Gkid|j zkl>JzkkF8@knoU*kjT)0(7@23(BROJ(9qDZ(D2ZR(8#cWu)wgOu;8$eu+Xruu<)>m zu*mR$@WAk(@Zj)}@X+wE@bGY)pb!xNH?p9J;E0fj&dG2H1Jy63t{my3(7M^)6r_IR|KMj9eZ+)8#AA>{3{4dkTCLFu&GcS zbvZM%t@l&A>w8+QJUZ)lVS(nI)4hK!P%Qn;qw?-ydEHxQoNd!PWU|n9-s&~OGA344 zjdeSlA>5hK`|}=WdhgGecckI8!}}{|gx&ge)jPL79sl_kO(I*>y{TBbY4+-~zXetM z=Jyd!U4L3W_MJ&%S3Www-jf4?qXOT(F!oI4Z(8?`it7HX?x;I0i{8<{ zmXUlT)Te!N^DBebPOZEC_-zMH*E;C?s16ImdView?U;0@sFtTcpPt%9b2+bT%eQAN zwZFciO@4pHH0TwO^jD z+LpjAetECsmakT1DOjI4a&52Bf-Q-khUOJEn)5^75dTTNc6VI*=4)eT*4ePVdXC-GU)OA0ba>M3hWVNW zH_jj0U9j3~a74@Y8DYuFrA1k?Ez2B;W zx>svQ{aoDm$4|$c?E7K3%aOooo)e~T*m~>ZubuA9ALrWY#m8Q2HlM$?vcdST(z%pl z$97(P@AQweF3nh(vNJlK6PBEvbjdqwV3X|!FJ<)@7BwUG$cHtvCm4SJZ+$j@%@@Phf%CMf4bcmK+&-&Z#!&SQNR6-UG3NS-=DOh z&$FrZ;!iaC-uvG7vzy=RbL^8r1y$Z0)7Saav(7EP9Qx~M?=3ZI9A27zD9Nqky5d(5s_8)L7^U!Y#=0-0#e!Izh zhn0c)#?CtfN_O@bJNETqFZXxb*(I>Utv9dU@=5Xz?fu20Wno_r{;+C{$L#r^hyD0& zex0{V#yy-ruSV6+T4k5?8`0~s&(%i8T_Z2_`T6+7tN!2Ls2$vOUi*lg8*`?shu#@< z@Z{ZAiJ$j(bX~q<^XeWMdBdH4^>~_f??C5cH-DV%v%gBe*z2cuUU|6SZhY{Rf!}Rk z`;Fg_q+1I^_BDwt-mvNTnmL^drtD1lQh1QxuJnBA*j~>{zqxxWzE14pHBGKeY@^?@ zaNqdq_ahVD|MX1wpmk@CX}-+!sT+8p*_hW3k28KVX-r1gtf0iA9Z5reUvz5K__={f z#e$cEKD@cJ^Oo_>Jytz?K2|Yy)PwJm{gx!GI+Sv9#B=Yxi5K-J;&&`-vHFMNv03$h z@3-i1yXavz-KX@Zu3hGQ&3Jd*=ihbjo%~kr^#KJ(CpDOv*|_QSl!q6CVupN|QT$1d zb02(LcN_QH+%M)HJwCp4na{~1m6lyEzFYLs^Icco7Vy*IXYo7p*G#{^cfmW3mD@Z!_j&Wr)_I-TeD8i6 zzxH0ep3c1et3%hPZe?} zr0`(%ArqgDue5G>rN!fm-!1Lj;=^m9gHBiJQ|n~Rs!Q8kmK^C9Kh`+$n{|uF_dPl9 zmyTbx%8gj|^&5^y8urW|`*Ozd3yotwa7-NG{6!PrUP+@qi9WNjMyG?#YahCuZ%A*^ z;L5BHi|WN~JH)qq@cM*=@w28bxIIQcV)MwJQ$7xT{b@?X$F0{i?E0Q|(Jz4w_TGOy zdjAinXWzQaJ#k1H`P<`&H!Ht6$^OErDN#Gd{xCQP=CqPCZ=Rse$@vr{jwUzoE-5 zIr6sgbc2*Mj^EpEX!BP4PhLEIu*7gl;O>8S%h%<2{(%~*r^~1J?amGHOuc_(Pp{7w z9w|7!`F3*Dlxky!d@=vbtji77jSlD))&AQ~_xAg9ha=84uCcT*y<7iErR%pg-}T(_ zW;f|x3cqhD>?-1oDkEr&GW<+^|GpWm^Qs>%b{Mk7Iawj;_V>&E>ruxx9#Yu z+Kt;>`0}}Lt8qWxyA$QJd%}+a@Amw?@cz_m{cgYU^=HE#Om2B$_It# zvq1qyttT#MY_&?pLpEKejkyR>-Z-x$oRJ z9(vmRPTHQgW41=GydBl`twAlGs50y~`S!h5<*nB%f3SSB+xcsIE_>AeecD?6wj1Mq zzT0kAso~tLOZPYR_DIvEsDJIZbwan3TWkL7Qj;EgTkcLv4KVc5k2Q3iJNaqVW(R6U z3-yoR=#tc};m(hq%yWLcXy(^f$1YDO^3Gg$F7k^GpT_*&_M(2}pks6PcAPl&)2Ts| zw@u3ETKU1~!p)1;Ch3A&`LE7)T-r;&^nLC4vpZkBs5GL7>fpG%x7*r1uR1;~F7B5m zM#r5$cmHLM@NC{n`|wX2MpSO!q;%y6&)#Z2>gzA?XR_{I_}Pxr<$M7 z89L8<@4@$R?tPQjez5K4rIRP(TkhWU^{1Y?5c;?A#=ZhZ3M;FunT+1m~s*flNVm!`{;UW`agt)oiY`FMk2 z{|Cd5J#XRHQvKEnZS@6RoCmIOTk^T%)+uRMJ)YFro1psbc-PqM_KoiC{bAOl%fCH2 za%b-c=O*_5bZE1Tf# zq-oz@i%QdtcWQhZ7193O?DKW|Z0@pb&#Idju5^p3U1eLH1_!?b21DYKQ7$3;?cB#ouyZHBo)S- zxbVZdK_?z=DqMG^(!S6RrVY7{(=1uo2@?n{gc?xQON7XFB6yi-st#-^Lv~Qbr0Ab z6900?S6l8XF3j3A@mWgYJt3l1lV_LLwLU$JU$=eNuVKDpSH8c{z0;bKjCw->*HLTKMOw8)V zNxGiD{qo3f)8n;s&THn)YPWNwZ?1R#m-l<*J^x*?c|x_#H)|>m zpQ}82)yZdDls~SiwWQJFJv+OfUE1BL@Pjt<&&0*vjS0^Bx#RL#C4ScqjT(2(ueV#& zvfP}hTd!_iyz}CU?w@6NbUWJV@W+iBtaMsG_r%JTF;$mw{7C;{hJ)Tm29G)D<2E^& zJ3X~|@99tcMm_vL++77=6WPwm-p$Yz_*Q5*dfZPjgOY+5y)H5O$V9&G+}K`6YOcL@A$01dJl862TQT53Uis8Q z=Nkv^?7&SvvaI!;cXM`DSu!f*)YDxXD^;Bwb^YzU+-{vVwcj%_&&iMjGY9^5(YyU2 zr@I^0ZS_0w>*j%XWlgdfE7m9+;{UKixz&sB7N&}O+!)~5bq6!9pt!<4YTc|iN2V?u zIW{tIV`#$Y{&&YBVJNL++@j8s9Z@%u7!+ZPdC$2-1TjUiE%@~n)&-vqz zn9@U+Rw`4dLhtHP*Sn1#xH$3kvNPVBJ08w=HdE_+o5tO1y!r5eyK8pN%v$5_qvZO=FH>E%FfE|)#t&8!4-47dGzS#eoOt8>JCXkxl4{{ zwSMuvVRO%vb}C!-sr ztuHZs)vVo_rY~Q9q+{!$?#G2#<>mdcjRRY?>dQV=4R_u)rhkriSwl`ed2;>qqYAlp zuj?88a9XGK{U@BRSG{T7{IPRe9Szt$U_;UJb+1iad_^2nuZvRqVxdJ{XXd#IrXmhKvrnb9erl%;EW;Y*_5& zvcz1lOVKfRA`dFFP59;DvHeXqhkC7CSIFzbo{2r%S8ys>+$B>O9s;*u(W<>jE-F)}{Q91X+kku#hw=}FaK56>1K{Yz~4s~UarOcko)x$dN zy}o5rIhq@qV^)Q7b(R(`+%0d|q9H$-mgjNxa&I^B!IGwh_60q>xbIxS+M|Z)x89x* z8{4Ky_ItjAnyAiqt8%(w@8e^lLnr(DFTT6+=&55Kw=NCrc68VF(#uW?cLM9|t>13^ zn%d^`6U#qHteC~)ak)QQZRIY#J-W3{vH2rT{dRB2vQ-Z@jWe;!@~=vIT03Fh!(5j` zp1-eFr_?V;63!fn95^oNUOfFid%IV`Rp$(s*IU%RUy<1r%T3Y0cy;`sy4tL4EpCRp zc^#DXd%AYuhxb8)a)nPnIJ9Q(tE1N+i<$A0u4$4mr(L)6(_3^c;+%Ew^n?{w`e%$8P z`dYo++s2Lm{g*|9yLZ^8s(Wtf%CfI|Fx}hxY#TTIMgKM9hCQ3{Yhq$h zwoGg4RL!QkwlQL*^V4}^z@b46Bis&e8FqqI1+E`h>CMN*{)ar0@2{wN#*|}T=*U;w zPCeXu%wo-m8AyS!+tA`Gpf}0UVtCemcZ<@lOMP1j?q`0Etbl*4|3+3goaWCaYl=@J zbDEWg-k*kko0_gXEj8V6S8Ce-c`7=7!lYER-#J>Yq%+Su zdB>41aXWFe10Da|@AtJ1^elQ&@C^rAx&1)i5f1bo)s{J{KGBuI(Rp0{MBf>#EWB^X zC)&Jp&;7V%DRg`fpY=u0oK2xeEe+Si4H%e0uW9aHDQAa8DfH}zhmYjldBRT5O3YrF zYt%B)PVb+Wd(_5x5%cVHS#Q7R#YP@FVy6?`#=VX+RZ6hYm2Y`$WX`yZoNc2UUalXa z{O!Qg12%f@ghB~yf8T()PrmG*n$bfYelHMe1pl@18ooA>IjW>*ql zT4~L`Hd(^TPVmS!MWQSBDgR3jmjgYIOxz*SnP=AVyHIm;o}F8tNc718`JWH+THA1P z*9nA<56qs8zTfcr+)CNE5PDYAb3Px6+{!beL2d%)mborTYP-#lbacb9$72Y6>)`BG z%bXNW#r7^)53=%%3bp^py|3EdmFp+m0)5o!w`rXt+T81TMAMs?y3Q#q>w9zPvzvMP zZg2YwN*hute$J(E^^Do(GWx54EiNe_Kvkw}kQAJ?1;s&SNgDrXB#@hMuY!OT(O zxKdTkXQ_1v-K1t8vA6}~Sh+nvPLEYEB@BD+=cH=re zj;Xll;GL1oP1B=wr(-t;mdrXL=)?720^9CiB-A}|JLkFyT^4S+(7txreD}6_-yHQD z{jvJprh~U!8Z>wA@@)CmR@t_762D|gr|e69t2d>EaQ#^6hrP>Bn6UT3kXe!K*Y_Si zr+ky7Tlw<8U$|`lFr#>R<)J#os|C+1QZDPcw<`vG%yDVkjAz-_XL?*~$-eicvu`gw z#853ROcSaPpYW!q>6~igQe~3~E`4_Gto82I`GF&Q+&<%cx95R&G1`kC&fi%xdFhh@ zKX-XpVROK&&@EXC7us=V=|ayV9lY*oTz8i|y`;oSud~NTQM*RXt>pgVg198l2-ki6 z-d^o~es4(8?u{!oo4xAbhPlR;xkhiGBAXXYTH@C3!|%Thh-kOAsJ!mOIL>2lt9C2n z*EqGNTO>4Sa@sVa+aIwPXBFJHs={)P53Reu%c;&|vmLl=%>P^NvRf3vWslUZ71!cj z;eBG|Sv8j^d*0k}q;wsh>0PH)3J|>Ro2TUKQuR%~w!6pmYoOVBbY3}`=ry*R81tgL zaHIEwz>x?2g70kZxV^*VL;33`Wg9xV_nofSJF<^=Ztp$6;I6X|E6tdbed?Z^OMZEr zKl8n3_3tL_x%D8v+@sn@$7ih_)#BJ6vo{wA;0`Wo8@PGm#SzQd@F69NM!hMYJvPU^ ztz$KL&bXC+(c*UA`K3bZjcGP5II?Kb@-0=@<|K97b#+}>ziyr@%M6X^F?r~&rq3tc ztRal|p7yS@$Ae0SDQhQP8L_n8*1=V_`q#May+?MV_r%rB*OhuO`oY5%*MeT|nA)zw zm4`PBA?relmkE15xkbU&1BS*t>MJ{bwfokAU3M(L`$x#~EQ^1RcW!z1!QJ7Jd4xyQ z`SIfp!xej`JF8m^81+$CWzeOIeXNQoYXB3HOfu`rGwe zC-WR|iCmg%M%WBZ;mJFedG}v=Nx8RE(sc!!+-bXda?pI=90S%@?{^_FXL9w&z53iq z;-`d&xrD60hX)VKvAn?_3B7l;uQamvp$4_OJ)Sc8=gxDcKQVf1+ikny+jI#P@9B1E zPbrrZ+g~he!dhnKJR?<*61F1q*mderVLGiSV=a_QoS+aUq@8qKEkr>pPX zK;>xi;ab9Kah_Y%okP#QDq1zqqF${E6$o~z9@?_`?I|rnSKb{S7ppZ4p17+_>Dj+7 z@8>J5I^9^7*y*P=J>%S-PMKSHYujNVJ2d=}hV|~V6R%chCTvG}b_^V#2f$dwrf1zP90+ewcXLKtxz?e&+LL1qYJ!!UM)7V>!#kdqLwSi4_+AL+r4%z=Z>M5FJwB;zFjh= z1Mf5a!a$|s^q4UX&%8dpu4?(ViN_bQJNHa&J!U}b0jn3Wo5mC#;-OjJ_bJoi>4N;( z&vfXvG;Bn&Pj-0;V2A4avw*DU2=l1*)3-@f4&z74_1HCV;RQx$b*odMf`#G-Pb_u5Nv&EtKdij$+-XsXSz%k( zXI?z@!qW8)|&`i_Yh_Iz{M^$V-MedAMLlc{jGLucaFCPpm^o%Sv~ zD7&(2iDa)c*NY@&OWd`oc8A>kv%UCuY*_2ZJ9CN8L)-2QwzOE?TW*|us(YF3leiw| z-c{;W=CNWxa_tuH9&LMjHtDT*(|3y#L$D_BSI?UGw#}Ln zd&aaHcj?NY3Z@t?cGJx_kEUel@@AaR{b4nZZOnSN?S{ovv)>Fo9%bEdxX_v`q$bEd({*gtNpIsf^@<#Bi$y;Yuzr6X`@^d4C4@NvHr;I;c_`#4S zExc-O?0LD!-P%rmhf6J3)^T~}DGTy6TQPUKb3pQ|%;%Kn$Hh0AT{7>0Ldx#RQx*@b z>e}|n@xXVZ0!p&Yw^tdzD5!SKQkR@%^-p7SmM$~q?TI^WMo%0(bx_syZmM2wr}j$B za(>fCJvTnI$S~6d-Oj1=#*Yf^-EZUDYO2RBS$D3MCvASNXm>N@&A6Xl1lHNOf=hT2 zw{z2@t9kQX)a0D8An&Hx8lULU66egq*zHsMkDe27@Z-fKMeN9)KgF$(-_{>m{l4PK zU4f0G&$n5!j9W={DG@U~;NL9S(U=I-IUb9tvdM?Y*}b1fd?+Ir@spQEPieaTiR z)_g{jWkV+OmF5rhD?g>qfVh{}n=EDelusJDDB#eJOAB(Y$=k7c;!KZS&rUr3@Z?k@ z-`R5lJB!tBw~X7pe#V3%zpR>jtF|yRI~O@&tyq1_qXL(`X11*`uw{48_l1(1-@mt@ z=`rWEo{P>N8h9x-Ip^4?gHBcT|6_sMk!^RI1Z}^#zRdk0L7g9F@k~(pmk4-#;?~=F zofq!!kaJ|_>CN(VkDWVm%fP_UpQ!LRO#>gaKQm_dFH0AV-*qwJfT3g4Vy5A*BCq;n z@A*9F`sV)T@f)gbm{NV%hzEz`Vmgl>yLr?6CYCBKR;(^2n|N%04`avBqj$GAQeBuq z?|ARjbF%aGDutf7`B>vk z+o&^)_S&>xipts6bNfc?e7NfJ9S;)QudJFgs@~6|sJ3s;$e$FO7uV**)FXa}pI2G) zYPjM7ePn`me^q($xt6jAu3>()ZDvhtXHMM?AS~&T@Nb#l6Q)_8+&f-9Ib)-0t zblo;Zk+SLn6ECivbv@r{??hpFpvu2@^yNie<_?6EZ)d(&% zu;RiZF}Y&Lb(;J~!%Mlly$YzGwal?H2g=__p3rzm#NsLEB0FvE+w+~r#qH&9FZF0j zWv;h3jBoWe(}~9(1<%%BOf|Xssz&*^Hg|8tF33Kxi+h6Z!P}+cgkNs72|9Lep;x`x zRTh|X_31UsSGSPOe4^njx2#!eUd~_d=4ijcCGYjqD621Ve^`5L`?l*kbXs?FZl(S{ z&FU@8_j=>=8&#ce<~uUNGJQ$=tVNh-aYydn4Ug)n2_^K5)U@bG@d%TlMo#)Z@yNa?Tra$Jtd?WqSPq zkJ^t9C@`Y_vN^6px{uy{y;zBjo1V`9V@``hLmr%2`{Kf?n2^vFnU{+`+fP56KYDWU z#|y8{?tE}*rAy(5S7v^>{aJ|34gB>CdFXOCCDaCuy}&ihN}rmZXBUg7ol z5pRSXnOAJB?HxFGLEXAtH~(SSmgi)i&eO9s9eynMO3=NBdpZ{!%^skP4{PRK{(SzJIipISxpkmRu6I5Y z28)Bn3=(_vnqQ{(@XK$ezq{Xi@%nooC*>Wr`4ZhMuK(Nl`A>=SD)uQ9Q=;i*eW$T) z0<`^uiwzt(eo)y{%@ox)L_h5_-|$C=XPZh49#Sf?`TWd}3molVy4uRn*pj8Eu6`NP z@kO@2(eI0AG8Zp5t!nUdYR}V2b4K=DGkVjrTK%$h>r%CAnM#MErxausMf&=mIq7vG z=v}6dnW@G7P7Evj(0Se+K6~2(GZt5_tx+18=QWR9@6~cm&%LLPUaaV}x7w=n33)F@ z%+B-L-D%v20qe(I3ZO^dy)`%U)S~@-bFX>Y>tNJRFZcpSPX7AjXTAVe#`i^v7*;;SRF2<59rPLCS|xm9wzK`ODx9{R>bqt7g4)MwZOv7G!P&q8rR&To*}u_r zcG`m(1&?Jqef#w#w%oJEeV1Gtt5{q0z^zf65Bj*Tylu{TenU0$*m4D8J64$PIc@g4 zshMw|EF0$@l68;g^??-o6W4Ln9{-`1_>%96oxfXU!o@d#$a`FyDgQ}P@c{VKN89xABK z#dn$G4p*LCrR%2ReBNunY#cn@{ZOC%%Dan-KQCuK=NGUv@VBiq-?DrY?H>m>c^B85 z8DDu>jqX0Z7VS8_?c}1CeFn6xdHC>>5f5uc4trE9ySl)_m{!T#n?3E&W>}eyZF0Xa zdOQoA9PvQaFM563o##fjZP9N@@8mr}AL#u>UTBU!i&4#O+OE&~g}o|nidbD~w>oRt z-|p*!ZynEjB%puNf*$Sa1jhf8&^n1f7T?{nt5I&IUDH_w%$i+WoUWazteZb`*V>Nz z7rg!WtYnRI!yEoOa-fdy|F+S_k567sYOw0~*^MVe5n0<(mb! z?`pR7ciz3m)wt}FlnvY7dla)Y?CSf&Epi?5ydrPhqw)Ct_p5p4k2iRKNSe^^_go7$ zZTh{*$Rh2XPJHOs%ir%x!@Hq=C7!7^?5)xJ_-{F5h8`bX1xlBE+KYAb)kyGdq^hy5 z@!i+UZdS^6_12`>{H-@;?c62rTrEZ>2evCSEo4N^uJ;z)bMtNEy9$urz78*Ha@6R`Cci*|F z(1m&pV~zJ$SJ^OZ+H@c7$@`7CxnrE?2M0Vmld$vA%tY;pE%Wp4-gn{I<9dan@9mo> za}66+Xzj+Vk2_tv=Y7kRBy%6A>r|-2nb;eLpB68Zm{8erQr0iW?B9cY<0GDzy*2x2 zAGcp`w5rv0$MY5QIC-6ySry z>e!0>7MbR^v_2Dt;rGmV&Yt#@JBs$QrTC5b^sxVCbv@xH+mG*we~-kC^U~D>?K)H<>JyPp6bXvo3-t2Go4DWttRu03(q!IS!>R0{4rY;_VM!iy1~ z8*s+r(5~|M?AR}@KocJnX?<#>^`U`Br1wJJO@>`gWL2z@s#1O5 z095tRI8mrdqMu0rr24%fs9K1ZhVh>2`$nLuVt$Y>?PWB^=OAe?kZ(VIAB4|R8C6K= z4C$XHWca1^2c@))gJ?XTlccxNIq;eI%CXa>@R{_Noi2&bv;#c{pNUTq`|k_zxu65R z5T6S>(97|eJl{0D1I7<=17?l9iFb^!GG+Y&ds}_D+w)tAXEQmZZ;H>Pj`rU<8%_KU z&4!P&4!9d|k#$1|?HWo#7m_ejJ;bPpg~*$y9{a9G>}zD*%@xZF4-3l6T*D zJb=F;@zO0`M*fq@;)hyk@|^T3!S=nI_4|0c!etO1CV%)op4{<%r90AF@8nB-H#pvU zSJ>`y+ueGT#k<=+*wV+_%Zs-?XRn8=HQ)Fueo@5b55g?P!ck%fq8JgkK#2Gq?pKGc zR;@~%;OfDR8#JvS7+ekiHjyHB!Anm{V5x#K_*#Y^vUa#X!sUjmbK66wOEtXD$5ol% zyi4Ap8()+xGgxR9QugD+C~cYB!(vef=?|_M$pT3{$xD8R5X?yO!G_U*02iU6fEB|Q zVgQ~wEwRyQzJU*T$w;#HF}bl1hzMnha%?jK=s37G)ezp4?#jl8zAQg=GGAZG+&~a#JRBR-I#W}bgP4760)Z6B3tFzdd zyi1G)IHf`hq7iuyQwP~ZM8$>^*MA`qQK3E1UD8*d%K8-Y%9@2Ac4T`%RQRT{?!C5+ zSvIeq)koqc+`TYsA~4qoPat3tk-0{E*?Qtq;v)NGYg}z`kv~^lHkj&3uTTqX2x!uF!cUMrj(jFpHXBWzCwm#$H%Pw{UX*+$mp3l*8+n%ONk&}67mW`t@+_$< z)?Fz-@*R1WTqIAj_mMuzi;H|m$|QR_$(NKtK9lFjXL6A;=Ei51t--Yi*BM;5alOLj zo`4vYxQgR4;HrzO1uh;}9IoNGrr}zQYb&lBxbpVREYsntgR42N_P9FY>Va!Cu9>)& z;o5}j2(Ht({=k)t%Nt{_2(GfYSX`}fb-)#kt2Zu|3=h;d0{)sw`|e;+koMdE$QbE> zi^DP>1rKd8gf%37+7J`+&w@C1>wwjku(a5u#HcV55|A+1h?0sG6pTp(*sz^4>zo*Z zjhyuD(-EIL;R?gWU<~KM-9Cn8kvM*orYK5| z|EQWC>KvIV(M9eoms85ZRQ|lJJ<7VdQMr_q8>OI}N-D~^mB>Z;8IVBfs-zSy?(%$8 zS(04oibve#c__KuL@DJ;xm=;3^203JgV0WRfXXh<=}eKQk+&=5qHvezr^+F%CsGC= zd*rHcQcy}4xrdZ1>OdhAiT0J7K-o*lN7bYx<1xyWYDCFhJYCI{+|9$KmOL-=qbNfr z3MD#uQ2uU|MM*iMQu5q#r6RM^3m=^+Z;H5N^Ht=N=a*NOQ!cI)>^!K_3W|!A7oxf< zlyW!9S#bdsKy6(}j&fILcR8glKr7YmN<~pOPr08`?rg*lNaSR6mCGk7C@;!|6sC~x ztt_K<6_hE4Q|{eklZ(Qs z8ig(*!$F}$<1)#cx{^lvke;@FkFjzeHFm~5FZmS@ca-`_B>yTYCz%^1e?hq`mDDJd zucZ9k1DvII=PXyK@Csxu=q9RhPE-wf^l(P@cncVRq#!uV^N{PDoD@E2t+ThxQ=yPK zm2;6%m6VMzn!x6&ZSbLOSuOGxEC*l9{99wkn({z1y5xuc?0v0=z@q^2OuzqGS&fQ*>hwQ_ zM}WzVBH{+wWBB*Yk2~?PM%Li;4F*+lOBcTuOowCp8W8{*H?@mgz-A?u8yNeQSw;Rp!{-#8ix7l%)djCM8?RJ&b-#?dV zyPYHV{=G!o?GAgsS0~???-g`>4-7as{`|J{Ju-VBSdhaXIcDuFT-}_6n-HuH5 zp_D{Fx7l^&{h*WRTQ)l@{fF`rJ;G-9)bK-~MBD9TyqdANVwGr-iAZlYLlqhabag= zO{C}TIIX9)Q->WlG4A*XzeMB8x&w0w(1 z+x7l+<+~-?u7|hC4@>kFn_fIYeo~_Cdg`h2ixO?u8?Te!lxVvi_o)1VL}#|?RqxB6 zOSE0j>8yA!(RRI~A9xk=MRA)Ru$;nEqV0OQri$#=-)(xbNQJLN+x1pM75)-k+NMXE zrzj=ScD>FHg-)XFdY1Ew@)B*=d%REtO7yvIS2l%jpK#w>Sy!S5g4b4|UO(X?XBRvD z7;7lu6YTVjH1uH`oqjtIR5-TBU~O01(_TbLpWg>;&zAQKp#931_habd_B5AlY3%gn zG_)4wlQW$ui5FaH1s0;mSG)2!(*dKg&oo_{=)N-Vb;g(Wi7EiYp0igA+6Lm zCH(}Il!-&b9m-yjCO>zy-Lb7+pdH&<*+ysdE>sA$$9EEi;OJO$0J@wsw>a6cqa!+t z*s$&OUiK&TPRR#SHRMBD;FwKHK4fN+zWxRLN*UZeZ12ualacTEJ86$2O@dweJEZRh zn&e|op9q?q_3g9;G}-U%G#S~29B7<+Qstj14c!&bI+jm(Ek`;o4c#*hy%RKfANKO! z;j?3X;x#I~rJ=gtl+lOyZihL<}G5gk32EpUOt1il=Lt>b2x%+%lOi8LGK4b=k%E(EJH|vH zk|(Q@h}6#(z~u?*M)HtPw#JdS=0W=0nu8AClRmZoE-9I8zey!QjvoVgErjJrBoVSE zNJHA&5qC1DZE_DwFG)N$q>B_Otxg>Q~myZk(UH7WAYe*Q7zjwI}Im_1)IyR&Tg^%dcjr?ZeDAB^bXg?Pxh$I6RJ;J8DtQU$H<*rT;#5W$D%Ni>a>k6AJ%^5+FlY6q0jr!{+?Wa#n>{;vOqo3wV`$dA z&*J4Pw(75D9XNQz45e45ELn@wy0UEbTD9vp5X2$FhL2qL>#p5<51nqaZhc-~7gu+W z>^_XC?7~H7&$$^!jb7;DUaq1gbmW*U5y9IZJ#J-w{ysUV$&{(8GQ|R#PMeD^~6}x_m`=#HGt)+ZF2Rq)?VtSQJzlReaxk3fkLO>F<`` zsiae&GE<58#m@dpe`SEH&ZE9U=b2z|%jxc#s~l@m@UCv^oK6K5d7Y@rMr9qRGD>$B zHm; zoZYvS(kFgnc_GNNrki_pHg8SWAg@|3?(ypiWpa0}?w(Ikqn1ID38k7`+!L7GF69*Y zno`~xuYOZ4u^#ceht%c064jY=x{sXd)VIczjb#Vy?Q3!=p={$^)V;cUfK#@Fm1X1i zwifFsO)gm~laVv=wQJ((;_h>9CuqH?e9oDat_i~iD?2%PDcoE#k8B_R);VEK-5PE& z<>OzvN4rMmsNN&HXLir#Zn@(JCe%>$uj-v6v0(vc=lD}4ohlZjB1Q)iz1 z(Xao|x%0Pe-?K02{Dqp6w*I#FNK&o(4Vt%X7d&{x$W`msZ~t}gzB5^J`m}EI^3})W z_|9D}U&&M;Ji<3$@K3#$uc)_qOHQBs1*+Gm-+)Y#-hI~YIeF^hlRsWWMURY$olsO& zX2FW}+xI1%xiUpodEzAX$O1=_j-Nb|T)#o9)-JBznTwTq^f)}iP@z&)cGT#gkl6hP zjvhOE?)JxIc;+wE_lmM_ple>GbC!gqnc|l?6>v@PRpfT1lx37UrHg`cadye#-q1U% zOH&tx(%0Qh;i_;^K(wy#R5~dG++imrsfANfo!!s}Xh$5gw1SxHBO zeUp+dn5PzB+n5&h{H(mqVIU_*@x4e1cm-lhR{ z_rrE=L9j@7>-S~-WJ{0-*_Sut?t}Yr+zIcPIw476ON!s@X`b8CDrZ~M*wd<1c9n5# zjHR?OC2AjG7wj6@sEE$CCL#VP(vv=}i#usgXgHz|0mB2OxHSWb0kh-J{49=XBax;A zsW1L!p+0kP&BX=QTDlN1jYkmaZrBVr^N)-q#zbztQ6nVC> ze+?ucPjb-?2}lJ#lK{`sM&VNy!B)f^YNQhwt(mhJ)Tp*r6b!85TiT9F)~tftaa(kMRgLRRH}wRJj6tF4n#COQvW93Q2!uN6v*Q=?a&0&UF5Z9 z3vJ=`TD3rPw3&7Kmb&X`3uCe9EVRj@5#UsrbsqkYy$i;nAqe6Y5r)<5F&PZJ*}}SgOMA>3vzjyO zMY91@g%=ps{hu6JMx&0S8AgNAAsP(=$9jBA-FXd$7Gp6(m&FKrLBo31b66wDoW^9+ z(4U>sv@SFx9FsWM2Jgkd(2Ht|z*sa|5d(wfEUeeJRK{Yq7#WLR%^7)}20p>rOg~f^ z+Q^8QavaZ@wHDr@W4$Xnw9UT$1&Lj3>z_ti|HLqn#2+S&(J~e_V=?LtYV?6#U^CAr zv(BiNmW;HkUP?Y+wd8$znk*Iu$C87AjKWIQfr}1y{2CQ9W9c)Sh=+DFV-`(jRuvZ3 zwX=$0OnOEG-|vjhB)NFkW%fUcy{s{1`P-j}bV>pRNDW?>LS-JZIflq`XwBW+bHY z=N4E-L?d(>1Ny?u(>$MH-(>&uwh>qNYLh|K88LPQQDk%cdkYkB>ga6^ZDKf`UJYmb zG%wIvHs_zW!e|iHyp}f@1x~Huj5^lm-)@CPi_KS1Yjirbz;OnK%@vIyqa!m>8yOR& zHwaM?kyuTFBf|g{B=aa8bE6{6j7n7#|JD;@ID$HqMuW7&iaL!}P}4e{$*56hH~?~g zMc46qwOV6D*aMvfn*z<|`PaKn5Oijvnbzt}T5OpnHt(Oe0M)JnQ>! zw*uR}pf?)KYDVNWf`w!A)lRc!d||htNqkmpHbDQ9DPb|{L~w*gj?#C1~L%oe@KY0RRQF)>(I4Xj_? zudkcdnjI`ILOXMW+rnZ`cyPqvFkv6!XtvVsoBC!zq+j&+k3FJRYGYJYZ%nhfIuc#F4W-pbyzn{ ztpB%n;U~TXV+BhNUW-P@fR)y>MH+o|C26Cz&4@M|;=tG{XVDoM4O{d_ zDrjLedJ|_B%sQGeiVV*dtN-;C)Z6$lhY=_UJVLc-Ef$MFm^+#c__6%-8ne!##~VSj zQBjdC-t4REr?HJ_d-WV&vxS6+(VGllCj^W~3tOVYSLaI`0JHCeS0bUggNbDq299Xv zO`O&M#*fCk)@w7|2TJ~MNrDj*Qq)_tdbI^7p$tnZ#eQ|04A2z>!ypX}5jdVPBmRy? z!&ywCUdNXHu52s@kpu$5>Y+7jHAd`<-jc`YX4U^PPc0ZQPG}3}uv&}bACuurq#NKRrtm7525ET}#{+?ciC3v4?6ZwO zQR{IS(Tj-1#PDW4V`McmzHpjIk;;74Y2wq<13U5-ax9BYf z)P&KBTD*e{Tde(;DyTQ<%qASW1d%a;@y)n`x;VU&431-;y5wslP@kUuOb24i)IwCo zY1ABp<(b!+S^Ym%vZzBuFJ8}xdJ~p(a5+qmzo*T5Y0yZgEbFkrKmo(anM@iia0m&8 z1<3FZmTeI^!uA+|JvAA09BUjW&6a;iTql@K5EQC8PS9w1(PYeUj+p*QQIAF7bb=@d zg3-dO4LAgp9Y#9k9}&r7Hl|2*F+j+cU@}<9=^wk3jy4;4kuCSHR>#cnT7;p)97Rw& zwMN61|F@4jI!*(jibV&RgheOt8n%K8ugg(HqD7xFF%iLCMV_q8V6k`&qtjW`oCpaI zTXD$eWhx|@k*To1xWk&Xn!-C_jej8mD3t)wTFN3~Mx z8)!8bf>Td05z`=4|nApl0B_no>!BScz1Cv7}k!D(8c%xopVyiHp zFO7!z9L8TvaBNg4((zDDa0XH0lgu1rVyjm8d^)4VB*N~_TBI#Gtv3_lpqfMIL<yeu%kQS5w!S%bf5+~S_HF2XNHJeXJA>w=Ub#9JrM;k5DY-c85XJmo)b+v z17k60Aj@N`n?9dVM-sxs)e;&)dJ;)ZdYsJF9C&fPSm<%ZjAA`}P(-MI)&+7~# z#09mwA#bB0}~Jf*Hp|fzv}9 zMvFSO;TO_GTPw-YS{zt4I?~SqXVS5a{%StHF**0Aj167-v5|J*Th{|JizPUP62c8<9*>aTdaR*`6pSTQ=LR(MyNv9Rs^nrNQWX)Mrp>UosJuuU2xf4x?k zLJsSY^`zpUqjmT#P&CJeko;^b6jod;6>8qVsRgycpkbQ^lRT}8;m7mzY?rxnj z#L~KjSIYG1%!P)xbdyL+lqk0P{OHz^?x$&+^?h)Nv?_8YGX@>x$3(w|FuQDP((UP| zm6X^-a*!1Cs2oJ&S{&ASt!TmwF$*@%6Cru^Mw1rIfrdu7U4-D(8QT2SBf0HYwa~g{ z2sjoPp6xh=mYW#W_9N)m_?RFb4gtu-NX3yE zAY$bN9>O3k!<)=H*8Kmlk{r<_i_imeqJg7zBFq2$Cq4NE<=_|i*o=Cz38a7mL2lSM ztLmX*n1skk)s+Gxics+x0b-!lxU<5HLDpD6Il~S1~DpK&7cE`U#x_@puy+f=D^H>4)oCU-_v`m3Ax8Ak1|Y^4$N z6lxz)1Xe_2(VE!KH?6I-uCxDCE6Izj24>Ll-1Ap9Q>SB~hoA*DP69e$QP}WX)@E8+ z+kdi|jzENTO_cT@`-pU4gTFLriPN(faty|x6?rg35Dsw~4U~*PaYPU`x6UdDO?AFb znFXmB_T4A$ipWg+)q;#5 zZ0`^Y*AQbI_YS-tz|eUM6qZ_153~TJl=0LzR8P?JoJnnjyjI8SENlYR+_8QT=>EAF zjhxd}s=5&&ERJcC%oercOnM;BAhI?B&CGCmw(r;13h*)mPW0Hwz?(os#rC8Ac0ps} z*H_P^)$#z;;b5#bsnvP|+y5KV0(@vxGe$F6<}_I827G;5vkoG4GXQT;B;Z8Oumit7 zt)RyVMTh0zfN4nUP3)j=NNa(>9XL{x1p;6_cC^8i*>RA7CI9n5Vil|tu|HsqLbVPM zBH>sMSvz58F<#Iq79f2X!C(Tn&6wFCUtd8Bu#+OqKw+V!1%pmthko~XA;+oeB1~-3 zO)|j@7?PgjuoJ^(fgMJjkQgh2UOF^cxr|hpTw?Q)O5~oF6LCO~r#b|DCa-38d~X^? zO8Wl0*r?7Dn1<1aMj+A+0&U`nI*uJq^~S5Uoo+r;5z?qSV)trcFhB~mgyPis1?J76 zff*Tq5ab7VRne@0Dj%R+cEtZgzXDwb@TD5+83Ptq-olRjhx-*gqrjMGy@mm#NTW8e zqy8uQ)uJm2)!7OycHwFJ{j696xOsO-3Zw0MZtO-8+F z(df)(;Oz|T_AsD^Us5j~W9p~67|M0>C^E;qw z_2_ytj`1|jPNm`r17iH*$^(0)rq%v9olZ?k4A@Xu7}3TB1FqTu$u&k1kOYH3kZwSh=-63Q z6o$dygR!w1($RoN>!4;e>9q#jU=*U6{lz-NZXp8V?oWUfoL97ZtqG7XHNYzZJ4ZTY z+En8Z)1#YIDhV76JjS=^++p*FNog?9CL<(n1`GQ$^?9I^)R{mDN)`L0A+EM(>qL%Ada#&kBL`UqZ{`_0oc}YgYQYz4M8GG2 zj7fSDo6=V+m|-&sqe<|NsGFW$ND-+`dM!O^6Lj6y@rgPC?Z`0@5)*l`y83vZ)Q2t{#&akw_ROJloPaEv- z#IXy&vSX*!@X!?z2HL_dp{iz_g~>V~tk^GUo{B_SMJx=lR9Un}tWzeAXP164lTR?9 zG&OMtg=U!a*z;jt2a_IHxo{eG1tkICQ{Em}qIBnfD@+EfUThddLpV$0PR_zM z7z}Wokm~_nhOhqQP5W0%c_Q@!0kMH?BmiV}qPRBt%FjhW#gyta?r@LYfK1C=HR2+HM+5!&X=glO`=z zMJ)Ram_GU!sygY=v`y8dG!^G2T94LSVY0y(b5TTeOmiBGg`o}DEICna6xcPCgr#w4 zuheHoE37YAjD`<-;zLo=@n|7m6R;?}#sY2+9RHT@%t(N56kth> zuoTyFJcKb@zcVAa8ZiKog)ISY1<*Qn+xKQaH7Jo|`RtT|T92xjh1lSmmZ9X=N1WY4aC$t$_4Zu=n4!AQ& zt9MXizNUXP|3CYu773IS&V_wzAJu6_Qs@DN4<&d&11yQb>kxi|fw{Y${gsj&TBPFz zbOhK;>#W==f)EB4Za_CZe@%nS`A z56|w&pz*f6urZNN*Yb#?WYNP+RBfRJSbOc2xZxD;=P$5$+(&)h7Q|K&oei>$#Sj1{ z+5lr?9h4KU+b5s_F| z(77>D5n&ic5#1!~076vWN7TZSOop$0v#TO4&JM~f z>k$S>eAtXh-hD6;2*p8xi7afNNGctXm67FD1iuQ!gh>PW9I$5Waq1}9wIDu`bcA21 zmUYYin|H535(vs+eHEJAOp`6sh`IX6Zf?7ph^{1r^%1crY zNB1~i=;(Cs-}bCkR+VCvRxOqHzO+CTQgf-&IMl!s4t&UP@OfaD!F;CDC#eKdX_M9b z>szY#C&Tj#U5djUZP0T9tk8&^BF&zn`Z#tRlYYs!Rm|~p4%Q5kyi|Ja6kW8f8;lIc z8)=%x0US;dxi7rC(-iS7k@D*PWa~`Z>*(=x@E@zp=QBNih9c%*sf}+O+ZAh+M!my) zhs;Bzst#XXHN`mcn^E!(W0l$JMPAQCPzZ6D84j8R_AJ$3dZDR|dmQsmHw7H~R*{DlF6cCoj=w5Yf1G(JxnPNq5}Yo5aFOk;6#Z2pu11boKyhF=qrkN3fNGMT7tLMvlk?=2xA@k>6rydsPiX6-*m>Hcn=U!m_=B%FlL}q z*o%~aZZM=;XH&lpTcsW03V*sPLCeQ;S`I27GrV)q8urrPQVa%_2I@=(HmWcehvC)b zzoi)XO@UFeNn_UXJoIQBd*yE_1}8VYKs+;{P4FLLV6Xly#RxbWLiPhebkoZ$2wN2|T7OrAp#tr6LuQL&aFni0Y{IeIH3dgGZ zY~i2Z%4kg*cS$sy1Ho04S}y2 z7SO^D#A^|G0T7>H-GJKULF%sh2P*X$A1y?kCPIKO7)28t^oi`l{|~i-Bwr61JX|`! z$qxJuvyc8?)C#7x8jS^Rp0sADoK5WG{};7_{|nf0!NVK}Efut@PyXFn#ezkE2*5pke>`mum&jT)^VfCQhRRcW=bD31e>dDP^?;bYa-P92I>>T0dgxmitw{^$r=ETJztlSD_+dz;=YZ*?by|y-ef7W8IudaJpawIqBi`yD zDS7?B)H<^TZkS+%q%i>#gf*Rg^CMadVCmI>73++E2O-#jj(z(hxgqKT&TWDQE}nJp z%ptPxek3=&ng<9=gtQV8b-1Ts-~UK%ILSja54YGF#;gIJiT&^+xdDm~Zv>oL4-Kh7 z2R!V@AIVLC6%3%oIXVD$SXAJ;(O_u3XG!j8q(TEO2W9gH*QP_vB*K7)^lk z=->exQa6)^P5ho*;NeGri#Q7qr3NE>)3N>KMBkUXmo;i@ztjp3x5{^|;!`~lsz?k8 zalaQzyaXB%SBS_O8F*?oX!Hy_Ku+AoeNA@2F@h!ON?eac081f#27@I4j~Fh5k=_@y z0(=W&$0qSmAUb0Q$|YQ+!&zDaV|@X@rf2Z_5Z{6}Kxt}*q;in_Uj(qFbH!*wfWkP3 z09ds;lO85Qh{(fe2g@af*A~{u%DbhK1mP><3C_l$5~-PkYQXxuRVI`EK_ZQDz`jXp z3v@S_24KU17_{glC$)Bb>St;uT$fM0B z1HAdcNhu94`dDv<{wvi$h!sx6;Sv%~SQP+*J?vkp2IR;<(jf=~oV);A153z%r5bve zJOj@TBPT@4!V1NX_*bgIz`-$$LJ?y?4gayw>5cqXsv*EC7zYeQ93qbT;9z>xzfuiI z-eL5E*8!gcBBC0wqyLp^Sg@V*Fv5ly2FP+?X2!_(Whmc6NR*7dIi(RjXDr}z)FIf; z&fl&nPbGh|p83^U9;z-d6Ix#X3bjnBvb zXL}34XM~hP@E54G@V}9r@Skl82^F9QsvXM{(3qTsohbjid}mDh&vp_6K|4GSnKc@q z`1LSaoh&zl)k(pC{5`%Sru=97%OEm10>CB=0WCQ}&9PIzdo}rLAIsDJv%O_PWF-NX zu_C-!zy~zPPXEs~#iD^_7W@nG@Nx;?xN3HWoJ%!P(i>T&2h&(R@qE3fpqc;K?t=Gb zk zXi5Own>cs6*PjIm;79Z#JZVX_?0!GwjB3L?i#hL44#=gv6wS|H(3qoYhlcyfcE z3frmI0OgpLHUc_fg5``!O`G&{<>gVj9l4RZ?m9af1HrLFVu;x@SZ{dVurTn74rm6{ z$n&iGh}HU?gk4VM^v~M28H5thngu|ijHn7ssj)R>T*vux$(q)I1J(l26kPPd zRDoUijp^Y!9=1YyGkoX6y}N;3Bz4kX`-Y*&B95)iB!C+6P0cQrhv7vUtdqfU7+J#z z!V*aeC+Ilz9S0IVJ4jy0XiDXh7*X^DxFUuRYdGYGc$8ftk3n%ZNzRYWy)U3=jcRyo zCiC6|qio&+<6Y~kNN;OHoOaV%s|m2#>g<-hO32wD%0@s-0pxbl)@i8HCx^z;FcqbAZy0@PY&vijfLOD?$ZL>FSW#wQT!GRA3efSeT!)>!Kpa7sU?;!kdvg*I{hWvV zjE7KNga==C?e}+#297F#tkZ&1HzK;2z^?oLyx`tnXM&$53|!*xLC>z2t4Uvx5k-8i z>ZK3|w&(-a_%6hKHaI!NS<%w)H>qYf$iF_IkD9Ve&97AYGbU<3YU zKp*HJpKd*!yZyyrD1sD7;mkWi7W`q*ac_9LJL{QQ(o4Vw6)ah@Br8)nCyL5BnK>y- zR?a!+oF)HWRrgF!*x9|kUDzMUo!gzR?y9bO_3FL<`~O>i)4lRR*IYEb+Py42b>hS& zSGW)EhTU#=fX9;APW8#;VQy|cVA+?w`pZ-ViYCS_d;B_zPV)6zTlTWn^t?NDX_tz_t+l+nnQZj3?lsOGtqYbk zMWC^2YNKDZHayu|@AifwZZk^KwSqS8G!|fZlJaT!A9xDb5!N?JRSo4ISb0dR$xM+` zja^{sg}SRHp#IuJoB|4-7PhyuMS+&^os$yfHb|4YWx<{fQHf14OUGK?ygL5isx#+dFY>|G~-j@gf;yCyPO>d7aWE z6A~GU4nXUZLWSCwTK!19tL4m&c*9?HdVMYeN=6lNoRWQ`E&|5Jcbg4#?um_)8w|HM zMu`v~*&ZSe&|h=_n_z}>^&Xuo9fyKW)51ezLMjbVFVCN`bEx;W4xu*keLAMM4|_eU z4g_%+S_~bShmkuda0uVuI_#>;53~-q>hgm+IUN`ckf!6W=S+P(T)dsl4iC%>IC%(0 z`(@1BNYsaP+$%7mW;->05fzNhbH&nQAKnd_y|ja*4pqaMtNy1YHDba1!DTPcKUb6F z2~SCczCh{NP}!F1!>yh)e*nkp`Rar;4YLlMJQ>;i7|;GA+F1&XFS=l~9*7FzRbwl- z=OH7q9Yc5MasGh#){fLiTf%mE5PfQd43NcvRI#9}8&*xHt{=2X#(Exy^blhaLsCn6 z_+zcB59s!`TZb6xe0>gowg7NY$wu@z4AsZ?0+@l(43C+kfu90*szV8$OTADC41pj6 z^$Wy4+)wNWUIIp)4Z?-~-$yhOkn<-G5D&sCb6}Ey6FTvc1W(ncTGuhUQ>fb|D1;q( zRHqO0`cP;Ku%rV28dxk6%LpXeHe{Z%?HB6Pt)bj}ezjC(pwq3MEetPSWK7qr2wL@YN0Fb|n1C8X-}+6MX+iS=l~OP!hm#5bf&_A>b){*K+z zzX82865jxcS)v}Wo7?ao;996Jv@~^G!#D6m-xR5{WH7{=(R@!_m{DOzVWQ(?DZKGc zT}n-$(sMoHmOc<_m|#NR{$guZELOMZ8z%|(BqIP<7ETJ%Ec6gi{L(HLz-XAb5bAOe zry9hu)t61AX7-t#PQ|B!Pt3M6d3FTz;1vN|1tTNGaUJ!QUG50J3+fB9`EkdE0y0ux zZHc;J)6vy^ijRwK=an*EVI3vx_Dcqv(Pz*omPfiL1C0kX0jbd%VKhHzU(*4Gxf_fJ z4VVSaWJy>eE+s^}b4y>}rEd&BaDJvLq;V;8Kz*b2PrLNZ8=mTIiooe)Hi(Nz{auKV zqQp0Lew=SE?pR~w;_24ALugAFyBtV9d?--{N(?R)Pkqbm)~2Alxr54l)w}@mBAPqr z{Fn4M%&J)3Ak&2tO& zz1Hf1-6%F|n}ZW~0`L!Gjt7aQ4_pB&_WjldcRH~5H8+NCOz6wOY{g*m*ca6gbTaFp zZrB_}sDs#sFjMR#QV_0wsOSAb-D+wafr`R&m~iSQ-iBI}`jI}PHq8*}6x%r_d%?hD z3FchgAS#i|2E$2)7Y0mQ{aBwGXBu(r=4K}c@+S;)!dd)Zdd*BoJV;Z>V3igp6Wuug0lfP2KmYhoxQE9e{XKg&p86 z{c``IXb0~cf3JWs8P}do@>lzBtH{{l$!n$lq zaLpbEU(9qf~A$l$F{(YaI)vu@J30oOzv#7ddX--InBqyFID=;X!5 zSRL!L(wa}OIJmL0qSFJH_xq#IA(eaQ7gQm(Rxd8zaDqq$dPsd! z$5oHEcFW*$<}2CbGMAbgV6mZkj3q9HKS_||UN;Te>^f2N%ABGs>H8^1Qrm_1lo}OF zj>?yJu1m_d=SW7cWHG|rd6?ppQxl$NKtqmmyuW$*dhR~?0 z$2D)0Z*S;v*>OM`#%1v?P~8SFBnNpggeYldk<(F+xBi*o3YXfG3nAO7O;qDXvky~$ zW!8#0RA#`976a2s5T-!t%F>ZM!^Jh*N@a+Tj|SMly2*XqHA+BzlIM+3rC}2<)Dx`# zBT$|P891!6l2qVq$^rO^Rz*f>=1`UJo@OIs5SuHZ`JEw|N^`~#9AS5(7?QWd;b?Hg zJxKpf{09LRE@p~D1Q@ng!hIr54xCs$X}_ibYzaYVNM&q@42YJgC-1i))C; z+Z+F3eg9%Zf_@;?t|;;z9-wSP`h-bP8O|NVLqu6r^wzx{AK+=0)P@G8Nn65+$$EDL z0cZ1bd`x~Vw4B6Nhh0oVvaW?fi0Y6b&f$j<5@^3rH&~Lat(rsDQ9q#F8A+PB7HW7C5+Fr7jdN2F-`qQj45(_@X?jFO%N$TaZ)|Q`rG--qJ#|puy>sl zmr~S=M-H-+Wk43+RnN2}@;iGYXh8Ih`ekY8l?g)-fy<%*os5{O-a6DrX2OMto-UIl z2*`nW-m|Qu^DUBdlLmPLCDpO}zo!bGy%0p+-?=mgm@91#i@urPtcO;x%+7aCYjPtkkQ4a`yk%c z^Q?m_3l51QqY6zGD7BBUt*YnmcXTZ_kFEhQ~h5H*vu?!L=w=ll7ecGO9lKlFWK*d6tPz(OlgYJS?zhGUb^p=pw`5$ zIk5|ktcL-3+0^2ztYKh&viNM56D}ar5UWKRHC8XT1jbS?|LXf-(v9^b+K-SA*LiR; zfM!Px7b``|M%`!$4fyPJ!Df;ho7PPr88*2*=nx&TZ)FP5%d^!htP=|^jm^Ey9Vb^K znF0I~S}PE#AX(}e#$2E%F}6Yb`*>=kbp4yGWAn|1)iw};P0hQY)aeU_jNpYcwDA&` zmr!Rd7Bu~K-dfcp$R1K(DOpnH7;>VObzIQos}^;>eoEWck2xMXp43A`401!S zgyk^Wx!G4QZ&p9*xLLSEI&dIx42V(5NtTT1Ypfg0L6>-nIY#S!aL8sbU9@Vv-8rKy(K!84qd> zFALP`EnQ}?@H$XapwJ|f)Ey*wPx5{&und&0XHzQH2`MvpgVjj6%shBCHVqfsj42IH zc+D^27P#axFoyP+zj7nVM+jpF0d6~i6-2$!(jfN559;d&O?#`z|KKCZlJHTJ0m>%_ zE2=$FKYx?;Ko(OKVOxfozPx{JF{qfBtHTWx1qI^k;J~9ak2wpz`3xEpUQZ9#2vf*qf)Y8FY6V1D5dsP{V`lc+{-Fb!p3b=FYtx9n+h|ND(3e zf$o!B#V$aFs@`TjL`;)8Y0W+JvX- z(qL;O2TJukpo2)gW9ful-1uH5EV?{d6hV7~S(mJYdZ#5NPO-5nbG=wRLUYz;nH_1` z5}Q;5FoiUakkbanrvBSn=kB4Q_0as{7jBP=;fX#I`y%QkhVxU()Q&A@bgB0^vqy#~Ul=Y~76imWysBHRzmh3zbPXf(qbrI4kgmb}kLlnX0tZ{H zZnMsxeAC}#K~j8l(nW(A?;jq>JVce)Q@0bRS_1fvYOFHAWJHHF!ubxKVaX*O83^;u zJFWXK`=%|8=W7N8eU~LdeNnzf;t}-s_=6o@T>VN8@R|xJS}*t#Ne+1@4&e-rUJ2zg zPFgtXZhc}HUq1e@pq;?nN`}RTaS?PdRxZZBFVsEO9&zw+=Z@~Rjx6h@TXnO7!N1G8 zV6PozFDvA%=A#dpWGMj?KS(&Osdw+~j$kolEZ?II|9B+E9~KOW?QCtV^)^nS1hlmw znCB9w&&~rW6DYI14Agrq;l&!aG5)ZqF*nC>_5m){t&vRk&=n$fXoFLswf9*o%Z4u0 zb15xWk*nC+xE3VO`}H(&hojsbZV!4uu(2(cG?ZwFk!up{kLZj?ly&E_4nDlUb~rJU zn+788>)2?hK4R^=b_{-xG)&mTu(qNHtv-5y=kP3KQ2;!#I|S?ySyvxx?(Pge@-zKP zC3hEW_1x}WBI1dF6;xDcF&5OWecTePyu4Bn8vxo)Nk)o{ywrOb!mz=vf|wa0AJk6} z#&Cg-6{Y%w4oJ;JNM-^qu+t0qTWV^!5E6c5n?AeM~Dw4L?+<<`?MuRtK-Nc(!aAJ zGRDR0Z_ZM%H)FLG*Wo5+m$IMIxRpjK-ag`m7FL zji2x|t0T~Ater&bL5>rZ;7_7zL$BEg7M*nR+k0D4b1@q7CHx4nKPKcNU~Uc z!8+`sh%Z`)TNLr7=Blmc3Y}%pG>DL&^Cr-E`*W+-BYICni6b>oTH6cNmrZ7+!bpon z*!guGAK~|9ysr9P?Qq7JyDKpP2cl>Yc4Yq&PM2S?q;9arNH4$ZqDivX8+)W*-2zDu z5b4w$6zZ!wOfue(#~&8$%q(_NO{4A_(ub4n8OCMTgY45y2~4u*tFKuCaj(t;yG;1q zM^KOc%1U!?%aU+cwQ?Y9U-(oxtP|YpfY<)I^{*aP{G3cOv(3sN zXGCZiUL*_?qWG!$j^*;2XSQL-?CRtCL3Usm{UbCAp}{Q(@P2pK9V&%2l${Ar3K@+! zbkz6GXon(_k@12k;mb*%<)!+*_DK%75c>y*zM=f^0DVA&GPL9|VW|*>D^LCCkaw#e z>z&%nm1;&s)lAWQ*Lc2=1@y7Wl%I4+lc6v36P@EQ*92yR3)pSMk2Hb6tx*|u*ZRYu zaQwSP=}U~1JV64ZW1@b#2VapRK75A>1$D9L%O&b(+E+C9l%QZhq!*ur>NNcmXetD| z+>K;42$T*)H~Mhqs-Nqug1KeD zoM~M`yI1il)L?+&*y~=L6Gn58si!*3CpQ+UUt8Bp#6C7il9_v$_dehFTqLc!&gk>d zHKQQQ?2-P}|BXZQalzXMEyMmr(z{f@(I-H!0+vi;iIxOpQ70rRSK1U0fF>$q^;_#W zUD58TCo}@#Iw|>nK6GXTqiTu)!j`&Dshdlvw`;^ciSvm#d7eWe;0F|}{!Y(m<6zSx zJJ5=FRbhQePKP%~rWJZ0y5y$tp*X(!y>*E^iV3*s`|a?CW`fL!Epmzp2ogbn#iCT# zxAzJ3^0e?ftnZ?<%|5Ljy6=`U&{M862f<_)}Tp78V$YIzY-j;-+8Fp?G8@GW#rPP?^2CY8O(EkF_ zYyyfDdBJZ2Xi+_4zda?q+i{31WI*JS5LCs#A52dTF0kq;nSQDj9U?6#zER4i9@%_c zSu;CKl{t?dRTZi&aYK_h@p1^$AJvu`x&>oK1V9p09I-PL>XQ^l+@?@a{YU#!xxj?c zwK&^e?@f7{%k4YZeNyc>4UcX%wQR=EccTQ@2y=t&+Y!YUrFu+z-;o?#9uR+FB#h`O z$7J=N?J>M@5>7Cmx=bqu1rU{A7CGsi6l!lOGalO(IFBC1$tCtU0s-}f)Hp~S13O3r zSrUNhwvN5g98`ZSV#*yEY*N^cdR$xFwz2()D&sjc`k%6!iU9#^2g4UafMJIArL7*{ z{=53B#zRoAA@@xQgXBYkm4&8z5F^Ou9J7 z2UB7M4gp|AO46@HngLt?l(t}C$IDk<+Y*~P&c{s|)#hNwMM>I>swYCql=~;@si$>= zt3>u$QnfqYfW#$xFF=C`O$qh~^|Z;X_4PLCo0`^Y&oni~)t<=;!Pqn9OQE!LeRV_o zFPq)>uN{yylLbnZy;D+l3C2dIoj2B(QB6f_&y~g!2`dQ#1zMZn~ z#U)uL_0q;v=dO(lr+q(1n}{x4QxI;_5Ih2~1(P#Jvn3%DtzOo60@j?b^9LLr`z&-a z3GARG>!sfi03vz|jVhmjo~f6&CHJ}D(H+~|bKaao@XS5{w<9opPFAkEaoXlgdf`Bv zF9(hhM58syC|si=*u%3>gXmFR2JZ;zB1-PnE7}6N)6X)oIWQa!bzoGisph}x_;7NQ zVkRg_PK2P?O>Kb$FX+S6Y)Q~x$UryxWHd4g8PqG=0&+B$u_^bY<9=*9jpj>x{wHA;W%<=c|*HV>0%6vCPamQbCtNmmGVO% z3YX=Y>SG7nq8GThhn4-Ja5sjL0>lPE6f{iK8yhd0K8=aV?BkK0+@rYQx?V z12uj7|a^Y z5m7*yoaZhQNXmj+oDK$zO^on>Fjpa!9Z>aftM=WiGT26!E~(BHJB1C#K7w718hqy2|6o!2+-Y@gfhCc~3!qn>+LTXQ3X!cWPr38yl? z)`$!vq+uhBGNo9C%qrK1`a!XdRk8t0$Pr)u#jp_x6P9z#Ev_s)=y$iz>2@*xG=GoW zYK!mk`Cj?FHat1t^L_s0?6c16;!uMDV(;T##o*lgo_*GRRt9}Bc4u92?k1nMGQ7Ul zIj|G2Zb3VJcKb^3X=nX0f6Cy}Eb^o2_St_R(4p+l?UmSG>D=$HOV0ZMg?;;eK))3`ZFHv2*)_^^7+dIb3-e6qq!aG}@1D zWCUU+AZFfvbR$dBZpOdUHF8-M824=V%w@g7#~3)Bv58e?x?K&clBlV%sfoFPv4Od< bv89Env6-cjiKf@|g$=Ay+b7hp{#y+IZ$~T+ delta 155 zcmeCUDA9LOVnY!NYtt*CH_Vd*q`x=kv2M>}Wh`99*th+`dd3@!ypD|SybKCV8cZ6F zjBf1*HZlS+6A&|RKd_M{X}8k9FH9_XiMgo^Vxmc@iMjEK1qJb?d6~uKi3NJ)iN(2$ zd$+sfvfkih44VG1npJALc@3+In4z(WfrXicg@L81nSr^Hk&%g|p{5r|f%Nw78rHw7 E0j6m;qW}N^ diff --git a/beam-apps/fixtures/valid/apps/uniswap/1.0.2/version.json.sig b/beam-apps/fixtures/valid/apps/uniswap/1.0.2/version.json.sig index 250c2e2..d1cb93b 100644 --- a/beam-apps/fixtures/valid/apps/uniswap/1.0.2/version.json.sig +++ b/beam-apps/fixtures/valid/apps/uniswap/1.0.2/version.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } diff --git a/beam-apps/fixtures/valid/catalog/apps.json b/beam-apps/fixtures/valid/catalog/apps.json index dbba548..b03a654 100644 --- a/beam-apps/fixtures/valid/catalog/apps.json +++ b/beam-apps/fixtures/valid/catalog/apps.json @@ -2,6 +2,48 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "install_command": "beam apps install erc8004", + "pinned_install_command": "beam apps install erc8004 --version 1.0.0", + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "version": { + "version": "1.0.0", + "min_beam_version": "0.2.4" + }, + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, { "id": "uniswap", "display_name": "Uniswap", @@ -104,6 +146,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } } diff --git a/beam-apps/fixtures/valid/catalog/apps.json.sig b/beam-apps/fixtures/valid/catalog/apps.json.sig index 4d6ed71..d6d261d 100644 --- a/beam-apps/fixtures/valid/catalog/apps.json.sig +++ b/beam-apps/fixtures/valid/catalog/apps.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:066b1321d86de07e799ba77ac8a531d7a14c258b5ff79cb6e7f352a6cf8ab5d7" + "value": "sha256:f2ea0c84b76eea041e7289cc81adfcaaaffdb0e996b4c475c1622deb457c9c28" } diff --git a/beam-apps/fixtures/valid/catalog/apps/erc8004.json b/beam-apps/fixtures/valid/catalog/apps/erc8004.json new file mode 100644 index 0000000..7356f71 --- /dev/null +++ b/beam-apps/fixtures/valid/catalog/apps/erc8004.json @@ -0,0 +1,485 @@ +{ + "format_version": 1, + "generated_at": "2026-05-26T00:00:00Z", + "detail_url": "https://registry.beam.payy.network/catalog/apps/erc8004.json", + "app": { + "id": "erc8004", + "display_name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "latest_version": "1.0.0", + "min_beam_version": "0.2.4", + "install_commands": { + "latest": "beam apps install erc8004", + "pinned": "beam apps install erc8004 --version 1.0.0", + "dry_run": "beam apps install erc8004 --dry-run" + }, + "supported_chains": [ + { + "id": "*", + "label": "Any EVM chain", + "testnet": false, + "operations": [ + "read", + "logs", + "send-transaction", + "sign-typed-data" + ] + } + ], + "capability_badges": [ + "ERC-8004", + "Chain read", + "Logs", + "Onchain TX", + "Typed-data signing", + "App storage" + ], + "permission_summary": { + "http": [ + "https://*" + ], + "wallet": [ + "propose transactions" + ], + "selectors": [ + "0x1aa3a008", + "0xf2c298be", + "0x0af28bd3", + "0x2d1ef5ae", + "0x3fddcf19", + "0x6352211e", + "0xc87b56dd", + "0x00339509" + ], + "storage": [ + "app-local" + ], + "privacy": [] + }, + "commands": [ + { + "name": "support", + "about": "Show the active chain ERC-8004 registry configuration", + "usage": "support", + "docs": { + "summary": "Show ERC-8004 support for the active chain.", + "invocation": "beam x erc8004 support", + "arguments": [], + "options": [], + "examples": [ + { + "title": "Show support", + "command": "beam x erc8004 support --chain base", + "description": "Print the Base ERC-8004 registry addresses." + } + ], + "output_notes": [ + "Includes the identity registry and whether it is default or overridden." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "config", + "about": "Show or set ERC-8004 registry overrides", + "usage": "config show | config set --identity-registry

              [--reputation-registry
              ]", + "docs": { + "summary": "Show or persist registry overrides for the active chain.", + "invocation": "beam x erc8004 config show | config set --identity-registry
              [--reputation-registry
              ]", + "arguments": [], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Identity registry override for the active chain." + }, + { + "name": "--reputation-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Optional reputation registry override stored for future versions." + } + ], + "examples": [ + { + "title": "Set override", + "command": "beam x erc8004 config set --identity-registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", + "description": "Persist an identity registry address for the active chain." + } + ], + "output_notes": [ + "Registry overrides are stored in app-local Beam storage." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "register", + "about": "Prepare an ERC-8004 agent registration", + "usage": "register [--uri |--empty-uri] [--identity-registry
              ]", + "docs": { + "summary": "Prepare a transaction that registers an ERC-8004 agent.", + "invocation": "beam x erc8004 register [--uri |--empty-uri] [--identity-registry
              ]", + "arguments": [], + "options": [ + { + "name": "--uri", + "value_name": "uri", + "kind": "string", + "required": false, + "sensitive": false, + "description": "HTTPS, IPFS, or data URI for the agent metadata." + }, + { + "name": "--empty-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Register without an agent URI." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Register", + "command": "beam x erc8004 register --uri https://agent.example/agent.json", + "description": "Prepare and approve a registration transaction." + } + ], + "output_notes": [ + "Returns an action plan that Beam approves and executes." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "show", + "about": "Read an ERC-8004 agent", + "usage": "show [--fetch-uri] [--identity-registry
              ]", + "docs": { + "summary": "Read owner, URI, and agent wallet for an ERC-8004 agent.", + "invocation": "beam x erc8004 show [--fetch-uri] [--identity-registry
              ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--fetch-uri", + "kind": "flag", + "required": false, + "default": "false", + "sensitive": false, + "description": "Fetch HTTPS agent metadata through Beam's safe HTTP host." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Show agent", + "command": "beam x erc8004 show 1 --fetch-uri", + "description": "Read an agent and fetch HTTPS metadata if available." + } + ], + "output_notes": [ + "Non-HTTPS URIs are not fetched." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "list", + "about": "List ERC-8004 agents connected to a wallet", + "usage": "list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
              ]", + "docs": { + "summary": "List ERC-8004 registrations using bounded log reads.", + "invocation": "beam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--from-block ] [--to-block ] [--identity-registry
              ]", + "arguments": [], + "options": [ + { + "name": "--wallet", + "value_name": "wallet", + "kind": "string", + "required": false, + "sensitive": false, + "description": "Beam wallet name, ENS name, or EVM address; defaults to the active wallet." + }, + { + "name": "--connection", + "value_name": "mode", + "kind": "enum", + "required": false, + "default": "owner", + "sensitive": false, + "description": "Filter by owner, agent wallet, or both." + }, + { + "name": "--from-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "Start block. Defaults to a bounded recent host window." + }, + { + "name": "--to-block", + "value_name": "number", + "kind": "integer", + "required": false, + "sensitive": false, + "description": "End block. Defaults to latest." + } + ], + "examples": [ + { + "title": "List owned agents", + "command": "beam x erc8004 list --wallet alice --from-block 1000000", + "description": "List agents registered by alice in a bounded block range." + } + ], + "output_notes": [ + "The host caps log ranges and response size." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-uri", + "about": "Prepare an ERC-8004 agent URI update", + "usage": "set-uri [--identity-registry
              ]", + "docs": { + "summary": "Prepare a transaction that updates an agent URI.", + "invocation": "beam x erc8004 set-uri [--identity-registry
              ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "uri", + "kind": "string", + "required": true, + "sensitive": false, + "description": "New HTTPS, IPFS, or data URI." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Update URI", + "command": "beam x erc8004 set-uri 1 https://agent.example/new.json", + "description": "Prepare and approve an agent URI update." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "set-wallet", + "about": "Prepare an ERC-8004 agent wallet update", + "usage": "set-wallet [--deadline-seconds ] [--identity-registry
              ]", + "docs": { + "summary": "Request a typed-data signature from the target wallet and prepare the wallet update transaction.", + "invocation": "beam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
              ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + }, + { + "name": "wallet", + "kind": "string", + "required": true, + "sensitive": false, + "description": "Beam wallet name or stored EVM address selector that signs the update." + } + ], + "options": [ + { + "name": "--deadline-seconds", + "value_name": "seconds", + "kind": "integer", + "required": false, + "default": "300", + "sensitive": false, + "description": "Signature validity window, capped at 300 seconds." + }, + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Set named wallet", + "command": "beam x erc8004 set-wallet 1 alice", + "description": "Resolve alice from Beam wallets, request its typed-data signature, then prepare the registry update." + } + ], + "output_notes": [ + "The app never receives raw private keys." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + }, + { + "name": "unset-wallet", + "about": "Prepare clearing an ERC-8004 agent wallet", + "usage": "unset-wallet [--identity-registry
              ]", + "docs": { + "summary": "Prepare a transaction that clears an agent wallet.", + "invocation": "beam x erc8004 unset-wallet [--identity-registry
              ]", + "arguments": [ + { + "name": "agent-id", + "kind": "integer", + "required": true, + "sensitive": false, + "description": "ERC-8004 token ID." + } + ], + "options": [ + { + "name": "--identity-registry", + "value_name": "address", + "kind": "address", + "required": false, + "sensitive": false, + "description": "Invocation-scoped identity registry override." + } + ], + "examples": [ + { + "title": "Unset wallet", + "command": "beam x erc8004 unset-wallet 1", + "description": "Prepare and approve clearing the agent wallet." + } + ], + "output_notes": [ + "Returns an action plan." + ] + }, + "input_schema": { + "type": "object" + }, + "output_schema": { + "type": "object" + }, + "sensitive_args": [] + } + ], + "readme_markdown": "# ERC-8004 Beam App\n\nThe ERC-8004 app manages identity-registry agents through Beam's generic app\nhost. It keeps registry defaults and overrides in app space rather than as a\nnative Beam command.\n\n```text\nbeam x erc8004 support\nbeam x erc8004 config show\nbeam x erc8004 config set --identity-registry
              \nbeam x erc8004 register [--uri |--empty-uri] [--identity-registry
              ]\nbeam x erc8004 show [--fetch-uri] [--identity-registry
              ]\nbeam x erc8004 list [--wallet ] [--connection owner|agent-wallet|both] [--identity-registry
              ]\nbeam x erc8004 set-uri [--identity-registry
              ]\nbeam x erc8004 set-wallet [--deadline-seconds ] [--identity-registry
              ]\nbeam x erc8004 unset-wallet [--identity-registry
              ]\n```\n\nDefault ERC-8004 identity registry addresses are manifest-scoped. Custom\nregistry addresses come from app-local config or an explicit\n`--identity-registry` flag and are included as invocation-scoped contract rules\nin host calls and action plans.\n\n`list` uses `eth_getLogs` through the Beam host. The host enforces a bounded\nblock range and the app defaults to the active wallet with owner filtering, so\nit does not scan from genesis unless the user passes a broad explicit range.\n\n`set-wallet` resolves the wallet argument through Beam and requests an EIP-712\ntyped-data signature from the host. The app receives only the signature and\ndigest, never raw private keys.\n", + "manifest_summary": { + "format_version": 1, + "min_beam_version": "0.2.4", + "wasm_entrypoint": "beam_app_main" + }, + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4" + } + ], + "icon": { + "url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/icon.svg", + "sha256": "sha256:16d48252ec062fb0461d9d78f99c104d0f187b6c81de666beb342e88289839a9", + "media_type": "image/svg+xml", + "alt": "ERC-8004 app icon" + } + }, + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" + } +} diff --git a/beam-apps/fixtures/valid/catalog/apps/erc8004.json.sig b/beam-apps/fixtures/valid/catalog/apps/erc8004.json.sig new file mode 100644 index 0000000..0c9c285 --- /dev/null +++ b/beam-apps/fixtures/valid/catalog/apps/erc8004.json.sig @@ -0,0 +1,5 @@ +{ + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:a2c8bc569cbdd56910bb378795b54f23fe5ab460a8e6cd52f3df37e7ccf45537" +} diff --git a/beam-apps/fixtures/valid/index.json b/beam-apps/fixtures/valid/index.json index b3923c1..6ab4c79 100644 --- a/beam-apps/fixtures/valid/index.json +++ b/beam-apps/fixtures/valid/index.json @@ -2,6 +2,27 @@ "format_version": 1, "generated_at": "2026-05-26T00:00:00Z", "apps": [ + { + "id": "erc8004", + "name": "ERC-8004", + "publisher": "Payy", + "description": "Manage ERC-8004 identity registry agents through Beam app permissions, bounded logs, typed-data signing, and action plans.", + "versions": [ + { + "version": "1.0.0", + "min_beam_version": "0.2.4", + "manifest_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/manifest.json", + "manifest_sha256": "sha256:ddbfd3a3e4c03eb65003a2f44c231d85d22e4a2b9de9173b33894202cb2c3c3a", + "module_url": "https://registry.beam.payy.network/apps/erc8004/1.0.0/module.wasm", + "module_sha256": "sha256:5a67ac5972280c99dd5738eec7bdc57a6beecf90902c43a1bbbeabfb145b7036", + "signature": { + "algorithm": "sha256-dev", + "key_id": "payy-dev-2026-05", + "value": "sha256:baca7450d2f0fac5e7110d6bff85f030295b6acd94f6db994d3f16fca91dc062" + } + } + ] + }, { "id": "uniswap", "name": "Uniswap", @@ -12,13 +33,13 @@ "version": "1.0.2", "min_beam_version": "0.2.1", "manifest_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/manifest.json", - "manifest_sha256": "sha256:b3bee997c062dbf20de57c4176a010b3578bf4a5e7c8a57017733bd5a95e2b73", + "manifest_sha256": "sha256:36c9fc35b9d855622201146244eeb165e97592cbd333296d7e3f1454f37be545", "module_url": "https://registry.beam.payy.network/apps/uniswap/1.0.2/module.wasm", - "module_sha256": "sha256:58c5dbc8343f5281392269b72e0193b2c39f6a4b36942df1bea464699a36cdc2", + "module_sha256": "sha256:a5ca0f4124e59390c0c40c64e2792ae04712f5fdb9accf92fdfa76be8a8702d7", "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:447860c5bbc66e4f9b418bb2c67155a5c276812828da8c417a20387882fee0dc" + "value": "sha256:29febe94eebd4d2f004cb67449b6c03b7c6c8c41767ecec78e7997adb25536eb" } } ] @@ -27,6 +48,6 @@ "signature": { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } } diff --git a/beam-apps/fixtures/valid/index.json.sig b/beam-apps/fixtures/valid/index.json.sig index 4193503..30b012f 100644 --- a/beam-apps/fixtures/valid/index.json.sig +++ b/beam-apps/fixtures/valid/index.json.sig @@ -1,5 +1,5 @@ { "algorithm": "sha256-dev", "key_id": "payy-dev-2026-05", - "value": "sha256:f1ad11d143f310620be1bc78a9d02fb7db7ec51d05acae195c1115167aef3dee" + "value": "sha256:94a96a25f08f9a5c4ed5dedbac299886f42e24af5ee43e49cf8c5adb90f1c695" } diff --git a/pkg/beam-cli/Cargo.toml b/pkg/beam-cli/Cargo.toml index 0302795..0ed61da 100644 --- a/pkg/beam-cli/Cargo.toml +++ b/pkg/beam-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "beam-cli" -version = "0.2.3" +version = "0.2.4" edition = "2024" publish = false diff --git a/pkg/beam-cli/README.md b/pkg/beam-cli/README.md index f70afa2..cdcbbfc 100644 --- a/pkg/beam-cli/README.md +++ b/pkg/beam-cli/README.md @@ -229,6 +229,7 @@ digests before caching app artifacts under `~/.beam/apps`. Common commands: ```bash +beam apps install erc8004 beam apps install uniswap beam apps list beam apps info uniswap @@ -253,14 +254,28 @@ beam x uniswap --help beam x uniswap swap --help beam --chain base --from alice x uniswap swap USDC ETH 100 --prepare beam apps run uniswap swap USDC ETH 100 --chain base --from alice --prepare +beam --chain base --from alice x erc8004 support +beam --chain base --from alice x erc8004 register --uri https://agent.example/agent.json +beam --chain base --from alice x erc8004 set-wallet 1 alice ``` Product app business logic lives outside Beam CLI in `beam-apps/apps/`. Beam CLI owns the generic registry, cache, WASM validation, permission checks, -host ABI, approval records, and execution of approved action plans. The Uniswap -app is built into the registry as WASM and `beam x uniswap swap ...` runs through -the generic guest command path; Beam CLI no longer contains a Uniswap-specific -built-in planner. +host ABI, approval records, and execution of approved action plans. Product apps +such as Uniswap and ERC-8004 are built into the registry as WASM and run through +the generic guest command path; Beam CLI does not contain product-specific +built-in planners. + +ERC-8004 agent identity management is provided by the `erc8004` app rather than +a native `beam agents` command. Default identity registry addresses are declared +in the app manifest. Custom registry addresses can be persisted with: + +```bash +beam x erc8004 config set --identity-registry
              +``` + +Per-command registry overrides use `--identity-registry
              ` and are +validated as invocation-scoped contract permissions in the app host. The Uniswap app will use Beam-mediated HTTPS requests to the Uniswap Trading API. Release registry builds inject the Payy-managed public Trading API key into @@ -288,6 +303,20 @@ beam apps approvals show beam apps approvals approve --execute ``` +Beam prices EVM app transactions at approval and execution time. Apps may +propose transaction calldata, value, target, and gas-limit hints, but app +`gas_price`, `maxFeePerGas`, or similar fee fields are informational only and +are not used as the final signed transaction price. On EIP-1559 chains Beam +prefers type-2 transactions; legacy `gas_price` is a fallback for chains that do +not expose EIP-1559 fee history. + +Approval prompts and approval JSON include the maximum approved network fee per +transaction step. Pass `--max-network-fee-wei ` to `beam x ...` or +`beam apps run ...` to set a hard per-step network-fee cap; if omitted, +Beam stores a default cap based on the prepared estimate. Execution re-estimates +fees before signing and fails closed if current network fees exceed the approved +cap. + Uniswap token arguments can be configured token labels, `native`, native chain symbols, or EVM token addresses. Swap options include `--min-receive`, `--slippage-bps`, `--deadline-seconds`, `--recipient`, `--max-gas`, and diff --git a/pkg/beam-cli/src/apps/app_storage.rs b/pkg/beam-cli/src/apps/app_storage.rs new file mode 100644 index 0000000..5b76ace --- /dev/null +++ b/pkg/beam-cli/src/apps/app_storage.rs @@ -0,0 +1,62 @@ +use std::{fs, path::PathBuf}; + +use contextful::ResultContextExt; +use serde_json::{Value, json}; + +use crate::{ + apps::{Error, Result}, + runtime::BeamApp, +}; + +pub fn get(app: &BeamApp, app_id: &str, key: &str) -> Result { + let path = path(app, app_id, key)?; + if !path.exists() { + return Ok(json!({ "value": null, "exists": false })); + } + let value = + serde_json::from_slice::(&fs::read(path).context("read beam app storage value")?) + .context("decode beam app storage value")?; + Ok(json!({ "value": value, "exists": true })) +} + +pub fn set(app: &BeamApp, app_id: &str, key: &str, value: Value) -> Result { + let path = path(app, app_id, key)?; + if let Some(parent) = path.parent() { + fs::create_dir_all(parent).context("create beam app storage directory")?; + } + fs::write( + path, + serde_json::to_vec_pretty(&value).context("encode beam app storage value")?, + ) + .context("write beam app storage value")?; + Ok(json!(true)) +} + +pub fn remove(app: &BeamApp, app_id: &str, key: &str) -> Result { + let path = path(app, app_id, key)?; + if path.exists() { + fs::remove_file(path).context("remove beam app storage value")?; + } + Ok(json!(true)) +} + +fn path(app: &BeamApp, app_id: &str, key: &str) -> Result { + if key.is_empty() + || key.starts_with('.') + || !key + .chars() + .all(|char| char.is_ascii_alphanumeric() || matches!(char, '-' | '_' | '.')) + { + return Err(Error::InvalidHostRequest { + reason: format!("invalid app storage key {key}"), + }); + } + + Ok(app + .paths + .root + .join("apps") + .join("data") + .join(app_id) + .join(key)) +} diff --git a/pkg/beam-cli/src/apps/approvals.rs b/pkg/beam-cli/src/apps/approvals.rs index d453722..57d0764 100644 --- a/pkg/beam-cli/src/apps/approvals.rs +++ b/pkg/beam-cli/src/apps/approvals.rs @@ -7,7 +7,7 @@ use sha2::{Digest, Sha256}; use crate::apps::{ Error, Result, - model::{ActionPlan, ApprovalRecord, ApprovalStatus, ApprovalsState}, + model::{ActionPlan, ApprovalFeeCap, ApprovalRecord, ApprovalStatus, ApprovalsState}, store::now, }; @@ -32,7 +32,11 @@ impl ApprovalStore { self.store.get().await.approvals } - pub async fn create(&self, plan: ActionPlan) -> Result { + pub async fn create( + &self, + plan: ActionPlan, + fee_caps: Vec, + ) -> Result { let created_at = now(); let plan_hash = plan_hash(&plan)?; let id = format!("apr_{}", &plan_hash["sha256:".len()..18]); @@ -41,6 +45,7 @@ impl ApprovalStore { status: ApprovalStatus::Pending, plan, plan_hash, + fee_caps, created_at, updated_at: created_at, }; diff --git a/pkg/beam-cli/src/apps/chain_logs.rs b/pkg/beam-cli/src/apps/chain_logs.rs new file mode 100644 index 0000000..c346f1c --- /dev/null +++ b/pkg/beam-cli/src/apps/chain_logs.rs @@ -0,0 +1,129 @@ +use contextful::ResultContextExt; +use contracts::Client; +use serde_json::{Value, json}; +use web3::types::{BlockNumber, FilterBuilder, H256, Log}; + +use crate::apps::{ + Error, Result, + host::{ChainReadRequest, parse_host_address}, +}; + +const MAX_LOG_BLOCK_RANGE: u64 = 50_000; +const MAX_LOG_TOPICS: usize = 4; +const MAX_LOG_TOPIC_VALUES: usize = 16; +const MAX_LOG_RESPONSE_BYTES: usize = 1024 * 1024; + +pub async fn read(client: &Client, request: &ChainReadRequest) -> Result { + let target = parse_host_address( + "target", + request + .target + .as_deref() + .ok_or_else(|| Error::InvalidHostRequest { + reason: "chain read missing target".to_string(), + })?, + )?; + let latest = client + .block_number() + .await + .context("fetch beam app latest block")? + .as_u64(); + let to_block = request.to_block.unwrap_or(latest).min(latest); + let from_block = request + .from_block + .unwrap_or_else(|| to_block.saturating_sub(MAX_LOG_BLOCK_RANGE)); + if from_block > to_block { + return Err(Error::InvalidHostRequest { + reason: format!("invalid log block range {from_block}..{to_block}"), + }); + } + if to_block.saturating_sub(from_block) > MAX_LOG_BLOCK_RANGE { + return Err(Error::InvalidHostRequest { + reason: format!("log block range exceeds {MAX_LOG_BLOCK_RANGE} blocks"), + }); + } + + let topics = parse_topics(&request.topics)?; + let filter = FilterBuilder::default() + .address(vec![target]) + .from_block(BlockNumber::Number(from_block.into())) + .to_block(BlockNumber::Number(to_block.into())) + .topics( + topics.first().cloned().unwrap_or(None), + topics.get(1).cloned().unwrap_or(None), + topics.get(2).cloned().unwrap_or(None), + topics.get(3).cloned().unwrap_or(None), + ) + .build(); + let logs = client.logs(filter).await.context("fetch beam app logs")?; + let value = json!({ + "from_block": from_block, + "logs": logs_json(&logs), + "target": format!("{target:#x}"), + "to_block": to_block, + }); + let bytes = serde_json::to_vec(&value).context("measure beam app log response")?; + if bytes.len() > MAX_LOG_RESPONSE_BYTES { + return Err(Error::InvalidHostRequest { + reason: format!("log response exceeds {MAX_LOG_RESPONSE_BYTES} bytes"), + }); + } + + Ok(value) +} + +fn parse_topics(topics: &[Option>]) -> Result>>> { + if topics.len() > MAX_LOG_TOPICS { + return Err(Error::InvalidHostRequest { + reason: format!("log query supports at most {MAX_LOG_TOPICS} topic positions"), + }); + } + let mut out = Vec::new(); + for topic in topics { + let Some(values) = topic else { + out.push(None); + continue; + }; + if values.len() > MAX_LOG_TOPIC_VALUES { + return Err(Error::InvalidHostRequest { + reason: format!( + "log query supports at most {MAX_LOG_TOPIC_VALUES} values per topic" + ), + }); + } + let mut parsed = Vec::new(); + for value in values { + parsed.push( + value + .parse::() + .map_err(|_| Error::InvalidHostRequest { + reason: format!("invalid log topic {value}"), + })?, + ); + } + out.push(Some(parsed)); + } + + Ok(out) +} + +fn logs_json(logs: &[Log]) -> Vec { + logs.iter() + .map(|log| { + json!({ + "address": format!("{:#x}", log.address), + "block_hash": log.block_hash.map(|value| format!("{value:#x}")), + "block_number": log.block_number.map(|value| value.as_u64()), + "data": format!("0x{}", hex::encode(&log.data.0)), + "log_index": log.log_index.map(|value| value.to_string()), + "topics": log + .topics + .iter() + .map(|topic| format!("{topic:#x}")) + .collect::>(), + "transaction_hash": log.transaction_hash.map(|value| format!("{value:#x}")), + "transaction_index": log.transaction_index.map(|value| value.to_string()), + }) + }) + .collect() +} diff --git a/pkg/beam-cli/src/apps/error.rs b/pkg/beam-cli/src/apps/error.rs index 1d4186e..366f088 100644 --- a/pkg/beam-cli/src/apps/error.rs +++ b/pkg/beam-cli/src/apps/error.rs @@ -81,6 +81,12 @@ pub enum Error { #[error("[beam-cli/apps] app requested blocked approval spender: {spender}")] SpenderPermissionDenied { spender: String }, + #[error("[beam-cli/apps] app requested blocked wallet permission: {permission}")] + WalletPermissionDenied { permission: String }, + + #[error("[beam-cli/apps] app requested blocked storage permission: {permission}")] + StoragePermissionDenied { permission: String }, + #[error("[beam-cli/apps] app requested blocked http url: {url}")] HttpPermissionDenied { url: String }, @@ -120,6 +126,14 @@ pub enum Error { #[error("[beam-cli/apps] approval plan changed: {approval_id}")] ApprovalPlanChanged { approval_id: String }, + #[error( + "[beam-cli/apps] approval fee cap missing for executable step {step_index}; reapprove the app action" + )] + ApprovalFeeCapMissing { step_index: usize }, + + #[error("[beam-cli/apps] approval needs fresh fee caps before execution: {approval_id}")] + ApprovalNeedsFeeCaps { approval_id: String }, + #[error( "[beam-cli/apps] approval execution context changed for {approval_id}: {field} expected {expected}, got {actual}" )] diff --git a/pkg/beam-cli/src/apps/host.rs b/pkg/beam-cli/src/apps/host.rs index f342d8e..173a393 100644 --- a/pkg/beam-cli/src/apps/host.rs +++ b/pkg/beam-cli/src/apps/host.rs @@ -1,5 +1,5 @@ -// lint-long-file-override allow-max-lines=700 -use std::{fs, net::IpAddr, path::PathBuf, time::Duration}; +// lint-long-file-override allow-max-lines=800 +use std::{net::IpAddr, time::Duration}; use contextful::ResultContextExt; use contracts::{Address, U256}; @@ -14,9 +14,13 @@ use web3::types::{Bytes, CallRequest}; use crate::{ apps::{ - Error, Result, - model::{AppPermissions, ChainOperation}, - permissions::{ensure_chain_scope, glob_matches}, + Error, Result, app_storage, chain_logs, + model::{AppPermissions, ChainOperation, DynamicContractScope}, + permissions::{ + ensure_chain_scope_with_dynamic, glob_matches, normalize_dynamic_contracts, + validate_dynamic_contracts, + }, + typed_data, }, evm::{erc20_allowance, erc20_balance, native_balance, simulate_calldata}, runtime::{BeamApp, ResolvedToken}, @@ -51,6 +55,7 @@ pub enum HostRequest { Diagnostic { level: String, message: String }, HttpFetch(HttpFetchRequest), ChainRead(ChainReadRequest), + SignTypedData(TypedDataSignRequest), SimulateTransaction(HostTransaction), SubmitTransaction(HostTransaction), PollReceipt { tx_hash: String }, @@ -119,6 +124,10 @@ pub struct ChainReadRequest { #[serde(default)] pub data: Option, #[serde(default)] + pub dynamic_contracts: Vec, + #[serde(default)] + pub from_block: Option, + #[serde(default)] pub owner: Option, #[serde(default)] pub spender: Option, @@ -126,6 +135,10 @@ pub struct ChainReadRequest { #[serde(default)] pub token: Option, #[serde(default)] + pub topics: Vec>>, + #[serde(default)] + pub to_block: Option, + #[serde(default)] pub value: Option, pub selector: Option, } @@ -138,6 +151,7 @@ pub enum ChainReadOperation { Balance, Allowance, Call, + Logs, Nonce, Gas, } @@ -146,12 +160,35 @@ pub enum ChainReadOperation { pub struct HostTransaction { pub chain: String, pub data: String, + #[serde(default)] + pub dynamic_contracts: Vec, pub target: String, pub value: String, pub selector: Option, pub spender: Option, } +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +pub struct TypedDataSignRequest { + pub chain: String, + #[serde(default)] + pub dynamic_contracts: Vec, + pub domain_separator: String, + #[serde(default)] + pub fields: Vec, + pub primary_type: String, + pub struct_hash: String, + pub verifying_contract: String, + pub wallet: String, +} + +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +pub struct TypedDataDisplayField { + pub name: String, + pub kind: String, + pub value: String, +} + pub async fn handle_host_request( app: &BeamApp, permissions: &AppPermissions, @@ -176,6 +213,7 @@ pub async fn handle_host_request( } HostRequest::HttpFetch(request) => Ok(json!(fetch_http(permissions, request).await?)), HostRequest::ChainRead(request) => chain_read(app, permissions, request).await, + HostRequest::SignTypedData(request) => typed_data::sign(app, permissions, request).await, HostRequest::SimulateTransaction(transaction) => { let (_, client) = app .active_chain_client() @@ -209,57 +247,28 @@ pub async fn handle_host_request( Ok(json!({ "address": format!("{address:#x}") })) } HostRequest::AppStorageGet { key } => { - let path = app_storage_path(app, &metadata.app_id, &key)?; - if !path.exists() { - return Ok(json!({ "value": null, "exists": false })); - } - let value = serde_json::from_slice::( - &fs::read(path).context("read beam app storage value")?, - ) - .context("decode beam app storage value")?; - Ok(json!({ "value": value, "exists": true })) + ensure_app_storage_allowed(permissions)?; + app_storage::get(app, &metadata.app_id, &key) } HostRequest::AppStorageSet { key, value } => { - let path = app_storage_path(app, &metadata.app_id, &key)?; - if let Some(parent) = path.parent() { - fs::create_dir_all(parent).context("create beam app storage directory")?; - } - fs::write( - path, - serde_json::to_vec_pretty(&value).context("encode beam app storage value")?, - ) - .context("write beam app storage value")?; - Ok(json!({ "written": true })) + ensure_app_storage_allowed(permissions)?; + app_storage::set(app, &metadata.app_id, &key, value) } HostRequest::AppStorageRemove { key } => { - let path = app_storage_path(app, &metadata.app_id, &key)?; - if path.exists() { - fs::remove_file(path).context("remove beam app storage value")?; - } - Ok(json!({ "removed": true })) + ensure_app_storage_allowed(permissions)?; + app_storage::remove(app, &metadata.app_id, &key) } } } -fn app_storage_path(app: &BeamApp, app_id: &str, key: &str) -> Result { - if key.is_empty() - || key.starts_with('.') - || !key - .chars() - .all(|char| char.is_ascii_alphanumeric() || matches!(char, '-' | '_' | '.')) - { - return Err(Error::InvalidHostRequest { - reason: format!("invalid app storage key {key}"), - }); +pub fn ensure_app_storage_allowed(permissions: &AppPermissions) -> Result<()> { + if permissions.storage.app_local { + return Ok(()); } - Ok(app - .paths - .root - .join("apps") - .join("data") - .join(app_id) - .join(key)) + Err(Error::StoragePermissionDenied { + permission: "app-local".to_string(), + }) } pub fn ensure_http_allowed(permissions: &AppPermissions, url: &str) -> Result { @@ -349,10 +358,16 @@ pub fn ensure_chain_read_allowed( permissions: &AppPermissions, request: &ChainReadRequest, ) -> Result<()> { - ensure_chain_scope( + let operation = match request.operation { + ChainReadOperation::Logs => ChainOperation::Logs, + _ => ChainOperation::Read, + }; + validate_dynamic_contracts(&request.dynamic_contracts, &request.chain)?; + ensure_chain_scope_with_dynamic( permissions, + &normalize_dynamic_contracts(&request.dynamic_contracts), &request.chain, - ChainOperation::Read, + operation, request.target.as_deref(), request.selector.as_deref(), None, @@ -463,6 +478,13 @@ pub async fn chain_read( .context("execute beam app chain read call")?; Ok(json!({ "raw": format!("0x{}", hex::encode(raw.0)) })) } + ChainReadOperation::Logs => { + let (_, client) = app + .active_chain_client() + .await + .context("connect beam app chain client")?; + chain_logs::read(&client, &request).await + } ChainReadOperation::Nonce => { let (_, client) = app .active_chain_client() @@ -524,8 +546,10 @@ pub fn ensure_transaction_allowed( transaction: &HostTransaction, operation: ChainOperation, ) -> Result<()> { - ensure_chain_scope( + validate_dynamic_contracts(&transaction.dynamic_contracts, &transaction.chain)?; + ensure_chain_scope_with_dynamic( permissions, + &normalize_dynamic_contracts(&transaction.dynamic_contracts), &transaction.chain, operation, Some(&transaction.target), @@ -674,13 +698,13 @@ fn is_native_token(token: &str, native_symbol: &str) -> bool { || token.eq_ignore_ascii_case("0x0000000000000000000000000000000000000000") } -fn parse_hex_data(value: &str) -> Result> { +pub(super) fn parse_hex_data(value: &str) -> Result> { hex::decode(value.strip_prefix("0x").unwrap_or(value)).map_err(|_| Error::InvalidHostRequest { reason: format!("invalid hex data {value}"), }) } -fn parse_host_address(field: &str, value: &str) -> Result
              { +pub(super) fn parse_host_address(field: &str, value: &str) -> Result
              { value.parse().map_err(|_| Error::InvalidHostRequest { reason: format!("invalid {field} address {value}"), }) diff --git a/pkg/beam-cli/src/apps/mod.rs b/pkg/beam-cli/src/apps/mod.rs index ccc0a7d..a66b4f0 100644 --- a/pkg/beam-cli/src/apps/mod.rs +++ b/pkg/beam-cli/src/apps/mod.rs @@ -1,4 +1,6 @@ +pub(crate) mod app_storage; pub mod approvals; +mod chain_logs; mod error; pub mod host; pub mod model; @@ -7,6 +9,7 @@ pub mod privacy; pub mod registry; pub mod runtime; pub mod store; +mod typed_data; pub mod validate; pub(crate) use error::format_error_chain; diff --git a/pkg/beam-cli/src/apps/model.rs b/pkg/beam-cli/src/apps/model.rs index e30e373..0eb019a 100644 --- a/pkg/beam-cli/src/apps/model.rs +++ b/pkg/beam-cli/src/apps/model.rs @@ -1,4 +1,4 @@ -// lint-long-file-override allow-max-lines=300 +// lint-long-file-override allow-max-lines=400 use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -167,9 +167,11 @@ pub struct ChainPermission { #[serde(rename_all = "kebab-case")] pub enum ChainOperation { Read, + Logs, Simulate, SendTransaction, Erc20Approval, + SignTypedData, } #[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq)] @@ -180,6 +182,8 @@ pub struct WalletPermissions { pub propose_transactions: bool, #[serde(default)] pub erc20_approval: bool, + #[serde(default, skip_serializing_if = "is_false")] + pub sign_typed_data: bool, } #[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq)] @@ -229,6 +233,10 @@ pub struct AppLock { pub installed_at: u64, } +fn is_false(value: &bool) -> bool { + !*value +} + #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] pub struct ActionPlan { pub app_id: String, @@ -244,9 +252,19 @@ pub struct ActionPlan { pub bindings: Vec, #[serde(default)] pub constraints: Vec, + #[serde(default)] + pub dynamic_contracts: Vec, pub expires_at: u64, } +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +pub struct DynamicContractScope { + pub chain: String, + pub contract: String, + #[serde(default)] + pub reason: String, +} + #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] pub struct ActionBinding { pub key: String, @@ -271,10 +289,23 @@ pub struct ApprovalRecord { pub status: ApprovalStatus, pub plan: ActionPlan, pub plan_hash: String, + #[serde(default)] + pub fee_caps: Vec, pub created_at: u64, pub updated_at: u64, } +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +pub struct ApprovalFeeCap { + pub step_index: usize, + pub approved_gas_limit: String, + pub approved_max_fee_per_gas: String, + pub approved_max_total_fee_wei: String, + pub fee_mode: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub approved_max_priority_fee_per_gas: Option, +} + #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "kebab-case")] pub enum ApprovalStatus { diff --git a/pkg/beam-cli/src/apps/permissions.rs b/pkg/beam-cli/src/apps/permissions.rs index bff9ab0..cedac7c 100644 --- a/pkg/beam-cli/src/apps/permissions.rs +++ b/pkg/beam-cli/src/apps/permissions.rs @@ -1,10 +1,11 @@ use crate::apps::{ Error, Result, - model::{AppPermissions, ChainOperation, ChainPermission}, + model::{AppPermissions, ChainOperation, ChainPermission, DynamicContractScope}, }; -pub fn ensure_chain_scope( +pub fn ensure_chain_scope_with_dynamic( permissions: &AppPermissions, + dynamic_contracts: &[DynamicContractScope], chain: &str, operation: ChainOperation, target: Option<&str>, @@ -13,10 +14,14 @@ pub fn ensure_chain_scope( ) -> Result<()> { let scope = chain_scope(permissions, chain, &operation)?; if let Some(target) = target { - ensure_optional_scope(scope.contracts.as_deref(), target).map_err(|_| { - Error::ContractPermissionDenied { - target: target.to_string(), - } + ensure_optional_contract_scope( + scope.contracts.as_deref(), + dynamic_contracts, + chain, + target, + ) + .map_err(|_| Error::ContractPermissionDenied { + target: target.to_string(), })?; } if let Some(selector) = selector { @@ -37,6 +42,49 @@ pub fn ensure_chain_scope( Ok(()) } +pub fn normalize_dynamic_contracts( + dynamic_contracts: &[DynamicContractScope], +) -> Vec { + let mut out = Vec::new(); + for scope in dynamic_contracts { + let normalized_contract = scope.contract.to_ascii_lowercase(); + if out.iter().any(|existing: &DynamicContractScope| { + glob_matches(&existing.chain, &scope.chain) + && existing.contract.eq_ignore_ascii_case(&normalized_contract) + }) { + continue; + } + out.push(DynamicContractScope { + chain: scope.chain.clone(), + contract: normalized_contract, + reason: scope.reason.clone(), + }); + } + + out +} + +pub fn validate_dynamic_contracts( + dynamic_contracts: &[DynamicContractScope], + chain: &str, +) -> Result<()> { + for scope in dynamic_contracts { + if !glob_matches(&scope.chain, chain) { + return Err(Error::ChainPermissionDenied { + chain: scope.chain.clone(), + operation: "dynamic-contract".to_string(), + }); + } + if scope.contract.parse::().is_err() { + return Err(Error::InvalidHostRequest { + reason: format!("invalid dynamic contract {}", scope.contract), + }); + } + } + + Ok(()) +} + pub fn glob_matches(pattern: &str, value: &str) -> bool { let pattern = pattern.to_ascii_lowercase(); let value = value.to_ascii_lowercase(); @@ -77,3 +125,21 @@ fn ensure_optional_scope(patterns: Option<&[String]>, value: &str) -> std::resul None => Ok(()), } } + +fn ensure_optional_contract_scope( + patterns: Option<&[String]>, + dynamic_contracts: &[DynamicContractScope], + chain: &str, + target: &str, +) -> std::result::Result<(), ()> { + if ensure_optional_scope(patterns, target).is_ok() { + return Ok(()); + } + if dynamic_contracts.iter().any(|scope| { + glob_matches(&scope.chain, chain) && scope.contract.eq_ignore_ascii_case(target) + }) { + return Ok(()); + } + + Err(()) +} diff --git a/pkg/beam-cli/src/apps/runtime/debug.rs b/pkg/beam-cli/src/apps/runtime/debug.rs index 1595a49..12d5892 100644 --- a/pkg/beam-cli/src/apps/runtime/debug.rs +++ b/pkg/beam-cli/src/apps/runtime/debug.rs @@ -42,6 +42,10 @@ pub(super) fn host_request_summary(request: &HostRequest) -> String { optional_value(&request.target), optional_value(&request.selector) ), + HostRequest::SignTypedData(request) => format!( + "sign-typed-data chain={} verifying_contract={} primary_type={}", + request.chain, request.verifying_contract, request.primary_type + ), HostRequest::SimulateTransaction(transaction) => format!( "simulate-transaction chain={} target={} selector={} spender={}", transaction.chain, diff --git a/pkg/beam-cli/src/apps/typed_data.rs b/pkg/beam-cli/src/apps/typed_data.rs new file mode 100644 index 0000000..c429fa5 --- /dev/null +++ b/pkg/beam-cli/src/apps/typed_data.rs @@ -0,0 +1,135 @@ +use std::io::Write; + +use contextful::ResultContextExt; +use contracts::Address; +use secp256k1::{Message, SECP256K1, SecretKey}; +use serde_json::{Value, json}; +use web3::signing::keccak256; + +use crate::{ + apps::{ + Error, Result, + host::{TypedDataSignRequest, parse_hex_data, parse_host_address}, + model::{AppPermissions, ChainOperation}, + permissions::{ + ensure_chain_scope_with_dynamic, normalize_dynamic_contracts, + validate_dynamic_contracts, + }, + }, + keystore::{decrypt_private_key, prompt_existing_password}, + runtime::BeamApp, +}; + +pub async fn sign( + app: &BeamApp, + permissions: &AppPermissions, + request: TypedDataSignRequest, +) -> Result { + if !permissions.wallet.sign_typed_data { + return Err(Error::WalletPermissionDenied { + permission: "sign-typed-data".to_string(), + }); + } + validate_dynamic_contracts(&request.dynamic_contracts, &request.chain)?; + let (chain, _) = app + .active_chain_client() + .await + .context("connect beam app signing chain client")?; + if chain.entry.key != request.chain { + return Err(Error::ChainPermissionDenied { + chain: request.chain, + operation: "sign-typed-data".to_string(), + }); + } + ensure_chain_scope_with_dynamic( + permissions, + &normalize_dynamic_contracts(&request.dynamic_contracts), + &chain.entry.key, + ChainOperation::SignTypedData, + Some(&request.verifying_contract), + None, + None, + )?; + + let wallet = app + .resolve_wallet(&request.wallet) + .await + .context("resolve beam app typed-data signing wallet")?; + let signer_address = + wallet + .address + .parse::
              () + .map_err(|_| Error::InvalidHostRequest { + reason: format!("invalid signing wallet address {}", wallet.address), + })?; + let verifying_contract = parse_host_address("verifying contract", &request.verifying_contract)?; + let domain_separator = parse_hash32("domain_separator", &request.domain_separator)?; + let struct_hash = parse_hash32("struct_hash", &request.struct_hash)?; + let digest = typed_data_digest(domain_separator, struct_hash); + + prompt_signature(&request, &chain.entry.key, signer_address, digest)?; + let password = prompt_existing_password().context("read typed-data signing password")?; + let private_key = + decrypt_private_key(&wallet, &password).context("decrypt typed-data signing wallet")?; + let secret_key = + SecretKey::from_slice(&private_key).map_err(|_| Error::InvalidHostRequest { + reason: "invalid signing private key".to_string(), + })?; + let message = Message::from_digest(digest); + let signature = SECP256K1.sign_ecdsa_recoverable(&message, &secret_key); + let (recovery_id, compact) = signature.serialize_compact(); + let recovery_id = + u8::try_from(recovery_id.to_i32()).map_err(|_| Error::InvalidHostRequest { + reason: "invalid signature recovery id".to_string(), + })?; + let mut out = Vec::with_capacity(65); + out.extend_from_slice(&compact); + out.push(27u8.saturating_add(recovery_id)); + + Ok(json!({ + "chain": chain.entry.key, + "digest": format!("0x{}", hex::encode(digest)), + "primary_type": request.primary_type, + "signature": format!("0x{}", hex::encode(out)), + "signer": format!("{signer_address:#x}"), + "verifying_contract": format!("{verifying_contract:#x}"), + })) +} + +fn prompt_signature( + request: &TypedDataSignRequest, + chain: &str, + signer: Address, + digest: [u8; 32], +) -> Result<()> { + let mut stderr = std::io::stderr().lock(); + writeln!(stderr, "Beam app typed-data signature request").context("write signature prompt")?; + writeln!(stderr, "App chain: {chain}").context("write signature prompt")?; + writeln!(stderr, "Signing wallet: {signer:#x}").context("write signature prompt")?; + writeln!(stderr, "Verifying contract: {}", request.verifying_contract) + .context("write signature prompt")?; + writeln!(stderr, "Primary type: {}", request.primary_type).context("write signature prompt")?; + writeln!(stderr, "Typed-data digest: 0x{}", hex::encode(digest)) + .context("write signature prompt")?; + for field in &request.fields { + writeln!(stderr, "{} {} = {}", field.kind, field.name, field.value) + .context("write signature prompt")?; + } + + Ok(()) +} + +fn parse_hash32(field: &str, value: &str) -> Result<[u8; 32]> { + let bytes = parse_hex_data(value)?; + bytes.try_into().map_err(|_| Error::InvalidHostRequest { + reason: format!("{field} must be 32 bytes"), + }) +} + +fn typed_data_digest(domain_separator: [u8; 32], struct_hash: [u8; 32]) -> [u8; 32] { + let mut digest_input = Vec::with_capacity(66); + digest_input.extend_from_slice(&[0x19, 0x01]); + digest_input.extend_from_slice(&domain_separator); + digest_input.extend_from_slice(&struct_hash); + keccak256(&digest_input) +} diff --git a/pkg/beam-cli/src/cli.rs b/pkg/beam-cli/src/cli.rs index f9da6f5..3136cc0 100644 --- a/pkg/beam-cli/src/cli.rs +++ b/pkg/beam-cli/src/cli.rs @@ -1,4 +1,4 @@ -// lint-long-file-override allow-max-lines=330 +// lint-long-file-override allow-max-lines=300 mod apps; mod chain; mod contract; diff --git a/pkg/beam-cli/src/cli/apps.rs b/pkg/beam-cli/src/cli/apps.rs index 2f659da..53049b6 100644 --- a/pkg/beam-cli/src/cli/apps.rs +++ b/pkg/beam-cli/src/cli/apps.rs @@ -48,6 +48,8 @@ pub struct AppRunArgs { pub prepare: bool, #[arg(long, default_value_t = false)] pub no_prompt: bool, + #[arg(long)] + pub max_network_fee_wei: Option, #[arg(trailing_var_arg = true, allow_hyphen_values = true)] pub args: Vec, } @@ -63,6 +65,8 @@ pub enum AppApprovalAction { approval_id: String, #[arg(long, default_value_t = false)] execute: bool, + #[arg(long)] + max_network_fee_wei: Option, }, /// Reject an app approval continuation Reject { approval_id: String }, diff --git a/pkg/beam-cli/src/commands/apps/args.rs b/pkg/beam-cli/src/commands/apps/args.rs new file mode 100644 index 0000000..78523b3 --- /dev/null +++ b/pkg/beam-cli/src/commands/apps/args.rs @@ -0,0 +1,32 @@ +use crate::cli::APP_HELP_ARG; + +pub(super) fn filtered_app_args(args: &[String]) -> Vec { + let mut filtered = Vec::new(); + let mut index = 0; + while index < args.len() { + let arg = &args[index]; + if arg == "--prepare" || arg == "--no-prompt" { + index += 1; + continue; + } + if arg == "--max-network-fee-wei" { + index += 2; + continue; + } + if arg.starts_with("--max-network-fee-wei=") { + index += 1; + continue; + } + filtered.push(if arg == APP_HELP_ARG { + "--help".to_string() + } else { + arg.clone() + }); + index += 1; + } + filtered +} + +pub(super) fn is_help_requested(args: &[String]) -> bool { + args.iter().any(|arg| arg == "--help" || arg == "-h") +} diff --git a/pkg/beam-cli/src/commands/apps/execution.rs b/pkg/beam-cli/src/commands/apps/execution.rs index 6a07530..bb30297 100644 --- a/pkg/beam-cli/src/commands/apps/execution.rs +++ b/pkg/beam-cli/src/commands/apps/execution.rs @@ -5,11 +5,14 @@ use serde_json::{Value, json}; use crate::{ apps::{ Error as AppError, - model::{ActionPlan, ActionStep}, + model::{ActionPlan, ActionStep, ApprovalFeeCap}, }, commands::signing::prompt_active_signer, error::{Error, Result}, - evm::{CalldataTransaction, TransactionGas, erc20_allowance, send_calldata_with_gas}, + evm::{ + CalldataTransaction, TransactionGasPolicy, erc20_allowance, send_calldata_with_fee_report, + transaction_fee_json, + }, output::{ CommandOutput, confirmed_transaction_message, dropped_transaction_message, pending_transaction_message, with_loading_handle, @@ -19,16 +22,29 @@ use crate::{ transaction::{TransactionExecution, loading_message}, }; -pub async fn execute_plan(app: &BeamApp, plan: &ActionPlan) -> Result { +pub async fn execute_plan( + app: &BeamApp, + plan: &ActionPlan, + fee_caps: &[ApprovalFeeCap], +) -> Result { + let signer = prompt_active_signer(app).await?; + execute_plan_with_signer(app, plan, fee_caps, &signer).await +} + +pub(crate) async fn execute_plan_with_signer( + app: &BeamApp, + plan: &ActionPlan, + fee_caps: &[ApprovalFeeCap], + signer: &S, +) -> Result { let executable = plan.steps.iter().any(|step| transaction(step).is_some()); if !executable { return Ok(render_simulated_execution(plan)); } let (chain, client) = app.active_chain_client().await?; - let signer = prompt_active_signer(app).await?; let mut outputs = Vec::new(); - for step in &plan.steps { + for (step_index, step) in plan.steps.iter().enumerate() { let Some(transaction) = transaction(step) else { continue; }; @@ -38,6 +54,7 @@ pub async fn execute_plan(app: &BeamApp, plan: &ActionPlan) -> Result Result Result String { lines.join("\n") } -fn step_output(step: &ActionStep, execution: TransactionExecution) -> Value { +fn step_output(step: &ActionStep, execution: TransactionExecution, fee: Value) -> Value { match execution { TransactionExecution::Confirmed(outcome) => json!({ "block_number": outcome.block_number, + "fee": fee, "state": "confirmed", "status": outcome.status, "summary": confirmed_transaction_message(&step.summary, &outcome.tx_hash, outcome.block_number), @@ -131,6 +153,7 @@ fn step_output(step: &ActionStep, execution: TransactionExecution) -> Value { }), TransactionExecution::Pending(pending) => json!({ "block_number": pending.block_number, + "fee": fee, "state": "pending", "status": null, "summary": pending_transaction_message(&step.summary, &pending.tx_hash, pending.block_number), @@ -138,6 +161,7 @@ fn step_output(step: &ActionStep, execution: TransactionExecution) -> Value { }), TransactionExecution::Dropped(dropped) => json!({ "block_number": dropped.block_number, + "fee": fee, "state": "dropped", "status": null, "summary": dropped_transaction_message(&step.summary, &dropped.tx_hash, dropped.block_number), @@ -203,10 +227,6 @@ impl TransactionValue<'_> { self.optional_string("gas_limit") } - fn gas_price(&self) -> Option<&str> { - self.optional_string("gas_price") - } - fn to(&self) -> Result<&str> { self.string("to") } @@ -228,14 +248,19 @@ impl TransactionValue<'_> { } } -fn parse_gas(transaction: &TransactionValue<'_>) -> Result> { - match (transaction.gas_limit(), transaction.gas_price()) { - (Some(gas_limit), Some(gas_price)) => Ok(Some(TransactionGas { - gas_limit: parse_u256(gas_limit)?, - gas_price: parse_u256(gas_price)?, - })), - _ => Ok(None), - } +fn parse_gas_policy( + step_index: usize, + transaction: &TransactionValue<'_>, + fee_caps: &[ApprovalFeeCap], +) -> Result> { + let fee_cap = fee_caps + .iter() + .find(|fee_cap| fee_cap.step_index == step_index) + .ok_or(AppError::ApprovalFeeCapMissing { step_index })?; + Ok(Some(TransactionGasPolicy { + gas_limit: transaction.gas_limit().map(parse_u256).transpose()?, + max_network_fee: Some(parse_u256(&fee_cap.approved_max_total_fee_wei)?), + })) } fn parse_hex_data(value: &str) -> Result> { @@ -248,7 +273,5 @@ fn parse_u256(value: &str) -> Result { if let Some(value) = value.strip_prefix("0x") { return Ok(contracts::U256::from_str_radix(value, 16).context("parse hex u256")?); } - Ok(value - .parse::() - .context("parse decimal u256")?) + Ok(contracts::U256::from_dec_str(value).context("parse decimal u256")?) } diff --git a/pkg/beam-cli/src/commands/apps/fee_caps.rs b/pkg/beam-cli/src/commands/apps/fee_caps.rs new file mode 100644 index 0000000..ac56355 --- /dev/null +++ b/pkg/beam-cli/src/commands/apps/fee_caps.rs @@ -0,0 +1,218 @@ +// lint-long-file-override allow-max-lines=300 +use contracts::U256; +use serde_json::Value; + +use super::{prompt::approve_interactively, render}; +use crate::{ + apps::{ + Error as AppError, + model::{ActionPlan, ActionStep, ApprovalFeeCap, ApprovalRecord}, + }, + error::{Error, Result}, + evm::{EvmFeeEstimate, TransactionGas, TransactionGasPolicy, resolve_transaction_gas}, + output::OutputMode, + runtime::{BeamApp, parse_address}, +}; + +const DEFAULT_APPROVAL_FEE_CAP_MULTIPLIER: u64 = 2; + +pub(super) async fn approval_fee_caps( + app: &BeamApp, + plan: &ActionPlan, + user_max_network_fee: Option, +) -> Result> { + let executable_steps = plan + .steps + .iter() + .any(|step| transaction_metadata(step).is_some()); + if !executable_steps { + return Ok(Vec::new()); + } + + let (_, client) = app.active_chain_client().await?; + let from = app.active_address().await?; + let mut caps = Vec::new(); + for (step_index, step) in plan.steps.iter().enumerate() { + let Some(transaction) = transaction_metadata(step) else { + continue; + }; + let to = parse_address(transaction.string("to")?)?; + let data = parse_hex_data(transaction.string("data")?)?; + let value = transaction + .optional_string("value") + .map(parse_u256) + .transpose()? + .unwrap_or_else(U256::zero); + let gas_limit = transaction + .optional_string("gas_limit") + .map(parse_u256) + .transpose()?; + let gas = resolve_transaction_gas( + &client, + from, + to, + &data, + value, + Some(TransactionGasPolicy { + gas_limit, + max_network_fee: user_max_network_fee, + }), + ) + .await?; + let approved_max_total_fee = user_max_network_fee.unwrap_or_else(|| { + gas.max_network_fee() * U256::from(DEFAULT_APPROVAL_FEE_CAP_MULTIPLIER) + }); + caps.push(approval_fee_cap(step_index, gas, approved_max_total_fee)); + } + + Ok(caps) +} + +fn approval_fee_cap( + step_index: usize, + gas: TransactionGas, + approved_max_total_fee: U256, +) -> ApprovalFeeCap { + let approved_max_fee_per_gas = if gas.gas_limit.is_zero() { + U256::zero() + } else { + approved_max_total_fee / gas.gas_limit + }; + let (fee_mode, approved_max_priority_fee_per_gas) = match gas.fee { + EvmFeeEstimate::Legacy { .. } => ("legacy", None), + EvmFeeEstimate::Eip1559 { + max_priority_fee_per_gas, + .. + } => ("eip1559", Some(max_priority_fee_per_gas.to_string())), + }; + + ApprovalFeeCap { + step_index, + approved_gas_limit: gas.gas_limit.to_string(), + approved_max_fee_per_gas: approved_max_fee_per_gas.to_string(), + approved_max_total_fee_wei: approved_max_total_fee.to_string(), + fee_mode: fee_mode.to_string(), + approved_max_priority_fee_per_gas, + } +} + +pub(super) fn parse_max_network_fee(value: &str) -> Result { + parse_u256(value) +} + +pub(super) fn max_network_fee_arg( + cli_value: Option<&str>, + args: &[String], +) -> Result> { + let trailing_value = trailing_max_network_fee_arg(args)?; + match (cli_value, trailing_value.as_deref()) { + (Some(value), Some(trailing)) if value != trailing => Err(AppError::InvalidHostRequest { + reason: "conflicting --max-network-fee-wei values".to_string(), + } + .into()), + (Some(value), _) | (_, Some(value)) => Ok(Some(parse_max_network_fee(value)?)), + (None, None) => Ok(None), + } +} + +pub(super) async fn approval_fee_caps_for_execution( + app: &BeamApp, + approval: &ApprovalRecord, + max_network_fee_wei: Option<&str>, +) -> Result> { + if !approval.fee_caps.is_empty() { + return Ok(approval.fee_caps.clone()); + } + if app.output_mode != OutputMode::Default { + return Err(AppError::ApprovalNeedsFeeCaps { + approval_id: approval.id.clone(), + } + .into()); + } + + let max_network_fee = max_network_fee_wei.map(parse_max_network_fee).transpose()?; + let fee_caps = approval_fee_caps(app, &approval.plan, max_network_fee).await?; + approve_interactively(&render::render_plan_with_fee_caps( + &approval.plan, + &fee_caps, + ))?; + Ok(fee_caps) +} + +fn trailing_max_network_fee_arg(args: &[String]) -> Result> { + let mut value = None; + let mut index = 0; + while index < args.len() { + let arg = &args[index]; + if let Some(arg_value) = arg.strip_prefix("--max-network-fee-wei=") { + value = merge_max_network_fee_arg(value, arg_value)?; + index += 1; + continue; + } + if arg == "--max-network-fee-wei" { + let Some(arg_value) = args.get(index + 1) else { + return Err(AppError::InvalidHostRequest { + reason: "--max-network-fee-wei requires a value".to_string(), + } + .into()); + }; + value = merge_max_network_fee_arg(value, arg_value)?; + index += 2; + continue; + } + index += 1; + } + Ok(value) +} + +fn merge_max_network_fee_arg(existing: Option, next: &str) -> Result> { + if let Some(existing) = existing + && existing != next + { + return Err(AppError::InvalidHostRequest { + reason: "conflicting --max-network-fee-wei values".to_string(), + } + .into()); + } + Ok(Some(next.to_string())) +} + +fn transaction_metadata(step: &ActionStep) -> Option> { + step.metadata + .get("transaction") + .and_then(Value::as_object) + .map(TransactionMetadata) +} + +struct TransactionMetadata<'a>(&'a serde_json::Map); + +impl TransactionMetadata<'_> { + fn string(&self, key: &str) -> Result<&str> { + self.optional_string(key).ok_or_else(|| { + Error::App(AppError::InvalidHostRequest { + reason: format!("transaction missing {key}"), + }) + }) + } + + fn optional_string(&self, key: &str) -> Option<&str> { + self.0.get(key).and_then(Value::as_str) + } +} + +fn parse_hex_data(value: &str) -> Result> { + hex::decode(value.strip_prefix("0x").unwrap_or(value)).map_err(|_| Error::InvalidHexData { + value: value.to_string(), + }) +} + +fn parse_u256(value: &str) -> Result { + if let Some(value) = value.strip_prefix("0x") { + return U256::from_str_radix(value, 16).map_err(|_| Error::InvalidNumber { + value: value.to_string(), + }); + } + U256::from_dec_str(value).map_err(|_| Error::InvalidNumber { + value: value.to_string(), + }) +} diff --git a/pkg/beam-cli/src/commands/apps/mod.rs b/pkg/beam-cli/src/commands/apps/mod.rs index a801603..ca8baa3 100644 --- a/pkg/beam-cli/src/commands/apps/mod.rs +++ b/pkg/beam-cli/src/commands/apps/mod.rs @@ -1,8 +1,12 @@ // lint-long-file-override allow-max-lines=400 +mod args; mod execution; +mod fee_caps; mod plans; mod prompt; mod render; +#[cfg(test)] +mod tests; use std::fs; @@ -22,14 +26,16 @@ use crate::{ store::AppCache, validate::ensure_beam_version, }, - cli::{APP_HELP_ARG, AppApprovalAction, AppInstallArgs, AppRemoveArgs, AppRunArgs, AppsAction}, + cli::{AppApprovalAction, AppInstallArgs, AppRemoveArgs, AppRunArgs, AppsAction}, error::Result, output::CommandOutput, runtime::BeamApp, table::render_table, }; +use args::{filtered_app_args, is_help_requested}; use execution::execute_plan; +use fee_caps::{approval_fee_caps, approval_fee_caps_for_execution, max_network_fee_arg}; use plans::{validate_guest_plan, validate_plan_permissions}; use prompt::approve_interactively; use render::{ @@ -54,6 +60,7 @@ pub async fn run(app: &BeamApp, action: AppsAction) -> Result<()> { pub async fn run_app(app: &BeamApp, args: AppRunArgs) -> Result<()> { let prepare = args.prepare || args.args.iter().any(|arg| arg == "--prepare"); let no_prompt = args.no_prompt || args.args.iter().any(|arg| arg == "--no-prompt"); + let max_network_fee = max_network_fee_arg(args.max_network_fee_wei.as_deref(), &args.args)?; let command_args = filtered_app_args(&args.args); let cache = AppCache::load(&app.paths.root).await?; let (installed, manifest) = cache.active_manifest(&args.app).await?; @@ -106,10 +113,15 @@ pub async fn run_app(app: &BeamApp, args: AppRunArgs) -> Result<()> { validate_guest_plan(app, &manifest, &installed, &command_args, &plan).await?; validate_plan_permissions(&manifest.permissions, &plan)?; let approval_required = plan_requires_approval(&plan); + let fee_caps = if approval_required { + approval_fee_caps(app, &plan, max_network_fee).await? + } else { + Vec::new() + }; if prepare { let approvals = ApprovalStore::load(&app.paths.root).await?; - let approval = approvals.create(plan).await?; + let approval = approvals.create(plan, fee_caps).await?; return render_approval_created(&approval).print(app.output_mode); } @@ -117,9 +129,11 @@ pub async fn run_app(app: &BeamApp, args: AppRunArgs) -> Result<()> { if no_prompt { return Err(AppError::ApprovalRequired.into()); } - approve_interactively(&render::render_plan(&plan))?; + approve_interactively(&render::render_plan_with_fee_caps(&plan, &fee_caps))?; } - execute_plan(app, &plan).await?.print(app.output_mode) + execute_plan(app, &plan, &fee_caps) + .await? + .print(app.output_mode) } fn plan_requires_approval(plan: &ActionPlan) -> bool { @@ -128,23 +142,6 @@ fn plan_requires_approval(plan: &ActionPlan) -> bool { .any(|step| step.kind == "erc20-approval" || step.kind == "transaction") } -fn filtered_app_args(args: &[String]) -> Vec { - args.iter() - .filter(|arg| arg.as_str() != "--prepare" && arg.as_str() != "--no-prompt") - .map(|arg| { - if arg == APP_HELP_ARG { - "--help".to_string() - } else { - arg.clone() - } - }) - .collect() -} - -fn is_help_requested(args: &[String]) -> bool { - args.iter().any(|arg| arg == "--help" || arg == "-h") -} - async fn install(app: &BeamApp, args: AppInstallArgs) -> Result<()> { let registry_url = registry_url_from_env(); let index = fetch_index(®istry_url).await?; @@ -310,12 +307,16 @@ async fn approvals(app: &BeamApp, action: AppApprovalAction) -> Result<()> { AppApprovalAction::Approve { approval_id, execute, + max_network_fee_wei, } => { let approval = store.find(&approval_id).await?; if execute { ensure_approval_executable(&approval)?; ensure_approval_matches_active(app, &approval).await?; - let output = execute_plan(app, &approval.plan).await?; + let fee_caps = + approval_fee_caps_for_execution(app, &approval, max_network_fee_wei.as_deref()) + .await?; + let output = execute_plan(app, &approval.plan, &fee_caps).await?; store.mark_executed(&approval_id).await?; return output.print(app.output_mode); } diff --git a/pkg/beam-cli/src/commands/apps/plans.rs b/pkg/beam-cli/src/commands/apps/plans.rs index 7860340..9031b6f 100644 --- a/pkg/beam-cli/src/commands/apps/plans.rs +++ b/pkg/beam-cli/src/commands/apps/plans.rs @@ -4,7 +4,10 @@ use crate::{ model::{ ActionPlan, ActionStep, AppManifest, AppPermissions, ChainOperation, InstalledApp, }, - permissions::ensure_chain_scope, + permissions::{ + ensure_chain_scope_with_dynamic, normalize_dynamic_contracts, + validate_dynamic_contracts, + }, store::now, }, error::Result, @@ -78,10 +81,13 @@ pub(super) fn validate_plan_permissions( permissions: &AppPermissions, plan: &ActionPlan, ) -> Result<()> { + validate_dynamic_contracts(&plan.dynamic_contracts, &plan.chain)?; + let dynamic_contracts = normalize_dynamic_contracts(&plan.dynamic_contracts); for step in &plan.steps { if let Some(target) = step.target.as_deref() { - ensure_chain_scope( + ensure_chain_scope_with_dynamic( permissions, + &dynamic_contracts, &plan.chain, operation_for_step(step), Some(target), @@ -90,8 +96,9 @@ pub(super) fn validate_plan_permissions( )?; } if let Some(selector) = step.selector.as_deref() { - ensure_chain_scope( + ensure_chain_scope_with_dynamic( permissions, + &dynamic_contracts, &plan.chain, operation_for_step(step), None, @@ -100,8 +107,9 @@ pub(super) fn validate_plan_permissions( )?; } if let Some(spender) = step.spender.as_deref() { - ensure_chain_scope( + ensure_chain_scope_with_dynamic( permissions, + &dynamic_contracts, &plan.chain, operation_for_step(step), None, diff --git a/pkg/beam-cli/src/commands/apps/render.rs b/pkg/beam-cli/src/commands/apps/render.rs index 6efc63f..a878667 100644 --- a/pkg/beam-cli/src/commands/apps/render.rs +++ b/pkg/beam-cli/src/commands/apps/render.rs @@ -4,7 +4,7 @@ use serde_json::{Value, json}; use crate::{ apps::model::{ ActionPlan, AppCommand, AppCommandExample, AppCommandParameter, AppManifest, - AppPermissions, ApprovalRecord, + AppPermissions, ApprovalFeeCap, ApprovalRecord, }, output::CommandOutput, }; @@ -62,10 +62,11 @@ pub(super) fn render_permissions(permissions: &AppPermissions) -> String { } lines.push("Wallet actions:".to_string()); lines.push(format!( - " - balances: {}\n - transaction proposals: {}\n - erc20 approvals: {}", + " - balances: {}\n - transaction proposals: {}\n - erc20 approvals: {}\n - typed-data signing: {}", permissions.wallet.read_balances, permissions.wallet.propose_transactions, - permissions.wallet.erc20_approval + permissions.wallet.erc20_approval, + permissions.wallet.sign_typed_data )); lines.push(format!( "Storage:\n - app-local: {}", @@ -168,14 +169,33 @@ fn push_examples(lines: &mut Vec, examples: &[AppCommandExample]) { } } -pub(super) fn render_plan(plan: &ActionPlan) -> String { +pub(super) fn render_plan_with_fee_caps(plan: &ActionPlan, fee_caps: &[ApprovalFeeCap]) -> String { let mut lines = vec![ format!("App: {} {}", plan.app_id, plan.app_version), format!("Chain: {}", plan.chain), "Action:".to_string(), ]; - for step in &plan.steps { + for (step_index, step) in plan.steps.iter().enumerate() { lines.push(format!(" - {}", step.summary)); + if let Some(fee_cap) = fee_caps + .iter() + .find(|fee_cap| fee_cap.step_index == step_index) + { + lines.push(format!( + " Max network fee: {} wei", + fee_cap.approved_max_total_fee_wei + )); + lines.push(format!( + " Approved gas limit: {}", + fee_cap.approved_gas_limit + )); + } + } + if !plan.dynamic_contracts.is_empty() { + lines.push("Invocation-scoped contracts:".to_string()); + for scope in &plan.dynamic_contracts { + lines.push(format!(" - {} on {}", scope.contract, scope.chain)); + } } lines.push(format!("Expires at: {}", plan.expires_at)); lines.join("\n") @@ -187,7 +207,7 @@ pub(super) fn render_approval(record: &ApprovalRecord) -> String { record.id, record.status, record.plan_hash, - render_plan(&record.plan) + render_plan_with_fee_caps(&record.plan, &record.fee_caps) ) } diff --git a/pkg/beam-cli/src/commands/apps/tests.rs b/pkg/beam-cli/src/commands/apps/tests.rs new file mode 100644 index 0000000..14cda91 --- /dev/null +++ b/pkg/beam-cli/src/commands/apps/tests.rs @@ -0,0 +1,272 @@ +// lint-long-file-override allow-max-lines=300 +use std::sync::{Arc, Mutex}; + +use contracts::{Address, U256}; +use serde_json::{Value, json}; +use tokio::{ + io::AsyncWriteExt, + net::{TcpListener, TcpStream}, +}; +use web3::types::{H256, TransactionReceipt, U64}; + +use super::execution::execute_plan_with_signer; +use crate::{ + apps::model::{ActionPlan, ActionStep, ApprovalFeeCap}, + error::Error, + output::OutputMode, + runtime::InvocationOverrides, + signer::KeySigner, + tests::fixtures::{read_rpc_request, test_app_with_output}, +}; + +const BASE_CHAIN_ID: u64 = 8453; +const MAX_FEE_PER_GAS: u64 = 4_000_000_000; +const MAX_PRIORITY_FEE_PER_GAS: u64 = 2_000_000_000; +const PADDED_GAS_LIMIT: u64 = 25_200; + +#[tokio::test] +async fn app_transaction_with_low_gas_price_is_repriced_as_eip1559() { + let (rpc_url, state, server) = spawn_app_execution_rpc_server().await; + let (_temp_dir, app) = test_app_with_output( + OutputMode::Quiet, + InvocationOverrides { + chain: Some("base".to_string()), + rpc: Some(rpc_url), + ..InvocationOverrides::default() + }, + ) + .await; + let signer = KeySigner::from_slice(&[7u8; 32]).expect("create signer"); + let output = execute_plan_with_signer(&app, &action_plan(), &fee_caps(), &signer) + .await + .expect("execute app plan"); + server.abort(); + + let raw_transaction = state + .lock() + .expect("rpc state") + .raw_transaction + .clone() + .expect("raw transaction"); + let signed = decode_typed_transaction(&raw_transaction); + + assert_eq!(signed.transaction_type, 2); + assert_eq!(signed.max_priority_fee_per_gas, MAX_PRIORITY_FEE_PER_GAS); + assert_eq!(signed.max_fee_per_gas, MAX_FEE_PER_GAS); + assert_eq!(output.value["steps"][0]["fee"]["fee_mode"], "eip1559"); + assert_eq!( + output.value["steps"][0]["fee"]["max_fee_per_gas"], + MAX_FEE_PER_GAS.to_string() + ); + assert_eq!( + output.value["steps"][0]["fee"]["max_network_fee_wei"], + (PADDED_GAS_LIMIT * MAX_FEE_PER_GAS).to_string() + ); + assert_eq!(output.value["steps"][0]["fee"].get("gas_price"), None); +} + +#[tokio::test] +async fn app_transaction_without_fee_cap_fails_closed() { + let (rpc_url, _state, server) = spawn_app_execution_rpc_server().await; + let (_temp_dir, app) = test_app_with_output( + OutputMode::Quiet, + InvocationOverrides { + chain: Some("base".to_string()), + rpc: Some(rpc_url), + ..InvocationOverrides::default() + }, + ) + .await; + let signer = KeySigner::from_slice(&[7u8; 32]).expect("create signer"); + + let error = execute_plan_with_signer(&app, &action_plan(), &[], &signer) + .await + .expect_err("reject missing fee cap"); + server.abort(); + + assert!(matches!( + error, + Error::App(crate::apps::Error::ApprovalFeeCapMissing { step_index: 0 }) + )); +} + +#[tokio::test] +async fn app_transaction_over_fee_cap_fails_before_submission() { + let (rpc_url, state, server) = spawn_app_execution_rpc_server().await; + let (_temp_dir, app) = test_app_with_output( + OutputMode::Quiet, + InvocationOverrides { + chain: Some("base".to_string()), + rpc: Some(rpc_url), + ..InvocationOverrides::default() + }, + ) + .await; + let signer = KeySigner::from_slice(&[7u8; 32]).expect("create signer"); + let mut fee_caps = fee_caps(); + fee_caps[0].approved_max_total_fee_wei = "1".to_string(); + + let error = execute_plan_with_signer(&app, &action_plan(), &fee_caps, &signer) + .await + .expect_err("reject fee cap breach"); + server.abort(); + + assert!(matches!(error, Error::TransactionFeeCapExceeded { .. })); + assert!(state.lock().expect("rpc state").raw_transaction.is_none()); +} + +#[derive(Default)] +struct AppExecutionRpcState { + raw_transaction: Option, +} + +struct DecodedTypedTransaction { + transaction_type: u8, + max_priority_fee_per_gas: u64, + max_fee_per_gas: u64, +} + +async fn spawn_app_execution_rpc_server() -> ( + String, + Arc>, + tokio::task::JoinHandle<()>, +) { + let listener = TcpListener::bind("127.0.0.1:0") + .await + .expect("bind app execution rpc listener"); + let address = listener.local_addr().expect("listener address"); + let state = Arc::new(Mutex::new(AppExecutionRpcState::default())); + let server_state = Arc::clone(&state); + + let server = tokio::spawn(async move { + loop { + let (stream, _peer) = listener.accept().await.expect("accept rpc connection"); + handle_app_execution_rpc_connection(stream, Arc::clone(&server_state)).await; + } + }); + + (format!("http://{address}"), state, server) +} + +async fn handle_app_execution_rpc_connection( + mut stream: TcpStream, + state: Arc>, +) { + let request = read_rpc_request(&mut stream).await; + let method = request["method"].as_str().expect("rpc method"); + if method == "eth_sendRawTransaction" { + state.lock().expect("rpc state").raw_transaction = Some( + request["params"][0] + .as_str() + .expect("raw transaction") + .to_string(), + ); + } + + let body = rpc_response(&request); + let response = format!( + "HTTP/1.1 200 OK\r\ncontent-type: application/json\r\ncontent-length: {}\r\nconnection: close\r\n\r\n{}", + body.len(), + body + ); + stream + .write_all(response.as_bytes()) + .await + .expect("write rpc response"); +} + +fn rpc_response(request: &Value) -> String { + let result = match request["method"].as_str().expect("rpc method") { + "eth_chainId" => serde_json::to_value(U256::from(BASE_CHAIN_ID)).expect("chain id"), + "eth_feeHistory" => json!({ + "oldestBlock": "0x1", + "baseFeePerGas": ["0x3b9aca00", "0x3b9aca00"], + "gasUsedRatio": [0.5], + "reward": [["0x77359400"]], + }), + "eth_getTransactionCount" => serde_json::to_value(U256::zero()).expect("nonce"), + "eth_sendRawTransaction" => serde_json::to_value(H256::from_low_u64_be(7)).expect("hash"), + "eth_getTransactionReceipt" => serde_json::to_value(successful_receipt()).expect("receipt"), + other => panic!("unexpected rpc method {other}"), + }; + + json!({ + "jsonrpc": "2.0", + "id": request["id"].clone(), + "result": result, + }) + .to_string() +} + +fn successful_receipt() -> TransactionReceipt { + TransactionReceipt { + block_number: Some(U64::from(42)), + status: Some(U64::from(1)), + transaction_hash: H256::from_low_u64_be(7), + ..Default::default() + } +} + +fn action_plan() -> ActionPlan { + ActionPlan { + app_id: "uniswap".to_string(), + app_version: "1.0.0".to_string(), + wasm_sha256: "sha256:wasm".to_string(), + manifest_sha256: "sha256:manifest".to_string(), + command: "swap USDC ETH 1".to_string(), + wallet: None, + chain: "base".to_string(), + steps: vec![ActionStep { + kind: "transaction".to_string(), + summary: "Swap 1 USDC for ETH".to_string(), + target: Some(format!("{:#x}", Address::from_low_u64_be(0xfeed))), + selector: Some("0x3593564c".to_string()), + spender: None, + value: Some("0".to_string()), + metadata: json!({ + "transaction": { + "data": "0x3593564c", + "gas_limit": "21000", + "gas_price": "1", + "to": format!("{:#x}", Address::from_low_u64_be(0xfeed)), + "value": "0", + }, + }), + }], + bindings: Vec::new(), + constraints: Vec::new(), + dynamic_contracts: Vec::new(), + expires_at: 9_999_999_999, + } +} + +fn fee_caps() -> Vec { + vec![ApprovalFeeCap { + step_index: 0, + approved_gas_limit: PADDED_GAS_LIMIT.to_string(), + approved_max_fee_per_gas: MAX_FEE_PER_GAS.to_string(), + approved_max_total_fee_wei: "200000000000000".to_string(), + fee_mode: "eip1559".to_string(), + approved_max_priority_fee_per_gas: Some(MAX_PRIORITY_FEE_PER_GAS.to_string()), + }] +} + +fn decode_typed_transaction(raw_transaction: &str) -> DecodedTypedTransaction { + let bytes = hex::decode(raw_transaction.trim_start_matches("0x")).expect("decode transaction"); + assert!(!bytes.is_empty(), "raw transaction should not be empty"); + let rlp = rlp::Rlp::new(&bytes[1..]); + DecodedTypedTransaction { + transaction_type: bytes[0], + max_priority_fee_per_gas: rlp_u64_at(&rlp, 2), + max_fee_per_gas: rlp_u64_at(&rlp, 3), + } +} + +fn rlp_u64_at(rlp: &rlp::Rlp<'_>, index: usize) -> u64 { + let data = rlp + .at(index) + .expect("decode rlp item") + .data() + .expect("decode rlp integer"); + U256::from_big_endian(data).as_u64() +} diff --git a/pkg/beam-cli/src/commands/fetch/payment.rs b/pkg/beam-cli/src/commands/fetch/payment.rs index f3663bb..45b83d2 100644 --- a/pkg/beam-cli/src/commands/fetch/payment.rs +++ b/pkg/beam-cli/src/commands/fetch/payment.rs @@ -16,7 +16,7 @@ use crate::{ commands::signing::prompt_active_signer, error::{Error, Result}, evm::{ - FunctionCall, TransactionGas, format_units, parse_units, send_function_with_gas, + FunctionCall, TransactionGasPolicy, format_units, parse_units, send_function_with_gas, send_native_with_gas, }, human_output::sanitize_control_chars, @@ -226,10 +226,10 @@ impl PreparedPayment { Ok(()) } - fn transaction_gas(&self) -> TransactionGas { - TransactionGas { - gas_limit: self.gas.gas_limit, - gas_price: self.gas.gas_price, + fn transaction_gas(&self) -> TransactionGasPolicy { + TransactionGasPolicy { + gas_limit: Some(self.gas.gas_limit), + max_network_fee: Some(self.gas.fee), } } diff --git a/pkg/beam-cli/src/commands/gas.rs b/pkg/beam-cli/src/commands/gas.rs index b6d881b..5e8a957 100644 --- a/pkg/beam-cli/src/commands/gas.rs +++ b/pkg/beam-cli/src/commands/gas.rs @@ -1,4 +1,4 @@ -// lint-long-file-override allow-max-lines=300 +// lint-long-file-override allow-max-lines=400 use serde_json::{Value, json}; use web3::ethabi::StateMutability; @@ -8,8 +8,8 @@ use crate::{ commands::call::{parse_transaction_value, resolve_address_args}, error::Result, evm::{ - FunctionCall, TransactionGas, erc20_decimals, estimate_function_gas, estimate_native_gas, - format_units, parse_units, + EvmFeeEstimate, EvmFeeMode, FunctionCall, TransactionGas, erc20_decimals, + estimate_function_gas, estimate_native_gas, format_units, parse_units, }, human_output::sanitize_control_chars, output::{CommandOutput, with_loading}, @@ -254,10 +254,27 @@ fn render_gas_output(config: GasOutputConfig<'_>) -> CommandOutput { "chain": config.chain_key, "estimated_fee": fee_display, "estimated_fee_wei": fee.to_string(), + "fee_mode": fee_mode_label(&config.gas.fee), "gas_limit": config.gas.gas_limit.to_string(), - "gas_price": config.gas.gas_price.to_string(), + "max_fee_per_gas": config.gas.gas_price_for_display().to_string(), "native_symbol": config.native_symbol, }); + if let Some(output) = value.as_object_mut() { + match config.gas.fee { + EvmFeeEstimate::Legacy { gas_price } => { + output.insert("gas_price".to_string(), json!(gas_price.to_string())); + } + EvmFeeEstimate::Eip1559 { + max_priority_fee_per_gas, + .. + } => { + output.insert( + "max_priority_fee_per_gas".to_string(), + json!(max_priority_fee_per_gas.to_string()), + ); + } + } + } if let Some(output) = value.as_object_mut() && let Some(extra) = config.extra.as_object() @@ -267,24 +284,33 @@ fn render_gas_output(config: GasOutputConfig<'_>) -> CommandOutput { CommandOutput::new( format!( - "{}\nEstimated fee: {} {} ({} wei)\nGas limit: {}\nGas price: {} wei", + "{}\nEstimated fee: {} {} ({} wei)\nGas limit: {}\nFee mode: {}\nMax fee per gas: {} wei", config.default_summary, fee_display, config.native_symbol, fee, config.gas.gas_limit, - config.gas.gas_price, + fee_mode_label(&config.gas.fee), + config.gas.gas_price_for_display(), ), value, ) .compact(fee_display.clone()) .markdown(format!( - "- Chain: `{}`\n- Estimated fee: `{}` `{}` (`{}` wei)\n- Gas limit: `{}`\n- Gas price: `{}` wei", + "- Chain: `{}`\n- Estimated fee: `{}` `{}` (`{}` wei)\n- Gas limit: `{}`\n- Fee mode: `{}`\n- Max fee per gas: `{}` wei", config.chain_key, fee_display, config.native_symbol, fee, config.gas.gas_limit, - config.gas.gas_price, + fee_mode_label(&config.gas.fee), + config.gas.gas_price_for_display(), )) } + +fn fee_mode_label(fee: &EvmFeeEstimate) -> &'static str { + match fee.mode() { + EvmFeeMode::Legacy => "legacy", + EvmFeeMode::Eip1559 => "eip1559", + } +} diff --git a/pkg/beam-cli/src/commands/gas/tests.rs b/pkg/beam-cli/src/commands/gas/tests.rs index a8d4f97..6494369 100644 --- a/pkg/beam-cli/src/commands/gas/tests.rs +++ b/pkg/beam-cli/src/commands/gas/tests.rs @@ -2,7 +2,7 @@ use contracts::U256; use serde_json::json; use super::{GasOutputConfig, render_gas_output}; -use crate::evm::TransactionGas; +use crate::evm::{EvmFeeEstimate, TransactionGas}; #[test] fn render_gas_output_includes_fee_details() { @@ -12,7 +12,9 @@ fn render_gas_output_includes_fee_details() { extra: json!({ "kind": "transfer" }), gas: TransactionGas { gas_limit: U256::from(21_000u64), - gas_price: U256::from(1_000_000_000u64), + fee: EvmFeeEstimate::Legacy { + gas_price: U256::from(1_000_000_000u64), + }, }, native_symbol: "ETH", }); @@ -20,7 +22,9 @@ fn render_gas_output_includes_fee_details() { assert!(output.default.contains("Estimated fee: 0.000021 ETH")); assert_eq!(output.value["estimated_fee"], "0.000021"); assert_eq!(output.value["estimated_fee_wei"], "21000000000000"); + assert_eq!(output.value["fee_mode"], "legacy"); assert_eq!(output.value["gas_limit"], "21000"); assert_eq!(output.value["gas_price"], "1000000000"); + assert_eq!(output.value["max_fee_per_gas"], "1000000000"); assert_eq!(output.value["kind"], "transfer"); } diff --git a/pkg/beam-cli/src/error.rs b/pkg/beam-cli/src/error.rs index 2ebd740..b1ac036 100644 --- a/pkg/beam-cli/src/error.rs +++ b/pkg/beam-cli/src/error.rs @@ -1,5 +1,6 @@ -// lint-long-file-override allow-max-lines=400 +// lint-long-file-override allow-max-lines=500 use contextful::{FromContextful, InternalError}; +use contracts::U256; use crate::apps::Error as AppError; @@ -323,6 +324,11 @@ pub enum Error { #[error("[beam-cli] transaction not found: {tx_hash}")] TransactionNotFound { tx_hash: String }, + #[error( + "[beam-cli] transaction network fee exceeds approved cap: estimated {estimated} wei, cap {cap} wei" + )] + TransactionFeeCapExceeded { cap: U256, estimated: U256 }, + #[error("[beam-cli] block not found: {block}")] BlockNotFound { block: String }, diff --git a/pkg/beam-cli/src/evm.rs b/pkg/beam-cli/src/evm.rs index b3469cd..c05efae 100644 --- a/pkg/beam-cli/src/evm.rs +++ b/pkg/beam-cli/src/evm.rs @@ -1,14 +1,14 @@ // lint-long-file-override allow-max-lines=400 +mod fees; mod gas; use contextful::ResultContextExt; use contracts::{Address, Client, ERC20Contract, U256}; use web3::{ ethabi::{Function, StateMutability}, - types::{Bytes, CallRequest, TransactionParameters, TransactionReceipt}, + types::{Bytes, CallRequest, TransactionParameters, TransactionReceipt, U64}, }; -use self::gas::resolve_transaction_gas; pub use crate::units::{format_units, parse_units, validate_unit_decimals}; use crate::{ abi::{decode_output, encode_input, parse_function, tokens_to_json}, @@ -16,7 +16,9 @@ use crate::{ signer::Signer, transaction::{TransactionExecution, TransactionStatusUpdate, submit_and_wait}, }; -pub use gas::{TransactionGas, estimate_function_gas, estimate_native_gas}; +pub use fees::{EvmFeeEstimate, EvmFeeMode}; +pub(crate) use gas::resolve_transaction_gas; +pub use gas::{TransactionGas, TransactionGasPolicy, estimate_function_gas, estimate_native_gas}; #[derive(Clone, Debug)] pub struct CallOutcome { @@ -44,7 +46,13 @@ pub struct CalldataTransaction { pub data: Vec, pub to: Address, pub value: U256, - pub gas: Option, + pub gas: Option, +} + +#[derive(Clone, Debug)] +pub struct CalldataExecution { + pub execution: TransactionExecution, + pub gas: TransactionGas, } pub async fn native_balance(client: &Client, address: Address) -> Result { @@ -164,11 +172,12 @@ pub async fn send_native_with_gas( signer: &S, to: Address, amount: U256, - gas: Option, + gas: Option, on_status: impl FnMut(TransactionStatusUpdate), cancel: impl std::future::Future, ) -> Result { - let tx = prepare_transaction(client, signer.address(), to, Vec::new(), amount, gas).await?; + let (tx, _) = + prepare_transaction(client, signer.address(), to, Vec::new(), amount, gas).await?; submit_transaction(client, signer, tx, on_status, cancel).await } @@ -186,12 +195,12 @@ pub async fn send_function_with_gas( client: &Client, signer: &S, call: FunctionCall<'_>, - gas: Option, + gas: Option, on_status: impl FnMut(TransactionStatusUpdate), cancel: impl std::future::Future, ) -> Result { let data = encode_input(call.function, call.args)?; - let tx = prepare_transaction( + let (tx, _) = prepare_transaction( client, signer.address(), call.contract, @@ -203,14 +212,14 @@ pub async fn send_function_with_gas( submit_transaction(client, signer, tx, on_status, cancel).await } -pub async fn send_calldata_with_gas( +pub async fn send_calldata_with_fee_report( client: &Client, signer: &S, transaction: CalldataTransaction, on_status: impl FnMut(TransactionStatusUpdate), cancel: impl std::future::Future, -) -> Result { - let tx = prepare_transaction( +) -> Result { + let (tx, gas) = prepare_transaction( client, signer.address(), transaction.to, @@ -219,7 +228,8 @@ pub async fn send_calldata_with_gas( transaction.gas, ) .await?; - submit_transaction(client, signer, tx, on_status, cancel).await + let execution = submit_transaction(client, signer, tx, on_status, cancel).await?; + Ok(CalldataExecution { execution, gas }) } pub async fn simulate_calldata( @@ -252,10 +262,11 @@ async fn prepare_transaction( to: Address, data: Vec, value: U256, - gas: Option, -) -> Result { + gas: Option, +) -> Result<(TransactionParameters, TransactionGas)> { let gas = resolve_transaction_gas(client, from, to, &data, value, gas).await?; - fill_transaction(client, from, to, data, value, gas).await + let transaction = fill_transaction(client, from, to, data, value, gas).await?; + Ok((transaction, gas)) } async fn fill_transaction( @@ -277,14 +288,50 @@ async fn fill_transaction( chain_id: Some(chain_id), data: Bytes(data), gas: gas.gas_limit, - gas_price: Some(gas.gas_price), nonce: Some(nonce), to: Some(to), value, - ..Default::default() + ..transaction_fee_parameters(&gas) }) } +fn transaction_fee_parameters(gas: &TransactionGas) -> TransactionParameters { + match &gas.fee { + EvmFeeEstimate::Legacy { gas_price } => TransactionParameters { + gas_price: Some(*gas_price), + ..Default::default() + }, + EvmFeeEstimate::Eip1559 { + max_fee_per_gas, + max_priority_fee_per_gas, + } => TransactionParameters { + transaction_type: Some(U64::from(2)), + max_fee_per_gas: Some(*max_fee_per_gas), + max_priority_fee_per_gas: Some(*max_priority_fee_per_gas), + ..Default::default() + }, + } +} + +pub fn transaction_fee_json(gas: &TransactionGas) -> serde_json::Value { + match &gas.fee { + EvmFeeEstimate::Legacy { gas_price } => serde_json::json!({ + "fee_mode": "legacy", + "gas_price": gas_price.to_string(), + "max_network_fee_wei": gas.max_network_fee().to_string(), + }), + EvmFeeEstimate::Eip1559 { + max_fee_per_gas, + max_priority_fee_per_gas, + } => serde_json::json!({ + "fee_mode": "eip1559", + "max_fee_per_gas": max_fee_per_gas.to_string(), + "max_priority_fee_per_gas": max_priority_fee_per_gas.to_string(), + "max_network_fee_wei": gas.max_network_fee().to_string(), + }), + } +} + async fn submit_transaction( client: &Client, signer: &S, diff --git a/pkg/beam-cli/src/evm/fees.rs b/pkg/beam-cli/src/evm/fees.rs new file mode 100644 index 0000000..e8821f6 --- /dev/null +++ b/pkg/beam-cli/src/evm/fees.rs @@ -0,0 +1,136 @@ +use contextful::ResultContextExt; +use contracts::{Client, U256}; +use web3::types::BlockNumber; + +use crate::error::Result; + +const FEE_HISTORY_BLOCKS: u64 = 20; +const PRIORITY_REWARD_PERCENTILE: f64 = 50.0; +const BASE_FEE_MULTIPLIER: u64 = 2; +const WEI_PER_GWEI: u64 = 1_000_000_000; + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum EvmFeeMode { + Legacy, + Eip1559, +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum EvmFeeEstimate { + Legacy { + gas_price: U256, + }, + Eip1559 { + max_fee_per_gas: U256, + max_priority_fee_per_gas: U256, + }, +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct EvmFeePolicy { + pub base_fee_multiplier: u64, + pub priority_fee_floor: U256, +} + +impl EvmFeeEstimate { + pub fn mode(&self) -> EvmFeeMode { + match self { + Self::Legacy { .. } => EvmFeeMode::Legacy, + Self::Eip1559 { .. } => EvmFeeMode::Eip1559, + } + } + + pub fn max_fee_per_gas(&self) -> U256 { + match self { + Self::Legacy { gas_price } => *gas_price, + Self::Eip1559 { + max_fee_per_gas, .. + } => *max_fee_per_gas, + } + } +} + +pub async fn estimate_fee(client: &Client, chain_id: u64) -> Result { + let policy = EvmFeePolicy { + base_fee_multiplier: BASE_FEE_MULTIPLIER, + priority_fee_floor: priority_fee_floor(chain_id), + }; + + if let Some(estimate) = estimate_eip1559_fee(client, policy).await? { + return Ok(estimate); + } + + let gas_price = client + .fast_gas_price() + .await + .context("fetch beam legacy gas price")?; + Ok(EvmFeeEstimate::Legacy { gas_price }) +} + +async fn estimate_eip1559_fee( + client: &Client, + policy: EvmFeePolicy, +) -> Result> { + let history = match client + .client() + .eth() + .fee_history( + U256::from(FEE_HISTORY_BLOCKS), + BlockNumber::Latest, + Some(vec![PRIORITY_REWARD_PERCENTILE]), + ) + .await + { + Ok(history) => history, + Err(_) => return Ok(None), + }; + + let Some(base_fee) = history + .base_fee_per_gas + .last() + .copied() + .filter(|fee| !fee.is_zero()) + else { + return Ok(None); + }; + + let reward = history + .reward + .unwrap_or_default() + .into_iter() + .filter_map(|row| row.first().copied()) + .filter(|fee| !fee.is_zero()) + .collect::>(); + let priority_fee = std::cmp::max(median_reward(reward), policy.priority_fee_floor); + let max_fee_per_gas = base_fee * U256::from(policy.base_fee_multiplier) + priority_fee; + + Ok(Some(EvmFeeEstimate::Eip1559 { + max_fee_per_gas, + max_priority_fee_per_gas: priority_fee, + })) +} + +fn median_reward(mut rewards: Vec) -> U256 { + if rewards.is_empty() { + return U256::zero(); + } + + rewards.sort_unstable(); + rewards[rewards.len() / 2] +} + +fn priority_fee_floor(chain_id: u64) -> U256 { + match chain_id { + // Ethereum mainnet and Sepolia should not produce dust priority fees. + 1 | 11155111 => gwei(1), + // L2s normally need much lower priority fees than Ethereum mainnet. + 8453 | 42161 => U256::from(1_000_000u64), + // Polygon and BNB need non-dust defaults when they expose EIP-1559 data. + 56 | 137 => gwei(1), + _ => U256::from(10_000_000u64), + } +} + +fn gwei(value: u64) -> U256 { + U256::from(value) * U256::from(WEI_PER_GWEI) +} diff --git a/pkg/beam-cli/src/evm/gas.rs b/pkg/beam-cli/src/evm/gas.rs index 200e3fe..2367251 100644 --- a/pkg/beam-cli/src/evm/gas.rs +++ b/pkg/beam-cli/src/evm/gas.rs @@ -2,18 +2,38 @@ use contextful::ResultContextExt; use contracts::{Address, Client, U256}; use web3::types::{Bytes, CallRequest}; -use super::FunctionCall; -use crate::{abi::encode_input, error::Result}; +use super::{ + FunctionCall, + fees::{EvmFeeEstimate, estimate_fee}, +}; +use crate::{ + abi::encode_input, + error::{Error, Result}, +}; #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub struct TransactionGas { pub gas_limit: U256, - pub gas_price: U256, + pub fee: EvmFeeEstimate, +} + +#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)] +pub struct TransactionGasPolicy { + pub gas_limit: Option, + pub max_network_fee: Option, } impl TransactionGas { pub fn fee(&self) -> U256 { - self.gas_limit * self.gas_price + self.max_network_fee() + } + + pub fn max_network_fee(&self) -> U256 { + self.gas_limit * self.fee.max_fee_per_gas() + } + + pub fn gas_price_for_display(&self) -> U256 { + self.fee.max_fee_per_gas() } } @@ -35,18 +55,35 @@ pub async fn estimate_function_gas( estimate_transaction_gas(client, from, call.contract, &data, call.value).await } -pub(super) async fn resolve_transaction_gas( +pub(crate) async fn resolve_transaction_gas( client: &Client, from: Address, to: Address, data: &[u8], value: U256, - gas: Option, + gas: Option, ) -> Result { - match gas { - Some(gas) => Ok(gas), - None => estimate_transaction_gas(client, from, to, data, value).await, + let gas_policy = gas.unwrap_or_default(); + let gas_limit = match gas_policy.gas_limit { + Some(gas_limit) => pad_gas_limit(gas_limit), + None => estimate_gas_limit(client, from, to, data, value).await?, + }; + let chain_id = client + .chain_id() + .await + .context("fetch beam chain id for fee estimate")? + .as_u64(); + let fee = estimate_fee(client, chain_id).await?; + let resolved = TransactionGas { gas_limit, fee }; + + if let Some(cap) = gas_policy.max_network_fee { + let estimated = resolved.max_network_fee(); + if estimated > cap { + return Err(Error::TransactionFeeCapExceeded { cap, estimated }); + } } + + Ok(resolved) } async fn estimate_transaction_gas( @@ -57,15 +94,14 @@ async fn estimate_transaction_gas( value: U256, ) -> Result { let gas_limit = estimate_gas_limit(client, from, to, data, value).await?; - let gas_price = client - .fast_gas_price() + let chain_id = client + .chain_id() .await - .context("fetch beam gas price")?; + .context("fetch beam chain id for fee estimate")? + .as_u64(); + let fee = estimate_fee(client, chain_id).await?; - Ok(TransactionGas { - gas_limit, - gas_price, - }) + Ok(TransactionGas { gas_limit, fee }) } async fn estimate_gas_limit( @@ -89,5 +125,9 @@ async fn estimate_gas_limit( .await .context("estimate beam transaction gas")?; - Ok(gas + gas / 5) + Ok(pad_gas_limit(gas)) +} + +fn pad_gas_limit(gas: U256) -> U256 { + gas + gas / 5 } diff --git a/pkg/beam-cli/src/tests.rs b/pkg/beam-cli/src/tests.rs index bcbc071..000ece2 100644 --- a/pkg/beam-cli/src/tests.rs +++ b/pkg/beam-cli/src/tests.rs @@ -17,6 +17,7 @@ mod display; mod ens; mod erc20; mod evm; +mod evm_fee; mod evm_gas; mod evm_prepared_gas; mod evm_retries; @@ -33,7 +34,7 @@ mod fetch_retry_origin; mod fetch_test_servers; mod fetch_x402; mod fetch_x402_chain_aliases; -mod fixtures; +pub(crate) mod fixtures; mod inspect; mod interactive; mod interactive_autocomplete; diff --git a/pkg/beam-cli/src/tests/apps.rs b/pkg/beam-cli/src/tests/apps.rs index 647a3c7..6712336 100644 --- a/pkg/beam-cli/src/tests/apps.rs +++ b/pkg/beam-cli/src/tests/apps.rs @@ -56,6 +56,7 @@ fn manifest() -> AppManifest { read_balances: true, propose_transactions: false, erc20_approval: false, + sign_typed_data: false, }, storage: StoragePermission { app_local: true }, privacy: Vec::new(), diff --git a/pkg/beam-cli/src/tests/apps_host.rs b/pkg/beam-cli/src/tests/apps_host.rs index c274600..6f223d7 100644 --- a/pkg/beam-cli/src/tests/apps_host.rs +++ b/pkg/beam-cli/src/tests/apps_host.rs @@ -8,11 +8,12 @@ use crate::{ format_error_chain, host::{ ChainReadOperation, ChainReadRequest, HostTransaction, chain_read, - ensure_chain_read_allowed, ensure_http_allowed, ensure_transaction_allowed, + ensure_app_storage_allowed, ensure_chain_read_allowed, ensure_http_allowed, + ensure_transaction_allowed, }, model::{ ActionBinding, ActionPlan, AppPermissions, ApprovalRecord, ApprovalStatus, - ChainOperation, ChainPermission, HttpPermission, + ChainOperation, ChainPermission, HttpPermission, StoragePermission, }, store::now, }, @@ -57,6 +58,7 @@ fn host_transaction_permissions_enforce_selector_and_spender() { let transaction = HostTransaction { chain: "base".to_string(), data: "0x3593564c".to_string(), + dynamic_contracts: Vec::new(), selector: Some("0x3593564c".to_string()), spender: Some("0xspender".to_string()), target: "0xrouter".to_string(), @@ -88,12 +90,16 @@ fn host_chain_read_permissions_enforce_contract_scope() { address: None, chain: "base".to_string(), data: None, + dynamic_contracts: Vec::new(), + from_block: None, operation: ChainReadOperation::Call, owner: None, selector: Some("0x70a08231".to_string()), spender: None, target: Some("0xrouter".to_string()), token: None, + topics: Vec::new(), + to_block: None, value: None, }; @@ -130,12 +136,16 @@ async fn host_token_metadata_resolves_native_symbol_without_rpc() { address: None, chain: "ethereum".to_string(), data: None, + dynamic_contracts: Vec::new(), + from_block: None, operation: ChainReadOperation::TokenMetadata, owner: None, selector: None, spender: None, target: Some("eth".to_string()), token: Some("eth".to_string()), + topics: Vec::new(), + to_block: None, value: None, }, ) @@ -189,6 +199,7 @@ fn host_transaction_permissions_allow_broad_optional_globs() { let transaction = HostTransaction { chain: "base".to_string(), data: "0xdeadbeef".to_string(), + dynamic_contracts: Vec::new(), selector: Some("0xdeadbeef".to_string()), spender: Some("0xspender".to_string()), target: "0xany".to_string(), @@ -199,6 +210,22 @@ fn host_transaction_permissions_allow_broad_optional_globs() { .expect("omitted optional scopes are broad wildcards"); } +#[test] +fn host_storage_permissions_require_app_local_scope() { + let permissions = AppPermissions { + storage: StoragePermission { app_local: true }, + ..Default::default() + }; + ensure_app_storage_allowed(&permissions).expect("allow declared storage scope"); + + let error = ensure_app_storage_allowed(&AppPermissions::default()) + .expect_err("reject undeclared storage scope"); + assert!(matches!( + error, + apps::Error::StoragePermissionDenied { permission } if permission == "app-local" + )); +} + #[test] fn approval_integrity_rejects_tampered_plan() { let mut plan = action_plan(); @@ -209,6 +236,7 @@ fn approval_integrity_rejects_tampered_plan() { status: ApprovalStatus::Pending, plan, plan_hash, + fee_caps: Vec::new(), created_at: now(), updated_at: now(), }; @@ -258,6 +286,7 @@ fn action_plan() -> ActionPlan { }, ], constraints: Vec::new(), + dynamic_contracts: Vec::new(), expires_at: now() + 60, } } diff --git a/pkg/beam-cli/src/tests/apps_runtime.rs b/pkg/beam-cli/src/tests/apps_runtime.rs index c962db1..f022430 100644 --- a/pkg/beam-cli/src/tests/apps_runtime.rs +++ b/pkg/beam-cli/src/tests/apps_runtime.rs @@ -4,7 +4,7 @@ use super::fixtures::{test_app, test_app_with_output}; use crate::{ apps::{ Error, - model::{AppManifest, InstalledApp, RegistryIndex}, + model::{AppManifest, InstalledApp, RegistryIndex, RegistryVersion}, runtime::{AppRuntime, validate_wasm_module}, store::{AppCache, now}, }, @@ -26,8 +26,7 @@ const WASM_WITHOUT_COMMAND_ALLOC: &[u8] = b"\0asm\x01\0\0\0\ #[test] fn app_runtime_requires_declared_entrypoint() { let bundle = repo_root().join("beam-apps/fixtures/valid"); - let index = read_json::(&bundle.join("index.json")); - let version = &index.apps[0].versions[0]; + let version = uniswap_fixture_version(&bundle); let path = artifact_path(&bundle, &version.module_url); validate_wasm_module("uniswap", "beam_app_main", &path).expect("valid app wasm"); @@ -54,8 +53,7 @@ async fn app_command_help_skips_stale_wasm_validation() { let (_temp_dir, app) = test_app_with_output(OutputMode::Quiet, InvocationOverrides::default()).await; let bundle = repo_root().join("beam-apps/fixtures/valid"); - let index = read_json::(&bundle.join("index.json")); - let version = &index.apps[0].versions[0]; + let version = uniswap_fixture_version(&bundle); let manifest_path = artifact_path(&bundle, &version.manifest_url); let manifest_bytes = std::fs::read(&manifest_path).expect("read manifest"); let manifest = read_json::(&manifest_path); @@ -80,6 +78,7 @@ async fn app_command_help_skips_stale_wasm_validation() { app: "uniswap".to_string(), prepare: false, no_prompt: false, + max_network_fee_wei: None, args: vec!["swap".to_string(), "--help".to_string()], }, ) @@ -92,8 +91,7 @@ async fn app_run_checks_installed_manifest_minimum_version_before_wasm() { let (_temp_dir, app) = test_app_with_output(OutputMode::Quiet, InvocationOverrides::default()).await; let bundle = repo_root().join("beam-apps/fixtures/valid"); - let index = read_json::(&bundle.join("index.json")); - let version = &index.apps[0].versions[0]; + let version = uniswap_fixture_version(&bundle); let manifest_path = artifact_path(&bundle, &version.manifest_url); let mut manifest = read_json::(&manifest_path); manifest.min_beam_version = "999.0.0".to_string(); @@ -119,6 +117,7 @@ async fn app_run_checks_installed_manifest_minimum_version_before_wasm() { app: "uniswap".to_string(), prepare: false, no_prompt: false, + max_network_fee_wei: None, args: vec!["unknown".to_string()], }, ) @@ -141,14 +140,13 @@ async fn app_runtime_invokes_guest_and_returns_structured_errors() { }) .await; let bundle = repo_root().join("beam-apps/fixtures/valid"); - let index = read_json::(&bundle.join("index.json")); - let version = &index.apps[0].versions[0]; + let version = uniswap_fixture_version(&bundle); let manifest_path = artifact_path(&bundle, &version.manifest_url); let module_path = artifact_path(&bundle, &version.module_url); let manifest = read_json(&manifest_path); let installed = InstalledApp { active_version: version.version.clone(), - id: index.apps[0].id.clone(), + id: "uniswap".to_string(), installed_at: now(), manifest_sha256: version.manifest_sha256.clone(), module_sha256: version.module_sha256.clone(), @@ -172,6 +170,17 @@ fn repo_root() -> PathBuf { Path::new(env!("CARGO_MANIFEST_DIR")).join("../..") } +fn uniswap_fixture_version(bundle: &Path) -> RegistryVersion { + let index = read_json::(&bundle.join("index.json")); + index + .apps + .iter() + .find(|app| app.id == "uniswap") + .expect("find uniswap fixture") + .versions[0] + .clone() +} + fn read_json(path: &Path) -> T { serde_json::from_slice(&std::fs::read(path).expect("read json")).expect("decode json") } diff --git a/pkg/beam-cli/src/tests/evm.rs b/pkg/beam-cli/src/tests/evm.rs index 7fbff3b..6d763de 100644 --- a/pkg/beam-cli/src/tests/evm.rs +++ b/pkg/beam-cli/src/tests/evm.rs @@ -1,4 +1,4 @@ -// lint-long-file-override allow-max-lines=300 +// lint-long-file-override allow-max-lines=400 use std::{ future::pending, sync::{Arc, Mutex}, @@ -103,7 +103,8 @@ async fn native_transfers_estimate_gas_before_submission() { methods, vec![ "eth_estimateGas", - "eth_gasPrice", + "eth_chainId", + "eth_feeHistory", "eth_getTransactionCount", "eth_chainId", "eth_sendRawTransaction", @@ -163,22 +164,23 @@ async fn native_transfers_return_pending_hash_when_wait_is_cancelled() { let calls = calls.lock().expect("rpc calls").clone(); let methods = rpc_methods(&calls); assert_eq!( - &methods[..5], + &methods[..6], &[ "eth_estimateGas", - "eth_gasPrice", + "eth_chainId", + "eth_feeHistory", "eth_getTransactionCount", "eth_chainId", "eth_sendRawTransaction", ] ); - if methods.len() == 7 { + if methods.len() == 8 { assert_eq!( - &methods[5..], + &methods[6..], &["eth_getTransactionReceipt", "eth_getTransactionByHash"] ); } else { - assert_eq!(methods.len(), 5); + assert_eq!(methods.len(), 6); } } @@ -269,6 +271,12 @@ fn rpc_response(request: &Value, scenario: RpcScenario) -> String { "eth_gasPrice" => serde_json::to_value(U256::from(1_000_000_000u64)).expect("gas price"), "eth_getTransactionCount" => serde_json::to_value(U256::zero()).expect("nonce"), "eth_chainId" => serde_json::to_value(U256::one()).expect("chain id"), + "eth_feeHistory" => json!({ + "oldestBlock": "0x1", + "baseFeePerGas": ["0x3b9aca00", "0x3b9aca00"], + "gasUsedRatio": [0.5], + "reward": [["0x3b9aca00"]], + }), "eth_sendRawTransaction" => serde_json::to_value(H256::from_low_u64_be(7)).expect("hash"), "eth_getTransactionReceipt" => match scenario { RpcScenario::Confirmed => { diff --git a/pkg/beam-cli/src/tests/evm_fee.rs b/pkg/beam-cli/src/tests/evm_fee.rs new file mode 100644 index 0000000..f81f97d --- /dev/null +++ b/pkg/beam-cli/src/tests/evm_fee.rs @@ -0,0 +1,189 @@ +use std::sync::{Arc, Mutex}; + +use contracts::{Address, Client, U256}; +use serde_json::{Value, json}; +use tokio::{ + io::AsyncWriteExt, + net::{TcpListener, TcpStream}, +}; + +use super::fixtures::read_rpc_request; +use crate::evm::estimate_native_gas; + +#[tokio::test] +async fn eip1559_fee_estimation_uses_priority_floor_for_weak_rewards() { + let (rpc_url, calls, server) = spawn_fee_rpc_server(FeeScenario::WeakReward).await; + let client = Client::try_new(&rpc_url, None).expect("create client"); + + let gas = estimate_native_gas( + &client, + Address::from_low_u64_be(1), + Address::from_low_u64_be(2), + U256::zero(), + ) + .await + .expect("estimate gas"); + server.abort(); + + assert_eq!(gas.gas_limit, U256::from(36_000u64)); + assert_eq!(gas.gas_price_for_display(), U256::from(3_000_000_000u64)); + assert_eq!( + rpc_methods(&calls.lock().expect("rpc calls")), + vec!["eth_estimateGas", "eth_chainId", "eth_feeHistory"] + ); +} + +#[tokio::test] +async fn eip1559_fee_estimation_uses_floor_when_rewards_are_missing() { + let (rpc_url, _calls, server) = spawn_fee_rpc_server(FeeScenario::MissingReward).await; + let client = Client::try_new(&rpc_url, None).expect("create client"); + + let gas = estimate_native_gas( + &client, + Address::from_low_u64_be(1), + Address::from_low_u64_be(2), + U256::zero(), + ) + .await + .expect("estimate gas"); + server.abort(); + + assert_eq!(gas.gas_price_for_display(), U256::from(2_001_000_000u64)); +} + +#[tokio::test] +async fn fee_estimation_falls_back_to_legacy_when_fee_history_is_missing() { + let (rpc_url, calls, server) = spawn_fee_rpc_server(FeeScenario::NoFeeHistory).await; + let client = Client::try_new(&rpc_url, None).expect("create client"); + + let gas = estimate_native_gas( + &client, + Address::from_low_u64_be(1), + Address::from_low_u64_be(2), + U256::zero(), + ) + .await + .expect("estimate gas"); + server.abort(); + + assert_eq!(gas.gas_price_for_display(), U256::from(1_100_000_000u64)); + assert_eq!( + rpc_methods(&calls.lock().expect("rpc calls")), + vec![ + "eth_estimateGas", + "eth_chainId", + "eth_feeHistory", + "eth_gasPrice", + ] + ); +} + +#[derive(Clone, Copy)] +enum FeeScenario { + WeakReward, + MissingReward, + NoFeeHistory, +} + +async fn spawn_fee_rpc_server( + scenario: FeeScenario, +) -> (String, Arc>>, tokio::task::JoinHandle<()>) { + let listener = TcpListener::bind("127.0.0.1:0") + .await + .expect("bind fee rpc listener"); + let address = listener.local_addr().expect("listener address"); + let calls = Arc::new(Mutex::new(Vec::new())); + let server_calls = Arc::clone(&calls); + + let server = tokio::spawn(async move { + loop { + let (stream, _peer) = listener.accept().await.expect("accept rpc connection"); + handle_fee_rpc_connection(stream, Arc::clone(&server_calls), scenario).await; + } + }); + + (format!("http://{address}"), calls, server) +} + +async fn handle_fee_rpc_connection( + mut stream: TcpStream, + calls: Arc>>, + scenario: FeeScenario, +) { + let request = read_rpc_request(&mut stream).await; + calls + .lock() + .expect("record rpc request") + .push(request.clone()); + + let body = rpc_response(&request, scenario); + let response = format!( + "HTTP/1.1 200 OK\r\ncontent-type: application/json\r\ncontent-length: {}\r\nconnection: close\r\n\r\n{}", + body.len(), + body + ); + stream + .write_all(response.as_bytes()) + .await + .expect("write rpc response"); +} + +fn rpc_response(request: &Value, scenario: FeeScenario) -> String { + if request["method"] == "eth_feeHistory" && matches!(scenario, FeeScenario::NoFeeHistory) { + return json!({ + "jsonrpc": "2.0", + "id": request["id"].clone(), + "error": { + "code": -32601, + "message": "method not found", + }, + }) + .to_string(); + } + + let result = match request["method"].as_str().expect("rpc method") { + "eth_estimateGas" => serde_json::to_value(U256::from(30_000u64)).expect("estimate gas"), + "eth_chainId" => serde_json::to_value(chain_id(scenario)).expect("chain id"), + "eth_feeHistory" => fee_history(scenario), + "eth_gasPrice" => serde_json::to_value(U256::from(1_000_000_000u64)).expect("gas price"), + other => panic!("unexpected rpc method {other}"), + }; + + json!({ + "jsonrpc": "2.0", + "id": request["id"].clone(), + "result": result, + }) + .to_string() +} + +fn fee_history(scenario: FeeScenario) -> Value { + match scenario { + FeeScenario::WeakReward => json!({ + "oldestBlock": "0x1", + "baseFeePerGas": ["0x3b9aca00", "0x3b9aca00"], + "gasUsedRatio": [0.5], + "reward": [["0x1"]], + }), + FeeScenario::MissingReward => json!({ + "oldestBlock": "0x1", + "baseFeePerGas": ["0x3b9aca00", "0x3b9aca00"], + "gasUsedRatio": [0.5], + }), + FeeScenario::NoFeeHistory => unreachable!("handled before result response"), + } +} + +fn chain_id(scenario: FeeScenario) -> U256 { + match scenario { + FeeScenario::WeakReward | FeeScenario::NoFeeHistory => U256::one(), + FeeScenario::MissingReward => U256::from(8453u64), + } +} + +fn rpc_methods(calls: &[Value]) -> Vec<&str> { + calls + .iter() + .map(|call| call["method"].as_str().expect("rpc method")) + .collect() +} diff --git a/pkg/beam-cli/src/tests/evm_gas.rs b/pkg/beam-cli/src/tests/evm_gas.rs index 98d22de..6935fb6 100644 --- a/pkg/beam-cli/src/tests/evm_gas.rs +++ b/pkg/beam-cli/src/tests/evm_gas.rs @@ -36,10 +36,13 @@ async fn function_gas_estimation_encodes_call_without_submission() { server.abort(); assert_eq!(gas.gas_limit, U256::from(36_000u64)); - assert_eq!(gas.gas_price, U256::from(1_100_000_000u64)); + assert_eq!(gas.gas_price_for_display(), U256::from(3_000_000_000u64)); let calls = calls.lock().expect("rpc calls").clone(); - assert_eq!(rpc_methods(&calls), vec!["eth_estimateGas", "eth_gasPrice"]); + assert_eq!( + rpc_methods(&calls), + vec!["eth_estimateGas", "eth_chainId", "eth_feeHistory"] + ); let estimate = &calls[0]["params"][0]; assert_eq!(estimate["from"], Value::String(format!("{from:#x}"))); assert_eq!(estimate["to"], Value::String(format!("{contract:#x}"))); diff --git a/pkg/beam-cli/src/tests/evm_prepared_gas.rs b/pkg/beam-cli/src/tests/evm_prepared_gas.rs index f15c85a..9e34b1a 100644 --- a/pkg/beam-cli/src/tests/evm_prepared_gas.rs +++ b/pkg/beam-cli/src/tests/evm_prepared_gas.rs @@ -17,13 +17,13 @@ use web3::{ use super::fixtures::read_rpc_request; use crate::{ abi::parse_function, - evm::{FunctionCall, TransactionGas, send_function_with_gas, send_native_with_gas}, + evm::{FunctionCall, TransactionGasPolicy, send_function_with_gas, send_native_with_gas}, signer::KeySigner, transaction::TransactionExecution, }; #[tokio::test] -async fn native_transfers_with_prepared_gas_skip_reestimation() { +async fn native_transfers_with_prepared_gas_skip_gas_limit_reestimation() { let (rpc_url, calls, server) = spawn_prepared_gas_rpc_server().await; let client = Client::try_new(&rpc_url, None).expect("create client"); let signer = KeySigner::from_slice(&[7u8; 32]).expect("create signer"); @@ -47,6 +47,8 @@ async fn native_transfers_with_prepared_gas_skip_reestimation() { assert_eq!( rpc_methods(&calls.lock().expect("rpc calls")), vec![ + "eth_chainId", + "eth_feeHistory", "eth_getTransactionCount", "eth_chainId", "eth_sendRawTransaction", @@ -56,7 +58,7 @@ async fn native_transfers_with_prepared_gas_skip_reestimation() { } #[tokio::test] -async fn function_calls_with_prepared_gas_skip_reestimation() { +async fn function_calls_with_prepared_gas_skip_gas_limit_reestimation() { let (rpc_url, calls, server) = spawn_prepared_gas_rpc_server().await; let client = Client::try_new(&rpc_url, None).expect("create client"); let signer = KeySigner::from_slice(&[7u8; 32]).expect("create signer"); @@ -90,6 +92,8 @@ async fn function_calls_with_prepared_gas_skip_reestimation() { assert_eq!( rpc_methods(&calls.lock().expect("rpc calls")), vec![ + "eth_chainId", + "eth_feeHistory", "eth_getTransactionCount", "eth_chainId", "eth_sendRawTransaction", @@ -98,10 +102,10 @@ async fn function_calls_with_prepared_gas_skip_reestimation() { ); } -fn prepared_gas() -> TransactionGas { - TransactionGas { - gas_limit: U256::from(36_000u64), - gas_price: U256::from(1_000_000_000u64), +fn prepared_gas() -> TransactionGasPolicy { + TransactionGasPolicy { + gas_limit: Some(U256::from(36_000u64)), + max_network_fee: Some(U256::from(1_000_000_000_000_000u64)), } } @@ -154,6 +158,12 @@ fn rpc_response(request: &Value) -> String { let result = match request["method"].as_str().expect("rpc method") { "eth_getTransactionCount" => serde_json::to_value(U256::zero()).expect("nonce"), "eth_chainId" => serde_json::to_value(U256::one()).expect("chain id"), + "eth_feeHistory" => json!({ + "oldestBlock": "0x1", + "baseFeePerGas": ["0x3b9aca00", "0x3b9aca00"], + "gasUsedRatio": [0.5], + "reward": [["0x3b9aca00"]], + }), "eth_sendRawTransaction" => serde_json::to_value(H256::from_low_u64_be(7)).expect("hash"), "eth_getTransactionReceipt" => serde_json::to_value(successful_receipt()).expect("receipt"), other => panic!("unexpected rpc method {other}"), diff --git a/pkg/beam-cli/src/tests/evm_retries.rs b/pkg/beam-cli/src/tests/evm_retries.rs index 790d885..99f20ed 100644 --- a/pkg/beam-cli/src/tests/evm_retries.rs +++ b/pkg/beam-cli/src/tests/evm_retries.rs @@ -81,11 +81,12 @@ async fn send_native_retries_transient_estimate_gas_failures() { assert_eq!(method_count(&state, "eth_estimateGas"), 2); assert_eq!(method_count(&state, "eth_sendRawTransaction"), 1); assert_eq!( - rpc_methods(&state)[..6], + rpc_methods(&state)[..7], [ "eth_estimateGas", "eth_estimateGas", - "eth_gasPrice", + "eth_chainId", + "eth_feeHistory", "eth_getTransactionCount", "eth_chainId", "eth_sendRawTransaction", @@ -123,10 +124,11 @@ async fn send_native_retries_transient_raw_submission_failures() { assert_eq!(method_count(&state, "eth_estimateGas"), 1); assert_eq!(method_count(&state, "eth_sendRawTransaction"), 2); assert_eq!( - rpc_methods(&state)[..7], + rpc_methods(&state)[..8], [ "eth_estimateGas", - "eth_gasPrice", + "eth_chainId", + "eth_feeHistory", "eth_getTransactionCount", "eth_chainId", "eth_sendRawTransaction", @@ -221,6 +223,12 @@ fn rpc_response(request: &Value, mode: RetryRpcMode) -> String { (RetryRpcMode::ConfirmedTransfer, "eth_gasPrice") => { serde_json::to_value(U256::from(1_000_000_000u64)).expect("gas price") } + (RetryRpcMode::ConfirmedTransfer, "eth_feeHistory") => json!({ + "oldestBlock": "0x1", + "baseFeePerGas": ["0x3b9aca00", "0x3b9aca00"], + "gasUsedRatio": [0.5], + "reward": [["0x3b9aca00"]], + }), (RetryRpcMode::ConfirmedTransfer, "eth_getTransactionCount") => { serde_json::to_value(U256::zero()).expect("nonce") } diff --git a/pkg/beam-cli/src/tests/fixtures.rs b/pkg/beam-cli/src/tests/fixtures.rs index c320351..3fc84b1 100644 --- a/pkg/beam-cli/src/tests/fixtures.rs +++ b/pkg/beam-cli/src/tests/fixtures.rs @@ -15,7 +15,7 @@ pub(super) async fn test_app(overrides: InvocationOverrides) -> (TempDir, BeamAp test_app_with_output(OutputMode::Default, overrides).await } -pub(super) async fn test_app_with_output( +pub(crate) async fn test_app_with_output( output_mode: OutputMode, overrides: InvocationOverrides, ) -> (TempDir, BeamApp) { @@ -68,7 +68,7 @@ async fn serve_chain_id_connection(mut stream: TcpStream, chain_id: u64) { .expect("write rpc response"); } -pub(super) async fn read_rpc_request(stream: &mut TcpStream) -> Value { +pub(crate) async fn read_rpc_request(stream: &mut TcpStream) -> Value { let mut buffer = Vec::new(); let body_offset = loop { let mut chunk = [0u8; 1024];