intentkit 0.8.17.dev2__tar.gz → 0.8.27.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- intentkit-0.8.27.dev1/LICENSE +21 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1}/PKG-INFO +4 -4
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/MANIFEST.in +1 -2
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/__init__.py +6 -4
- intentkit-0.8.27.dev1/intentkit/config/config.py +240 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/asset.py +17 -3
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/credit.py +10 -10
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/engine.py +36 -24
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/prompt.py +1 -1
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/agent.py +89 -67
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/agent_data.py +101 -72
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/app_setting.py +9 -7
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/chat.py +60 -118
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/conversation.py +16 -23
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/credit.py +97 -96
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/db.py +2 -1
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/db_mig.py +2 -1
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/llm.csv +9 -8
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/llm.py +58 -29
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/skill.py +37 -30
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/skills.csv +5 -3
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/user.py +44 -18
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/token_info_and_price.py +1 -1
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/base.py +6 -2
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/utils.py +1 -1
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/__init__.py +12 -0
- intentkit-0.8.27.dev1/intentkit/skills/openai/gpt_avatar_generator.py +102 -0
- intentkit-0.8.27.dev1/intentkit/skills/openai/gpt_image_mini_generator.py +92 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/schema.json +32 -0
- intentkit-0.8.27.dev1/intentkit/utils/__init__.py +5 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/chain.py +198 -96
- intentkit-0.8.27.dev1/intentkit/utils/ens.py +135 -0
- intentkit-0.8.27.dev1/intentkit/uv.lock +3377 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1}/pyproject.toml +70 -47
- intentkit-0.8.17.dev2/config/config.py +0 -211
- intentkit-0.8.17.dev2/utils/__init__.py +0 -1
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1}/.gitignore +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/LICENSE +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/agent.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/api.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/engine.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/graph.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/skill.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/abstracts/twitter.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/clients/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/clients/cdp.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/clients/twitter.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/clients/web3.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/config/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/agent.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/api.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/chat.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/client.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/node.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/scheduler.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/core/statistics.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/agent_public.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/agent_schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/models/redis.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/ask.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/acolyt/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/projects.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/aixbt/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/price.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/allora/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/basename/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/basename/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/basename/basename.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/basename/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/carv.webp +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/fetch_news.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/onchain_query.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/carv/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/casino.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/deck_draw.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/deck_shuffle.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/dice_roll.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/casino/utils.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cdp/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cdp/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cdp/cdp.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cdp/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/chainlist/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/common.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/current_time.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/common/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/api.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dexscreener/utils.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/mention.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/stats.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/tokens.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/elfa/utils.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/abi/route.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/best_yield.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/enso.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/networks.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/prices.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/route.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/tokens.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/enso/wallet.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc20/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc20/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc20/erc20.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc20/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc721/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc721/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc721/erc721.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/erc721/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/clear.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/query.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/github.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/github_search.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/github/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/heurist.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/heurist/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/get.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/http.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/post.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/put.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/http/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/lifi.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/token_execute.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/token_quote.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/lifi/utils.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/api.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/moralis.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/moralis/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/morpho/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/morpho/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/morpho/morpho.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/morpho/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/nation.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/nft_check.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/nation/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/onchain.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/dalle_image_generation.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/gpt_image_generation.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/gpt_image_to_image.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/image_to_text.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/openai/openai.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/constants.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/pyth/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/pyth/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/pyth/pyth.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/pyth/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/skills.toml +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/get_channel.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/get_message.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/schedule_message.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/send_message.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/slack/slack.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/delete_data.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/insert_data.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/supabase.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/update_data.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/superfluid/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/superfluid/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/superfluid/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/superfluid/superfluid.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/add_autonomous_task.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/delete_autonomous_task.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/edit_autonomous_task.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/list_autonomous_tasks.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/read_agent_api_key.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/regenerate_agent_api_key.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/system/system.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/constants.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/moralis.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/token_analytics.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/token_price.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/token/token_search.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/follow_user.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/retweet.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/twitter/twitter.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/input.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/api.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/config.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/utils.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/utils.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/weth/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/weth/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/weth/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/weth/weth.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/wow/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/wow/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/wow/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/wow/wow.svg +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/ask_agent.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/http_request.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/x402/x402.webp +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/README.md +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/__init__.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/base.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/price.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/schema.json +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/swap.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/transfer.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/skills/xmtp/xmtp.png +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/error.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/logging.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/random.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/s3.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/schema.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/slack_alert.py +0 -0
- {intentkit-0.8.17.dev2 → intentkit-0.8.27.dev1/intentkit}/utils/tx.py +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Crestal Network
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.27.dev1
|
|
4
4
|
Summary: Intent-based AI Agent Platform - Core Package
|
|
5
5
|
Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
|
|
6
6
|
Project-URL: Repository, https://github.com/crestalnetwork/intentkit
|
|
7
7
|
Project-URL: Documentation, https://github.com/crestalnetwork/intentkit/tree/main/docs
|
|
8
8
|
Project-URL: Bug Tracker, https://github.com/crestalnetwork/intentkit/issues
|
|
9
|
-
Author-email:
|
|
9
|
+
Author-email: Ruihua <ruihua@crestal.network>
|
|
10
10
|
License: MIT License
|
|
11
11
|
|
|
12
12
|
Copyright (c) 2024 Crestal Network
|
|
@@ -69,14 +69,14 @@ Requires-Dist: langgraph>=0.6.1
|
|
|
69
69
|
Requires-Dist: langmem>=0.0.27
|
|
70
70
|
Requires-Dist: mypy-boto3-s3<2.0.0,>=1.37.24
|
|
71
71
|
Requires-Dist: openai>=1.59.6
|
|
72
|
-
Requires-Dist: pillow<
|
|
72
|
+
Requires-Dist: pillow<13.0.0,>=11.1.0
|
|
73
73
|
Requires-Dist: psycopg-pool>=3.2.4
|
|
74
74
|
Requires-Dist: psycopg>=3.2.9
|
|
75
75
|
Requires-Dist: pydantic>=2.10.6
|
|
76
76
|
Requires-Dist: python-dotenv>=1.0.1
|
|
77
77
|
Requires-Dist: pytz>=2025.1
|
|
78
78
|
Requires-Dist: pyyaml>=6.0.2
|
|
79
|
-
Requires-Dist: redis<
|
|
79
|
+
Requires-Dist: redis<8.0.0,>=5.2.1
|
|
80
80
|
Requires-Dist: requests-oauthlib>=2.0.0
|
|
81
81
|
Requires-Dist: requests>=2.32.3
|
|
82
82
|
Requires-Dist: slack-sdk>=3.34.0
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
include README.md
|
|
2
2
|
include LICENSE
|
|
3
|
-
include pyproject.toml
|
|
4
3
|
recursive-include abstracts *.py
|
|
5
4
|
recursive-include clients *.py
|
|
6
5
|
recursive-include config *.py
|
|
@@ -12,4 +11,4 @@ recursive-exclude * __pycache__
|
|
|
12
11
|
recursive-exclude * *.pyc
|
|
13
12
|
recursive-exclude * *.pyo
|
|
14
13
|
recursive-exclude * .DS_Store
|
|
15
|
-
recursive-exclude * .ruff_cache
|
|
14
|
+
recursive-exclude * .ruff_cache
|
|
@@ -3,15 +3,17 @@
|
|
|
3
3
|
A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
__version__ = "0.8.
|
|
7
|
-
__author__ = "
|
|
8
|
-
__email__ = "
|
|
6
|
+
__version__ = "0.8.27-dev1"
|
|
7
|
+
__author__ = "Ruihua"
|
|
8
|
+
__email__ = "ruihua@crestal.network"
|
|
9
9
|
|
|
10
10
|
# Core components
|
|
11
11
|
# Abstract base classes
|
|
12
|
-
from .core.engine import create_agent, stream_agent
|
|
12
|
+
from .core.engine import build_agent, create_agent, stream_agent, stream_agent_raw
|
|
13
13
|
|
|
14
14
|
__all__ = [
|
|
15
15
|
"create_agent",
|
|
16
16
|
"stream_agent",
|
|
17
|
+
"build_agent",
|
|
18
|
+
"stream_agent_raw",
|
|
17
19
|
]
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
from typing import overload
|
|
5
|
+
|
|
6
|
+
from dotenv import load_dotenv
|
|
7
|
+
|
|
8
|
+
from intentkit.utils.chain import ChainProvider, QuicknodeChainProvider
|
|
9
|
+
from intentkit.utils.logging import setup_logging
|
|
10
|
+
from intentkit.utils.s3 import init_s3
|
|
11
|
+
from intentkit.utils.slack_alert import init_slack
|
|
12
|
+
|
|
13
|
+
SecretsMap = dict[str, str | int]
|
|
14
|
+
DatabaseConfig = dict[str, str | int | bool]
|
|
15
|
+
|
|
16
|
+
# Load environment variables from .env file
|
|
17
|
+
_ = load_dotenv()
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def load_from_aws(name: str) -> SecretsMap:
|
|
23
|
+
import botocore.session
|
|
24
|
+
from aws_secretsmanager_caching import SecretCache, SecretCacheConfig
|
|
25
|
+
|
|
26
|
+
client = botocore.session.get_session().create_client("secretsmanager")
|
|
27
|
+
cache_config = SecretCacheConfig()
|
|
28
|
+
cache = SecretCache(config=cache_config, client=client)
|
|
29
|
+
secret = cache.get_secret_string(name)
|
|
30
|
+
return json.loads(secret)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Config:
|
|
34
|
+
def __init__(self) -> None:
|
|
35
|
+
# ==== this part can only be load from env
|
|
36
|
+
self.env: str = os.getenv("ENV", "local")
|
|
37
|
+
self.release: str = os.getenv("RELEASE", "local")
|
|
38
|
+
secret_name: str | None = os.getenv("AWS_SECRET_NAME")
|
|
39
|
+
db_secret_name: str | None = os.getenv("AWS_DB_SECRET_NAME")
|
|
40
|
+
# ==== load from aws secrets manager
|
|
41
|
+
self.secrets: SecretsMap = {}
|
|
42
|
+
if secret_name:
|
|
43
|
+
self.secrets = load_from_aws(secret_name)
|
|
44
|
+
self.db: DatabaseConfig
|
|
45
|
+
if db_secret_name:
|
|
46
|
+
secret_db: SecretsMap = load_from_aws(db_secret_name)
|
|
47
|
+
# format the db config
|
|
48
|
+
secret_db["port"] = str(secret_db["port"])
|
|
49
|
+
# only keep the necessary fields
|
|
50
|
+
self.db = {
|
|
51
|
+
k: v
|
|
52
|
+
for k, v in secret_db.items()
|
|
53
|
+
if k in ["username", "password", "host", "dbname", "port"]
|
|
54
|
+
}
|
|
55
|
+
else:
|
|
56
|
+
self.db = {
|
|
57
|
+
"username": self.load("DB_USERNAME", ""),
|
|
58
|
+
"password": self.load("DB_PASSWORD", ""),
|
|
59
|
+
"host": self.load("DB_HOST", ""),
|
|
60
|
+
"port": self.load("DB_PORT", "5432"),
|
|
61
|
+
"dbname": self.load("DB_NAME", ""),
|
|
62
|
+
}
|
|
63
|
+
# ==== this part can be load from env or aws secrets manager
|
|
64
|
+
self.db["auto_migrate"] = self.load("DB_AUTO_MIGRATE", "true") == "true"
|
|
65
|
+
self.db["pool_size"] = self.load_int("DB_POOL_SIZE", 3)
|
|
66
|
+
self.debug: bool = self.load("DEBUG") == "true"
|
|
67
|
+
self.debug_checkpoint: bool = (
|
|
68
|
+
self.load("DEBUG_CHECKPOINT", "false") == "true"
|
|
69
|
+
) # log with checkpoint
|
|
70
|
+
# Redis
|
|
71
|
+
self.redis_host: str | None = self.load("REDIS_HOST")
|
|
72
|
+
self.redis_port: int = self.load_int("REDIS_PORT", 6379)
|
|
73
|
+
self.redis_db: int = self.load_int("REDIS_DB", 0)
|
|
74
|
+
# AWS
|
|
75
|
+
self.aws_s3_bucket: str | None = self.load("AWS_S3_BUCKET")
|
|
76
|
+
self.aws_s3_cdn_url: str | None = self.load("AWS_S3_CDN_URL")
|
|
77
|
+
# Internal API
|
|
78
|
+
self.internal_base_url: str = self.load(
|
|
79
|
+
"INTERNAL_BASE_URL", "http://intent-api"
|
|
80
|
+
)
|
|
81
|
+
self.admin_auth_enabled: bool = (
|
|
82
|
+
self.load("ADMIN_AUTH_ENABLED", "false") == "true"
|
|
83
|
+
)
|
|
84
|
+
self.admin_jwt_secret: str | None = self.load("ADMIN_JWT_SECRET")
|
|
85
|
+
self.debug_auth_enabled: bool = (
|
|
86
|
+
self.load("DEBUG_AUTH_ENABLED", "false") == "true"
|
|
87
|
+
)
|
|
88
|
+
self.debug_username: str | None = self.load("DEBUG_USERNAME")
|
|
89
|
+
self.debug_password: str | None = self.load("DEBUG_PASSWORD")
|
|
90
|
+
# Payment
|
|
91
|
+
self.payment_enabled: bool = self.load("PAYMENT_ENABLED", "false") == "true"
|
|
92
|
+
self.x402_fee_address: str | None = self.load("X402_FEE_ADDRESS")
|
|
93
|
+
# Open API for agent
|
|
94
|
+
self.open_api_base_url: str = self.load(
|
|
95
|
+
"OPEN_API_BASE_URL", "http://localhost:8000"
|
|
96
|
+
)
|
|
97
|
+
# CDP - AgentKit 0.7.x Configuration
|
|
98
|
+
self.cdp_api_key_id: str | None = self.load("CDP_API_KEY_ID")
|
|
99
|
+
self.cdp_api_key_secret: str | None = self.load("CDP_API_KEY_SECRET")
|
|
100
|
+
self.cdp_wallet_secret: str | None = self.load("CDP_WALLET_SECRET")
|
|
101
|
+
# LLM providers
|
|
102
|
+
self.openai_api_key: str | None = self.load("OPENAI_API_KEY")
|
|
103
|
+
self.deepseek_api_key: str | None = self.load("DEEPSEEK_API_KEY")
|
|
104
|
+
self.xai_api_key: str | None = self.load("XAI_API_KEY")
|
|
105
|
+
self.eternal_api_key: str | None = self.load("ETERNAL_API_KEY")
|
|
106
|
+
self.reigent_api_key: str | None = self.load("REIGENT_API_KEY")
|
|
107
|
+
self.venice_api_key: str | None = self.load("VENICE_API_KEY")
|
|
108
|
+
self.gatewayz_api_key: str | None = self.load("GATEWAYZ_API_KEY")
|
|
109
|
+
# LLM Config
|
|
110
|
+
self.system_prompt: str | None = self.load("SYSTEM_PROMPT")
|
|
111
|
+
self.intentkit_prompt: str | None = self.load("INTENTKIT_PROMPT")
|
|
112
|
+
self.input_token_limit: int = self.load_int("INPUT_TOKEN_LIMIT", 60000)
|
|
113
|
+
# XMTP
|
|
114
|
+
self.xmtp_system_prompt: str | None = self.load(
|
|
115
|
+
"XMTP_SYSTEM_PROMPT",
|
|
116
|
+
"You are assisting a user who uses an XMTP client that only displays plain-text messages, so do not use Markdown formatting.",
|
|
117
|
+
)
|
|
118
|
+
# Telegram server settings
|
|
119
|
+
self.tg_system_prompt: str | None = self.load("TG_SYSTEM_PROMPT")
|
|
120
|
+
self.tg_base_url: str | None = self.load("TG_BASE_URL")
|
|
121
|
+
self.tg_server_host: str = self.load("TG_SERVER_HOST", "127.0.0.1")
|
|
122
|
+
self.tg_server_port: str = self.load("TG_SERVER_PORT", "8081")
|
|
123
|
+
self.tg_new_agent_poll_interval: str = self.load(
|
|
124
|
+
"TG_NEW_AGENT_POLL_INTERVAL", "60"
|
|
125
|
+
)
|
|
126
|
+
# Discord server settings
|
|
127
|
+
self.discord_new_agent_poll_interval: str = self.load(
|
|
128
|
+
"DISCORD_NEW_AGENT_POLL_INTERVAL", "30"
|
|
129
|
+
)
|
|
130
|
+
# Twitter
|
|
131
|
+
self.twitter_oauth2_client_id: str | None = self.load(
|
|
132
|
+
"TWITTER_OAUTH2_CLIENT_ID"
|
|
133
|
+
)
|
|
134
|
+
self.twitter_oauth2_client_secret: str | None = self.load(
|
|
135
|
+
"TWITTER_OAUTH2_CLIENT_SECRET"
|
|
136
|
+
)
|
|
137
|
+
self.twitter_oauth2_redirect_uri: str | None = self.load(
|
|
138
|
+
"TWITTER_OAUTH2_REDIRECT_URI"
|
|
139
|
+
)
|
|
140
|
+
self.twitter_entrypoint_interval: int = self.load_int(
|
|
141
|
+
"TWITTER_ENTRYPOINT_INTERVAL", 5
|
|
142
|
+
) # in minutes
|
|
143
|
+
# Slack Alert
|
|
144
|
+
self.slack_alert_token: str | None = self.load("SLACK_ALERT_TOKEN")
|
|
145
|
+
self.slack_alert_channel: str | None = self.load("SLACK_ALERT_CHANNEL")
|
|
146
|
+
# Skills - Platform Hosted Keys
|
|
147
|
+
self.acolyt_api_key: str | None = self.load("ACOLYT_API_KEY")
|
|
148
|
+
self.allora_api_key: str | None = self.load("ALLORA_API_KEY")
|
|
149
|
+
self.elfa_api_key: str | None = self.load("ELFA_API_KEY")
|
|
150
|
+
self.heurist_api_key: str | None = self.load("HEURIST_API_KEY")
|
|
151
|
+
self.enso_api_token: str | None = self.load("ENSO_API_TOKEN")
|
|
152
|
+
self.dapplooker_api_key: str | None = self.load("DAPPLOOKER_API_KEY")
|
|
153
|
+
self.moralis_api_key: str | None = self.load("MORALIS_API_KEY")
|
|
154
|
+
self.tavily_api_key: str | None = self.load("TAVILY_API_KEY")
|
|
155
|
+
self.cookiefun_api_key: str | None = self.load("COOKIEFUN_API_KEY")
|
|
156
|
+
self.firecrawl_api_key: str | None = self.load("FIRECRAWL_API_KEY")
|
|
157
|
+
# Sentry
|
|
158
|
+
self.sentry_dsn: str | None = self.load("SENTRY_DSN")
|
|
159
|
+
self.sentry_sample_rate: float = self.load_float("SENTRY_SAMPLE_RATE", 0.1)
|
|
160
|
+
self.sentry_traces_sample_rate: float = self.load_float(
|
|
161
|
+
"SENTRY_TRACES_SAMPLE_RATE", 0.01
|
|
162
|
+
)
|
|
163
|
+
self.sentry_profiles_sample_rate: float = self.load_float(
|
|
164
|
+
"SENTRY_PROFILES_SAMPLE_RATE", 0.01
|
|
165
|
+
)
|
|
166
|
+
# RPC Providers
|
|
167
|
+
self.quicknode_api_key: str | None = self.load("QUICKNODE_API_KEY")
|
|
168
|
+
self.chain_provider: ChainProvider | None = None
|
|
169
|
+
if self.quicknode_api_key:
|
|
170
|
+
self.chain_provider = QuicknodeChainProvider(self.quicknode_api_key)
|
|
171
|
+
if self.chain_provider:
|
|
172
|
+
self.chain_provider.init_chain_configs()
|
|
173
|
+
|
|
174
|
+
# Nation
|
|
175
|
+
self.nation_api_key: str | None = self.load("NATION_API_KEY")
|
|
176
|
+
self.nation_api_url: str = self.load("NATION_API_URL", "")
|
|
177
|
+
|
|
178
|
+
# ===== config loaded
|
|
179
|
+
# Now we know the env, set up logging
|
|
180
|
+
setup_logging(self.env, self.debug)
|
|
181
|
+
logger.info("config loaded")
|
|
182
|
+
|
|
183
|
+
# If the slack alert token exists, init it
|
|
184
|
+
if self.slack_alert_token and self.slack_alert_channel:
|
|
185
|
+
init_slack(self.slack_alert_token, self.slack_alert_channel)
|
|
186
|
+
# If the AWS S3 bucket and CDN URL exist, init it
|
|
187
|
+
if self.aws_s3_bucket and self.aws_s3_cdn_url:
|
|
188
|
+
init_s3(self.aws_s3_bucket, self.aws_s3_cdn_url, self.env)
|
|
189
|
+
|
|
190
|
+
@overload
|
|
191
|
+
def load(self, key: str) -> str | None: ... # noqa: F811
|
|
192
|
+
|
|
193
|
+
@overload
|
|
194
|
+
def load(self, key: str, default: str) -> str: ... # noqa: F811
|
|
195
|
+
|
|
196
|
+
def load(self, key: str, default: str | None = None) -> str | None:
|
|
197
|
+
"""Load a secret from the secrets map or env"""
|
|
198
|
+
env_value = os.getenv(key, default)
|
|
199
|
+
raw_value = self.secrets.get(key, env_value)
|
|
200
|
+
if raw_value is None:
|
|
201
|
+
value: str | None = default
|
|
202
|
+
elif isinstance(raw_value, str):
|
|
203
|
+
value = raw_value
|
|
204
|
+
else:
|
|
205
|
+
value = str(raw_value)
|
|
206
|
+
|
|
207
|
+
# If value is empty string, use default instead
|
|
208
|
+
if value == "":
|
|
209
|
+
value = default
|
|
210
|
+
|
|
211
|
+
if value:
|
|
212
|
+
value = value.replace("\\n", "\n")
|
|
213
|
+
if value and value.startswith("'") and value.endswith("'"):
|
|
214
|
+
value = value[1:-1]
|
|
215
|
+
return value
|
|
216
|
+
|
|
217
|
+
def load_int(self, key: str, default: int = 0) -> int:
|
|
218
|
+
"""Load an integer value from env, handling empty strings gracefully"""
|
|
219
|
+
value = self.load(key, str(default))
|
|
220
|
+
if not value:
|
|
221
|
+
return default
|
|
222
|
+
try:
|
|
223
|
+
return int(value)
|
|
224
|
+
except (ValueError, TypeError):
|
|
225
|
+
logger.warning(f"Invalid integer value for {key}, using default: {default}")
|
|
226
|
+
return default
|
|
227
|
+
|
|
228
|
+
def load_float(self, key: str, default: float = 0.0) -> float:
|
|
229
|
+
"""Load a float value from env, handling empty strings gracefully"""
|
|
230
|
+
value = self.load(key, str(default))
|
|
231
|
+
if not value:
|
|
232
|
+
return default
|
|
233
|
+
try:
|
|
234
|
+
return float(value)
|
|
235
|
+
except (ValueError, TypeError):
|
|
236
|
+
logger.warning(f"Invalid float value for {key}, using default: {default}")
|
|
237
|
+
return default
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
config: Config = Config()
|
|
@@ -33,6 +33,14 @@ USDC_ADDRESSES = {
|
|
|
33
33
|
# NATION token address for base-mainnet
|
|
34
34
|
NATION_ADDRESS = "0x2f74f818e81685c8086dd783837a4605a90474b8"
|
|
35
35
|
|
|
36
|
+
MORALIS_CHAIN_BY_NETWORK = {
|
|
37
|
+
"ethereum-mainnet": "eth",
|
|
38
|
+
"base-mainnet": "base",
|
|
39
|
+
"polygon-mainnet": "polygon",
|
|
40
|
+
"arbitrum-mainnet": "arbitrum",
|
|
41
|
+
"optimism-mainnet": "optimism",
|
|
42
|
+
}
|
|
43
|
+
|
|
36
44
|
|
|
37
45
|
class Asset(BaseModel):
|
|
38
46
|
"""Model for individual asset with symbol and balance."""
|
|
@@ -101,8 +109,12 @@ async def _get_eth_balance(web3_client: Web3, wallet_address: str) -> Decimal:
|
|
|
101
109
|
return Decimal("0")
|
|
102
110
|
|
|
103
111
|
|
|
104
|
-
async def _get_wallet_net_worth(wallet_address: str) -> str:
|
|
112
|
+
async def _get_wallet_net_worth(wallet_address: str, network_id: str | None) -> str:
|
|
105
113
|
"""Get wallet net worth using Moralis API."""
|
|
114
|
+
moralis_chain = MORALIS_CHAIN_BY_NETWORK.get(network_id or "")
|
|
115
|
+
if not moralis_chain:
|
|
116
|
+
return "0"
|
|
117
|
+
|
|
106
118
|
try:
|
|
107
119
|
async with httpx.AsyncClient() as client:
|
|
108
120
|
url = (
|
|
@@ -116,7 +128,7 @@ async def _get_wallet_net_worth(wallet_address: str) -> str:
|
|
|
116
128
|
params = {
|
|
117
129
|
"exclude_spam": "true",
|
|
118
130
|
"exclude_unverified_contracts": "true",
|
|
119
|
-
"chains": [
|
|
131
|
+
"chains": [moralis_chain],
|
|
120
132
|
}
|
|
121
133
|
|
|
122
134
|
response = await client.get(url, headers=headers, params=params)
|
|
@@ -206,7 +218,9 @@ async def agent_asset(agent_id: str) -> AgentAssets:
|
|
|
206
218
|
try:
|
|
207
219
|
web3_client = get_web3_client(str(agent.network_id))
|
|
208
220
|
tokens = await _build_assets_list(agent, agent_data, web3_client)
|
|
209
|
-
net_worth = await _get_wallet_net_worth(
|
|
221
|
+
net_worth = await _get_wallet_net_worth(
|
|
222
|
+
agent_data.evm_wallet_address, str(agent.network_id)
|
|
223
|
+
)
|
|
210
224
|
assets_result = AgentAssets(net_worth=net_worth, tokens=tokens)
|
|
211
225
|
except IntentKitAPIError:
|
|
212
226
|
raise
|
|
@@ -1285,16 +1285,16 @@ async def skill_cost(
|
|
|
1285
1285
|
skill = await Skill.get(skill_name)
|
|
1286
1286
|
if not skill:
|
|
1287
1287
|
raise ValueError(f"The price of {skill_name} not set yet")
|
|
1288
|
-
|
|
1289
|
-
if
|
|
1290
|
-
agent_skill_config
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1288
|
+
base_skill_amount = skill.price.quantize(FOURPLACES, rounding=ROUND_HALF_UP)
|
|
1289
|
+
if agent.skills:
|
|
1290
|
+
agent_skill_config = agent.skills.get(skill.category)
|
|
1291
|
+
if (
|
|
1292
|
+
agent_skill_config
|
|
1293
|
+
and agent_skill_config.get("api_key_provider") == "agent_owner"
|
|
1294
|
+
):
|
|
1295
|
+
base_skill_amount = skill.price_self_key.quantize(
|
|
1296
|
+
FOURPLACES, rounding=ROUND_HALF_UP
|
|
1297
|
+
)
|
|
1298
1298
|
# Get payment settings
|
|
1299
1299
|
payment_settings = await AppSetting.payment()
|
|
1300
1300
|
|
|
@@ -67,6 +67,29 @@ _agents: dict[str, CompiledStateGraph] = {}
|
|
|
67
67
|
_agents_updated: dict[str, datetime] = {}
|
|
68
68
|
|
|
69
69
|
|
|
70
|
+
def _extract_text_content(content: object) -> str:
|
|
71
|
+
if isinstance(content, list):
|
|
72
|
+
texts: list[str] = []
|
|
73
|
+
for item in content:
|
|
74
|
+
if isinstance(item, dict):
|
|
75
|
+
t = item.get("text")
|
|
76
|
+
ty = item.get("type")
|
|
77
|
+
if t is not None and (ty == "text" or ty is None):
|
|
78
|
+
texts.append(t)
|
|
79
|
+
elif isinstance(item, str):
|
|
80
|
+
texts.append(item)
|
|
81
|
+
return "".join(texts)
|
|
82
|
+
if isinstance(content, dict):
|
|
83
|
+
if content.get("type") == "text" and "text" in content:
|
|
84
|
+
return content["text"]
|
|
85
|
+
if "text" in content:
|
|
86
|
+
return content["text"]
|
|
87
|
+
return ""
|
|
88
|
+
if isinstance(content, str):
|
|
89
|
+
return content
|
|
90
|
+
return ""
|
|
91
|
+
|
|
92
|
+
|
|
70
93
|
async def build_agent(
|
|
71
94
|
agent: Agent, agent_data: AgentData, custom_skills: list[BaseTool] = []
|
|
72
95
|
) -> CompiledStateGraph:
|
|
@@ -149,8 +172,8 @@ async def build_agent(
|
|
|
149
172
|
if llm_model.info.provider == LLMProvider.OPENAI:
|
|
150
173
|
tools.append({"type": "web_search"})
|
|
151
174
|
private_tools.append({"type": "web_search"})
|
|
152
|
-
if
|
|
153
|
-
llm_params["reasoning_effort"] = "
|
|
175
|
+
if llm_model.info.model_name == "gpt-5-mini":
|
|
176
|
+
llm_params["reasoning_effort"] = "medium"
|
|
154
177
|
if llm_model.info.provider == LLMProvider.XAI:
|
|
155
178
|
llm_params["search_parameters"] = {"mode": "auto"}
|
|
156
179
|
# TODO: else use a search skill
|
|
@@ -330,8 +353,6 @@ async def stream_agent_raw(
|
|
|
330
353
|
model = await LLMModelInfo.get(agent.model)
|
|
331
354
|
|
|
332
355
|
payment_enabled = config.payment_enabled
|
|
333
|
-
if user_message.author_type == AuthorType.X402:
|
|
334
|
-
payment_enabled = False
|
|
335
356
|
|
|
336
357
|
# check user balance
|
|
337
358
|
if payment_enabled:
|
|
@@ -363,6 +384,7 @@ async def stream_agent_raw(
|
|
|
363
384
|
AuthorType.TELEGRAM,
|
|
364
385
|
AuthorType.TWITTER,
|
|
365
386
|
AuthorType.API,
|
|
387
|
+
AuthorType.X402,
|
|
366
388
|
]:
|
|
367
389
|
payer = agent.owner
|
|
368
390
|
# user account
|
|
@@ -432,31 +454,30 @@ async def stream_agent_raw(
|
|
|
432
454
|
|
|
433
455
|
# super mode
|
|
434
456
|
recursion_limit = 30
|
|
435
|
-
if re.search(r"
|
|
457
|
+
if re.search(r"@super\b", input_message) or user_message.super_mode:
|
|
436
458
|
recursion_limit = 300
|
|
437
459
|
# Remove @super from the message
|
|
438
|
-
input_message = re.sub(r"
|
|
460
|
+
input_message = re.sub(r"@super\b", "", input_message).strip()
|
|
439
461
|
|
|
440
462
|
# llm native search
|
|
441
|
-
search = False
|
|
442
|
-
if re.search(r"
|
|
443
|
-
r"\b@web\b", input_message
|
|
444
|
-
):
|
|
463
|
+
search = user_message.search_mode if user_message.search_mode is not None else False
|
|
464
|
+
if re.search(r"@search\b", input_message) or re.search(r"@web\b", input_message):
|
|
445
465
|
search = True
|
|
446
466
|
if model.supports_search:
|
|
447
467
|
input_message = re.sub(
|
|
448
|
-
r"
|
|
468
|
+
r"@search\b",
|
|
449
469
|
"(You have native search tool, you can use it to get more recent information)",
|
|
450
470
|
input_message,
|
|
451
471
|
).strip()
|
|
452
472
|
input_message = re.sub(
|
|
453
|
-
r"
|
|
473
|
+
r"@web\b",
|
|
454
474
|
"(You have native search tool, you can use it to get more recent information)",
|
|
455
475
|
input_message,
|
|
456
476
|
).strip()
|
|
457
477
|
else:
|
|
458
|
-
|
|
459
|
-
input_message = re.sub(r"
|
|
478
|
+
search = False
|
|
479
|
+
input_message = re.sub(r"@search\b", "", input_message).strip()
|
|
480
|
+
input_message = re.sub(r"@web\b", "", input_message).strip()
|
|
460
481
|
|
|
461
482
|
# content to llm
|
|
462
483
|
messages = [
|
|
@@ -527,16 +548,7 @@ async def stream_agent_raw(
|
|
|
527
548
|
# tool calls, save for later use, if it is deleted by post_model_hook, will not be used.
|
|
528
549
|
cached_tool_step = msg
|
|
529
550
|
if hasattr(msg, "content") and msg.content:
|
|
530
|
-
content = msg.content
|
|
531
|
-
if isinstance(msg.content, list):
|
|
532
|
-
# in new version, content item maybe a list
|
|
533
|
-
content = msg.content[0]
|
|
534
|
-
if isinstance(content, dict):
|
|
535
|
-
if "text" in content:
|
|
536
|
-
content = content["text"]
|
|
537
|
-
else:
|
|
538
|
-
content = str(content)
|
|
539
|
-
logger.error(f"unexpected content type: {content}")
|
|
551
|
+
content = _extract_text_content(msg.content)
|
|
540
552
|
# agent message
|
|
541
553
|
chat_message_create = ChatMessageCreate(
|
|
542
554
|
id=str(XID()),
|
|
@@ -250,7 +250,7 @@ async def explain_prompt(message: str) -> str:
|
|
|
250
250
|
str: The processed message with @skill patterns replaced
|
|
251
251
|
"""
|
|
252
252
|
# Pattern to match @skill:category:config_name with word boundaries
|
|
253
|
-
pattern = r"
|
|
253
|
+
pattern = r"@skill:([^:]+):([^\s]+)\b"
|
|
254
254
|
|
|
255
255
|
async def replace_skill_pattern(match):
|
|
256
256
|
category = match.group(1)
|