web3-agent-kit 1.18.2__tar.gz → 1.18.4__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.
- {web3_agent_kit-1.18.2/web3_agent_kit.egg-info → web3_agent_kit-1.18.4}/PKG-INFO +1 -1
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/pyproject.toml +1 -1
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_p0_probe_packaging.py +146 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/__init__.py +1 -1
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/main.py +1 -1
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/__init__.py +21 -2
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/check_signing_surface.py +14 -1
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4/web3_agent_kit.egg-info}/PKG-INFO +1 -1
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/LICENSE +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/README.md +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/setup.cfg +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_agent_core_extra.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_aggregator.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_airdrop.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_airdrop_executor_cli.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_airdrop_new_modules.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_airdrop_sched_dash.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_api.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_api_models.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_api_routes.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_auto_compound.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_bridge.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_check_signing_surface.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_cli.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_core.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_core_modules.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_dca_bot.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_defi.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_defi_extended.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_enforced_module_gates.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_execution_intent.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_execution_policy.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_executor.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_fuzz.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_gas.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_integration.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_llm.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_messaging_events_gov.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_mev.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_multi_wallet.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_new_features.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_nft.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_notifications.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_oracle.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_p0_hardening.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_platforms.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_plugins.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_portfolio_tracker.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_pre_sign_interceptor.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_restaking.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_security.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_simulator.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_sniper.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_solana_client.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_solana_dex.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_solana_lp.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_solana_nft.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_solana_wallet.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_trading_bridge_extra.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_uniswap_v3.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_wallet_enforcement.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_wallet_extra.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_watcher_extra.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/tests/test_yield_optimizer.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/account_abstraction/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/agent/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/agent/core.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/agent/llm.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/base.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/dashboard.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/discovery.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/base_executor.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/browser.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/captcha_solver.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/cli.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/galxe_exec.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/gleam_exec.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/intract_exec.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/layer3_exec.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/plugin_registry.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/port3_exec.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/questn.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/social_exec.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/taskon.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/zealy_exec.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/faucet.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/form_filler.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/galxe.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/gleam.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/multi_wallet.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/onchain.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/referral.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/scheduler.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/social.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/tracker.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/wl_grinder.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/zealy.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/models.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/approval.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/bridge.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/dca.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/gas.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/portfolio.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/swap.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/wallet.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/watcher.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/api/routes/yield_opt.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/bridge/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/bridge/bridge.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/chains/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/chains/chain.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/__main__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/commands/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/commands/agent.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/commands/doctor.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/commands/examples.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/commands/gas.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/commands/info.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/commands/token.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/cli/commands/wallet.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/defi/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/defi/aggregator.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/defi/auto_compound.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/defi/uniswap_v3.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/defi/yield_optimizer.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/events/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/authorization.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/envelope.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/errors.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/intent.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/interceptor.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/p0_probe.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/policy.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/gas/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/gas/optimizer.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/governance/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/messaging/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/mev/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/mev/frontrun_detection.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/mev/mev_strategy.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/mev/sandwich_protection.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/mev/utils.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/nft/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/nft/manager.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/nft/marketplace.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/nft/mint.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/nft/utils.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/nft/whitelist.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/notifications/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/notifications/discord.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/notifications/email_notifier.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/notifications/notifier.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/notifications/telegram.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/notifications/utils.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/oracle/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/examples/gas_tracker.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/restaking/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/restaking/eigenlayer.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/restaking/monitor.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/restaking/optimizer.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/restaking/protocols.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/portfolio/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/portfolio/tracker.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/py.typed +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/security/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/simulator/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/solana/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/solana/client.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/solana/dex.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/solana/lp.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/solana/nft.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/solana/wallet.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/trading/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/trading/dca.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/trading/sniper.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/utils/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/utils/notif_discord.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/utils/notif_email_notifier.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/utils/notif_notifier.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/utils/notif_telegram.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/utils/notif_utils.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/utils/prices.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/wallet/__init__.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/wallet/approval.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/wallet/multi_wallet.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/wallet/wallet.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/wallet/watcher.py +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit.egg-info/SOURCES.txt +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit.egg-info/dependency_links.txt +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit.egg-info/entry_points.txt +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit.egg-info/requires.txt +0 -0
- {web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "web3-agent-kit"
|
|
7
|
-
version = "1.18.
|
|
7
|
+
version = "1.18.4"
|
|
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"}
|
|
@@ -147,6 +147,80 @@ def test_built_wheel_contains_the_probe(tmp_path: Path) -> None:
|
|
|
147
147
|
)
|
|
148
148
|
|
|
149
149
|
|
|
150
|
+
def test_module_invocation_emits_no_warnings() -> None:
|
|
151
|
+
"""`python -m` must be clean.
|
|
152
|
+
|
|
153
|
+
An eager `from .p0_probe import run_all_probes` in
|
|
154
|
+
`web3_agent_kit.execution.__init__` places the module in sys.modules before
|
|
155
|
+
runpy executes it, and runpy then warns about unpredictable behaviour. The
|
|
156
|
+
exit code and results were always correct, which is why only the module
|
|
157
|
+
form showed it -- the console entry point never goes through runpy.
|
|
158
|
+
|
|
159
|
+
Asserting on stderr, not just the exit code: the bug was a warning, so a
|
|
160
|
+
pass/fail-only check would not have caught it.
|
|
161
|
+
"""
|
|
162
|
+
proc = subprocess.run(
|
|
163
|
+
[sys.executable, "-m", "web3_agent_kit.execution.p0_probe", "--json"],
|
|
164
|
+
capture_output=True,
|
|
165
|
+
text=True,
|
|
166
|
+
cwd="/tmp", # outside the repo: only the installed package resolves
|
|
167
|
+
)
|
|
168
|
+
assert proc.returncode == 0, proc.stderr
|
|
169
|
+
assert "RuntimeWarning" not in proc.stderr, proc.stderr
|
|
170
|
+
assert proc.stderr.strip() == "", f"unexpected stderr: {proc.stderr!r}"
|
|
171
|
+
assert '"results"' in proc.stdout
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def test_checker_module_invocation_emits_no_warnings() -> None:
|
|
175
|
+
"""Same stderr assertion as the probe test.
|
|
176
|
+
|
|
177
|
+
This test previously checked exit 0 and the absence of RuntimeWarning but
|
|
178
|
+
not that stderr was empty, so a different warning would have passed. The
|
|
179
|
+
probe test had the stronger assertion; the two are now consistent.
|
|
180
|
+
"""
|
|
181
|
+
proc = subprocess.run(
|
|
182
|
+
[sys.executable, "-m", "web3_agent_kit.execution.check_signing_surface"],
|
|
183
|
+
capture_output=True,
|
|
184
|
+
text=True,
|
|
185
|
+
cwd="/tmp",
|
|
186
|
+
)
|
|
187
|
+
assert proc.returncode == 0, proc.stderr
|
|
188
|
+
assert "RuntimeWarning" not in proc.stderr, proc.stderr
|
|
189
|
+
assert proc.stderr.strip() == "", f"unexpected stderr: {proc.stderr!r}"
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def test_lazy_export_still_resolves() -> None:
|
|
193
|
+
"""The lazy wrapper must behave like the module-level function."""
|
|
194
|
+
from web3_agent_kit.execution import run_all_probes
|
|
195
|
+
from web3_agent_kit.execution.p0_probe import run_all_probes as direct
|
|
196
|
+
|
|
197
|
+
assert {r["id"] for r in run_all_probes()} == {r["id"] for r in direct()}
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def test_execution_package_does_not_import_probe_eagerly() -> None:
|
|
201
|
+
"""Importing the package must not pull in the probe.
|
|
202
|
+
|
|
203
|
+
This is the property that keeps `python -m` clean. Checked in a subprocess
|
|
204
|
+
so an already-imported module in this process cannot mask it.
|
|
205
|
+
"""
|
|
206
|
+
proc = subprocess.run(
|
|
207
|
+
[
|
|
208
|
+
sys.executable,
|
|
209
|
+
"-c",
|
|
210
|
+
"import web3_agent_kit.execution as e; "
|
|
211
|
+
"import sys; "
|
|
212
|
+
"print('web3_agent_kit.execution.p0_probe' in sys.modules)",
|
|
213
|
+
],
|
|
214
|
+
capture_output=True,
|
|
215
|
+
text=True,
|
|
216
|
+
cwd="/tmp",
|
|
217
|
+
)
|
|
218
|
+
assert proc.stdout.strip() == "False", (
|
|
219
|
+
"importing the execution package eagerly imported p0_probe; "
|
|
220
|
+
"`python -m web3_agent_kit.execution.p0_probe` will warn again"
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
|
|
150
224
|
def test_probe_exit_code_treats_unknown_as_not_a_pass() -> None:
|
|
151
225
|
"""A probe that cannot evaluate must not report success.
|
|
152
226
|
|
|
@@ -166,3 +240,75 @@ def test_probe_exit_code_treats_unknown_as_not_a_pass() -> None:
|
|
|
166
240
|
assert p0_probe.main(["--json"]) == 2
|
|
167
241
|
finally:
|
|
168
242
|
p0_probe.run_all_probes = original
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
# ---------------------------------------------------------------------------
|
|
246
|
+
# Excluded-ancestor regression
|
|
247
|
+
#
|
|
248
|
+
# `_is_excluded` tests path components against EXCLUDED_DIR_PARTS, which
|
|
249
|
+
# includes "venv" and ".venv". Applied to an absolute path, any ancestor with
|
|
250
|
+
# one of those names excluded the whole scan: the checker reported zero signer
|
|
251
|
+
# calls and exited 0 while an unapproved call sat in the tree. The same code
|
|
252
|
+
# under a neutrally named ancestor was detected correctly.
|
|
253
|
+
#
|
|
254
|
+
# This was a false negative, not a missing feature. The most likely way to hit
|
|
255
|
+
# it is running the checker from inside a virtualenv, which is the normal way
|
|
256
|
+
# to run it.
|
|
257
|
+
# ---------------------------------------------------------------------------
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
@pytest.mark.parametrize("ancestor", ["neutral", "venv", ".venv", "build", "dist"])
|
|
261
|
+
def test_checker_detects_an_unapproved_call_under_any_ancestor_name(
|
|
262
|
+
tmp_path: Path, ancestor: str
|
|
263
|
+
) -> None:
|
|
264
|
+
"""An excluded directory *above* the scan root must not suppress the scan."""
|
|
265
|
+
from web3_agent_kit.execution.check_signing_surface import main
|
|
266
|
+
|
|
267
|
+
root = tmp_path / ancestor / "web3_agent_kit"
|
|
268
|
+
root.mkdir(parents=True)
|
|
269
|
+
(root / "unexpected.py").write_text(
|
|
270
|
+
"def send(account, tx):\n return account.sign_transaction(tx)\n"
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
assert main(["--root", str(root)]) == 1, (
|
|
274
|
+
f"a scan rooted under a directory named {ancestor!r} exited 0 while "
|
|
275
|
+
"an unapproved signer call was present"
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
@pytest.mark.parametrize("nested", [".venv", "venv", "__pycache__", "node_modules"])
|
|
280
|
+
def test_checker_still_excludes_nested_environment_directories(
|
|
281
|
+
tmp_path: Path, nested: str
|
|
282
|
+
) -> None:
|
|
283
|
+
"""Exclusions *inside* the scan root must keep working.
|
|
284
|
+
|
|
285
|
+
The fix scopes exclusion to the path relative to the root. A nested
|
|
286
|
+
environment directory still appears in that relative path, so it stays
|
|
287
|
+
excluded -- otherwise vendored copies of libraries would be reported as
|
|
288
|
+
violations.
|
|
289
|
+
"""
|
|
290
|
+
from web3_agent_kit.execution.check_signing_surface import main
|
|
291
|
+
|
|
292
|
+
root = tmp_path / "web3_agent_kit"
|
|
293
|
+
inner = root / nested
|
|
294
|
+
inner.mkdir(parents=True)
|
|
295
|
+
(inner / "ignored.py").write_text("account.sign_transaction(tx)\n")
|
|
296
|
+
|
|
297
|
+
assert main(["--root", str(root)]) == 0, (
|
|
298
|
+
f"{nested!r} inside the scan root should still be excluded"
|
|
299
|
+
)
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
def test_checker_detects_a_call_beside_a_nested_exclusion(tmp_path: Path) -> None:
|
|
303
|
+
"""Both properties at once: nested excluded, real violation reported."""
|
|
304
|
+
from web3_agent_kit.execution.check_signing_surface import main
|
|
305
|
+
|
|
306
|
+
root = tmp_path / "venv" / "web3_agent_kit"
|
|
307
|
+
inner = root / "node_modules"
|
|
308
|
+
inner.mkdir(parents=True)
|
|
309
|
+
(inner / "vendored.py").write_text("account.sign_transaction(tx)\n")
|
|
310
|
+
(root / "unexpected.py").write_text(
|
|
311
|
+
"def send(account, tx):\n return account.sign_transaction(tx)\n"
|
|
312
|
+
)
|
|
313
|
+
|
|
314
|
+
assert main(["--root", str(root)]) == 1
|
|
@@ -26,7 +26,6 @@ from .errors import (
|
|
|
26
26
|
UnsupportedChainError,
|
|
27
27
|
)
|
|
28
28
|
from .intent import ActionType, TransactionIntent
|
|
29
|
-
from .p0_probe import run_all_probes
|
|
30
29
|
from .interceptor import (
|
|
31
30
|
AuditEntry,
|
|
32
31
|
AuthorizationRequest,
|
|
@@ -48,7 +47,6 @@ from .policy import (
|
|
|
48
47
|
|
|
49
48
|
__all__ = [
|
|
50
49
|
"CALL_ENVELOPE_SCHEMA",
|
|
51
|
-
"run_all_probes",
|
|
52
50
|
"POLICY_DECISION_SCHEMA",
|
|
53
51
|
"ActionType",
|
|
54
52
|
"AuditEntry",
|
|
@@ -83,4 +81,25 @@ __all__ = [
|
|
|
83
81
|
"UnapprovedSignerError",
|
|
84
82
|
"UnsupportedActionError",
|
|
85
83
|
"UnsupportedChainError",
|
|
84
|
+
"run_all_probes",
|
|
86
85
|
]
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def run_all_probes():
|
|
89
|
+
"""Run the P0 enforcement probes and return their results.
|
|
90
|
+
|
|
91
|
+
Imported lazily. ``web3_agent_kit.execution`` must not import
|
|
92
|
+
``p0_probe`` at package-import time: doing so places the module in
|
|
93
|
+
``sys.modules`` before ``runpy`` executes it, so
|
|
94
|
+
``python -m web3_agent_kit.execution.p0_probe`` emits a RuntimeWarning
|
|
95
|
+
about unpredictable behaviour. The warning is cosmetic and the exit code
|
|
96
|
+
was always correct, but the documented invocation should be clean.
|
|
97
|
+
|
|
98
|
+
The console entry point (``wak-p0-probe``) was unaffected because it never
|
|
99
|
+
went through ``runpy`` -- which is exactly why the warning survived a test
|
|
100
|
+
suite that only exercised the entry point.
|
|
101
|
+
"""
|
|
102
|
+
from .p0_probe import run_all_probes as _run
|
|
103
|
+
|
|
104
|
+
return _run()
|
|
105
|
+
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/execution/check_signing_surface.py
RENAMED
|
@@ -170,7 +170,20 @@ def find_signer_calls(root: Path) -> list[SignerCall]:
|
|
|
170
170
|
"""
|
|
171
171
|
found: list[SignerCall] = []
|
|
172
172
|
for path in sorted(root.rglob("*.py")):
|
|
173
|
-
|
|
173
|
+
# Exclusions are relative to the scan root, not to the absolute path.
|
|
174
|
+
#
|
|
175
|
+
# `_is_excluded` tests every path component against EXCLUDED_DIR_PARTS,
|
|
176
|
+
# which contains "venv" and ".venv". Evaluating it on the absolute path
|
|
177
|
+
# meant any ancestor named venv excluded the entire scan: an installed
|
|
178
|
+
# package under site-packages/venv/lib/... reported zero signer calls
|
|
179
|
+
# and exited 0, while the same code under a neutrally named ancestor
|
|
180
|
+
# reported the real count. A check that silently reports nothing when
|
|
181
|
+
# run from a virtualenv is worse than no check, because it produces a
|
|
182
|
+
# passing result for the one invocation most people use.
|
|
183
|
+
#
|
|
184
|
+
# Nested environment directories inside the scanned root stay excluded,
|
|
185
|
+
# since those components survive the relative_to() reduction.
|
|
186
|
+
if _is_excluded(path.relative_to(root)):
|
|
174
187
|
continue
|
|
175
188
|
relative = _report_path(path, root)
|
|
176
189
|
try:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/account_abstraction/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/base_executor.py
RENAMED
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/captcha_solver.py
RENAMED
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/galxe_exec.py
RENAMED
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/gleam_exec.py
RENAMED
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/intract_exec.py
RENAMED
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/layer3_exec.py
RENAMED
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/plugin_registry.py
RENAMED
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/port3_exec.py
RENAMED
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/social_exec.py
RENAMED
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/airdrop/executor/zealy_exec.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/notifications/email_notifier.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/examples/gas_tracker.py
RENAMED
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/restaking/__init__.py
RENAMED
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/restaking/eigenlayer.py
RENAMED
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/restaking/optimizer.py
RENAMED
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/plugins/restaking/protocols.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit/utils/notif_email_notifier.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{web3_agent_kit-1.18.2 → web3_agent_kit-1.18.4}/web3_agent_kit.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|