intentkit 0.6.11.dev3__tar.gz → 0.6.11.dev5__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.
Potentially problematic release.
This version of intentkit might be problematic. Click here for more details.
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/PKG-INFO +1 -1
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/__init__.py +1 -1
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/clients/cdp.py +21 -7
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/llm.py +4 -3
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/pyproject.toml +1 -1
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/xmtp/__init__.py +16 -0
- intentkit-0.6.11.dev5/skills/xmtp/price.py +72 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/xmtp/schema.json +32 -0
- intentkit-0.6.11.dev5/skills/xmtp/swap.py +204 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/.gitignore +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/LICENSE +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/MANIFEST.in +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/abstracts/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/abstracts/agent.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/abstracts/api.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/abstracts/engine.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/abstracts/exception.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/abstracts/graph.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/abstracts/skill.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/abstracts/twitter.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/clients/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/clients/twitter.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/config/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/config/config.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/core/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/core/agent.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/core/api.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/core/client.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/core/credit.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/core/engine.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/core/node.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/core/prompt.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/core/skill.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/agent.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/agent_data.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/agent_schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/app_setting.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/chat.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/conversation.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/credit.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/db.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/db_mig.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/generator.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/redis.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/skill.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/models/user.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/acolyt/ask.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/acolyt/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/acolyt/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/aixbt/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/aixbt/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/aixbt/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/aixbt/projects.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/aixbt/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/allora/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/allora/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/allora/price.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/allora/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/carv/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/carv/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/carv/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/carv/carv.webp +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/carv/fetch_news.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/carv/onchain_query.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/carv/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cdp/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cdp/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cdp/cdp.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cdp/get_balance.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cdp/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cdp/swap.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/chainlist/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/chainlist/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/chainlist/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/common/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/common/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/common/common.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/common/current_time.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/common/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptopanic/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dapplooker/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dapplooker/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/api.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dexscreener/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dune_analytics/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/elfa/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/elfa/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/elfa/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/elfa/mention.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/elfa/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/elfa/stats.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/elfa/tokens.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/elfa/utils.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/abi/route.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/best_yield.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/enso.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/networks.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/prices.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/route.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/tokens.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/enso/wallet.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/clear.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/query.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/firecrawl/utils.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/github/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/github/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/github/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/github/github.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/github/github_search.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/github/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/heurist.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/heurist/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/http/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/http/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/http/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/http/get.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/http/http.svg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/http/post.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/http/put.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/http/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/lifi/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/lifi/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/lifi/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/lifi/lifi.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/lifi/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/lifi/token_execute.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/lifi/token_quote.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/lifi/utils.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/api.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/moralis.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/tests/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/moralis/tests/test_wallet.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/nation/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/nation/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/nation/nation.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/nation/nft_check.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/nation/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/openai/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/openai/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/openai/dalle_image_generation.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/openai/gpt_image_generation.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/openai/gpt_image_to_image.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/openai/image_to_text.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/openai/openai.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/openai/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/constants.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/skills.toml +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/slack/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/slack/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/slack/get_channel.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/slack/get_message.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/slack/schedule_message.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/slack/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/slack/send_message.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/slack/slack.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/delete_data.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/insert_data.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/supabase.svg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/update_data.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/add_autonomous_task.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/delete_autonomous_task.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/edit_autonomous_task.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/list_autonomous_tasks.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/read_agent_api_key.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/regenerate_agent_api_key.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/system/system.svg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/tavily/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/tavily/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/tavily/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/tavily/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/constants.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/moralis.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/token_analytics.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/token_price.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/token/token_search.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/follow_user.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/retweet.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/twitter/twitter.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/unrealspeech/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_audio/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_audio/input.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/api.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/config.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/utils.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/web_scraper/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/web_scraper/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/web_scraper/schema.json +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/web_scraper/utils.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/xmtp/README.md +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/xmtp/base.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/xmtp/transfer.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/skills/xmtp/xmtp.png +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/utils/__init__.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/utils/chain.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/utils/error.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/utils/logging.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/utils/random.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/utils/s3.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/utils/slack_alert.py +0 -0
- {intentkit-0.6.11.dev3 → intentkit-0.6.11.dev5}/utils/tx.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.6.11.
|
|
3
|
+
Version: 0.6.11.dev5
|
|
4
4
|
Summary: Intent-based AI Agent Platform - Core Package
|
|
5
5
|
Project-URL: Homepage, https://github.com/crestal-network/intentkit
|
|
6
6
|
Project-URL: Repository, https://github.com/crestal-network/intentkit
|
|
@@ -17,6 +17,7 @@ from intentkit.models.agent import Agent
|
|
|
17
17
|
from intentkit.models.agent_data import AgentData
|
|
18
18
|
|
|
19
19
|
_clients: Dict[str, "CdpClient"] = {}
|
|
20
|
+
_origin_cdp_client: Optional[OriginCdpClient] = None
|
|
20
21
|
|
|
21
22
|
logger = logging.getLogger(__name__)
|
|
22
23
|
|
|
@@ -56,6 +57,24 @@ def bip39_seed_to_eth_keys(seed_hex: str) -> Dict[str, str]:
|
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
|
|
60
|
+
def get_origin_cdp_client(skill_store: SkillStoreABC) -> OriginCdpClient:
|
|
61
|
+
global _origin_cdp_client
|
|
62
|
+
if _origin_cdp_client:
|
|
63
|
+
return _origin_cdp_client
|
|
64
|
+
|
|
65
|
+
# Get credentials from skill store system config
|
|
66
|
+
api_key_id = skill_store.get_system_config("cdp_api_key_id")
|
|
67
|
+
api_key_secret = skill_store.get_system_config("cdp_api_key_secret")
|
|
68
|
+
wallet_secret = skill_store.get_system_config("cdp_wallet_secret")
|
|
69
|
+
|
|
70
|
+
_origin_cdp_client = OriginCdpClient(
|
|
71
|
+
api_key_id=api_key_id,
|
|
72
|
+
api_key_secret=api_key_secret,
|
|
73
|
+
wallet_secret=wallet_secret,
|
|
74
|
+
)
|
|
75
|
+
return _origin_cdp_client
|
|
76
|
+
|
|
77
|
+
|
|
59
78
|
class CdpClient:
|
|
60
79
|
def __init__(self, agent_id: str, skill_store: SkillStoreABC) -> None:
|
|
61
80
|
self._agent_id = agent_id
|
|
@@ -81,11 +100,7 @@ class CdpClient:
|
|
|
81
100
|
# new agent or address not migrated yet
|
|
82
101
|
if not address:
|
|
83
102
|
# create cdp client for later use
|
|
84
|
-
cdp_client =
|
|
85
|
-
api_key_id=api_key_id,
|
|
86
|
-
api_key_secret=api_key_secret,
|
|
87
|
-
wallet_secret=wallet_secret,
|
|
88
|
-
)
|
|
103
|
+
cdp_client = get_origin_cdp_client(self._skill_store)
|
|
89
104
|
# try migrating from v1 cdp_wallet_data
|
|
90
105
|
if agent_data.cdp_wallet_data:
|
|
91
106
|
wallet_data = json.loads(agent_data.cdp_wallet_data)
|
|
@@ -115,8 +130,7 @@ class CdpClient:
|
|
|
115
130
|
address = new_account.address
|
|
116
131
|
logger.info("Created new wallet: %s", address)
|
|
117
132
|
|
|
118
|
-
# close client
|
|
119
|
-
await cdp_client.close()
|
|
133
|
+
# do not close cached global client
|
|
120
134
|
# now it should be created or migrated, store it
|
|
121
135
|
agent_data.evm_wallet_address = address
|
|
122
136
|
await agent_data.save()
|
|
@@ -628,9 +628,10 @@ class DeepseekLLM(LLMModel):
|
|
|
628
628
|
info = await self.model_info()
|
|
629
629
|
|
|
630
630
|
kwargs = {
|
|
631
|
-
"
|
|
632
|
-
"
|
|
631
|
+
"model": self.model_name,
|
|
632
|
+
"api_key": config.deepseek_api_key,
|
|
633
633
|
"timeout": info.timeout,
|
|
634
|
+
"max_retries": 3,
|
|
634
635
|
}
|
|
635
636
|
|
|
636
637
|
# Add optional parameters based on model support
|
|
@@ -644,7 +645,7 @@ class DeepseekLLM(LLMModel):
|
|
|
644
645
|
kwargs["presence_penalty"] = self.presence_penalty
|
|
645
646
|
|
|
646
647
|
if info.api_base:
|
|
647
|
-
kwargs["
|
|
648
|
+
kwargs["api_base"] = info.api_base
|
|
648
649
|
|
|
649
650
|
return ChatDeepSeek(**kwargs)
|
|
650
651
|
|
|
@@ -6,6 +6,8 @@ from typing import TypedDict
|
|
|
6
6
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
7
|
from intentkit.skills.base import SkillConfig, SkillState
|
|
8
8
|
from intentkit.skills.xmtp.base import XmtpBaseTool
|
|
9
|
+
from intentkit.skills.xmtp.price import XmtpGetSwapPrice
|
|
10
|
+
from intentkit.skills.xmtp.swap import XmtpSwap
|
|
9
11
|
from intentkit.skills.xmtp.transfer import XmtpTransfer
|
|
10
12
|
|
|
11
13
|
# Cache skills at the module level, because they are stateless
|
|
@@ -16,6 +18,8 @@ logger = logging.getLogger(__name__)
|
|
|
16
18
|
|
|
17
19
|
class SkillStates(TypedDict):
|
|
18
20
|
xmtp_transfer: SkillState
|
|
21
|
+
xmtp_swap: SkillState
|
|
22
|
+
xmtp_get_swap_price: SkillState
|
|
19
23
|
|
|
20
24
|
|
|
21
25
|
class Config(SkillConfig):
|
|
@@ -77,6 +81,18 @@ def get_xmtp_skill(
|
|
|
77
81
|
skill_store=store,
|
|
78
82
|
)
|
|
79
83
|
return _cache[name]
|
|
84
|
+
elif name == "xmtp_swap":
|
|
85
|
+
if name not in _cache:
|
|
86
|
+
_cache[name] = XmtpSwap(
|
|
87
|
+
skill_store=store,
|
|
88
|
+
)
|
|
89
|
+
return _cache[name]
|
|
90
|
+
elif name == "xmtp_get_swap_price":
|
|
91
|
+
if name not in _cache:
|
|
92
|
+
_cache[name] = XmtpGetSwapPrice(
|
|
93
|
+
skill_store=store,
|
|
94
|
+
)
|
|
95
|
+
return _cache[name]
|
|
80
96
|
else:
|
|
81
97
|
logger.warning(f"Unknown XMTP skill: {name}")
|
|
82
98
|
return None
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
from typing import Literal, Type
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
|
|
5
|
+
from intentkit.clients.cdp import get_origin_cdp_client
|
|
6
|
+
from intentkit.skills.xmtp.base import XmtpBaseTool
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class SwapPriceInput(BaseModel):
|
|
10
|
+
"""Input for querying swap price via CDP."""
|
|
11
|
+
|
|
12
|
+
from_token: str = Field(description="The contract address to swap from")
|
|
13
|
+
to_token: str = Field(description="The contract address to swap to")
|
|
14
|
+
from_amount: str = Field(description="Input amount in smallest units (as string)")
|
|
15
|
+
from_address: str = Field(
|
|
16
|
+
description="The address where the from_token balance is located"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class XmtpGetSwapPrice(XmtpBaseTool):
|
|
21
|
+
"""Skill for fetching indicative swap price using CDP SDK."""
|
|
22
|
+
|
|
23
|
+
name: str = "xmtp_get_swap_price"
|
|
24
|
+
description: str = "Get an indicative swap price/quote for token pair and amount on Base networks using CDP."
|
|
25
|
+
response_format: Literal["content", "content_and_artifact"] = "content"
|
|
26
|
+
args_schema: Type[BaseModel] = SwapPriceInput
|
|
27
|
+
|
|
28
|
+
async def _arun(
|
|
29
|
+
self,
|
|
30
|
+
from_token: str,
|
|
31
|
+
to_token: str,
|
|
32
|
+
from_amount: str,
|
|
33
|
+
from_address: str,
|
|
34
|
+
) -> str:
|
|
35
|
+
context = self.get_context()
|
|
36
|
+
agent = context.agent
|
|
37
|
+
|
|
38
|
+
if agent.network_id not in ("base-mainnet", "base-sepolia"):
|
|
39
|
+
raise ValueError(
|
|
40
|
+
f"Swap price only supported on base-mainnet or base-sepolia. Current: {agent.network_id}"
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
network_for_cdp = {
|
|
44
|
+
"base-mainnet": "base",
|
|
45
|
+
"base-sepolia": "base-sepolia",
|
|
46
|
+
}[agent.network_id]
|
|
47
|
+
|
|
48
|
+
cdp_client = get_origin_cdp_client(self.skill_store)
|
|
49
|
+
# Note: Don't use async with context manager as get_origin_cdp_client returns a managed global client
|
|
50
|
+
price = await cdp_client.evm.get_swap_price(
|
|
51
|
+
from_token=from_token,
|
|
52
|
+
to_token=to_token,
|
|
53
|
+
from_amount=str(from_amount),
|
|
54
|
+
network=network_for_cdp,
|
|
55
|
+
taker=from_address,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
# Try to format a readable message from typical fields
|
|
59
|
+
try:
|
|
60
|
+
amount_out = getattr(price, "to_amount", None) or (
|
|
61
|
+
price.get("to_amount") if isinstance(price, dict) else None
|
|
62
|
+
)
|
|
63
|
+
route = getattr(price, "route", None) or (
|
|
64
|
+
price.get("route") if isinstance(price, dict) else None
|
|
65
|
+
)
|
|
66
|
+
route_str = f" via {route}" if route else ""
|
|
67
|
+
if amount_out:
|
|
68
|
+
return f"Estimated output: {amount_out} units of {to_token}{route_str} on {agent.network_id}."
|
|
69
|
+
except Exception:
|
|
70
|
+
pass
|
|
71
|
+
|
|
72
|
+
return f"Swap price result (raw): {price}"
|
|
@@ -36,6 +36,38 @@
|
|
|
36
36
|
],
|
|
37
37
|
"description": "Create XMTP transaction requests for transferring ETH or ERC20 tokens on Base mainnet. Supports both native ETH transfers and ERC20 token transfers. Generates wallet_sendCalls transaction data that users can sign.",
|
|
38
38
|
"default": "disabled"
|
|
39
|
+
},
|
|
40
|
+
"xmtp_swap": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"title": "XMTP Swap",
|
|
43
|
+
"enum": [
|
|
44
|
+
"disabled",
|
|
45
|
+
"public",
|
|
46
|
+
"private"
|
|
47
|
+
],
|
|
48
|
+
"x-enum-title": [
|
|
49
|
+
"Disabled",
|
|
50
|
+
"Agent Owner + All Users",
|
|
51
|
+
"Agent Owner Only"
|
|
52
|
+
],
|
|
53
|
+
"description": "Create XMTP transaction requests for swapping tokens on Base using CDP swap quote. Returns a wallet_sendCalls payload that can include an optional approval call and the swap call. Only supports base-mainnet and base-sepolia.",
|
|
54
|
+
"default": "disabled"
|
|
55
|
+
},
|
|
56
|
+
"xmtp_get_swap_price": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"title": "XMTP Get Swap Price",
|
|
59
|
+
"enum": [
|
|
60
|
+
"disabled",
|
|
61
|
+
"public",
|
|
62
|
+
"private"
|
|
63
|
+
],
|
|
64
|
+
"x-enum-title": [
|
|
65
|
+
"Disabled",
|
|
66
|
+
"Agent Owner + All Users",
|
|
67
|
+
"Agent Owner Only"
|
|
68
|
+
],
|
|
69
|
+
"description": "Get an indicative swap price/quote for token pair and amount on Base networks using CDP. Provides estimated output amounts for token swaps without creating transactions.",
|
|
70
|
+
"default": "disabled"
|
|
39
71
|
}
|
|
40
72
|
}
|
|
41
73
|
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
from typing import List, Tuple, Type
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
|
|
5
|
+
from intentkit.clients.cdp import get_origin_cdp_client
|
|
6
|
+
from intentkit.models.chat import ChatMessageAttachment, ChatMessageAttachmentType
|
|
7
|
+
from intentkit.skills.xmtp.base import XmtpBaseTool
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SwapInput(BaseModel):
|
|
11
|
+
"""Input for XMTP swap skill.
|
|
12
|
+
|
|
13
|
+
This creates an unsigned swap transaction attachment using CDP swap quote
|
|
14
|
+
that a user can review and sign via XMTP wallet_sendCalls.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from_address: str = Field(description="The sender address for the swap")
|
|
18
|
+
from_token: str = Field(
|
|
19
|
+
description="The contract address of the token to swap from"
|
|
20
|
+
)
|
|
21
|
+
to_token: str = Field(description="The contract address of the token to swap to")
|
|
22
|
+
from_amount: str = Field(
|
|
23
|
+
description="The input amount in the smallest unit of from_token (as string)"
|
|
24
|
+
)
|
|
25
|
+
slippage_bps: int = Field(
|
|
26
|
+
default=100,
|
|
27
|
+
description="Maximum slippage in basis points (100 = 1%). Defaults to 100.",
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class XmtpSwap(XmtpBaseTool):
|
|
32
|
+
"""Skill for creating XMTP swap transactions using CDP swap quote.
|
|
33
|
+
|
|
34
|
+
Generates a wallet_sendCalls transaction request to perform a token swap.
|
|
35
|
+
May include an ERC20 approval call followed by the router swap call.
|
|
36
|
+
Supports Base mainnet and Base Sepolia testnet.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
name: str = "xmtp_swap"
|
|
40
|
+
description: str = (
|
|
41
|
+
"Create an XMTP transaction request for swapping tokens on Base using CDP swap quote. "
|
|
42
|
+
"Returns a wallet_sendCalls payload that can include an optional approval call and the swap call. "
|
|
43
|
+
"Only supports base-mainnet and base-sepolia."
|
|
44
|
+
)
|
|
45
|
+
args_schema: Type[BaseModel] = SwapInput
|
|
46
|
+
|
|
47
|
+
async def _arun(
|
|
48
|
+
self,
|
|
49
|
+
from_address: str,
|
|
50
|
+
from_token: str,
|
|
51
|
+
to_token: str,
|
|
52
|
+
from_amount: str,
|
|
53
|
+
slippage_bps: int = 100,
|
|
54
|
+
) -> Tuple[str, List[ChatMessageAttachment]]:
|
|
55
|
+
# Resolve agent context and target network
|
|
56
|
+
context = self.get_context()
|
|
57
|
+
agent = context.agent
|
|
58
|
+
|
|
59
|
+
# ChainId mapping for XMTP wallet_sendCalls
|
|
60
|
+
chain_id_hex_by_network = {
|
|
61
|
+
"base-mainnet": "0x2105", # 8453
|
|
62
|
+
"base-sepolia": "0x14A34", # 84532
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if agent.network_id not in chain_id_hex_by_network:
|
|
66
|
+
raise ValueError(
|
|
67
|
+
f"XMTP swap only supports base-mainnet or base-sepolia. Current agent network: {agent.network_id}"
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
chain_id_hex = chain_id_hex_by_network[agent.network_id]
|
|
71
|
+
|
|
72
|
+
# CDP network mapping for swap quote API
|
|
73
|
+
# Reference: CDP SDK examples for swap quote and price
|
|
74
|
+
# https://github.com/coinbase/cdp-sdk/blob/main/examples/python/evm/swaps/create_swap_quote.py
|
|
75
|
+
network_for_cdp = {
|
|
76
|
+
"base-mainnet": "base",
|
|
77
|
+
"base-sepolia": "base-sepolia",
|
|
78
|
+
}[agent.network_id]
|
|
79
|
+
|
|
80
|
+
# Get CDP client from global origin helper (server-side credentials)
|
|
81
|
+
cdp_client = get_origin_cdp_client(self.skill_store)
|
|
82
|
+
|
|
83
|
+
# Call CDP to create swap quote and extract call datas
|
|
84
|
+
# Be permissive with response shape across SDK versions
|
|
85
|
+
try:
|
|
86
|
+
# Attempt the canonical method per CDP SDK examples
|
|
87
|
+
# create_swap_quote(from_token, to_token, from_amount, network, taker, slippage_bps, signer_address)
|
|
88
|
+
# Note: Don't use async with context manager as get_origin_cdp_client returns a managed global client
|
|
89
|
+
quote = await cdp_client.evm.create_swap_quote(
|
|
90
|
+
from_token=from_token,
|
|
91
|
+
to_token=to_token,
|
|
92
|
+
from_amount=str(from_amount),
|
|
93
|
+
network=network_for_cdp,
|
|
94
|
+
taker=from_address,
|
|
95
|
+
slippage_bps=slippage_bps,
|
|
96
|
+
signer_address=from_address,
|
|
97
|
+
)
|
|
98
|
+
except Exception as e: # pragma: no cover - defensive
|
|
99
|
+
raise ValueError(f"Failed to create swap quote via CDP: {e!s}")
|
|
100
|
+
|
|
101
|
+
# Extract approval and swap calls if present (prefer QuoteSwapResult canonical fields)
|
|
102
|
+
calls: list[dict] = []
|
|
103
|
+
|
|
104
|
+
def to_xmtp_call(call_like, description: str) -> dict | None:
|
|
105
|
+
if not call_like:
|
|
106
|
+
return None
|
|
107
|
+
# Attributes on QuoteSwapResult call-like objects
|
|
108
|
+
to_value = getattr(call_like, "to", None) or getattr(
|
|
109
|
+
call_like, "target", None
|
|
110
|
+
)
|
|
111
|
+
data_value = getattr(call_like, "data", None) or getattr(
|
|
112
|
+
call_like, "calldata", None
|
|
113
|
+
)
|
|
114
|
+
value_value = getattr(call_like, "value", None)
|
|
115
|
+
# Dict fallback
|
|
116
|
+
if isinstance(call_like, dict):
|
|
117
|
+
to_value = to_value or call_like.get("to") or call_like.get("target")
|
|
118
|
+
data_value = (
|
|
119
|
+
data_value or call_like.get("data") or call_like.get("calldata")
|
|
120
|
+
)
|
|
121
|
+
value_value = value_value or call_like.get("value")
|
|
122
|
+
if not to_value or not data_value:
|
|
123
|
+
return None
|
|
124
|
+
value_hex = (
|
|
125
|
+
value_value
|
|
126
|
+
if isinstance(value_value, str) and value_value.startswith("0x")
|
|
127
|
+
else (hex(int(value_value)) if value_value is not None else "0x0")
|
|
128
|
+
)
|
|
129
|
+
data_hex = (
|
|
130
|
+
data_value if str(data_value).startswith("0x") else f"0x{data_value}"
|
|
131
|
+
)
|
|
132
|
+
return {
|
|
133
|
+
"to": to_value,
|
|
134
|
+
"value": value_hex,
|
|
135
|
+
"data": data_hex,
|
|
136
|
+
"metadata": {
|
|
137
|
+
"description": description,
|
|
138
|
+
"transactionType": "swap_step",
|
|
139
|
+
"fromToken": from_token,
|
|
140
|
+
"toToken": to_token,
|
|
141
|
+
"amountIn": from_amount,
|
|
142
|
+
"slippageBps": slippage_bps,
|
|
143
|
+
},
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
# Heuristics for various response shapes
|
|
147
|
+
approval = (
|
|
148
|
+
getattr(quote, "approval", None)
|
|
149
|
+
or getattr(quote, "approval_call_data", None)
|
|
150
|
+
or (quote.get("approval") if isinstance(quote, dict) else None)
|
|
151
|
+
or (quote.get("approval_call_data") if isinstance(quote, dict) else None)
|
|
152
|
+
)
|
|
153
|
+
approval_xmtp = to_xmtp_call(approval, "Approve token spending if required")
|
|
154
|
+
if approval_xmtp:
|
|
155
|
+
calls.append(approval_xmtp)
|
|
156
|
+
|
|
157
|
+
swap_call = (
|
|
158
|
+
getattr(quote, "swap", None)
|
|
159
|
+
or getattr(quote, "swap_call_data", None)
|
|
160
|
+
or (quote.get("swap") if isinstance(quote, dict) else None)
|
|
161
|
+
or (quote.get("swap_call_data") if isinstance(quote, dict) else None)
|
|
162
|
+
)
|
|
163
|
+
swap_xmtp = to_xmtp_call(swap_call, "Execute token swap")
|
|
164
|
+
if swap_xmtp:
|
|
165
|
+
calls.append(swap_xmtp)
|
|
166
|
+
|
|
167
|
+
if not calls:
|
|
168
|
+
# As a final fallback, some responses may provide a generic 'calls' list
|
|
169
|
+
raw_calls = getattr(quote, "calls", None) or (
|
|
170
|
+
quote.get("calls") if isinstance(quote, dict) else None
|
|
171
|
+
)
|
|
172
|
+
if isinstance(raw_calls, list):
|
|
173
|
+
for idx, c in enumerate(raw_calls):
|
|
174
|
+
x = to_xmtp_call(c, f"Swap step {idx + 1}")
|
|
175
|
+
if x:
|
|
176
|
+
calls.append(x)
|
|
177
|
+
|
|
178
|
+
if not calls:
|
|
179
|
+
raise ValueError(
|
|
180
|
+
"CDP swap quote did not return callable steps compatible with wallet_sendCalls"
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
# Build XMTP wallet_sendCalls payload
|
|
184
|
+
wallet_send_calls = {
|
|
185
|
+
"version": "1.0",
|
|
186
|
+
"from": from_address,
|
|
187
|
+
"chainId": chain_id_hex,
|
|
188
|
+
"calls": calls,
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
# Attachment for chat
|
|
192
|
+
attachment: ChatMessageAttachment = {
|
|
193
|
+
"type": ChatMessageAttachmentType.XMTP,
|
|
194
|
+
"url": None,
|
|
195
|
+
"json": wallet_send_calls,
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
# Human-friendly message
|
|
199
|
+
content_message = (
|
|
200
|
+
f"I created a swap transaction request to exchange {from_amount} units of {from_token} "
|
|
201
|
+
f"for {to_token} on {agent.network_id}. Review and sign to execute."
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
return content_message, [attachment]
|
|
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
|