intentkit 0.5.1__tar.gz → 0.6.0__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.5.1 → intentkit-0.6.0}/PKG-INFO +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/__init__.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/abstracts/skill.py +12 -0
- intentkit-0.6.0/clients/cdp.py +151 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/config/config.py +12 -4
- {intentkit-0.5.1 → intentkit-0.6.0}/core/engine.py +39 -31
- {intentkit-0.5.1 → intentkit-0.6.0}/core/node.py +8 -4
- {intentkit-0.5.1 → intentkit-0.6.0}/core/prompt.py +5 -6
- {intentkit-0.5.1 → intentkit-0.6.0}/core/skill.py +11 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/agent.py +2 -9
- {intentkit-0.5.1 → intentkit-0.6.0}/models/agent_data.py +18 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/agent_schema.json +12 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/chat.py +50 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/skill.py +19 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/pyproject.toml +10 -11
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/base.py +37 -17
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cdp/__init__.py +6 -14
- intentkit-0.6.0/skills/cdp/get_balance.py +133 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cdp/schema.json +0 -64
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/fetch_news.py +2 -2
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/fetch_price.py +2 -2
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/fetch_top_exchanges.py +2 -2
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/fetch_top_market_cap.py +2 -2
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/fetch_top_volume.py +2 -2
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/fetch_trading_signals.py +2 -2
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/base.py +3 -3
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/base.py +27 -4
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/networks.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/route.py +24 -23
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/tokens.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/wallet.py +27 -23
- intentkit-0.6.0/skills/firecrawl/README.md +211 -0
- intentkit-0.6.0/skills/firecrawl/__init__.py +107 -0
- intentkit-0.6.0/skills/firecrawl/base.py +28 -0
- intentkit-0.6.0/skills/firecrawl/clear.py +87 -0
- intentkit-0.6.0/skills/firecrawl/crawl.py +399 -0
- intentkit-0.6.0/skills/firecrawl/firecrawl.png +0 -0
- intentkit-0.6.0/skills/firecrawl/query.py +123 -0
- intentkit-0.6.0/skills/firecrawl/schema.json +153 -0
- intentkit-0.6.0/skills/firecrawl/scrape.py +318 -0
- intentkit-0.6.0/skills/firecrawl/utils.py +306 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/image_generation_animagine_xl.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/image_generation_arthemy_comics.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/image_generation_arthemy_real.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/image_generation_braindance.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/image_generation_cyber_realistic_xl.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/image_generation_flux_1_dev.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/image_generation_sdxl.py +1 -1
- intentkit-0.6.0/skills/http/README.md +78 -0
- intentkit-0.6.0/skills/http/__init__.py +100 -0
- intentkit-0.6.0/skills/http/base.py +21 -0
- intentkit-0.6.0/skills/http/get.py +96 -0
- intentkit-0.6.0/skills/http/http.svg +15 -0
- intentkit-0.6.0/skills/http/post.py +113 -0
- intentkit-0.6.0/skills/http/put.py +113 -0
- intentkit-0.6.0/skills/http/schema.json +80 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/lifi/token_execute.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/openai/dalle_image_generation.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/openai/gpt_image_generation.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/openai/gpt_image_to_image.py +1 -1
- intentkit-0.6.0/skills/supabase/__init__.py +116 -0
- intentkit-0.6.0/skills/supabase/base.py +72 -0
- intentkit-0.6.0/skills/supabase/delete_data.py +102 -0
- intentkit-0.6.0/skills/supabase/fetch_data.py +120 -0
- intentkit-0.6.0/skills/supabase/insert_data.py +70 -0
- intentkit-0.6.0/skills/supabase/invoke_function.py +74 -0
- intentkit-0.6.0/skills/supabase/schema.json +170 -0
- intentkit-0.6.0/skills/supabase/supabase.svg +15 -0
- intentkit-0.6.0/skills/supabase/update_data.py +105 -0
- intentkit-0.6.0/skills/supabase/upsert_data.py +77 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/system/read_agent_api_key.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/system/regenerate_agent_api_key.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/base.py +1 -39
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/follow_user.py +3 -3
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/get_mentions.py +6 -6
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/get_timeline.py +5 -5
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/get_user_by_username.py +3 -3
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/get_user_tweets.py +5 -5
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/like_tweet.py +3 -3
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/post_tweet.py +4 -4
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/reply_tweet.py +4 -4
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/retweet.py +3 -3
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/search_tweets.py +5 -5
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/unrealspeech/text_to_speech.py +1 -1
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/web_scraper/README.md +35 -4
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/web_scraper/__init__.py +16 -0
- intentkit-0.6.0/skills/web_scraper/document_indexer.py +143 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/web_scraper/schema.json +28 -0
- intentkit-0.6.0/skills/web_scraper/scrape_and_index.py +262 -0
- intentkit-0.6.0/skills/web_scraper/utils.py +684 -0
- intentkit-0.6.0/skills/web_scraper/website_indexer.py +456 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/utils/logging.py +1 -1
- intentkit-0.5.1/clients/cdp.py +0 -53
- intentkit-0.5.1/skills/cdp/get_balance.py +0 -81
- intentkit-0.5.1/skills/web_scraper/scrape_and_index.py +0 -327
- {intentkit-0.5.1 → intentkit-0.6.0}/.gitignore +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/LICENSE +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/MANIFEST.in +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/abstracts/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/abstracts/agent.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/abstracts/api.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/abstracts/engine.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/abstracts/exception.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/abstracts/graph.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/abstracts/twitter.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/clients/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/clients/twitter.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/config/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/core/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/core/agent.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/core/api.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/core/client.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/core/credit.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/app_setting.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/conversation.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/credit.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/db.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/db_mig.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/generator.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/llm.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/redis.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/models/user.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/acolyt/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/acolyt/acolyt.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/acolyt/ask.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/acolyt/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/acolyt/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/aixbt/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/aixbt/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/aixbt/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/aixbt/projects.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/aixbt/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/allora/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/allora/allora.jpeg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/allora/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/allora/price.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/allora/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/carv/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/carv/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/carv/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/carv/carv.webp +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/carv/fetch_news.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/carv/onchain_query.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/carv/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cdp/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cdp/cdp.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/chainlist/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/chainlist/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/chainlist/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/chainlist/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/common/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/common/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/common/common.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/common/current_time.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/common/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/constants.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/api.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptopanic/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dapplooker/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dapplooker/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dapplooker/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/api.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/config/chains.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dexscreener/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dexscreener/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dune_analytics/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dune_analytics/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dune_analytics/dune.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dune_analytics/fetch_kol_buys.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/dune_analytics/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/elfa/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/elfa/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/elfa/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/elfa/mention.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/elfa/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/elfa/stats.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/elfa/tokens.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/abi/approval.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/abi/route.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/best_yield.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/enso.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/prices.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/enso/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/github/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/github/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/github/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/github/github.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/github/github_search.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/github/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/heurist.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/heurist/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/lifi/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/lifi/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/lifi/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/lifi/lifi.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/lifi/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/lifi/token_quote.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/lifi/utils.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/api.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/moralis.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/tests/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/moralis/tests/test_wallet.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/nation/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/nation/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/nation/nation.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/nation/nft_check.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/nation/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/openai/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/openai/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/openai/image_to_text.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/openai/openai.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/openai/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/constants.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/moralis.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/skills.toml +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/slack/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/slack/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/slack/get_channel.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/slack/get_message.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/slack/schedule_message.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/slack/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/slack/send_message.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/slack/slack.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/system/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/system/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/system/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/system/system.svg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/tavily/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/tavily/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/tavily/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/tavily/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/constants.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/moralis.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/token_analytics.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/token_price.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/token/token_search.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/twitter/twitter.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/unrealspeech/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_audio/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_audio/input.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_audio/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/api.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/config.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/schema.json +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/utils.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/web_scraper/base.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/utils/__init__.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/utils/chain.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/utils/error.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/utils/middleware.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/utils/random.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/utils/s3.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/utils/slack_alert.py +0 -0
- {intentkit-0.5.1 → intentkit-0.6.0}/utils/tx.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
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
|
|
@@ -91,6 +91,18 @@ class SkillStoreABC(ABC):
|
|
|
91
91
|
"""
|
|
92
92
|
pass
|
|
93
93
|
|
|
94
|
+
@staticmethod
|
|
95
|
+
@abstractmethod
|
|
96
|
+
async def delete_agent_skill_data(agent_id: str, skill: str, key: str) -> None:
|
|
97
|
+
"""Delete skill data for an agent.
|
|
98
|
+
|
|
99
|
+
Args:
|
|
100
|
+
agent_id: ID of the agent
|
|
101
|
+
skill: Name of the skill
|
|
102
|
+
key: Data key
|
|
103
|
+
"""
|
|
104
|
+
pass
|
|
105
|
+
|
|
94
106
|
@staticmethod
|
|
95
107
|
@abstractmethod
|
|
96
108
|
async def get_thread_skill_data(
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import logging
|
|
3
|
+
from typing import Dict, Optional
|
|
4
|
+
|
|
5
|
+
from bip32 import BIP32
|
|
6
|
+
from cdp import CdpClient as OriginCdpClient
|
|
7
|
+
from cdp import EvmServerAccount
|
|
8
|
+
from coinbase_agentkit import (
|
|
9
|
+
CdpEvmServerWalletProvider,
|
|
10
|
+
CdpEvmServerWalletProviderConfig,
|
|
11
|
+
)
|
|
12
|
+
from eth_keys.datatypes import PrivateKey
|
|
13
|
+
from eth_utils import to_checksum_address
|
|
14
|
+
|
|
15
|
+
from intentkit.abstracts.skill import SkillStoreABC
|
|
16
|
+
from intentkit.models.agent import Agent
|
|
17
|
+
from intentkit.models.agent_data import AgentData
|
|
18
|
+
|
|
19
|
+
_clients: Dict[str, "CdpClient"] = {}
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def bip39_seed_to_eth_keys(seed_hex: str) -> Dict[str, str]:
|
|
25
|
+
"""
|
|
26
|
+
Converts a BIP39 seed to an Ethereum private key, public key, and address.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
seed_hex: The BIP39 seed in hexadecimal format
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
Dict containing private_key, public_key, and address
|
|
33
|
+
"""
|
|
34
|
+
# Convert the hex seed to bytes
|
|
35
|
+
seed_bytes = bytes.fromhex(seed_hex)
|
|
36
|
+
|
|
37
|
+
# Derive the master key from the seed
|
|
38
|
+
bip32 = BIP32.from_seed(seed_bytes)
|
|
39
|
+
|
|
40
|
+
# Derive the Ethereum address using the standard derivation path
|
|
41
|
+
private_key_bytes = bip32.get_privkey_from_path("m/44'/60'/0'/0/0")
|
|
42
|
+
|
|
43
|
+
# Create a private key object
|
|
44
|
+
private_key = PrivateKey(private_key_bytes)
|
|
45
|
+
|
|
46
|
+
# Get the public key
|
|
47
|
+
public_key = private_key.public_key
|
|
48
|
+
|
|
49
|
+
# Get the Ethereum address
|
|
50
|
+
address = public_key.to_address()
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
"private_key": private_key.to_hex(),
|
|
54
|
+
"public_key": public_key.to_hex(),
|
|
55
|
+
"address": to_checksum_address(address),
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class CdpClient:
|
|
60
|
+
def __init__(self, agent_id: str, skill_store: SkillStoreABC) -> None:
|
|
61
|
+
self._agent_id = agent_id
|
|
62
|
+
self._skill_store = skill_store
|
|
63
|
+
self._wallet_provider: Optional[CdpEvmServerWalletProvider] = None
|
|
64
|
+
self._wallet_provider_config: Optional[CdpEvmServerWalletProviderConfig] = None
|
|
65
|
+
|
|
66
|
+
async def get_wallet_provider(self) -> CdpEvmServerWalletProvider:
|
|
67
|
+
if self._wallet_provider:
|
|
68
|
+
return self._wallet_provider
|
|
69
|
+
agent: Agent = await self._skill_store.get_agent_config(self._agent_id)
|
|
70
|
+
agent_data: AgentData = await self._skill_store.get_agent_data(self._agent_id)
|
|
71
|
+
network_id = agent.network_id or agent.cdp_network_id
|
|
72
|
+
|
|
73
|
+
# Get credentials from skill store system config
|
|
74
|
+
api_key_id = self._skill_store.get_system_config("cdp_api_key_id")
|
|
75
|
+
api_key_secret = self._skill_store.get_system_config("cdp_api_key_secret")
|
|
76
|
+
wallet_secret = self._skill_store.get_system_config("cdp_wallet_secret")
|
|
77
|
+
|
|
78
|
+
# already have address
|
|
79
|
+
address = agent_data.evm_wallet_address
|
|
80
|
+
|
|
81
|
+
# new agent or address not migrated yet
|
|
82
|
+
if not address:
|
|
83
|
+
# create cdp client for later use
|
|
84
|
+
cdp_client = OriginCdpClient(
|
|
85
|
+
api_key_id=api_key_id,
|
|
86
|
+
api_key_secret=api_key_secret,
|
|
87
|
+
wallet_secret=wallet_secret,
|
|
88
|
+
)
|
|
89
|
+
# try migrating from v1 cdp_wallet_data
|
|
90
|
+
if agent_data.cdp_wallet_data:
|
|
91
|
+
wallet_data = json.loads(agent_data.cdp_wallet_data)
|
|
92
|
+
if not isinstance(wallet_data, dict):
|
|
93
|
+
raise ValueError("Invalid wallet data format")
|
|
94
|
+
if wallet_data.get("default_address_id") and wallet_data.get("seed"):
|
|
95
|
+
# verify seed and convert to pk
|
|
96
|
+
keys = bip39_seed_to_eth_keys(wallet_data["seed"])
|
|
97
|
+
if keys["address"] != wallet_data["default_address_id"]:
|
|
98
|
+
raise ValueError(
|
|
99
|
+
"Bad wallet data, seed does not match default_address_id"
|
|
100
|
+
)
|
|
101
|
+
# try to import wallet to v2
|
|
102
|
+
logger.info("Migrating wallet data to v2...")
|
|
103
|
+
await cdp_client.evm.import_account(
|
|
104
|
+
name=agent.id,
|
|
105
|
+
private_key=keys["private_key"],
|
|
106
|
+
)
|
|
107
|
+
address = keys["address"]
|
|
108
|
+
logger.info("Migrated wallet data to v2 successfully: %s", address)
|
|
109
|
+
# still not address
|
|
110
|
+
if not address:
|
|
111
|
+
logger.info("Creating new wallet...")
|
|
112
|
+
new_account = await cdp_client.evm.create_account(
|
|
113
|
+
name=agent.id,
|
|
114
|
+
)
|
|
115
|
+
address = new_account.address
|
|
116
|
+
logger.info("Created new wallet: %s", address)
|
|
117
|
+
# now it should be created or migrated, store it
|
|
118
|
+
agent_data.evm_wallet_address = address
|
|
119
|
+
await agent_data.save()
|
|
120
|
+
|
|
121
|
+
# it must have v2 account now, load agentkit wallet provider
|
|
122
|
+
self._wallet_provider_config = CdpEvmServerWalletProviderConfig(
|
|
123
|
+
api_key_id=api_key_id,
|
|
124
|
+
api_key_secret=api_key_secret,
|
|
125
|
+
network_id=network_id,
|
|
126
|
+
address=address,
|
|
127
|
+
wallet_secret=wallet_secret,
|
|
128
|
+
)
|
|
129
|
+
self._wallet_provider = CdpEvmServerWalletProvider(self._wallet_provider_config)
|
|
130
|
+
return self._wallet_provider
|
|
131
|
+
|
|
132
|
+
async def get_account(self) -> EvmServerAccount:
|
|
133
|
+
"""Get the account object from the wallet provider.
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
EvmServerAccount: The account object that can be used for balance checks, transfers, etc.
|
|
137
|
+
"""
|
|
138
|
+
wallet_provider = await self.get_wallet_provider()
|
|
139
|
+
# Access the internal account object
|
|
140
|
+
return wallet_provider._account
|
|
141
|
+
|
|
142
|
+
async def get_provider_config(self) -> CdpEvmServerWalletProviderConfig:
|
|
143
|
+
if not self._wallet_provider_config:
|
|
144
|
+
await self.get_wallet_provider()
|
|
145
|
+
return self._wallet_provider_config
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
async def get_cdp_client(agent_id: str, skill_store: SkillStoreABC) -> "CdpClient":
|
|
149
|
+
if agent_id not in _clients:
|
|
150
|
+
_clients[agent_id] = CdpClient(agent_id, skill_store)
|
|
151
|
+
return _clients[agent_id]
|
|
@@ -83,9 +83,10 @@ class Config:
|
|
|
83
83
|
self.payment_enabled = self.load("PAYMENT_ENABLED", "false") == "true"
|
|
84
84
|
# Open API for agent
|
|
85
85
|
self.open_api_base_url = self.load("OPEN_API_BASE_URL", "http://localhost:8000")
|
|
86
|
-
# CDP
|
|
87
|
-
self.
|
|
88
|
-
self.
|
|
86
|
+
# CDP - AgentKit 0.6.0 Configuration
|
|
87
|
+
self.cdp_api_key_id = self.load("CDP_API_KEY_ID")
|
|
88
|
+
self.cdp_api_key_secret = self.load("CDP_API_KEY_SECRET")
|
|
89
|
+
self.cdp_wallet_secret = self.load("CDP_WALLET_SECRET")
|
|
89
90
|
# LLM providers
|
|
90
91
|
self.openai_api_key = self.load("OPENAI_API_KEY")
|
|
91
92
|
self.deepseek_api_key = self.load("DEEPSEEK_API_KEY")
|
|
@@ -120,6 +121,7 @@ class Config:
|
|
|
120
121
|
self.moralis_api_key = self.load("MORALIS_API_KEY")
|
|
121
122
|
self.tavily_api_key = self.load("TAVILY_API_KEY")
|
|
122
123
|
self.cookiefun_api_key = self.load("COOKIEFUN_API_KEY")
|
|
124
|
+
self.firecrawl_api_key = self.load("FIRECRAWL_API_KEY")
|
|
123
125
|
# Sentry
|
|
124
126
|
self.sentry_dsn = self.load("SENTRY_DSN")
|
|
125
127
|
self.sentry_sample_rate = float(self.load("SENTRY_SAMPLE_RATE", "0.1"))
|
|
@@ -149,6 +151,7 @@ class Config:
|
|
|
149
151
|
# Now we know the env, set up logging
|
|
150
152
|
setup_logging(self.env, self.debug)
|
|
151
153
|
logger.info("config loaded")
|
|
154
|
+
|
|
152
155
|
# If the slack alert token exists, init it
|
|
153
156
|
if self.slack_alert_token and self.slack_alert_channel:
|
|
154
157
|
init_slack(self.slack_alert_token, self.slack_alert_channel)
|
|
@@ -158,7 +161,12 @@ class Config:
|
|
|
158
161
|
|
|
159
162
|
def load(self, key, default=None):
|
|
160
163
|
"""Load a secret from the secrets map or env"""
|
|
161
|
-
|
|
164
|
+
value = self.secrets.get(key, os.getenv(key, default))
|
|
165
|
+
if value:
|
|
166
|
+
value = value.replace("\\n", "\n")
|
|
167
|
+
if value and value.startswith("'") and value.endswith("'"):
|
|
168
|
+
value = value[1:-1]
|
|
169
|
+
return value
|
|
162
170
|
|
|
163
171
|
|
|
164
172
|
config: Config = Config()
|
|
@@ -187,8 +187,7 @@ async def create_agent(
|
|
|
187
187
|
if config.admin_llm_skill_control:
|
|
188
188
|
escaped_prompt = await explain_prompt(escaped_prompt)
|
|
189
189
|
prompt_array = [
|
|
190
|
-
("
|
|
191
|
-
("placeholder", "{entrypoint_prompt}"),
|
|
190
|
+
("placeholder", "{system_prompt}"),
|
|
192
191
|
("placeholder", "{messages}"),
|
|
193
192
|
]
|
|
194
193
|
if agent.prompt_append:
|
|
@@ -201,18 +200,43 @@ async def create_agent(
|
|
|
201
200
|
|
|
202
201
|
prompt_temp = ChatPromptTemplate.from_messages(prompt_array)
|
|
203
202
|
|
|
204
|
-
def formatted_prompt(
|
|
203
|
+
async def formatted_prompt(
|
|
205
204
|
state: AgentState, config: RunnableConfig
|
|
206
205
|
) -> list[BaseMessage]:
|
|
207
|
-
|
|
208
|
-
if config.get("configurable") and config["configurable"].get(
|
|
209
|
-
"
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
206
|
+
final_system_prompt = escaped_prompt
|
|
207
|
+
if config.get("configurable") and config["configurable"].get("entrypoint"):
|
|
208
|
+
entrypoint = config["configurable"]["entrypoint"]
|
|
209
|
+
entrypoint_prompt = None
|
|
210
|
+
if (
|
|
211
|
+
agent.twitter_entrypoint_enabled
|
|
212
|
+
and agent.twitter_entrypoint_prompt
|
|
213
|
+
and entrypoint == AuthorType.TWITTER.value
|
|
214
|
+
):
|
|
215
|
+
entrypoint_prompt = agent.twitter_entrypoint_prompt
|
|
216
|
+
logger.debug("twitter entrypoint prompt added")
|
|
217
|
+
elif (
|
|
218
|
+
agent.telegram_entrypoint_enabled
|
|
219
|
+
and agent.telegram_entrypoint_prompt
|
|
220
|
+
and entrypoint == AuthorType.TELEGRAM.value
|
|
221
|
+
):
|
|
222
|
+
entrypoint_prompt = agent.telegram_entrypoint_prompt
|
|
223
|
+
logger.debug("telegram entrypoint prompt added")
|
|
224
|
+
if entrypoint_prompt:
|
|
225
|
+
entrypoint_prompt = await explain_prompt(entrypoint_prompt)
|
|
226
|
+
final_system_prompt = f"{final_system_prompt}## Entrypoint rules\n\n{entrypoint_prompt}\n\n"
|
|
227
|
+
if config.get("configurable"):
|
|
228
|
+
final_system_prompt = f"{final_system_prompt}## Internal Info\n\n"
|
|
229
|
+
"These are for your internal use. You can use them when querying or storing data, "
|
|
230
|
+
"but please do not directly share this information with users.\n\n"
|
|
231
|
+
chat_id = config["configurable"].get("chat_id")
|
|
232
|
+
if chat_id:
|
|
233
|
+
final_system_prompt = f"{final_system_prompt}chat_id: {chat_id}\n\n"
|
|
234
|
+
user_id = config["configurable"].get("user_id")
|
|
235
|
+
if user_id:
|
|
236
|
+
final_system_prompt = f"{final_system_prompt}user_id: {user_id}\n\n"
|
|
237
|
+
system_prompt = [("system", final_system_prompt)]
|
|
214
238
|
return prompt_temp.invoke(
|
|
215
|
-
{"messages": state["messages"], "
|
|
239
|
+
{"messages": state["messages"], "system_prompt": system_prompt},
|
|
216
240
|
config,
|
|
217
241
|
)
|
|
218
242
|
|
|
@@ -518,33 +542,17 @@ async def stream_agent(message: ChatMessageCreate):
|
|
|
518
542
|
HumanMessage(content=content),
|
|
519
543
|
]
|
|
520
544
|
|
|
521
|
-
entrypoint_prompt = None
|
|
522
|
-
if (
|
|
523
|
-
agent.twitter_entrypoint_enabled
|
|
524
|
-
and agent.twitter_entrypoint_prompt
|
|
525
|
-
and input.author_type == AuthorType.TWITTER
|
|
526
|
-
):
|
|
527
|
-
entrypoint_prompt = agent.twitter_entrypoint_prompt
|
|
528
|
-
logger.debug("twitter entrypoint prompt added")
|
|
529
|
-
elif (
|
|
530
|
-
agent.telegram_entrypoint_enabled
|
|
531
|
-
and agent.telegram_entrypoint_prompt
|
|
532
|
-
and input.author_type == AuthorType.TELEGRAM
|
|
533
|
-
):
|
|
534
|
-
entrypoint_prompt = agent.telegram_entrypoint_prompt
|
|
535
|
-
logger.debug("telegram entrypoint prompt added")
|
|
536
|
-
if entrypoint_prompt and config.admin_llm_skill_control:
|
|
537
|
-
entrypoint_prompt = await explain_prompt(entrypoint_prompt)
|
|
538
|
-
|
|
539
545
|
# stream config
|
|
540
546
|
thread_id = f"{input.agent_id}-{input.chat_id}"
|
|
541
547
|
stream_config = {
|
|
542
548
|
"configurable": {
|
|
543
|
-
"
|
|
549
|
+
"agent_id": agent.id,
|
|
544
550
|
"thread_id": thread_id,
|
|
551
|
+
"chat_id": input.chat_id,
|
|
545
552
|
"user_id": input.user_id,
|
|
553
|
+
"app_id": input.app_id,
|
|
546
554
|
"entrypoint": input.author_type,
|
|
547
|
-
"
|
|
555
|
+
"is_private": is_private,
|
|
548
556
|
"payer": payer if payment_enabled else None,
|
|
549
557
|
},
|
|
550
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
|
|
|
@@ -138,9 +139,11 @@ class PreModelNode(RunnableCallable):
|
|
|
138
139
|
f"Too few messages after trim: {len(trimmed_messages)}"
|
|
139
140
|
)
|
|
140
141
|
return {}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
return {
|
|
143
|
+
"messages": [RemoveMessage(REMOVE_ALL_MESSAGES)] + trimmed_messages,
|
|
144
|
+
}
|
|
145
|
+
else:
|
|
146
|
+
return {}
|
|
144
147
|
if self.short_term_memory_strategy == "summarize":
|
|
145
148
|
# if last message is not human message, skip summarize
|
|
146
149
|
if not isinstance(messages[-1], HumanMessage):
|
|
@@ -200,7 +203,8 @@ class PostModelNode(RunnableCallable):
|
|
|
200
203
|
return state_update
|
|
201
204
|
logger.debug(f"last: {messages[-1]}")
|
|
202
205
|
msg = messages[-1]
|
|
203
|
-
|
|
206
|
+
agent_id = cfg.get("agent_id")
|
|
207
|
+
agent = await Agent.get(agent_id)
|
|
204
208
|
account = await CreditAccount.get_or_create(OwnerType.USER, payer)
|
|
205
209
|
if hasattr(msg, "tool_calls") and msg.tool_calls:
|
|
206
210
|
for tool_call in msg.tool_calls:
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import json
|
|
2
|
-
|
|
3
1
|
from intentkit.config.config import config
|
|
4
2
|
from intentkit.models.agent import Agent
|
|
5
3
|
from intentkit.models.agent_data import AgentData
|
|
@@ -34,10 +32,11 @@ def agent_prompt(agent: Agent, agent_data: AgentData) -> str:
|
|
|
34
32
|
if agent_data.telegram_name:
|
|
35
33
|
prompt += f"Your telegram bot name is {agent_data.telegram_name}.\n"
|
|
36
34
|
# CDP
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
network_id = agent.network_id or agent.cdp_network_id
|
|
36
|
+
if agent_data.evm_wallet_address and network_id != "solana":
|
|
37
|
+
prompt += f"Your wallet address in {network_id} is {agent_data.evm_wallet_address} .\n"
|
|
38
|
+
if agent_data.solana_wallet_address and network_id == "solana":
|
|
39
|
+
prompt += f"Your wallet address in {network_id} is {agent_data.solana_wallet_address} .\n"
|
|
41
40
|
prompt += "\n"
|
|
42
41
|
if agent.purpose:
|
|
43
42
|
prompt += f"## Purpose\n\n{agent.purpose}\n\n"
|
|
@@ -78,6 +78,17 @@ class SkillStore(SkillStoreABC):
|
|
|
78
78
|
)
|
|
79
79
|
await skill_data.save()
|
|
80
80
|
|
|
81
|
+
@staticmethod
|
|
82
|
+
async def delete_agent_skill_data(agent_id: str, skill: str, key: str) -> None:
|
|
83
|
+
"""Delete skill data for an agent.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
agent_id: ID of the agent
|
|
87
|
+
skill: Name of the skill
|
|
88
|
+
key: Data key
|
|
89
|
+
"""
|
|
90
|
+
await AgentSkillData.delete(agent_id, skill, key)
|
|
91
|
+
|
|
81
92
|
@staticmethod
|
|
82
93
|
async def get_thread_skill_data(
|
|
83
94
|
thread_id: str, skill: str, key: str
|
|
@@ -1319,7 +1319,7 @@ class AgentResponse(BaseModel):
|
|
|
1319
1319
|
]
|
|
1320
1320
|
# auto increment number by db
|
|
1321
1321
|
number: Annotated[
|
|
1322
|
-
int,
|
|
1322
|
+
Optional[int],
|
|
1323
1323
|
PydanticField(
|
|
1324
1324
|
description="Auto-incrementing number assigned by the system for easy reference",
|
|
1325
1325
|
),
|
|
@@ -1564,7 +1564,6 @@ class AgentResponse(BaseModel):
|
|
|
1564
1564
|
str: ETag value for the agent
|
|
1565
1565
|
"""
|
|
1566
1566
|
import hashlib
|
|
1567
|
-
import json
|
|
1568
1567
|
|
|
1569
1568
|
# Generate hash from the entire object data using json mode to handle datetime objects
|
|
1570
1569
|
# Sort keys to ensure consistent ordering of dictionary keys
|
|
@@ -1622,13 +1621,7 @@ class AgentResponse(BaseModel):
|
|
|
1622
1621
|
data["skills"] = filtered_skills
|
|
1623
1622
|
|
|
1624
1623
|
# Process CDP wallet address
|
|
1625
|
-
cdp_wallet_address = None
|
|
1626
|
-
if agent_data and agent_data.cdp_wallet_data:
|
|
1627
|
-
try:
|
|
1628
|
-
wallet_data = json.loads(agent_data.cdp_wallet_data)
|
|
1629
|
-
cdp_wallet_address = wallet_data.get("default_address_id")
|
|
1630
|
-
except (json.JSONDecodeError, AttributeError):
|
|
1631
|
-
pass
|
|
1624
|
+
cdp_wallet_address = agent_data.evm_wallet_address if agent_data else None
|
|
1632
1625
|
|
|
1633
1626
|
# Process Twitter linked status
|
|
1634
1627
|
has_twitter_linked = False
|
|
@@ -29,6 +29,10 @@ class AgentDataTable(Base):
|
|
|
29
29
|
__tablename__ = "agent_data"
|
|
30
30
|
|
|
31
31
|
id = Column(String, primary_key=True, comment="Same as Agent.id")
|
|
32
|
+
evm_wallet_address = Column(String, nullable=True, comment="EVM wallet address")
|
|
33
|
+
solana_wallet_address = Column(
|
|
34
|
+
String, nullable=True, comment="Solana wallet address"
|
|
35
|
+
)
|
|
32
36
|
cdp_wallet_data = Column(String, nullable=True, comment="CDP wallet data")
|
|
33
37
|
crossmint_wallet_data = Column(
|
|
34
38
|
JSON().with_variant(JSONB(), "postgresql"),
|
|
@@ -94,6 +98,20 @@ class AgentData(BaseModel):
|
|
|
94
98
|
description="Same as Agent.id",
|
|
95
99
|
),
|
|
96
100
|
]
|
|
101
|
+
evm_wallet_address: Annotated[
|
|
102
|
+
Optional[str],
|
|
103
|
+
PydanticField(
|
|
104
|
+
default=None,
|
|
105
|
+
description="EVM wallet address",
|
|
106
|
+
),
|
|
107
|
+
]
|
|
108
|
+
solana_wallet_address: Annotated[
|
|
109
|
+
Optional[str],
|
|
110
|
+
PydanticField(
|
|
111
|
+
default=None,
|
|
112
|
+
description="Solana wallet address",
|
|
113
|
+
),
|
|
114
|
+
]
|
|
97
115
|
cdp_wallet_data: Annotated[
|
|
98
116
|
Optional[str],
|
|
99
117
|
PydanticField(
|
|
@@ -535,10 +535,18 @@
|
|
|
535
535
|
"title": "System",
|
|
536
536
|
"$ref": "../skills/system/schema.json"
|
|
537
537
|
},
|
|
538
|
+
"http": {
|
|
539
|
+
"title": "HTTP Client",
|
|
540
|
+
"$ref": "../skills/http/schema.json"
|
|
541
|
+
},
|
|
538
542
|
"web_scraper": {
|
|
539
543
|
"title": "Web Scraper & Content Indexing",
|
|
540
544
|
"$ref": "../skills/web_scraper/schema.json"
|
|
541
545
|
},
|
|
546
|
+
"firecrawl": {
|
|
547
|
+
"title": "Firecrawl Web Scraping",
|
|
548
|
+
"$ref": "../skills/firecrawl/schema.json"
|
|
549
|
+
},
|
|
542
550
|
"aixbt": {
|
|
543
551
|
"title": "AIXBT",
|
|
544
552
|
"$ref": "../skills/aixbt/schema.json"
|
|
@@ -563,6 +571,10 @@
|
|
|
563
571
|
"title": "Slack",
|
|
564
572
|
"$ref": "../skills/slack/schema.json"
|
|
565
573
|
},
|
|
574
|
+
"supabase": {
|
|
575
|
+
"title": "Supabase",
|
|
576
|
+
"$ref": "../skills/supabase/schema.json"
|
|
577
|
+
},
|
|
566
578
|
"venice_audio": {
|
|
567
579
|
"title": "Venice Audio",
|
|
568
580
|
"$ref": "../skills/venice_audio/schema.json"
|
|
@@ -8,6 +8,7 @@ from intentkit.models.base import Base
|
|
|
8
8
|
from intentkit.models.db import get_session
|
|
9
9
|
from pydantic import BaseModel, ConfigDict, Field
|
|
10
10
|
from sqlalchemy import (
|
|
11
|
+
Boolean,
|
|
11
12
|
Column,
|
|
12
13
|
DateTime,
|
|
13
14
|
Float,
|
|
@@ -101,6 +102,14 @@ class ChatMessageRequest(BaseModel):
|
|
|
101
102
|
min_length=1,
|
|
102
103
|
),
|
|
103
104
|
]
|
|
105
|
+
app_id: Annotated[
|
|
106
|
+
Optional[str],
|
|
107
|
+
Field(
|
|
108
|
+
None,
|
|
109
|
+
description="Optional application identifier",
|
|
110
|
+
examples=["app-789"],
|
|
111
|
+
),
|
|
112
|
+
]
|
|
104
113
|
user_id: Annotated[
|
|
105
114
|
str,
|
|
106
115
|
Field(
|
|
@@ -120,6 +129,20 @@ class ChatMessageRequest(BaseModel):
|
|
|
120
129
|
max_length=65535,
|
|
121
130
|
),
|
|
122
131
|
]
|
|
132
|
+
search_mode: Annotated[
|
|
133
|
+
Optional[bool],
|
|
134
|
+
Field(
|
|
135
|
+
None,
|
|
136
|
+
description="Optional flag to enable search mode",
|
|
137
|
+
),
|
|
138
|
+
]
|
|
139
|
+
super_mode: Annotated[
|
|
140
|
+
Optional[bool],
|
|
141
|
+
Field(
|
|
142
|
+
None,
|
|
143
|
+
description="Optional flag to enable super mode",
|
|
144
|
+
),
|
|
145
|
+
]
|
|
123
146
|
attachments: Annotated[
|
|
124
147
|
Optional[List[ChatMessageAttachment]],
|
|
125
148
|
Field(
|
|
@@ -134,8 +157,11 @@ class ChatMessageRequest(BaseModel):
|
|
|
134
157
|
json_schema_extra={
|
|
135
158
|
"example": {
|
|
136
159
|
"chat_id": "chat-123",
|
|
160
|
+
"app_id": "app-789",
|
|
137
161
|
"user_id": "user-456",
|
|
138
162
|
"message": "Hello, how can you help me today?",
|
|
163
|
+
"search_mode": True,
|
|
164
|
+
"super_mode": False,
|
|
139
165
|
"attachments": [
|
|
140
166
|
{
|
|
141
167
|
"type": "link",
|
|
@@ -229,6 +255,18 @@ class ChatMessageTable(Base):
|
|
|
229
255
|
Float,
|
|
230
256
|
default=0,
|
|
231
257
|
)
|
|
258
|
+
app_id = Column(
|
|
259
|
+
String,
|
|
260
|
+
nullable=True,
|
|
261
|
+
)
|
|
262
|
+
search_mode = Column(
|
|
263
|
+
Boolean,
|
|
264
|
+
nullable=True,
|
|
265
|
+
)
|
|
266
|
+
super_mode = Column(
|
|
267
|
+
Boolean,
|
|
268
|
+
nullable=True,
|
|
269
|
+
)
|
|
232
270
|
created_at = Column(
|
|
233
271
|
DateTime(timezone=True),
|
|
234
272
|
nullable=False,
|
|
@@ -302,6 +340,18 @@ class ChatMessageCreate(BaseModel):
|
|
|
302
340
|
float,
|
|
303
341
|
Field(0.0, description="Cost for the cold start of the message in seconds"),
|
|
304
342
|
]
|
|
343
|
+
app_id: Annotated[
|
|
344
|
+
Optional[str],
|
|
345
|
+
Field(None, description="Optional application identifier"),
|
|
346
|
+
]
|
|
347
|
+
search_mode: Annotated[
|
|
348
|
+
Optional[bool],
|
|
349
|
+
Field(None, description="Optional flag to enable search mode"),
|
|
350
|
+
]
|
|
351
|
+
super_mode: Annotated[
|
|
352
|
+
Optional[bool],
|
|
353
|
+
Field(None, description="Optional flag to enable super mode"),
|
|
354
|
+
]
|
|
305
355
|
|
|
306
356
|
async def save_in_session(self, db: AsyncSession) -> "ChatMessage":
|
|
307
357
|
"""Save the chat message to the database.
|
|
@@ -172,6 +172,25 @@ class AgentSkillData(AgentSkillDataCreate):
|
|
|
172
172
|
)
|
|
173
173
|
return result.data if result else None
|
|
174
174
|
|
|
175
|
+
@classmethod
|
|
176
|
+
async def delete(cls, agent_id: str, skill: str, key: str) -> None:
|
|
177
|
+
"""Delete skill data for an agent.
|
|
178
|
+
|
|
179
|
+
Args:
|
|
180
|
+
agent_id: ID of the agent
|
|
181
|
+
skill: Name of the skill
|
|
182
|
+
key: Data key
|
|
183
|
+
"""
|
|
184
|
+
async with get_session() as db:
|
|
185
|
+
await db.execute(
|
|
186
|
+
delete(AgentSkillDataTable).where(
|
|
187
|
+
AgentSkillDataTable.agent_id == agent_id,
|
|
188
|
+
AgentSkillDataTable.skill == skill,
|
|
189
|
+
AgentSkillDataTable.key == key,
|
|
190
|
+
)
|
|
191
|
+
)
|
|
192
|
+
await db.commit()
|
|
193
|
+
|
|
175
194
|
@classmethod
|
|
176
195
|
async def clean_data(cls, agent_id: str):
|
|
177
196
|
"""Clean all skill data for an agent.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "intentkit"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.6.0"
|
|
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"
|
|
@@ -110,16 +110,15 @@ dev = [
|
|
|
110
110
|
requires = ["hatchling"]
|
|
111
111
|
build-backend = "hatchling.build"
|
|
112
112
|
|
|
113
|
-
[tool.hatch.build.targets.wheel]
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
]
|
|
113
|
+
[tool.hatch.build.targets.wheel.force-include]
|
|
114
|
+
"__init__.py" = "intentkit/__init__.py"
|
|
115
|
+
"abstracts" = "intentkit/abstracts"
|
|
116
|
+
"clients" = "intentkit/clients"
|
|
117
|
+
"config" = "intentkit/config"
|
|
118
|
+
"core" = "intentkit/core"
|
|
119
|
+
"models" = "intentkit/models"
|
|
120
|
+
"skills" = "intentkit/skills"
|
|
121
|
+
"utils" = "intentkit/utils"
|
|
123
122
|
|
|
124
123
|
[tool.hatch.build.targets.sdist]
|
|
125
124
|
include = [
|