intentkit 0.6.9.dev2__tar.gz → 0.6.10.dev2__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.

Files changed (417) hide show
  1. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/PKG-INFO +3 -3
  2. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/__init__.py +1 -1
  3. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/abstracts/graph.py +17 -2
  4. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/core/engine.py +49 -30
  5. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/core/node.py +10 -20
  6. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/agent.py +3 -0
  7. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/chat.py +9 -1
  8. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/pyproject.toml +3 -3
  9. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/acolyt/ask.py +2 -5
  10. intentkit-0.6.10.dev2/skills/acolyt/base.py +38 -0
  11. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/aixbt/__init__.py +3 -7
  12. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/aixbt/projects.py +12 -36
  13. intentkit-0.6.10.dev2/skills/allora/base.py +38 -0
  14. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/allora/price.py +2 -4
  15. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/base.py +8 -1
  16. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/carv/base.py +12 -10
  17. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/carv/fetch_news.py +90 -92
  18. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/carv/onchain_query.py +162 -164
  19. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/carv/token_info_and_price.py +108 -110
  20. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/chainlist/chain_lookup.py +1 -2
  21. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/common/current_time.py +1 -2
  22. intentkit-0.6.10.dev2/skills/cookiefun/base.py +49 -0
  23. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/get_account_details.py +1 -3
  24. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/get_account_feed.py +1 -3
  25. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/get_account_smart_followers.py +1 -3
  26. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/get_sectors.py +2 -3
  27. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/search_accounts.py +1 -3
  28. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/fetch_news.py +3 -4
  29. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/fetch_price.py +3 -4
  30. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/fetch_top_exchanges.py +3 -4
  31. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/fetch_top_market_cap.py +3 -4
  32. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/fetch_top_volume.py +3 -4
  33. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/fetch_trading_signals.py +3 -4
  34. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptopanic/base.py +13 -9
  35. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptopanic/fetch_crypto_news.py +150 -153
  36. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptopanic/fetch_crypto_sentiment.py +133 -136
  37. intentkit-0.6.10.dev2/skills/dapplooker/base.py +36 -0
  38. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dapplooker/dapplooker_token_data.py +2 -4
  39. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/coins/fetch_batch_historical_prices.py +2 -3
  40. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/coins/fetch_block.py +2 -3
  41. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/coins/fetch_current_prices.py +2 -5
  42. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/coins/fetch_first_price.py +2 -5
  43. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/coins/fetch_historical_prices.py +2 -3
  44. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/coins/fetch_price_chart.py +2 -5
  45. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/coins/fetch_price_percentage.py +2 -5
  46. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/fees/fetch_fees_overview.py +2 -3
  47. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +2 -3
  48. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +2 -3
  49. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +2 -3
  50. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/stablecoins/fetch_stablecoins.py +2 -3
  51. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tvl/fetch_chain_historical_tvl.py +2 -5
  52. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tvl/fetch_chains.py +2 -3
  53. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tvl/fetch_historical_tvl.py +2 -3
  54. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tvl/fetch_protocol.py +2 -5
  55. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tvl/fetch_protocol_current_tvl.py +2 -5
  56. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tvl/fetch_protocols.py +2 -3
  57. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/volumes/fetch_dex_overview.py +2 -3
  58. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/volumes/fetch_dex_summary.py +2 -5
  59. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/volumes/fetch_options_overview.py +2 -3
  60. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/yields/fetch_pool_chart.py +2 -5
  61. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/yields/fetch_pools.py +2 -3
  62. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dune_analytics/base.py +15 -9
  63. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dune_analytics/fetch_kol_buys.py +125 -128
  64. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dune_analytics/fetch_nation_metrics.py +234 -237
  65. intentkit-0.6.10.dev2/skills/elfa/base.py +38 -0
  66. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/elfa/mention.py +2 -7
  67. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/elfa/stats.py +2 -6
  68. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/elfa/tokens.py +1 -4
  69. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/base.py +25 -13
  70. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/best_yield.py +1 -4
  71. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/networks.py +2 -5
  72. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/prices.py +1 -5
  73. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/route.py +2 -5
  74. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/tokens.py +1 -4
  75. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/wallet.py +3 -9
  76. intentkit-0.6.10.dev2/skills/firecrawl/base.py +38 -0
  77. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/firecrawl/clear.py +1 -3
  78. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/firecrawl/crawl.py +7 -8
  79. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/firecrawl/query.py +7 -9
  80. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/firecrawl/scrape.py +7 -8
  81. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/github/github_search.py +1 -3
  82. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/base.py +15 -0
  83. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/image_generation_animagine_xl.py +3 -4
  84. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/image_generation_arthemy_comics.py +3 -4
  85. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/image_generation_arthemy_real.py +3 -4
  86. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/image_generation_braindance.py +3 -4
  87. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/image_generation_cyber_realistic_xl.py +3 -4
  88. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/image_generation_flux_1_dev.py +3 -4
  89. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/image_generation_sdxl.py +3 -4
  90. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/http/get.py +0 -2
  91. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/http/post.py +0 -2
  92. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/http/put.py +0 -2
  93. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/lifi/token_execute.py +1 -3
  94. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/lifi/token_quote.py +0 -2
  95. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/base.py +15 -1
  96. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/nation/nft_check.py +2 -5
  97. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/openai/base.py +14 -5
  98. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/openai/dalle_image_generation.py +6 -5
  99. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/openai/gpt_image_generation.py +6 -5
  100. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/openai/gpt_image_to_image.py +6 -5
  101. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/openai/image_to_text.py +6 -6
  102. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/base.py +4 -3
  103. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/token_balances.py +2 -4
  104. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/wallet_approvals.py +2 -4
  105. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/wallet_defi_positions.py +3 -4
  106. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/wallet_history.py +2 -4
  107. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/wallet_net_worth.py +2 -4
  108. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/wallet_nfts.py +2 -4
  109. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/wallet_profitability.py +2 -4
  110. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/wallet_profitability_summary.py +2 -4
  111. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/wallet_stats.py +2 -4
  112. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/wallet_swaps.py +2 -4
  113. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/slack/base.py +18 -0
  114. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/slack/get_channel.py +3 -4
  115. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/slack/get_message.py +3 -4
  116. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/slack/schedule_message.py +3 -4
  117. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/slack/send_message.py +3 -4
  118. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/delete_data.py +3 -6
  119. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/fetch_data.py +3 -6
  120. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/insert_data.py +3 -6
  121. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/invoke_function.py +3 -6
  122. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/update_data.py +3 -6
  123. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/upsert_data.py +3 -6
  124. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/add_autonomous_task.py +1 -3
  125. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/delete_autonomous_task.py +1 -3
  126. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/edit_autonomous_task.py +1 -3
  127. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/list_autonomous_tasks.py +1 -3
  128. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/read_agent_api_key.py +2 -3
  129. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/regenerate_agent_api_key.py +2 -5
  130. intentkit-0.6.10.dev2/skills/tavily/base.py +36 -0
  131. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/tavily/tavily_extract.py +7 -8
  132. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/tavily/tavily_search.py +11 -9
  133. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/base.py +4 -6
  134. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/erc20_transfers.py +2 -4
  135. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/token_analytics.py +2 -4
  136. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/token_price.py +2 -4
  137. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/token_search.py +2 -4
  138. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/base.py +41 -0
  139. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/follow_user.py +4 -4
  140. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/get_mentions.py +4 -4
  141. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/get_timeline.py +4 -4
  142. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/get_user_by_username.py +4 -4
  143. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/get_user_tweets.py +4 -4
  144. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/like_tweet.py +4 -4
  145. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/post_tweet.py +3 -4
  146. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/reply_tweet.py +3 -4
  147. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/retweet.py +4 -4
  148. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/search_tweets.py +4 -4
  149. intentkit-0.6.10.dev2/skills/unrealspeech/base.py +37 -0
  150. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/unrealspeech/text_to_speech.py +4 -4
  151. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_audio/base.py +11 -9
  152. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_audio/venice_audio.py +238 -240
  153. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/base.py +23 -19
  154. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_enhance/image_enhance.py +78 -80
  155. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/image_generation_base.py +115 -117
  156. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_upscale/image_upscale.py +88 -90
  157. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_vision/image_vision.py +98 -100
  158. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/web_scraper/document_indexer.py +3 -5
  159. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/web_scraper/scrape_and_index.py +14 -17
  160. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/web_scraper/website_indexer.py +8 -10
  161. intentkit-0.6.10.dev2/skills/xmtp/README.md +110 -0
  162. intentkit-0.6.10.dev2/skills/xmtp/__init__.py +82 -0
  163. intentkit-0.6.10.dev2/skills/xmtp/base.py +15 -0
  164. intentkit-0.6.10.dev2/skills/xmtp/schema.json +41 -0
  165. intentkit-0.6.10.dev2/skills/xmtp/transfer.py +155 -0
  166. intentkit-0.6.10.dev2/skills/xmtp/xmtp.svg +26 -0
  167. intentkit-0.6.9.dev2/skills/acolyt/base.py +0 -28
  168. intentkit-0.6.9.dev2/skills/allora/base.py +0 -28
  169. intentkit-0.6.9.dev2/skills/cookiefun/base.py +0 -41
  170. intentkit-0.6.9.dev2/skills/dapplooker/base.py +0 -26
  171. intentkit-0.6.9.dev2/skills/elfa/base.py +0 -28
  172. intentkit-0.6.9.dev2/skills/firecrawl/base.py +0 -28
  173. intentkit-0.6.9.dev2/skills/tavily/base.py +0 -27
  174. intentkit-0.6.9.dev2/skills/unrealspeech/base.py +0 -21
  175. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/.gitignore +0 -0
  176. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/LICENSE +0 -0
  177. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/MANIFEST.in +0 -0
  178. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/README.md +0 -0
  179. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/abstracts/__init__.py +0 -0
  180. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/abstracts/agent.py +0 -0
  181. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/abstracts/api.py +0 -0
  182. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/abstracts/engine.py +0 -0
  183. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/abstracts/exception.py +0 -0
  184. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/abstracts/skill.py +0 -0
  185. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/abstracts/twitter.py +0 -0
  186. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/clients/__init__.py +0 -0
  187. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/clients/cdp.py +0 -0
  188. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/clients/twitter.py +0 -0
  189. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/config/__init__.py +0 -0
  190. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/config/config.py +0 -0
  191. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/core/__init__.py +0 -0
  192. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/core/agent.py +0 -0
  193. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/core/api.py +0 -0
  194. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/core/client.py +0 -0
  195. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/core/credit.py +0 -0
  196. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/core/prompt.py +0 -0
  197. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/core/skill.py +0 -0
  198. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/agent_data.py +0 -0
  199. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/agent_schema.json +0 -0
  200. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/app_setting.py +0 -0
  201. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/base.py +0 -0
  202. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/conversation.py +0 -0
  203. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/credit.py +0 -0
  204. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/db.py +0 -0
  205. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/db_mig.py +0 -0
  206. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/generator.py +0 -0
  207. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/llm.py +0 -0
  208. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/redis.py +0 -0
  209. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/skill.py +0 -0
  210. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/models/user.py +0 -0
  211. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/__init__.py +0 -0
  212. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/acolyt/__init__.py +0 -0
  213. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/acolyt/acolyt.jpg +0 -0
  214. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/acolyt/schema.json +0 -0
  215. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/aixbt/README.md +0 -0
  216. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/aixbt/aixbt.jpg +0 -0
  217. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/aixbt/base.py +0 -0
  218. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/aixbt/schema.json +0 -0
  219. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/allora/__init__.py +0 -0
  220. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/allora/allora.jpeg +0 -0
  221. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/allora/schema.json +0 -0
  222. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/carv/README.md +0 -0
  223. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/carv/__init__.py +0 -0
  224. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/carv/carv.webp +0 -0
  225. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/carv/schema.json +0 -0
  226. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cdp/__init__.py +0 -0
  227. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cdp/base.py +0 -0
  228. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cdp/cdp.png +0 -0
  229. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cdp/get_balance.py +0 -0
  230. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cdp/schema.json +0 -0
  231. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cdp/swap.py +0 -0
  232. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/chainlist/README.md +0 -0
  233. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/chainlist/__init__.py +0 -0
  234. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/chainlist/base.py +0 -0
  235. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/chainlist/chainlist.png +0 -0
  236. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/chainlist/schema.json +0 -0
  237. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/common/__init__.py +0 -0
  238. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/common/base.py +0 -0
  239. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/common/common.jpg +0 -0
  240. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/common/schema.json +0 -0
  241. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/README.md +0 -0
  242. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/__init__.py +0 -0
  243. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/constants.py +0 -0
  244. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/cookiefun.png +0 -0
  245. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cookiefun/schema.json +0 -0
  246. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/__init__.py +0 -0
  247. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/api.py +0 -0
  248. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/base.py +0 -0
  249. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/cryptocompare.png +0 -0
  250. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptocompare/schema.json +0 -0
  251. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptopanic/__init__.py +0 -0
  252. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptopanic/cryptopanic.png +0 -0
  253. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/cryptopanic/schema.json +0 -0
  254. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dapplooker/README.md +0 -0
  255. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dapplooker/__init__.py +0 -0
  256. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dapplooker/dapplooker.jpg +0 -0
  257. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dapplooker/schema.json +0 -0
  258. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/__init__.py +0 -0
  259. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/api.py +0 -0
  260. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/base.py +0 -0
  261. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/coins/__init__.py +0 -0
  262. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/config/__init__.py +0 -0
  263. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/config/chains.py +0 -0
  264. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/defillama.jpeg +0 -0
  265. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/fees/__init__.py +0 -0
  266. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/schema.json +0 -0
  267. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/stablecoins/__init__.py +0 -0
  268. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tests/__init__.py +0 -0
  269. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tests/api_integration.test.py +0 -0
  270. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tests/api_unit.test.py +0 -0
  271. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/tvl/__init__.py +0 -0
  272. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/volumes/__init__.py +0 -0
  273. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/defillama/yields/__init__.py +0 -0
  274. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dexscreener/__init__.py +0 -0
  275. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dexscreener/base.py +0 -0
  276. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dexscreener/dexscreener.png +0 -0
  277. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dexscreener/model/__init__.py +0 -0
  278. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dexscreener/model/search_token_response.py +0 -0
  279. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dexscreener/schema.json +0 -0
  280. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dexscreener/search_token.py +0 -0
  281. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dune_analytics/__init__.py +0 -0
  282. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dune_analytics/dune.png +0 -0
  283. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/dune_analytics/schema.json +0 -0
  284. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/elfa/README.md +0 -0
  285. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/elfa/__init__.py +0 -0
  286. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/elfa/elfa.jpg +0 -0
  287. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/elfa/schema.json +0 -0
  288. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/elfa/utils.py +0 -0
  289. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/README.md +0 -0
  290. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/__init__.py +0 -0
  291. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/abi/__init__.py +0 -0
  292. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/abi/approval.py +0 -0
  293. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/abi/erc20.py +0 -0
  294. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/abi/route.py +0 -0
  295. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/enso.jpg +0 -0
  296. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/enso/schema.json +0 -0
  297. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/firecrawl/README.md +0 -0
  298. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/firecrawl/__init__.py +0 -0
  299. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/firecrawl/firecrawl.png +0 -0
  300. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/firecrawl/schema.json +0 -0
  301. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/firecrawl/utils.py +0 -0
  302. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/github/README.md +0 -0
  303. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/github/__init__.py +0 -0
  304. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/github/base.py +0 -0
  305. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/github/github.jpg +0 -0
  306. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/github/schema.json +0 -0
  307. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/__init__.py +0 -0
  308. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/heurist.png +0 -0
  309. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/heurist/schema.json +0 -0
  310. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/http/README.md +0 -0
  311. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/http/__init__.py +0 -0
  312. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/http/base.py +0 -0
  313. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/http/http.svg +0 -0
  314. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/http/schema.json +0 -0
  315. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/lifi/README.md +0 -0
  316. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/lifi/__init__.py +0 -0
  317. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/lifi/base.py +0 -0
  318. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/lifi/lifi.png +0 -0
  319. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/lifi/schema.json +0 -0
  320. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/lifi/utils.py +0 -0
  321. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/README.md +0 -0
  322. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/__init__.py +0 -0
  323. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/api.py +0 -0
  324. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/fetch_chain_portfolio.py +0 -0
  325. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/fetch_nft_portfolio.py +0 -0
  326. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/fetch_solana_portfolio.py +0 -0
  327. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  328. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/moralis.png +0 -0
  329. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/schema.json +0 -0
  330. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/tests/__init__.py +0 -0
  331. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/moralis/tests/test_wallet.py +0 -0
  332. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/nation/__init__.py +0 -0
  333. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/nation/base.py +0 -0
  334. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/nation/nation.png +0 -0
  335. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/nation/schema.json +0 -0
  336. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/openai/__init__.py +0 -0
  337. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/openai/openai.png +0 -0
  338. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/openai/schema.json +0 -0
  339. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/README.md +0 -0
  340. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/__init__.py +0 -0
  341. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/constants.py +0 -0
  342. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/moralis.png +0 -0
  343. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/portfolio/schema.json +0 -0
  344. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/skills.toml +0 -0
  345. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/slack/__init__.py +0 -0
  346. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/slack/schema.json +0 -0
  347. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/slack/slack.jpg +0 -0
  348. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/__init__.py +0 -0
  349. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/base.py +0 -0
  350. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/schema.json +0 -0
  351. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/supabase/supabase.svg +0 -0
  352. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/__init__.py +0 -0
  353. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/base.py +0 -0
  354. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/schema.json +0 -0
  355. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/system/system.svg +0 -0
  356. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/tavily/README.md +0 -0
  357. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/tavily/__init__.py +0 -0
  358. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/tavily/schema.json +0 -0
  359. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/tavily/tavily.jpg +0 -0
  360. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/README.md +0 -0
  361. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/__init__.py +0 -0
  362. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/constants.py +0 -0
  363. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/moralis.png +0 -0
  364. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/token/schema.json +0 -0
  365. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/__init__.py +0 -0
  366. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/schema.json +0 -0
  367. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/twitter/twitter.png +0 -0
  368. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/unrealspeech/__init__.py +0 -0
  369. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/unrealspeech/schema.json +0 -0
  370. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/unrealspeech/unrealspeech.jpg +0 -0
  371. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_audio/__init__.py +0 -0
  372. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_audio/input.py +0 -0
  373. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_audio/schema.json +0 -0
  374. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_audio/venice_logo.jpg +0 -0
  375. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/README.md +0 -0
  376. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/__init__.py +0 -0
  377. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/api.py +0 -0
  378. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/config.py +0 -0
  379. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_enhance/README.md +0 -0
  380. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_enhance/__init__.py +0 -0
  381. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  382. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  383. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/README.md +0 -0
  384. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/__init__.py +0 -0
  385. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  386. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  387. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  388. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  389. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  390. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  391. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  392. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  393. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_upscale/README.md +0 -0
  394. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_upscale/__init__.py +0 -0
  395. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  396. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  397. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_vision/README.md +0 -0
  398. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_vision/__init__.py +0 -0
  399. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  400. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  401. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/schema.json +0 -0
  402. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/utils.py +0 -0
  403. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/venice_image/venice_image.jpg +0 -0
  404. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/web_scraper/README.md +0 -0
  405. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/web_scraper/__init__.py +0 -0
  406. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/web_scraper/base.py +0 -0
  407. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/web_scraper/langchain.png +0 -0
  408. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/web_scraper/schema.json +0 -0
  409. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/skills/web_scraper/utils.py +0 -0
  410. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/utils/__init__.py +0 -0
  411. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/utils/chain.py +0 -0
  412. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/utils/error.py +0 -0
  413. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/utils/logging.py +0 -0
  414. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/utils/random.py +0 -0
  415. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/utils/s3.py +0 -0
  416. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/utils/slack_alert.py +0 -0
  417. {intentkit-0.6.9.dev2 → intentkit-0.6.10.dev2}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.6.9.dev2
3
+ Version: 0.6.10.dev2
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
5
  Project-URL: Homepage, https://github.com/crestal-network/intentkit
6
6
  Project-URL: Repository, https://github.com/crestal-network/intentkit
@@ -64,8 +64,8 @@ Requires-Dist: langchain-xai>=0.2.1
64
64
  Requires-Dist: langchain<0.4.0,>=0.3.25
65
65
  Requires-Dist: langgraph-checkpoint-postgres<2.0.23,>=2.0.16
66
66
  Requires-Dist: langgraph-checkpoint>=2.0.18
67
- Requires-Dist: langgraph-prebuilt<0.6.0,>=0.5.1
68
- Requires-Dist: langgraph<0.6.0,>=0.5.1
67
+ Requires-Dist: langgraph-prebuilt<0.7.0,>=0.6.1
68
+ Requires-Dist: langgraph<0.7.0,>=0.6.1
69
69
  Requires-Dist: langmem>=0.0.27
70
70
  Requires-Dist: mypy-boto3-s3<2.0.0,>=1.37.24
71
71
  Requires-Dist: openai>=1.59.6
@@ -3,7 +3,7 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "0.6.9-dev2"
6
+ __version__ = "0.6.10-dev2"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -1,7 +1,11 @@
1
+ import asyncio
1
2
  from enum import Enum
2
- from typing import Any, Callable, Dict, NotRequired
3
+ from typing import Any, Dict, Literal, NotRequired, Optional
3
4
 
4
5
  from langgraph.prebuilt.chat_agent_executor import AgentState as BaseAgentState
6
+ from pydantic import BaseModel
7
+
8
+ from intentkit.models.agent import Agent
5
9
 
6
10
 
7
11
  class AgentError(str, Enum):
@@ -22,4 +26,15 @@ class AgentState(BaseAgentState):
22
26
  __extra__: NotRequired[Dict[str, Any]]
23
27
 
24
28
 
25
- MemoryManager = Callable[[AgentState], AgentState]
29
+ class AgentContext(BaseModel):
30
+ agent_id: str
31
+ chat_id: str
32
+ user_id: Optional[str] = None
33
+ app_id: Optional[str] = None
34
+ entrypoint: Literal["web", "twitter", "telegram", "trigger", "api"]
35
+ is_private: bool
36
+ payer: Optional[str] = None
37
+
38
+ @property
39
+ def agent(self) -> Agent:
40
+ return asyncio.run(Agent.get(self.agent_id))
@@ -27,15 +27,15 @@ from langchain_core.messages import (
27
27
  HumanMessage,
28
28
  )
29
29
  from langchain_core.prompts import ChatPromptTemplate
30
- from langchain_core.runnables import RunnableConfig
31
30
  from langchain_core.tools import BaseTool
32
31
  from langgraph.errors import GraphRecursionError
33
32
  from langgraph.graph.state import CompiledStateGraph
34
33
  from langgraph.prebuilt import create_react_agent
34
+ from langgraph.runtime import Runtime
35
35
  from sqlalchemy import func, update
36
36
  from sqlalchemy.exc import SQLAlchemyError
37
37
 
38
- from intentkit.abstracts.graph import AgentError, AgentState
38
+ from intentkit.abstracts.graph import AgentContext, AgentError, AgentState
39
39
  from intentkit.config.config import config
40
40
  from intentkit.core.credit import expense_message, expense_skill
41
41
  from intentkit.core.node import PreModelNode, post_model_node
@@ -201,11 +201,13 @@ async def create_agent(
201
201
  prompt_temp = ChatPromptTemplate.from_messages(prompt_array)
202
202
 
203
203
  async def formatted_prompt(
204
- state: AgentState, config: RunnableConfig
204
+ state: AgentState, runtime: Runtime[AgentContext]
205
205
  ) -> list[BaseMessage]:
206
206
  final_system_prompt = escaped_prompt
207
- if config.get("configurable") and config["configurable"].get("entrypoint"):
208
- entrypoint = config["configurable"]["entrypoint"]
207
+ context = runtime.context
208
+ logger.debug(f"formatted_prompt, context: {context}")
209
+ if context.entrypoint:
210
+ entrypoint = context.entrypoint
209
211
  entrypoint_prompt = None
210
212
  if (
211
213
  agent.twitter_entrypoint_enabled
@@ -222,11 +224,7 @@ async def create_agent(
222
224
  entrypoint_prompt = agent.telegram_entrypoint_prompt
223
225
  logger.debug("telegram entrypoint prompt added")
224
226
  elif entrypoint == AuthorType.TRIGGER.value:
225
- task_id = (
226
- config["configurable"]
227
- .get("chat_id", "")
228
- .removeprefix("autonomous-")
229
- )
227
+ task_id = context.chat_id.removeprefix("autonomous-")
230
228
  # Find the autonomous task by task_id
231
229
  autonomous_task = None
232
230
  if agent.autonomous:
@@ -263,20 +261,15 @@ async def create_agent(
263
261
  if entrypoint_prompt:
264
262
  entrypoint_prompt = await explain_prompt(entrypoint_prompt)
265
263
  final_system_prompt = f"{final_system_prompt}## Entrypoint rules\n\n{entrypoint_prompt}\n\n"
266
- if config.get("configurable"):
267
- final_system_prompt = f"{final_system_prompt}## Internal Info\n\n"
268
- "These are for your internal use. You can use them when querying or storing data, "
269
- "but please do not directly share this information with users.\n\n"
270
- chat_id = config["configurable"].get("chat_id")
271
- if chat_id:
272
- final_system_prompt = f"{final_system_prompt}chat_id: {chat_id}\n\n"
273
- user_id = config["configurable"].get("user_id")
274
- if user_id:
275
- final_system_prompt = f"{final_system_prompt}user_id: {user_id}\n\n"
264
+ final_system_prompt = f"{final_system_prompt}## Internal Info\n\n"
265
+ "These are for your internal use. You can use them when querying or storing data, "
266
+ "but please do not directly share this information with users.\n\n"
267
+ final_system_prompt = f"{final_system_prompt}chat_id: {context.chat_id}\n\n"
268
+ if context.user_id:
269
+ final_system_prompt = f"{final_system_prompt}user_id: {context.user_id}\n\n"
276
270
  system_prompt = [("system", final_system_prompt)]
277
271
  return prompt_temp.invoke(
278
- {"messages": state["messages"], "system_prompt": system_prompt},
279
- config,
272
+ {"messages": state["messages"], "system_prompt": system_prompt}
280
273
  )
281
274
 
282
275
  # log final prompt and all skills
@@ -304,6 +297,7 @@ async def create_agent(
304
297
  pre_model_hook=pre_model_hook,
305
298
  post_model_hook=post_model_node if config.payment_enabled else None,
306
299
  state_schema=AgentState,
300
+ context_schema=AgentContext,
307
301
  checkpointer=memory,
308
302
  debug=config.debug_checkpoint,
309
303
  name=agent.id,
@@ -585,22 +579,27 @@ async def stream_agent(message: ChatMessageCreate):
585
579
  thread_id = f"{input.agent_id}-{input.chat_id}"
586
580
  stream_config = {
587
581
  "configurable": {
588
- "agent_id": agent.id,
589
582
  "thread_id": thread_id,
590
- "chat_id": input.chat_id,
591
- "user_id": input.user_id,
592
- "app_id": input.app_id,
593
- "entrypoint": input.author_type,
594
- "is_private": is_private,
595
- "payer": payer if payment_enabled else None,
596
583
  },
597
584
  "recursion_limit": recursion_limit,
598
585
  }
599
586
 
587
+ context = AgentContext(
588
+ agent_id=input.agent_id,
589
+ chat_id=input.chat_id,
590
+ user_id=input.user_id,
591
+ app_id=input.app_id,
592
+ entrypoint=input.author_type,
593
+ is_private=is_private,
594
+ payer=payer if payment_enabled else None,
595
+ )
596
+
600
597
  # run
601
598
  cached_tool_step = None
602
599
  try:
603
- async for chunk in executor.astream({"messages": messages}, stream_config):
600
+ async for chunk in executor.astream(
601
+ {"messages": messages}, context=context, config=stream_config
602
+ ):
604
603
  this_time = time.perf_counter()
605
604
  logger.debug(f"stream chunk: {chunk}", extra={"thread_id": thread_id})
606
605
  if "agent" in chunk and "messages" in chunk["agent"]:
@@ -728,6 +727,26 @@ async def stream_agent(message: ChatMessageCreate):
728
727
  skill_call["response"] = textwrap.shorten(
729
728
  str(msg.content), width=1000, placeholder="..."
730
729
  )
730
+ if msg.artifact:
731
+ artifact_message_create = ChatMessageCreate(
732
+ id=str(XID()),
733
+ agent_id=input.agent_id,
734
+ chat_id=input.chat_id,
735
+ user_id=input.user_id,
736
+ author_id=input.agent_id,
737
+ author_type=AuthorType.SKILL,
738
+ model=agent.model,
739
+ thread_type=input.author_type,
740
+ reply_to=input.id,
741
+ message="",
742
+ attachments=msg.artifact,
743
+ time_cost=this_time - last,
744
+ )
745
+ artifact_message = (
746
+ await artifact_message_create.save()
747
+ )
748
+ yield artifact_message
749
+ last = this_time
731
750
  skill_calls.append(skill_call)
732
751
  break
733
752
  skill_message_create = ChatMessageCreate(
@@ -11,8 +11,8 @@ from langchain_core.messages import (
11
11
  ToolMessage,
12
12
  )
13
13
  from langchain_core.messages.utils import count_tokens_approximately, trim_messages
14
- from langchain_core.runnables import RunnableConfig
15
14
  from langgraph.graph.message import REMOVE_ALL_MESSAGES
15
+ from langgraph.runtime import get_runtime
16
16
  from langgraph.utils.runnable import RunnableCallable
17
17
  from langmem.short_term.summarization import (
18
18
  DEFAULT_EXISTING_SUMMARY_PROMPT,
@@ -21,9 +21,8 @@ from langmem.short_term.summarization import (
21
21
  SummarizationResult,
22
22
  asummarize_messages,
23
23
  )
24
- from pydantic import BaseModel
25
24
 
26
- from intentkit.abstracts.graph import AgentError, AgentState
25
+ from intentkit.abstracts.graph import AgentContext, AgentError, AgentState
27
26
  from intentkit.core.credit import skill_cost
28
27
  from intentkit.models.agent import Agent
29
28
  from intentkit.models.credit import CreditAccount, OwnerType
@@ -108,11 +107,7 @@ class PreModelNode(RunnableCallable):
108
107
  def _func(self, AgentState) -> dict[str, Any]:
109
108
  raise NotImplementedError("Not implemented yet")
110
109
 
111
- async def _afunc(
112
- self,
113
- input: AgentState,
114
- config: RunnableConfig,
115
- ) -> dict[str, Any]:
110
+ async def _afunc(self, input: AgentState) -> dict[str, Any]:
116
111
  messages, context = self._parse_input(input)
117
112
  try:
118
113
  _validate_chat_history(messages)
@@ -180,28 +175,23 @@ class PostModelNode(RunnableCallable):
180
175
  super().__init__(self._func, self._afunc, name="post_model_node", trace=False)
181
176
  self.func_accepts_config = True
182
177
 
183
- def _func(self, input: dict[str, Any] | BaseModel) -> dict[str, Any]:
178
+ def _func(self, input: AgentState) -> dict[str, Any]:
184
179
  raise NotImplementedError("Not implemented yet")
185
180
 
186
- async def _afunc(
187
- self,
188
- input: AgentState,
189
- config: RunnableConfig,
190
- ) -> dict[str, Any]:
191
- logger.debug(f"Running PostModelNode, input: {input}, config: {config}")
181
+ async def _afunc(self, input: AgentState) -> dict[str, Any]:
182
+ runtime = get_runtime(AgentContext)
183
+ context = runtime.context
184
+ logger.debug(f"Running PostModelNode, input: {input}, context: {context}")
192
185
  state_update = {}
193
186
  messages = input.get("messages")
194
187
  if messages is None or not isinstance(messages, list) or len(messages) == 0:
195
188
  raise ValueError("Missing required field `messages` in the input.")
196
- cfg = config.get("configurable")
197
- if not config:
198
- raise ValueError("Missing required field `configurable` in the config.")
199
- payer = cfg.get("payer")
189
+ payer = context.payer
200
190
  if not payer:
201
191
  return state_update
202
192
  logger.debug(f"last: {messages[-1]}")
203
193
  msg = messages[-1]
204
- agent_id = cfg.get("agent_id")
194
+ agent_id = context.agent_id
205
195
  agent = await Agent.get(agent_id)
206
196
  account = await CreditAccount.get_or_create(OwnerType.USER, payer)
207
197
  if hasattr(msg, "tool_calls") and msg.tool_calls:
@@ -1285,6 +1285,9 @@ class Agent(AgentCreate):
1285
1285
  return None
1286
1286
  return cls.model_validate(item)
1287
1287
 
1288
+ def skill_config(self, category: str) -> Dict[str, Any]:
1289
+ return self.skills.get(category, {}) if self.skills else {}
1290
+
1288
1291
 
1289
1292
  class AgentResponse(BaseModel):
1290
1293
  """Response model for Agent API."""
@@ -31,6 +31,7 @@ class ChatMessageAttachmentType(str, Enum):
31
31
  LINK = "link"
32
32
  IMAGE = "image"
33
33
  FILE = "file"
34
+ XMTP = "xmtp"
34
35
 
35
36
 
36
37
  class AuthorType(str, Enum):
@@ -61,13 +62,20 @@ class ChatMessageAttachment(TypedDict):
61
62
  ),
62
63
  ]
63
64
  url: Annotated[
64
- str,
65
+ Optional[str],
65
66
  Field(
66
67
  ...,
67
68
  description="URL of the attachment",
68
69
  examples=["https://example.com/image.jpg"],
69
70
  ),
70
71
  ]
72
+ json: Annotated[
73
+ Optional[dict],
74
+ Field(
75
+ None,
76
+ description="JSON data of the attachment",
77
+ ),
78
+ ]
71
79
 
72
80
 
73
81
  class ChatMessageSkillCall(TypedDict):
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.6.9-dev2"
3
+ version = "0.6.10-dev2"
4
4
  description = "Intent-based AI Agent Platform - Core Package"
5
5
  authors = [{ name = "hyacinthus", email = "hyacinthus@gmail.com" }]
6
6
  requires-python = ">=3.12"
@@ -33,10 +33,10 @@ dependencies = [
33
33
  "langchain-openai>=0.3.8",
34
34
  "langchain-text-splitters>=0.3.8",
35
35
  "langchain-xai>=0.2.1",
36
- "langgraph (>=0.5.1,<0.6.0)",
36
+ "langgraph (>=0.6.1,<0.7.0)",
37
37
  "langgraph-checkpoint>=2.0.18",
38
38
  "langgraph-checkpoint-postgres>=2.0.16,<2.0.23",
39
- "langgraph-prebuilt (>=0.5.1,<0.6.0)",
39
+ "langgraph-prebuilt (>=0.6.1,<0.7.0)",
40
40
  "langmem>=0.0.27",
41
41
  "mypy-boto3-s3>=1.37.24,<2.0.0",
42
42
  "openai>=1.59.6",
@@ -2,7 +2,6 @@ import logging
2
2
  from typing import Dict, Literal, Type
3
3
 
4
4
  import httpx
5
- from langchain_core.runnables import RunnableConfig
6
5
  from pydantic import BaseModel, Field
7
6
 
8
7
  from intentkit.skills.acolyt.base import AcolytBaseTool
@@ -67,12 +66,11 @@ class AcolytAskGpt(AcolytBaseTool):
67
66
  """
68
67
  args_schema: Type[BaseModel] = AcolytAskGptInput
69
68
 
70
- async def _arun(self, question: str, config: RunnableConfig, **kwargs) -> Dict:
69
+ async def _arun(self, question: str, **kwargs) -> Dict:
71
70
  """Run the tool to get answer from Acolyt GPT.
72
71
 
73
72
  Args:
74
73
  question (str): The question body from user.
75
- config (RunnableConfig): The configuration for the runnable, containing agent context.
76
74
 
77
75
  Returns:
78
76
  Dict: The response from the API with message content.
@@ -80,8 +78,7 @@ class AcolytAskGpt(AcolytBaseTool):
80
78
  Raises:
81
79
  Exception: If there's an error accessing the Acolyt API.
82
80
  """
83
- context = self.context_from_config(config)
84
- api_key = self.get_api_key(context)
81
+ api_key = self.get_api_key()
85
82
  if not api_key:
86
83
  raise ValueError("Acolyt API key not found")
87
84
 
@@ -0,0 +1,38 @@
1
+ from typing import Type
2
+
3
+ from langchain.tools.base import ToolException
4
+ from pydantic import BaseModel, Field
5
+
6
+ from intentkit.abstracts.skill import SkillStoreABC
7
+ from intentkit.skills.base import IntentKitSkill
8
+
9
+ base_url = "https://acolyt-oracle-poc.vercel.app"
10
+
11
+
12
+ class AcolytBaseTool(IntentKitSkill):
13
+ """Base class for Acolyt tools."""
14
+
15
+ name: str = Field(description="The name of the tool")
16
+ description: str = Field(description="A description of what the tool does")
17
+ args_schema: Type[BaseModel]
18
+ skill_store: SkillStoreABC = Field(
19
+ description="The skill store for persisting data"
20
+ )
21
+
22
+ def get_api_key(self) -> str:
23
+ context = self.get_context()
24
+ skill_config = context.agent.skill_config(self.category)
25
+ api_key_provider = skill_config.get("api_key_provider")
26
+ if api_key_provider == "platform":
27
+ return self.skill_store.get_system_config("acolyt_api_key")
28
+ # for backward compatibility, may only have api_key in skill_config
29
+ elif skill_config.get("api_key"):
30
+ return skill_config.get("api_key")
31
+ else:
32
+ raise ToolException(
33
+ f"Invalid API key provider: {api_key_provider}, or no api_key in config"
34
+ )
35
+
36
+ @property
37
+ def category(self) -> str:
38
+ return "acolyt"
@@ -48,7 +48,6 @@ async def get_skills(
48
48
  get_aixbt_skill(
49
49
  name=name,
50
50
  store=store,
51
- api_key=config.get("api_key", ""),
52
51
  )
53
52
  for name in available_skills
54
53
  ]
@@ -57,17 +56,14 @@ async def get_skills(
57
56
  def get_aixbt_skill(
58
57
  name: str,
59
58
  store: SkillStoreABC,
60
- api_key: str = "",
61
59
  ) -> AIXBTBaseTool:
62
60
  """Get an AIXBT API skill by name."""
63
- cache_key = f"{name}:{api_key}"
64
61
 
65
62
  if name == "aixbt_projects":
66
- if cache_key not in _cache:
67
- _cache[cache_key] = AIXBTProjects(
63
+ if name not in _cache:
64
+ _cache[name] = AIXBTProjects(
68
65
  skill_store=store,
69
- api_key=api_key,
70
66
  )
71
- return _cache[cache_key]
67
+ return _cache[name]
72
68
  else:
73
69
  raise ValueError(f"Unknown AIXBT skill: {name}")
@@ -1,9 +1,8 @@
1
1
  import logging
2
- import os
3
2
  from typing import Any, Dict, Optional, Type
4
3
 
5
4
  import httpx
6
- from langchain_core.runnables import RunnableConfig
5
+ from langchain_core.tools import ToolException
7
6
  from pydantic import BaseModel, Field
8
7
 
9
8
  from intentkit.skills.aixbt.base import AIXBTBaseTool
@@ -55,11 +54,9 @@ class AIXBTProjects(AIXBTBaseTool):
55
54
  "for accessing AIXBT's specific dataset for crypto research."
56
55
  )
57
56
  args_schema: Type[BaseModel] = ProjectsInput
58
- api_key: str = ""
59
57
 
60
58
  async def _arun(
61
59
  self,
62
- config: RunnableConfig,
63
60
  limit: int = 10,
64
61
  name: Optional[str] = None,
65
62
  ticker: Optional[str] = None,
@@ -83,34 +80,27 @@ class AIXBTProjects(AIXBTBaseTool):
83
80
  JSON response with project data
84
81
  """
85
82
  # Get context from the config
86
- context = self.context_from_config(config)
83
+ context = self.get_context()
84
+ skill_config = context.agent.skill_config(self.category)
87
85
  logger.debug(f"aixbt_projects.py: Running search with context {context}")
88
86
 
89
87
  # Check for rate limiting if configured
90
- if context.config.get("rate_limit_number") and context.config.get(
88
+ if skill_config.get("rate_limit_number") and skill_config.get(
91
89
  "rate_limit_minutes"
92
90
  ):
93
91
  await self.user_rate_limit_by_category(
94
92
  context.user_id,
95
- context.config["rate_limit_number"],
96
- context.config["rate_limit_minutes"],
93
+ skill_config["rate_limit_number"],
94
+ skill_config["rate_limit_minutes"],
97
95
  )
98
96
 
99
97
  # Get the API key from the agent's configuration
100
- api_key = context.config.get("api_key")
98
+ api_key = skill_config.get("api_key")
101
99
 
102
- # If not available in config, try the instance attribute (for backward compatibility)
103
100
  if not api_key:
104
- api_key = self.api_key
105
-
106
- # If still not available, try environment variable as last resort
107
- if not api_key:
108
- api_key = os.environ.get("AIXBT_API_KEY")
109
-
110
- if not api_key:
111
- return {
112
- "error": "AIXBT API key is not available. Please provide it in the agent configuration."
113
- }
101
+ raise ToolException(
102
+ "AIXBT API key is not available. Please provide it in the agent configuration."
103
+ )
114
104
 
115
105
  base_url = "https://api.aixbt.tech/v1/projects"
116
106
 
@@ -134,20 +124,6 @@ class AIXBTProjects(AIXBTBaseTool):
134
124
  response = await client.get(base_url, params=params, headers=headers)
135
125
  response.raise_for_status()
136
126
  return response.json()
137
- except httpx.HTTPStatusError as e:
138
- logger.error(
139
- f"aixbt_projects.py: HTTP error occurred: {e.response.status_code} - {e.response.text}"
140
- )
141
- return {
142
- "error": f"HTTP error occurred: {e.response.status_code}",
143
- "details": e.response.text,
144
- }
145
- except httpx.RequestError as e:
146
- logger.error(f"aixbt_projects.py: Request error occurred: {str(e)}")
147
- return {"error": f"Request error occurred: {str(e)}"}
148
127
  except Exception as e:
149
- logger.error(
150
- f"aixbt_projects.py: An unexpected error occurred: {str(e)}",
151
- exc_info=True,
152
- )
153
- return {"error": f"An unexpected error occurred: {str(e)}"}
128
+ logger.error(f"Error getting projects: {str(e)}")
129
+ raise type(e)(f"[agent:{context.agent_id}]: {e}") from e
@@ -0,0 +1,38 @@
1
+ from typing import Type
2
+
3
+ from langchain.tools.base import ToolException
4
+ from pydantic import BaseModel, Field
5
+
6
+ from intentkit.abstracts.skill import SkillStoreABC
7
+ from intentkit.skills.base import IntentKitSkill
8
+
9
+ base_url = "https://api.upshot.xyz/v2/allora"
10
+
11
+
12
+ class AlloraBaseTool(IntentKitSkill):
13
+ """Base class for Allora tools."""
14
+
15
+ name: str = Field(description="The name of the tool")
16
+ description: str = Field(description="A description of what the tool does")
17
+ args_schema: Type[BaseModel]
18
+ skill_store: SkillStoreABC = Field(
19
+ description="The skill store for persisting data"
20
+ )
21
+
22
+ def get_api_key(self) -> str:
23
+ context = self.get_context()
24
+ skill_config = context.agent.skill_config(self.category)
25
+ api_key_provider = skill_config.get("api_key_provider")
26
+ if api_key_provider == "platform":
27
+ return self.skill_store.get_system_config("allora_api_key")
28
+ # for backward compatibility, may only have api_key in skill_config
29
+ elif skill_config.get("api_key"):
30
+ return skill_config.get("api_key")
31
+ else:
32
+ raise ToolException(
33
+ f"Invalid API key provider: {api_key_provider}, or no api_key in config"
34
+ )
35
+
36
+ @property
37
+ def category(self) -> str:
38
+ return "allora"
@@ -2,7 +2,6 @@ from typing import Literal, Type
2
2
 
3
3
  import httpx
4
4
  from langchain.tools.base import ToolException
5
- from langchain_core.runnables import RunnableConfig
6
5
  from pydantic import BaseModel, Field
7
6
 
8
7
  from intentkit.skills.allora.base import AlloraBaseTool
@@ -84,7 +83,7 @@ class AlloraGetPrice(AlloraBaseTool):
84
83
  raise NotImplementedError("Use _arun instead")
85
84
 
86
85
  async def _arun(
87
- self, token: str, time_frame: str, config: RunnableConfig, **kwargs
86
+ self, token: str, time_frame: str, **kwargs
88
87
  ) -> AlloraGetPriceOutput:
89
88
  """Run the tool to get the token price prediction from Allora API.
90
89
  Args:
@@ -98,8 +97,7 @@ class AlloraGetPrice(AlloraBaseTool):
98
97
  Raises:
99
98
  Exception: If there's an error accessing the Allora API.
100
99
  """
101
- context = self.context_from_config(config)
102
- api_key = self.get_api_key(context)
100
+ api_key = self.get_api_key()
103
101
  if not api_key:
104
102
  raise ValueError("Allora API key not found")
105
103
 
@@ -5,6 +5,7 @@ from typing import Any, Callable, Dict, Literal, NotRequired, Optional, TypedDic
5
5
  from langchain_core.runnables import RunnableConfig
6
6
  from langchain_core.tools import BaseTool
7
7
  from langchain_core.tools.base import ToolException
8
+ from langgraph.runtime import get_runtime
8
9
  from pydantic import (
9
10
  BaseModel,
10
11
  ValidationError,
@@ -13,12 +14,14 @@ from pydantic.v1 import ValidationError as ValidationErrorV1
13
14
  from redis.exceptions import RedisError
14
15
 
15
16
  from intentkit.abstracts.exception import RateLimitExceeded
17
+ from intentkit.abstracts.graph import AgentContext
16
18
  from intentkit.abstracts.skill import SkillStoreABC
17
19
  from intentkit.models.agent import Agent
18
20
  from intentkit.models.redis import get_redis
19
21
 
20
22
  SkillState = Literal["disabled", "public", "private"]
21
23
  SkillOwnerState = Literal["disabled", "private"]
24
+ APIKeyProviderValue = Literal["platform", "agent_owner"]
22
25
 
23
26
 
24
27
  class SkillConfig(TypedDict):
@@ -26,7 +29,7 @@ class SkillConfig(TypedDict):
26
29
 
27
30
  enabled: bool
28
31
  states: Dict[str, SkillState | SkillOwnerState]
29
- api_key_provider: NotRequired[str]
32
+ api_key_provider: NotRequired[APIKeyProviderValue]
30
33
  __extra__: NotRequired[Dict[str, Any]]
31
34
 
32
35
 
@@ -192,3 +195,7 @@ class IntentKitSkill(BaseTool):
192
195
  entrypoint=configurable.get("entrypoint"),
193
196
  is_private=configurable.get("is_private"),
194
197
  )
198
+
199
+ def get_context(self) -> AgentContext:
200
+ runtime = get_runtime(AgentContext)
201
+ return runtime.context