intentkit 0.7.5.dev16__tar.gz → 0.7.5.dev18__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/PKG-INFO +1 -1
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/__init__.py +1 -1
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/config/config.py +0 -5
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/engine.py +61 -42
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/agent.py +82 -13
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/llm.py +8 -8
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/pyproject.toml +1 -1
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/__init__.py +1 -1
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/base.py +44 -17
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/best_yield.py +11 -17
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/networks.py +3 -2
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/prices.py +9 -9
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/route.py +27 -23
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/tokens.py +24 -21
- intentkit-0.7.5.dev18/skills/enso/wallet.py +264 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/__init__.py +4 -4
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/token_execute.py +24 -12
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/token_quote.py +2 -2
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/utils.py +96 -43
- intentkit-0.7.5.dev16/skills/enso/wallet.py +0 -379
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/.gitignore +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/LICENSE +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/MANIFEST.in +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/agent.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/engine.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/graph.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/skill.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/abstracts/twitter.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/clients/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/clients/cdp.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/clients/twitter.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/clients/web3.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/config/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/agent.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/chat.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/client.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/credit.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/node.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/core/prompt.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/agent_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/agent_public.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/agent_schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/app_setting.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/chat.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/conversation.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/credit.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/db.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/db_mig.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/generator.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/llm.csv +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/redis.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/skill.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/skills.csv +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/models/user.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/ask.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/acolyt/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/projects.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/aixbt/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/allora/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/basename/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/basename/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/basename/basename.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/basename/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/carv.webp +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/fetch_news.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/onchain_query.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/casino.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/deck_draw.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/deck_shuffle.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/dice_roll.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/casino/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cdp/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cdp/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cdp/cdp.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cdp/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/chainlist/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/common.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/current_time.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/common/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dexscreener/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/mention.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/stats.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/tokens.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/elfa/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/abi/route.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/enso.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/enso/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc20/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc20/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc20/erc20.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc20/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc721/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc721/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc721/erc721.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/erc721/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/clear.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/query.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/firecrawl/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/github.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/github_search.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/github/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/heurist.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/heurist/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/get.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/http.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/post.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/put.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/http/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/lifi.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/lifi/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/moralis.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/tests/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/moralis/tests/test_wallet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/morpho/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/morpho/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/morpho/morpho.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/morpho/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/nation.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/nft_check.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/nation/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/dalle_image_generation.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/gpt_image_generation.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/gpt_image_to_image.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/image_to_text.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/openai.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/openai/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/constants.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/pyth/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/pyth/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/pyth/pyth.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/pyth/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/skills.toml +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/get_channel.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/get_message.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/schedule_message.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/send_message.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/slack/slack.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/delete_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/insert_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/supabase.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/update_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/superfluid/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/superfluid/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/superfluid/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/superfluid/superfluid.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/add_autonomous_task.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/delete_autonomous_task.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/edit_autonomous_task.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/list_autonomous_tasks.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/read_agent_api_key.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/regenerate_agent_api_key.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/system/system.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/constants.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/moralis.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/token_analytics.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/token_price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/token/token_search.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/follow_user.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/retweet.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/twitter/twitter.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/api.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/config.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/utils.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/weth/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/weth/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/weth/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/weth/weth.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/wow/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/wow/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/wow/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/wow/wow.svg +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/README.md +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/base.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/price.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/schema.json +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/swap.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/transfer.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/skills/xmtp/xmtp.png +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/__init__.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/chain.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/error.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/logging.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/random.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/s3.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/utils/slack_alert.py +0 -0
- {intentkit-0.7.5.dev16 → intentkit-0.7.5.dev18}/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.dev18
|
|
4
4
|
Summary: Intent-based AI Agent Platform - Core Package
|
|
5
5
|
Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
|
|
6
6
|
Project-URL: Repository, https://github.com/crestalnetwork/intentkit
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# app/config.py
|
|
2
|
-
import asyncio
|
|
3
1
|
import json
|
|
4
2
|
import logging
|
|
5
3
|
import os
|
|
@@ -11,9 +9,6 @@ from intentkit.utils.logging import setup_logging
|
|
|
11
9
|
from intentkit.utils.s3 import init_s3
|
|
12
10
|
from intentkit.utils.slack_alert import init_slack
|
|
13
11
|
|
|
14
|
-
# hack for cdp bug
|
|
15
|
-
asyncio.set_event_loop_policy(asyncio.DefaultEventLoopPolicy())
|
|
16
|
-
|
|
17
12
|
# Load environment variables from .env file
|
|
18
13
|
load_dotenv()
|
|
19
14
|
|
|
@@ -21,6 +21,7 @@ from typing import Optional, Tuple
|
|
|
21
21
|
|
|
22
22
|
import sqlalchemy
|
|
23
23
|
from epyxid import XID
|
|
24
|
+
from langchain_core.language_models import BaseChatModel
|
|
24
25
|
from langchain_core.messages import (
|
|
25
26
|
BaseMessage,
|
|
26
27
|
HumanMessage,
|
|
@@ -29,6 +30,7 @@ from langchain_core.tools import BaseTool
|
|
|
29
30
|
from langgraph.errors import GraphRecursionError
|
|
30
31
|
from langgraph.graph.state import CompiledStateGraph
|
|
31
32
|
from langgraph.prebuilt import create_react_agent
|
|
33
|
+
from langgraph.runtime import Runtime
|
|
32
34
|
from sqlalchemy import func, update
|
|
33
35
|
from sqlalchemy.exc import SQLAlchemyError
|
|
34
36
|
|
|
@@ -70,8 +72,8 @@ _agents_updated: dict[str, datetime] = {}
|
|
|
70
72
|
_private_agents_updated: dict[str, datetime] = {}
|
|
71
73
|
|
|
72
74
|
|
|
73
|
-
async def
|
|
74
|
-
"""
|
|
75
|
+
async def build_agent(agent: Agent, agent_data: AgentData) -> CompiledStateGraph:
|
|
76
|
+
"""Build an AI agent with specified configuration and tools.
|
|
75
77
|
|
|
76
78
|
This function:
|
|
77
79
|
1. Initializes LLM with specified model
|
|
@@ -81,13 +83,12 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
|
|
|
81
83
|
|
|
82
84
|
Args:
|
|
83
85
|
agent (Agent): Agent configuration object
|
|
86
|
+
agent_data (AgentData): Agent data object
|
|
84
87
|
is_private (bool, optional): Flag indicating whether the agent is private. Defaults to False.
|
|
85
|
-
has_search (bool, optional): Flag indicating whether to include search tools. Defaults to False.
|
|
86
88
|
|
|
87
89
|
Returns:
|
|
88
90
|
CompiledStateGraph: Initialized LangChain agent
|
|
89
91
|
"""
|
|
90
|
-
agent_data = await AgentData.get(agent.id)
|
|
91
92
|
|
|
92
93
|
# Create the LLM model instance
|
|
93
94
|
llm_model = await create_llm_model(
|
|
@@ -108,6 +109,7 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
|
|
|
108
109
|
|
|
109
110
|
# ==== Load skills
|
|
110
111
|
tools: list[BaseTool | dict] = []
|
|
112
|
+
private_tools: list[BaseTool | dict] = []
|
|
111
113
|
|
|
112
114
|
if agent.skills:
|
|
113
115
|
for k, v in agent.skills.items():
|
|
@@ -116,11 +118,18 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
|
|
|
116
118
|
try:
|
|
117
119
|
skill_module = importlib.import_module(f"intentkit.skills.{k}")
|
|
118
120
|
if hasattr(skill_module, "get_skills"):
|
|
121
|
+
# all
|
|
119
122
|
skill_tools = await skill_module.get_skills(
|
|
120
|
-
v,
|
|
123
|
+
v, False, agent_store, agent_id=agent.id
|
|
121
124
|
)
|
|
122
125
|
if skill_tools and len(skill_tools) > 0:
|
|
123
126
|
tools.extend(skill_tools)
|
|
127
|
+
# private
|
|
128
|
+
skill_private_tools = await skill_module.get_skills(
|
|
129
|
+
v, True, agent_store, agent_id=agent.id
|
|
130
|
+
)
|
|
131
|
+
if skill_private_tools and len(skill_private_tools) > 0:
|
|
132
|
+
private_tools.extend(skill_private_tools)
|
|
124
133
|
else:
|
|
125
134
|
logger.error(f"Skill {k} does not have get_skills function")
|
|
126
135
|
except ImportError as e:
|
|
@@ -128,23 +137,33 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
|
|
|
128
137
|
|
|
129
138
|
# filter the duplicate tools
|
|
130
139
|
tools = list({tool.name: tool for tool in tools}.values())
|
|
140
|
+
private_tools = list({tool.name: tool for tool in private_tools}.values())
|
|
131
141
|
|
|
132
142
|
# Add search tools if requested
|
|
133
143
|
if (
|
|
134
|
-
llm_model.info.provider == LLMProvider.OPENAI
|
|
135
|
-
and
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
) # tmp disable gpt-5 search since package bugs
|
|
144
|
+
llm_model.info.provider == LLMProvider.OPENAI and llm_model.info.supports_search
|
|
145
|
+
# and not agent.model.startswith(
|
|
146
|
+
# "gpt-5"
|
|
147
|
+
# ) # tmp disable gpt-5 search since package bugs
|
|
139
148
|
):
|
|
140
149
|
tools.append({"type": "web_search_preview"})
|
|
150
|
+
private_tools.append({"type": "web_search_preview"})
|
|
141
151
|
|
|
142
152
|
# Create the formatted_prompt function using the refactored prompt module
|
|
143
153
|
formatted_prompt = create_formatted_prompt_function(agent, agent_data)
|
|
144
154
|
|
|
155
|
+
# bind tools to llm
|
|
156
|
+
def select_model(
|
|
157
|
+
state: AgentState, runtime: Runtime[AgentContext]
|
|
158
|
+
) -> BaseChatModel:
|
|
159
|
+
context = runtime.context
|
|
160
|
+
if context.is_private:
|
|
161
|
+
return llm.bind_tools(private_tools)
|
|
162
|
+
return llm.bind_tools(tools)
|
|
163
|
+
|
|
145
164
|
for tool in tools:
|
|
146
165
|
logger.info(
|
|
147
|
-
f"[{agent.id}
|
|
166
|
+
f"[{agent.id}] loaded tool: {tool.name if isinstance(tool, BaseTool) else tool}"
|
|
148
167
|
)
|
|
149
168
|
|
|
150
169
|
# Pre model hook
|
|
@@ -157,7 +176,7 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
|
|
|
157
176
|
|
|
158
177
|
# Create ReAct Agent using the LLM and CDP Agentkit tools.
|
|
159
178
|
executor = create_react_agent(
|
|
160
|
-
model=
|
|
179
|
+
model=select_model,
|
|
161
180
|
tools=tools,
|
|
162
181
|
prompt=formatted_prompt,
|
|
163
182
|
pre_model_hook=pre_model_hook,
|
|
@@ -172,7 +191,23 @@ async def create_agent(agent: Agent, is_private: bool = False) -> CompiledStateG
|
|
|
172
191
|
return executor
|
|
173
192
|
|
|
174
193
|
|
|
175
|
-
async def
|
|
194
|
+
async def create_agent(agent: Agent) -> CompiledStateGraph:
|
|
195
|
+
"""Create an AI agent with specified configuration and tools.
|
|
196
|
+
|
|
197
|
+
This function maintains backward compatibility by calling build_agent internally.
|
|
198
|
+
|
|
199
|
+
Args:
|
|
200
|
+
agent (Agent): Agent configuration object
|
|
201
|
+
is_private (bool, optional): Flag indicating whether the agent is private. Defaults to False.
|
|
202
|
+
|
|
203
|
+
Returns:
|
|
204
|
+
CompiledStateGraph: Initialized LangChain agent
|
|
205
|
+
"""
|
|
206
|
+
agent_data = await AgentData.get(agent.id)
|
|
207
|
+
return await build_agent(agent, agent_data)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
async def initialize_agent(aid):
|
|
176
211
|
"""Initialize an AI agent with specified configuration and tools.
|
|
177
212
|
|
|
178
213
|
This function:
|
|
@@ -198,47 +233,34 @@ async def initialize_agent(aid, is_private=False):
|
|
|
198
233
|
)
|
|
199
234
|
|
|
200
235
|
# Create the agent using the new create_agent function
|
|
201
|
-
executor = await create_agent(agent
|
|
236
|
+
executor = await create_agent(agent)
|
|
202
237
|
|
|
203
238
|
# Cache the agent executor
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
_private_agents_updated[aid] = agent.updated_at
|
|
207
|
-
else:
|
|
208
|
-
_agents[aid] = executor
|
|
209
|
-
_agents_updated[aid] = agent.updated_at
|
|
239
|
+
_agents[aid] = executor
|
|
240
|
+
_agents_updated[aid] = agent.deployed_at if agent.deployed_at else agent.updated_at
|
|
210
241
|
|
|
211
242
|
|
|
212
|
-
async def agent_executor(
|
|
213
|
-
agent_id: str, is_private: bool
|
|
214
|
-
) -> Tuple[CompiledStateGraph, float]:
|
|
243
|
+
async def agent_executor(agent_id: str) -> Tuple[CompiledStateGraph, float]:
|
|
215
244
|
start = time.perf_counter()
|
|
216
245
|
agent = await Agent.get(agent_id)
|
|
217
246
|
if not agent:
|
|
218
247
|
raise IntentKitAPIError(
|
|
219
248
|
status_code=404, key="AgentNotFound", message="Agent not found"
|
|
220
249
|
)
|
|
221
|
-
|
|
222
|
-
agents_updated = _private_agents_updated if is_private else _agents_updated
|
|
223
|
-
|
|
250
|
+
updated_at = agent.deployed_at if agent.deployed_at else agent.updated_at
|
|
224
251
|
# Check if agent needs reinitialization due to updates
|
|
225
252
|
needs_reinit = False
|
|
226
|
-
if agent_id in
|
|
227
|
-
if
|
|
228
|
-
agent_id not in agents_updated
|
|
229
|
-
or agent.updated_at != agents_updated[agent_id]
|
|
230
|
-
):
|
|
253
|
+
if agent_id in _agents:
|
|
254
|
+
if agent_id not in _agents_updated or updated_at != _agents_updated[agent_id]:
|
|
231
255
|
needs_reinit = True
|
|
232
|
-
logger.info(
|
|
233
|
-
f"Reinitializing agent {agent_id} due to updates, private mode: {is_private}"
|
|
234
|
-
)
|
|
256
|
+
logger.info(f"Reinitializing agent {agent_id} due to updates")
|
|
235
257
|
|
|
236
258
|
# cold start or needs reinitialization
|
|
237
259
|
cold_start_cost = 0.0
|
|
238
|
-
if (agent_id not in
|
|
239
|
-
await initialize_agent(agent_id
|
|
260
|
+
if (agent_id not in _agents) or needs_reinit:
|
|
261
|
+
await initialize_agent(agent_id)
|
|
240
262
|
cold_start_cost = time.perf_counter() - start
|
|
241
|
-
return
|
|
263
|
+
return _agents[agent_id], cold_start_cost
|
|
242
264
|
|
|
243
265
|
|
|
244
266
|
async def stream_agent(message: ChatMessageCreate):
|
|
@@ -355,7 +377,7 @@ async def stream_agent(message: ChatMessageCreate):
|
|
|
355
377
|
if input.user_id == agent.owner:
|
|
356
378
|
is_private = True
|
|
357
379
|
|
|
358
|
-
executor, cold_start_cost = await agent_executor(input.agent_id
|
|
380
|
+
executor, cold_start_cost = await agent_executor(input.agent_id)
|
|
359
381
|
last = start + cold_start_cost
|
|
360
382
|
|
|
361
383
|
# Extract images from attachments
|
|
@@ -889,10 +911,7 @@ async def clean_agent_memory(
|
|
|
889
911
|
async def thread_stats(agent_id: str, chat_id: str) -> list[BaseMessage]:
|
|
890
912
|
thread_id = f"{agent_id}-{chat_id}"
|
|
891
913
|
stream_config = {"configurable": {"thread_id": thread_id}}
|
|
892
|
-
|
|
893
|
-
if chat_id.startswith("owner") or chat_id.startswith("autonomous"):
|
|
894
|
-
is_private = True
|
|
895
|
-
executor, _ = await agent_executor(agent_id, is_private)
|
|
914
|
+
executor, _ = await agent_executor(agent_id)
|
|
896
915
|
snap = await executor.aget_state(stream_config)
|
|
897
916
|
if snap.values and "messages" in snap.values:
|
|
898
917
|
return snap.values["messages"]
|
|
@@ -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,
|
|
@@ -12,7 +12,7 @@ from intentkit.models.base import Base
|
|
|
12
12
|
from intentkit.models.db import get_session
|
|
13
13
|
from intentkit.models.redis import get_redis
|
|
14
14
|
from intentkit.utils.error import IntentKitLookUpError
|
|
15
|
-
from
|
|
15
|
+
from langchain.chat_models.base import BaseChatModel
|
|
16
16
|
from pydantic import BaseModel, ConfigDict, Field
|
|
17
17
|
from sqlalchemy import Boolean, Column, DateTime, Integer, Numeric, String, func, select
|
|
18
18
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
@@ -344,7 +344,7 @@ class LLMModel(BaseModel):
|
|
|
344
344
|
return model_info
|
|
345
345
|
|
|
346
346
|
# This will be implemented by subclasses to return the appropriate LLM instance
|
|
347
|
-
async def create_instance(self, config: Any) ->
|
|
347
|
+
async def create_instance(self, config: Any) -> BaseChatModel:
|
|
348
348
|
"""Create and return the LLM instance based on the configuration."""
|
|
349
349
|
raise NotImplementedError("Subclasses must implement create_instance")
|
|
350
350
|
|
|
@@ -362,7 +362,7 @@ class LLMModel(BaseModel):
|
|
|
362
362
|
class OpenAILLM(LLMModel):
|
|
363
363
|
"""OpenAI LLM configuration."""
|
|
364
364
|
|
|
365
|
-
async def create_instance(self, config: Any) ->
|
|
365
|
+
async def create_instance(self, config: Any) -> BaseChatModel:
|
|
366
366
|
"""Create and return a ChatOpenAI instance."""
|
|
367
367
|
from langchain_openai import ChatOpenAI
|
|
368
368
|
|
|
@@ -398,7 +398,7 @@ class OpenAILLM(LLMModel):
|
|
|
398
398
|
class DeepseekLLM(LLMModel):
|
|
399
399
|
"""Deepseek LLM configuration."""
|
|
400
400
|
|
|
401
|
-
async def create_instance(self, config: Any) ->
|
|
401
|
+
async def create_instance(self, config: Any) -> BaseChatModel:
|
|
402
402
|
"""Create and return a ChatDeepseek instance."""
|
|
403
403
|
|
|
404
404
|
from langchain_deepseek import ChatDeepSeek
|
|
@@ -431,7 +431,7 @@ class DeepseekLLM(LLMModel):
|
|
|
431
431
|
class XAILLM(LLMModel):
|
|
432
432
|
"""XAI (Grok) LLM configuration."""
|
|
433
433
|
|
|
434
|
-
async def create_instance(self, config: Any) ->
|
|
434
|
+
async def create_instance(self, config: Any) -> BaseChatModel:
|
|
435
435
|
"""Create and return a ChatXAI instance."""
|
|
436
436
|
|
|
437
437
|
from langchain_xai import ChatXAI
|
|
@@ -463,7 +463,7 @@ class XAILLM(LLMModel):
|
|
|
463
463
|
class EternalLLM(LLMModel):
|
|
464
464
|
"""Eternal AI LLM configuration."""
|
|
465
465
|
|
|
466
|
-
async def create_instance(self, config: Any) ->
|
|
466
|
+
async def create_instance(self, config: Any) -> BaseChatModel:
|
|
467
467
|
"""Create and return a ChatOpenAI instance configured for Eternal AI."""
|
|
468
468
|
from langchain_openai import ChatOpenAI
|
|
469
469
|
|
|
@@ -495,7 +495,7 @@ class EternalLLM(LLMModel):
|
|
|
495
495
|
class ReigentLLM(LLMModel):
|
|
496
496
|
"""Reigent LLM configuration."""
|
|
497
497
|
|
|
498
|
-
async def create_instance(self, config: Any) ->
|
|
498
|
+
async def create_instance(self, config: Any) -> BaseChatModel:
|
|
499
499
|
"""Create and return a ChatOpenAI instance configured for Reigent."""
|
|
500
500
|
from langchain_openai import ChatOpenAI
|
|
501
501
|
|
|
@@ -517,7 +517,7 @@ class ReigentLLM(LLMModel):
|
|
|
517
517
|
class VeniceLLM(LLMModel):
|
|
518
518
|
"""Venice LLM configuration."""
|
|
519
519
|
|
|
520
|
-
async def create_instance(self, config: Any) ->
|
|
520
|
+
async def create_instance(self, config: Any) -> BaseChatModel:
|
|
521
521
|
"""Create and return a ChatOpenAI instance configured for Venice."""
|
|
522
522
|
from langchain_openai import ChatOpenAI
|
|
523
523
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
from decimal import Decimal
|
|
1
2
|
from typing import Optional, Type
|
|
2
3
|
|
|
3
|
-
from cdp import EvmServerAccount
|
|
4
4
|
from coinbase_agentkit import CdpEvmWalletProvider
|
|
5
5
|
from langchain.tools.base import ToolException
|
|
6
6
|
from pydantic import BaseModel, Field
|
|
@@ -9,10 +9,9 @@ from intentkit.abstracts.graph import AgentContext
|
|
|
9
9
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
10
10
|
from intentkit.clients import CdpClient, get_cdp_client
|
|
11
11
|
from intentkit.skills.base import IntentKitSkill
|
|
12
|
-
from intentkit.utils.chain import ChainProvider,
|
|
12
|
+
from intentkit.utils.chain import ChainProvider, Network, network_to_id
|
|
13
13
|
|
|
14
14
|
base_url = "https://api.enso.finance"
|
|
15
|
-
default_chain_id = int(NetworkId.BaseMainnet)
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
class EnsoBaseTool(IntentKitSkill):
|
|
@@ -25,18 +24,6 @@ class EnsoBaseTool(IntentKitSkill):
|
|
|
25
24
|
description="The skill store for persisting data"
|
|
26
25
|
)
|
|
27
26
|
|
|
28
|
-
async def get_account(self, context: AgentContext) -> Optional[EvmServerAccount]:
|
|
29
|
-
"""Get the account object from the CDP client.
|
|
30
|
-
|
|
31
|
-
Args:
|
|
32
|
-
context: The skill context containing agent information.
|
|
33
|
-
|
|
34
|
-
Returns:
|
|
35
|
-
Optional[EvmServerAccount]: The account object if available.
|
|
36
|
-
"""
|
|
37
|
-
client: CdpClient = await get_cdp_client(context.agent.id, self.skill_store)
|
|
38
|
-
return await client.get_account()
|
|
39
|
-
|
|
40
27
|
async def get_wallet_provider(
|
|
41
28
|
self, context: AgentContext
|
|
42
29
|
) -> Optional[CdpEvmWalletProvider]:
|
|
@@ -51,6 +38,13 @@ class EnsoBaseTool(IntentKitSkill):
|
|
|
51
38
|
client: CdpClient = await get_cdp_client(context.agent.id, self.skill_store)
|
|
52
39
|
return await client.get_wallet_provider()
|
|
53
40
|
|
|
41
|
+
async def get_wallet_address(self, context: AgentContext) -> str:
|
|
42
|
+
client: CdpClient = await get_cdp_client(context.agent.id, self.skill_store)
|
|
43
|
+
provider_config = await client.get_provider_config()
|
|
44
|
+
if not provider_config.address:
|
|
45
|
+
raise ToolException("wallet address not found for agent")
|
|
46
|
+
return provider_config.address
|
|
47
|
+
|
|
54
48
|
def get_chain_provider(self, context: AgentContext) -> Optional[ChainProvider]:
|
|
55
49
|
return self.skill_store.get_system_config("chain_provider")
|
|
56
50
|
|
|
@@ -60,8 +54,7 @@ class EnsoBaseTool(IntentKitSkill):
|
|
|
60
54
|
return skill_config["main_tokens"]
|
|
61
55
|
return []
|
|
62
56
|
|
|
63
|
-
def
|
|
64
|
-
context = self.get_context()
|
|
57
|
+
def get_api_token(self, context: AgentContext) -> str:
|
|
65
58
|
skill_config = context.agent.skill_config(self.category)
|
|
66
59
|
api_key_provider = skill_config.get("api_key_provider")
|
|
67
60
|
if api_key_provider == "platform":
|
|
@@ -74,6 +67,40 @@ class EnsoBaseTool(IntentKitSkill):
|
|
|
74
67
|
f"Invalid API key provider: {api_key_provider}, or no api_token in config"
|
|
75
68
|
)
|
|
76
69
|
|
|
70
|
+
def resolve_chain_id(
|
|
71
|
+
self, context: AgentContext, chain_id: Optional[int] = None
|
|
72
|
+
) -> int:
|
|
73
|
+
if chain_id:
|
|
74
|
+
return chain_id
|
|
75
|
+
|
|
76
|
+
agent = context.agent
|
|
77
|
+
try:
|
|
78
|
+
network = Network(agent.network_id)
|
|
79
|
+
except ValueError as exc: # pragma: no cover - defensive
|
|
80
|
+
raise ToolException(
|
|
81
|
+
f"Unsupported network configured for agent: {agent.network_id}"
|
|
82
|
+
) from exc
|
|
83
|
+
|
|
84
|
+
network_id = network_to_id.get(network)
|
|
85
|
+
if network_id is None:
|
|
86
|
+
raise ToolException(
|
|
87
|
+
f"Unable to determine chain id for network: {agent.network_id}"
|
|
88
|
+
)
|
|
89
|
+
return int(network_id)
|
|
90
|
+
|
|
77
91
|
@property
|
|
78
92
|
def category(self) -> str:
|
|
79
93
|
return "enso"
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def format_amount_with_decimals(
|
|
97
|
+
amount: object, decimals: Optional[int]
|
|
98
|
+
) -> Optional[str]:
|
|
99
|
+
if amount is None or decimals is None:
|
|
100
|
+
return None
|
|
101
|
+
|
|
102
|
+
try:
|
|
103
|
+
value = Decimal(str(amount)) / (Decimal(10) ** decimals)
|
|
104
|
+
return format(value, "f")
|
|
105
|
+
except Exception: # pragma: no cover - defensive
|
|
106
|
+
return None
|