intentkit 0.7.5.dev16__tar.gz → 0.7.5.dev17__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.7.5.dev16 → intentkit-0.7.5.dev17}/PKG-INFO +1 -1
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/__init__.py +1 -1
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/agent.py +82 -13
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/pyproject.toml +1 -1
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/lifi/__init__.py +4 -4
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/lifi/token_execute.py +24 -12
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/lifi/token_quote.py +2 -2
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/lifi/utils.py +96 -43
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/.gitignore +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/LICENSE +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/MANIFEST.in +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/abstracts/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/abstracts/agent.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/abstracts/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/abstracts/engine.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/abstracts/graph.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/abstracts/skill.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/abstracts/twitter.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/clients/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/clients/cdp.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/clients/twitter.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/clients/web3.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/config/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/config/config.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/core/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/core/agent.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/core/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/core/chat.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/core/client.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/core/credit.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/core/engine.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/core/node.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/core/prompt.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/agent_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/agent_public.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/agent_schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/app_setting.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/chat.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/conversation.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/credit.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/db.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/db_mig.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/generator.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/llm.csv +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/llm.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/redis.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/skill.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/skills.csv +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/models/user.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/acolyt/ask.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/acolyt/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/acolyt/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/aixbt/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/aixbt/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/aixbt/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/aixbt/projects.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/aixbt/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/allora/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/allora/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/allora/price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/allora/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/basename/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/basename/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/basename/basename.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/basename/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/carv/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/carv/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/carv/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/carv/carv.webp +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/carv/fetch_news.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/carv/onchain_query.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/carv/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/casino/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/casino/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/casino/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/casino/casino.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/casino/deck_draw.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/casino/deck_shuffle.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/casino/dice_roll.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/casino/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/casino/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cdp/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cdp/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cdp/cdp.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cdp/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/chainlist/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/chainlist/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/chainlist/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/common/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/common/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/common/common.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/common/current_time.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/common/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptopanic/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dapplooker/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dapplooker/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dexscreener/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dune_analytics/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/elfa/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/elfa/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/elfa/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/elfa/mention.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/elfa/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/elfa/stats.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/elfa/tokens.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/elfa/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/abi/route.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/best_yield.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/enso.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/networks.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/prices.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/route.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/tokens.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/enso/wallet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/erc20/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/erc20/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/erc20/erc20.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/erc20/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/erc721/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/erc721/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/erc721/erc721.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/erc721/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/clear.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/query.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/firecrawl/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/github/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/github/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/github/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/github/github.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/github/github_search.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/github/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/heurist.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/heurist/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/http/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/http/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/http/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/http/get.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/http/http.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/http/post.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/http/put.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/http/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/lifi/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/lifi/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/lifi/lifi.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/lifi/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/moralis.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/tests/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/moralis/tests/test_wallet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/morpho/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/morpho/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/morpho/morpho.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/morpho/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/nation/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/nation/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/nation/nation.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/nation/nft_check.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/nation/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/openai/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/openai/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/openai/dalle_image_generation.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/openai/gpt_image_generation.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/openai/gpt_image_to_image.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/openai/image_to_text.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/openai/openai.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/openai/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/constants.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/pyth/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/pyth/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/pyth/pyth.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/pyth/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/skills.toml +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/slack/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/slack/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/slack/get_channel.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/slack/get_message.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/slack/schedule_message.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/slack/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/slack/send_message.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/slack/slack.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/delete_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/insert_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/supabase.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/update_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/superfluid/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/superfluid/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/superfluid/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/superfluid/superfluid.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/add_autonomous_task.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/delete_autonomous_task.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/edit_autonomous_task.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/list_autonomous_tasks.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/read_agent_api_key.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/regenerate_agent_api_key.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/system/system.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/tavily/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/tavily/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/tavily/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/tavily/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/constants.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/moralis.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/token_analytics.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/token_price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/token/token_search.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/follow_user.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/retweet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/twitter/twitter.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/unrealspeech/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_audio/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_audio/input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/config.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/web_scraper/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/web_scraper/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/web_scraper/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/web_scraper/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/weth/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/weth/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/weth/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/weth/weth.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/wow/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/wow/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/wow/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/wow/wow.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/xmtp/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/xmtp/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/xmtp/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/xmtp/price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/xmtp/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/xmtp/swap.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/xmtp/transfer.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/skills/xmtp/xmtp.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/utils/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/utils/chain.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/utils/error.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/utils/logging.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/utils/random.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/utils/s3.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/utils/slack_alert.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev17}/utils/tx.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.7.5.
|
|
3
|
+
Version: 0.7.5.dev17
|
|
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
|
|
@@ -142,7 +142,7 @@ class AgentExample(BaseModel):
|
|
|
142
142
|
description="Name of the example",
|
|
143
143
|
max_length=50,
|
|
144
144
|
json_schema_extra={
|
|
145
|
-
"x-
|
|
145
|
+
"x-placeholder": "Add a name for the example",
|
|
146
146
|
},
|
|
147
147
|
),
|
|
148
148
|
]
|
|
@@ -152,7 +152,7 @@ class AgentExample(BaseModel):
|
|
|
152
152
|
description="Description of the example",
|
|
153
153
|
max_length=200,
|
|
154
154
|
json_schema_extra={
|
|
155
|
-
"x-
|
|
155
|
+
"x-placeholder": "Add a short description for the example",
|
|
156
156
|
},
|
|
157
157
|
),
|
|
158
158
|
]
|
|
@@ -162,7 +162,7 @@ class AgentExample(BaseModel):
|
|
|
162
162
|
description="Example prompt",
|
|
163
163
|
max_length=2000,
|
|
164
164
|
json_schema_extra={
|
|
165
|
-
"x-
|
|
165
|
+
"x-placeholder": "The prompt will be sent to the agent",
|
|
166
166
|
},
|
|
167
167
|
),
|
|
168
168
|
]
|
|
@@ -394,6 +394,21 @@ class AgentTable(Base, AgentUserInputColumns):
|
|
|
394
394
|
nullable=True,
|
|
395
395
|
comment="List of example interactions for the agent",
|
|
396
396
|
)
|
|
397
|
+
public_extra = Column(
|
|
398
|
+
JSON().with_variant(JSONB(), "postgresql"),
|
|
399
|
+
nullable=True,
|
|
400
|
+
comment="Public extra data of the agent",
|
|
401
|
+
)
|
|
402
|
+
deployed_at = Column(
|
|
403
|
+
DateTime(timezone=True),
|
|
404
|
+
nullable=True,
|
|
405
|
+
comment="Timestamp when the agent was deployed",
|
|
406
|
+
)
|
|
407
|
+
public_info_updated_at = Column(
|
|
408
|
+
DateTime(timezone=True),
|
|
409
|
+
nullable=True,
|
|
410
|
+
comment="Timestamp when the agent public info was last updated",
|
|
411
|
+
)
|
|
397
412
|
|
|
398
413
|
# auto timestamp
|
|
399
414
|
created_at = Column(
|
|
@@ -881,6 +896,8 @@ class AgentUpdate(AgentUserInput):
|
|
|
881
896
|
# update
|
|
882
897
|
for key, value in self.model_dump(exclude_unset=True).items():
|
|
883
898
|
setattr(db_agent, key, value)
|
|
899
|
+
db_agent.version = self.hash()
|
|
900
|
+
db_agent.deployed_at = func.now()
|
|
884
901
|
await db.commit()
|
|
885
902
|
await db.refresh(db_agent)
|
|
886
903
|
return Agent.model_validate(db_agent)
|
|
@@ -903,6 +920,7 @@ class AgentUpdate(AgentUserInput):
|
|
|
903
920
|
setattr(db_agent, key, value)
|
|
904
921
|
# version
|
|
905
922
|
db_agent.version = self.hash()
|
|
923
|
+
db_agent.deployed_at = func.now()
|
|
906
924
|
await db.commit()
|
|
907
925
|
await db.refresh(db_agent)
|
|
908
926
|
return Agent.model_validate(db_agent)
|
|
@@ -964,6 +982,7 @@ class AgentCreate(AgentUpdate):
|
|
|
964
982
|
try:
|
|
965
983
|
db_agent = AgentTable(**self.model_dump())
|
|
966
984
|
db_agent.version = self.hash()
|
|
985
|
+
db_agent.deployed_at = func.now()
|
|
967
986
|
db.add(db_agent)
|
|
968
987
|
await db.commit()
|
|
969
988
|
await db.refresh(db_agent)
|
|
@@ -991,7 +1010,6 @@ class AgentPublicInfo(BaseModel):
|
|
|
991
1010
|
default=None,
|
|
992
1011
|
description="Description of the agent, for public view, not contained in prompt",
|
|
993
1012
|
json_schema_extra={
|
|
994
|
-
"x-group": "basic",
|
|
995
1013
|
"x-placeholder": "Introduce your agent",
|
|
996
1014
|
},
|
|
997
1015
|
),
|
|
@@ -1002,7 +1020,6 @@ class AgentPublicInfo(BaseModel):
|
|
|
1002
1020
|
default=None,
|
|
1003
1021
|
description="Link of external website of the agent, if you have one",
|
|
1004
1022
|
json_schema_extra={
|
|
1005
|
-
"x-group": "basic",
|
|
1006
1023
|
"x-placeholder": "Enter agent external website url",
|
|
1007
1024
|
"format": "uri",
|
|
1008
1025
|
},
|
|
@@ -1016,7 +1033,6 @@ class AgentPublicInfo(BaseModel):
|
|
|
1016
1033
|
max_length=10,
|
|
1017
1034
|
min_length=1,
|
|
1018
1035
|
json_schema_extra={
|
|
1019
|
-
"x-group": "basic",
|
|
1020
1036
|
"x-placeholder": "If one day, your agent has it's own token, what will it be?",
|
|
1021
1037
|
},
|
|
1022
1038
|
),
|
|
@@ -1028,8 +1044,7 @@ class AgentPublicInfo(BaseModel):
|
|
|
1028
1044
|
description="Token address of the agent",
|
|
1029
1045
|
max_length=42,
|
|
1030
1046
|
json_schema_extra={
|
|
1031
|
-
"x-
|
|
1032
|
-
"readOnly": True,
|
|
1047
|
+
"x-placeholder": "The contract address of the agent token",
|
|
1033
1048
|
},
|
|
1034
1049
|
),
|
|
1035
1050
|
]
|
|
@@ -1040,8 +1055,7 @@ class AgentPublicInfo(BaseModel):
|
|
|
1040
1055
|
description="Pool of the agent token",
|
|
1041
1056
|
max_length=42,
|
|
1042
1057
|
json_schema_extra={
|
|
1043
|
-
"x-
|
|
1044
|
-
"readOnly": True,
|
|
1058
|
+
"x-placeholder": "The contract address of the agent token pool",
|
|
1045
1059
|
},
|
|
1046
1060
|
),
|
|
1047
1061
|
]
|
|
@@ -1052,7 +1066,7 @@ class AgentPublicInfo(BaseModel):
|
|
|
1052
1066
|
description="Fee percentage of the agent",
|
|
1053
1067
|
ge=Decimal("0.0"),
|
|
1054
1068
|
json_schema_extra={
|
|
1055
|
-
"x-
|
|
1069
|
+
"x-placeholder": "Agent will charge service fee according to this ratio.",
|
|
1056
1070
|
},
|
|
1057
1071
|
),
|
|
1058
1072
|
]
|
|
@@ -1063,7 +1077,7 @@ class AgentPublicInfo(BaseModel):
|
|
|
1063
1077
|
description="Introduction of the example",
|
|
1064
1078
|
max_length=2000,
|
|
1065
1079
|
json_schema_extra={
|
|
1066
|
-
"x-
|
|
1080
|
+
"x-placeholder": "Add a short introduction in new chat",
|
|
1067
1081
|
},
|
|
1068
1082
|
),
|
|
1069
1083
|
]
|
|
@@ -1074,11 +1088,51 @@ class AgentPublicInfo(BaseModel):
|
|
|
1074
1088
|
description="List of example prompts for the agent",
|
|
1075
1089
|
max_length=6,
|
|
1076
1090
|
json_schema_extra={
|
|
1077
|
-
"x-group": "examples",
|
|
1078
1091
|
"x-inline": True,
|
|
1079
1092
|
},
|
|
1080
1093
|
),
|
|
1081
1094
|
]
|
|
1095
|
+
public_extra: Annotated[
|
|
1096
|
+
Optional[Dict[str, Any]],
|
|
1097
|
+
PydanticField(
|
|
1098
|
+
default=None,
|
|
1099
|
+
description="Public extra data of the agent",
|
|
1100
|
+
),
|
|
1101
|
+
]
|
|
1102
|
+
|
|
1103
|
+
async def override(self, agent_id: str) -> "Agent":
|
|
1104
|
+
"""Override agent public info with all fields from this instance.
|
|
1105
|
+
|
|
1106
|
+
Args:
|
|
1107
|
+
agent_id: The ID of the agent to override
|
|
1108
|
+
|
|
1109
|
+
Returns:
|
|
1110
|
+
The updated Agent instance
|
|
1111
|
+
"""
|
|
1112
|
+
async with get_session() as session:
|
|
1113
|
+
# Get the agent from database
|
|
1114
|
+
result = await session.execute(
|
|
1115
|
+
select(AgentTable).where(AgentTable.id == agent_id)
|
|
1116
|
+
)
|
|
1117
|
+
db_agent = result.scalar_one_or_none()
|
|
1118
|
+
|
|
1119
|
+
if not db_agent:
|
|
1120
|
+
raise IntentKitAPIError(404, "NotFound", f"Agent {agent_id} not found")
|
|
1121
|
+
|
|
1122
|
+
# Update public info fields
|
|
1123
|
+
update_data = self.model_dump()
|
|
1124
|
+
for key, value in update_data.items():
|
|
1125
|
+
if hasattr(db_agent, key):
|
|
1126
|
+
setattr(db_agent, key, value)
|
|
1127
|
+
|
|
1128
|
+
# Update public_info_updated_at timestamp
|
|
1129
|
+
db_agent.public_info_updated_at = func.now()
|
|
1130
|
+
|
|
1131
|
+
# Commit changes
|
|
1132
|
+
await session.commit()
|
|
1133
|
+
await session.refresh(db_agent)
|
|
1134
|
+
|
|
1135
|
+
return Agent.model_validate(db_agent)
|
|
1082
1136
|
|
|
1083
1137
|
|
|
1084
1138
|
class Agent(AgentCreate, AgentPublicInfo):
|
|
@@ -1124,6 +1178,21 @@ class Agent(AgentCreate, AgentPublicInfo):
|
|
|
1124
1178
|
description="Other helper data fields for query, come from agent and agent data"
|
|
1125
1179
|
),
|
|
1126
1180
|
]
|
|
1181
|
+
deployed_at: Annotated[
|
|
1182
|
+
Optional[datetime],
|
|
1183
|
+
PydanticField(
|
|
1184
|
+
default=None,
|
|
1185
|
+
description="Timestamp when the agent was deployed",
|
|
1186
|
+
),
|
|
1187
|
+
]
|
|
1188
|
+
public_info_updated_at: Annotated[
|
|
1189
|
+
Optional[datetime],
|
|
1190
|
+
PydanticField(
|
|
1191
|
+
default=None,
|
|
1192
|
+
description="Timestamp when the agent public info was last updated",
|
|
1193
|
+
),
|
|
1194
|
+
]
|
|
1195
|
+
|
|
1127
1196
|
# auto timestamp
|
|
1128
1197
|
created_at: Annotated[
|
|
1129
1198
|
datetime,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import List, Optional, TypedDict
|
|
2
|
+
from typing import Any, List, Optional, TypedDict
|
|
3
3
|
|
|
4
4
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
5
5
|
from intentkit.skills.base import SkillConfig, SkillState
|
|
@@ -32,10 +32,10 @@ async def get_skills(
|
|
|
32
32
|
config: "Config",
|
|
33
33
|
is_private: bool,
|
|
34
34
|
store: SkillStoreABC,
|
|
35
|
-
**_,
|
|
35
|
+
**_: Any,
|
|
36
36
|
) -> list[LiFiBaseTool]:
|
|
37
37
|
"""Get all LiFi skills."""
|
|
38
|
-
available_skills = []
|
|
38
|
+
available_skills: list[str] = []
|
|
39
39
|
|
|
40
40
|
# Log configuration
|
|
41
41
|
logger.info(f"[LiFi_Skills] Initializing with config: {config}")
|
|
@@ -57,7 +57,7 @@ async def get_skills(
|
|
|
57
57
|
logger.info(f"[LiFi_Skills] Available skills: {available_skills}")
|
|
58
58
|
|
|
59
59
|
# Get each skill using the cached getter
|
|
60
|
-
skills = []
|
|
60
|
+
skills: list[LiFiBaseTool] = []
|
|
61
61
|
for name in available_skills:
|
|
62
62
|
try:
|
|
63
63
|
skill = get_lifi_skill(name, store, config)
|
|
@@ -2,11 +2,12 @@ import asyncio
|
|
|
2
2
|
from typing import Any, Dict, List, Optional, Type
|
|
3
3
|
|
|
4
4
|
import httpx
|
|
5
|
+
from coinbase_agentkit import CdpEvmWalletProvider
|
|
5
6
|
from pydantic import BaseModel, Field
|
|
6
7
|
from web3 import Web3
|
|
7
8
|
|
|
8
9
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
9
|
-
from intentkit.clients import get_cdp_client
|
|
10
|
+
from intentkit.clients import CdpClient, get_cdp_client
|
|
10
11
|
from intentkit.skills.lifi.base import LiFiBaseTool
|
|
11
12
|
from intentkit.skills.lifi.token_quote import TokenQuote
|
|
12
13
|
from intentkit.skills.lifi.utils import (
|
|
@@ -69,7 +70,7 @@ class TokenExecute(LiFiBaseTool):
|
|
|
69
70
|
default_slippage: float = 0.03
|
|
70
71
|
allowed_chains: Optional[List[str]] = None
|
|
71
72
|
max_execution_time: int = 300
|
|
72
|
-
quote_tool: TokenQuote = Field(default=None, exclude=True)
|
|
73
|
+
quote_tool: Optional[TokenQuote] = Field(default=None, exclude=True)
|
|
73
74
|
|
|
74
75
|
def __init__(
|
|
75
76
|
self,
|
|
@@ -77,7 +78,7 @@ class TokenExecute(LiFiBaseTool):
|
|
|
77
78
|
default_slippage: float = 0.03,
|
|
78
79
|
allowed_chains: Optional[List[str]] = None,
|
|
79
80
|
max_execution_time: int = 300,
|
|
80
|
-
):
|
|
81
|
+
) -> None:
|
|
81
82
|
"""Initialize the TokenExecute skill with configuration options."""
|
|
82
83
|
super().__init__(skill_store=skill_store)
|
|
83
84
|
self.default_slippage = default_slippage
|
|
@@ -93,6 +94,8 @@ class TokenExecute(LiFiBaseTool):
|
|
|
93
94
|
|
|
94
95
|
def _format_quote_result(self, data: Dict[str, Any]) -> str:
|
|
95
96
|
"""Format the quote result in a readable format."""
|
|
97
|
+
if self.quote_tool is None:
|
|
98
|
+
raise RuntimeError("Quote tool is not initialized")
|
|
96
99
|
# Use the same formatting as token_quote
|
|
97
100
|
return self.quote_tool._format_quote_result(data)
|
|
98
101
|
|
|
@@ -103,7 +106,7 @@ class TokenExecute(LiFiBaseTool):
|
|
|
103
106
|
from_token: str,
|
|
104
107
|
to_token: str,
|
|
105
108
|
from_amount: str,
|
|
106
|
-
slippage: float = None,
|
|
109
|
+
slippage: Optional[float] = None,
|
|
107
110
|
**kwargs,
|
|
108
111
|
) -> str:
|
|
109
112
|
"""Execute a token transfer."""
|
|
@@ -168,7 +171,9 @@ class TokenExecute(LiFiBaseTool):
|
|
|
168
171
|
|
|
169
172
|
# Step 3: Execute transaction
|
|
170
173
|
tx_hash = await self._execute_transfer_transaction(
|
|
171
|
-
cdp_wallet_provider,
|
|
174
|
+
cdp_wallet_provider,
|
|
175
|
+
quote_data,
|
|
176
|
+
from_address,
|
|
172
177
|
)
|
|
173
178
|
|
|
174
179
|
# Step 4: Monitor status and return result
|
|
@@ -180,10 +185,12 @@ class TokenExecute(LiFiBaseTool):
|
|
|
180
185
|
self.logger.error("LiFi_Error: %s", str(e))
|
|
181
186
|
return f"An unexpected error occurred: {str(e)}"
|
|
182
187
|
|
|
183
|
-
async def _get_cdp_wallet_provider(
|
|
188
|
+
async def _get_cdp_wallet_provider(
|
|
189
|
+
self, agent_id: str
|
|
190
|
+
) -> CdpEvmWalletProvider | str:
|
|
184
191
|
"""Get CDP wallet provider with error handling."""
|
|
185
192
|
try:
|
|
186
|
-
cdp_client = await get_cdp_client(agent_id, self.skill_store)
|
|
193
|
+
cdp_client: CdpClient = await get_cdp_client(agent_id, self.skill_store)
|
|
187
194
|
if not cdp_client:
|
|
188
195
|
return "CDP client not available. Please ensure your agent has CDP wallet configuration."
|
|
189
196
|
|
|
@@ -207,7 +214,7 @@ class TokenExecute(LiFiBaseTool):
|
|
|
207
214
|
from_amount: str,
|
|
208
215
|
slippage: float,
|
|
209
216
|
from_address: str,
|
|
210
|
-
) -> Dict[str, Any]:
|
|
217
|
+
) -> Dict[str, Any] | str:
|
|
211
218
|
"""Get quote from LiFi API."""
|
|
212
219
|
api_params = build_quote_params(
|
|
213
220
|
from_chain,
|
|
@@ -249,7 +256,7 @@ class TokenExecute(LiFiBaseTool):
|
|
|
249
256
|
return data
|
|
250
257
|
|
|
251
258
|
async def _handle_token_approval(
|
|
252
|
-
self, wallet_provider, quote_data: Dict[str, Any]
|
|
259
|
+
self, wallet_provider: CdpEvmWalletProvider, quote_data: Dict[str, Any]
|
|
253
260
|
) -> Optional[str]:
|
|
254
261
|
"""Handle ERC20 token approval if needed."""
|
|
255
262
|
estimate = quote_data.get("estimate", {})
|
|
@@ -273,13 +280,18 @@ class TokenExecute(LiFiBaseTool):
|
|
|
273
280
|
raise Exception(f"Failed to approve token: {str(e)}")
|
|
274
281
|
|
|
275
282
|
async def _execute_transfer_transaction(
|
|
276
|
-
self,
|
|
283
|
+
self,
|
|
284
|
+
wallet_provider: CdpEvmWalletProvider,
|
|
285
|
+
quote_data: Dict[str, Any],
|
|
286
|
+
from_address: str,
|
|
277
287
|
) -> str:
|
|
278
288
|
"""Execute the main transfer transaction."""
|
|
279
289
|
transaction_request = quote_data.get("transactionRequest")
|
|
280
290
|
|
|
281
291
|
try:
|
|
282
|
-
tx_params = prepare_transaction_params(
|
|
292
|
+
tx_params = prepare_transaction_params(
|
|
293
|
+
transaction_request, wallet_address=from_address
|
|
294
|
+
)
|
|
283
295
|
self.logger.info(
|
|
284
296
|
f"Sending transaction to {tx_params['to']} with value {tx_params['value']}"
|
|
285
297
|
)
|
|
@@ -407,7 +419,7 @@ class TokenExecute(LiFiBaseTool):
|
|
|
407
419
|
|
|
408
420
|
async def _check_and_set_allowance(
|
|
409
421
|
self,
|
|
410
|
-
wallet_provider,
|
|
422
|
+
wallet_provider: CdpEvmWalletProvider,
|
|
411
423
|
token_address: str,
|
|
412
424
|
approval_address: str,
|
|
413
425
|
amount: str,
|
|
@@ -65,7 +65,7 @@ class TokenQuote(LiFiBaseTool):
|
|
|
65
65
|
skill_store: SkillStoreABC,
|
|
66
66
|
default_slippage: float = 0.03,
|
|
67
67
|
allowed_chains: Optional[List[str]] = None,
|
|
68
|
-
):
|
|
68
|
+
) -> None:
|
|
69
69
|
"""Initialize the TokenQuote skill with configuration options."""
|
|
70
70
|
super().__init__(skill_store=skill_store)
|
|
71
71
|
self.default_slippage = default_slippage
|
|
@@ -78,7 +78,7 @@ class TokenQuote(LiFiBaseTool):
|
|
|
78
78
|
from_token: str,
|
|
79
79
|
to_token: str,
|
|
80
80
|
from_amount: str,
|
|
81
|
-
slippage: float = None,
|
|
81
|
+
slippage: Optional[float] = None,
|
|
82
82
|
**kwargs,
|
|
83
83
|
) -> str:
|
|
84
84
|
"""Get a quote for token transfer."""
|
|
@@ -4,6 +4,7 @@ LiFi Skills Utilities
|
|
|
4
4
|
Common utilities and helper functions for LiFi token transfer skills.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
+
from decimal import ROUND_DOWN, Decimal, InvalidOperation
|
|
7
8
|
from typing import Any, Dict, List, Optional, Tuple
|
|
8
9
|
|
|
9
10
|
import httpx
|
|
@@ -179,7 +180,7 @@ def handle_api_response(
|
|
|
179
180
|
from_chain: str,
|
|
180
181
|
to_token: str,
|
|
181
182
|
to_chain: str,
|
|
182
|
-
) -> Tuple[Optional[Dict], Optional[str]]:
|
|
183
|
+
) -> Tuple[Optional[Dict[str, Any]], Optional[str]]:
|
|
183
184
|
"""
|
|
184
185
|
Handle LiFi API response and return data or error message.
|
|
185
186
|
|
|
@@ -293,17 +294,20 @@ def convert_chain_to_id(chain: str) -> int:
|
|
|
293
294
|
|
|
294
295
|
|
|
295
296
|
def convert_amount_to_wei(amount: str, token_symbol: str = "ETH") -> str:
|
|
296
|
-
"""
|
|
297
|
-
Convert human-readable amount to wei format for LiFi API.
|
|
297
|
+
"""Convert a token amount into the smallest denomination expected by LiFi."""
|
|
298
298
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
299
|
+
if amount is None:
|
|
300
|
+
raise ValueError("Amount is required")
|
|
301
|
+
|
|
302
|
+
normalized_amount = amount.strip()
|
|
303
|
+
if not normalized_amount:
|
|
304
|
+
raise ValueError("Amount cannot be empty")
|
|
305
|
+
|
|
306
|
+
# If the user already provided an integer amount without a decimal point,
|
|
307
|
+
# assume it is already in the token's smallest denomination.
|
|
308
|
+
if normalized_amount.isdigit():
|
|
309
|
+
return normalized_amount
|
|
302
310
|
|
|
303
|
-
Returns:
|
|
304
|
-
Amount in wei format as string
|
|
305
|
-
"""
|
|
306
|
-
# Default decimals for common tokens
|
|
307
311
|
token_decimals = {
|
|
308
312
|
"ETH": 18,
|
|
309
313
|
"USDC": 6,
|
|
@@ -318,13 +322,16 @@ def convert_amount_to_wei(amount: str, token_symbol: str = "ETH") -> str:
|
|
|
318
322
|
decimals = token_decimals.get(token_symbol.upper(), 18)
|
|
319
323
|
|
|
320
324
|
try:
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
325
|
+
decimal_amount = Decimal(normalized_amount)
|
|
326
|
+
scaled_amount = (decimal_amount * (Decimal(10) ** decimals)).quantize(
|
|
327
|
+
Decimal("1"),
|
|
328
|
+
rounding=ROUND_DOWN,
|
|
329
|
+
)
|
|
330
|
+
return str(int(scaled_amount))
|
|
331
|
+
except (InvalidOperation, ValueError, TypeError):
|
|
332
|
+
# If conversion fails, fall back to the original value to avoid
|
|
333
|
+
# accidentally submitting an incorrect amount.
|
|
334
|
+
return normalized_amount
|
|
328
335
|
|
|
329
336
|
|
|
330
337
|
def build_quote_params(
|
|
@@ -350,15 +357,12 @@ def build_quote_params(
|
|
|
350
357
|
Raises:
|
|
351
358
|
ValueError: If chain identifiers are not recognized
|
|
352
359
|
"""
|
|
353
|
-
# Convert amount to wei format for API
|
|
354
|
-
wei_amount = convert_amount_to_wei(from_amount, from_token)
|
|
355
|
-
|
|
356
360
|
return {
|
|
357
361
|
"fromChain": convert_chain_to_id(from_chain),
|
|
358
362
|
"toChain": convert_chain_to_id(to_chain),
|
|
359
363
|
"fromToken": from_token,
|
|
360
364
|
"toToken": to_token,
|
|
361
|
-
"fromAmount":
|
|
365
|
+
"fromAmount": convert_amount_to_wei(from_amount, from_token),
|
|
362
366
|
"fromAddress": from_address or DUMMY_ADDRESS,
|
|
363
367
|
"slippage": slippage,
|
|
364
368
|
}
|
|
@@ -381,36 +385,85 @@ def is_native_token(token_address: str) -> bool:
|
|
|
381
385
|
)
|
|
382
386
|
|
|
383
387
|
|
|
384
|
-
def
|
|
385
|
-
"""
|
|
386
|
-
Prepare transaction parameters for CDP wallet provider.
|
|
388
|
+
def _convert_hex_or_decimal(value: Any) -> Optional[int]:
|
|
389
|
+
"""Convert LiFi transaction numeric values into integers."""
|
|
387
390
|
|
|
388
|
-
|
|
389
|
-
|
|
391
|
+
if value is None:
|
|
392
|
+
return None
|
|
390
393
|
|
|
391
|
-
|
|
392
|
-
|
|
394
|
+
if isinstance(value, int):
|
|
395
|
+
return value
|
|
396
|
+
|
|
397
|
+
if isinstance(value, str):
|
|
398
|
+
stripped = value.strip()
|
|
399
|
+
if not stripped:
|
|
400
|
+
return None
|
|
401
|
+
if stripped.startswith("0x"):
|
|
402
|
+
return int(stripped, 16)
|
|
403
|
+
try:
|
|
404
|
+
return int(Decimal(stripped))
|
|
405
|
+
except (InvalidOperation, ValueError):
|
|
406
|
+
return None
|
|
407
|
+
|
|
408
|
+
return None
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
def prepare_transaction_params(
|
|
412
|
+
transaction_request: Dict[str, Any],
|
|
413
|
+
wallet_address: Optional[str] = None,
|
|
414
|
+
) -> Dict[str, Any]:
|
|
415
|
+
"""Prepare transaction parameters for the CDP wallet provider."""
|
|
393
416
|
|
|
394
|
-
Raises:
|
|
395
|
-
Exception: If required parameters are missing
|
|
396
|
-
"""
|
|
397
417
|
to_address = transaction_request.get("to")
|
|
398
|
-
value = transaction_request.get("value", "
|
|
418
|
+
value = transaction_request.get("value", "0x0")
|
|
399
419
|
data = transaction_request.get("data", "0x")
|
|
400
420
|
|
|
401
421
|
if not to_address:
|
|
402
|
-
raise Exception("
|
|
422
|
+
raise Exception("Transaction request is missing destination address")
|
|
403
423
|
|
|
404
|
-
|
|
405
|
-
if isinstance(value, str):
|
|
406
|
-
value = int(value, 16) if value.startswith("0x") else int(value)
|
|
407
|
-
|
|
408
|
-
return {
|
|
424
|
+
tx_params: Dict[str, Any] = {
|
|
409
425
|
"to": Web3.to_checksum_address(to_address),
|
|
410
|
-
"value": value,
|
|
411
426
|
"data": data,
|
|
412
427
|
}
|
|
413
428
|
|
|
429
|
+
int_value = _convert_hex_or_decimal(value)
|
|
430
|
+
if int_value is not None:
|
|
431
|
+
tx_params["value"] = int_value
|
|
432
|
+
|
|
433
|
+
chain_id = _convert_hex_or_decimal(transaction_request.get("chainId"))
|
|
434
|
+
if chain_id is not None:
|
|
435
|
+
tx_params["chainId"] = chain_id
|
|
436
|
+
|
|
437
|
+
gas_limit = _convert_hex_or_decimal(
|
|
438
|
+
transaction_request.get("gasLimit") or transaction_request.get("gas")
|
|
439
|
+
)
|
|
440
|
+
if gas_limit is not None:
|
|
441
|
+
tx_params["gas"] = gas_limit
|
|
442
|
+
|
|
443
|
+
gas_price = _convert_hex_or_decimal(transaction_request.get("gasPrice"))
|
|
444
|
+
if gas_price is not None:
|
|
445
|
+
tx_params["gasPrice"] = gas_price
|
|
446
|
+
|
|
447
|
+
max_fee_per_gas = _convert_hex_or_decimal(transaction_request.get("maxFeePerGas"))
|
|
448
|
+
if max_fee_per_gas is not None:
|
|
449
|
+
tx_params["maxFeePerGas"] = max_fee_per_gas
|
|
450
|
+
|
|
451
|
+
max_priority_fee_per_gas = _convert_hex_or_decimal(
|
|
452
|
+
transaction_request.get("maxPriorityFeePerGas")
|
|
453
|
+
)
|
|
454
|
+
if max_priority_fee_per_gas is not None:
|
|
455
|
+
tx_params["maxPriorityFeePerGas"] = max_priority_fee_per_gas
|
|
456
|
+
|
|
457
|
+
nonce = _convert_hex_or_decimal(transaction_request.get("nonce"))
|
|
458
|
+
if nonce is not None:
|
|
459
|
+
tx_params["nonce"] = nonce
|
|
460
|
+
|
|
461
|
+
from_address = transaction_request.get("from") or wallet_address
|
|
462
|
+
if from_address:
|
|
463
|
+
tx_params["from"] = Web3.to_checksum_address(from_address)
|
|
464
|
+
|
|
465
|
+
return tx_params
|
|
466
|
+
|
|
414
467
|
|
|
415
468
|
def format_quote_basic_info(data: Dict[str, Any]) -> Dict[str, Any]:
|
|
416
469
|
"""
|
|
@@ -464,7 +517,7 @@ def format_fees_and_gas(data: Dict[str, Any]) -> Tuple[str, str]:
|
|
|
464
517
|
|
|
465
518
|
# Extract gas and fee costs
|
|
466
519
|
gas_costs = estimate.get("gasCosts", [])
|
|
467
|
-
fee_costs = []
|
|
520
|
+
fee_costs: List[Dict[str, Any]] = []
|
|
468
521
|
|
|
469
522
|
# Collect fee information from included steps
|
|
470
523
|
for step in data.get("includedSteps", []):
|
|
@@ -476,7 +529,7 @@ def format_fees_and_gas(data: Dict[str, Any]) -> Tuple[str, str]:
|
|
|
476
529
|
fees_text = ""
|
|
477
530
|
if fee_costs:
|
|
478
531
|
fees_text = "**Fees:**\n"
|
|
479
|
-
total_fee_usd = 0
|
|
532
|
+
total_fee_usd = 0.0
|
|
480
533
|
for fee in fee_costs:
|
|
481
534
|
fee_name = fee.get("name", "Unknown fee")
|
|
482
535
|
fee_amount = fee.get("amount", "0")
|
|
@@ -508,7 +561,7 @@ def format_fees_and_gas(data: Dict[str, Any]) -> Tuple[str, str]:
|
|
|
508
561
|
gas_text = ""
|
|
509
562
|
if gas_costs:
|
|
510
563
|
gas_text = "**Gas Cost:**\n"
|
|
511
|
-
total_gas_usd = 0
|
|
564
|
+
total_gas_usd = 0.0
|
|
512
565
|
for gas in gas_costs:
|
|
513
566
|
gas_amount = gas.get("amount", "0")
|
|
514
567
|
gas_token = gas.get("token", {}).get("symbol", "ETH")
|
|
@@ -628,7 +681,7 @@ def get_explorer_url(chain_id: int, tx_hash: str) -> str:
|
|
|
628
681
|
|
|
629
682
|
|
|
630
683
|
def format_transaction_result(
|
|
631
|
-
tx_hash: str, chain_id: int, token_info:
|
|
684
|
+
tx_hash: str, chain_id: int, token_info: Optional[Dict[str, str]] = None
|
|
632
685
|
) -> str:
|
|
633
686
|
"""
|
|
634
687
|
Format transaction result with explorer link.
|
|
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
|