intentkit 0.6.9.dev2__tar.gz → 0.6.10.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of intentkit might be problematic. Click here for more details.
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/PKG-INFO +3 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/__init__.py +1 -1
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/abstracts/graph.py +17 -2
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/core/engine.py +29 -30
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/core/node.py +10 -20
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/agent.py +3 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/chat.py +9 -1
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/pyproject.toml +3 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/acolyt/ask.py +2 -5
- intentkit-0.6.10.dev1/skills/acolyt/base.py +38 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/aixbt/__init__.py +3 -7
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/aixbt/projects.py +12 -36
- intentkit-0.6.10.dev1/skills/allora/base.py +38 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/allora/price.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/base.py +8 -1
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/carv/base.py +12 -10
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/carv/fetch_news.py +90 -92
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/carv/onchain_query.py +162 -164
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/carv/token_info_and_price.py +108 -110
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/chainlist/chain_lookup.py +1 -2
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/common/current_time.py +1 -2
- intentkit-0.6.10.dev1/skills/cookiefun/base.py +49 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/get_account_details.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/get_account_feed.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/get_account_smart_followers.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/get_sectors.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/search_accounts.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/fetch_news.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/fetch_price.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/fetch_top_exchanges.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/fetch_top_market_cap.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/fetch_top_volume.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/fetch_trading_signals.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptopanic/base.py +13 -9
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptopanic/fetch_crypto_news.py +150 -153
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptopanic/fetch_crypto_sentiment.py +133 -136
- intentkit-0.6.10.dev1/skills/dapplooker/base.py +36 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dapplooker/dapplooker_token_data.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/coins/fetch_batch_historical_prices.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/coins/fetch_block.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/coins/fetch_current_prices.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/coins/fetch_first_price.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/coins/fetch_historical_prices.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/coins/fetch_price_chart.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/coins/fetch_price_percentage.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/fees/fetch_fees_overview.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/stablecoins/fetch_stablecoins.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tvl/fetch_chain_historical_tvl.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tvl/fetch_chains.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tvl/fetch_historical_tvl.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tvl/fetch_protocol.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tvl/fetch_protocol_current_tvl.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tvl/fetch_protocols.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/volumes/fetch_dex_overview.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/volumes/fetch_dex_summary.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/volumes/fetch_options_overview.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/yields/fetch_pool_chart.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/yields/fetch_pools.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dune_analytics/base.py +15 -9
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dune_analytics/fetch_kol_buys.py +125 -128
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dune_analytics/fetch_nation_metrics.py +234 -237
- intentkit-0.6.10.dev1/skills/elfa/base.py +38 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/elfa/mention.py +2 -7
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/elfa/stats.py +2 -6
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/elfa/tokens.py +1 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/base.py +25 -13
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/best_yield.py +1 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/networks.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/prices.py +1 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/route.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/tokens.py +1 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/wallet.py +3 -9
- intentkit-0.6.10.dev1/skills/firecrawl/base.py +38 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/firecrawl/clear.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/firecrawl/crawl.py +7 -8
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/firecrawl/query.py +7 -9
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/firecrawl/scrape.py +7 -8
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/github/github_search.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/base.py +15 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/image_generation_animagine_xl.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/image_generation_arthemy_comics.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/image_generation_arthemy_real.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/image_generation_braindance.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/image_generation_cyber_realistic_xl.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/image_generation_flux_1_dev.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/image_generation_sdxl.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/http/get.py +0 -2
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/http/post.py +0 -2
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/http/put.py +0 -2
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/lifi/token_execute.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/lifi/token_quote.py +0 -2
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/base.py +15 -1
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/nation/nft_check.py +2 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/openai/base.py +14 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/openai/dalle_image_generation.py +6 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/openai/gpt_image_generation.py +6 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/openai/gpt_image_to_image.py +6 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/openai/image_to_text.py +6 -6
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/base.py +4 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/token_balances.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/wallet_approvals.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/wallet_defi_positions.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/wallet_history.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/wallet_net_worth.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/wallet_nfts.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/wallet_profitability.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/wallet_profitability_summary.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/wallet_stats.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/wallet_swaps.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/slack/base.py +18 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/slack/get_channel.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/slack/get_message.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/slack/schedule_message.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/slack/send_message.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/delete_data.py +3 -6
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/fetch_data.py +3 -6
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/insert_data.py +3 -6
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/invoke_function.py +3 -6
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/update_data.py +3 -6
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/upsert_data.py +3 -6
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/add_autonomous_task.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/delete_autonomous_task.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/edit_autonomous_task.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/list_autonomous_tasks.py +1 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/read_agent_api_key.py +2 -3
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/regenerate_agent_api_key.py +2 -5
- intentkit-0.6.10.dev1/skills/tavily/base.py +36 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/tavily/tavily_extract.py +7 -8
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/tavily/tavily_search.py +11 -9
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/base.py +4 -6
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/erc20_transfers.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/token_analytics.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/token_price.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/token_search.py +2 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/base.py +41 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/follow_user.py +4 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/get_mentions.py +4 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/get_timeline.py +4 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/get_user_by_username.py +4 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/get_user_tweets.py +4 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/like_tweet.py +4 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/post_tweet.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/reply_tweet.py +3 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/retweet.py +4 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/search_tweets.py +4 -4
- intentkit-0.6.10.dev1/skills/unrealspeech/base.py +37 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/unrealspeech/text_to_speech.py +4 -4
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_audio/base.py +11 -9
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_audio/venice_audio.py +238 -240
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/base.py +23 -19
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_enhance/image_enhance.py +78 -80
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/image_generation_base.py +115 -117
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_upscale/image_upscale.py +88 -90
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_vision/image_vision.py +98 -100
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/web_scraper/document_indexer.py +3 -5
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/web_scraper/scrape_and_index.py +14 -17
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/web_scraper/website_indexer.py +8 -10
- intentkit-0.6.10.dev1/skills/xmtp/README.md +110 -0
- intentkit-0.6.10.dev1/skills/xmtp/__init__.py +82 -0
- intentkit-0.6.10.dev1/skills/xmtp/base.py +13 -0
- intentkit-0.6.10.dev1/skills/xmtp/schema.json +41 -0
- intentkit-0.6.10.dev1/skills/xmtp/transfer.py +170 -0
- intentkit-0.6.10.dev1/skills/xmtp/xmtp.svg +26 -0
- intentkit-0.6.9.dev2/skills/acolyt/base.py +0 -28
- intentkit-0.6.9.dev2/skills/allora/base.py +0 -28
- intentkit-0.6.9.dev2/skills/cookiefun/base.py +0 -41
- intentkit-0.6.9.dev2/skills/dapplooker/base.py +0 -26
- intentkit-0.6.9.dev2/skills/elfa/base.py +0 -28
- intentkit-0.6.9.dev2/skills/firecrawl/base.py +0 -28
- intentkit-0.6.9.dev2/skills/tavily/base.py +0 -27
- intentkit-0.6.9.dev2/skills/unrealspeech/base.py +0 -21
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/.gitignore +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/LICENSE +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/MANIFEST.in +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/abstracts/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/abstracts/agent.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/abstracts/api.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/abstracts/engine.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/abstracts/exception.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/abstracts/skill.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/abstracts/twitter.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/clients/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/clients/cdp.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/clients/twitter.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/config/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/config/config.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/core/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/core/agent.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/core/api.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/core/client.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/core/credit.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/core/prompt.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/core/skill.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/agent_data.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/agent_schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/app_setting.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/conversation.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/credit.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/db.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/db_mig.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/generator.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/llm.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/redis.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/skill.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/models/user.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/acolyt/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/aixbt/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/aixbt/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/aixbt/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/allora/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/allora/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/carv/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/carv/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/carv/carv.webp +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/carv/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cdp/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cdp/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cdp/cdp.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cdp/get_balance.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cdp/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cdp/swap.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/chainlist/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/chainlist/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/chainlist/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/common/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/common/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/common/common.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/common/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dapplooker/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/api.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dexscreener/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/elfa/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/elfa/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/elfa/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/elfa/utils.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/abi/route.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/enso.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/enso/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/firecrawl/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/firecrawl/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/firecrawl/utils.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/github/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/github/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/github/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/github/github.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/github/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/heurist.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/heurist/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/http/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/http/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/http/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/http/http.svg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/http/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/lifi/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/lifi/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/lifi/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/lifi/lifi.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/lifi/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/lifi/utils.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/api.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/moralis.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/tests/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/moralis/tests/test_wallet.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/nation/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/nation/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/nation/nation.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/nation/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/openai/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/openai/openai.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/openai/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/constants.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/portfolio/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/skills.toml +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/slack/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/slack/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/slack/slack.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/supabase/supabase.svg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/system/system.svg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/tavily/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/tavily/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/tavily/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/constants.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/moralis.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/token/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/twitter/twitter.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_audio/input.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/api.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/config.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/utils.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/web_scraper/README.md +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/web_scraper/base.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/web_scraper/schema.json +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/skills/web_scraper/utils.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/utils/__init__.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/utils/chain.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/utils/error.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/utils/logging.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/utils/random.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/utils/s3.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/utils/slack_alert.py +0 -0
- {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev1}/utils/tx.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.10.dev1
|
|
4
4
|
Summary: Intent-based AI Agent Platform - Core Package
|
|
5
5
|
Project-URL: Homepage, https://github.com/crestal-network/intentkit
|
|
6
6
|
Project-URL: Repository, https://github.com/crestal-network/intentkit
|
|
@@ -64,8 +64,8 @@ Requires-Dist: langchain-xai>=0.2.1
|
|
|
64
64
|
Requires-Dist: langchain<0.4.0,>=0.3.25
|
|
65
65
|
Requires-Dist: langgraph-checkpoint-postgres<2.0.23,>=2.0.16
|
|
66
66
|
Requires-Dist: langgraph-checkpoint>=2.0.18
|
|
67
|
-
Requires-Dist: langgraph-prebuilt<0.
|
|
68
|
-
Requires-Dist: langgraph<0.
|
|
67
|
+
Requires-Dist: langgraph-prebuilt<0.7.0,>=0.6.1
|
|
68
|
+
Requires-Dist: langgraph<0.7.0,>=0.6.1
|
|
69
69
|
Requires-Dist: langmem>=0.0.27
|
|
70
70
|
Requires-Dist: mypy-boto3-s3<2.0.0,>=1.37.24
|
|
71
71
|
Requires-Dist: openai>=1.59.6
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import asyncio
|
|
1
2
|
from enum import Enum
|
|
2
|
-
from typing import Any,
|
|
3
|
+
from typing import Any, Dict, Literal, NotRequired, Optional
|
|
3
4
|
|
|
4
5
|
from langgraph.prebuilt.chat_agent_executor import AgentState as BaseAgentState
|
|
6
|
+
from pydantic import BaseModel
|
|
7
|
+
|
|
8
|
+
from intentkit.models.agent import Agent
|
|
5
9
|
|
|
6
10
|
|
|
7
11
|
class AgentError(str, Enum):
|
|
@@ -22,4 +26,15 @@ class AgentState(BaseAgentState):
|
|
|
22
26
|
__extra__: NotRequired[Dict[str, Any]]
|
|
23
27
|
|
|
24
28
|
|
|
25
|
-
|
|
29
|
+
class AgentContext(BaseModel):
|
|
30
|
+
agent_id: str
|
|
31
|
+
chat_id: str
|
|
32
|
+
user_id: Optional[str] = None
|
|
33
|
+
app_id: Optional[str] = None
|
|
34
|
+
entrypoint: Literal["web", "twitter", "telegram", "trigger", "api"]
|
|
35
|
+
is_private: bool
|
|
36
|
+
payer: Optional[str] = None
|
|
37
|
+
|
|
38
|
+
@property
|
|
39
|
+
def agent(self) -> Agent:
|
|
40
|
+
return asyncio.run(Agent.get(self.agent_id))
|
|
@@ -27,15 +27,15 @@ from langchain_core.messages import (
|
|
|
27
27
|
HumanMessage,
|
|
28
28
|
)
|
|
29
29
|
from langchain_core.prompts import ChatPromptTemplate
|
|
30
|
-
from langchain_core.runnables import RunnableConfig
|
|
31
30
|
from langchain_core.tools import BaseTool
|
|
32
31
|
from langgraph.errors import GraphRecursionError
|
|
33
32
|
from langgraph.graph.state import CompiledStateGraph
|
|
34
33
|
from langgraph.prebuilt import create_react_agent
|
|
34
|
+
from langgraph.runtime import Runtime
|
|
35
35
|
from sqlalchemy import func, update
|
|
36
36
|
from sqlalchemy.exc import SQLAlchemyError
|
|
37
37
|
|
|
38
|
-
from intentkit.abstracts.graph import AgentError, AgentState
|
|
38
|
+
from intentkit.abstracts.graph import AgentContext, AgentError, AgentState
|
|
39
39
|
from intentkit.config.config import config
|
|
40
40
|
from intentkit.core.credit import expense_message, expense_skill
|
|
41
41
|
from intentkit.core.node import PreModelNode, post_model_node
|
|
@@ -201,11 +201,13 @@ async def create_agent(
|
|
|
201
201
|
prompt_temp = ChatPromptTemplate.from_messages(prompt_array)
|
|
202
202
|
|
|
203
203
|
async def formatted_prompt(
|
|
204
|
-
state: AgentState,
|
|
204
|
+
state: AgentState, runtime: Runtime[AgentContext]
|
|
205
205
|
) -> list[BaseMessage]:
|
|
206
206
|
final_system_prompt = escaped_prompt
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
context = runtime.context
|
|
208
|
+
logger.debug(f"formatted_prompt, context: {context}")
|
|
209
|
+
if context.entrypoint:
|
|
210
|
+
entrypoint = context.entrypoint
|
|
209
211
|
entrypoint_prompt = None
|
|
210
212
|
if (
|
|
211
213
|
agent.twitter_entrypoint_enabled
|
|
@@ -222,11 +224,7 @@ async def create_agent(
|
|
|
222
224
|
entrypoint_prompt = agent.telegram_entrypoint_prompt
|
|
223
225
|
logger.debug("telegram entrypoint prompt added")
|
|
224
226
|
elif entrypoint == AuthorType.TRIGGER.value:
|
|
225
|
-
task_id = (
|
|
226
|
-
config["configurable"]
|
|
227
|
-
.get("chat_id", "")
|
|
228
|
-
.removeprefix("autonomous-")
|
|
229
|
-
)
|
|
227
|
+
task_id = context.chat_id.removeprefix("autonomous-")
|
|
230
228
|
# Find the autonomous task by task_id
|
|
231
229
|
autonomous_task = None
|
|
232
230
|
if agent.autonomous:
|
|
@@ -263,20 +261,15 @@ async def create_agent(
|
|
|
263
261
|
if entrypoint_prompt:
|
|
264
262
|
entrypoint_prompt = await explain_prompt(entrypoint_prompt)
|
|
265
263
|
final_system_prompt = f"{final_system_prompt}## Entrypoint rules\n\n{entrypoint_prompt}\n\n"
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
final_system_prompt = f"{final_system_prompt}chat_id: {chat_id}\n\n"
|
|
273
|
-
user_id = config["configurable"].get("user_id")
|
|
274
|
-
if user_id:
|
|
275
|
-
final_system_prompt = f"{final_system_prompt}user_id: {user_id}\n\n"
|
|
264
|
+
final_system_prompt = f"{final_system_prompt}## Internal Info\n\n"
|
|
265
|
+
"These are for your internal use. You can use them when querying or storing data, "
|
|
266
|
+
"but please do not directly share this information with users.\n\n"
|
|
267
|
+
final_system_prompt = f"{final_system_prompt}chat_id: {context.chat_id}\n\n"
|
|
268
|
+
if context.user_id:
|
|
269
|
+
final_system_prompt = f"{final_system_prompt}user_id: {context.user_id}\n\n"
|
|
276
270
|
system_prompt = [("system", final_system_prompt)]
|
|
277
271
|
return prompt_temp.invoke(
|
|
278
|
-
{"messages": state["messages"], "system_prompt": system_prompt}
|
|
279
|
-
config,
|
|
272
|
+
{"messages": state["messages"], "system_prompt": system_prompt}
|
|
280
273
|
)
|
|
281
274
|
|
|
282
275
|
# log final prompt and all skills
|
|
@@ -304,6 +297,7 @@ async def create_agent(
|
|
|
304
297
|
pre_model_hook=pre_model_hook,
|
|
305
298
|
post_model_hook=post_model_node if config.payment_enabled else None,
|
|
306
299
|
state_schema=AgentState,
|
|
300
|
+
context_schema=AgentContext,
|
|
307
301
|
checkpointer=memory,
|
|
308
302
|
debug=config.debug_checkpoint,
|
|
309
303
|
name=agent.id,
|
|
@@ -585,22 +579,27 @@ async def stream_agent(message: ChatMessageCreate):
|
|
|
585
579
|
thread_id = f"{input.agent_id}-{input.chat_id}"
|
|
586
580
|
stream_config = {
|
|
587
581
|
"configurable": {
|
|
588
|
-
"agent_id": agent.id,
|
|
589
582
|
"thread_id": thread_id,
|
|
590
|
-
"chat_id": input.chat_id,
|
|
591
|
-
"user_id": input.user_id,
|
|
592
|
-
"app_id": input.app_id,
|
|
593
|
-
"entrypoint": input.author_type,
|
|
594
|
-
"is_private": is_private,
|
|
595
|
-
"payer": payer if payment_enabled else None,
|
|
596
583
|
},
|
|
597
584
|
"recursion_limit": recursion_limit,
|
|
598
585
|
}
|
|
599
586
|
|
|
587
|
+
context = AgentContext(
|
|
588
|
+
agent_id=input.agent_id,
|
|
589
|
+
chat_id=input.chat_id,
|
|
590
|
+
user_id=input.user_id,
|
|
591
|
+
app_id=input.app_id,
|
|
592
|
+
entrypoint=input.author_type,
|
|
593
|
+
is_private=is_private,
|
|
594
|
+
payer=payer if payment_enabled else None,
|
|
595
|
+
)
|
|
596
|
+
|
|
600
597
|
# run
|
|
601
598
|
cached_tool_step = None
|
|
602
599
|
try:
|
|
603
|
-
async for chunk in executor.astream(
|
|
600
|
+
async for chunk in executor.astream(
|
|
601
|
+
{"messages": messages}, context=context, config=stream_config
|
|
602
|
+
):
|
|
604
603
|
this_time = time.perf_counter()
|
|
605
604
|
logger.debug(f"stream chunk: {chunk}", extra={"thread_id": thread_id})
|
|
606
605
|
if "agent" in chunk and "messages" in chunk["agent"]:
|
|
@@ -11,8 +11,8 @@ from langchain_core.messages import (
|
|
|
11
11
|
ToolMessage,
|
|
12
12
|
)
|
|
13
13
|
from langchain_core.messages.utils import count_tokens_approximately, trim_messages
|
|
14
|
-
from langchain_core.runnables import RunnableConfig
|
|
15
14
|
from langgraph.graph.message import REMOVE_ALL_MESSAGES
|
|
15
|
+
from langgraph.runtime import get_runtime
|
|
16
16
|
from langgraph.utils.runnable import RunnableCallable
|
|
17
17
|
from langmem.short_term.summarization import (
|
|
18
18
|
DEFAULT_EXISTING_SUMMARY_PROMPT,
|
|
@@ -21,9 +21,8 @@ from langmem.short_term.summarization import (
|
|
|
21
21
|
SummarizationResult,
|
|
22
22
|
asummarize_messages,
|
|
23
23
|
)
|
|
24
|
-
from pydantic import BaseModel
|
|
25
24
|
|
|
26
|
-
from intentkit.abstracts.graph import AgentError, AgentState
|
|
25
|
+
from intentkit.abstracts.graph import AgentContext, AgentError, AgentState
|
|
27
26
|
from intentkit.core.credit import skill_cost
|
|
28
27
|
from intentkit.models.agent import Agent
|
|
29
28
|
from intentkit.models.credit import CreditAccount, OwnerType
|
|
@@ -108,11 +107,7 @@ class PreModelNode(RunnableCallable):
|
|
|
108
107
|
def _func(self, AgentState) -> dict[str, Any]:
|
|
109
108
|
raise NotImplementedError("Not implemented yet")
|
|
110
109
|
|
|
111
|
-
async def _afunc(
|
|
112
|
-
self,
|
|
113
|
-
input: AgentState,
|
|
114
|
-
config: RunnableConfig,
|
|
115
|
-
) -> dict[str, Any]:
|
|
110
|
+
async def _afunc(self, input: AgentState) -> dict[str, Any]:
|
|
116
111
|
messages, context = self._parse_input(input)
|
|
117
112
|
try:
|
|
118
113
|
_validate_chat_history(messages)
|
|
@@ -180,28 +175,23 @@ class PostModelNode(RunnableCallable):
|
|
|
180
175
|
super().__init__(self._func, self._afunc, name="post_model_node", trace=False)
|
|
181
176
|
self.func_accepts_config = True
|
|
182
177
|
|
|
183
|
-
def _func(self, input:
|
|
178
|
+
def _func(self, input: AgentState) -> dict[str, Any]:
|
|
184
179
|
raise NotImplementedError("Not implemented yet")
|
|
185
180
|
|
|
186
|
-
async def _afunc(
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
) -> dict[str, Any]:
|
|
191
|
-
logger.debug(f"Running PostModelNode, input: {input}, config: {config}")
|
|
181
|
+
async def _afunc(self, input: AgentState) -> dict[str, Any]:
|
|
182
|
+
runtime = get_runtime(AgentContext)
|
|
183
|
+
context = runtime.context
|
|
184
|
+
logger.debug(f"Running PostModelNode, input: {input}, context: {context}")
|
|
192
185
|
state_update = {}
|
|
193
186
|
messages = input.get("messages")
|
|
194
187
|
if messages is None or not isinstance(messages, list) or len(messages) == 0:
|
|
195
188
|
raise ValueError("Missing required field `messages` in the input.")
|
|
196
|
-
|
|
197
|
-
if not config:
|
|
198
|
-
raise ValueError("Missing required field `configurable` in the config.")
|
|
199
|
-
payer = cfg.get("payer")
|
|
189
|
+
payer = context.payer
|
|
200
190
|
if not payer:
|
|
201
191
|
return state_update
|
|
202
192
|
logger.debug(f"last: {messages[-1]}")
|
|
203
193
|
msg = messages[-1]
|
|
204
|
-
agent_id =
|
|
194
|
+
agent_id = context.agent_id
|
|
205
195
|
agent = await Agent.get(agent_id)
|
|
206
196
|
account = await CreditAccount.get_or_create(OwnerType.USER, payer)
|
|
207
197
|
if hasattr(msg, "tool_calls") and msg.tool_calls:
|
|
@@ -1285,6 +1285,9 @@ class Agent(AgentCreate):
|
|
|
1285
1285
|
return None
|
|
1286
1286
|
return cls.model_validate(item)
|
|
1287
1287
|
|
|
1288
|
+
def skill_config(self, category: str) -> Dict[str, Any]:
|
|
1289
|
+
return self.skills.get(category, {}) if self.skills else {}
|
|
1290
|
+
|
|
1288
1291
|
|
|
1289
1292
|
class AgentResponse(BaseModel):
|
|
1290
1293
|
"""Response model for Agent API."""
|
|
@@ -31,6 +31,7 @@ class ChatMessageAttachmentType(str, Enum):
|
|
|
31
31
|
LINK = "link"
|
|
32
32
|
IMAGE = "image"
|
|
33
33
|
FILE = "file"
|
|
34
|
+
XMTP = "xmtp"
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
class AuthorType(str, Enum):
|
|
@@ -61,13 +62,20 @@ class ChatMessageAttachment(TypedDict):
|
|
|
61
62
|
),
|
|
62
63
|
]
|
|
63
64
|
url: Annotated[
|
|
64
|
-
str,
|
|
65
|
+
Optional[str],
|
|
65
66
|
Field(
|
|
66
67
|
...,
|
|
67
68
|
description="URL of the attachment",
|
|
68
69
|
examples=["https://example.com/image.jpg"],
|
|
69
70
|
),
|
|
70
71
|
]
|
|
72
|
+
json: Annotated[
|
|
73
|
+
Optional[dict],
|
|
74
|
+
Field(
|
|
75
|
+
None,
|
|
76
|
+
description="JSON data of the attachment",
|
|
77
|
+
),
|
|
78
|
+
]
|
|
71
79
|
|
|
72
80
|
|
|
73
81
|
class ChatMessageSkillCall(TypedDict):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "intentkit"
|
|
3
|
-
version = "0.6.
|
|
3
|
+
version = "0.6.10-dev1"
|
|
4
4
|
description = "Intent-based AI Agent Platform - Core Package"
|
|
5
5
|
authors = [{ name = "hyacinthus", email = "hyacinthus@gmail.com" }]
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -33,10 +33,10 @@ dependencies = [
|
|
|
33
33
|
"langchain-openai>=0.3.8",
|
|
34
34
|
"langchain-text-splitters>=0.3.8",
|
|
35
35
|
"langchain-xai>=0.2.1",
|
|
36
|
-
"langgraph (>=0.
|
|
36
|
+
"langgraph (>=0.6.1,<0.7.0)",
|
|
37
37
|
"langgraph-checkpoint>=2.0.18",
|
|
38
38
|
"langgraph-checkpoint-postgres>=2.0.16,<2.0.23",
|
|
39
|
-
"langgraph-prebuilt (>=0.
|
|
39
|
+
"langgraph-prebuilt (>=0.6.1,<0.7.0)",
|
|
40
40
|
"langmem>=0.0.27",
|
|
41
41
|
"mypy-boto3-s3>=1.37.24,<2.0.0",
|
|
42
42
|
"openai>=1.59.6",
|
|
@@ -2,7 +2,6 @@ import logging
|
|
|
2
2
|
from typing import Dict, Literal, Type
|
|
3
3
|
|
|
4
4
|
import httpx
|
|
5
|
-
from langchain_core.runnables import RunnableConfig
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
8
7
|
from intentkit.skills.acolyt.base import AcolytBaseTool
|
|
@@ -67,12 +66,11 @@ class AcolytAskGpt(AcolytBaseTool):
|
|
|
67
66
|
"""
|
|
68
67
|
args_schema: Type[BaseModel] = AcolytAskGptInput
|
|
69
68
|
|
|
70
|
-
async def _arun(self, question: str,
|
|
69
|
+
async def _arun(self, question: str, **kwargs) -> Dict:
|
|
71
70
|
"""Run the tool to get answer from Acolyt GPT.
|
|
72
71
|
|
|
73
72
|
Args:
|
|
74
73
|
question (str): The question body from user.
|
|
75
|
-
config (RunnableConfig): The configuration for the runnable, containing agent context.
|
|
76
74
|
|
|
77
75
|
Returns:
|
|
78
76
|
Dict: The response from the API with message content.
|
|
@@ -80,8 +78,7 @@ class AcolytAskGpt(AcolytBaseTool):
|
|
|
80
78
|
Raises:
|
|
81
79
|
Exception: If there's an error accessing the Acolyt API.
|
|
82
80
|
"""
|
|
83
|
-
|
|
84
|
-
api_key = self.get_api_key(context)
|
|
81
|
+
api_key = self.get_api_key()
|
|
85
82
|
if not api_key:
|
|
86
83
|
raise ValueError("Acolyt API key not found")
|
|
87
84
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from typing import Type
|
|
2
|
+
|
|
3
|
+
from langchain.tools.base import ToolException
|
|
4
|
+
from pydantic import BaseModel, Field
|
|
5
|
+
|
|
6
|
+
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
|
+
from intentkit.skills.base import IntentKitSkill
|
|
8
|
+
|
|
9
|
+
base_url = "https://acolyt-oracle-poc.vercel.app"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AcolytBaseTool(IntentKitSkill):
|
|
13
|
+
"""Base class for Acolyt tools."""
|
|
14
|
+
|
|
15
|
+
name: str = Field(description="The name of the tool")
|
|
16
|
+
description: str = Field(description="A description of what the tool does")
|
|
17
|
+
args_schema: Type[BaseModel]
|
|
18
|
+
skill_store: SkillStoreABC = Field(
|
|
19
|
+
description="The skill store for persisting data"
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
def get_api_key(self) -> str:
|
|
23
|
+
context = self.get_context()
|
|
24
|
+
skill_config = context.agent.skill_config(self.category)
|
|
25
|
+
api_key_provider = skill_config.get("api_key_provider")
|
|
26
|
+
if api_key_provider == "platform":
|
|
27
|
+
return self.skill_store.get_system_config("acolyt_api_key")
|
|
28
|
+
# for backward compatibility, may only have api_key in skill_config
|
|
29
|
+
elif skill_config.get("api_key"):
|
|
30
|
+
return skill_config.get("api_key")
|
|
31
|
+
else:
|
|
32
|
+
raise ToolException(
|
|
33
|
+
f"Invalid API key provider: {api_key_provider}, or no api_key in config"
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def category(self) -> str:
|
|
38
|
+
return "acolyt"
|
|
@@ -48,7 +48,6 @@ async def get_skills(
|
|
|
48
48
|
get_aixbt_skill(
|
|
49
49
|
name=name,
|
|
50
50
|
store=store,
|
|
51
|
-
api_key=config.get("api_key", ""),
|
|
52
51
|
)
|
|
53
52
|
for name in available_skills
|
|
54
53
|
]
|
|
@@ -57,17 +56,14 @@ async def get_skills(
|
|
|
57
56
|
def get_aixbt_skill(
|
|
58
57
|
name: str,
|
|
59
58
|
store: SkillStoreABC,
|
|
60
|
-
api_key: str = "",
|
|
61
59
|
) -> AIXBTBaseTool:
|
|
62
60
|
"""Get an AIXBT API skill by name."""
|
|
63
|
-
cache_key = f"{name}:{api_key}"
|
|
64
61
|
|
|
65
62
|
if name == "aixbt_projects":
|
|
66
|
-
if
|
|
67
|
-
_cache[
|
|
63
|
+
if name not in _cache:
|
|
64
|
+
_cache[name] = AIXBTProjects(
|
|
68
65
|
skill_store=store,
|
|
69
|
-
api_key=api_key,
|
|
70
66
|
)
|
|
71
|
-
return _cache[
|
|
67
|
+
return _cache[name]
|
|
72
68
|
else:
|
|
73
69
|
raise ValueError(f"Unknown AIXBT skill: {name}")
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
import os
|
|
3
2
|
from typing import Any, Dict, Optional, Type
|
|
4
3
|
|
|
5
4
|
import httpx
|
|
6
|
-
from langchain_core.
|
|
5
|
+
from langchain_core.tools import ToolException
|
|
7
6
|
from pydantic import BaseModel, Field
|
|
8
7
|
|
|
9
8
|
from intentkit.skills.aixbt.base import AIXBTBaseTool
|
|
@@ -55,11 +54,9 @@ class AIXBTProjects(AIXBTBaseTool):
|
|
|
55
54
|
"for accessing AIXBT's specific dataset for crypto research."
|
|
56
55
|
)
|
|
57
56
|
args_schema: Type[BaseModel] = ProjectsInput
|
|
58
|
-
api_key: str = ""
|
|
59
57
|
|
|
60
58
|
async def _arun(
|
|
61
59
|
self,
|
|
62
|
-
config: RunnableConfig,
|
|
63
60
|
limit: int = 10,
|
|
64
61
|
name: Optional[str] = None,
|
|
65
62
|
ticker: Optional[str] = None,
|
|
@@ -83,34 +80,27 @@ class AIXBTProjects(AIXBTBaseTool):
|
|
|
83
80
|
JSON response with project data
|
|
84
81
|
"""
|
|
85
82
|
# Get context from the config
|
|
86
|
-
context = self.
|
|
83
|
+
context = self.get_context()
|
|
84
|
+
skill_config = context.agent.skill_config(self.category)
|
|
87
85
|
logger.debug(f"aixbt_projects.py: Running search with context {context}")
|
|
88
86
|
|
|
89
87
|
# Check for rate limiting if configured
|
|
90
|
-
if
|
|
88
|
+
if skill_config.get("rate_limit_number") and skill_config.get(
|
|
91
89
|
"rate_limit_minutes"
|
|
92
90
|
):
|
|
93
91
|
await self.user_rate_limit_by_category(
|
|
94
92
|
context.user_id,
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
skill_config["rate_limit_number"],
|
|
94
|
+
skill_config["rate_limit_minutes"],
|
|
97
95
|
)
|
|
98
96
|
|
|
99
97
|
# Get the API key from the agent's configuration
|
|
100
|
-
api_key =
|
|
98
|
+
api_key = skill_config.get("api_key")
|
|
101
99
|
|
|
102
|
-
# If not available in config, try the instance attribute (for backward compatibility)
|
|
103
100
|
if not api_key:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if not api_key:
|
|
108
|
-
api_key = os.environ.get("AIXBT_API_KEY")
|
|
109
|
-
|
|
110
|
-
if not api_key:
|
|
111
|
-
return {
|
|
112
|
-
"error": "AIXBT API key is not available. Please provide it in the agent configuration."
|
|
113
|
-
}
|
|
101
|
+
raise ToolException(
|
|
102
|
+
"AIXBT API key is not available. Please provide it in the agent configuration."
|
|
103
|
+
)
|
|
114
104
|
|
|
115
105
|
base_url = "https://api.aixbt.tech/v1/projects"
|
|
116
106
|
|
|
@@ -134,20 +124,6 @@ class AIXBTProjects(AIXBTBaseTool):
|
|
|
134
124
|
response = await client.get(base_url, params=params, headers=headers)
|
|
135
125
|
response.raise_for_status()
|
|
136
126
|
return response.json()
|
|
137
|
-
except httpx.HTTPStatusError as e:
|
|
138
|
-
logger.error(
|
|
139
|
-
f"aixbt_projects.py: HTTP error occurred: {e.response.status_code} - {e.response.text}"
|
|
140
|
-
)
|
|
141
|
-
return {
|
|
142
|
-
"error": f"HTTP error occurred: {e.response.status_code}",
|
|
143
|
-
"details": e.response.text,
|
|
144
|
-
}
|
|
145
|
-
except httpx.RequestError as e:
|
|
146
|
-
logger.error(f"aixbt_projects.py: Request error occurred: {str(e)}")
|
|
147
|
-
return {"error": f"Request error occurred: {str(e)}"}
|
|
148
127
|
except Exception as e:
|
|
149
|
-
logger.error(
|
|
150
|
-
|
|
151
|
-
exc_info=True,
|
|
152
|
-
)
|
|
153
|
-
return {"error": f"An unexpected error occurred: {str(e)}"}
|
|
128
|
+
logger.error(f"Error getting projects: {str(e)}")
|
|
129
|
+
raise type(e)(f"[agent:{context.agent_id}]: {e}") from e
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from typing import Type
|
|
2
|
+
|
|
3
|
+
from langchain.tools.base import ToolException
|
|
4
|
+
from pydantic import BaseModel, Field
|
|
5
|
+
|
|
6
|
+
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
|
+
from intentkit.skills.base import IntentKitSkill
|
|
8
|
+
|
|
9
|
+
base_url = "https://api.upshot.xyz/v2/allora"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AlloraBaseTool(IntentKitSkill):
|
|
13
|
+
"""Base class for Allora tools."""
|
|
14
|
+
|
|
15
|
+
name: str = Field(description="The name of the tool")
|
|
16
|
+
description: str = Field(description="A description of what the tool does")
|
|
17
|
+
args_schema: Type[BaseModel]
|
|
18
|
+
skill_store: SkillStoreABC = Field(
|
|
19
|
+
description="The skill store for persisting data"
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
def get_api_key(self) -> str:
|
|
23
|
+
context = self.get_context()
|
|
24
|
+
skill_config = context.agent.skill_config(self.category)
|
|
25
|
+
api_key_provider = skill_config.get("api_key_provider")
|
|
26
|
+
if api_key_provider == "platform":
|
|
27
|
+
return self.skill_store.get_system_config("allora_api_key")
|
|
28
|
+
# for backward compatibility, may only have api_key in skill_config
|
|
29
|
+
elif skill_config.get("api_key"):
|
|
30
|
+
return skill_config.get("api_key")
|
|
31
|
+
else:
|
|
32
|
+
raise ToolException(
|
|
33
|
+
f"Invalid API key provider: {api_key_provider}, or no api_key in config"
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def category(self) -> str:
|
|
38
|
+
return "allora"
|
|
@@ -2,7 +2,6 @@ from typing import Literal, Type
|
|
|
2
2
|
|
|
3
3
|
import httpx
|
|
4
4
|
from langchain.tools.base import ToolException
|
|
5
|
-
from langchain_core.runnables import RunnableConfig
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
8
7
|
from intentkit.skills.allora.base import AlloraBaseTool
|
|
@@ -84,7 +83,7 @@ class AlloraGetPrice(AlloraBaseTool):
|
|
|
84
83
|
raise NotImplementedError("Use _arun instead")
|
|
85
84
|
|
|
86
85
|
async def _arun(
|
|
87
|
-
self, token: str, time_frame: str,
|
|
86
|
+
self, token: str, time_frame: str, **kwargs
|
|
88
87
|
) -> AlloraGetPriceOutput:
|
|
89
88
|
"""Run the tool to get the token price prediction from Allora API.
|
|
90
89
|
Args:
|
|
@@ -98,8 +97,7 @@ class AlloraGetPrice(AlloraBaseTool):
|
|
|
98
97
|
Raises:
|
|
99
98
|
Exception: If there's an error accessing the Allora API.
|
|
100
99
|
"""
|
|
101
|
-
|
|
102
|
-
api_key = self.get_api_key(context)
|
|
100
|
+
api_key = self.get_api_key()
|
|
103
101
|
if not api_key:
|
|
104
102
|
raise ValueError("Allora API key not found")
|
|
105
103
|
|
|
@@ -5,6 +5,7 @@ from typing import Any, Callable, Dict, Literal, NotRequired, Optional, TypedDic
|
|
|
5
5
|
from langchain_core.runnables import RunnableConfig
|
|
6
6
|
from langchain_core.tools import BaseTool
|
|
7
7
|
from langchain_core.tools.base import ToolException
|
|
8
|
+
from langgraph.runtime import get_runtime
|
|
8
9
|
from pydantic import (
|
|
9
10
|
BaseModel,
|
|
10
11
|
ValidationError,
|
|
@@ -13,12 +14,14 @@ from pydantic.v1 import ValidationError as ValidationErrorV1
|
|
|
13
14
|
from redis.exceptions import RedisError
|
|
14
15
|
|
|
15
16
|
from intentkit.abstracts.exception import RateLimitExceeded
|
|
17
|
+
from intentkit.abstracts.graph import AgentContext
|
|
16
18
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
17
19
|
from intentkit.models.agent import Agent
|
|
18
20
|
from intentkit.models.redis import get_redis
|
|
19
21
|
|
|
20
22
|
SkillState = Literal["disabled", "public", "private"]
|
|
21
23
|
SkillOwnerState = Literal["disabled", "private"]
|
|
24
|
+
APIKeyProviderValue = Literal["platform", "agent_owner"]
|
|
22
25
|
|
|
23
26
|
|
|
24
27
|
class SkillConfig(TypedDict):
|
|
@@ -26,7 +29,7 @@ class SkillConfig(TypedDict):
|
|
|
26
29
|
|
|
27
30
|
enabled: bool
|
|
28
31
|
states: Dict[str, SkillState | SkillOwnerState]
|
|
29
|
-
api_key_provider: NotRequired[
|
|
32
|
+
api_key_provider: NotRequired[APIKeyProviderValue]
|
|
30
33
|
__extra__: NotRequired[Dict[str, Any]]
|
|
31
34
|
|
|
32
35
|
|
|
@@ -192,3 +195,7 @@ class IntentKitSkill(BaseTool):
|
|
|
192
195
|
entrypoint=configurable.get("entrypoint"),
|
|
193
196
|
is_private=configurable.get("is_private"),
|
|
194
197
|
)
|
|
198
|
+
|
|
199
|
+
def get_context(self) -> AgentContext:
|
|
200
|
+
runtime = get_runtime(AgentContext)
|
|
201
|
+
return runtime.context
|