@elizaos/plugin-wallet 2.0.0-beta.1 → 2.0.3-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -45
- package/auto-enable.ts +1 -1
- package/dist/actions/failure-codes.d.ts +12 -0
- package/dist/actions/index.d.ts +1 -0
- package/dist/analytics/birdeye/actions/wallet-search-address.d.ts +7 -0
- package/dist/analytics/birdeye/birdeye-task.d.ts +27 -0
- package/dist/analytics/birdeye/birdeye.d.ts +140 -0
- package/dist/analytics/birdeye/constants.d.ts +68 -0
- package/dist/analytics/birdeye/providers/agent-portfolio-provider.d.ts +8 -0
- package/dist/analytics/birdeye/providers/market.d.ts +18 -0
- package/dist/analytics/birdeye/providers/portfolio-factory.d.ts +10 -0
- package/dist/analytics/birdeye/providers/trending.d.ts +19 -0
- package/dist/analytics/birdeye/providers/wallet.d.ts +5 -0
- package/dist/analytics/birdeye/search-category.d.ts +52 -0
- package/dist/analytics/birdeye/service.d.ts +94 -0
- package/dist/analytics/birdeye/types/api/common.d.ts +199 -0
- package/dist/analytics/birdeye/types/api/defi.d.ts +187 -0
- package/dist/analytics/birdeye/types/api/pair.d.ts +182 -0
- package/dist/analytics/birdeye/types/api/search.d.ts +64 -0
- package/dist/analytics/birdeye/types/api/token.d.ts +580 -0
- package/dist/analytics/birdeye/types/api/trader.d.ts +70 -0
- package/dist/analytics/birdeye/types/api/wallet.d.ts +161 -0
- package/dist/analytics/birdeye/types/shared.d.ts +83 -0
- package/dist/analytics/birdeye/utils.d.ts +74 -0
- package/dist/analytics/dexscreener/errors.d.ts +2 -0
- package/dist/analytics/dexscreener/index.d.ts +3 -0
- package/dist/analytics/dexscreener/search-category.d.ts +3 -0
- package/dist/analytics/dexscreener/service.d.ts +34 -0
- package/dist/analytics/dexscreener/types.d.ts +131 -0
- package/dist/analytics/lpinfo/index.d.ts +31 -0
- package/dist/analytics/lpinfo/kamino/index.d.ts +7 -0
- package/dist/analytics/lpinfo/kamino/providers/kaminoLiquidityProvider.d.ts +6 -0
- package/dist/analytics/lpinfo/kamino/providers/kaminoPoolProvider.d.ts +6 -0
- package/dist/analytics/lpinfo/kamino/providers/kaminoProvider.d.ts +6 -0
- package/dist/analytics/lpinfo/kamino/services/kaminoLiquidityService.d.ts +203 -0
- package/dist/analytics/lpinfo/kamino/services/kaminoService.d.ts +171 -0
- package/dist/analytics/lpinfo/steer/index.d.ts +7 -0
- package/dist/analytics/lpinfo/steer/providers/steerLiquidityProvider.d.ts +6 -0
- package/dist/analytics/lpinfo/steer/services/steerLiquidityService.d.ts +208 -0
- package/dist/analytics/lpinfo/steer/steer-display-types.d.ts +97 -0
- package/dist/analytics/news/index.d.ts +32 -0
- package/dist/analytics/news/interfaces/types.d.ts +177 -0
- package/dist/analytics/news/providers/defiNewsProvider.d.ts +106 -0
- package/dist/analytics/news/services/newsDataService.d.ts +72 -0
- package/dist/analytics/news/utils/formatters.d.ts +54 -0
- package/dist/analytics/token-info/action.d.ts +6 -0
- package/dist/analytics/token-info/index.d.ts +3 -0
- package/dist/analytics/token-info/params.d.ts +10 -0
- package/dist/analytics/token-info/providers.d.ts +4 -0
- package/dist/analytics/token-info/service.d.ts +19 -0
- package/dist/analytics/token-info/types.d.ts +45 -0
- package/dist/api/wallet-routes.d.ts +100 -0
- package/dist/audit/audit-log.d.ts +29 -0
- package/dist/browser-shim/build-shim.d.ts +31 -0
- package/dist/browser-shim/index.d.ts +1 -0
- package/dist/chains/evm/actions/helpers.d.ts +31 -0
- package/dist/chains/evm/actions/swap.d.ts +53 -0
- package/dist/chains/evm/actions/transfer.d.ts +10 -0
- package/dist/chains/evm/bridge-router.d.ts +44 -0
- package/dist/chains/evm/build.d.ts +2 -0
- package/dist/chains/evm/chain-handler.d.ts +37 -0
- package/dist/chains/evm/constants.d.ts +16 -0
- package/dist/chains/evm/dex/aerodrome/index.d.ts +6 -0
- package/dist/chains/evm/dex/aerodrome/services/AerodromeLpService.d.ts +27 -0
- package/dist/chains/evm/dex/aerodrome/types.d.ts +435 -0
- package/dist/chains/evm/dex/pancakeswp/index.d.ts +6 -0
- package/dist/chains/evm/dex/pancakeswp/services/PancakeSwapV3LpService.d.ts +28 -0
- package/dist/chains/evm/dex/pancakeswp/types.d.ts +19 -0
- package/dist/chains/evm/dex/uniswap/index.d.ts +6 -0
- package/dist/chains/evm/dex/uniswap/services/UniswapV3LpService.d.ts +28 -0
- package/dist/chains/evm/dex/uniswap/types.d.ts +458 -0
- package/dist/chains/evm/generated/specs/spec-helpers.d.ts +35 -0
- package/dist/chains/evm/generated/specs/specs.d.ts +99 -0
- package/dist/chains/evm/gov-router.d.ts +6 -0
- package/dist/chains/evm/index.browser.d.ts +3 -0
- package/dist/chains/evm/index.d.ts +6 -0
- package/dist/chains/evm/prompts.d.ts +24 -0
- package/dist/chains/evm/providers/get-balance.d.ts +2 -0
- package/dist/chains/evm/providers/wallet.d.ts +35 -0
- package/dist/chains/evm/routes/sign.d.ts +13 -0
- package/dist/chains/evm/rpc-providers.d.ts +26 -0
- package/dist/chains/evm/service.d.ts +26 -0
- package/dist/chains/evm/templates/index.d.ts +1 -0
- package/dist/chains/evm/types/index.d.ts +296 -0
- package/dist/chains/evm/vitest.config.d.ts +2 -0
- package/dist/chains/registry.d.ts +3 -0
- package/dist/chains/solana/actions/confirmation.d.ts +9 -0
- package/dist/chains/solana/bn.d.ts +6 -0
- package/dist/chains/solana/build.d.ts +2 -0
- package/dist/chains/solana/constants.d.ts +2 -0
- package/dist/chains/solana/dex/meteora/e2e/scenarios.d.ts +10 -0
- package/dist/chains/solana/dex/meteora/e2e/test-utils.d.ts +28 -0
- package/dist/chains/solana/dex/meteora/index.d.ts +3 -0
- package/dist/chains/solana/dex/meteora/providers/positionProvider.d.ts +9 -0
- package/dist/chains/solana/dex/meteora/services/MeteoraLpService.d.ts +37 -0
- package/dist/chains/solana/dex/meteora/utils/dlmm.d.ts +6 -0
- package/dist/chains/solana/dex/meteora/utils/loadWallet.d.ts +14 -0
- package/dist/chains/solana/dex/meteora/utils/sendTransaction.d.ts +2 -0
- package/dist/chains/solana/dex/orca/index.d.ts +6 -0
- package/dist/chains/solana/dex/orca/providers/positionProvider.d.ts +10 -0
- package/dist/chains/solana/dex/orca/services/srv_orca.d.ts +10 -0
- package/dist/chains/solana/dex/orca/types.d.ts +61 -0
- package/dist/chains/solana/dex/orca/utils/loadWallet.d.ts +1 -0
- package/dist/chains/solana/dex/orca/utils/sendTransaction.d.ts +2 -0
- package/dist/chains/solana/dex/raydium/index.d.ts +6 -0
- package/dist/chains/solana/dex/raydium/providers/positionProvider.d.ts +10 -0
- package/dist/chains/solana/dex/raydium/services/srv_raydium.d.ts +104 -0
- package/dist/chains/solana/dex/raydium/types.d.ts +42 -0
- package/dist/chains/solana/environment.d.ts +15 -0
- package/dist/chains/solana/generated/specs/spec-helpers.d.ts +35 -0
- package/dist/chains/solana/generated/specs/specs.d.ts +73 -0
- package/dist/chains/solana/index.browser.d.ts +3 -0
- package/dist/chains/solana/index.d.ts +7 -0
- package/dist/chains/solana/keypairUtils.d.ts +7 -0
- package/dist/chains/solana/prompts.d.ts +12 -0
- package/dist/chains/solana/providers/wallet.d.ts +2 -0
- package/dist/chains/solana/routes/index.d.ts +2 -0
- package/dist/chains/solana/routes/sign.d.ts +16 -0
- package/dist/chains/solana/service.d.ts +237 -0
- package/dist/chains/solana/types.d.ts +377 -0
- package/dist/chains/solana/vitest.config.d.ts +2 -0
- package/dist/chains/wallet-action.d.ts +3 -0
- package/dist/contracts.d.ts +58 -0
- package/dist/core-augmentation.d.ts +9 -0
- package/dist/index.d.mts +27 -34727
- package/dist/index.d.ts +27 -0
- package/dist/index.mjs +28246 -21186
- package/dist/index.mjs.map +153 -0
- package/dist/lib/server-wallet-trade.d.ts +22 -0
- package/dist/lib/server-wallet-trade.js +333 -0
- package/dist/lib/server-wallet-trade.js.map +11 -0
- package/dist/lib/wallet-export-guard.d.ts +45 -0
- package/dist/lp/actions/liquidity.d.ts +2 -0
- package/dist/lp/e2e/real-token-tests.d.ts +6 -0
- package/dist/lp/e2e/scenarios.d.ts +9 -0
- package/dist/lp/e2e/test-utils.d.ts +28 -0
- package/dist/lp/lp-manager-entry.d.ts +18 -0
- package/dist/lp/services/ConcentratedLiquidityService.d.ts +32 -0
- package/dist/lp/services/DexInteractionService.d.ts +34 -0
- package/dist/lp/services/LpManagementService.d.ts +116 -0
- package/dist/lp/services/UserLpProfileService.d.ts +18 -0
- package/dist/lp/services/VaultService.d.ts +21 -0
- package/dist/lp/services/YieldOptimizationService.d.ts +59 -0
- package/dist/lp/services/__tests__/MockLpService.d.ts +17 -0
- package/dist/lp/types.d.ts +439 -0
- package/dist/lp/utils/solanaClient.d.ts +26 -0
- package/dist/plugin.d.ts +7 -0
- package/dist/policy/policy.d.ts +14 -0
- package/dist/providers/canonical-provider.d.ts +19 -0
- package/dist/providers/wallet-provider.d.ts +5 -0
- package/dist/register-routes.d.ts +1 -0
- package/dist/routes/plugin.d.ts +14 -0
- package/dist/routes/wallet-market-overview-route.d.ts +7 -0
- package/dist/sdk/abi.d.ts +396 -0
- package/dist/sdk/bridge/abis.d.ts +63 -0
- package/dist/sdk/bridge/client.d.ts +48 -0
- package/dist/sdk/bridge/index.d.ts +14 -0
- package/dist/sdk/bridge/solana.d.ts +131 -0
- package/dist/sdk/bridge/types.d.ts +92 -0
- package/dist/sdk/convenience.d.ts +104 -0
- package/dist/sdk/escrow/MutualStakeEscrow.d.ts +75 -0
- package/dist/sdk/escrow/types.d.ts +58 -0
- package/dist/sdk/escrow/verifiers.d.ts +25 -0
- package/dist/sdk/identity/erc8004.d.ts +304 -0
- package/dist/sdk/identity/reputation.d.ts +317 -0
- package/dist/sdk/identity/uaid.d.ts +192 -0
- package/dist/sdk/identity/validation.d.ts +282 -0
- package/dist/sdk/index.d.ts +133 -0
- package/dist/sdk/index.js +5284 -0
- package/dist/sdk/index.js.map +40 -0
- package/dist/sdk/policy/SpendingPolicy.d.ts +105 -0
- package/dist/sdk/policy/UptoBillingPolicy.d.ts +87 -0
- package/dist/sdk/router/PaymentRouter.d.ts +77 -0
- package/dist/sdk/router/index.d.ts +2 -0
- package/dist/sdk/swap/SwapModule.d.ts +47 -0
- package/dist/sdk/swap/abi.d.ts +50 -0
- package/dist/sdk/swap/index.d.ts +11 -0
- package/dist/sdk/swap/types.d.ts +101 -0
- package/dist/sdk/tokens/decimals.d.ts +64 -0
- package/dist/sdk/tokens/registry.d.ts +81 -0
- package/dist/sdk/tokens/solana.d.ts +107 -0
- package/dist/sdk/tokens/transfers.d.ts +94 -0
- package/dist/sdk/types.d.ts +129 -0
- package/dist/sdk/wallet-core.d.ts +29450 -0
- package/dist/sdk/x402/budget.d.ts +51 -0
- package/dist/sdk/x402/chains/abstract/index.d.ts +134 -0
- package/dist/sdk/x402/client.d.ts +66 -0
- package/dist/sdk/x402/index.d.ts +8 -0
- package/dist/sdk/x402/middleware.d.ts +37 -0
- package/dist/sdk/x402/multi-asset.d.ts +53 -0
- package/dist/sdk/x402/types.d.ts +109 -0
- package/dist/security/wallet-context-safety.d.ts +7 -0
- package/dist/security/wallet-financial-confirmation.d.ts +23 -0
- package/dist/services/wallet-backend-service.d.ts +39 -0
- package/dist/types/wallet-router.d.ts +130 -0
- package/dist/utils/intent-trajectory.d.ts +34 -0
- package/dist/wallet/backend.d.ts +41 -0
- package/dist/wallet/errors.d.ts +17 -0
- package/dist/wallet/index.d.ts +6 -0
- package/dist/wallet/local-eoa-backend.d.ts +37 -0
- package/dist/wallet/pending.d.ts +47 -0
- package/dist/wallet/select-backend.d.ts +11 -0
- package/dist/wallet/steward-backend.d.ts +22 -0
- package/dist/wallet-action.d.ts +1 -0
- package/dist/wallet-action.js +6292 -0
- package/dist/wallet-action.js.map +44 -0
- package/package.json +35 -21
- package/registry-entry.json +134 -0
- package/src/analytics/birdeye/actions/wallet-search-address.ts +85 -5
- package/src/analytics/birdeye/birdeye-task.ts +25 -9
- package/src/analytics/birdeye/birdeye.ts +6 -7
- package/src/analytics/birdeye/constants.ts +0 -1
- package/src/analytics/birdeye/providers/agent-portfolio-provider.ts +0 -1
- package/src/analytics/birdeye/providers/market.ts +51 -45
- package/src/analytics/birdeye/providers/portfolio-factory.ts +79 -38
- package/src/analytics/birdeye/providers/trending.ts +43 -46
- package/src/analytics/birdeye/providers/wallet.ts +0 -1
- package/src/analytics/birdeye/search-category.test.ts +1 -1
- package/src/analytics/birdeye/search-category.ts +77 -12
- package/src/analytics/birdeye/service.test.ts +146 -0
- package/src/analytics/birdeye/service.ts +220 -105
- package/src/analytics/birdeye/types/api/common.ts +0 -1
- package/src/analytics/birdeye/types/api/defi.ts +0 -1
- package/src/analytics/birdeye/types/api/pair.ts +0 -1
- package/src/analytics/birdeye/types/api/search.ts +0 -1
- package/src/analytics/birdeye/types/api/token.ts +0 -1
- package/src/analytics/birdeye/types/api/trader.ts +0 -1
- package/src/analytics/birdeye/types/api/wallet.ts +0 -1
- package/src/analytics/birdeye/types/shared.ts +0 -11
- package/src/analytics/birdeye/utils.test.ts +69 -0
- package/src/analytics/birdeye/utils.ts +11 -8
- package/src/analytics/dexscreener/search-category.ts +0 -1
- package/src/analytics/dexscreener/service.ts +7 -12
- package/src/analytics/dexscreener/types.ts +0 -1
- package/src/analytics/lpinfo/index.ts +5 -2
- package/src/analytics/lpinfo/kamino/README.md +2 -2
- package/src/analytics/lpinfo/kamino/index.ts +9 -2
- package/src/analytics/lpinfo/kamino/providers/kaminoLiquidityProvider.ts +6 -26
- package/src/analytics/lpinfo/kamino/providers/kaminoPoolProvider.ts +11 -12
- package/src/analytics/lpinfo/kamino/providers/kaminoProvider.ts +76 -32
- package/src/analytics/lpinfo/kamino/services/kaminoLiquidityService.ts +78 -38
- package/src/analytics/lpinfo/kamino/services/kaminoService.ts +71 -31
- package/src/analytics/lpinfo/steer/index.ts +7 -2
- package/src/analytics/lpinfo/steer/providers/steerLiquidityProvider.ts +25 -26
- package/src/analytics/lpinfo/steer/services/steerLiquidityService.ts +367 -149
- package/src/analytics/news/index.ts +7 -2
- package/src/analytics/news/interfaces/types.ts +0 -1
- package/src/analytics/news/providers/defiNewsProvider.ts +17 -44
- package/src/analytics/news/services/newsDataService.ts +1 -22
- package/src/analytics/news/utils/formatters.test.ts +60 -0
- package/src/analytics/news/utils/formatters.ts +0 -1
- package/src/analytics/token-info/action.ts +52 -212
- package/src/analytics/token-info/index.ts +1 -1
- package/src/analytics/token-info/params.test.ts +69 -0
- package/src/analytics/token-info/params.ts +13 -11
- package/src/analytics/token-info/providers.ts +46 -17
- package/src/analytics/token-info/service.ts +3 -3
- package/src/analytics/token-info/types.ts +2 -2
- package/src/api/wallet-routes.test.ts +56 -0
- package/src/api/wallet-routes.ts +1728 -0
- package/src/audit/audit-log.ts +57 -2
- package/src/browser-shim/build-shim.ts +1 -1
- package/src/browser-shim/shim.template.js +107 -117
- package/src/chains/{wallet-router.test.ts → __tests__/wallet-router.test.ts} +57 -10
- package/src/chains/evm/actions/helpers.ts +9 -7
- package/src/chains/evm/actions/swap.ts +176 -22
- package/src/chains/evm/actions/transfer.ts +29 -22
- package/src/chains/evm/biome.json +1 -1
- package/src/chains/evm/build.ts +6 -1
- package/src/chains/evm/constants.ts +19 -0
- package/src/chains/evm/contracts/artifacts/OZGovernor.json +25 -1682
- package/src/chains/evm/dex/aerodrome/index.ts +6 -1
- package/src/chains/evm/dex/aerodrome/services/AerodromeLpService.ts +41 -15
- package/src/chains/evm/dex/aerodrome/types.ts +1 -2
- package/src/chains/evm/dex/pancakeswp/index.ts +6 -1
- package/src/chains/evm/dex/pancakeswp/services/PancakeSwapV3LpService.ts +54 -17
- package/src/chains/evm/dex/pancakeswp/types.ts +1 -2
- package/src/chains/evm/dex/uniswap/index.ts +6 -1
- package/src/chains/evm/dex/uniswap/services/UniswapV3LpService.ts +20 -9
- package/src/chains/evm/dex/uniswap/types.ts +1 -2
- package/src/chains/evm/gov-router.ts +3 -1
- package/src/chains/evm/index.browser.ts +1 -1
- package/src/chains/evm/index.ts +5 -1
- package/src/chains/evm/prompts.ts +5 -0
- package/src/chains/evm/providers/get-balance.ts +1 -1
- package/src/chains/evm/providers/wallet.ts +80 -9
- package/src/chains/evm/routes/sign.ts +35 -26
- package/src/chains/evm/rpc-providers.ts +1 -1
- package/src/chains/evm/types/index.ts +22 -2
- package/src/chains/registry.ts +1 -1
- package/src/chains/wallet-action.ts +301 -91
- package/src/index.ts +9 -5
- package/src/lib/wallet-export-guard.test.ts +233 -0
- package/src/lib/wallet-export-guard.ts +1 -1
- package/src/lp/actions/liquidity.ts +53 -26
- package/src/lp/e2e/real-token-tests.ts +0 -1
- package/src/lp/e2e/scenarios.ts +1 -2
- package/src/lp/e2e/test-utils.ts +20 -7
- package/src/lp/lp-manager-entry.ts +2 -5
- package/src/lp/services/ConcentratedLiquidityService.ts +3 -10
- package/src/lp/services/DexInteractionService.ts +1 -2
- package/src/lp/services/LpManagementService.test.ts +0 -1
- package/src/lp/services/LpManagementService.ts +75 -35
- package/src/lp/services/UserLpProfileService.ts +2 -3
- package/src/lp/services/VaultService.ts +10 -4
- package/src/lp/services/YieldOptimizationService.ts +29 -13
- package/src/lp/services/__tests__/MockLpService.ts +1 -2
- package/src/lp/types.ts +9 -13
- package/src/lp/utils/solanaClient.ts +4 -2
- package/src/plugin.routes.test.ts +24 -0
- package/src/plugin.ts +30 -13
- package/src/providers/canonical-provider.ts +1 -1
- package/src/providers/{unified-wallet-provider.ts → wallet-provider.ts} +3 -3
- package/src/routes/__fixtures__/coingecko-markets.recorded.json +97 -0
- package/src/routes/wallet-market-overview-route.ts +1 -1
- package/src/routes/wallet-market-overview.contract.test.ts +139 -0
- package/src/routes/wallet-market-overview.real.test.ts +83 -0
- package/src/sdk/escrow/MutualStakeEscrow.ts +1 -2
- package/src/sdk/identity/erc8004.ts +1 -1
- package/src/sdk/identity/validation.ts +3 -4
- package/src/sdk/index.ts +2 -2
- package/src/sdk/policy/SpendingPolicy.ts +1 -1
- package/src/sdk/router/PaymentRouter.ts +8 -11
- package/src/sdk/swap/SwapModule.ts +1 -1
- package/src/sdk/tokens/registry.ts +1 -1
- package/src/sdk/x402/middleware.ts +2 -8
- package/src/security/__tests__/wallet-context-safety.test.ts +79 -0
- package/src/security/__tests__/wallet-financial-confirmation.test.ts +88 -0
- package/src/security/wallet-context-safety.ts +128 -0
- package/src/security/wallet-financial-confirmation.ts +150 -0
- package/src/services/wallet-backend-service.ts +15 -1
- package/src/utils/intent-trajectory.ts +2 -2
- package/src/wallet/steward-backend.ts +4 -4
- package/dist/LpManagementService-BWrQ5-cO.mjs +0 -353
- package/dist/MockLpService-D_Apn4Fd.mjs +0 -99
- package/dist/aerodrome-CfnESC32.mjs +0 -890
- package/dist/chunk-hT5z_Zn9.mjs +0 -35
- package/dist/lib/server-wallet-trade.d.mts +0 -34
- package/dist/lib/server-wallet-trade.mjs +0 -306
- package/dist/meteora-BPX39hZo.mjs +0 -22640
- package/dist/orca-Bybp1HXO.mjs +0 -249
- package/dist/pancakeswp-CkEXlXti.mjs +0 -604
- package/dist/plugin-ZO_MTyd0.mjs +0 -529
- package/dist/raydium-rfaM9yEf.mjs +0 -539
- package/dist/sdk/index.d.mts +0 -32492
- package/dist/sdk/index.mjs +0 -6415
- package/dist/types-D5252NZk.mjs +0 -487
- package/dist/uniswap-CReXgXVN.mjs +0 -573
- package/dist/wallet-action.d.mts +0 -6
- package/dist/wallet-action.mjs +0 -820
- package/src/analytics/birdeye/tasks/birdeye.ts +0 -232
- package/src/analytics/lpinfo/index.d.ts +0 -7
- package/src/chains/evm/contracts/artifacts/TimelockController.json +0 -1007
- package/src/chains/evm/contracts/artifacts/VoteToken.json +0 -895
- package/src/lp/tasks/LpAutoRebalanceTask.ts +0 -117
- package/src/lp/tasks/__tests__/LpAutoRebalanceTask.test.ts +0 -370
package/dist/wallet-action.mjs
DELETED
|
@@ -1,820 +0,0 @@
|
|
|
1
|
-
import { createRequire } from "node:module";
|
|
2
|
-
import "@elizaos/core";
|
|
3
|
-
import "@lifi/sdk";
|
|
4
|
-
import "viem";
|
|
5
|
-
import * as viemChains from "viem/chains";
|
|
6
|
-
import "node:path";
|
|
7
|
-
import "viem/accounts";
|
|
8
|
-
import { z } from "zod";
|
|
9
|
-
import "@solana/spl-token";
|
|
10
|
-
import "@solana/web3.js";
|
|
11
|
-
import "bs58";
|
|
12
|
-
//#region \0rolldown/runtime.js
|
|
13
|
-
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
14
|
-
//#endregion
|
|
15
|
-
//#region src/chains/evm/generated/specs/specs.ts
|
|
16
|
-
const coreActionsSpec = {
|
|
17
|
-
version: "1.0.0",
|
|
18
|
-
actions: [
|
|
19
|
-
{
|
|
20
|
-
name: "EVM_TRANSFER",
|
|
21
|
-
description: "Transfer tokens from the agent's EVM wallet to another address",
|
|
22
|
-
descriptionCompressed: "EVM transfer: send native or ERC-20 tokens to another address.",
|
|
23
|
-
similes: [
|
|
24
|
-
"TRANSFER",
|
|
25
|
-
"SEND_TOKENS",
|
|
26
|
-
"SEND_TOKEN",
|
|
27
|
-
"TRANSFER_TOKEN",
|
|
28
|
-
"TRANSFER_TOKENS",
|
|
29
|
-
"EVM_SEND_TOKENS"
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
name: "EVM_SWAP",
|
|
34
|
-
description: "Swap tokens on a decentralized exchange",
|
|
35
|
-
descriptionCompressed: "EVM token swap on a DEX (Lifi/Bebop routing).",
|
|
36
|
-
similes: ["SWAP_TOKENS", "SWAP_TOKEN"]
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: "CROSS_CHAIN_TRANSFER",
|
|
40
|
-
description: "Bridge tokens to another chain",
|
|
41
|
-
descriptionCompressed: "Bridge ERC-20 tokens between EVM chains via Lifi.",
|
|
42
|
-
similes: ["BRIDGE", "BRIDGE_TOKENS"]
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: "WALLET_GOV",
|
|
46
|
-
description: "OZ-Governor governance op: { op: 'propose' | 'vote' | 'queue' | 'execute' }",
|
|
47
|
-
descriptionCompressed: "OZ-Governor op: propose, vote, queue, or execute (op switch).",
|
|
48
|
-
similes: [
|
|
49
|
-
"GOV_PROPOSE",
|
|
50
|
-
"GOV_VOTE",
|
|
51
|
-
"GOV_QUEUE",
|
|
52
|
-
"GOV_EXECUTE",
|
|
53
|
-
"GOVERNANCE_VOTE",
|
|
54
|
-
"QUEUE_PROPOSAL",
|
|
55
|
-
"EXECUTE_PROPOSAL",
|
|
56
|
-
"PROPOSE"
|
|
57
|
-
]
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
};
|
|
61
|
-
const allActionsSpec = {
|
|
62
|
-
version: "1.0.0",
|
|
63
|
-
actions: [
|
|
64
|
-
{
|
|
65
|
-
name: "EVM_TRANSFER",
|
|
66
|
-
description: "Transfer tokens from the agent's EVM wallet to another address",
|
|
67
|
-
descriptionCompressed: "EVM transfer: send native or ERC-20 tokens to another address.",
|
|
68
|
-
similes: [
|
|
69
|
-
"TRANSFER",
|
|
70
|
-
"SEND_TOKENS",
|
|
71
|
-
"SEND_TOKEN",
|
|
72
|
-
"TRANSFER_TOKEN",
|
|
73
|
-
"TRANSFER_TOKENS",
|
|
74
|
-
"EVM_SEND_TOKENS"
|
|
75
|
-
]
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
name: "EVM_SWAP",
|
|
79
|
-
description: "Swap tokens on a decentralized exchange",
|
|
80
|
-
descriptionCompressed: "EVM token swap on a DEX (Lifi/Bebop routing).",
|
|
81
|
-
similes: ["SWAP_TOKENS", "SWAP_TOKEN"]
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: "CROSS_CHAIN_TRANSFER",
|
|
85
|
-
description: "Bridge tokens to another chain",
|
|
86
|
-
descriptionCompressed: "Bridge ERC-20 tokens between EVM chains via Lifi.",
|
|
87
|
-
similes: ["BRIDGE", "BRIDGE_TOKENS"]
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
name: "WALLET_GOV",
|
|
91
|
-
description: "OZ-Governor governance op: { op: 'propose' | 'vote' | 'queue' | 'execute' }",
|
|
92
|
-
descriptionCompressed: "OZ-Governor op: propose, vote, queue, or execute (op switch).",
|
|
93
|
-
similes: [
|
|
94
|
-
"GOV_PROPOSE",
|
|
95
|
-
"GOV_VOTE",
|
|
96
|
-
"GOV_QUEUE",
|
|
97
|
-
"GOV_EXECUTE",
|
|
98
|
-
"GOVERNANCE_VOTE",
|
|
99
|
-
"QUEUE_PROPOSAL",
|
|
100
|
-
"EXECUTE_PROPOSAL",
|
|
101
|
-
"PROPOSE"
|
|
102
|
-
]
|
|
103
|
-
}
|
|
104
|
-
]
|
|
105
|
-
};
|
|
106
|
-
const coreProvidersSpec = {
|
|
107
|
-
version: "1.0.0",
|
|
108
|
-
providers: [{
|
|
109
|
-
name: "wallet",
|
|
110
|
-
description: "EVM wallet address and balances",
|
|
111
|
-
descriptionCompressed: "EVM wallet address and balances.",
|
|
112
|
-
dynamic: true
|
|
113
|
-
}, {
|
|
114
|
-
name: "get-balance",
|
|
115
|
-
description: "Token balance for ERC20 tokens when onchain actions are requested",
|
|
116
|
-
descriptionCompressed: "ERC20 token balance for onchain actions.",
|
|
117
|
-
dynamic: true
|
|
118
|
-
}]
|
|
119
|
-
};
|
|
120
|
-
const allProvidersSpec = {
|
|
121
|
-
version: "1.0.0",
|
|
122
|
-
providers: [{
|
|
123
|
-
name: "wallet",
|
|
124
|
-
description: "EVM wallet address and balances",
|
|
125
|
-
descriptionCompressed: "EVM wallet address and balances.",
|
|
126
|
-
dynamic: true
|
|
127
|
-
}, {
|
|
128
|
-
name: "get-balance",
|
|
129
|
-
description: "Token balance for ERC20 tokens when onchain actions are requested",
|
|
130
|
-
descriptionCompressed: "ERC20 token balance for onchain actions.",
|
|
131
|
-
dynamic: true
|
|
132
|
-
}]
|
|
133
|
-
};
|
|
134
|
-
const coreActionDocs = coreActionsSpec.actions;
|
|
135
|
-
const allActionDocs = allActionsSpec.actions;
|
|
136
|
-
const coreProviderDocs = coreProvidersSpec.providers;
|
|
137
|
-
const allProviderDocs = allProvidersSpec.providers;
|
|
138
|
-
//#endregion
|
|
139
|
-
//#region src/chains/evm/generated/specs/spec-helpers.ts
|
|
140
|
-
/**
|
|
141
|
-
* Helper functions to lookup action/provider specs by name.
|
|
142
|
-
* These allow language-specific implementations to import their text content
|
|
143
|
-
* (description, similes, examples) from the centralized specs.
|
|
144
|
-
*
|
|
145
|
-
* DO NOT EDIT the spec data - update prompts/actions.json, prompts/providers.json and regenerate.
|
|
146
|
-
*/
|
|
147
|
-
const coreActionMap = new Map(coreActionDocs.map((doc) => [doc.name, doc]));
|
|
148
|
-
const allActionMap = new Map(allActionDocs.map((doc) => [doc.name, doc]));
|
|
149
|
-
const coreProviderMap = new Map(coreProviderDocs.map((doc) => [doc.name, doc]));
|
|
150
|
-
const allProviderMap = new Map(allProviderDocs.map((doc) => [doc.name, doc]));
|
|
151
|
-
/**
|
|
152
|
-
* Get an action spec by name from the core specs.
|
|
153
|
-
* @param name - The action name
|
|
154
|
-
* @returns The action spec or undefined if not found
|
|
155
|
-
*/
|
|
156
|
-
function getActionSpec(name) {
|
|
157
|
-
return coreActionMap.get(name) ?? allActionMap.get(name);
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Get an action spec by name, throwing if not found.
|
|
161
|
-
* @param name - The action name
|
|
162
|
-
* @returns The action spec
|
|
163
|
-
* @throws Error if the action is not found
|
|
164
|
-
*/
|
|
165
|
-
function requireActionSpec(name) {
|
|
166
|
-
const spec = getActionSpec(name);
|
|
167
|
-
if (!spec) throw new Error(`Action spec not found: ${name}`);
|
|
168
|
-
return spec;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Get a provider spec by name from the core specs.
|
|
172
|
-
* @param name - The provider name
|
|
173
|
-
* @returns The provider spec or undefined if not found
|
|
174
|
-
*/
|
|
175
|
-
function getProviderSpec(name) {
|
|
176
|
-
return coreProviderMap.get(name) ?? allProviderMap.get(name);
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Get a provider spec by name, throwing if not found.
|
|
180
|
-
* @param name - The provider name
|
|
181
|
-
* @returns The provider spec
|
|
182
|
-
* @throws Error if the provider is not found
|
|
183
|
-
*/
|
|
184
|
-
function requireProviderSpec(name) {
|
|
185
|
-
const spec = getProviderSpec(name);
|
|
186
|
-
if (!spec) throw new Error(`Provider spec not found: ${name}`);
|
|
187
|
-
return spec;
|
|
188
|
-
}
|
|
189
|
-
//#endregion
|
|
190
|
-
//#region src/chains/evm/types/index.ts
|
|
191
|
-
const SUPPORTED_CHAIN_NAMES = Object.keys(viemChains);
|
|
192
|
-
const SupportedChainSchema = z.enum(SUPPORTED_CHAIN_NAMES);
|
|
193
|
-
const AddressSchema = z.string().regex(/^0x[a-fA-F0-9]{40}$/, "Invalid Ethereum address format").transform((addr) => addr);
|
|
194
|
-
const HashSchema = z.string().regex(/^0x[a-fA-F0-9]{64}$/, "Invalid transaction hash format").transform((hash) => hash);
|
|
195
|
-
const HexSchema = z.string().regex(/^0x[a-fA-F0-9]*$/, "Invalid hex data format").transform((hex) => hex);
|
|
196
|
-
const PrivateKeySchema = z.string().regex(/^0x[a-fA-F0-9]{64}$/, "Invalid private key format").transform((key) => key);
|
|
197
|
-
const AmountSchema = z.string().refine((val) => {
|
|
198
|
-
const num = parseFloat(val);
|
|
199
|
-
return !Number.isNaN(num) && num > 0;
|
|
200
|
-
}, { message: "Amount must be a positive number" });
|
|
201
|
-
z.string().optional().refine((val) => {
|
|
202
|
-
if (val === void 0) return true;
|
|
203
|
-
const num = parseFloat(val);
|
|
204
|
-
return !Number.isNaN(num) && num > 0;
|
|
205
|
-
}, { message: "If provided, amount must be a positive number" });
|
|
206
|
-
z.object({
|
|
207
|
-
hash: HashSchema,
|
|
208
|
-
from: AddressSchema,
|
|
209
|
-
to: AddressSchema,
|
|
210
|
-
value: z.bigint(),
|
|
211
|
-
data: HexSchema.optional(),
|
|
212
|
-
chainId: z.number().int().positive().optional(),
|
|
213
|
-
logs: z.array(z.record(z.string(), z.unknown())).optional()
|
|
214
|
-
});
|
|
215
|
-
z.object({
|
|
216
|
-
fromChain: SupportedChainSchema,
|
|
217
|
-
toAddress: AddressSchema,
|
|
218
|
-
amount: AmountSchema,
|
|
219
|
-
data: HexSchema.optional().default("0x"),
|
|
220
|
-
token: z.string().optional()
|
|
221
|
-
});
|
|
222
|
-
z.object({
|
|
223
|
-
chain: SupportedChainSchema,
|
|
224
|
-
fromToken: z.union([AddressSchema, z.string().min(1)]),
|
|
225
|
-
toToken: z.union([AddressSchema, z.string().min(1)]),
|
|
226
|
-
amount: AmountSchema
|
|
227
|
-
});
|
|
228
|
-
z.object({
|
|
229
|
-
data: z.string(),
|
|
230
|
-
approvalTarget: AddressSchema,
|
|
231
|
-
sellAmount: z.string(),
|
|
232
|
-
from: AddressSchema,
|
|
233
|
-
to: AddressSchema,
|
|
234
|
-
value: z.string(),
|
|
235
|
-
gas: z.string(),
|
|
236
|
-
gasPrice: z.string()
|
|
237
|
-
});
|
|
238
|
-
z.object({
|
|
239
|
-
fromChain: SupportedChainSchema,
|
|
240
|
-
toChain: SupportedChainSchema,
|
|
241
|
-
fromToken: z.union([AddressSchema, z.string().min(1)]),
|
|
242
|
-
toToken: z.union([AddressSchema, z.string().min(1)]),
|
|
243
|
-
amount: AmountSchema,
|
|
244
|
-
toAddress: AddressSchema.optional()
|
|
245
|
-
});
|
|
246
|
-
z.object({
|
|
247
|
-
rpcUrl: z.record(z.string(), z.string().url().optional()).optional(),
|
|
248
|
-
secrets: z.object({ EVM_PRIVATE_KEY: PrivateKeySchema }).optional(),
|
|
249
|
-
testMode: z.boolean().optional(),
|
|
250
|
-
multicall: z.object({
|
|
251
|
-
batchSize: z.number().int().positive().optional(),
|
|
252
|
-
wait: z.number().int().nonnegative().optional()
|
|
253
|
-
}).optional()
|
|
254
|
-
});
|
|
255
|
-
let VoteType = /* @__PURE__ */ function(VoteType) {
|
|
256
|
-
VoteType[VoteType["AGAINST"] = 0] = "AGAINST";
|
|
257
|
-
VoteType[VoteType["FOR"] = 1] = "FOR";
|
|
258
|
-
VoteType[VoteType["ABSTAIN"] = 2] = "ABSTAIN";
|
|
259
|
-
return VoteType;
|
|
260
|
-
}({});
|
|
261
|
-
const VoteTypeSchema = z.enum(VoteType);
|
|
262
|
-
const ProposalSchema = z.object({
|
|
263
|
-
targets: z.array(AddressSchema).min(1),
|
|
264
|
-
values: z.array(z.bigint()),
|
|
265
|
-
calldatas: z.array(HexSchema),
|
|
266
|
-
description: z.string().min(1)
|
|
267
|
-
});
|
|
268
|
-
z.object({
|
|
269
|
-
chain: SupportedChainSchema,
|
|
270
|
-
governor: AddressSchema,
|
|
271
|
-
proposalId: z.string().min(1),
|
|
272
|
-
support: VoteTypeSchema
|
|
273
|
-
});
|
|
274
|
-
ProposalSchema.extend({
|
|
275
|
-
chain: SupportedChainSchema,
|
|
276
|
-
governor: AddressSchema
|
|
277
|
-
});
|
|
278
|
-
z.object({
|
|
279
|
-
status: z.enum([
|
|
280
|
-
"PENDING",
|
|
281
|
-
"DONE",
|
|
282
|
-
"FAILED"
|
|
283
|
-
]),
|
|
284
|
-
substatus: z.string().optional(),
|
|
285
|
-
error: z.instanceof(Error).optional()
|
|
286
|
-
});
|
|
287
|
-
requireProviderSpec("wallet").name;
|
|
288
|
-
//#endregion
|
|
289
|
-
//#region src/chains/evm/actions/helpers.ts
|
|
290
|
-
function hasEvmPrivateKey(runtime) {
|
|
291
|
-
const privateKey = runtime.getSetting("EVM_PRIVATE_KEY");
|
|
292
|
-
return typeof privateKey === "string" && privateKey.startsWith("0x");
|
|
293
|
-
}
|
|
294
|
-
function toConfirmationValue(value) {
|
|
295
|
-
if (value === void 0) return null;
|
|
296
|
-
if (typeof value === "bigint") return value.toString();
|
|
297
|
-
if (value === null) return null;
|
|
298
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") return value;
|
|
299
|
-
if (Array.isArray(value)) return value.map((item) => toConfirmationValue(item));
|
|
300
|
-
if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, toConfirmationValue(item)]));
|
|
301
|
-
return String(value);
|
|
302
|
-
}
|
|
303
|
-
function createEvmActionValidator(_config) {
|
|
304
|
-
return async (runtime, _message, _state, _options) => {
|
|
305
|
-
try {
|
|
306
|
-
return hasEvmPrivateKey(runtime);
|
|
307
|
-
} catch {
|
|
308
|
-
return false;
|
|
309
|
-
}
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
//#endregion
|
|
313
|
-
//#region src/chains/evm/actions/swap.ts
|
|
314
|
-
const spec$1 = {
|
|
315
|
-
...requireActionSpec("EVM_SWAP"),
|
|
316
|
-
name: "WALLET"
|
|
317
|
-
};
|
|
318
|
-
spec$1.name, spec$1.description, spec$1.descriptionCompressed, createEvmActionValidator({
|
|
319
|
-
keywords: [
|
|
320
|
-
"swap",
|
|
321
|
-
"exchange",
|
|
322
|
-
"trade",
|
|
323
|
-
"token"
|
|
324
|
-
],
|
|
325
|
-
regex: /\b(?:swap|exchange|trade|token)\b/i
|
|
326
|
-
}), spec$1.similes && [...spec$1.similes];
|
|
327
|
-
const spec = {
|
|
328
|
-
...requireActionSpec("EVM_TRANSFER"),
|
|
329
|
-
name: "WALLET"
|
|
330
|
-
};
|
|
331
|
-
spec.name, spec.description, spec.descriptionCompressed, createEvmActionValidator({
|
|
332
|
-
keywords: ["transfer"],
|
|
333
|
-
regex: /\b(?:transfer)\b/i
|
|
334
|
-
}), spec.similes && [...spec.similes];
|
|
335
|
-
__require("bignumber.js");
|
|
336
|
-
//#endregion
|
|
337
|
-
//#region src/types/wallet-router.ts
|
|
338
|
-
const WALLET_ROUTER_SUBACTIONS = [
|
|
339
|
-
"transfer",
|
|
340
|
-
"swap",
|
|
341
|
-
"bridge",
|
|
342
|
-
"gov"
|
|
343
|
-
];
|
|
344
|
-
const WALLET_ROUTER_MODES = ["prepare", "execute"];
|
|
345
|
-
const WALLET_GOV_OPS = [
|
|
346
|
-
"propose",
|
|
347
|
-
"vote",
|
|
348
|
-
"queue",
|
|
349
|
-
"execute"
|
|
350
|
-
];
|
|
351
|
-
const optionalString = z.union([z.string(), z.number()]).optional().nullable().transform((value) => {
|
|
352
|
-
if (value === null || value === void 0) return void 0;
|
|
353
|
-
const out = String(value).trim();
|
|
354
|
-
return out.length > 0 ? out : void 0;
|
|
355
|
-
});
|
|
356
|
-
const optionalPositiveAmount = optionalString.refine((value) => {
|
|
357
|
-
if (value === void 0) return true;
|
|
358
|
-
const parsed = Number(value);
|
|
359
|
-
return Number.isFinite(parsed) && parsed > 0;
|
|
360
|
-
}, { message: "amount must be a positive number" });
|
|
361
|
-
const optionalStringArray = z.preprocess((value) => {
|
|
362
|
-
if (value === null || value === void 0) return void 0;
|
|
363
|
-
if (Array.isArray(value)) return value.map((item) => String(item).trim()).filter((item) => item.length > 0);
|
|
364
|
-
if (typeof value === "string") return value.split(",").map((item) => item.trim()).filter((item) => item.length > 0);
|
|
365
|
-
}, z.array(z.string()).optional());
|
|
366
|
-
const WalletRouterParamsSchema = z.object({
|
|
367
|
-
subaction: z.enum(WALLET_ROUTER_SUBACTIONS),
|
|
368
|
-
chain: optionalString,
|
|
369
|
-
toChain: optionalString,
|
|
370
|
-
fromToken: optionalString,
|
|
371
|
-
toToken: optionalString,
|
|
372
|
-
amount: optionalPositiveAmount,
|
|
373
|
-
recipient: optionalString,
|
|
374
|
-
slippageBps: z.coerce.number().int().min(0).max(1e4).optional(),
|
|
375
|
-
mode: z.enum(WALLET_ROUTER_MODES).default("prepare"),
|
|
376
|
-
dryRun: z.preprocess((value) => {
|
|
377
|
-
if (typeof value === "string") {
|
|
378
|
-
const normalized = value.trim().toLowerCase();
|
|
379
|
-
if (normalized === "true" || normalized === "1" || normalized === "yes") return true;
|
|
380
|
-
if (normalized === "false" || normalized === "0" || normalized === "no") return false;
|
|
381
|
-
}
|
|
382
|
-
return value;
|
|
383
|
-
}, z.boolean()).default(false),
|
|
384
|
-
op: z.enum(WALLET_GOV_OPS).optional(),
|
|
385
|
-
governor: optionalString,
|
|
386
|
-
proposalId: optionalString,
|
|
387
|
-
support: z.coerce.number().int().min(0).max(2).optional(),
|
|
388
|
-
targets: optionalStringArray,
|
|
389
|
-
values: optionalStringArray,
|
|
390
|
-
calldatas: optionalStringArray,
|
|
391
|
-
description: optionalString
|
|
392
|
-
});
|
|
393
|
-
function parseWalletRouterParams(input) {
|
|
394
|
-
return WalletRouterParamsSchema.parse(input);
|
|
395
|
-
}
|
|
396
|
-
function isWalletRouterSubaction(value) {
|
|
397
|
-
return typeof value === "string" && WALLET_ROUTER_SUBACTIONS.includes(value);
|
|
398
|
-
}
|
|
399
|
-
["@elizaos", "app-steward"].join("/");
|
|
400
|
-
//#endregion
|
|
401
|
-
//#region src/services/wallet-backend-service.ts
|
|
402
|
-
const WALLET_BACKEND_SERVICE_TYPE = "wallet-backend";
|
|
403
|
-
//#endregion
|
|
404
|
-
//#region src/chains/wallet-action.ts
|
|
405
|
-
const LEGACY_SWAP_ACTIONS = new Set([
|
|
406
|
-
"SWAP",
|
|
407
|
-
"SWAP_SOLANA",
|
|
408
|
-
"WALLET_SWAP",
|
|
409
|
-
"TOKEN_SWAP"
|
|
410
|
-
]);
|
|
411
|
-
const LEGACY_TRANSFER_ACTIONS = new Set([
|
|
412
|
-
"TRANSFER",
|
|
413
|
-
"TRANSFER_TOKEN",
|
|
414
|
-
"WALLET_TRANSFER",
|
|
415
|
-
"SEND_TOKENS",
|
|
416
|
-
"PREPARE_TRANSFER"
|
|
417
|
-
]);
|
|
418
|
-
const LEGACY_BRIDGE_ACTIONS = new Set(["CROSS_CHAIN_TRANSFER"]);
|
|
419
|
-
const LEGACY_GOV_ACTIONS = new Set(["WALLET_GOV", "WALLET_GOV"]);
|
|
420
|
-
const GOV_OPS = new Set([
|
|
421
|
-
"propose",
|
|
422
|
-
"vote",
|
|
423
|
-
"queue",
|
|
424
|
-
"execute"
|
|
425
|
-
]);
|
|
426
|
-
function selectedContextMatches(state, contexts) {
|
|
427
|
-
const selected = /* @__PURE__ */ new Set();
|
|
428
|
-
const collect = (value) => {
|
|
429
|
-
if (!Array.isArray(value)) return;
|
|
430
|
-
for (const item of value) if (typeof item === "string") selected.add(item);
|
|
431
|
-
};
|
|
432
|
-
collect((state?.values)?.selectedContexts);
|
|
433
|
-
collect((state?.data)?.selectedContexts);
|
|
434
|
-
const contextObject = (state?.data)?.contextObject;
|
|
435
|
-
collect(contextObject?.trajectoryPrefix?.selectedContexts);
|
|
436
|
-
collect(contextObject?.metadata?.selectedContexts);
|
|
437
|
-
return contexts.some((context) => selected.has(context));
|
|
438
|
-
}
|
|
439
|
-
function objectRecord(value) {
|
|
440
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return null;
|
|
441
|
-
return value;
|
|
442
|
-
}
|
|
443
|
-
function legacySubaction(value) {
|
|
444
|
-
if (typeof value !== "string") return void 0;
|
|
445
|
-
const upper = value.toUpperCase();
|
|
446
|
-
if (LEGACY_SWAP_ACTIONS.has(upper)) return "swap";
|
|
447
|
-
if (LEGACY_TRANSFER_ACTIONS.has(upper)) return "transfer";
|
|
448
|
-
if (LEGACY_BRIDGE_ACTIONS.has(upper)) return "bridge";
|
|
449
|
-
if (LEGACY_GOV_ACTIONS.has(upper)) return "gov";
|
|
450
|
-
}
|
|
451
|
-
function normalizedGovOp(value) {
|
|
452
|
-
if (typeof value !== "string") return void 0;
|
|
453
|
-
const normalized = value.trim().toLowerCase();
|
|
454
|
-
return GOV_OPS.has(normalized) ? normalized : void 0;
|
|
455
|
-
}
|
|
456
|
-
function normalizeRawParams(raw) {
|
|
457
|
-
const action = raw.action ?? raw.name;
|
|
458
|
-
const op = normalizedGovOp(raw.op ?? raw.govOp);
|
|
459
|
-
return {
|
|
460
|
-
subaction: raw.subaction ?? raw.operation ?? raw.actionType ?? (op ? "gov" : void 0) ?? legacySubaction(action),
|
|
461
|
-
chain: raw.chain ?? raw.fromChain ?? raw.network,
|
|
462
|
-
toChain: raw.toChain ?? raw.toNetwork ?? raw.destinationChain ?? raw.targetChain,
|
|
463
|
-
fromToken: raw.fromToken ?? raw.inputToken ?? raw.inputTokenCA ?? raw.inputTokenSymbol ?? raw.token ?? raw.tokenAddress,
|
|
464
|
-
toToken: raw.toToken ?? raw.outputToken ?? raw.outputTokenCA ?? raw.outputTokenSymbol,
|
|
465
|
-
amount: raw.amount,
|
|
466
|
-
recipient: raw.recipient ?? raw.toAddress ?? raw.to,
|
|
467
|
-
slippageBps: raw.slippageBps ?? raw.slippage,
|
|
468
|
-
mode: raw.mode ?? (raw.confirmed === true ? "execute" : void 0),
|
|
469
|
-
dryRun: raw.dryRun ?? raw.dry_run,
|
|
470
|
-
op,
|
|
471
|
-
governor: raw.governor,
|
|
472
|
-
proposalId: raw.proposalId,
|
|
473
|
-
support: raw.support,
|
|
474
|
-
targets: raw.targets,
|
|
475
|
-
values: raw.values,
|
|
476
|
-
calldatas: raw.calldatas,
|
|
477
|
-
description: raw.description
|
|
478
|
-
};
|
|
479
|
-
}
|
|
480
|
-
function extractRawParams(message, state, options) {
|
|
481
|
-
const optionRecord = objectRecord(options);
|
|
482
|
-
const optionParams = objectRecord(optionRecord?.parameters);
|
|
483
|
-
if (optionParams) return optionParams;
|
|
484
|
-
if (optionRecord && ("subaction" in optionRecord || "action" in optionRecord)) return optionRecord;
|
|
485
|
-
const stateRecord = objectRecord(state);
|
|
486
|
-
const stateParams = objectRecord(stateRecord?.walletRouterParams) ?? objectRecord(stateRecord?.walletCanonicalParams);
|
|
487
|
-
if (stateParams) return stateParams;
|
|
488
|
-
return objectRecord(message.content);
|
|
489
|
-
}
|
|
490
|
-
function toProviderValue(value) {
|
|
491
|
-
if (typeof value === "bigint") return value.toString();
|
|
492
|
-
if (value === void 0) return;
|
|
493
|
-
if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean") return value;
|
|
494
|
-
if (Array.isArray(value)) return value.map((item) => toProviderValue(item));
|
|
495
|
-
if (typeof value === "object") return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, toProviderValue(item)]));
|
|
496
|
-
return String(value);
|
|
497
|
-
}
|
|
498
|
-
function toProviderRecord(value) {
|
|
499
|
-
const converted = toProviderValue(value);
|
|
500
|
-
return converted && typeof converted === "object" && !Array.isArray(converted) ? converted : { value: converted };
|
|
501
|
-
}
|
|
502
|
-
function formatFailure(failure) {
|
|
503
|
-
if (failure.error === "AMBIGUOUS_CHAIN" && failure.candidates?.length) {
|
|
504
|
-
const chains = failure.candidates.map((candidate) => `${candidate.chain} (${candidate.name})`).join(", ");
|
|
505
|
-
return `${failure.detail} Available chains: ${chains}.`;
|
|
506
|
-
}
|
|
507
|
-
if (failure.error === "UNSUPPORTED_CHAIN" && failure.candidates?.length) {
|
|
508
|
-
const chains = failure.candidates.map((candidate) => candidate.chain).join(", ");
|
|
509
|
-
return `${failure.detail} Supported chains: ${chains}.`;
|
|
510
|
-
}
|
|
511
|
-
return failure.detail;
|
|
512
|
-
}
|
|
513
|
-
function resultText(result) {
|
|
514
|
-
if (!result.ok) return formatFailure(result);
|
|
515
|
-
const execution = result.result;
|
|
516
|
-
if (execution.status === "prepared") return `${execution.dryRun ? "Dry run prepared" : "Prepared"} ${execution.subaction} on ${result.handler.chain}.`;
|
|
517
|
-
const id = execution.transactionHash ?? execution.signature;
|
|
518
|
-
return `Submitted ${execution.subaction} on ${result.handler.chain}${id ? `: ${id}` : "."}`;
|
|
519
|
-
}
|
|
520
|
-
function serviceFromRuntime(runtime) {
|
|
521
|
-
const service = runtime.getService(WALLET_BACKEND_SERVICE_TYPE);
|
|
522
|
-
if (service && typeof service.routeWalletAction === "function") return service;
|
|
523
|
-
return null;
|
|
524
|
-
}
|
|
525
|
-
async function parseParams(message, state, options) {
|
|
526
|
-
return parseWalletRouterParams(normalizeRawParams(extractRawParams(message, state, options) ?? {}));
|
|
527
|
-
}
|
|
528
|
-
const walletRouterAction = {
|
|
529
|
-
name: "WALLET",
|
|
530
|
-
description: "Route wallet token operations through the registered chain handlers. Use subaction transfer, swap, or bridge with uniform params: subaction, chain, toChain, fromToken, toToken, amount, recipient, slippageBps, mode, dryRun. Bridge uses chain as the source and toChain as the destination. Omit chain only when one registered handler supports the subaction.",
|
|
531
|
-
descriptionCompressed: "Route wallet transfer/swap/bridge via chain registry; params: subaction, chain, toChain, fromToken, toToken, amount, recipient, slippageBps, mode, dryRun.",
|
|
532
|
-
contexts: [
|
|
533
|
-
"finance",
|
|
534
|
-
"crypto",
|
|
535
|
-
"wallet"
|
|
536
|
-
],
|
|
537
|
-
contextGate: { anyOf: [
|
|
538
|
-
"finance",
|
|
539
|
-
"crypto",
|
|
540
|
-
"wallet"
|
|
541
|
-
] },
|
|
542
|
-
roleGate: { minRole: "USER" },
|
|
543
|
-
similes: [
|
|
544
|
-
"SWAP",
|
|
545
|
-
"SWAP_SOLANA",
|
|
546
|
-
"TRANSFER",
|
|
547
|
-
"TRANSFER_TOKEN",
|
|
548
|
-
"WALLET_SWAP",
|
|
549
|
-
"WALLET_TRANSFER",
|
|
550
|
-
"CROSS_CHAIN_TRANSFER",
|
|
551
|
-
"PREPARE_TRANSFER",
|
|
552
|
-
"WALLET_ACTION",
|
|
553
|
-
"WALLET_GOV",
|
|
554
|
-
"WALLET_GOV"
|
|
555
|
-
],
|
|
556
|
-
parameters: [
|
|
557
|
-
{
|
|
558
|
-
name: "subaction",
|
|
559
|
-
description: "Wallet operation to perform.",
|
|
560
|
-
required: true,
|
|
561
|
-
schema: {
|
|
562
|
-
type: "string",
|
|
563
|
-
enum: [
|
|
564
|
-
"transfer",
|
|
565
|
-
"swap",
|
|
566
|
-
"bridge",
|
|
567
|
-
"gov"
|
|
568
|
-
]
|
|
569
|
-
},
|
|
570
|
-
examples: [
|
|
571
|
-
"transfer",
|
|
572
|
-
"swap",
|
|
573
|
-
"bridge",
|
|
574
|
-
"gov"
|
|
575
|
-
]
|
|
576
|
-
},
|
|
577
|
-
{
|
|
578
|
-
name: "target",
|
|
579
|
-
description: "Chain id or name (source chain for bridge). Omit only when one chain supports subaction.",
|
|
580
|
-
required: false,
|
|
581
|
-
schema: { type: "string" },
|
|
582
|
-
examples: [
|
|
583
|
-
"base",
|
|
584
|
-
"solana",
|
|
585
|
-
"8453"
|
|
586
|
-
]
|
|
587
|
-
},
|
|
588
|
-
{
|
|
589
|
-
name: "toChain",
|
|
590
|
-
description: "Destination chain for bridge.",
|
|
591
|
-
required: false,
|
|
592
|
-
schema: { type: "string" },
|
|
593
|
-
examples: [
|
|
594
|
-
"arbitrum",
|
|
595
|
-
"optimism",
|
|
596
|
-
"base"
|
|
597
|
-
]
|
|
598
|
-
},
|
|
599
|
-
{
|
|
600
|
-
name: "fromToken",
|
|
601
|
-
description: "Source token symbol, native token alias, or token address.",
|
|
602
|
-
required: false,
|
|
603
|
-
schema: { type: "string" },
|
|
604
|
-
examples: [
|
|
605
|
-
"ETH",
|
|
606
|
-
"SOL",
|
|
607
|
-
"USDC"
|
|
608
|
-
]
|
|
609
|
-
},
|
|
610
|
-
{
|
|
611
|
-
name: "toToken",
|
|
612
|
-
description: "Destination token symbol, native token alias, or token address.",
|
|
613
|
-
required: false,
|
|
614
|
-
schema: { type: "string" },
|
|
615
|
-
examples: ["USDC", "SOL"]
|
|
616
|
-
},
|
|
617
|
-
{
|
|
618
|
-
name: "amount",
|
|
619
|
-
description: "Human-readable token amount. Required for transfer, swap, and bridge.",
|
|
620
|
-
required: true,
|
|
621
|
-
schema: { type: "string" },
|
|
622
|
-
examples: ["0.1", "25"]
|
|
623
|
-
},
|
|
624
|
-
{
|
|
625
|
-
name: "recipient",
|
|
626
|
-
description: "Recipient address for transfer.",
|
|
627
|
-
required: false,
|
|
628
|
-
schema: { type: "string" },
|
|
629
|
-
examples: ["0x742d35Cc6634C0532925a3b844Bc454e4438f44e"]
|
|
630
|
-
},
|
|
631
|
-
{
|
|
632
|
-
name: "slippageBps",
|
|
633
|
-
description: "Maximum swap slippage in basis points.",
|
|
634
|
-
required: false,
|
|
635
|
-
schema: { type: "number" },
|
|
636
|
-
examples: [100]
|
|
637
|
-
},
|
|
638
|
-
{
|
|
639
|
-
name: "mode",
|
|
640
|
-
description: "Prepare without submitting, or execute the operation.",
|
|
641
|
-
required: false,
|
|
642
|
-
schema: {
|
|
643
|
-
type: "string",
|
|
644
|
-
enum: ["prepare", "execute"],
|
|
645
|
-
default: "prepare"
|
|
646
|
-
},
|
|
647
|
-
examples: ["prepare", "execute"]
|
|
648
|
-
},
|
|
649
|
-
{
|
|
650
|
-
name: "dryRun",
|
|
651
|
-
description: "Return metadata without signing or sending.",
|
|
652
|
-
required: false,
|
|
653
|
-
schema: {
|
|
654
|
-
type: "boolean",
|
|
655
|
-
default: false
|
|
656
|
-
},
|
|
657
|
-
examples: [true, false]
|
|
658
|
-
},
|
|
659
|
-
{
|
|
660
|
-
name: "op",
|
|
661
|
-
description: "Governance operation when subaction is gov.",
|
|
662
|
-
required: false,
|
|
663
|
-
schema: {
|
|
664
|
-
type: "string",
|
|
665
|
-
enum: [
|
|
666
|
-
"propose",
|
|
667
|
-
"vote",
|
|
668
|
-
"queue",
|
|
669
|
-
"execute"
|
|
670
|
-
]
|
|
671
|
-
},
|
|
672
|
-
examples: ["vote"]
|
|
673
|
-
},
|
|
674
|
-
{
|
|
675
|
-
name: "governor",
|
|
676
|
-
description: "Governor contract address for governance operations.",
|
|
677
|
-
required: false,
|
|
678
|
-
schema: { type: "string" },
|
|
679
|
-
examples: ["0x742d35Cc6634C0532925a3b844Bc454e4438f44e"]
|
|
680
|
-
},
|
|
681
|
-
{
|
|
682
|
-
name: "proposalId",
|
|
683
|
-
description: "Proposal id for governance vote, queue, or execute.",
|
|
684
|
-
required: false,
|
|
685
|
-
schema: { type: "string" }
|
|
686
|
-
},
|
|
687
|
-
{
|
|
688
|
-
name: "support",
|
|
689
|
-
description: "Vote support value for governance vote operations.",
|
|
690
|
-
required: false,
|
|
691
|
-
schema: { type: "number" },
|
|
692
|
-
examples: [1]
|
|
693
|
-
},
|
|
694
|
-
{
|
|
695
|
-
name: "targets",
|
|
696
|
-
description: "Target contract addresses for governance propose, queue, or execute.",
|
|
697
|
-
required: false,
|
|
698
|
-
schema: {
|
|
699
|
-
type: "array",
|
|
700
|
-
items: { type: "string" }
|
|
701
|
-
}
|
|
702
|
-
},
|
|
703
|
-
{
|
|
704
|
-
name: "values",
|
|
705
|
-
description: "Native token values as strings for governance propose, queue, or execute.",
|
|
706
|
-
required: false,
|
|
707
|
-
schema: {
|
|
708
|
-
type: "array",
|
|
709
|
-
items: { type: "string" }
|
|
710
|
-
}
|
|
711
|
-
},
|
|
712
|
-
{
|
|
713
|
-
name: "calldatas",
|
|
714
|
-
description: "Hex calldata values for governance propose, queue, or execute.",
|
|
715
|
-
required: false,
|
|
716
|
-
schema: {
|
|
717
|
-
type: "array",
|
|
718
|
-
items: { type: "string" }
|
|
719
|
-
}
|
|
720
|
-
},
|
|
721
|
-
{
|
|
722
|
-
name: "description",
|
|
723
|
-
description: "Proposal description for governance propose, queue, or execute.",
|
|
724
|
-
required: false,
|
|
725
|
-
schema: { type: "string" }
|
|
726
|
-
}
|
|
727
|
-
],
|
|
728
|
-
validate: async (_runtime, message, state, options) => {
|
|
729
|
-
if (!serviceFromRuntime(_runtime)) return false;
|
|
730
|
-
const raw = extractRawParams(message, state, options);
|
|
731
|
-
if (raw) {
|
|
732
|
-
if (isWalletRouterSubaction(normalizeRawParams(raw).subaction)) return true;
|
|
733
|
-
}
|
|
734
|
-
if (selectedContextMatches(state, [
|
|
735
|
-
"finance",
|
|
736
|
-
"crypto",
|
|
737
|
-
"wallet"
|
|
738
|
-
])) return true;
|
|
739
|
-
return false;
|
|
740
|
-
},
|
|
741
|
-
handler: async (runtime, message, state, options, callback) => {
|
|
742
|
-
let params;
|
|
743
|
-
try {
|
|
744
|
-
params = await parseParams(message, state, options);
|
|
745
|
-
} catch (error) {
|
|
746
|
-
const text = `Invalid wallet parameters: ${error instanceof Error ? error.message : String(error)}`;
|
|
747
|
-
await callback?.({
|
|
748
|
-
text,
|
|
749
|
-
content: { error: "INVALID_PARAMS" }
|
|
750
|
-
});
|
|
751
|
-
return {
|
|
752
|
-
success: false,
|
|
753
|
-
text,
|
|
754
|
-
data: { error: "INVALID_PARAMS" }
|
|
755
|
-
};
|
|
756
|
-
}
|
|
757
|
-
const service = serviceFromRuntime(runtime);
|
|
758
|
-
if (!service) {
|
|
759
|
-
const text = "Wallet router service is not available.";
|
|
760
|
-
await callback?.({
|
|
761
|
-
text,
|
|
762
|
-
content: { error: "SERVICE_UNAVAILABLE" }
|
|
763
|
-
});
|
|
764
|
-
return {
|
|
765
|
-
success: false,
|
|
766
|
-
text,
|
|
767
|
-
data: { error: "SERVICE_UNAVAILABLE" }
|
|
768
|
-
};
|
|
769
|
-
}
|
|
770
|
-
const routed = await service.routeWalletAction(params);
|
|
771
|
-
const text = resultText(routed);
|
|
772
|
-
const data = toProviderRecord(routed.ok ? {
|
|
773
|
-
...routed.result,
|
|
774
|
-
handler: routed.handler
|
|
775
|
-
} : {
|
|
776
|
-
error: routed.error,
|
|
777
|
-
detail: routed.detail,
|
|
778
|
-
candidates: routed.candidates
|
|
779
|
-
});
|
|
780
|
-
await callback?.({
|
|
781
|
-
text,
|
|
782
|
-
content: {
|
|
783
|
-
success: routed.ok,
|
|
784
|
-
...data
|
|
785
|
-
}
|
|
786
|
-
});
|
|
787
|
-
return {
|
|
788
|
-
success: routed.ok,
|
|
789
|
-
text,
|
|
790
|
-
values: routed.ok ? {
|
|
791
|
-
walletActionSucceeded: routed.result.status === "submitted",
|
|
792
|
-
walletActionPrepared: routed.result.status === "prepared",
|
|
793
|
-
walletChain: routed.handler.chain,
|
|
794
|
-
walletSubaction: routed.result.subaction
|
|
795
|
-
} : { walletActionError: routed.error },
|
|
796
|
-
data
|
|
797
|
-
};
|
|
798
|
-
},
|
|
799
|
-
examples: [[{
|
|
800
|
-
name: "{{user1}}",
|
|
801
|
-
content: { text: "Send 0.2 ETH on Base to 0x742d35Cc6634C0532925a3b844Bc454e4438f44e" }
|
|
802
|
-
}, {
|
|
803
|
-
name: "{{agent}}",
|
|
804
|
-
content: {
|
|
805
|
-
text: "Preparing the Base transfer.",
|
|
806
|
-
action: "WALLET"
|
|
807
|
-
}
|
|
808
|
-
}], [{
|
|
809
|
-
name: "{{user1}}",
|
|
810
|
-
content: { text: "Swap 1 SOL to USDC on Solana with a dry run first" }
|
|
811
|
-
}, {
|
|
812
|
-
name: "{{agent}}",
|
|
813
|
-
content: {
|
|
814
|
-
text: "Preparing a Solana swap dry run.",
|
|
815
|
-
action: "WALLET"
|
|
816
|
-
}
|
|
817
|
-
}]]
|
|
818
|
-
};
|
|
819
|
-
//#endregion
|
|
820
|
-
export { walletRouterAction as default, walletRouterAction };
|