intentkit 0.6.0.dev13__tar.gz → 0.6.0.dev14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of intentkit might be problematic. Click here for more details.

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