intentkit 0.8.32.dev1__tar.gz → 0.8.33.dev1__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.
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/PKG-INFO +1 -1
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/__init__.py +1 -1
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/clients/__init__.py +7 -1
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/clients/cdp.py +27 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/lifi/base.py +2 -2
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/lifi/token_execute.py +126 -42
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/onchain.py +7 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/pyproject.toml +1 -1
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/.gitignore +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/LICENSE +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/LICENSE +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/MANIFEST.in +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/abstracts/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/abstracts/agent.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/abstracts/api.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/abstracts/engine.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/abstracts/graph.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/abstracts/skill.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/abstracts/twitter.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/clients/twitter.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/clients/web3.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/config/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/config/config.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/agent.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/api.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/asset.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/chat.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/client.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/credit.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/engine.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/node.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/prompt.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/scheduler.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/core/statistics.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/agent.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/agent_data.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/agent_public.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/agent_schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/app_setting.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/chat.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/conversation.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/credit.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/db.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/db_mig.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/llm.csv +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/llm.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/redis.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/skill.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/skills.csv +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/models/user.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/acolyt/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/acolyt/ask.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/acolyt/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/acolyt/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/aixbt/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/aixbt/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/aixbt/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/aixbt/projects.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/aixbt/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/allora/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/allora/allora.jpeg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/allora/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/allora/price.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/allora/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/basename/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/basename/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/basename/basename.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/basename/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/carv/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/carv/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/carv/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/carv/carv.webp +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/carv/fetch_news.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/carv/onchain_query.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/carv/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/casino/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/casino/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/casino/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/casino/casino.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/casino/deck_draw.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/casino/deck_shuffle.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/casino/dice_roll.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/casino/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/casino/utils.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cdp/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cdp/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cdp/cdp.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cdp/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/chainlist/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/chainlist/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/chainlist/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/chainlist/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/common/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/common/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/common/common.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/common/current_time.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/common/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/constants.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/api.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptopanic/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dapplooker/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dapplooker/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dapplooker/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/api.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/config/chains.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dexscreener/utils.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dune_analytics/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/elfa/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/elfa/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/elfa/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/elfa/mention.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/elfa/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/elfa/stats.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/elfa/tokens.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/elfa/utils.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/abi/approval.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/abi/route.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/best_yield.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/enso.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/networks.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/prices.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/route.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/tokens.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/enso/wallet.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/erc20/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/erc20/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/erc20/erc20.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/erc20/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/erc721/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/erc721/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/erc721/erc721.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/erc721/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/clear.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/query.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/firecrawl/utils.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/github/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/github/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/github/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/github/github.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/github/github_search.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/github/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/heurist.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/heurist/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/http/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/http/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/http/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/http/get.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/http/http.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/http/post.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/http/put.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/http/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/lifi/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/lifi/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/lifi/lifi.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/lifi/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/lifi/token_quote.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/lifi/utils.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/api.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/moralis.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/moralis/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/morpho/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/morpho/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/morpho/morpho.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/morpho/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/nation/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/nation/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/nation/nation.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/nation/nft_check.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/nation/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/dalle_image_generation.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/gpt_avatar_generator.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/gpt_image_generation.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/gpt_image_mini_generator.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/gpt_image_to_image.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/image_to_text.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/openai.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/openai/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/constants.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/moralis.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/pyth/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/pyth/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/pyth/pyth.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/pyth/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/skills.toml +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/slack/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/slack/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/slack/get_channel.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/slack/get_message.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/slack/schedule_message.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/slack/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/slack/send_message.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/slack/slack.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/delete_data.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/insert_data.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/supabase.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/update_data.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/superfluid/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/superfluid/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/superfluid/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/superfluid/superfluid.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/add_autonomous_task.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/delete_autonomous_task.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/edit_autonomous_task.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/list_autonomous_tasks.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/read_agent_api_key.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/regenerate_agent_api_key.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/system/system.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/tavily/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/tavily/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/tavily/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/tavily/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/constants.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/moralis.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/token_analytics.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/token_price.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/token/token_search.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/follow_user.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/retweet.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/twitter/twitter.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/unrealspeech/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_audio/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_audio/input.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_audio/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/api.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/config.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/utils.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/web_scraper/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/web_scraper/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/web_scraper/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/web_scraper/utils.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/weth/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/weth/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/weth/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/weth/weth.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/wow/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/wow/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/wow/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/wow/wow.svg +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/x402/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/x402/ask_agent.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/x402/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/x402/http_request.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/x402/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/x402/x402.webp +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/xmtp/README.md +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/xmtp/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/xmtp/base.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/xmtp/price.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/xmtp/schema.json +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/xmtp/swap.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/xmtp/transfer.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/xmtp/xmtp.png +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/__init__.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/chain.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/ens.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/error.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/logging.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/random.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/s3.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/schema.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/slack_alert.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/utils/tx.py +0 -0
- {intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.33.dev1
|
|
4
4
|
Summary: Intent-based AI Agent Platform - Core Package
|
|
5
5
|
Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
|
|
6
6
|
Project-URL: Repository, https://github.com/crestalnetwork/intentkit
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
from intentkit.clients.cdp import
|
|
1
|
+
from intentkit.clients.cdp import (
|
|
2
|
+
get_cdp_client,
|
|
3
|
+
get_cdp_network,
|
|
4
|
+
get_evm_account,
|
|
5
|
+
get_wallet_provider,
|
|
6
|
+
)
|
|
2
7
|
from intentkit.clients.twitter import (
|
|
3
8
|
TwitterClient,
|
|
4
9
|
TwitterClientConfig,
|
|
@@ -13,5 +18,6 @@ __all__ = [
|
|
|
13
18
|
"get_evm_account",
|
|
14
19
|
"get_cdp_client",
|
|
15
20
|
"get_wallet_provider",
|
|
21
|
+
"get_cdp_network",
|
|
16
22
|
"get_web3_client",
|
|
17
23
|
]
|
|
@@ -83,6 +83,33 @@ async def get_evm_account(agent: Agent) -> EvmServerAccount:
|
|
|
83
83
|
return account
|
|
84
84
|
|
|
85
85
|
|
|
86
|
+
def get_cdp_network(agent: Agent) -> str:
|
|
87
|
+
if not agent.network_id:
|
|
88
|
+
raise IntentKitAPIError(
|
|
89
|
+
400,
|
|
90
|
+
"BadNetworkID",
|
|
91
|
+
"Your agent network ID is not set. Please set it in the agent config.",
|
|
92
|
+
)
|
|
93
|
+
mapping = {
|
|
94
|
+
"ethereum-mainnet": "ethereum",
|
|
95
|
+
"base-mainnet": "base",
|
|
96
|
+
"arbitrum-mainnet": "arbitrum",
|
|
97
|
+
"optimism-mainnet": "optimism",
|
|
98
|
+
"polygon-mainnet": "polygon",
|
|
99
|
+
"base-sepolia": "base-sepolia",
|
|
100
|
+
}
|
|
101
|
+
if agent.network_id == "solana":
|
|
102
|
+
raise IntentKitAPIError(
|
|
103
|
+
400, "BadNetworkID", "Solana is not supported by CDP EVM."
|
|
104
|
+
)
|
|
105
|
+
cdp_network = mapping.get(agent.network_id)
|
|
106
|
+
if not cdp_network:
|
|
107
|
+
raise IntentKitAPIError(
|
|
108
|
+
400, "BadNetworkID", f"Unsupported network ID: {agent.network_id}"
|
|
109
|
+
)
|
|
110
|
+
return cdp_network
|
|
111
|
+
|
|
112
|
+
|
|
86
113
|
async def get_wallet_provider(agent: Agent) -> CdpEvmWalletProvider:
|
|
87
114
|
_assert_cdp_wallet_provider(agent)
|
|
88
115
|
if not agent.network_id:
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from pydantic import BaseModel, Field
|
|
2
2
|
|
|
3
|
-
from intentkit.skills.
|
|
3
|
+
from intentkit.skills.onchain import IntentKitOnChainSkill
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class LiFiBaseTool(
|
|
6
|
+
class LiFiBaseTool(IntentKitOnChainSkill):
|
|
7
7
|
"""Base class for LiFi tools."""
|
|
8
8
|
|
|
9
9
|
name: str = Field(description="The name of the tool")
|
|
@@ -2,12 +2,11 @@ import asyncio
|
|
|
2
2
|
from typing import Any
|
|
3
3
|
|
|
4
4
|
import httpx
|
|
5
|
-
from
|
|
5
|
+
from cdp import EvmServerAccount, TransactionRequestEIP1559
|
|
6
6
|
from pydantic import BaseModel, Field
|
|
7
7
|
from web3 import Web3
|
|
8
|
+
from web3.exceptions import TimeExhausted
|
|
8
9
|
|
|
9
|
-
from intentkit.clients import get_wallet_provider as get_agent_wallet_provider
|
|
10
|
-
from intentkit.models.agent import Agent
|
|
11
10
|
from intentkit.skills.lifi.base import LiFiBaseTool
|
|
12
11
|
from intentkit.skills.lifi.token_quote import TokenQuote
|
|
13
12
|
from intentkit.skills.lifi.utils import (
|
|
@@ -23,6 +22,7 @@ from intentkit.skills.lifi.utils import (
|
|
|
23
22
|
prepare_transaction_params,
|
|
24
23
|
validate_inputs,
|
|
25
24
|
)
|
|
25
|
+
from intentkit.utils.error import IntentKitAPIError
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class TokenExecuteInput(BaseModel):
|
|
@@ -52,7 +52,7 @@ class TokenExecuteInput(BaseModel):
|
|
|
52
52
|
class TokenExecute(LiFiBaseTool):
|
|
53
53
|
"""Tool for executing token transfers across chains using LiFi.
|
|
54
54
|
|
|
55
|
-
This tool executes actual token transfers and swaps using the CDP
|
|
55
|
+
This tool executes actual token transfers and swaps using the CDP EVM account.
|
|
56
56
|
Requires a properly configured CDP wallet to work.
|
|
57
57
|
"""
|
|
58
58
|
|
|
@@ -129,21 +129,35 @@ class TokenExecute(LiFiBaseTool):
|
|
|
129
129
|
# Get agent context for CDP wallet
|
|
130
130
|
context = self.get_context()
|
|
131
131
|
agent = context.agent
|
|
132
|
+
network_id = agent.network_id
|
|
133
|
+
if not network_id:
|
|
134
|
+
return "Agent network ID is not configured. Please set it before executing on-chain transactions."
|
|
135
|
+
|
|
136
|
+
try:
|
|
137
|
+
cdp_network = self.get_cdp_network()
|
|
138
|
+
except Exception as e:
|
|
139
|
+
self.logger.error("LiFi_CDP_Network_Error: %s", str(e))
|
|
140
|
+
return f"Invalid agent network for CDP: {str(e)}"
|
|
132
141
|
|
|
133
142
|
self.logger.info(
|
|
134
143
|
f"Executing LiFi transfer: {from_amount} {from_token} on {from_chain} -> {to_token} on {to_chain}"
|
|
135
144
|
)
|
|
136
145
|
|
|
137
|
-
# Get CDP
|
|
138
|
-
|
|
139
|
-
if isinstance(
|
|
140
|
-
return
|
|
146
|
+
# Get CDP EVM account and web3 client
|
|
147
|
+
evm_account = await self._get_evm_account()
|
|
148
|
+
if isinstance(evm_account, str): # Error message
|
|
149
|
+
return evm_account
|
|
141
150
|
|
|
142
|
-
|
|
143
|
-
from_address = cdp_wallet_provider.get_address()
|
|
151
|
+
from_address = evm_account.address
|
|
144
152
|
if not from_address:
|
|
145
153
|
return "No wallet address available. Please check your CDP wallet configuration."
|
|
146
154
|
|
|
155
|
+
try:
|
|
156
|
+
web3 = self.web3_client()
|
|
157
|
+
except Exception as e:
|
|
158
|
+
self.logger.error("LiFi_Web3_Error: %s", str(e))
|
|
159
|
+
return "Unable to initialize Web3 client. Please verify the agent's network configuration."
|
|
160
|
+
|
|
147
161
|
# Get quote and execute transfer
|
|
148
162
|
async with httpx.AsyncClient() as client:
|
|
149
163
|
# Step 1: Get quote
|
|
@@ -162,16 +176,22 @@ class TokenExecute(LiFiBaseTool):
|
|
|
162
176
|
|
|
163
177
|
# Step 2: Handle token approval if needed
|
|
164
178
|
approval_result = await self._handle_token_approval(
|
|
165
|
-
|
|
179
|
+
evm_account,
|
|
180
|
+
quote_data,
|
|
181
|
+
web3,
|
|
182
|
+
cdp_network,
|
|
183
|
+
from_address,
|
|
166
184
|
)
|
|
167
185
|
if approval_result:
|
|
168
186
|
self.logger.info(f"Token approval completed: {approval_result}")
|
|
169
187
|
|
|
170
188
|
# Step 3: Execute transaction
|
|
171
189
|
tx_hash = await self._execute_transfer_transaction(
|
|
172
|
-
|
|
190
|
+
evm_account,
|
|
173
191
|
quote_data,
|
|
174
192
|
from_address,
|
|
193
|
+
cdp_network,
|
|
194
|
+
web3,
|
|
175
195
|
)
|
|
176
196
|
|
|
177
197
|
# Step 4: Monitor status and return result
|
|
@@ -183,17 +203,18 @@ class TokenExecute(LiFiBaseTool):
|
|
|
183
203
|
self.logger.error("LiFi_Error: %s", str(e))
|
|
184
204
|
return f"An unexpected error occurred: {str(e)}"
|
|
185
205
|
|
|
186
|
-
async def
|
|
187
|
-
|
|
188
|
-
) -> CdpEvmWalletProvider | str:
|
|
189
|
-
"""Get CDP wallet provider with error handling."""
|
|
206
|
+
async def _get_evm_account(self) -> EvmServerAccount | str:
|
|
207
|
+
"""Get CDP EVM account with error handling."""
|
|
190
208
|
try:
|
|
191
|
-
|
|
192
|
-
if not
|
|
193
|
-
return "CDP wallet
|
|
209
|
+
evm_account = await self.get_evm_account()
|
|
210
|
+
if not evm_account:
|
|
211
|
+
return "CDP wallet account not configured. Please set up your agent's CDP wallet first."
|
|
194
212
|
|
|
195
|
-
return
|
|
213
|
+
return evm_account
|
|
196
214
|
|
|
215
|
+
except IntentKitAPIError as e:
|
|
216
|
+
self.logger.error("LiFi_CDP_Error: %s", str(e))
|
|
217
|
+
return f"Cannot access CDP wallet: {str(e)}\n\nPlease ensure your agent has a properly configured CDP wallet with sufficient funds."
|
|
197
218
|
except Exception as e:
|
|
198
219
|
self.logger.error("LiFi_CDP_Error: %s", str(e))
|
|
199
220
|
return f"Cannot access CDP wallet: {str(e)}\n\nPlease ensure your agent has a properly configured CDP wallet with sufficient funds."
|
|
@@ -250,7 +271,12 @@ class TokenExecute(LiFiBaseTool):
|
|
|
250
271
|
return data
|
|
251
272
|
|
|
252
273
|
async def _handle_token_approval(
|
|
253
|
-
self,
|
|
274
|
+
self,
|
|
275
|
+
evm_account: EvmServerAccount,
|
|
276
|
+
quote_data: dict[str, Any],
|
|
277
|
+
web3: Web3,
|
|
278
|
+
network_id: str,
|
|
279
|
+
wallet_address: str,
|
|
254
280
|
) -> str | None:
|
|
255
281
|
"""Handle ERC20 token approval if needed."""
|
|
256
282
|
estimate = quote_data.get("estimate", {})
|
|
@@ -267,7 +293,13 @@ class TokenExecute(LiFiBaseTool):
|
|
|
267
293
|
|
|
268
294
|
try:
|
|
269
295
|
return await self._check_and_set_allowance(
|
|
270
|
-
|
|
296
|
+
evm_account,
|
|
297
|
+
from_token_address,
|
|
298
|
+
approval_address,
|
|
299
|
+
from_amount,
|
|
300
|
+
web3,
|
|
301
|
+
network_id,
|
|
302
|
+
wallet_address,
|
|
271
303
|
)
|
|
272
304
|
except Exception as e:
|
|
273
305
|
self.logger.error("LiFi_Token_Approval_Error: %s", str(e))
|
|
@@ -275,9 +307,11 @@ class TokenExecute(LiFiBaseTool):
|
|
|
275
307
|
|
|
276
308
|
async def _execute_transfer_transaction(
|
|
277
309
|
self,
|
|
278
|
-
|
|
310
|
+
evm_account: EvmServerAccount,
|
|
279
311
|
quote_data: dict[str, Any],
|
|
280
312
|
from_address: str,
|
|
313
|
+
network_id: str,
|
|
314
|
+
web3: Web3,
|
|
281
315
|
) -> str:
|
|
282
316
|
"""Execute the main transfer transaction."""
|
|
283
317
|
transaction_request = quote_data.get("transactionRequest")
|
|
@@ -286,16 +320,17 @@ class TokenExecute(LiFiBaseTool):
|
|
|
286
320
|
tx_params = prepare_transaction_params(
|
|
287
321
|
transaction_request, wallet_address=from_address
|
|
288
322
|
)
|
|
323
|
+
tx_request = self._build_transaction_request(tx_params)
|
|
289
324
|
self.logger.info(
|
|
290
|
-
f"Sending transaction to {tx_params['to']} with value {tx_params
|
|
325
|
+
f"Sending transaction to {tx_params['to']} with value {tx_params.get('value', 0)}"
|
|
291
326
|
)
|
|
292
327
|
|
|
293
328
|
# Send transaction
|
|
294
|
-
tx_hash =
|
|
329
|
+
tx_hash = await evm_account.send_transaction(tx_request, network=network_id)
|
|
295
330
|
|
|
296
331
|
# Wait for confirmation
|
|
297
|
-
receipt =
|
|
298
|
-
if not receipt or receipt.get("status")
|
|
332
|
+
receipt = await self._wait_for_receipt(web3, tx_hash)
|
|
333
|
+
if not receipt or receipt.get("status") != 1:
|
|
299
334
|
raise Exception(f"Transaction failed: {tx_hash}")
|
|
300
335
|
|
|
301
336
|
return tx_hash
|
|
@@ -304,6 +339,52 @@ class TokenExecute(LiFiBaseTool):
|
|
|
304
339
|
self.logger.error("LiFi_Execution_Error: %s", str(e))
|
|
305
340
|
raise Exception(f"Failed to execute transaction: {str(e)}")
|
|
306
341
|
|
|
342
|
+
def _build_transaction_request(
|
|
343
|
+
self, tx_params: dict[str, Any]
|
|
344
|
+
) -> TransactionRequestEIP1559:
|
|
345
|
+
"""Convert prepared transaction parameters to an EIP-1559 request."""
|
|
346
|
+
request_kwargs: dict[str, Any] = {
|
|
347
|
+
"to": Web3.to_checksum_address(tx_params["to"]),
|
|
348
|
+
"data": tx_params.get("data", "0x"),
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
for key in ("value", "gas", "maxPriorityFeePerGas", "nonce", "chainId"):
|
|
352
|
+
value = tx_params.get(key)
|
|
353
|
+
if value is not None:
|
|
354
|
+
request_kwargs[key] = value
|
|
355
|
+
|
|
356
|
+
max_fee_per_gas = tx_params.get("maxFeePerGas") or tx_params.get("gasPrice")
|
|
357
|
+
if max_fee_per_gas is not None:
|
|
358
|
+
request_kwargs["maxFeePerGas"] = max_fee_per_gas
|
|
359
|
+
|
|
360
|
+
return TransactionRequestEIP1559(**request_kwargs)
|
|
361
|
+
|
|
362
|
+
async def _wait_for_receipt(
|
|
363
|
+
self, web3: Web3, tx_hash: str
|
|
364
|
+
) -> dict[str, Any] | None:
|
|
365
|
+
"""Wait for a transaction receipt using Web3 in a non-blocking way."""
|
|
366
|
+
|
|
367
|
+
try:
|
|
368
|
+
receipt = await asyncio.to_thread(
|
|
369
|
+
web3.eth.wait_for_transaction_receipt, tx_hash
|
|
370
|
+
)
|
|
371
|
+
except TimeExhausted as exc:
|
|
372
|
+
self.logger.error("LiFi_Execution_Error: %s", str(exc))
|
|
373
|
+
raise Exception(
|
|
374
|
+
f"Transaction not confirmed before timeout: {tx_hash}"
|
|
375
|
+
) from exc
|
|
376
|
+
except Exception as exc:
|
|
377
|
+
self.logger.error("LiFi_Execution_Error: %s", str(exc))
|
|
378
|
+
raise
|
|
379
|
+
|
|
380
|
+
if receipt is None:
|
|
381
|
+
return None
|
|
382
|
+
|
|
383
|
+
if isinstance(receipt, dict):
|
|
384
|
+
return receipt
|
|
385
|
+
|
|
386
|
+
return dict(receipt)
|
|
387
|
+
|
|
307
388
|
async def _finalize_transfer(
|
|
308
389
|
self,
|
|
309
390
|
client: httpx.AsyncClient,
|
|
@@ -413,25 +494,27 @@ class TokenExecute(LiFiBaseTool):
|
|
|
413
494
|
|
|
414
495
|
async def _check_and_set_allowance(
|
|
415
496
|
self,
|
|
416
|
-
|
|
497
|
+
evm_account: EvmServerAccount,
|
|
417
498
|
token_address: str,
|
|
418
499
|
approval_address: str,
|
|
419
500
|
amount: str,
|
|
501
|
+
web3: Web3,
|
|
502
|
+
network_id: str,
|
|
503
|
+
wallet_address: str,
|
|
420
504
|
) -> str | None:
|
|
421
505
|
"""Check if token allowance is sufficient and set approval if needed."""
|
|
422
506
|
try:
|
|
423
507
|
# Normalize addresses
|
|
424
508
|
token_address = Web3.to_checksum_address(token_address)
|
|
425
509
|
approval_address = Web3.to_checksum_address(approval_address)
|
|
426
|
-
|
|
510
|
+
wallet_checksum = Web3.to_checksum_address(wallet_address)
|
|
511
|
+
|
|
512
|
+
contract = web3.eth.contract(address=token_address, abi=ERC20_ABI)
|
|
427
513
|
|
|
428
514
|
# Check current allowance
|
|
429
515
|
try:
|
|
430
|
-
current_allowance =
|
|
431
|
-
|
|
432
|
-
abi=ERC20_ABI,
|
|
433
|
-
function_name="allowance",
|
|
434
|
-
args=[wallet_address, approval_address],
|
|
516
|
+
current_allowance = await asyncio.to_thread(
|
|
517
|
+
contract.functions.allowance(wallet_checksum, approval_address).call
|
|
435
518
|
)
|
|
436
519
|
|
|
437
520
|
required_amount = int(amount)
|
|
@@ -453,20 +536,21 @@ class TokenExecute(LiFiBaseTool):
|
|
|
453
536
|
|
|
454
537
|
# Create approval transaction
|
|
455
538
|
approve_data = create_erc20_approve_data(approval_address, amount)
|
|
539
|
+
approval_request = TransactionRequestEIP1559(
|
|
540
|
+
to=token_address,
|
|
541
|
+
data=approve_data,
|
|
542
|
+
value=0,
|
|
543
|
+
)
|
|
456
544
|
|
|
457
545
|
# Send approval transaction
|
|
458
|
-
approval_tx_hash =
|
|
459
|
-
|
|
460
|
-
"to": token_address,
|
|
461
|
-
"data": approve_data,
|
|
462
|
-
"value": 0,
|
|
463
|
-
}
|
|
546
|
+
approval_tx_hash = await evm_account.send_transaction(
|
|
547
|
+
approval_request, network=network_id
|
|
464
548
|
)
|
|
465
549
|
|
|
466
550
|
# Wait for approval transaction confirmation
|
|
467
|
-
receipt =
|
|
551
|
+
receipt = await self._wait_for_receipt(web3, approval_tx_hash)
|
|
468
552
|
|
|
469
|
-
if not receipt or receipt.get("status")
|
|
553
|
+
if not receipt or receipt.get("status") != 1:
|
|
470
554
|
raise Exception(f"Approval transaction failed: {approval_tx_hash}")
|
|
471
555
|
|
|
472
556
|
return approval_tx_hash
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from cdp import EvmServerAccount
|
|
2
2
|
from web3 import Web3
|
|
3
3
|
|
|
4
|
+
from intentkit.clients import get_cdp_network as resolve_cdp_network
|
|
4
5
|
from intentkit.clients import get_evm_account as fetch_evm_account
|
|
5
6
|
from intentkit.clients.web3 import get_web3_client
|
|
6
7
|
from intentkit.skills.base import IntentKitSkill
|
|
@@ -21,3 +22,9 @@ class IntentKitOnChainSkill(IntentKitSkill):
|
|
|
21
22
|
context = self.get_context()
|
|
22
23
|
agent = context.agent
|
|
23
24
|
return await fetch_evm_account(agent)
|
|
25
|
+
|
|
26
|
+
def get_cdp_network(self) -> str:
|
|
27
|
+
"""Get CDP network mapped from the agent's network id."""
|
|
28
|
+
context = self.get_context()
|
|
29
|
+
agent = context.agent
|
|
30
|
+
return resolve_cdp_network(agent)
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intentkit-0.8.32.dev1 → intentkit-0.8.33.dev1}/intentkit/skills/carv/token_info_and_price.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
|