web3-agent-kit 1.18.0__tar.gz → 1.18.2__tar.gz

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.
Files changed (200) hide show
  1. {web3_agent_kit-1.18.0/web3_agent_kit.egg-info → web3_agent_kit-1.18.2}/PKG-INFO +2 -1
  2. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/pyproject.toml +5 -1
  3. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_check_signing_surface.py +5 -13
  4. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_cli.py +37 -1
  5. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_enforced_module_gates.py +48 -8
  6. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_messaging_events_gov.py +34 -4
  7. web3_agent_kit-1.18.2/tests/test_p0_hardening.py +541 -0
  8. web3_agent_kit-1.18.2/tests/test_p0_probe_packaging.py +168 -0
  9. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_pre_sign_interceptor.py +114 -7
  10. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_wallet_enforcement.py +30 -2
  11. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_wallet_extra.py +81 -9
  12. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/__init__.py +1 -1
  13. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/onchain.py +36 -6
  14. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/main.py +1 -1
  15. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/execution/__init__.py +28 -1
  16. web3_agent_kit-1.18.2/web3_agent_kit/execution/authorization.py +196 -0
  17. web3_agent_kit-1.18.2/web3_agent_kit/execution/check_signing_surface.py +353 -0
  18. web3_agent_kit-1.18.2/web3_agent_kit/execution/envelope.py +369 -0
  19. web3_agent_kit-1.18.2/web3_agent_kit/execution/interceptor.py +653 -0
  20. web3_agent_kit-1.18.2/web3_agent_kit/execution/p0_probe.py +390 -0
  21. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/governance/__init__.py +32 -13
  22. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/messaging/__init__.py +12 -6
  23. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/wallet/wallet.py +17 -13
  24. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2/web3_agent_kit.egg-info}/PKG-INFO +2 -1
  25. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit.egg-info/SOURCES.txt +6 -0
  26. web3_agent_kit-1.18.2/web3_agent_kit.egg-info/entry_points.txt +4 -0
  27. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit.egg-info/requires.txt +3 -0
  28. web3_agent_kit-1.18.0/web3_agent_kit/execution/interceptor.py +0 -349
  29. web3_agent_kit-1.18.0/web3_agent_kit.egg-info/entry_points.txt +0 -2
  30. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/LICENSE +0 -0
  31. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/README.md +0 -0
  32. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/setup.cfg +0 -0
  33. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_agent_core_extra.py +0 -0
  34. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_aggregator.py +0 -0
  35. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_airdrop.py +0 -0
  36. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_airdrop_executor_cli.py +0 -0
  37. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_airdrop_new_modules.py +0 -0
  38. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_airdrop_sched_dash.py +0 -0
  39. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_api.py +0 -0
  40. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_api_models.py +0 -0
  41. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_api_routes.py +0 -0
  42. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_auto_compound.py +0 -0
  43. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_bridge.py +0 -0
  44. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_core.py +0 -0
  45. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_core_modules.py +0 -0
  46. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_dca_bot.py +0 -0
  47. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_defi.py +0 -0
  48. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_defi_extended.py +0 -0
  49. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_execution_intent.py +0 -0
  50. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_execution_policy.py +0 -0
  51. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_executor.py +0 -0
  52. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_fuzz.py +0 -0
  53. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_gas.py +0 -0
  54. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_integration.py +0 -0
  55. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_llm.py +0 -0
  56. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_mev.py +0 -0
  57. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_multi_wallet.py +0 -0
  58. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_new_features.py +0 -0
  59. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_nft.py +0 -0
  60. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_notifications.py +0 -0
  61. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_oracle.py +0 -0
  62. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_platforms.py +0 -0
  63. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_plugins.py +0 -0
  64. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_portfolio_tracker.py +0 -0
  65. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_restaking.py +0 -0
  66. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_security.py +0 -0
  67. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_simulator.py +0 -0
  68. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_sniper.py +0 -0
  69. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_solana_client.py +0 -0
  70. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_solana_dex.py +0 -0
  71. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_solana_lp.py +0 -0
  72. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_solana_nft.py +0 -0
  73. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_solana_wallet.py +0 -0
  74. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_trading_bridge_extra.py +0 -0
  75. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_uniswap_v3.py +0 -0
  76. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_watcher_extra.py +0 -0
  77. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/tests/test_yield_optimizer.py +0 -0
  78. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/account_abstraction/__init__.py +0 -0
  79. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/agent/__init__.py +0 -0
  80. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/agent/core.py +0 -0
  81. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/agent/llm.py +0 -0
  82. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/__init__.py +0 -0
  83. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/base.py +0 -0
  84. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/dashboard.py +0 -0
  85. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/discovery.py +0 -0
  86. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/__init__.py +0 -0
  87. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/base_executor.py +0 -0
  88. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/browser.py +0 -0
  89. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/captcha_solver.py +0 -0
  90. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/cli.py +0 -0
  91. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/galxe_exec.py +0 -0
  92. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/gleam_exec.py +0 -0
  93. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/intract_exec.py +0 -0
  94. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/layer3_exec.py +0 -0
  95. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/plugin_registry.py +0 -0
  96. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/port3_exec.py +0 -0
  97. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/questn.py +0 -0
  98. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/social_exec.py +0 -0
  99. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/taskon.py +0 -0
  100. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/executor/zealy_exec.py +0 -0
  101. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/faucet.py +0 -0
  102. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/form_filler.py +0 -0
  103. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/galxe.py +0 -0
  104. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/gleam.py +0 -0
  105. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/multi_wallet.py +0 -0
  106. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/referral.py +0 -0
  107. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/scheduler.py +0 -0
  108. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/social.py +0 -0
  109. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/tracker.py +0 -0
  110. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/wl_grinder.py +0 -0
  111. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/airdrop/zealy.py +0 -0
  112. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/__init__.py +0 -0
  113. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/models.py +0 -0
  114. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/__init__.py +0 -0
  115. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/approval.py +0 -0
  116. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/bridge.py +0 -0
  117. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/dca.py +0 -0
  118. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/gas.py +0 -0
  119. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/portfolio.py +0 -0
  120. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/swap.py +0 -0
  121. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/wallet.py +0 -0
  122. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/watcher.py +0 -0
  123. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/api/routes/yield_opt.py +0 -0
  124. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/bridge/__init__.py +0 -0
  125. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/bridge/bridge.py +0 -0
  126. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/chains/__init__.py +0 -0
  127. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/chains/chain.py +0 -0
  128. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/__init__.py +0 -0
  129. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/__main__.py +0 -0
  130. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/commands/__init__.py +0 -0
  131. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/commands/agent.py +0 -0
  132. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/commands/doctor.py +0 -0
  133. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/commands/examples.py +0 -0
  134. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/commands/gas.py +0 -0
  135. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/commands/info.py +0 -0
  136. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/commands/token.py +0 -0
  137. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/cli/commands/wallet.py +0 -0
  138. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/defi/__init__.py +0 -0
  139. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/defi/aggregator.py +0 -0
  140. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/defi/auto_compound.py +0 -0
  141. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/defi/uniswap_v3.py +0 -0
  142. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/defi/yield_optimizer.py +0 -0
  143. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/events/__init__.py +0 -0
  144. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/execution/errors.py +0 -0
  145. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/execution/intent.py +0 -0
  146. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/execution/policy.py +0 -0
  147. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/gas/__init__.py +0 -0
  148. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/gas/optimizer.py +0 -0
  149. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/mev/__init__.py +0 -0
  150. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/mev/frontrun_detection.py +0 -0
  151. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/mev/mev_strategy.py +0 -0
  152. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/mev/sandwich_protection.py +0 -0
  153. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/mev/utils.py +0 -0
  154. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/nft/__init__.py +0 -0
  155. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/nft/manager.py +0 -0
  156. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/nft/marketplace.py +0 -0
  157. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/nft/mint.py +0 -0
  158. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/nft/utils.py +0 -0
  159. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/nft/whitelist.py +0 -0
  160. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/notifications/__init__.py +0 -0
  161. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/notifications/discord.py +0 -0
  162. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/notifications/email_notifier.py +0 -0
  163. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/notifications/notifier.py +0 -0
  164. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/notifications/telegram.py +0 -0
  165. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/notifications/utils.py +0 -0
  166. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/oracle/__init__.py +0 -0
  167. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/plugins/__init__.py +0 -0
  168. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/plugins/examples/gas_tracker.py +0 -0
  169. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/plugins/restaking/__init__.py +0 -0
  170. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/plugins/restaking/eigenlayer.py +0 -0
  171. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/plugins/restaking/monitor.py +0 -0
  172. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/plugins/restaking/optimizer.py +0 -0
  173. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/plugins/restaking/protocols.py +0 -0
  174. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/portfolio/__init__.py +0 -0
  175. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/portfolio/tracker.py +0 -0
  176. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/py.typed +0 -0
  177. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/security/__init__.py +0 -0
  178. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/simulator/__init__.py +0 -0
  179. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/solana/__init__.py +0 -0
  180. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/solana/client.py +0 -0
  181. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/solana/dex.py +0 -0
  182. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/solana/lp.py +0 -0
  183. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/solana/nft.py +0 -0
  184. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/solana/wallet.py +0 -0
  185. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/trading/__init__.py +0 -0
  186. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/trading/dca.py +0 -0
  187. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/trading/sniper.py +0 -0
  188. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/utils/__init__.py +0 -0
  189. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/utils/notif_discord.py +0 -0
  190. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/utils/notif_email_notifier.py +0 -0
  191. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/utils/notif_notifier.py +0 -0
  192. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/utils/notif_telegram.py +0 -0
  193. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/utils/notif_utils.py +0 -0
  194. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/utils/prices.py +0 -0
  195. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/wallet/__init__.py +0 -0
  196. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/wallet/approval.py +0 -0
  197. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/wallet/multi_wallet.py +0 -0
  198. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit/wallet/watcher.py +0 -0
  199. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit.egg-info/dependency_links.txt +0 -0
  200. {web3_agent_kit-1.18.0 → web3_agent_kit-1.18.2}/web3_agent_kit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: web3-agent-kit
3
- Version: 1.18.0
3
+ Version: 1.18.2
4
4
  Summary: Open-source framework for building autonomous AI agents that interact with blockchain networks
5
5
  Author-email: Maulana <khasbim240803@gmail.com>
6
6
  License: MIT
@@ -34,6 +34,7 @@ Requires-Dist: pytest-cov>=4.0; extra == "dev"
34
34
  Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
35
35
  Requires-Dist: hypothesis>=6.0; extra == "dev"
36
36
  Requires-Dist: ruff>=0.1.0; extra == "dev"
37
+ Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "dev"
37
38
  Provides-Extra: solana
38
39
  Requires-Dist: solders>=0.21.0; extra == "solana"
39
40
  Requires-Dist: solana>=0.35.0; extra == "solana"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "web3-agent-kit"
7
- version = "1.18.0"
7
+ version = "1.18.2"
8
8
  description = "Open-source framework for building autonomous AI agents that interact with blockchain networks"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -35,6 +35,8 @@ dependencies = [
35
35
  ]
36
36
  [project.scripts]
37
37
  wak = "web3_agent_kit.cli:main"
38
+ wak-p0-probe = "web3_agent_kit.execution.p0_probe:main"
39
+ wak-signing-surface = "web3_agent_kit.execution.check_signing_surface:main"
38
40
 
39
41
 
40
42
  [project.optional-dependencies]
@@ -44,6 +46,8 @@ dev = [
44
46
  "pytest-asyncio>=0.23.0",
45
47
  "hypothesis>=6.0",
46
48
  "ruff>=0.1.0",
49
+ # tomllib is stdlib from 3.11. Packaging tests parse pyproject.toml.
50
+ "tomli>=2.0; python_version < '3.11'",
47
51
  ]
48
52
  solana = [
49
53
  "solders>=0.21.0",
@@ -6,7 +6,6 @@ tests pin its detection behaviour and its fail-closed exit codes.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- import importlib.util
10
9
  import subprocess
11
10
  import sys
12
11
  import textwrap
@@ -15,19 +14,12 @@ from pathlib import Path
15
14
  import pytest
16
15
 
17
16
  REPO_ROOT = Path(__file__).resolve().parents[1]
18
- TOOL_PATH = REPO_ROOT / "tools" / "check_signing_surface.py"
17
+ # The check lives in the package so it ships in the wheel. tools/ keeps a thin
18
+ # wrapper for the source-checkout workflow, covered by
19
+ # test_p0_probe_packaging.py.
20
+ TOOL_PATH = REPO_ROOT / "web3_agent_kit" / "execution" / "check_signing_surface.py"
19
21
 
20
-
21
- def _load_tool():
22
- spec = importlib.util.spec_from_file_location("check_signing_surface", TOOL_PATH)
23
- assert spec and spec.loader
24
- module = importlib.util.module_from_spec(spec)
25
- sys.modules[spec.name] = module
26
- spec.loader.exec_module(module)
27
- return module
28
-
29
-
30
- tool = _load_tool()
22
+ from web3_agent_kit.execution import check_signing_surface as tool # noqa: E402
31
23
 
32
24
 
33
25
  def _write(package: Path, relative: str, source: str) -> None:
@@ -39,9 +39,45 @@ class TestMainGroup:
39
39
  assert "WAK" in result.output
40
40
 
41
41
  def test_version(self):
42
+ """The CLI must report the version the package actually declares.
43
+
44
+ Asserting a literal version string here means every release breaks this
45
+ test, and the failure says nothing about whether the CLI is wrong.
46
+ Compare against the package's own __version__ instead, so this catches
47
+ a CLI pin that has drifted from the package -- which is the real bug
48
+ it is here to prevent.
49
+ """
50
+ from web3_agent_kit import __version__
51
+
42
52
  result = runner.invoke(main, ["--version"])
43
53
  assert result.exit_code == 0
44
- assert "1.16.2" in result.output
54
+ assert __version__ in result.output
55
+
56
+ def test_cli_version_matches_package_metadata(self):
57
+ """pyproject.toml, __version__ and the CLI option must all agree."""
58
+ import re
59
+ from pathlib import Path
60
+
61
+ from web3_agent_kit import __version__
62
+
63
+ pyproject = Path(__file__).resolve().parents[1] / "pyproject.toml"
64
+ declared = re.search(
65
+ r'^version\s*=\s*"([^"]+)"', pyproject.read_text(), re.MULTILINE
66
+ ).group(1)
67
+ cli_source = (
68
+ Path(__file__).resolve().parents[1]
69
+ / "web3_agent_kit"
70
+ / "cli"
71
+ / "main.py"
72
+ ).read_text()
73
+ pinned = re.search(r'version_option\(version="([^"]+)"', cli_source).group(1)
74
+
75
+ assert declared == __version__, (
76
+ f"pyproject says {declared}, package says {__version__}"
77
+ )
78
+ assert pinned == __version__, (
79
+ f"CLI is pinned to {pinned}, package is {__version__}"
80
+ )
45
81
 
46
82
  def test_subcommands_registered(self):
47
83
  result = runner.invoke(main, ["--help"])
@@ -14,10 +14,36 @@ import pytest
14
14
  from web3_agent_kit.chains import Chain
15
15
  from web3_agent_kit.execution import (
16
16
  ActionType,
17
+ AuthorizationEvidence,
17
18
  EnforcementDenied,
18
19
  ExecutionPolicy,
19
20
  PreSignInterceptor,
20
21
  )
22
+ from web3_agent_kit.execution.envelope import CallEnvelopeV1
23
+
24
+
25
+ class _AllowingProvider:
26
+ """Verifier that authorizes exactly the call it is handed.
27
+
28
+ All three migrated modules now require principal exact-call authorization
29
+ on top of a policy allow, so each signing test supplies this.
30
+ """
31
+
32
+ @property
33
+ def policy_id(self) -> str:
34
+ return "module-gate-test-provider"
35
+
36
+ def authorize(self, context):
37
+ return AuthorizationEvidence(
38
+ authorization_id="module-gate-test-auth",
39
+ envelope_digest=context.envelope_digest,
40
+ executor=context.envelope.executor,
41
+ authorizer="0x" + "99" * 20,
42
+ valid_from=0,
43
+ valid_until=2**31,
44
+ nonce="1",
45
+ policy_commitment_digest=context.policy_commitment.digest(),
46
+ )
21
47
  from web3_agent_kit.messaging import CrossChainMessenger
22
48
 
23
49
  # Address derived from TEST_KEY, so the "from" field matches the signer.
@@ -26,14 +52,20 @@ ENDPOINT = "0x7564105E977516C53bE337314c7E53838967bDaC"
26
52
  TEST_KEY = "0x" + "33" * 32
27
53
 
28
54
 
29
- def _tx(to: str = ENDPOINT, value: int = 0) -> dict:
55
+ def _tx(to: str = ENDPOINT, value: int = 0, chainId: int = 42161) -> dict:
56
+ """A fully constructed transaction.
57
+
58
+ ``chainId`` is explicit so each test states which chain it is signing on.
59
+ A transaction whose chainId disagrees with the chain the gate evaluated is
60
+ now refused, so an implicit default would hide the mismatch.
61
+ """
30
62
  return {
31
63
  "to": to,
32
64
  "from": SENDER,
33
65
  "data": "0xdeadbeef",
34
66
  "value": value,
35
67
  "nonce": 5,
36
- "chainId": 42161,
68
+ "chainId": chainId,
37
69
  "gas": 300_000,
38
70
  "gasPrice": 1_000_000_000,
39
71
  }
@@ -44,12 +76,13 @@ def _tx(to: str = ENDPOINT, value: int = 0) -> dict:
44
76
  # ---------------------------------------------------------------------------
45
77
 
46
78
 
47
- def _messenger(policy=None) -> CrossChainMessenger:
79
+ def _messenger(policy=None, provider=True) -> CrossChainMessenger:
48
80
  m = CrossChainMessenger(
49
81
  rpc_url="http://localhost:8545",
50
82
  src_chain="arbitrum",
51
83
  private_key=TEST_KEY,
52
84
  policy=policy,
85
+ authorization_provider=_AllowingProvider() if provider else None,
53
86
  )
54
87
  return m
55
88
 
@@ -100,8 +133,10 @@ def test_messaging_gate_signs_when_policy_allows():
100
133
  )
101
134
  m = _messenger(policy=policy)
102
135
  gate = m._gate()
103
-
104
- raw = gate.sign(_authorization_request()).raw_transaction
136
+ request = _authorization_request()
137
+ # The request's chain and the transaction's chainId must agree; the
138
+ # fixture's chainId is 42161, so the request is built on Arbitrum.
139
+ raw = gate.sign(request).raw_transaction
105
140
 
106
141
  assert isinstance(raw, bytes)
107
142
  assert len(raw) > 0
@@ -157,8 +192,11 @@ def test_messaging_resolves_known_and_unknown_chains():
157
192
  def _farmer(policy=None):
158
193
  from web3_agent_kit.airdrop.onchain import OnChainAirdropFarmer, OnChainConfig
159
194
 
160
- farmer = OnChainAirdropFarmer(OnChainConfig(chain="ethereum", dry_run=True))
161
- farmer._policy = policy
195
+ farmer = OnChainAirdropFarmer(
196
+ OnChainConfig(chain="ethereum", dry_run=True),
197
+ policy=policy,
198
+ authorization_provider=_AllowingProvider(),
199
+ )
162
200
  farmer._web3 = MagicMock()
163
201
  farmer._account = MagicMock()
164
202
  farmer._account.address = "0x" + "ac" * 20
@@ -201,7 +239,9 @@ def test_airdrop_gate_signs_when_policy_allows():
201
239
  receipt.transactionHash.hex.return_value = "0xairdrop"
202
240
  f._web3.eth.wait_for_transaction_receipt.return_value = receipt
203
241
 
204
- result = f._send_transaction(_tx(to="0x" + "dd" * 20))
242
+ result = f._send_transaction(
243
+ _tx(to="0x" + "dd" * 20, chainId=1)
244
+ )
205
245
 
206
246
  assert result == "0xairdrop"
207
247
  f._web3.eth.send_raw_transaction.assert_called_once_with(b"raw-bytes")
@@ -10,6 +10,7 @@ import pytest
10
10
  from web3_agent_kit.chains import Chain
11
11
  from web3_agent_kit.execution import (
12
12
  ActionType,
13
+ AuthorizationEvidence,
13
14
  EnforcementDenied,
14
15
  ExecutionPolicy,
15
16
  )
@@ -388,15 +389,41 @@ class TestEvents:
388
389
  assert sub.events_processed == 0
389
390
 
390
391
 
391
- # ----------------------------------------------------------------------------
392
+ # ---------------------------------------------------------------------------
392
393
  # Governance
393
- # ----------------------------------------------------------------------------
394
+ # ---------------------------------------------------------------------------
395
+ class _GovernanceProvider:
396
+ """Verifier that authorizes the exact call it is handed.
397
+
398
+ The gate requires principal exact-call authorization in addition to a
399
+ policy allow, so governance signing tests need a verifier that returns
400
+ evidence bound to the call under test.
401
+ """
402
+
403
+ @property
404
+ def policy_id(self) -> str:
405
+ return "gov-test-provider"
406
+
407
+ def authorize(self, context):
408
+ return AuthorizationEvidence(
409
+ authorization_id="gov-test-auth",
410
+ envelope_digest=context.envelope_digest,
411
+ executor=context.envelope.executor,
412
+ authorizer="0x" + "99" * 20,
413
+ valid_from=0,
414
+ valid_until=2**31,
415
+ nonce="1",
416
+ policy_commitment_digest=context.policy_commitment.digest(),
417
+ )
418
+
419
+
394
420
  class TestGovernance:
395
421
  def _tracker(self):
396
422
  with patch("web3.Web3"):
397
423
  t = GovernanceTracker(rpc_url="https://x")
398
424
  t.w3 = MagicMock()
399
425
  t.w3.to_checksum_address.side_effect = lambda a: a
426
+ t._authorization_provider = _GovernanceProvider()
400
427
  return t
401
428
 
402
429
  def test_proposal_to_dict(self):
@@ -544,7 +571,7 @@ class TestGovernance:
544
571
  "data": "0xdeadbeef",
545
572
  "value": 0,
546
573
  "nonce": 1,
547
- "chainId": 8453,
574
+ "chainId": 1,
548
575
  "gas": 200000,
549
576
  "gasPrice": 1_000_000_000,
550
577
  }
@@ -565,6 +592,9 @@ class TestGovernance:
565
592
  ),
566
593
  require_confirmation=False,
567
594
  )
595
+ # Policy allow is not authority: the gate also requires a principal
596
+ # exact-call authorization verifier.
597
+ t._authorization_provider = _GovernanceProvider()
568
598
 
569
599
  result = t.delegate(delegatee="0xdel", token="0xt", private_key="0xkey")
570
600
  assert result == "0xdelegatehash"
@@ -582,7 +612,7 @@ class TestGovernance:
582
612
  "data": "0xdeadbeef",
583
613
  "value": 0,
584
614
  "nonce": 1,
585
- "chainId": 8453,
615
+ "chainId": 1,
586
616
  "gas": 200000,
587
617
  "gasPrice": 1_000_000_000,
588
618
  }