intentkit 0.8.34.dev3__tar.gz → 0.8.34.dev6__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.dev3 → intentkit-0.8.34.dev6}/PKG-INFO +1 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/__init__.py +1 -1
- {intentkit-0.8.34.dev3/intentkit/utils → intentkit-0.8.34.dev6/intentkit/clients}/s3.py +51 -29
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/config/config.py +8 -6
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/chat.py +2 -5
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/engine.py +8 -6
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/db.py +14 -1
- intentkit-0.8.34.dev6/intentkit/models/db_mig.py +220 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/skills.csv +0 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/image_generation_animagine_xl.py +1 -2
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/image_generation_arthemy_comics.py +1 -2
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/image_generation_arthemy_real.py +1 -2
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/image_generation_braindance.py +1 -2
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +1 -2
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/image_generation_flux_1_dev.py +1 -2
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/image_generation_sdxl.py +1 -2
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/dalle_image_generation.py +1 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/gpt_avatar_generator.py +1 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/gpt_image_generation.py +1 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/gpt_image_mini_generator.py +1 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/gpt_image_to_image.py +1 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_audio/venice_audio.py +1 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/api.py +1 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/image_generation_base.py +2 -1
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/x402/__init__.py +0 -3
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/x402/schema.json +10 -15
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/pyproject.toml +1 -1
- intentkit-0.8.34.dev3/intentkit/models/db_mig.py +0 -103
- intentkit-0.8.34.dev3/intentkit/skills/x402/ask_agent.py +0 -98
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/.gitignore +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/LICENSE +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/LICENSE +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/MANIFEST.in +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/abstracts/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/abstracts/agent.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/abstracts/api.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/abstracts/engine.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/abstracts/graph.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/abstracts/skill.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/abstracts/twitter.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/clients/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/clients/cdp.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/clients/twitter.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/clients/web3.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/config/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/account_checking.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/agent.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/api.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/asset.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/client.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/credit.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/draft.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/draft_chat.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/manager/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/manager/engine.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/manager/service.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/manager/skills.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/middleware.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/prompt.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/scheduler.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/core/statistics.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/agent.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/agent_data.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/agent_public.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/agent_schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/app_setting.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/chat.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/credit.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/draft.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/llm.csv +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/llm.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/redis.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/skill.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/team.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/models/user.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/acolyt/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/acolyt/ask.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/acolyt/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/acolyt/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/aixbt/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/aixbt/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/aixbt/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/aixbt/projects.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/aixbt/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/allora/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/allora/allora.jpeg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/allora/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/allora/price.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/allora/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/basename/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/basename/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/basename/basename.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/basename/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/carv/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/carv/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/carv/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/carv/carv.webp +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/carv/fetch_news.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/carv/onchain_query.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/carv/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/casino/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/casino/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/casino/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/casino/casino.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/casino/deck_draw.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/casino/deck_shuffle.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/casino/dice_roll.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/casino/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/casino/utils.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cdp/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cdp/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cdp/cdp.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cdp/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/chainlist/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/chainlist/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/chainlist/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/chainlist/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/common/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/common/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/common/common.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/common/current_time.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/common/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/constants.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/api.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptopanic/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dapplooker/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dapplooker/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dapplooker/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/api.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/config/chains.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dexscreener/utils.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dune_analytics/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/elfa/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/elfa/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/elfa/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/elfa/mention.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/elfa/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/elfa/stats.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/elfa/tokens.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/elfa/utils.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/abi/approval.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/abi/route.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/best_yield.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/enso.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/networks.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/prices.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/route.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/tokens.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/enso/wallet.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/erc20/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/erc20/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/erc20/erc20.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/erc20/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/erc721/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/erc721/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/erc721/erc721.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/erc721/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/clear.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/query.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/firecrawl/utils.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/github/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/github/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/github/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/github/github.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/github/github_search.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/github/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/heurist.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/heurist/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/http/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/http/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/http/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/http/get.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/http/http.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/http/post.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/http/put.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/http/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/lifi/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/lifi/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/lifi/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/lifi/lifi.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/lifi/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/lifi/token_execute.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/lifi/token_quote.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/lifi/utils.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/api.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/moralis.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/moralis/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/morpho/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/morpho/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/morpho/morpho.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/morpho/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/nation/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/nation/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/nation/nation.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/nation/nft_check.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/nation/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/onchain.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/image_to_text.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/openai.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/openai/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/constants.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/moralis.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/pyth/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/pyth/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/pyth/pyth.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/pyth/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/skills.toml +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/slack/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/slack/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/slack/get_channel.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/slack/get_message.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/slack/schedule_message.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/slack/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/slack/send_message.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/slack/slack.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/delete_data.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/insert_data.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/supabase.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/update_data.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/superfluid/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/superfluid/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/superfluid/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/superfluid/superfluid.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/add_autonomous_task.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/delete_autonomous_task.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/edit_autonomous_task.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/list_autonomous_tasks.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/read_agent_api_key.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/regenerate_agent_api_key.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/system/system.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/tavily/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/tavily/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/tavily/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/tavily/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/constants.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/moralis.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/token_analytics.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/token_price.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/token/token_search.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/follow_user.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/retweet.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/twitter/twitter.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/unrealspeech/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_audio/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_audio/input.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_audio/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/config.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/utils.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/web_scraper/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/web_scraper/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/web_scraper/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/web_scraper/utils.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/weth/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/weth/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/weth/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/weth/weth.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/wow/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/wow/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/wow/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/wow/wow.svg +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/x402/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/x402/http_request.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/x402/x402.webp +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/xmtp/README.md +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/xmtp/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/xmtp/base.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/xmtp/price.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/xmtp/schema.json +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/xmtp/swap.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/xmtp/transfer.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/skills/xmtp/xmtp.png +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/utils/__init__.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/utils/chain.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/utils/ens.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/utils/error.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/utils/logging.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/utils/random.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/utils/schema.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/utils/slack_alert.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/intentkit/utils/tx.py +0 -0
- {intentkit-0.8.34.dev3 → intentkit-0.8.34.dev6}/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.dev6
|
|
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
|
|
@@ -13,6 +13,8 @@ import httpx
|
|
|
13
13
|
from botocore.exceptions import ClientError
|
|
14
14
|
from mypy_boto3_s3.client import S3Client
|
|
15
15
|
|
|
16
|
+
from intentkit.config.config import config
|
|
17
|
+
|
|
16
18
|
logger = logging.getLogger(__name__)
|
|
17
19
|
|
|
18
20
|
# Global variables for S3 configuration
|
|
@@ -22,31 +24,47 @@ _prefix: str | None = None
|
|
|
22
24
|
_cdn_url: str | None = None
|
|
23
25
|
|
|
24
26
|
|
|
25
|
-
def
|
|
27
|
+
def get_s3_client() -> S3Client | None:
|
|
26
28
|
"""
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
bucket: S3 bucket name
|
|
31
|
-
cdn_url: CDN URL for the S3 bucket
|
|
32
|
-
env: Environment name for the prefix
|
|
33
|
-
|
|
34
|
-
Raises:
|
|
35
|
-
ValueError: If bucket or cdn_url is empty
|
|
29
|
+
Get or initialize S3 client and configuration.
|
|
30
|
+
Returns None if configuration is missing.
|
|
36
31
|
"""
|
|
37
32
|
global _bucket, _client, _prefix, _cdn_url
|
|
38
33
|
|
|
39
|
-
if not
|
|
40
|
-
|
|
41
|
-
if not cdn_url:
|
|
42
|
-
raise ValueError("S3 CDN URL cannot be empty")
|
|
34
|
+
if _client is not None:
|
|
35
|
+
return _client
|
|
43
36
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
if not config.aws_s3_bucket or not config.aws_s3_cdn_url:
|
|
38
|
+
# Only log once or if needed, but here we just return None
|
|
39
|
+
# The calling functions usually log "S3 not initialized"
|
|
40
|
+
return None
|
|
48
41
|
|
|
49
|
-
|
|
42
|
+
_bucket = config.aws_s3_bucket
|
|
43
|
+
_cdn_url = config.aws_s3_cdn_url
|
|
44
|
+
_prefix = f"{config.env}/intentkit/"
|
|
45
|
+
|
|
46
|
+
try:
|
|
47
|
+
if config.aws_s3_endpoint_url:
|
|
48
|
+
_client = cast(
|
|
49
|
+
S3Client,
|
|
50
|
+
boto3.client(
|
|
51
|
+
"s3",
|
|
52
|
+
endpoint_url=config.aws_s3_endpoint_url,
|
|
53
|
+
region_name=config.aws_s3_region_name,
|
|
54
|
+
aws_access_key_id=config.aws_s3_access_key_id,
|
|
55
|
+
aws_secret_access_key=config.aws_s3_secret_access_key,
|
|
56
|
+
),
|
|
57
|
+
)
|
|
58
|
+
logger.info(
|
|
59
|
+
f"S3 initialized with custom endpoint: {config.aws_s3_endpoint_url}, bucket: {_bucket}, prefix: {_prefix}"
|
|
60
|
+
)
|
|
61
|
+
else:
|
|
62
|
+
_client = cast(S3Client, boto3.client("s3"))
|
|
63
|
+
logger.info(f"S3 initialized with bucket: {_bucket}, prefix: {_prefix}")
|
|
64
|
+
return _client
|
|
65
|
+
except Exception as e:
|
|
66
|
+
logger.error(f"Failed to initialize S3 client: {e}")
|
|
67
|
+
return None
|
|
50
68
|
|
|
51
69
|
|
|
52
70
|
async def store_image(url: str, key: str) -> str:
|
|
@@ -64,15 +82,16 @@ async def store_image(url: str, key: str) -> str:
|
|
|
64
82
|
ClientError: If the upload fails
|
|
65
83
|
httpx.HTTPError: If the download fails
|
|
66
84
|
"""
|
|
67
|
-
|
|
85
|
+
client = get_s3_client()
|
|
86
|
+
if not client or not _bucket or not _prefix or not _cdn_url:
|
|
68
87
|
# If S3 is not initialized, log and return the original URL
|
|
69
88
|
logger.info("S3 not initialized. Returning original URL.")
|
|
70
89
|
return url
|
|
71
90
|
|
|
72
91
|
try:
|
|
73
92
|
# Download the image from the URL asynchronously
|
|
74
|
-
async with httpx.AsyncClient() as
|
|
75
|
-
response = await
|
|
93
|
+
async with httpx.AsyncClient() as http_client:
|
|
94
|
+
response = await http_client.get(url, follow_redirects=True)
|
|
76
95
|
response.raise_for_status()
|
|
77
96
|
|
|
78
97
|
# Prepare the S3 key with prefix
|
|
@@ -93,7 +112,7 @@ async def store_image(url: str, key: str) -> str:
|
|
|
93
112
|
content_type = "image/jpeg"
|
|
94
113
|
|
|
95
114
|
# Upload to S3
|
|
96
|
-
|
|
115
|
+
client.upload_fileobj(
|
|
97
116
|
file_obj,
|
|
98
117
|
_bucket,
|
|
99
118
|
prefixed_key,
|
|
@@ -131,7 +150,8 @@ async def store_image_bytes(
|
|
|
131
150
|
ClientError: If the upload fails
|
|
132
151
|
ValueError: If S3 is not initialized or image_bytes is empty
|
|
133
152
|
"""
|
|
134
|
-
|
|
153
|
+
client = get_s3_client()
|
|
154
|
+
if not client or not _bucket or not _prefix or not _cdn_url:
|
|
135
155
|
# If S3 is not initialized, log and return empty string
|
|
136
156
|
logger.info("S3 not initialized. Cannot store image bytes.")
|
|
137
157
|
return ""
|
|
@@ -158,7 +178,7 @@ async def store_image_bytes(
|
|
|
158
178
|
|
|
159
179
|
logger.info("uploading image to s3")
|
|
160
180
|
# Upload to S3
|
|
161
|
-
|
|
181
|
+
client.upload_fileobj(
|
|
162
182
|
file_obj,
|
|
163
183
|
_bucket,
|
|
164
184
|
prefixed_key,
|
|
@@ -189,7 +209,8 @@ async def store_file(
|
|
|
189
209
|
size: int | None = None,
|
|
190
210
|
) -> str:
|
|
191
211
|
"""Store raw file bytes with automatic content type detection."""
|
|
192
|
-
|
|
212
|
+
client = get_s3_client()
|
|
213
|
+
if not client or not _bucket or not _prefix or not _cdn_url:
|
|
193
214
|
logger.info("S3 not initialized. Cannot store file bytes.")
|
|
194
215
|
return ""
|
|
195
216
|
|
|
@@ -220,7 +241,7 @@ async def store_file(
|
|
|
220
241
|
effective_size,
|
|
221
242
|
)
|
|
222
243
|
|
|
223
|
-
|
|
244
|
+
client.upload_fileobj(
|
|
224
245
|
file_obj,
|
|
225
246
|
_bucket,
|
|
226
247
|
prefixed_key,
|
|
@@ -257,7 +278,8 @@ async def store_file_bytes(
|
|
|
257
278
|
ClientError: If the upload fails
|
|
258
279
|
ValueError: If S3 is not initialized, file_bytes is empty, or file exceeds size limit
|
|
259
280
|
"""
|
|
260
|
-
|
|
281
|
+
client = get_s3_client()
|
|
282
|
+
if not client or not _bucket or not _prefix or not _cdn_url:
|
|
261
283
|
logger.info("S3 not initialized. Cannot store file bytes.")
|
|
262
284
|
return ""
|
|
263
285
|
if not file_bytes:
|
|
@@ -303,7 +325,7 @@ async def store_file_bytes(
|
|
|
303
325
|
logger.info(f"Uploading {file_type} to S3 with content type {content_type}")
|
|
304
326
|
|
|
305
327
|
# Upload to S3
|
|
306
|
-
|
|
328
|
+
client.upload_fileobj(
|
|
307
329
|
file_obj,
|
|
308
330
|
_bucket,
|
|
309
331
|
prefixed_key,
|
|
@@ -7,7 +7,6 @@ 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
|
|
11
10
|
from intentkit.utils.slack_alert import init_slack
|
|
12
11
|
|
|
13
12
|
SecretsMap = dict[str, str | int]
|
|
@@ -71,9 +70,16 @@ class Config:
|
|
|
71
70
|
self.redis_host: str | None = self.load("REDIS_HOST")
|
|
72
71
|
self.redis_port: int = self.load_int("REDIS_PORT", 6379)
|
|
73
72
|
self.redis_db: int = self.load_int("REDIS_DB", 0)
|
|
74
|
-
# AWS
|
|
73
|
+
# AWS S3
|
|
75
74
|
self.aws_s3_bucket: str | None = self.load("AWS_S3_BUCKET")
|
|
76
75
|
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
|
+
)
|
|
77
83
|
# Internal API
|
|
78
84
|
self.internal_base_url: str = self.load(
|
|
79
85
|
"INTERNAL_BASE_URL", "http://intent-api"
|
|
@@ -89,7 +95,6 @@ class Config:
|
|
|
89
95
|
self.debug_password: str | None = self.load("DEBUG_PASSWORD")
|
|
90
96
|
# Payment
|
|
91
97
|
self.payment_enabled: bool = self.load("PAYMENT_ENABLED", "false") == "true"
|
|
92
|
-
self.x402_fee_address: str | None = self.load("X402_FEE_ADDRESS")
|
|
93
98
|
# Open API for agent
|
|
94
99
|
self.open_api_base_url: str = self.load(
|
|
95
100
|
"OPEN_API_BASE_URL", "http://localhost:8000"
|
|
@@ -183,9 +188,6 @@ class Config:
|
|
|
183
188
|
# If the slack alert token exists, init it
|
|
184
189
|
if self.slack_alert_token and self.slack_alert_channel:
|
|
185
190
|
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
191
|
|
|
190
192
|
@overload
|
|
191
193
|
def load(self, key: str) -> str | None: ... # noqa: F811
|
|
@@ -6,9 +6,7 @@ including clearing thread history using LangGraph's checkpointer.
|
|
|
6
6
|
|
|
7
7
|
import logging
|
|
8
8
|
|
|
9
|
-
from
|
|
10
|
-
|
|
11
|
-
from intentkit.models.db import get_connection_pool
|
|
9
|
+
from intentkit.models.db import get_checkpointer
|
|
12
10
|
from intentkit.utils.error import IntentKitAPIError
|
|
13
11
|
|
|
14
12
|
logger = logging.getLogger(__name__)
|
|
@@ -36,8 +34,7 @@ async def clear_thread_memory(agent_id: str, chat_id: str) -> bool:
|
|
|
36
34
|
thread_id = f"{agent_id}-{chat_id}"
|
|
37
35
|
|
|
38
36
|
# Get the LangGraph checkpointer instance
|
|
39
|
-
|
|
40
|
-
checkpointer = AsyncShallowPostgresSaver(pool)
|
|
37
|
+
checkpointer = get_checkpointer()
|
|
41
38
|
|
|
42
39
|
# Use the official LangGraph method to delete all thread content
|
|
43
40
|
await checkpointer.adelete_thread(thread_id)
|
|
@@ -27,7 +27,6 @@ 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
|
|
31
30
|
from langgraph.errors import GraphRecursionError
|
|
32
31
|
from langgraph.graph.state import CompiledStateGraph
|
|
33
32
|
from sqlalchemy import func, update
|
|
@@ -55,7 +54,10 @@ from intentkit.models.chat import (
|
|
|
55
54
|
ChatMessageSkillCall,
|
|
56
55
|
)
|
|
57
56
|
from intentkit.models.credit import CreditAccount, OwnerType
|
|
58
|
-
from intentkit.models.db import
|
|
57
|
+
from intentkit.models.db import (
|
|
58
|
+
get_checkpointer,
|
|
59
|
+
get_session,
|
|
60
|
+
)
|
|
59
61
|
from intentkit.models.llm import LLMModelInfo, create_llm_model
|
|
60
62
|
from intentkit.models.skill import AgentSkillData, ChatSkillData, Skill
|
|
61
63
|
from intentkit.models.user import User
|
|
@@ -124,10 +126,9 @@ async def build_agent(
|
|
|
124
126
|
|
|
125
127
|
# ==== Store buffered conversation history in memory.
|
|
126
128
|
try:
|
|
127
|
-
|
|
128
|
-
memory = AsyncShallowPostgresSaver(pool)
|
|
129
|
+
checkpointer = get_checkpointer()
|
|
129
130
|
except RuntimeError:
|
|
130
|
-
|
|
131
|
+
checkpointer = InMemorySaver()
|
|
131
132
|
|
|
132
133
|
# ==== Load skills
|
|
133
134
|
tools: list[BaseTool | dict] = []
|
|
@@ -198,7 +199,7 @@ async def build_agent(
|
|
|
198
199
|
middleware=middleware,
|
|
199
200
|
state_schema=AgentState,
|
|
200
201
|
context_schema=AgentContext,
|
|
201
|
-
checkpointer=
|
|
202
|
+
checkpointer=checkpointer,
|
|
202
203
|
debug=config.debug_checkpoint,
|
|
203
204
|
name=agent.id,
|
|
204
205
|
)
|
|
@@ -373,6 +374,7 @@ async def stream_agent_raw(
|
|
|
373
374
|
payer = user_message.user_id
|
|
374
375
|
if user_message.author_type in [
|
|
375
376
|
AuthorType.TELEGRAM,
|
|
377
|
+
AuthorType.DISCORD,
|
|
376
378
|
AuthorType.TWITTER,
|
|
377
379
|
AuthorType.API,
|
|
378
380
|
AuthorType.X402,
|
|
@@ -13,6 +13,7 @@ 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
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
async def check_connection(conn):
|
|
@@ -51,7 +52,7 @@ async def init_db(
|
|
|
51
52
|
auto_migrate: Whether to run migrations automatically (default: True)
|
|
52
53
|
pool_size: Database connection pool size (default: 3)
|
|
53
54
|
"""
|
|
54
|
-
global engine, _connection_pool
|
|
55
|
+
global engine, _connection_pool, _checkpointer
|
|
55
56
|
# Initialize psycopg pool and AsyncShallowPostgresSaver if not already initialized
|
|
56
57
|
if _connection_pool is None:
|
|
57
58
|
if host:
|
|
@@ -70,6 +71,7 @@ async def init_db(
|
|
|
70
71
|
max_lifetime=3600, # 1 hour
|
|
71
72
|
)
|
|
72
73
|
_connection_pool = pool
|
|
74
|
+
_checkpointer = AsyncShallowPostgresSaver(pool)
|
|
73
75
|
if auto_migrate:
|
|
74
76
|
# Migrate can not use pool, so we start from scratch
|
|
75
77
|
async with AsyncShallowPostgresSaver.from_conn_string(
|
|
@@ -150,3 +152,14 @@ def get_connection_pool() -> AsyncConnectionPool:
|
|
|
150
152
|
if _connection_pool is None:
|
|
151
153
|
raise RuntimeError("Database pool not initialized. Call init_db first.")
|
|
152
154
|
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,220 @@
|
|
|
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
|
+
|
|
100
|
+
# Migrate checkpoints tables
|
|
101
|
+
await migrate_checkpoints_table(conn)
|
|
102
|
+
except Exception as e:
|
|
103
|
+
logger.error(f"Error updating database schema: {str(e)}")
|
|
104
|
+
raise
|
|
105
|
+
|
|
106
|
+
logger.info("Database schema updated successfully")
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
async def migrate_checkpoints_table(conn) -> None:
|
|
110
|
+
"""Migrate checkpoints tables to support langgraph 2.0."""
|
|
111
|
+
tables = ["checkpoints", "checkpoint_blobs", "checkpoint_writes"]
|
|
112
|
+
|
|
113
|
+
def _get_tables(connection):
|
|
114
|
+
insp = inspect(connection)
|
|
115
|
+
return insp.get_table_names()
|
|
116
|
+
|
|
117
|
+
existing_tables = await conn.run_sync(_get_tables)
|
|
118
|
+
|
|
119
|
+
for table in tables:
|
|
120
|
+
if table not in existing_tables:
|
|
121
|
+
continue
|
|
122
|
+
|
|
123
|
+
# 1. Add checkpoint_ns column
|
|
124
|
+
await conn.execute(
|
|
125
|
+
text(
|
|
126
|
+
f"ALTER TABLE {table} ADD COLUMN IF NOT EXISTS checkpoint_ns TEXT DEFAULT ''"
|
|
127
|
+
)
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
# 2. Drop columns that ShallowPostgresSaver doesn't use
|
|
131
|
+
if table == "checkpoints":
|
|
132
|
+
# ShallowPostgresSaver doesn't use checkpoint_id or parent_checkpoint_id
|
|
133
|
+
await conn.execute(
|
|
134
|
+
text("ALTER TABLE checkpoints DROP COLUMN IF EXISTS checkpoint_id")
|
|
135
|
+
)
|
|
136
|
+
await conn.execute(
|
|
137
|
+
text(
|
|
138
|
+
"ALTER TABLE checkpoints DROP COLUMN IF EXISTS parent_checkpoint_id"
|
|
139
|
+
)
|
|
140
|
+
)
|
|
141
|
+
elif table == "checkpoint_blobs":
|
|
142
|
+
# ShallowPostgresSaver doesn't use version column
|
|
143
|
+
await conn.execute(
|
|
144
|
+
text("ALTER TABLE checkpoint_blobs DROP COLUMN IF EXISTS version")
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
# 3. Update Primary Key
|
|
148
|
+
def _check_pk(connection, table_name=table):
|
|
149
|
+
insp = inspect(connection)
|
|
150
|
+
return insp.get_pk_constraint(table_name)
|
|
151
|
+
|
|
152
|
+
pk = await conn.run_sync(_check_pk)
|
|
153
|
+
current_cols = set(pk.get("constrained_columns", []))
|
|
154
|
+
|
|
155
|
+
# Expected columns depend on table
|
|
156
|
+
expected_cols = set()
|
|
157
|
+
pk_cols = ""
|
|
158
|
+
if table == "checkpoints":
|
|
159
|
+
expected_cols = {"thread_id", "checkpoint_ns"}
|
|
160
|
+
pk_cols = "thread_id, checkpoint_ns"
|
|
161
|
+
elif table == "checkpoint_blobs":
|
|
162
|
+
expected_cols = {"thread_id", "checkpoint_ns", "channel"}
|
|
163
|
+
pk_cols = "thread_id, checkpoint_ns, channel"
|
|
164
|
+
elif table == "checkpoint_writes":
|
|
165
|
+
expected_cols = {
|
|
166
|
+
"thread_id",
|
|
167
|
+
"checkpoint_ns",
|
|
168
|
+
"checkpoint_id",
|
|
169
|
+
"task_id",
|
|
170
|
+
"idx",
|
|
171
|
+
}
|
|
172
|
+
pk_cols = "thread_id, checkpoint_ns, checkpoint_id, task_id, idx"
|
|
173
|
+
|
|
174
|
+
if current_cols != expected_cols:
|
|
175
|
+
logger.info(f"Migrating {table} PK from {current_cols} to {expected_cols}")
|
|
176
|
+
|
|
177
|
+
# If migrating checkpoints to (thread_id, checkpoint_ns), we need to handle duplicates
|
|
178
|
+
if table == "checkpoints" and expected_cols == {
|
|
179
|
+
"thread_id",
|
|
180
|
+
"checkpoint_ns",
|
|
181
|
+
}:
|
|
182
|
+
# Keep only the latest checkpoint for each (thread_id, checkpoint_ns) based on checkpoint_id (time-ordered)
|
|
183
|
+
await conn.execute(
|
|
184
|
+
text("""
|
|
185
|
+
DELETE FROM checkpoints
|
|
186
|
+
WHERE (thread_id, checkpoint_ns, checkpoint_id) NOT IN (
|
|
187
|
+
SELECT thread_id, checkpoint_ns, MAX(checkpoint_id)
|
|
188
|
+
FROM checkpoints
|
|
189
|
+
GROUP BY thread_id, checkpoint_ns
|
|
190
|
+
)
|
|
191
|
+
""")
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
# If migrating checkpoint_blobs to (thread_id, checkpoint_ns, channel), we need to handle duplicates
|
|
195
|
+
elif table == "checkpoint_blobs" and expected_cols == {
|
|
196
|
+
"thread_id",
|
|
197
|
+
"checkpoint_ns",
|
|
198
|
+
"channel",
|
|
199
|
+
}:
|
|
200
|
+
# Keep only blobs that are referenced by the remaining checkpoints
|
|
201
|
+
# The relationship is: checkpoints.checkpoint -> 'channel_versions' ->> blob.channel = blob.version
|
|
202
|
+
await conn.execute(
|
|
203
|
+
text("""
|
|
204
|
+
DELETE FROM checkpoint_blobs cb
|
|
205
|
+
WHERE NOT EXISTS (
|
|
206
|
+
SELECT 1
|
|
207
|
+
FROM checkpoints cp
|
|
208
|
+
WHERE cp.thread_id = cb.thread_id
|
|
209
|
+
AND cp.checkpoint_ns = cb.checkpoint_ns
|
|
210
|
+
AND (cp.checkpoint -> 'channel_versions' ->> cb.channel) = cb.version
|
|
211
|
+
)
|
|
212
|
+
""")
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
if pk.get("name"):
|
|
216
|
+
await conn.execute(
|
|
217
|
+
text(f"ALTER TABLE {table} DROP CONSTRAINT {pk['name']}")
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
await conn.execute(text(f"ALTER TABLE {table} ADD PRIMARY KEY ({pk_cols})"))
|
|
@@ -167,7 +167,6 @@ 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
|
|
171
170
|
x402,x402_http_request,x402_http_request,TRUE,1,1,1,,,0x445750026A4a1906b61302442E085f9cbAfe206a
|
|
172
171
|
casino,deck_shuffle,casino_deck_shuffle,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
|
|
173
172
|
casino,deck_draw,casino_deck_draw,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
|
|
@@ -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
|
|
7
8
|
from intentkit.config.config import config
|
|
8
9
|
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,7 +77,6 @@ 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
|
|
81
80
|
|
|
82
81
|
# Get the Heurist API key from configuration
|
|
83
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
|
|
7
8
|
from intentkit.config.config import config
|
|
8
9
|
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,7 +76,6 @@ 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
|
|
80
79
|
|
|
81
80
|
# Get the Heurist API key from configuration
|
|
82
81
|
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
|
|
7
8
|
from intentkit.config.config import config
|
|
8
9
|
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,7 +76,6 @@ 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
|
|
80
79
|
|
|
81
80
|
# Get the Heurist API key from configuration
|
|
82
81
|
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
|
|
7
8
|
from intentkit.config.config import config
|
|
8
9
|
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,7 +76,6 @@ 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
|
|
80
79
|
|
|
81
80
|
# Get the Heurist API key from configuration
|
|
82
81
|
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
|
|
7
8
|
from intentkit.config.config import config
|
|
8
9
|
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,7 +76,6 @@ 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
|
|
80
79
|
|
|
81
80
|
# Get the Heurist API key from configuration
|
|
82
81
|
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
|
|
7
8
|
from intentkit.config.config import config
|
|
8
9
|
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,7 +76,6 @@ 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
|
|
80
79
|
|
|
81
80
|
# Get the Heurist API key from configuration
|
|
82
81
|
if "api_key" in skill_config and skill_config["api_key"]:
|