intentkit 0.8.34__tar.gz → 0.8.34.dev3__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.34 → intentkit-0.8.34.dev3}/PKG-INFO +1 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/__init__.py +1 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/config/config.py +6 -8
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/chat.py +5 -2
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/engine.py +6 -8
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/scheduler.py +0 -13
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/db.py +1 -14
- intentkit-0.8.34.dev3/intentkit/models/db_mig.py +103 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/skills.csv +1 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_animagine_xl.py +2 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_arthemy_comics.py +2 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_arthemy_real.py +2 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_braindance.py +2 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +2 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_flux_1_dev.py +2 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_sdxl.py +2 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/dalle_image_generation.py +1 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/gpt_avatar_generator.py +1 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/gpt_image_generation.py +1 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/gpt_image_mini_generator.py +1 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/gpt_image_to_image.py +1 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/venice_audio.py +1 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/api.py +1 -1
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_base.py +1 -2
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/__init__.py +3 -0
- intentkit-0.8.34.dev3/intentkit/skills/x402/ask_agent.py +98 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/schema.json +15 -10
- {intentkit-0.8.34/intentkit/clients → intentkit-0.8.34.dev3/intentkit/utils}/s3.py +29 -51
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/pyproject.toml +1 -1
- intentkit-0.8.34/intentkit/core/cleanup.py +0 -80
- intentkit-0.8.34/intentkit/models/db_mig.py +0 -219
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/.gitignore +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/LICENSE +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/LICENSE +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/MANIFEST.in +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/agent.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/api.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/engine.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/graph.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/skill.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/twitter.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/clients/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/clients/cdp.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/clients/twitter.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/clients/web3.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/config/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/account_checking.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/agent.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/api.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/asset.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/client.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/credit.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/draft.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/draft_chat.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/manager/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/manager/engine.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/manager/service.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/manager/skills.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/middleware.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/prompt.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/statistics.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/agent.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/agent_data.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/agent_public.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/agent_schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/app_setting.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/chat.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/credit.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/draft.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/llm.csv +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/llm.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/redis.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/skill.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/team.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/user.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/ask.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/projects.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/allora.jpeg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/price.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/basename/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/basename/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/basename/basename.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/basename/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/carv.webp +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/fetch_news.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/onchain_query.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/casino.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/deck_draw.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/deck_shuffle.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/dice_roll.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/utils.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cdp/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cdp/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cdp/cdp.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cdp/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/common.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/current_time.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/constants.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/api.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/api.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/config/chains.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/utils.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/mention.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/stats.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/tokens.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/utils.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/abi/approval.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/abi/route.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/best_yield.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/enso.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/networks.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/prices.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/route.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/tokens.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/wallet.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc20/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc20/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc20/erc20.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc20/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc721/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc721/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc721/erc721.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc721/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/clear.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/query.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/utils.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/github.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/github_search.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/heurist.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/get.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/http.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/post.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/put.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/lifi.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/token_execute.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/token_quote.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/utils.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/api.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/moralis.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/morpho/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/morpho/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/morpho/morpho.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/morpho/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/nation.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/nft_check.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/onchain.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/image_to_text.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/openai.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/constants.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/moralis.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/pyth/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/pyth/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/pyth/pyth.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/pyth/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/skills.toml +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/get_channel.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/get_message.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/schedule_message.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/send_message.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/slack.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/delete_data.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/insert_data.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/supabase.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/update_data.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/superfluid/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/superfluid/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/superfluid/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/superfluid/superfluid.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/add_autonomous_task.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/delete_autonomous_task.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/edit_autonomous_task.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/list_autonomous_tasks.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/read_agent_api_key.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/regenerate_agent_api_key.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/system.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/constants.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/moralis.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/token_analytics.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/token_price.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/token_search.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/follow_user.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/retweet.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/twitter.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/input.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/config.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/utils.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/utils.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/weth/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/weth/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/weth/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/weth/weth.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/wow/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/wow/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/wow/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/wow/wow.svg +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/http_request.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/x402.webp +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/README.md +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/base.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/price.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/schema.json +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/swap.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/transfer.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/xmtp.png +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/__init__.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/chain.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/ens.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/error.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/logging.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/random.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/schema.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/slack_alert.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/tx.py +0 -0
- {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.8.34
|
|
3
|
+
Version: 0.8.34.dev3
|
|
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,6 +7,7 @@ from dotenv import load_dotenv
|
|
|
7
7
|
|
|
8
8
|
from intentkit.utils.chain import ChainProvider, QuicknodeChainProvider
|
|
9
9
|
from intentkit.utils.logging import setup_logging
|
|
10
|
+
from intentkit.utils.s3 import init_s3
|
|
10
11
|
from intentkit.utils.slack_alert import init_slack
|
|
11
12
|
|
|
12
13
|
SecretsMap = dict[str, str | int]
|
|
@@ -70,16 +71,9 @@ class Config:
|
|
|
70
71
|
self.redis_host: str | None = self.load("REDIS_HOST")
|
|
71
72
|
self.redis_port: int = self.load_int("REDIS_PORT", 6379)
|
|
72
73
|
self.redis_db: int = self.load_int("REDIS_DB", 0)
|
|
73
|
-
# AWS
|
|
74
|
+
# AWS
|
|
74
75
|
self.aws_s3_bucket: str | None = self.load("AWS_S3_BUCKET")
|
|
75
76
|
self.aws_s3_cdn_url: str | None = self.load("AWS_S3_CDN_URL")
|
|
76
|
-
# If using custom S3 endpoint
|
|
77
|
-
self.aws_s3_endpoint_url: str | None = self.load("AWS_S3_ENDPOINT_URL")
|
|
78
|
-
self.aws_s3_region_name: str | None = self.load("AWS_S3_REGION_NAME")
|
|
79
|
-
self.aws_s3_access_key_id: str | None = self.load("AWS_S3_ACCESS_KEY_ID")
|
|
80
|
-
self.aws_s3_secret_access_key: str | None = self.load(
|
|
81
|
-
"AWS_S3_SECRET_ACCESS_KEY"
|
|
82
|
-
)
|
|
83
77
|
# Internal API
|
|
84
78
|
self.internal_base_url: str = self.load(
|
|
85
79
|
"INTERNAL_BASE_URL", "http://intent-api"
|
|
@@ -95,6 +89,7 @@ class Config:
|
|
|
95
89
|
self.debug_password: str | None = self.load("DEBUG_PASSWORD")
|
|
96
90
|
# Payment
|
|
97
91
|
self.payment_enabled: bool = self.load("PAYMENT_ENABLED", "false") == "true"
|
|
92
|
+
self.x402_fee_address: str | None = self.load("X402_FEE_ADDRESS")
|
|
98
93
|
# Open API for agent
|
|
99
94
|
self.open_api_base_url: str = self.load(
|
|
100
95
|
"OPEN_API_BASE_URL", "http://localhost:8000"
|
|
@@ -188,6 +183,9 @@ class Config:
|
|
|
188
183
|
# If the slack alert token exists, init it
|
|
189
184
|
if self.slack_alert_token and self.slack_alert_channel:
|
|
190
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)
|
|
191
189
|
|
|
192
190
|
@overload
|
|
193
191
|
def load(self, key: str) -> str | None: ... # noqa: F811
|
|
@@ -6,7 +6,9 @@ including clearing thread history using LangGraph's checkpointer.
|
|
|
6
6
|
|
|
7
7
|
import logging
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from langgraph.checkpoint.postgres.shallow import AsyncShallowPostgresSaver
|
|
10
|
+
|
|
11
|
+
from intentkit.models.db import get_connection_pool
|
|
10
12
|
from intentkit.utils.error import IntentKitAPIError
|
|
11
13
|
|
|
12
14
|
logger = logging.getLogger(__name__)
|
|
@@ -34,7 +36,8 @@ async def clear_thread_memory(agent_id: str, chat_id: str) -> bool:
|
|
|
34
36
|
thread_id = f"{agent_id}-{chat_id}"
|
|
35
37
|
|
|
36
38
|
# Get the LangGraph checkpointer instance
|
|
37
|
-
|
|
39
|
+
pool = get_connection_pool()
|
|
40
|
+
checkpointer = AsyncShallowPostgresSaver(pool)
|
|
38
41
|
|
|
39
42
|
# Use the official LangGraph method to delete all thread content
|
|
40
43
|
await checkpointer.adelete_thread(thread_id)
|
|
@@ -27,6 +27,7 @@ from langchain_core.messages import (
|
|
|
27
27
|
)
|
|
28
28
|
from langchain_core.tools import BaseTool
|
|
29
29
|
from langgraph.checkpoint.memory import InMemorySaver
|
|
30
|
+
from langgraph.checkpoint.postgres.shallow import AsyncShallowPostgresSaver
|
|
30
31
|
from langgraph.errors import GraphRecursionError
|
|
31
32
|
from langgraph.graph.state import CompiledStateGraph
|
|
32
33
|
from sqlalchemy import func, update
|
|
@@ -54,10 +55,7 @@ from intentkit.models.chat import (
|
|
|
54
55
|
ChatMessageSkillCall,
|
|
55
56
|
)
|
|
56
57
|
from intentkit.models.credit import CreditAccount, OwnerType
|
|
57
|
-
from intentkit.models.db import
|
|
58
|
-
get_checkpointer,
|
|
59
|
-
get_session,
|
|
60
|
-
)
|
|
58
|
+
from intentkit.models.db import get_connection_pool, get_session
|
|
61
59
|
from intentkit.models.llm import LLMModelInfo, create_llm_model
|
|
62
60
|
from intentkit.models.skill import AgentSkillData, ChatSkillData, Skill
|
|
63
61
|
from intentkit.models.user import User
|
|
@@ -126,9 +124,10 @@ async def build_agent(
|
|
|
126
124
|
|
|
127
125
|
# ==== Store buffered conversation history in memory.
|
|
128
126
|
try:
|
|
129
|
-
|
|
127
|
+
pool = get_connection_pool()
|
|
128
|
+
memory = AsyncShallowPostgresSaver(pool)
|
|
130
129
|
except RuntimeError:
|
|
131
|
-
|
|
130
|
+
memory = InMemorySaver()
|
|
132
131
|
|
|
133
132
|
# ==== Load skills
|
|
134
133
|
tools: list[BaseTool | dict] = []
|
|
@@ -199,7 +198,7 @@ async def build_agent(
|
|
|
199
198
|
middleware=middleware,
|
|
200
199
|
state_schema=AgentState,
|
|
201
200
|
context_schema=AgentContext,
|
|
202
|
-
checkpointer=
|
|
201
|
+
checkpointer=memory,
|
|
203
202
|
debug=config.debug_checkpoint,
|
|
204
203
|
name=agent.id,
|
|
205
204
|
)
|
|
@@ -374,7 +373,6 @@ async def stream_agent_raw(
|
|
|
374
373
|
payer = user_message.user_id
|
|
375
374
|
if user_message.author_type in [
|
|
376
375
|
AuthorType.TELEGRAM,
|
|
377
|
-
AuthorType.DISCORD,
|
|
378
376
|
AuthorType.TWITTER,
|
|
379
377
|
AuthorType.API,
|
|
380
378
|
AuthorType.X402,
|
|
@@ -13,7 +13,6 @@ from intentkit.core.agent import (
|
|
|
13
13
|
update_agents_account_snapshot,
|
|
14
14
|
update_agents_statistics,
|
|
15
15
|
)
|
|
16
|
-
from intentkit.core.cleanup import cleanup_checkpoints
|
|
17
16
|
from intentkit.core.credit import refill_all_free_credits
|
|
18
17
|
from intentkit.models.agent_data import AgentQuota
|
|
19
18
|
|
|
@@ -141,16 +140,4 @@ def create_scheduler(
|
|
|
141
140
|
replace_existing=True,
|
|
142
141
|
)
|
|
143
142
|
|
|
144
|
-
# Cleanup old checkpoints daily at UTC 2:20
|
|
145
|
-
# Cleanup old checkpoints daily at UTC 2:20
|
|
146
|
-
|
|
147
|
-
scheduler.add_job(
|
|
148
|
-
cleanup_checkpoints,
|
|
149
|
-
trigger=CronTrigger(hour=2, minute=20, timezone="UTC"),
|
|
150
|
-
id="cleanup_checkpoints",
|
|
151
|
-
name="Cleanup old checkpoints",
|
|
152
|
-
kwargs={"days": 90, "dry_run": False},
|
|
153
|
-
replace_existing=True,
|
|
154
|
-
)
|
|
155
|
-
|
|
156
143
|
return scheduler
|
|
@@ -13,7 +13,6 @@ from intentkit.models.db_mig import safe_migrate
|
|
|
13
13
|
|
|
14
14
|
engine: AsyncEngine | None = None
|
|
15
15
|
_connection_pool: AsyncConnectionPool | None = None
|
|
16
|
-
_checkpointer: AsyncShallowPostgresSaver | None = None
|
|
17
16
|
|
|
18
17
|
|
|
19
18
|
async def check_connection(conn):
|
|
@@ -52,7 +51,7 @@ async def init_db(
|
|
|
52
51
|
auto_migrate: Whether to run migrations automatically (default: True)
|
|
53
52
|
pool_size: Database connection pool size (default: 3)
|
|
54
53
|
"""
|
|
55
|
-
global engine, _connection_pool
|
|
54
|
+
global engine, _connection_pool
|
|
56
55
|
# Initialize psycopg pool and AsyncShallowPostgresSaver if not already initialized
|
|
57
56
|
if _connection_pool is None:
|
|
58
57
|
if host:
|
|
@@ -71,7 +70,6 @@ async def init_db(
|
|
|
71
70
|
max_lifetime=3600, # 1 hour
|
|
72
71
|
)
|
|
73
72
|
_connection_pool = pool
|
|
74
|
-
_checkpointer = AsyncShallowPostgresSaver(pool)
|
|
75
73
|
if auto_migrate:
|
|
76
74
|
# Migrate can not use pool, so we start from scratch
|
|
77
75
|
async with AsyncShallowPostgresSaver.from_conn_string(
|
|
@@ -152,14 +150,3 @@ def get_connection_pool() -> AsyncConnectionPool:
|
|
|
152
150
|
if _connection_pool is None:
|
|
153
151
|
raise RuntimeError("Database pool not initialized. Call init_db first.")
|
|
154
152
|
return _connection_pool
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
def get_checkpointer() -> AsyncShallowPostgresSaver:
|
|
158
|
-
"""Get the AsyncShallowPostgresSaver instance.
|
|
159
|
-
|
|
160
|
-
Returns:
|
|
161
|
-
AsyncShallowPostgresSaver: The AsyncShallowPostgresSaver instance
|
|
162
|
-
"""
|
|
163
|
-
if _checkpointer is None:
|
|
164
|
-
raise RuntimeError("Database checkpointer not initialized. Call init_db first.")
|
|
165
|
-
return _checkpointer
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""Database migration utilities."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from collections.abc import Callable
|
|
5
|
+
|
|
6
|
+
from sqlalchemy import Column, MetaData, inspect, text
|
|
7
|
+
|
|
8
|
+
from intentkit.models.base import Base
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
async def add_column_if_not_exists(
|
|
14
|
+
conn, dialect, table_name: str, column: Column
|
|
15
|
+
) -> None:
|
|
16
|
+
"""Add a column to a table if it doesn't exist.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
conn: SQLAlchemy conn
|
|
20
|
+
table_name: Name of the table
|
|
21
|
+
column: Column to add
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
# Use run_sync to perform inspection on the connection
|
|
25
|
+
def _get_columns(connection):
|
|
26
|
+
inspector = inspect(connection)
|
|
27
|
+
return [c["name"] for c in inspector.get_columns(table_name)]
|
|
28
|
+
|
|
29
|
+
columns = await conn.run_sync(_get_columns)
|
|
30
|
+
|
|
31
|
+
if column.name not in columns:
|
|
32
|
+
# Build column definition
|
|
33
|
+
column_def = f"{column.name} {column.type.compile(dialect)}"
|
|
34
|
+
|
|
35
|
+
# Add DEFAULT if specified
|
|
36
|
+
if column.default is not None:
|
|
37
|
+
if hasattr(column.default, "arg"):
|
|
38
|
+
default_value = column.default.arg
|
|
39
|
+
if not isinstance(default_value, Callable):
|
|
40
|
+
if isinstance(default_value, bool):
|
|
41
|
+
default_value = str(default_value).lower()
|
|
42
|
+
elif isinstance(default_value, str):
|
|
43
|
+
default_value = f"'{default_value}'"
|
|
44
|
+
elif isinstance(default_value, list | dict):
|
|
45
|
+
default_value = "'{}'"
|
|
46
|
+
column_def += f" DEFAULT {default_value}"
|
|
47
|
+
|
|
48
|
+
# Execute ALTER TABLE
|
|
49
|
+
await conn.execute(text(f"ALTER TABLE {table_name} ADD COLUMN {column_def}"))
|
|
50
|
+
logger.info(f"Added column {column.name} to table {table_name}")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
async def update_table_schema(conn, dialect, model_cls) -> None:
|
|
54
|
+
"""Update table schema by adding missing columns from the model.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
conn: SQLAlchemy conn
|
|
58
|
+
dialect: SQLAlchemy dialect
|
|
59
|
+
model_cls: SQLAlchemy model class to check for new columns
|
|
60
|
+
"""
|
|
61
|
+
if not hasattr(model_cls, "__table__"):
|
|
62
|
+
return
|
|
63
|
+
|
|
64
|
+
table_name = model_cls.__tablename__
|
|
65
|
+
for name, column in model_cls.__table__.columns.items():
|
|
66
|
+
if name != "id": # Skip primary key
|
|
67
|
+
await add_column_if_not_exists(conn, dialect, table_name, column)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
async def safe_migrate(engine) -> None:
|
|
71
|
+
"""Safely migrate all SQLAlchemy models by adding new columns.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
engine: SQLAlchemy engine
|
|
75
|
+
"""
|
|
76
|
+
logger.info("Starting database schema migration")
|
|
77
|
+
dialect = engine.dialect
|
|
78
|
+
|
|
79
|
+
async with engine.begin() as conn:
|
|
80
|
+
try:
|
|
81
|
+
# Create tables if they don't exist
|
|
82
|
+
await conn.run_sync(Base.metadata.create_all)
|
|
83
|
+
|
|
84
|
+
# Get existing table metadata
|
|
85
|
+
metadata = MetaData()
|
|
86
|
+
await conn.run_sync(metadata.reflect)
|
|
87
|
+
|
|
88
|
+
# Update schema for all model classes
|
|
89
|
+
for mapper in Base.registry.mappers:
|
|
90
|
+
model_cls = mapper.class_
|
|
91
|
+
if hasattr(model_cls, "__tablename__"):
|
|
92
|
+
table_name = model_cls.__tablename__
|
|
93
|
+
if table_name in metadata.tables:
|
|
94
|
+
# We need a sync wrapper for the async update_table_schema
|
|
95
|
+
async def update_table_wrapper():
|
|
96
|
+
await update_table_schema(conn, dialect, model_cls)
|
|
97
|
+
|
|
98
|
+
await update_table_wrapper()
|
|
99
|
+
except Exception as e:
|
|
100
|
+
logger.error(f"Error updating database schema: {str(e)}")
|
|
101
|
+
raise
|
|
102
|
+
|
|
103
|
+
logger.info("Database schema updated successfully")
|
|
@@ -167,6 +167,7 @@ firecrawl,firecrawl_clear_indexed_content,firecrawl_clear_indexed_content,TRUE,1
|
|
|
167
167
|
xmtp,xmtp_transfer,xmtp_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
168
168
|
xmtp,xmtp_swap,xmtp_swap,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
169
169
|
xmtp,xmtp_get_swap_price,xmtp_get_swap_price,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
170
|
+
x402,x402_ask_agent,x402_ask_agent,TRUE,1,1,1,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
170
171
|
x402,x402_http_request,x402_http_request,TRUE,1,1,1,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
171
172
|
casino,deck_shuffle,casino_deck_shuffle,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
|
|
172
173
|
casino,deck_draw,casino_deck_draw,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
|
{intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_animagine_xl.py
RENAMED
|
@@ -4,9 +4,9 @@ import httpx
|
|
|
4
4
|
from epyxid import XID
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
6
6
|
|
|
7
|
-
from intentkit.clients.s3 import store_image
|
|
8
7
|
from intentkit.config.config import config
|
|
9
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
|
+
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
11
11
|
logger = logging.getLogger(__name__)
|
|
12
12
|
|
|
@@ -77,6 +77,7 @@ class ImageGenerationAnimagineXL(HeuristBaseTool):
|
|
|
77
77
|
"""
|
|
78
78
|
context = self.get_context()
|
|
79
79
|
skill_config = context.agent.skill_config(self.category)
|
|
80
|
+
skill_config = skill_config
|
|
80
81
|
|
|
81
82
|
# Get the Heurist API key from configuration
|
|
82
83
|
if "api_key" in skill_config and skill_config["api_key"]:
|
|
@@ -4,9 +4,9 @@ import httpx
|
|
|
4
4
|
from epyxid import XID
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
6
6
|
|
|
7
|
-
from intentkit.clients.s3 import store_image
|
|
8
7
|
from intentkit.config.config import config
|
|
9
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
|
+
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
11
11
|
logger = logging.getLogger(__name__)
|
|
12
12
|
|
|
@@ -76,6 +76,7 @@ class ImageGenerationArthemyComics(HeuristBaseTool):
|
|
|
76
76
|
"""
|
|
77
77
|
context = self.get_context()
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
|
+
skill_config = skill_config
|
|
79
80
|
|
|
80
81
|
# Get the Heurist API key from configuration
|
|
81
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
{intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_arthemy_real.py
RENAMED
|
@@ -4,9 +4,9 @@ import httpx
|
|
|
4
4
|
from epyxid import XID
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
6
6
|
|
|
7
|
-
from intentkit.clients.s3 import store_image
|
|
8
7
|
from intentkit.config.config import config
|
|
9
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
|
+
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
11
11
|
logger = logging.getLogger(__name__)
|
|
12
12
|
|
|
@@ -76,6 +76,7 @@ class ImageGenerationArthemyReal(HeuristBaseTool):
|
|
|
76
76
|
"""
|
|
77
77
|
context = self.get_context()
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
|
+
skill_config = skill_config
|
|
79
80
|
|
|
80
81
|
# Get the Heurist API key from configuration
|
|
81
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
{intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_braindance.py
RENAMED
|
@@ -4,9 +4,9 @@ import httpx
|
|
|
4
4
|
from epyxid import XID
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
6
6
|
|
|
7
|
-
from intentkit.clients.s3 import store_image
|
|
8
7
|
from intentkit.config.config import config
|
|
9
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
|
+
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
11
11
|
logger = logging.getLogger(__name__)
|
|
12
12
|
|
|
@@ -76,6 +76,7 @@ class ImageGenerationBrainDance(HeuristBaseTool):
|
|
|
76
76
|
"""
|
|
77
77
|
context = self.get_context()
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
|
+
skill_config = skill_config
|
|
79
80
|
|
|
80
81
|
# Get the Heurist API key from configuration
|
|
81
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
|
@@ -4,9 +4,9 @@ import httpx
|
|
|
4
4
|
from epyxid import XID
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
6
6
|
|
|
7
|
-
from intentkit.clients.s3 import store_image
|
|
8
7
|
from intentkit.config.config import config
|
|
9
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
|
+
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
11
11
|
logger = logging.getLogger(__name__)
|
|
12
12
|
|
|
@@ -76,6 +76,7 @@ class ImageGenerationCyberRealisticXL(HeuristBaseTool):
|
|
|
76
76
|
"""
|
|
77
77
|
context = self.get_context()
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
|
+
skill_config = skill_config
|
|
79
80
|
|
|
80
81
|
# Get the Heurist API key from configuration
|
|
81
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
{intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_flux_1_dev.py
RENAMED
|
@@ -4,9 +4,9 @@ import httpx
|
|
|
4
4
|
from epyxid import XID
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
6
6
|
|
|
7
|
-
from intentkit.clients.s3 import store_image
|
|
8
7
|
from intentkit.config.config import config
|
|
9
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
|
+
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
11
11
|
logger = logging.getLogger(__name__)
|
|
12
12
|
|
|
@@ -76,6 +76,7 @@ class ImageGenerationFlux1Dev(HeuristBaseTool):
|
|
|
76
76
|
"""
|
|
77
77
|
context = self.get_context()
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
|
+
skill_config = skill_config
|
|
79
80
|
|
|
80
81
|
# Get the Heurist API key from configuration
|
|
81
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
{intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_sdxl.py
RENAMED
|
@@ -4,9 +4,9 @@ import httpx
|
|
|
4
4
|
from epyxid import XID
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
6
6
|
|
|
7
|
-
from intentkit.clients.s3 import store_image
|
|
8
7
|
from intentkit.config.config import config
|
|
9
8
|
from intentkit.skills.heurist.base import HeuristBaseTool
|
|
9
|
+
from intentkit.utils.s3 import store_image
|
|
10
10
|
|
|
11
11
|
logger = logging.getLogger(__name__)
|
|
12
12
|
|
|
@@ -76,6 +76,7 @@ class ImageGenerationSDXL(HeuristBaseTool):
|
|
|
76
76
|
"""
|
|
77
77
|
context = self.get_context()
|
|
78
78
|
skill_config = context.agent.skill_config(self.category)
|
|
79
|
+
skill_config = skill_config
|
|
79
80
|
|
|
80
81
|
# Get the Heurist API key from configuration
|
|
81
82
|
if "api_key" in skill_config and skill_config["api_key"]:
|
{intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/dalle_image_generation.py
RENAMED
|
@@ -6,8 +6,8 @@ import openai
|
|
|
6
6
|
from epyxid import XID
|
|
7
7
|
from pydantic import BaseModel, Field
|
|
8
8
|
|
|
9
|
-
from intentkit.clients.s3 import store_image
|
|
10
9
|
from intentkit.skills.openai.base import OpenAIBaseTool
|
|
10
|
+
from intentkit.utils.s3 import store_image
|
|
11
11
|
|
|
12
12
|
logger = logging.getLogger(__name__)
|
|
13
13
|
|
|
@@ -7,8 +7,8 @@ import openai
|
|
|
7
7
|
from epyxid import XID
|
|
8
8
|
from pydantic import BaseModel, Field
|
|
9
9
|
|
|
10
|
-
from intentkit.clients.s3 import store_image_bytes
|
|
11
10
|
from intentkit.skills.openai.base import OpenAIBaseTool
|
|
11
|
+
from intentkit.utils.s3 import store_image_bytes
|
|
12
12
|
|
|
13
13
|
logger = logging.getLogger(__name__)
|
|
14
14
|
|
|
@@ -8,8 +8,8 @@ import openai
|
|
|
8
8
|
from epyxid import XID
|
|
9
9
|
from pydantic import BaseModel, Field
|
|
10
10
|
|
|
11
|
-
from intentkit.clients.s3 import store_image_bytes
|
|
12
11
|
from intentkit.skills.openai.base import OpenAIBaseTool
|
|
12
|
+
from intentkit.utils.s3 import store_image_bytes
|
|
13
13
|
|
|
14
14
|
logger = logging.getLogger(__name__)
|
|
15
15
|
|
{intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/gpt_image_mini_generator.py
RENAMED
|
@@ -8,9 +8,9 @@ import openai
|
|
|
8
8
|
from epyxid import XID
|
|
9
9
|
from pydantic import BaseModel
|
|
10
10
|
|
|
11
|
-
from intentkit.clients.s3 import store_image_bytes
|
|
12
11
|
from intentkit.skills.openai.base import OpenAIBaseTool
|
|
13
12
|
from intentkit.skills.openai.gpt_image_generation import GPTImageGenerationInput
|
|
13
|
+
from intentkit.utils.s3 import store_image_bytes
|
|
14
14
|
|
|
15
15
|
logger = logging.getLogger(__name__)
|
|
16
16
|
|
|
@@ -10,8 +10,8 @@ import openai
|
|
|
10
10
|
from epyxid import XID
|
|
11
11
|
from pydantic import BaseModel, Field
|
|
12
12
|
|
|
13
|
-
from intentkit.clients.s3 import store_image_bytes
|
|
14
13
|
from intentkit.skills.openai.base import OpenAIBaseTool
|
|
14
|
+
from intentkit.utils.s3 import store_image_bytes
|
|
15
15
|
|
|
16
16
|
logger = logging.getLogger(__name__)
|
|
17
17
|
|
|
@@ -6,9 +6,9 @@ from typing import Any
|
|
|
6
6
|
import httpx
|
|
7
7
|
from pydantic import BaseModel
|
|
8
8
|
|
|
9
|
-
from intentkit.clients.s3 import store_file
|
|
10
9
|
from intentkit.skills.venice_audio.base import VeniceAudioBaseTool
|
|
11
10
|
from intentkit.skills.venice_audio.input import AllowedAudioFormat, VeniceAudioInput
|
|
11
|
+
from intentkit.utils.s3 import store_file
|
|
12
12
|
|
|
13
13
|
logger = logging.getLogger(__name__)
|
|
14
14
|
|
|
@@ -5,14 +5,13 @@ from typing import Any, Literal
|
|
|
5
5
|
|
|
6
6
|
from pydantic import BaseModel, Field
|
|
7
7
|
|
|
8
|
-
from intentkit.clients.s3 import store_image_bytes
|
|
9
|
-
|
|
10
8
|
# Import the generic base
|
|
11
9
|
from intentkit.skills.base import ToolException
|
|
12
10
|
from intentkit.skills.venice_image.base import VeniceImageBaseTool
|
|
13
11
|
from intentkit.skills.venice_image.image_generation.image_generation_input import (
|
|
14
12
|
VeniceImageGenerationInput,
|
|
15
13
|
)
|
|
14
|
+
from intentkit.utils.s3 import store_image_bytes
|
|
16
15
|
|
|
17
16
|
logger = logging.getLogger(__name__)
|
|
18
17
|
|
|
@@ -4,6 +4,7 @@ import logging
|
|
|
4
4
|
from typing import TypedDict
|
|
5
5
|
|
|
6
6
|
from intentkit.skills.base import SkillConfig, SkillState
|
|
7
|
+
from intentkit.skills.x402.ask_agent import X402AskAgent
|
|
7
8
|
from intentkit.skills.x402.base import X402BaseSkill
|
|
8
9
|
from intentkit.skills.x402.http_request import X402HttpRequest
|
|
9
10
|
|
|
@@ -13,6 +14,7 @@ _cache: dict[str, X402BaseSkill] = {}
|
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
class SkillStates(TypedDict):
|
|
17
|
+
x402_ask_agent: SkillState
|
|
16
18
|
x402_http_request: SkillState
|
|
17
19
|
|
|
18
20
|
|
|
@@ -23,6 +25,7 @@ class Config(SkillConfig):
|
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
_SKILL_BUILDERS: dict[str, type[X402BaseSkill]] = {
|
|
28
|
+
"x402_ask_agent": X402AskAgent,
|
|
26
29
|
"x402_http_request": X402HttpRequest,
|
|
27
30
|
}
|
|
28
31
|
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from langchain_core.tools import ToolException
|
|
5
|
+
from pydantic import BaseModel, Field
|
|
6
|
+
|
|
7
|
+
from intentkit.config.config import config
|
|
8
|
+
from intentkit.models.chat import AuthorType
|
|
9
|
+
from intentkit.skills.x402.base import X402BaseSkill
|
|
10
|
+
|
|
11
|
+
logger = logging.getLogger(__name__)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AskAgentInput(BaseModel):
|
|
15
|
+
"""Arguments for the x402 ask agent skill."""
|
|
16
|
+
|
|
17
|
+
agent_id: str = Field(description="ID or slug of the agent to query.")
|
|
18
|
+
message: str = Field(description="Message to send to the target agent.")
|
|
19
|
+
search_mode: bool | None = Field(
|
|
20
|
+
default=None, description="Enable search mode when interacting with the agent."
|
|
21
|
+
)
|
|
22
|
+
super_mode: bool | None = Field(
|
|
23
|
+
default=None, description="Enable super mode when interacting with the agent."
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class X402AskAgent(X402BaseSkill):
|
|
28
|
+
"""Skill that queries another agent via the x402 API."""
|
|
29
|
+
|
|
30
|
+
name: str = "x402_ask_agent"
|
|
31
|
+
description: str = (
|
|
32
|
+
"Call another agent through the x402 API and return the final agent message."
|
|
33
|
+
)
|
|
34
|
+
args_schema: type[BaseModel] = AskAgentInput
|
|
35
|
+
|
|
36
|
+
async def _arun(
|
|
37
|
+
self,
|
|
38
|
+
agent_id: str,
|
|
39
|
+
message: str,
|
|
40
|
+
search_mode: bool | None = None,
|
|
41
|
+
super_mode: bool | None = None,
|
|
42
|
+
) -> str:
|
|
43
|
+
try:
|
|
44
|
+
# Use wallet provider signer to satisfy eth_account.BaseAccount interface requirements
|
|
45
|
+
base_url = (config.open_api_base_url or "").rstrip("/")
|
|
46
|
+
if not base_url:
|
|
47
|
+
raise ToolException("X402 API base URL is not configured.")
|
|
48
|
+
target_url = f"{base_url}/x402"
|
|
49
|
+
payload: dict[str, Any] = {
|
|
50
|
+
"agent_id": agent_id,
|
|
51
|
+
"message": message,
|
|
52
|
+
"app_id": "skill",
|
|
53
|
+
}
|
|
54
|
+
if search_mode is not None:
|
|
55
|
+
payload["search_mode"] = search_mode
|
|
56
|
+
if super_mode is not None:
|
|
57
|
+
payload["super_mode"] = super_mode
|
|
58
|
+
|
|
59
|
+
async with self.http_client(timeout=20.0) as client:
|
|
60
|
+
response = await client.post(target_url, json=payload)
|
|
61
|
+
try:
|
|
62
|
+
response.raise_for_status()
|
|
63
|
+
except Exception as e:
|
|
64
|
+
error_body = ""
|
|
65
|
+
try:
|
|
66
|
+
error_body = response.text
|
|
67
|
+
except Exception:
|
|
68
|
+
error_body = "Unable to read response body"
|
|
69
|
+
logger.error(
|
|
70
|
+
f"HTTP request failed with status {response.status_code}: {error_body}"
|
|
71
|
+
)
|
|
72
|
+
raise ToolException(
|
|
73
|
+
f"HTTP request failed with status {response.status_code}: {error_body}"
|
|
74
|
+
) from e
|
|
75
|
+
messages = response.json()
|
|
76
|
+
if not isinstance(messages, list) or not messages:
|
|
77
|
+
raise ValueError("Agent returned an empty response.")
|
|
78
|
+
|
|
79
|
+
last_message = messages[-1]
|
|
80
|
+
if not isinstance(last_message, dict):
|
|
81
|
+
raise ValueError("Agent response format is invalid.")
|
|
82
|
+
|
|
83
|
+
author_type = last_message.get("author_type")
|
|
84
|
+
content = last_message.get("message")
|
|
85
|
+
|
|
86
|
+
if author_type == AuthorType.SYSTEM.value:
|
|
87
|
+
raise ToolException(content or "Agent returned a system message.")
|
|
88
|
+
|
|
89
|
+
if not content:
|
|
90
|
+
raise ToolException("Agent response did not include message text.")
|
|
91
|
+
|
|
92
|
+
return str(content)
|
|
93
|
+
except ToolException:
|
|
94
|
+
# Re-raise ToolException as-is
|
|
95
|
+
raise
|
|
96
|
+
except Exception as e:
|
|
97
|
+
logger.error(f"Unexpected error in x402_ask_agent: {str(e)}")
|
|
98
|
+
raise ToolException(f"Unexpected error occurred: {str(e)}") from e
|