intentkit 0.6.0.dev12__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.dev12 → intentkit-0.6.0.dev14}/PKG-INFO +1 -1
  2. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/__init__.py +1 -1
  3. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/abstracts/skill.py +12 -0
  4. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/core/engine.py +2 -1
  5. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/core/node.py +3 -1
  6. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/core/skill.py +11 -0
  7. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/skill.py +19 -0
  8. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/pyproject.toml +1 -1
  9. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/base.py +37 -17
  10. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_news.py +2 -2
  11. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_price.py +2 -2
  12. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_top_exchanges.py +2 -2
  13. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_top_market_cap.py +2 -2
  14. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_top_volume.py +2 -2
  15. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/fetch_trading_signals.py +2 -2
  16. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/base.py +3 -3
  17. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/base.py +2 -2
  18. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/networks.py +1 -1
  19. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/route.py +1 -1
  20. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/tokens.py +1 -1
  21. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/firecrawl/README.md +35 -2
  22. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/firecrawl/__init__.py +8 -0
  23. intentkit-0.6.0.dev14/skills/firecrawl/clear.py +87 -0
  24. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/firecrawl/crawl.py +2 -10
  25. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/firecrawl/query.py +4 -4
  26. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/firecrawl/schema.json +16 -0
  27. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/firecrawl/scrape.py +2 -8
  28. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/firecrawl/utils.py +63 -44
  29. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_animagine_xl.py +1 -1
  30. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_arthemy_comics.py +1 -1
  31. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_arthemy_real.py +1 -1
  32. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_braindance.py +1 -1
  33. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_cyber_realistic_xl.py +1 -1
  34. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_flux_1_dev.py +1 -1
  35. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/image_generation_sdxl.py +1 -1
  36. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/lifi/token_execute.py +1 -1
  37. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/openai/dalle_image_generation.py +1 -1
  38. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/openai/gpt_image_generation.py +1 -1
  39. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/openai/gpt_image_to_image.py +1 -1
  40. intentkit-0.6.0.dev14/skills/supabase/__init__.py +116 -0
  41. intentkit-0.6.0.dev14/skills/supabase/base.py +72 -0
  42. intentkit-0.6.0.dev14/skills/supabase/delete_data.py +102 -0
  43. intentkit-0.6.0.dev14/skills/supabase/fetch_data.py +120 -0
  44. intentkit-0.6.0.dev14/skills/supabase/insert_data.py +70 -0
  45. intentkit-0.6.0.dev14/skills/supabase/invoke_function.py +74 -0
  46. intentkit-0.6.0.dev14/skills/supabase/schema.json +168 -0
  47. intentkit-0.6.0.dev14/skills/supabase/supabase.svg +15 -0
  48. intentkit-0.6.0.dev14/skills/supabase/update_data.py +105 -0
  49. intentkit-0.6.0.dev14/skills/supabase/upsert_data.py +77 -0
  50. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/system/read_agent_api_key.py +1 -1
  51. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/system/regenerate_agent_api_key.py +1 -1
  52. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/base.py +1 -39
  53. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/follow_user.py +3 -3
  54. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/get_mentions.py +6 -6
  55. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/get_timeline.py +5 -5
  56. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/get_user_by_username.py +3 -3
  57. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/get_user_tweets.py +5 -5
  58. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/like_tweet.py +3 -3
  59. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/post_tweet.py +4 -4
  60. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/reply_tweet.py +4 -4
  61. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/retweet.py +3 -3
  62. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/search_tweets.py +5 -5
  63. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/unrealspeech/text_to_speech.py +1 -1
  64. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/web_scraper/document_indexer.py +2 -2
  65. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/web_scraper/scrape_and_index.py +8 -8
  66. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/web_scraper/website_indexer.py +4 -4
  67. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/.gitignore +0 -0
  68. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/LICENSE +0 -0
  69. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/MANIFEST.in +0 -0
  70. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/README.md +0 -0
  71. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/abstracts/__init__.py +0 -0
  72. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/abstracts/agent.py +0 -0
  73. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/abstracts/api.py +0 -0
  74. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/abstracts/engine.py +0 -0
  75. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/abstracts/exception.py +0 -0
  76. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/abstracts/graph.py +0 -0
  77. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/abstracts/twitter.py +0 -0
  78. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/clients/__init__.py +0 -0
  79. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/clients/cdp.py +0 -0
  80. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/clients/twitter.py +0 -0
  81. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/config/__init__.py +0 -0
  82. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/config/config.py +0 -0
  83. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/core/__init__.py +0 -0
  84. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/core/agent.py +0 -0
  85. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/core/api.py +0 -0
  86. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/core/client.py +0 -0
  87. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/core/credit.py +0 -0
  88. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/core/prompt.py +0 -0
  89. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/agent.py +0 -0
  90. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/agent_data.py +0 -0
  91. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/agent_schema.json +0 -0
  92. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/app_setting.py +0 -0
  93. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/base.py +0 -0
  94. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/chat.py +0 -0
  95. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/conversation.py +0 -0
  96. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/credit.py +0 -0
  97. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/db.py +0 -0
  98. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/db_mig.py +0 -0
  99. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/generator.py +0 -0
  100. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/llm.py +0 -0
  101. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/redis.py +0 -0
  102. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/models/user.py +0 -0
  103. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/__init__.py +0 -0
  104. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/acolyt/__init__.py +0 -0
  105. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/acolyt/acolyt.jpg +0 -0
  106. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/acolyt/ask.py +0 -0
  107. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/acolyt/base.py +0 -0
  108. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/acolyt/schema.json +0 -0
  109. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/aixbt/README.md +0 -0
  110. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/aixbt/__init__.py +0 -0
  111. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/aixbt/aixbt.jpg +0 -0
  112. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/aixbt/base.py +0 -0
  113. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/aixbt/projects.py +0 -0
  114. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/aixbt/schema.json +0 -0
  115. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/allora/__init__.py +0 -0
  116. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/allora/allora.jpeg +0 -0
  117. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/allora/base.py +0 -0
  118. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/allora/price.py +0 -0
  119. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/allora/schema.json +0 -0
  120. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/carv/README.md +0 -0
  121. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/carv/__init__.py +0 -0
  122. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/carv/base.py +0 -0
  123. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/carv/carv.webp +0 -0
  124. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/carv/fetch_news.py +0 -0
  125. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/carv/onchain_query.py +0 -0
  126. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/carv/schema.json +0 -0
  127. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/carv/token_info_and_price.py +0 -0
  128. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cdp/__init__.py +0 -0
  129. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cdp/base.py +0 -0
  130. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cdp/cdp.png +0 -0
  131. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cdp/get_balance.py +0 -0
  132. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cdp/schema.json +0 -0
  133. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/chainlist/README.md +0 -0
  134. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/chainlist/__init__.py +0 -0
  135. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/chainlist/base.py +0 -0
  136. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/chainlist/chain_lookup.py +0 -0
  137. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/chainlist/chainlist.png +0 -0
  138. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/chainlist/schema.json +0 -0
  139. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/common/__init__.py +0 -0
  140. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/common/base.py +0 -0
  141. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/common/common.jpg +0 -0
  142. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/common/current_time.py +0 -0
  143. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/common/schema.json +0 -0
  144. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/README.md +0 -0
  145. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/__init__.py +0 -0
  146. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/base.py +0 -0
  147. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/constants.py +0 -0
  148. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/cookiefun.png +0 -0
  149. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/get_account_details.py +0 -0
  150. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/get_account_feed.py +0 -0
  151. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/get_account_smart_followers.py +0 -0
  152. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/get_sectors.py +0 -0
  153. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/schema.json +0 -0
  154. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cookiefun/search_accounts.py +0 -0
  155. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/__init__.py +0 -0
  156. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/api.py +0 -0
  157. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/base.py +0 -0
  158. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/cryptocompare.png +0 -0
  159. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptocompare/schema.json +0 -0
  160. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptopanic/__init__.py +0 -0
  161. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptopanic/base.py +0 -0
  162. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptopanic/cryptopanic.png +0 -0
  163. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  164. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  165. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/cryptopanic/schema.json +0 -0
  166. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dapplooker/README.md +0 -0
  167. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dapplooker/__init__.py +0 -0
  168. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dapplooker/base.py +0 -0
  169. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dapplooker/dapplooker.jpg +0 -0
  170. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dapplooker/dapplooker_token_data.py +0 -0
  171. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dapplooker/schema.json +0 -0
  172. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/__init__.py +0 -0
  173. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/api.py +0 -0
  174. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/coins/__init__.py +0 -0
  175. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  176. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_block.py +0 -0
  177. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_current_prices.py +0 -0
  178. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_first_price.py +0 -0
  179. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  180. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_price_chart.py +0 -0
  181. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  182. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/config/__init__.py +0 -0
  183. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/config/chains.py +0 -0
  184. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/defillama.jpeg +0 -0
  185. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/fees/__init__.py +0 -0
  186. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  187. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/schema.json +0 -0
  188. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/__init__.py +0 -0
  189. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  190. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  191. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  192. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  193. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tests/__init__.py +0 -0
  194. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tests/api_integration.test.py +0 -0
  195. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tests/api_unit.test.py +0 -0
  196. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tvl/__init__.py +0 -0
  197. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  198. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_chains.py +0 -0
  199. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  200. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_protocol.py +0 -0
  201. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  202. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/tvl/fetch_protocols.py +0 -0
  203. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/volumes/__init__.py +0 -0
  204. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  205. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  206. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  207. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/yields/__init__.py +0 -0
  208. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  209. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/defillama/yields/fetch_pools.py +0 -0
  210. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dexscreener/__init__.py +0 -0
  211. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dexscreener/base.py +0 -0
  212. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dexscreener/dexscreener.png +0 -0
  213. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dexscreener/model/__init__.py +0 -0
  214. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dexscreener/model/search_token_response.py +0 -0
  215. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dexscreener/schema.json +0 -0
  216. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dexscreener/search_token.py +0 -0
  217. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dune_analytics/__init__.py +0 -0
  218. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dune_analytics/base.py +0 -0
  219. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dune_analytics/dune.png +0 -0
  220. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  221. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  222. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/dune_analytics/schema.json +0 -0
  223. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/elfa/README.md +0 -0
  224. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/elfa/__init__.py +0 -0
  225. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/elfa/base.py +0 -0
  226. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/elfa/elfa.jpg +0 -0
  227. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/elfa/mention.py +0 -0
  228. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/elfa/schema.json +0 -0
  229. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/elfa/stats.py +0 -0
  230. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/elfa/tokens.py +0 -0
  231. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/README.md +0 -0
  232. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/__init__.py +0 -0
  233. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/abi/__init__.py +0 -0
  234. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/abi/approval.py +0 -0
  235. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/abi/erc20.py +0 -0
  236. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/abi/route.py +0 -0
  237. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/best_yield.py +0 -0
  238. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/enso.jpg +0 -0
  239. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/prices.py +0 -0
  240. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/schema.json +0 -0
  241. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/enso/wallet.py +0 -0
  242. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/firecrawl/base.py +0 -0
  243. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/firecrawl/firecrawl.png +0 -0
  244. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/github/README.md +0 -0
  245. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/github/__init__.py +0 -0
  246. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/github/base.py +0 -0
  247. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/github/github.jpg +0 -0
  248. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/github/github_search.py +0 -0
  249. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/github/schema.json +0 -0
  250. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/__init__.py +0 -0
  251. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/base.py +0 -0
  252. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/heurist.png +0 -0
  253. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/heurist/schema.json +0 -0
  254. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/lifi/README.md +0 -0
  255. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/lifi/__init__.py +0 -0
  256. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/lifi/base.py +0 -0
  257. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/lifi/lifi.png +0 -0
  258. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/lifi/schema.json +0 -0
  259. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/lifi/token_quote.py +0 -0
  260. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/lifi/utils.py +0 -0
  261. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/README.md +0 -0
  262. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/__init__.py +0 -0
  263. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/api.py +0 -0
  264. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/base.py +0 -0
  265. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/fetch_chain_portfolio.py +0 -0
  266. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/fetch_nft_portfolio.py +0 -0
  267. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/fetch_solana_portfolio.py +0 -0
  268. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  269. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/moralis.png +0 -0
  270. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/schema.json +0 -0
  271. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/tests/__init__.py +0 -0
  272. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/moralis/tests/test_wallet.py +0 -0
  273. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/nation/__init__.py +0 -0
  274. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/nation/base.py +0 -0
  275. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/nation/nation.png +0 -0
  276. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/nation/nft_check.py +0 -0
  277. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/nation/schema.json +0 -0
  278. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/openai/__init__.py +0 -0
  279. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/openai/base.py +0 -0
  280. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/openai/image_to_text.py +0 -0
  281. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/openai/openai.png +0 -0
  282. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/openai/schema.json +0 -0
  283. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/README.md +0 -0
  284. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/__init__.py +0 -0
  285. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/base.py +0 -0
  286. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/constants.py +0 -0
  287. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/moralis.png +0 -0
  288. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/schema.json +0 -0
  289. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/token_balances.py +0 -0
  290. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_approvals.py +0 -0
  291. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_defi_positions.py +0 -0
  292. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_history.py +0 -0
  293. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_net_worth.py +0 -0
  294. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_nfts.py +0 -0
  295. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_profitability.py +0 -0
  296. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_profitability_summary.py +0 -0
  297. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_stats.py +0 -0
  298. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/portfolio/wallet_swaps.py +0 -0
  299. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/skills.toml +0 -0
  300. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/slack/__init__.py +0 -0
  301. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/slack/base.py +0 -0
  302. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/slack/get_channel.py +0 -0
  303. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/slack/get_message.py +0 -0
  304. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/slack/schedule_message.py +0 -0
  305. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/slack/schema.json +0 -0
  306. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/slack/send_message.py +0 -0
  307. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/slack/slack.jpg +0 -0
  308. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/system/__init__.py +0 -0
  309. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/system/base.py +0 -0
  310. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/system/schema.json +0 -0
  311. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/system/system.svg +0 -0
  312. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/tavily/README.md +0 -0
  313. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/tavily/__init__.py +0 -0
  314. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/tavily/base.py +0 -0
  315. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/tavily/schema.json +0 -0
  316. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/tavily/tavily.jpg +0 -0
  317. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/tavily/tavily_extract.py +0 -0
  318. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/tavily/tavily_search.py +0 -0
  319. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/README.md +0 -0
  320. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/__init__.py +0 -0
  321. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/constants.py +0 -0
  322. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/erc20_transfers.py +0 -0
  323. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/moralis.png +0 -0
  324. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/schema.json +0 -0
  325. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/token_analytics.py +0 -0
  326. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/token_price.py +0 -0
  327. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/token/token_search.py +0 -0
  328. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/__init__.py +0 -0
  329. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/base.py +0 -0
  330. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/schema.json +0 -0
  331. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/twitter/twitter.png +0 -0
  332. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/unrealspeech/__init__.py +0 -0
  333. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/unrealspeech/base.py +0 -0
  334. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/unrealspeech/schema.json +0 -0
  335. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/unrealspeech/unrealspeech.jpg +0 -0
  336. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_audio/__init__.py +0 -0
  337. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_audio/base.py +0 -0
  338. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_audio/input.py +0 -0
  339. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_audio/schema.json +0 -0
  340. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_audio/venice_audio.py +0 -0
  341. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_audio/venice_logo.jpg +0 -0
  342. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/README.md +0 -0
  343. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/__init__.py +0 -0
  344. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/api.py +0 -0
  345. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/base.py +0 -0
  346. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/config.py +0 -0
  347. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/README.md +0 -0
  348. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/__init__.py +0 -0
  349. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  350. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  351. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  352. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/README.md +0 -0
  353. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/__init__.py +0 -0
  354. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  355. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  356. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  357. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  358. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  359. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  360. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  361. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  362. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  363. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/README.md +0 -0
  364. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/__init__.py +0 -0
  365. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  366. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  367. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  368. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/README.md +0 -0
  369. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/__init__.py +0 -0
  370. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/image_vision.py +0 -0
  371. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  372. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  373. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/schema.json +0 -0
  374. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/utils.py +0 -0
  375. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/venice_image/venice_image.jpg +0 -0
  376. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/web_scraper/README.md +0 -0
  377. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/web_scraper/__init__.py +0 -0
  378. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/web_scraper/base.py +0 -0
  379. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/web_scraper/langchain.png +0 -0
  380. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/web_scraper/schema.json +0 -0
  381. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/skills/web_scraper/utils.py +0 -0
  382. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/utils/__init__.py +0 -0
  383. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/utils/chain.py +0 -0
  384. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/utils/error.py +0 -0
  385. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/utils/logging.py +0 -0
  386. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/utils/middleware.py +0 -0
  387. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/utils/random.py +0 -0
  388. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/utils/s3.py +0 -0
  389. {intentkit-0.6.0.dev12 → intentkit-0.6.0.dev14}/utils/slack_alert.py +0 -0
  390. {intentkit-0.6.0.dev12 → 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.dev12
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.12"
6
+ __version__ = "0.6.0-dev.14"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -91,6 +91,18 @@ class SkillStoreABC(ABC):
91
91
  """
92
92
  pass
93
93
 
94
+ @staticmethod
95
+ @abstractmethod
96
+ async def delete_agent_skill_data(agent_id: str, skill: str, key: str) -> None:
97
+ """Delete skill data for an agent.
98
+
99
+ Args:
100
+ agent_id: ID of the agent
101
+ skill: Name of the skill
102
+ key: Data key
103
+ """
104
+ pass
105
+
94
106
  @staticmethod
95
107
  @abstractmethod
96
108
  async def get_thread_skill_data(
@@ -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:
@@ -78,6 +78,17 @@ class SkillStore(SkillStoreABC):
78
78
  )
79
79
  await skill_data.save()
80
80
 
81
+ @staticmethod
82
+ async def delete_agent_skill_data(agent_id: str, skill: str, key: str) -> None:
83
+ """Delete skill data for an agent.
84
+
85
+ Args:
86
+ agent_id: ID of the agent
87
+ skill: Name of the skill
88
+ key: Data key
89
+ """
90
+ await AgentSkillData.delete(agent_id, skill, key)
91
+
81
92
  @staticmethod
82
93
  async def get_thread_skill_data(
83
94
  thread_id: str, skill: str, key: str
@@ -172,6 +172,25 @@ class AgentSkillData(AgentSkillDataCreate):
172
172
  )
173
173
  return result.data if result else None
174
174
 
175
+ @classmethod
176
+ async def delete(cls, agent_id: str, skill: str, key: str) -> None:
177
+ """Delete skill data for an agent.
178
+
179
+ Args:
180
+ agent_id: ID of the agent
181
+ skill: Name of the skill
182
+ key: Data key
183
+ """
184
+ async with get_session() as db:
185
+ await db.execute(
186
+ delete(AgentSkillDataTable).where(
187
+ AgentSkillDataTable.agent_id == agent_id,
188
+ AgentSkillDataTable.skill == skill,
189
+ AgentSkillDataTable.key == key,
190
+ )
191
+ )
192
+ await db.commit()
193
+
175
194
  @classmethod
176
195
  async def clean_data(cls, agent_id: str):
177
196
  """Clean all skill data for an agent.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.6.0-dev.12"
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 = {
@@ -37,6 +37,14 @@ Queries previously indexed Firecrawl content using semantic search.
37
37
  - `query` (required): The search query
38
38
  - `limit` (optional): Maximum number of results to return (1-10, default: 4)
39
39
 
40
+ ### 4. firecrawl_clear_indexed_content
41
+ Clears all previously indexed Firecrawl content from the vector store.
42
+
43
+ **Parameters:**
44
+ - `confirm` (required): Must be set to true to confirm the deletion (default: false)
45
+
46
+ **Note:** This action is permanent and cannot be undone. Use when you want to start fresh with new content.
47
+
40
48
  ## API Key Configuration
41
49
  Set your Firecrawl API key as an environment variable:
42
50
  ```bash
@@ -53,7 +61,8 @@ export FIRECRAWL_API_KEY=fc-your-api-key-here
53
61
  "skills": [
54
62
  "firecrawl_scrape",
55
63
  "firecrawl_crawl",
56
- "firecrawl_query_indexed_content"
64
+ "firecrawl_query_indexed_content",
65
+ "firecrawl_clear_indexed_content"
57
66
  ]
58
67
  }
59
68
  ```
@@ -120,6 +129,30 @@ Prompt: "Use firecrawl_query_indexed_content to search for 'democratize finance'
120
129
  - Results tagged with [Firecrawl Scrape] or [Firecrawl Crawl]
121
130
  - Source URLs and metadata included
122
131
 
132
+ ### Step 7: Test Clear Indexed Content
133
+
134
+ **Test clearing all indexed content:**
135
+ ```
136
+ Prompt: "Use firecrawl_clear_indexed_content with confirm=true to clear all indexed content"
137
+ ```
138
+
139
+ **Expected Result:**
140
+ - All indexed content removed from vector store
141
+ - Confirmation message displayed
142
+ - Subsequent queries return no results
143
+
144
+ ### Step 8: Test Re-indexing After Clear
145
+
146
+ **Test that content can be re-indexed after clearing:**
147
+ ```
148
+ Prompt: "Use firecrawl_scrape to scrape https://example.com and index the content"
149
+ ```
150
+
151
+ **Expected Result:**
152
+ - Content successfully scraped and indexed
153
+ - Fresh vector store created
154
+ - Content available for querying again
155
+
123
156
  ## Common Use Cases
124
157
 
125
158
  ### Documentation Indexing
@@ -175,4 +208,4 @@ Prompt: "Use firecrawl_query_indexed_content to search for 'democratize finance'
175
208
  - **Metadata Rich**: Includes source URLs, timestamps, and content types
176
209
  - **Semantic Search**: Uses OpenAI embeddings for intelligent querying
177
210
  - **Batch Processing**: Efficient handling of multiple pages
178
- - **Content Filtering**: Flexible include/exclude options for targeted scraping
211
+ - **Content Filtering**: Flexible include/exclude options for targeted scraping
@@ -6,6 +6,7 @@ from typing import TypedDict
6
6
  from intentkit.abstracts.skill import SkillStoreABC
7
7
  from intentkit.skills.base import SkillConfig, SkillState
8
8
  from intentkit.skills.firecrawl.base import FirecrawlBaseTool
9
+ from intentkit.skills.firecrawl.clear import FirecrawlClearIndexedContent
9
10
  from intentkit.skills.firecrawl.crawl import FirecrawlCrawl
10
11
  from intentkit.skills.firecrawl.query import FirecrawlQueryIndexedContent
11
12
  from intentkit.skills.firecrawl.scrape import FirecrawlScrape
@@ -20,6 +21,7 @@ class SkillStates(TypedDict):
20
21
  firecrawl_scrape: SkillState
21
22
  firecrawl_crawl: SkillState
22
23
  firecrawl_query_indexed_content: SkillState
24
+ firecrawl_clear_indexed_content: SkillState
23
25
 
24
26
 
25
27
  class Config(SkillConfig):
@@ -95,5 +97,11 @@ def get_firecrawl_skill(
95
97
  skill_store=store,
96
98
  )
97
99
  return _cache[name]
100
+ elif name == "firecrawl_clear_indexed_content":
101
+ if name not in _cache:
102
+ _cache[name] = FirecrawlClearIndexedContent(
103
+ skill_store=store,
104
+ )
105
+ return _cache[name]
98
106
  else:
99
107
  raise ValueError(f"Unknown Firecrawl skill: {name}")
@@ -0,0 +1,87 @@
1
+ import logging
2
+ from typing import Type
3
+
4
+ from langchain_core.runnables import RunnableConfig
5
+ from pydantic import BaseModel, Field
6
+
7
+ from intentkit.skills.firecrawl.base import FirecrawlBaseTool
8
+
9
+ logger = logging.getLogger(__name__)
10
+
11
+
12
+ class FirecrawlClearInput(BaseModel):
13
+ """Input for Firecrawl clear tool."""
14
+
15
+ confirm: bool = Field(
16
+ description="Confirmation to clear all indexed content (must be true)",
17
+ default=False,
18
+ )
19
+
20
+
21
+ class FirecrawlClearIndexedContent(FirecrawlBaseTool):
22
+ """Tool for clearing all indexed Firecrawl content.
23
+
24
+ This tool removes all previously indexed content from the Firecrawl vector store,
25
+ allowing for a fresh start with new content.
26
+ """
27
+
28
+ name: str = "firecrawl_clear_indexed_content"
29
+ description: str = (
30
+ "Clear all previously indexed Firecrawl content from the vector store.\n"
31
+ "This will permanently delete all indexed content and cannot be undone.\n"
32
+ "Use this tool when you want to start fresh with new content."
33
+ )
34
+ args_schema: Type[BaseModel] = FirecrawlClearInput
35
+
36
+ async def _arun(
37
+ self,
38
+ confirm: bool = False,
39
+ config: RunnableConfig = None,
40
+ **kwargs,
41
+ ) -> str:
42
+ """Clear all indexed Firecrawl content for the agent.
43
+
44
+ Args:
45
+ confirm: Must be True to confirm the deletion
46
+ config: The configuration for the tool call
47
+
48
+ Returns:
49
+ str: Confirmation message
50
+ """
51
+ context = self.context_from_config(config)
52
+ agent_id = context.agent_id
53
+
54
+ if not agent_id:
55
+ return "Error: Agent ID not available for clearing content."
56
+
57
+ if not confirm:
58
+ return "Error: You must set confirm=true to clear all indexed content."
59
+
60
+ logger.info(
61
+ f"firecrawl_clear: Starting clear indexed content operation for agent {agent_id}"
62
+ )
63
+
64
+ try:
65
+ # Delete vector store data (using web_scraper storage format for compatibility)
66
+ vector_store_key = f"vector_store_{agent_id}"
67
+ await self.skill_store.delete_agent_skill_data(
68
+ agent_id, "web_scraper", vector_store_key
69
+ )
70
+
71
+ # Delete metadata
72
+ metadata_key = f"indexed_urls_{agent_id}"
73
+ await self.skill_store.delete_agent_skill_data(
74
+ agent_id, "web_scraper", metadata_key
75
+ )
76
+
77
+ logger.info(
78
+ f"firecrawl_clear: Successfully cleared all indexed content for agent {agent_id}"
79
+ )
80
+ return "Successfully cleared all Firecrawl indexed content. The vector store is now empty and ready for new content."
81
+
82
+ except Exception as e:
83
+ logger.error(
84
+ f"firecrawl_clear: Error clearing indexed content for agent {agent_id}: {e}",
85
+ exc_info=True,
86
+ )
87
+ return f"Error clearing indexed content: {str(e)}"
@@ -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
 
@@ -68,6 +68,22 @@
68
68
  ],
69
69
  "description": "Query previously indexed Firecrawl content to find relevant information and answer questions. Use this to search through content that was scraped and indexed using Firecrawl tools.",
70
70
  "default": "private"
71
+ },
72
+ "firecrawl_clear_indexed_content": {
73
+ "type": "string",
74
+ "title": "Clear Indexed Content",
75
+ "enum": [
76
+ "disabled",
77
+ "public",
78
+ "private"
79
+ ],
80
+ "x-enum-title": [
81
+ "Disabled",
82
+ "Agent Owner + All Users",
83
+ "Agent Owner Only"
84
+ ],
85
+ "description": "Clear all previously indexed Firecrawl content from the vector store. This will permanently delete all indexed content and cannot be undone. Use this tool when you want to start fresh with new content.",
86
+ "default": "private"
71
87
  }
72
88
  },
73
89
  "description": "States for each Firecrawl skill (disabled, public, or private)"
@@ -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(