intentkit 0.6.0.dev13__tar.gz → 0.6.0.dev14__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.0.dev13 → intentkit-0.6.0.dev14}/PKG-INFO +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/__init__.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/core/engine.py +2 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/core/node.py +3 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/pyproject.toml +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/base.py +37 -17
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_news.py +2 -2
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_price.py +2 -2
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_top_exchanges.py +2 -2
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_top_market_cap.py +2 -2
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_top_volume.py +2 -2
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_trading_signals.py +2 -2
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/base.py +3 -3
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/base.py +2 -2
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/networks.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/route.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/tokens.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/clear.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/crawl.py +2 -10
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/query.py +4 -4
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/scrape.py +2 -8
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_animagine_xl.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_arthemy_comics.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_arthemy_real.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_braindance.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_cyber_realistic_xl.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_flux_1_dev.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_sdxl.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/lifi/token_execute.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/openai/dalle_image_generation.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/openai/gpt_image_generation.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/openai/gpt_image_to_image.py +1 -1
- intentkit-0.6.0.dev14/skills/supabase/__init__.py +116 -0
- intentkit-0.6.0.dev14/skills/supabase/base.py +72 -0
- intentkit-0.6.0.dev14/skills/supabase/delete_data.py +102 -0
- intentkit-0.6.0.dev14/skills/supabase/fetch_data.py +120 -0
- intentkit-0.6.0.dev14/skills/supabase/insert_data.py +70 -0
- intentkit-0.6.0.dev14/skills/supabase/invoke_function.py +74 -0
- intentkit-0.6.0.dev14/skills/supabase/schema.json +168 -0
- intentkit-0.6.0.dev14/skills/supabase/supabase.svg +15 -0
- intentkit-0.6.0.dev14/skills/supabase/update_data.py +105 -0
- intentkit-0.6.0.dev14/skills/supabase/upsert_data.py +77 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/system/read_agent_api_key.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/system/regenerate_agent_api_key.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/base.py +1 -39
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/follow_user.py +3 -3
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/get_mentions.py +6 -6
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/get_timeline.py +5 -5
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/get_user_by_username.py +3 -3
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/get_user_tweets.py +5 -5
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/like_tweet.py +3 -3
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/post_tweet.py +4 -4
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/reply_tweet.py +4 -4
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/retweet.py +3 -3
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/search_tweets.py +5 -5
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/unrealspeech/text_to_speech.py +1 -1
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/web_scraper/document_indexer.py +2 -2
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/web_scraper/scrape_and_index.py +8 -8
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/web_scraper/website_indexer.py +4 -4
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/.gitignore +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/LICENSE +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/MANIFEST.in +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/abstracts/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/abstracts/agent.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/abstracts/api.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/abstracts/engine.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/abstracts/exception.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/abstracts/graph.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/abstracts/skill.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/abstracts/twitter.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/clients/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/clients/cdp.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/clients/twitter.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/config/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/config/config.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/core/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/core/agent.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/core/api.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/core/client.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/core/credit.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/core/prompt.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/core/skill.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/agent.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/agent_data.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/agent_schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/app_setting.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/chat.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/conversation.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/credit.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/db.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/db_mig.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/generator.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/llm.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/redis.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/skill.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/models/user.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/acolyt/ask.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/acolyt/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/acolyt/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/aixbt/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/aixbt/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/aixbt/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/aixbt/projects.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/aixbt/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/allora/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/allora/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/allora/price.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/allora/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/carv/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/carv/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/carv/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/carv/carv.webp +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/carv/fetch_news.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/carv/onchain_query.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/carv/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cdp/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cdp/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cdp/cdp.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cdp/get_balance.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cdp/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/chainlist/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/chainlist/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/chainlist/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/common/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/common/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/common/common.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/common/current_time.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/common/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptopanic/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dapplooker/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dapplooker/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/api.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dexscreener/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dune_analytics/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/elfa/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/elfa/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/elfa/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/elfa/mention.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/elfa/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/elfa/stats.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/elfa/tokens.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/abi/route.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/best_yield.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/enso.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/prices.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/enso/wallet.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/firecrawl/utils.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/github/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/github/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/github/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/github/github.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/github/github_search.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/github/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/heurist.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/lifi/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/lifi/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/lifi/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/lifi/lifi.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/lifi/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/lifi/token_quote.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/lifi/utils.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/api.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/moralis.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/tests/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/moralis/tests/test_wallet.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/nation/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/nation/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/nation/nation.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/nation/nft_check.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/nation/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/openai/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/openai/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/openai/image_to_text.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/openai/openai.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/openai/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/constants.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/skills.toml +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/slack/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/slack/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/slack/get_channel.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/slack/get_message.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/slack/schedule_message.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/slack/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/slack/send_message.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/slack/slack.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/system/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/system/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/system/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/system/system.svg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/tavily/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/tavily/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/tavily/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/tavily/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/constants.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/moralis.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/token_analytics.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/token_price.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/token/token_search.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/twitter/twitter.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/unrealspeech/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_audio/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_audio/input.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/api.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/config.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/utils.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/web_scraper/README.md +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/web_scraper/base.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/web_scraper/schema.json +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/web_scraper/utils.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/utils/__init__.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/utils/chain.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/utils/error.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/utils/logging.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/utils/middleware.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/utils/random.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/utils/s3.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/utils/slack_alert.py +0 -0
- {intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/utils/tx.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.6.0.
|
|
3
|
+
Version: 0.6.0.dev14
|
|
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
|
|
@@ -546,12 +546,13 @@ async def stream_agent(message: ChatMessageCreate):
|
|
|
546
546
|
thread_id = f"{input.agent_id}-{input.chat_id}"
|
|
547
547
|
stream_config = {
|
|
548
548
|
"configurable": {
|
|
549
|
-
"
|
|
549
|
+
"agent_id": agent.id,
|
|
550
550
|
"thread_id": thread_id,
|
|
551
551
|
"chat_id": input.chat_id,
|
|
552
552
|
"user_id": input.user_id,
|
|
553
553
|
"app_id": input.app_id,
|
|
554
554
|
"entrypoint": input.author_type,
|
|
555
|
+
"is_private": is_private,
|
|
555
556
|
"payer": payer if payment_enabled else None,
|
|
556
557
|
},
|
|
557
558
|
"recursion_limit": recursion_limit,
|
|
@@ -25,6 +25,7 @@ from pydantic import BaseModel
|
|
|
25
25
|
|
|
26
26
|
from intentkit.abstracts.graph import AgentError, AgentState
|
|
27
27
|
from intentkit.core.credit import skill_cost
|
|
28
|
+
from intentkit.models.agent import Agent
|
|
28
29
|
from intentkit.models.credit import CreditAccount, OwnerType
|
|
29
30
|
from intentkit.models.skill import Skill
|
|
30
31
|
|
|
@@ -202,7 +203,8 @@ class PostModelNode(RunnableCallable):
|
|
|
202
203
|
return state_update
|
|
203
204
|
logger.debug(f"last: {messages[-1]}")
|
|
204
205
|
msg = messages[-1]
|
|
205
|
-
|
|
206
|
+
agent_id = cfg.get("agent_id")
|
|
207
|
+
agent = await Agent.get(agent_id)
|
|
206
208
|
account = await CreditAccount.get_or_create(OwnerType.USER, payer)
|
|
207
209
|
if hasattr(msg, "tool_calls") and msg.tool_calls:
|
|
208
210
|
for tool_call in msg.tool_calls:
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import asyncio
|
|
1
2
|
import logging
|
|
2
3
|
from typing import Any, Callable, Dict, Literal, NotRequired, Optional, TypedDict, Union
|
|
3
4
|
|
|
@@ -30,10 +31,33 @@ class SkillConfig(TypedDict):
|
|
|
30
31
|
|
|
31
32
|
|
|
32
33
|
class SkillContext(BaseModel):
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
user_id: Optional[str]
|
|
34
|
+
skill_category: str
|
|
35
|
+
agent_id: str
|
|
36
|
+
user_id: Optional[str] = None
|
|
37
|
+
chat_id: Optional[str] = None
|
|
38
|
+
app_id: Optional[str] = None
|
|
36
39
|
entrypoint: Literal["web", "twitter", "telegram", "trigger", "api"]
|
|
40
|
+
is_private: bool
|
|
41
|
+
payer: Optional[str] = None
|
|
42
|
+
_agent: Optional[Agent] = None
|
|
43
|
+
|
|
44
|
+
@property
|
|
45
|
+
def agent(self) -> Agent:
|
|
46
|
+
if self._agent is None:
|
|
47
|
+
self._agent = asyncio.run(Agent.get(self.agent_id))
|
|
48
|
+
return self._agent
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def config(self) -> Dict[str, Any]:
|
|
52
|
+
agent = self.agent
|
|
53
|
+
config = None
|
|
54
|
+
if agent.skills:
|
|
55
|
+
config = agent.skills.get(self.skill_category)
|
|
56
|
+
if not config:
|
|
57
|
+
raise ValueError(
|
|
58
|
+
f"Skill {self.skill_category} not found in agent {self.agent_id}"
|
|
59
|
+
)
|
|
60
|
+
return config
|
|
37
61
|
|
|
38
62
|
|
|
39
63
|
class IntentKitSkill(BaseTool):
|
|
@@ -156,19 +180,15 @@ class IntentKitSkill(BaseTool):
|
|
|
156
180
|
def context_from_config(self, runner_config: RunnableConfig) -> SkillContext:
|
|
157
181
|
if "configurable" not in runner_config:
|
|
158
182
|
raise ValueError("configurable not in runner_config")
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
config = None
|
|
163
|
-
if agent.skills:
|
|
164
|
-
config = agent.skills.get(self.category)
|
|
165
|
-
if not config:
|
|
166
|
-
config = getattr(agent, self.category + "_config", {})
|
|
167
|
-
if not config:
|
|
168
|
-
config = {}
|
|
183
|
+
configurable = runner_config["configurable"]
|
|
184
|
+
if not configurable:
|
|
185
|
+
raise ValueError("configurable in runnable config is empty")
|
|
169
186
|
return SkillContext(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
user_id=
|
|
173
|
-
|
|
187
|
+
skill_category=self.category,
|
|
188
|
+
agent_id=configurable.get("agent_id"),
|
|
189
|
+
user_id=configurable.get("user_id"),
|
|
190
|
+
app_id=configurable.get("app_id"),
|
|
191
|
+
chat_id=configurable.get("chat_id"),
|
|
192
|
+
entrypoint=configurable.get("entrypoint"),
|
|
193
|
+
is_private=configurable.get("is_private"),
|
|
174
194
|
)
|
|
@@ -57,7 +57,7 @@ class CryptoCompareFetchNews(CryptoCompareBaseTool):
|
|
|
57
57
|
context = self.context_from_config(config)
|
|
58
58
|
|
|
59
59
|
# Check rate limit
|
|
60
|
-
await self.check_rate_limit(context.
|
|
60
|
+
await self.check_rate_limit(context.agent_id, max_requests=5, interval=60)
|
|
61
61
|
|
|
62
62
|
# Get API key from context
|
|
63
63
|
api_key = context.config.get("api_key")
|
|
@@ -93,4 +93,4 @@ class CryptoCompareFetchNews(CryptoCompareBaseTool):
|
|
|
93
93
|
|
|
94
94
|
except Exception as e:
|
|
95
95
|
logger.error("Error fetching news: %s", str(e))
|
|
96
|
-
raise type(e)(f"[agent:{context.
|
|
96
|
+
raise type(e)(f"[agent:{context.agent_id}]: {e}") from e
|
|
@@ -67,7 +67,7 @@ class CryptoCompareFetchPrice(CryptoCompareBaseTool):
|
|
|
67
67
|
context = self.context_from_config(config)
|
|
68
68
|
|
|
69
69
|
# Check rate limit
|
|
70
|
-
await self.check_rate_limit(context.
|
|
70
|
+
await self.check_rate_limit(context.agent_id, max_requests=10, interval=60)
|
|
71
71
|
|
|
72
72
|
# Get API key from context
|
|
73
73
|
api_key = context.config.get("api_key")
|
|
@@ -96,4 +96,4 @@ class CryptoCompareFetchPrice(CryptoCompareBaseTool):
|
|
|
96
96
|
|
|
97
97
|
except Exception as e:
|
|
98
98
|
logger.error("Error fetching price: %s", str(e))
|
|
99
|
-
raise type(e)(f"[agent:{context.
|
|
99
|
+
raise type(e)(f"[agent:{context.agent_id}]: {e}") from e
|
|
@@ -73,7 +73,7 @@ class CryptoCompareFetchTopExchanges(CryptoCompareBaseTool):
|
|
|
73
73
|
context = self.context_from_config(config)
|
|
74
74
|
|
|
75
75
|
# Check rate limit
|
|
76
|
-
await self.check_rate_limit(context.
|
|
76
|
+
await self.check_rate_limit(context.agent_id, max_requests=5, interval=60)
|
|
77
77
|
|
|
78
78
|
# Get API key from context
|
|
79
79
|
api_key = context.config.get("api_key")
|
|
@@ -110,4 +110,4 @@ class CryptoCompareFetchTopExchanges(CryptoCompareBaseTool):
|
|
|
110
110
|
|
|
111
111
|
except Exception as e:
|
|
112
112
|
logger.error("Error fetching top exchanges: %s", str(e))
|
|
113
|
-
raise type(e)(f"[agent:{context.
|
|
113
|
+
raise type(e)(f"[agent:{context.agent_id}]: {e}") from e
|
{intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_top_market_cap.py
RENAMED
|
@@ -66,7 +66,7 @@ class CryptoCompareFetchTopMarketCap(CryptoCompareBaseTool):
|
|
|
66
66
|
context = self.context_from_config(config)
|
|
67
67
|
|
|
68
68
|
# Check rate limit
|
|
69
|
-
await self.check_rate_limit(context.
|
|
69
|
+
await self.check_rate_limit(context.agent_id, max_requests=5, interval=60)
|
|
70
70
|
|
|
71
71
|
# Get API key from context
|
|
72
72
|
api_key = context.config.get("api_key")
|
|
@@ -106,4 +106,4 @@ class CryptoCompareFetchTopMarketCap(CryptoCompareBaseTool):
|
|
|
106
106
|
|
|
107
107
|
except Exception as e:
|
|
108
108
|
logger.error("Error fetching top market cap: %s", str(e))
|
|
109
|
-
raise type(e)(f"[agent:{context.
|
|
109
|
+
raise type(e)(f"[agent:{context.agent_id}]: {e}") from e
|
|
@@ -65,7 +65,7 @@ class CryptoCompareFetchTopVolume(CryptoCompareBaseTool):
|
|
|
65
65
|
context = self.context_from_config(config)
|
|
66
66
|
|
|
67
67
|
# Check rate limit
|
|
68
|
-
await self.check_rate_limit(context.
|
|
68
|
+
await self.check_rate_limit(context.agent_id, max_requests=5, interval=60)
|
|
69
69
|
|
|
70
70
|
# Get API key from context
|
|
71
71
|
api_key = context.config.get("api_key")
|
|
@@ -105,4 +105,4 @@ class CryptoCompareFetchTopVolume(CryptoCompareBaseTool):
|
|
|
105
105
|
|
|
106
106
|
except Exception as e:
|
|
107
107
|
logger.error("Error fetching top volume: %s", str(e))
|
|
108
|
-
raise type(e)(f"[agent:{context.
|
|
108
|
+
raise type(e)(f"[agent:{context.agent_id}]: {e}") from e
|
{intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_trading_signals.py
RENAMED
|
@@ -68,7 +68,7 @@ class CryptoCompareFetchTradingSignals(CryptoCompareBaseTool):
|
|
|
68
68
|
context = self.context_from_config(config)
|
|
69
69
|
|
|
70
70
|
# Check rate limit
|
|
71
|
-
await self.check_rate_limit(context.
|
|
71
|
+
await self.check_rate_limit(context.agent_id, max_requests=5, interval=60)
|
|
72
72
|
|
|
73
73
|
# Get API key from context
|
|
74
74
|
api_key = context.config.get("api_key")
|
|
@@ -104,4 +104,4 @@ class CryptoCompareFetchTradingSignals(CryptoCompareBaseTool):
|
|
|
104
104
|
|
|
105
105
|
except Exception as e:
|
|
106
106
|
logger.error("Error fetching trading signals: %s", str(e))
|
|
107
|
-
raise type(e)(f"[agent:{context.
|
|
107
|
+
raise type(e)(f"[agent:{context.agent_id}]: {e}") from e
|
|
@@ -52,7 +52,7 @@ class DefiLlamaBaseTool(IntentKitSkill):
|
|
|
52
52
|
Rate limit status and error message if limited
|
|
53
53
|
"""
|
|
54
54
|
rate_limit = await self.skill_store.get_agent_skill_data(
|
|
55
|
-
context.
|
|
55
|
+
context.agent_id, self.name, "rate_limit"
|
|
56
56
|
)
|
|
57
57
|
current_time = datetime.now(tz=timezone.utc)
|
|
58
58
|
|
|
@@ -67,7 +67,7 @@ class DefiLlamaBaseTool(IntentKitSkill):
|
|
|
67
67
|
|
|
68
68
|
rate_limit["count"] += 1
|
|
69
69
|
await self.skill_store.save_agent_skill_data(
|
|
70
|
-
context.
|
|
70
|
+
context.agent_id, self.name, "rate_limit", rate_limit
|
|
71
71
|
)
|
|
72
72
|
return False, None
|
|
73
73
|
|
|
@@ -76,7 +76,7 @@ class DefiLlamaBaseTool(IntentKitSkill):
|
|
|
76
76
|
"reset_time": (current_time + timedelta(minutes=interval)).isoformat(),
|
|
77
77
|
}
|
|
78
78
|
await self.skill_store.save_agent_skill_data(
|
|
79
|
-
context.
|
|
79
|
+
context.agent_id, self.name, "rate_limit", new_rate_limit
|
|
80
80
|
)
|
|
81
81
|
return False, None
|
|
82
82
|
|
|
@@ -32,7 +32,7 @@ class EnsoBaseTool(IntentKitSkill):
|
|
|
32
32
|
Returns:
|
|
33
33
|
Optional[EvmServerAccount]: The account object if available.
|
|
34
34
|
"""
|
|
35
|
-
client: CdpClient = await get_cdp_client(context.
|
|
35
|
+
client: CdpClient = await get_cdp_client(context.agent_id, self.skill_store)
|
|
36
36
|
return await client.get_account()
|
|
37
37
|
|
|
38
38
|
async def get_wallet_provider(
|
|
@@ -46,7 +46,7 @@ class EnsoBaseTool(IntentKitSkill):
|
|
|
46
46
|
Returns:
|
|
47
47
|
Optional[CdpEvmServerWalletProvider]: The wallet provider if available.
|
|
48
48
|
"""
|
|
49
|
-
client: CdpClient = await get_cdp_client(context.
|
|
49
|
+
client: CdpClient = await get_cdp_client(context.agent_id, self.skill_store)
|
|
50
50
|
return await client.get_wallet_provider()
|
|
51
51
|
|
|
52
52
|
def get_chain_provider(self, context: SkillContext) -> Optional[ChainProvider]:
|
|
@@ -184,7 +184,7 @@ class EnsoRouteShortcut(EnsoBaseTool):
|
|
|
184
184
|
"""
|
|
185
185
|
|
|
186
186
|
context: SkillContext = self.context_from_config(config)
|
|
187
|
-
agent_id = context.
|
|
187
|
+
agent_id = context.agent_id
|
|
188
188
|
api_token = self.get_api_token(context)
|
|
189
189
|
account = await self.get_account(context)
|
|
190
190
|
|
|
@@ -158,7 +158,7 @@ class EnsoGetTokens(EnsoBaseTool):
|
|
|
158
158
|
url = f"{base_url}/api/v1/tokens"
|
|
159
159
|
|
|
160
160
|
context: SkillContext = self.context_from_config(config)
|
|
161
|
-
agent_id = context.
|
|
161
|
+
agent_id = context.agent_id
|
|
162
162
|
api_token = self.get_api_token(context)
|
|
163
163
|
main_tokens = self.get_main_tokens(context)
|
|
164
164
|
headers = {
|
|
@@ -49,7 +49,7 @@ class FirecrawlClearIndexedContent(FirecrawlBaseTool):
|
|
|
49
49
|
str: Confirmation message
|
|
50
50
|
"""
|
|
51
51
|
context = self.context_from_config(config)
|
|
52
|
-
agent_id = context.
|
|
52
|
+
agent_id = context.agent_id
|
|
53
53
|
|
|
54
54
|
if not agent_id:
|
|
55
55
|
return "Error: Agent ID not available for clearing content."
|
|
@@ -302,21 +302,13 @@ class FirecrawlCrawl(FirecrawlBaseTool):
|
|
|
302
302
|
"language", ""
|
|
303
303
|
),
|
|
304
304
|
"source_type": "firecrawl_crawl",
|
|
305
|
-
"indexed_at": str(
|
|
306
|
-
context.agent.id
|
|
307
|
-
if context and context.agent
|
|
308
|
-
else "unknown"
|
|
309
|
-
),
|
|
305
|
+
"indexed_at": str(context.agent_id),
|
|
310
306
|
},
|
|
311
307
|
)
|
|
312
308
|
documents.append(document)
|
|
313
309
|
|
|
314
310
|
# Get agent ID for indexing
|
|
315
|
-
agent_id =
|
|
316
|
-
context.agent.id
|
|
317
|
-
if context and context.agent
|
|
318
|
-
else None
|
|
319
|
-
)
|
|
311
|
+
agent_id = context.agent_id
|
|
320
312
|
if agent_id and documents:
|
|
321
313
|
# Index all documents
|
|
322
314
|
total_chunks, was_merged = await index_documents(
|
|
@@ -54,10 +54,10 @@ class FirecrawlQueryIndexedContent(FirecrawlBaseTool):
|
|
|
54
54
|
raise ValueError("Configuration is required but not provided")
|
|
55
55
|
|
|
56
56
|
context = self.context_from_config(config)
|
|
57
|
-
if not context or not context.
|
|
57
|
+
if not context or not context.agent_id:
|
|
58
58
|
raise ValueError("Agent ID is required but not found in configuration")
|
|
59
59
|
|
|
60
|
-
agent_id = context.
|
|
60
|
+
agent_id = context.agent_id
|
|
61
61
|
|
|
62
62
|
logger.info(f"[{agent_id}] Starting Firecrawl query operation: '{query}'")
|
|
63
63
|
|
|
@@ -111,8 +111,8 @@ class FirecrawlQueryIndexedContent(FirecrawlBaseTool):
|
|
|
111
111
|
try:
|
|
112
112
|
if config:
|
|
113
113
|
context = self.context_from_config(config)
|
|
114
|
-
if context and context.
|
|
115
|
-
agent_id = context.
|
|
114
|
+
if context and context.agent_id:
|
|
115
|
+
agent_id = context.agent_id
|
|
116
116
|
except Exception:
|
|
117
117
|
pass
|
|
118
118
|
|
|
@@ -255,18 +255,12 @@ class FirecrawlScrape(FirecrawlBaseTool):
|
|
|
255
255
|
"description": metadata.get("description", ""),
|
|
256
256
|
"language": metadata.get("language", ""),
|
|
257
257
|
"source_type": "firecrawl_scrape",
|
|
258
|
-
"indexed_at": str(
|
|
259
|
-
context.agent.id
|
|
260
|
-
if context and context.agent
|
|
261
|
-
else "unknown"
|
|
262
|
-
),
|
|
258
|
+
"indexed_at": str(context.agent_id),
|
|
263
259
|
},
|
|
264
260
|
)
|
|
265
261
|
|
|
266
262
|
# Get agent ID for indexing
|
|
267
|
-
agent_id =
|
|
268
|
-
context.agent.id if context and context.agent else None
|
|
269
|
-
)
|
|
263
|
+
agent_id = context.agent_id
|
|
270
264
|
if agent_id:
|
|
271
265
|
# Index the document
|
|
272
266
|
total_chunks, was_merged = await index_documents(
|
{intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_animagine_xl.py
RENAMED
|
@@ -137,7 +137,7 @@ class ImageGenerationAnimagineXL(HeuristBaseTool):
|
|
|
137
137
|
# Store the image URL
|
|
138
138
|
image_url = response.text.strip('"')
|
|
139
139
|
# Generate a key with agent ID as prefix
|
|
140
|
-
image_key = f"{context.
|
|
140
|
+
image_key = f"{context.agent_id}/heurist/{job_id}"
|
|
141
141
|
# Store the image and get the CDN URL
|
|
142
142
|
stored_url = await store_image(image_url, image_key)
|
|
143
143
|
|
{intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_arthemy_comics.py
RENAMED
|
@@ -137,7 +137,7 @@ class ImageGenerationArthemyComics(HeuristBaseTool):
|
|
|
137
137
|
# Store the image URL
|
|
138
138
|
image_url = response.text.strip('"')
|
|
139
139
|
# Generate a key with agent ID as prefix
|
|
140
|
-
image_key = f"{context.
|
|
140
|
+
image_key = f"{context.agent_id}/heurist/{job_id}"
|
|
141
141
|
# Store the image and get the CDN URL
|
|
142
142
|
stored_url = await store_image(image_url, image_key)
|
|
143
143
|
|
{intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_arthemy_real.py
RENAMED
|
@@ -137,7 +137,7 @@ class ImageGenerationArthemyReal(HeuristBaseTool):
|
|
|
137
137
|
# Store the image URL
|
|
138
138
|
image_url = response.text.strip('"')
|
|
139
139
|
# Generate a key with agent ID as prefix
|
|
140
|
-
image_key = f"{context.
|
|
140
|
+
image_key = f"{context.agent_id}/heurist/{job_id}"
|
|
141
141
|
# Store the image and get the CDN URL
|
|
142
142
|
stored_url = await store_image(image_url, image_key)
|
|
143
143
|
|
{intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_braindance.py
RENAMED
|
@@ -137,7 +137,7 @@ class ImageGenerationBrainDance(HeuristBaseTool):
|
|
|
137
137
|
# Store the image URL
|
|
138
138
|
image_url = response.text.strip('"')
|
|
139
139
|
# Generate a key with agent ID as prefix
|
|
140
|
-
image_key = f"{context.
|
|
140
|
+
image_key = f"{context.agent_id}/heurist/{job_id}"
|
|
141
141
|
# Store the image and get the CDN URL
|
|
142
142
|
stored_url = await store_image(image_url, image_key)
|
|
143
143
|
|
|
@@ -137,7 +137,7 @@ class ImageGenerationCyberRealisticXL(HeuristBaseTool):
|
|
|
137
137
|
# Store the image URL
|
|
138
138
|
image_url = response.text.strip('"')
|
|
139
139
|
# Generate a key with agent ID as prefix
|
|
140
|
-
image_key = f"{context.
|
|
140
|
+
image_key = f"{context.agent_id}/heurist/{job_id}"
|
|
141
141
|
# Store the image and get the CDN URL
|
|
142
142
|
stored_url = await store_image(image_url, image_key)
|
|
143
143
|
|
{intentkit-0.6.0.dev13 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_flux_1_dev.py
RENAMED
|
@@ -137,7 +137,7 @@ class ImageGenerationFlux1Dev(HeuristBaseTool):
|
|
|
137
137
|
# Store the image URL
|
|
138
138
|
image_url = response.text.strip('"')
|
|
139
139
|
# Generate a key with agent ID as prefix
|
|
140
|
-
image_key = f"{context.
|
|
140
|
+
image_key = f"{context.agent_id}/heurist/{job_id}"
|
|
141
141
|
# Store the image and get the CDN URL
|
|
142
142
|
stored_url = await store_image(image_url, image_key)
|
|
143
143
|
|
|
@@ -136,7 +136,7 @@ class ImageGenerationSDXL(HeuristBaseTool):
|
|
|
136
136
|
# Store the image URL
|
|
137
137
|
image_url = response.text.strip('"')
|
|
138
138
|
# Generate a key with agent ID as prefix
|
|
139
|
-
image_key = f"{context.
|
|
139
|
+
image_key = f"{context.agent_id}/heurist/{job_id}"
|
|
140
140
|
# Store the image and get the CDN URL
|
|
141
141
|
stored_url = await store_image(image_url, image_key)
|
|
142
142
|
|
|
@@ -129,7 +129,7 @@ class TokenExecute(LiFiBaseTool):
|
|
|
129
129
|
|
|
130
130
|
# Get agent context for CDP wallet
|
|
131
131
|
context = self.context_from_config(config)
|
|
132
|
-
agent_id = context.
|
|
132
|
+
agent_id = context.agent_id
|
|
133
133
|
|
|
134
134
|
self.logger.info(
|
|
135
135
|
f"Executing LiFi transfer: {from_amount} {from_token} on {from_chain} -> {to_token} on {to_chain}"
|
|
@@ -109,7 +109,7 @@ class DALLEImageGeneration(OpenAIBaseTool):
|
|
|
109
109
|
image_url = image_url.strip('"')
|
|
110
110
|
|
|
111
111
|
# Generate a key with agent ID as prefix
|
|
112
|
-
image_key = f"{context.
|
|
112
|
+
image_key = f"{context.agent_id}/dalle/{job_id}"
|
|
113
113
|
|
|
114
114
|
# Store the image and get the CDN URL
|
|
115
115
|
stored_url = await store_image(image_url, image_key)
|
|
@@ -133,7 +133,7 @@ class GPTImageGeneration(OpenAIBaseTool):
|
|
|
133
133
|
image_bytes = base64.b64decode(base64_image)
|
|
134
134
|
|
|
135
135
|
# Generate a key with agent ID as prefix
|
|
136
|
-
image_key = f"{context.
|
|
136
|
+
image_key = f"{context.agent_id}/gpt-image/{job_id}"
|
|
137
137
|
|
|
138
138
|
# Store the image bytes and get the CDN URL
|
|
139
139
|
stored_url = await store_image_bytes(image_bytes, image_key, content_type)
|
|
@@ -157,7 +157,7 @@ class GPTImageToImage(OpenAIBaseTool):
|
|
|
157
157
|
image_bytes = base64.b64decode(base64_image)
|
|
158
158
|
|
|
159
159
|
# Generate a key with agent ID as prefix
|
|
160
|
-
image_key = f"{context.
|
|
160
|
+
image_key = f"{context.agent_id}/gpt-image-edit/{job_id}"
|
|
161
161
|
|
|
162
162
|
# Store the image bytes and get the CDN URL
|
|
163
163
|
stored_url = await store_image_bytes(image_bytes, image_key)
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""Supabase skills."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from typing import TypedDict
|
|
5
|
+
|
|
6
|
+
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
|
+
from intentkit.skills.base import SkillConfig, SkillState
|
|
8
|
+
from intentkit.skills.supabase.base import SupabaseBaseTool
|
|
9
|
+
from intentkit.skills.supabase.delete_data import SupabaseDeleteData
|
|
10
|
+
from intentkit.skills.supabase.fetch_data import SupabaseFetchData
|
|
11
|
+
from intentkit.skills.supabase.insert_data import SupabaseInsertData
|
|
12
|
+
from intentkit.skills.supabase.invoke_function import SupabaseInvokeFunction
|
|
13
|
+
from intentkit.skills.supabase.update_data import SupabaseUpdateData
|
|
14
|
+
from intentkit.skills.supabase.upsert_data import SupabaseUpsertData
|
|
15
|
+
|
|
16
|
+
# Cache skills at the system level, because they are stateless
|
|
17
|
+
_cache: dict[str, SupabaseBaseTool] = {}
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class SkillStates(TypedDict):
|
|
23
|
+
fetch_data: SkillState
|
|
24
|
+
insert_data: SkillState
|
|
25
|
+
update_data: SkillState
|
|
26
|
+
upsert_data: SkillState
|
|
27
|
+
delete_data: SkillState
|
|
28
|
+
invoke_function: SkillState
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class Config(SkillConfig):
|
|
32
|
+
"""Configuration for Supabase skills."""
|
|
33
|
+
|
|
34
|
+
states: SkillStates
|
|
35
|
+
supabase_url: str
|
|
36
|
+
supabase_key: str
|
|
37
|
+
public_write_tables: str = ""
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
async def get_skills(
|
|
41
|
+
config: "Config",
|
|
42
|
+
is_private: bool,
|
|
43
|
+
store: SkillStoreABC,
|
|
44
|
+
**_,
|
|
45
|
+
) -> list[SupabaseBaseTool]:
|
|
46
|
+
"""Get all Supabase skills."""
|
|
47
|
+
available_skills = []
|
|
48
|
+
|
|
49
|
+
# Include skills based on their state
|
|
50
|
+
for skill_name, state in config["states"].items():
|
|
51
|
+
if state == "disabled":
|
|
52
|
+
continue
|
|
53
|
+
elif state == "public" or (state == "private" and is_private):
|
|
54
|
+
available_skills.append(skill_name)
|
|
55
|
+
|
|
56
|
+
# Get each skill using the cached getter
|
|
57
|
+
result = []
|
|
58
|
+
for name in available_skills:
|
|
59
|
+
skill = get_supabase_skill(name, store)
|
|
60
|
+
if skill:
|
|
61
|
+
result.append(skill)
|
|
62
|
+
return result
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def get_supabase_skill(
|
|
66
|
+
name: str,
|
|
67
|
+
store: SkillStoreABC,
|
|
68
|
+
) -> SupabaseBaseTool:
|
|
69
|
+
"""Get a Supabase skill by name.
|
|
70
|
+
|
|
71
|
+
Args:
|
|
72
|
+
name: The name of the skill to get
|
|
73
|
+
store: The skill store for persisting data
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
The requested Supabase skill
|
|
77
|
+
"""
|
|
78
|
+
if name == "fetch_data":
|
|
79
|
+
if name not in _cache:
|
|
80
|
+
_cache[name] = SupabaseFetchData(
|
|
81
|
+
skill_store=store,
|
|
82
|
+
)
|
|
83
|
+
return _cache[name]
|
|
84
|
+
elif name == "insert_data":
|
|
85
|
+
if name not in _cache:
|
|
86
|
+
_cache[name] = SupabaseInsertData(
|
|
87
|
+
skill_store=store,
|
|
88
|
+
)
|
|
89
|
+
return _cache[name]
|
|
90
|
+
elif name == "update_data":
|
|
91
|
+
if name not in _cache:
|
|
92
|
+
_cache[name] = SupabaseUpdateData(
|
|
93
|
+
skill_store=store,
|
|
94
|
+
)
|
|
95
|
+
return _cache[name]
|
|
96
|
+
elif name == "upsert_data":
|
|
97
|
+
if name not in _cache:
|
|
98
|
+
_cache[name] = SupabaseUpsertData(
|
|
99
|
+
skill_store=store,
|
|
100
|
+
)
|
|
101
|
+
return _cache[name]
|
|
102
|
+
elif name == "delete_data":
|
|
103
|
+
if name not in _cache:
|
|
104
|
+
_cache[name] = SupabaseDeleteData(
|
|
105
|
+
skill_store=store,
|
|
106
|
+
)
|
|
107
|
+
return _cache[name]
|
|
108
|
+
elif name == "invoke_function":
|
|
109
|
+
if name not in _cache:
|
|
110
|
+
_cache[name] = SupabaseInvokeFunction(
|
|
111
|
+
skill_store=store,
|
|
112
|
+
)
|
|
113
|
+
return _cache[name]
|
|
114
|
+
else:
|
|
115
|
+
logger.warning(f"Unknown Supabase skill: {name}")
|
|
116
|
+
return None
|