intentkit 0.6.0.dev7__tar.gz → 0.6.0.dev8__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 (371) hide show
  1. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/PKG-INFO +1 -1
  2. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/__init__.py +1 -1
  3. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/pyproject.toml +1 -1
  4. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/web_scraper/README.md +35 -4
  5. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/web_scraper/__init__.py +16 -0
  6. intentkit-0.6.0.dev8/skills/web_scraper/document_indexer.py +143 -0
  7. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/web_scraper/schema.json +28 -0
  8. intentkit-0.6.0.dev8/skills/web_scraper/scrape_and_index.py +262 -0
  9. intentkit-0.6.0.dev8/skills/web_scraper/utils.py +641 -0
  10. intentkit-0.6.0.dev8/skills/web_scraper/website_indexer.py +426 -0
  11. intentkit-0.6.0.dev7/skills/web_scraper/scrape_and_index.py +0 -327
  12. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/.gitignore +0 -0
  13. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/LICENSE +0 -0
  14. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/MANIFEST.in +0 -0
  15. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/README.md +0 -0
  16. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/abstracts/__init__.py +0 -0
  17. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/abstracts/agent.py +0 -0
  18. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/abstracts/api.py +0 -0
  19. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/abstracts/engine.py +0 -0
  20. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/abstracts/exception.py +0 -0
  21. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/abstracts/graph.py +0 -0
  22. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/abstracts/skill.py +0 -0
  23. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/abstracts/twitter.py +0 -0
  24. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/clients/__init__.py +0 -0
  25. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/clients/cdp.py +0 -0
  26. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/clients/twitter.py +0 -0
  27. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/config/__init__.py +0 -0
  28. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/config/config.py +0 -0
  29. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/core/__init__.py +0 -0
  30. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/core/agent.py +0 -0
  31. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/core/api.py +0 -0
  32. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/core/client.py +0 -0
  33. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/core/credit.py +0 -0
  34. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/core/engine.py +0 -0
  35. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/core/node.py +0 -0
  36. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/core/prompt.py +0 -0
  37. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/core/skill.py +0 -0
  38. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/agent.py +0 -0
  39. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/agent_data.py +0 -0
  40. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/agent_schema.json +0 -0
  41. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/app_setting.py +0 -0
  42. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/base.py +0 -0
  43. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/chat.py +0 -0
  44. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/conversation.py +0 -0
  45. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/credit.py +0 -0
  46. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/db.py +0 -0
  47. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/db_mig.py +0 -0
  48. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/generator.py +0 -0
  49. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/llm.py +0 -0
  50. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/redis.py +0 -0
  51. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/skill.py +0 -0
  52. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/models/user.py +0 -0
  53. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/__init__.py +0 -0
  54. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/acolyt/__init__.py +0 -0
  55. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/acolyt/acolyt.jpg +0 -0
  56. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/acolyt/ask.py +0 -0
  57. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/acolyt/base.py +0 -0
  58. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/acolyt/schema.json +0 -0
  59. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/aixbt/README.md +0 -0
  60. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/aixbt/__init__.py +0 -0
  61. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/aixbt/aixbt.jpg +0 -0
  62. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/aixbt/base.py +0 -0
  63. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/aixbt/projects.py +0 -0
  64. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/aixbt/schema.json +0 -0
  65. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/allora/__init__.py +0 -0
  66. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/allora/allora.jpeg +0 -0
  67. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/allora/base.py +0 -0
  68. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/allora/price.py +0 -0
  69. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/allora/schema.json +0 -0
  70. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/base.py +0 -0
  71. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/carv/README.md +0 -0
  72. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/carv/__init__.py +0 -0
  73. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/carv/base.py +0 -0
  74. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/carv/carv.webp +0 -0
  75. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/carv/fetch_news.py +0 -0
  76. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/carv/onchain_query.py +0 -0
  77. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/carv/schema.json +0 -0
  78. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/carv/token_info_and_price.py +0 -0
  79. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cdp/__init__.py +0 -0
  80. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cdp/base.py +0 -0
  81. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cdp/cdp.png +0 -0
  82. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cdp/get_balance.py +0 -0
  83. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cdp/schema.json +0 -0
  84. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/chainlist/README.md +0 -0
  85. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/chainlist/__init__.py +0 -0
  86. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/chainlist/base.py +0 -0
  87. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/chainlist/chain_lookup.py +0 -0
  88. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/chainlist/chainlist.png +0 -0
  89. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/chainlist/schema.json +0 -0
  90. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/common/__init__.py +0 -0
  91. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/common/base.py +0 -0
  92. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/common/common.jpg +0 -0
  93. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/common/current_time.py +0 -0
  94. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/common/schema.json +0 -0
  95. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/README.md +0 -0
  96. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/__init__.py +0 -0
  97. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/base.py +0 -0
  98. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/constants.py +0 -0
  99. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/cookiefun.png +0 -0
  100. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/get_account_details.py +0 -0
  101. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/get_account_feed.py +0 -0
  102. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/get_account_smart_followers.py +0 -0
  103. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/get_sectors.py +0 -0
  104. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/schema.json +0 -0
  105. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cookiefun/search_accounts.py +0 -0
  106. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/__init__.py +0 -0
  107. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/api.py +0 -0
  108. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/base.py +0 -0
  109. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/cryptocompare.png +0 -0
  110. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/fetch_news.py +0 -0
  111. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/fetch_price.py +0 -0
  112. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  113. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  114. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/fetch_top_volume.py +0 -0
  115. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/fetch_trading_signals.py +0 -0
  116. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptocompare/schema.json +0 -0
  117. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptopanic/__init__.py +0 -0
  118. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptopanic/base.py +0 -0
  119. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptopanic/cryptopanic.png +0 -0
  120. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  121. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  122. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/cryptopanic/schema.json +0 -0
  123. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dapplooker/README.md +0 -0
  124. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dapplooker/__init__.py +0 -0
  125. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dapplooker/base.py +0 -0
  126. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dapplooker/dapplooker.jpg +0 -0
  127. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dapplooker/dapplooker_token_data.py +0 -0
  128. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dapplooker/schema.json +0 -0
  129. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/__init__.py +0 -0
  130. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/api.py +0 -0
  131. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/base.py +0 -0
  132. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/coins/__init__.py +0 -0
  133. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  134. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/coins/fetch_block.py +0 -0
  135. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/coins/fetch_current_prices.py +0 -0
  136. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/coins/fetch_first_price.py +0 -0
  137. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  138. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/coins/fetch_price_chart.py +0 -0
  139. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  140. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/config/__init__.py +0 -0
  141. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/config/chains.py +0 -0
  142. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/defillama.jpeg +0 -0
  143. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/fees/__init__.py +0 -0
  144. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  145. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/schema.json +0 -0
  146. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/stablecoins/__init__.py +0 -0
  147. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  148. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  149. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  150. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  151. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tests/__init__.py +0 -0
  152. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tests/api_integration.test.py +0 -0
  153. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tests/api_unit.test.py +0 -0
  154. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tvl/__init__.py +0 -0
  155. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  156. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tvl/fetch_chains.py +0 -0
  157. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  158. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tvl/fetch_protocol.py +0 -0
  159. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  160. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/tvl/fetch_protocols.py +0 -0
  161. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/volumes/__init__.py +0 -0
  162. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  163. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  164. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  165. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/yields/__init__.py +0 -0
  166. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  167. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/defillama/yields/fetch_pools.py +0 -0
  168. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dexscreener/__init__.py +0 -0
  169. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dexscreener/base.py +0 -0
  170. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dexscreener/dexscreener.png +0 -0
  171. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dexscreener/model/__init__.py +0 -0
  172. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dexscreener/model/search_token_response.py +0 -0
  173. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dexscreener/schema.json +0 -0
  174. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dexscreener/search_token.py +0 -0
  175. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dune_analytics/__init__.py +0 -0
  176. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dune_analytics/base.py +0 -0
  177. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dune_analytics/dune.png +0 -0
  178. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  179. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  180. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/dune_analytics/schema.json +0 -0
  181. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/elfa/README.md +0 -0
  182. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/elfa/__init__.py +0 -0
  183. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/elfa/base.py +0 -0
  184. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/elfa/elfa.jpg +0 -0
  185. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/elfa/mention.py +0 -0
  186. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/elfa/schema.json +0 -0
  187. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/elfa/stats.py +0 -0
  188. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/elfa/tokens.py +0 -0
  189. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/README.md +0 -0
  190. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/__init__.py +0 -0
  191. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/abi/__init__.py +0 -0
  192. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/abi/approval.py +0 -0
  193. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/abi/erc20.py +0 -0
  194. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/abi/route.py +0 -0
  195. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/base.py +0 -0
  196. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/best_yield.py +0 -0
  197. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/enso.jpg +0 -0
  198. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/networks.py +0 -0
  199. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/prices.py +0 -0
  200. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/route.py +0 -0
  201. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/schema.json +0 -0
  202. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/tokens.py +0 -0
  203. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/enso/wallet.py +0 -0
  204. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/github/README.md +0 -0
  205. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/github/__init__.py +0 -0
  206. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/github/base.py +0 -0
  207. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/github/github.jpg +0 -0
  208. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/github/github_search.py +0 -0
  209. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/github/schema.json +0 -0
  210. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/__init__.py +0 -0
  211. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/base.py +0 -0
  212. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/heurist.png +0 -0
  213. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/image_generation_animagine_xl.py +0 -0
  214. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/image_generation_arthemy_comics.py +0 -0
  215. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/image_generation_arthemy_real.py +0 -0
  216. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/image_generation_braindance.py +0 -0
  217. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  218. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/image_generation_flux_1_dev.py +0 -0
  219. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/image_generation_sdxl.py +0 -0
  220. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/heurist/schema.json +0 -0
  221. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/lifi/README.md +0 -0
  222. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/lifi/__init__.py +0 -0
  223. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/lifi/base.py +0 -0
  224. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/lifi/lifi.png +0 -0
  225. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/lifi/schema.json +0 -0
  226. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/lifi/token_execute.py +0 -0
  227. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/lifi/token_quote.py +0 -0
  228. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/lifi/utils.py +0 -0
  229. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/README.md +0 -0
  230. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/__init__.py +0 -0
  231. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/api.py +0 -0
  232. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/base.py +0 -0
  233. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/fetch_chain_portfolio.py +0 -0
  234. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/fetch_nft_portfolio.py +0 -0
  235. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/fetch_solana_portfolio.py +0 -0
  236. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  237. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/moralis.png +0 -0
  238. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/schema.json +0 -0
  239. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/tests/__init__.py +0 -0
  240. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/moralis/tests/test_wallet.py +0 -0
  241. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/nation/__init__.py +0 -0
  242. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/nation/base.py +0 -0
  243. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/nation/nation.png +0 -0
  244. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/nation/nft_check.py +0 -0
  245. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/nation/schema.json +0 -0
  246. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/openai/__init__.py +0 -0
  247. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/openai/base.py +0 -0
  248. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/openai/dalle_image_generation.py +0 -0
  249. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/openai/gpt_image_generation.py +0 -0
  250. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/openai/gpt_image_to_image.py +0 -0
  251. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/openai/image_to_text.py +0 -0
  252. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/openai/openai.png +0 -0
  253. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/openai/schema.json +0 -0
  254. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/README.md +0 -0
  255. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/__init__.py +0 -0
  256. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/base.py +0 -0
  257. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/constants.py +0 -0
  258. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/moralis.png +0 -0
  259. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/schema.json +0 -0
  260. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/token_balances.py +0 -0
  261. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/wallet_approvals.py +0 -0
  262. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/wallet_defi_positions.py +0 -0
  263. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/wallet_history.py +0 -0
  264. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/wallet_net_worth.py +0 -0
  265. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/wallet_nfts.py +0 -0
  266. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/wallet_profitability.py +0 -0
  267. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/wallet_profitability_summary.py +0 -0
  268. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/wallet_stats.py +0 -0
  269. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/portfolio/wallet_swaps.py +0 -0
  270. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/skills.toml +0 -0
  271. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/slack/__init__.py +0 -0
  272. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/slack/base.py +0 -0
  273. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/slack/get_channel.py +0 -0
  274. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/slack/get_message.py +0 -0
  275. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/slack/schedule_message.py +0 -0
  276. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/slack/schema.json +0 -0
  277. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/slack/send_message.py +0 -0
  278. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/slack/slack.jpg +0 -0
  279. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/system/__init__.py +0 -0
  280. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/system/base.py +0 -0
  281. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/system/read_agent_api_key.py +0 -0
  282. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/system/regenerate_agent_api_key.py +0 -0
  283. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/system/schema.json +0 -0
  284. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/system/system.svg +0 -0
  285. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/tavily/README.md +0 -0
  286. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/tavily/__init__.py +0 -0
  287. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/tavily/base.py +0 -0
  288. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/tavily/schema.json +0 -0
  289. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/tavily/tavily.jpg +0 -0
  290. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/tavily/tavily_extract.py +0 -0
  291. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/tavily/tavily_search.py +0 -0
  292. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/README.md +0 -0
  293. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/__init__.py +0 -0
  294. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/base.py +0 -0
  295. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/constants.py +0 -0
  296. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/erc20_transfers.py +0 -0
  297. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/moralis.png +0 -0
  298. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/schema.json +0 -0
  299. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/token_analytics.py +0 -0
  300. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/token_price.py +0 -0
  301. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/token/token_search.py +0 -0
  302. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/__init__.py +0 -0
  303. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/base.py +0 -0
  304. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/follow_user.py +0 -0
  305. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/get_mentions.py +0 -0
  306. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/get_timeline.py +0 -0
  307. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/get_user_by_username.py +0 -0
  308. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/get_user_tweets.py +0 -0
  309. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/like_tweet.py +0 -0
  310. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/post_tweet.py +0 -0
  311. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/reply_tweet.py +0 -0
  312. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/retweet.py +0 -0
  313. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/schema.json +0 -0
  314. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/search_tweets.py +0 -0
  315. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/twitter/twitter.png +0 -0
  316. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/unrealspeech/__init__.py +0 -0
  317. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/unrealspeech/base.py +0 -0
  318. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/unrealspeech/schema.json +0 -0
  319. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/unrealspeech/text_to_speech.py +0 -0
  320. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/unrealspeech/unrealspeech.jpg +0 -0
  321. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_audio/__init__.py +0 -0
  322. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_audio/base.py +0 -0
  323. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_audio/input.py +0 -0
  324. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_audio/schema.json +0 -0
  325. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_audio/venice_audio.py +0 -0
  326. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_audio/venice_logo.jpg +0 -0
  327. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/README.md +0 -0
  328. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/__init__.py +0 -0
  329. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/api.py +0 -0
  330. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/base.py +0 -0
  331. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/config.py +0 -0
  332. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_enhance/README.md +0 -0
  333. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_enhance/__init__.py +0 -0
  334. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  335. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  336. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  337. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/README.md +0 -0
  338. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/__init__.py +0 -0
  339. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  340. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  341. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  342. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  343. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  344. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  345. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  346. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  347. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  348. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_upscale/README.md +0 -0
  349. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_upscale/__init__.py +0 -0
  350. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  351. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  352. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  353. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_vision/README.md +0 -0
  354. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_vision/__init__.py +0 -0
  355. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_vision/image_vision.py +0 -0
  356. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  357. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  358. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/schema.json +0 -0
  359. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/utils.py +0 -0
  360. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/venice_image/venice_image.jpg +0 -0
  361. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/web_scraper/base.py +0 -0
  362. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/skills/web_scraper/langchain.png +0 -0
  363. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/utils/__init__.py +0 -0
  364. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/utils/chain.py +0 -0
  365. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/utils/error.py +0 -0
  366. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/utils/logging.py +0 -0
  367. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/utils/middleware.py +0 -0
  368. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/utils/random.py +0 -0
  369. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/utils/s3.py +0 -0
  370. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/utils/slack_alert.py +0 -0
  371. {intentkit-0.6.0.dev7 → intentkit-0.6.0.dev8}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.6.0.dev7
3
+ Version: 0.6.0.dev8
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.7"
6
+ __version__ = "0.6.0-dev.8"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.6.0-dev.7"
3
+ version = "0.6.0-dev.8"
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"
@@ -10,12 +10,22 @@ Scrape content from URLs and index into a searchable vector store with configura
10
10
  ### 🔎 `query_indexed_content`
11
11
  Search indexed content using semantic similarity to answer questions and retrieve relevant information.
12
12
 
13
+ ### `website_indexer`
14
+ Index entire websites by discovering and scraping all pages using sitemaps. Automatically finds sitemaps from robots.txt, extracts all URLs, and comprehensively indexes website content.
15
+
16
+ ### `document_indexer`
17
+ Import and index document content directly to the vector database. Perfect for adding content from Google Docs, Notion pages, PDFs, or any other document sources by copy-pasting.
18
+
13
19
  ## Key Features
14
20
 
15
- - **Multi-URL Support**: Scrape up to 10 URLs simultaneously
21
+ - **Multi-URL Support**: Scrape up to 10 URLs simultaneously
22
+ - **Sitemap Discovery**: Automatic sitemap detection from robots.txt with common patterns
23
+ - **Direct Text Input**: Add content directly without web scraping
16
24
  - **Smart Chunking**: Configurable text splitting (100-4000 chars) with overlap
17
25
  - **Vector Search**: FAISS + OpenAI embeddings for semantic retrieval
18
26
  - **Agent Storage**: Persistent, per-agent content indexing
27
+ - **Content Filtering**: Include/exclude URL patterns for targeted scraping
28
+ - **Tagging System**: Organize content with custom tags
19
29
  - **Rate Limiting**: Respectful scraping (0.1-10 req/sec)
20
30
 
21
31
  ## Testing Examples
@@ -39,7 +49,27 @@ Please scrape and index this URL: https://docs.crestal.network/introduction
39
49
  Scrape and index https://docs.crestal.network/introduction with chunk size 500 and overlap 100.
40
50
  ```
41
51
 
42
- ### 3. Content Querying
52
+ ### 3. Complete Website Indexing
53
+
54
+ **Agent Prompt:**
55
+ ```
56
+ Index the entire documentation site at https://docs.crestal.network using its sitemap. Include only pages with '/docs/' and '/guides/' in the URL, exclude '/admin/' pages, and limit to 50 URLs.
57
+ ```
58
+
59
+ ### 4. Document Content Import
60
+
61
+ **Agent Prompt:**
62
+ ```
63
+ I'm going to paste some content from my Google Doc. Please add it to the knowledge base:
64
+
65
+ Title: "Meeting Notes - Q4 Strategy"
66
+ Source: "Google Docs"
67
+ Tags: "meeting, strategy, q4, planning"
68
+
69
+ [Paste your document content here...]
70
+ ```
71
+
72
+ ### 5. Content Querying
43
73
 
44
74
  **Agent Prompt (after indexing):**
45
75
  ```
@@ -75,8 +105,9 @@ curl -X POST "http://localhost:8000/agents/your-agent-id/chat" \
75
105
  ## Dependencies
76
106
 
77
107
  Required packages (add to `pyproject.toml` if missing):
78
- - `langchain-community` - WebBaseLoader
108
+ - `langchain-community` - WebBaseLoader and document processing
79
109
  - `langchain-openai` - Embeddings
80
110
  - `langchain-text-splitters` - Document chunking
81
111
  - `faiss-cpu` - Vector storage
82
- - `beautifulsoup4` - HTML parsing
112
+ - `beautifulsoup4` - HTML parsing
113
+ - `httpx` - Async HTTP client for sitemap discovery
@@ -6,10 +6,12 @@ from typing import TypedDict
6
6
  from intentkit.abstracts.skill import SkillStoreABC
7
7
  from intentkit.skills.base import SkillConfig, SkillOwnerState, SkillState
8
8
  from intentkit.skills.web_scraper.base import WebScraperBaseTool
9
+ from intentkit.skills.web_scraper.document_indexer import DocumentIndexer
9
10
  from intentkit.skills.web_scraper.scrape_and_index import (
10
11
  QueryIndexedContent,
11
12
  ScrapeAndIndex,
12
13
  )
14
+ from intentkit.skills.web_scraper.website_indexer import WebsiteIndexer
13
15
 
14
16
  # Cache skills at the system level, because they are stateless
15
17
  _cache: dict[str, WebScraperBaseTool] = {}
@@ -20,6 +22,8 @@ logger = logging.getLogger(__name__)
20
22
  class SkillStates(TypedDict):
21
23
  scrape_and_index: SkillOwnerState
22
24
  query_indexed_content: SkillState
25
+ website_indexer: SkillOwnerState
26
+ document_indexer: SkillOwnerState
23
27
 
24
28
 
25
29
  class Config(SkillConfig):
@@ -87,6 +91,18 @@ def get_web_scraper_skill(
87
91
  skill_store=store,
88
92
  )
89
93
  return _cache[name]
94
+ elif name == "website_indexer":
95
+ if name not in _cache:
96
+ _cache[name] = WebsiteIndexer(
97
+ skill_store=store,
98
+ )
99
+ return _cache[name]
100
+ elif name == "document_indexer":
101
+ if name not in _cache:
102
+ _cache[name] = DocumentIndexer(
103
+ skill_store=store,
104
+ )
105
+ return _cache[name]
90
106
  else:
91
107
  logger.warning(f"Unknown web scraper skill: {name}")
92
108
  return None
@@ -0,0 +1,143 @@
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.web_scraper.base import WebScraperBaseTool
8
+ from intentkit.skills.web_scraper.utils import (
9
+ DocumentProcessor,
10
+ MetadataManager,
11
+ ResponseFormatter,
12
+ VectorStoreManager,
13
+ index_documents,
14
+ )
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ class DocumentIndexerInput(BaseModel):
20
+ """Input for DocumentIndexer tool."""
21
+
22
+ text_content: str = Field(
23
+ description="The text content to add to the vector database. Can be content from Google Docs, Notion, or any other text source",
24
+ min_length=10,
25
+ max_length=100000,
26
+ )
27
+ title: str = Field(
28
+ description="Title or name for this text content (will be used as metadata)",
29
+ max_length=200,
30
+ )
31
+ source: str = Field(
32
+ description="Source of the text content (e.g., 'Google Doc', 'Notion Page', 'Manual Entry')",
33
+ default="Manual Entry",
34
+ max_length=100,
35
+ )
36
+ chunk_size: int = Field(
37
+ description="Size of text chunks for indexing (default: 1000)",
38
+ default=1000,
39
+ ge=100,
40
+ le=4000,
41
+ )
42
+ chunk_overlap: int = Field(
43
+ description="Overlap between chunks (default: 200)",
44
+ default=200,
45
+ ge=0,
46
+ le=1000,
47
+ )
48
+ tags: str = Field(
49
+ description="Optional tags for categorizing the content (comma-separated)",
50
+ default="",
51
+ max_length=500,
52
+ )
53
+
54
+
55
+ class DocumentIndexer(WebScraperBaseTool):
56
+ """Tool for importing and indexing document content to the vector database.
57
+
58
+ This tool allows users to copy and paste document content from various sources
59
+ (like Google Docs, Notion, PDFs, etc.) and index it directly into the vector store
60
+ for later querying and retrieval.
61
+ """
62
+
63
+ name: str = "web_scraper_document_indexer"
64
+ description: str = (
65
+ "Import and index document content directly to the vector database. "
66
+ "Perfect for adding content from Google Docs, Notion pages, PDFs, or any other document sources. "
67
+ "The indexed content can then be queried using the query_indexed_content tool."
68
+ )
69
+ args_schema: Type[BaseModel] = DocumentIndexerInput
70
+
71
+ async def _arun(
72
+ self,
73
+ text_content: str,
74
+ title: str,
75
+ source: str = "Manual Entry",
76
+ chunk_size: int = 1000,
77
+ chunk_overlap: int = 200,
78
+ tags: str = "",
79
+ config: RunnableConfig = None,
80
+ **kwargs,
81
+ ) -> str:
82
+ """Add text content to the vector database."""
83
+ # Get agent context - throw error if not available
84
+ if not config:
85
+ raise ValueError("Configuration is required but not provided")
86
+
87
+ context = self.context_from_config(config)
88
+ if not context or not context.agent or not context.agent.id:
89
+ raise ValueError("Agent ID is required but not found in configuration")
90
+
91
+ agent_id = context.agent.id
92
+
93
+ logger.info(f"[{agent_id}] Starting document indexing for title: '{title}'")
94
+
95
+ # Validate content
96
+ if not DocumentProcessor.validate_content(text_content):
97
+ logger.error(f"[{agent_id}] Content validation failed - too short")
98
+ return "Error: Text content is too short. Please provide at least 10 characters of content."
99
+
100
+ # Create document with metadata
101
+ document = DocumentProcessor.create_document(
102
+ text_content,
103
+ title,
104
+ source,
105
+ tags,
106
+ extra_metadata={"source_type": "document_indexer"},
107
+ )
108
+
109
+ logger.info(
110
+ f"[{agent_id}] Document created, length: {len(document.page_content)} chars"
111
+ )
112
+
113
+ # Index the document
114
+ total_chunks, was_merged = await index_documents(
115
+ [document], agent_id, self.skill_store, chunk_size, chunk_overlap
116
+ )
117
+
118
+ # Get current storage size for response
119
+ vs_manager = VectorStoreManager(self.skill_store)
120
+ current_size = await vs_manager.get_content_size(agent_id)
121
+
122
+ # Update metadata
123
+ metadata_manager = MetadataManager(self.skill_store)
124
+ new_metadata = metadata_manager.create_document_metadata(
125
+ title, source, tags, [document], len(text_content)
126
+ )
127
+ await metadata_manager.update_metadata(agent_id, new_metadata)
128
+
129
+ logger.info(f"[{agent_id}] Document indexing completed successfully")
130
+
131
+ # Format response
132
+ response = ResponseFormatter.format_indexing_response(
133
+ "indexed",
134
+ f"Document: {title}",
135
+ total_chunks,
136
+ chunk_size,
137
+ chunk_overlap,
138
+ was_merged,
139
+ current_size_bytes=current_size,
140
+ )
141
+
142
+ logger.info(f"[{agent_id}] Document indexing completed successfully")
143
+ return response
@@ -50,6 +50,34 @@
50
50
  ],
51
51
  "description": "Search and retrieve relevant information from previously indexed web content using semantic similarity. Perfect for answering questions based on scraped documents.",
52
52
  "default": "private"
53
+ },
54
+ "website_indexer": {
55
+ "type": "string",
56
+ "title": "Complete Website Indexer",
57
+ "enum": [
58
+ "disabled",
59
+ "private"
60
+ ],
61
+ "x-enum-title": [
62
+ "Disabled",
63
+ "Agent Owner Only"
64
+ ],
65
+ "description": "Index entire websites by discovering and scraping all pages using sitemaps. Automatically finds sitemaps from robots.txt, extracts all URLs, and comprehensively indexes website content.",
66
+ "default": "private"
67
+ },
68
+ "document_indexer": {
69
+ "type": "string",
70
+ "title": "Document Content Indexer",
71
+ "enum": [
72
+ "disabled",
73
+ "private"
74
+ ],
75
+ "x-enum-title": [
76
+ "Disabled",
77
+ "Agent Owner Only"
78
+ ],
79
+ "description": "Import and index document content directly to the vector database. Perfect for adding content from Google Docs, Notion pages, PDFs, or any other document sources by copy-pasting.",
80
+ "default": "private"
53
81
  }
54
82
  },
55
83
  "description": "Configure the availability of each web scraper skill (disabled, public, or private)"
@@ -0,0 +1,262 @@
1
+ import logging
2
+ from typing import List, Type
3
+
4
+ from langchain_core.runnables import RunnableConfig
5
+ from pydantic import BaseModel, Field
6
+
7
+ from intentkit.skills.web_scraper.base import WebScraperBaseTool
8
+ from intentkit.skills.web_scraper.utils import (
9
+ DEFAULT_CHUNK_OVERLAP,
10
+ DEFAULT_CHUNK_SIZE,
11
+ MetadataManager,
12
+ ResponseFormatter,
13
+ VectorStoreManager,
14
+ scrape_and_index_urls,
15
+ )
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ class ScrapeAndIndexInput(BaseModel):
21
+ """Input for ScrapeAndIndex tool."""
22
+
23
+ urls: List[str] = Field(
24
+ description="List of URLs to scrape and index. Each URL should be a valid web address starting with http:// or https://",
25
+ min_items=1,
26
+ max_items=10,
27
+ )
28
+ chunk_size: int = Field(
29
+ description="Size of text chunks for indexing (default: 1000)",
30
+ default=DEFAULT_CHUNK_SIZE,
31
+ ge=100,
32
+ le=4000,
33
+ )
34
+ chunk_overlap: int = Field(
35
+ description="Overlap between chunks (default: 200)",
36
+ default=DEFAULT_CHUNK_OVERLAP,
37
+ ge=0,
38
+ le=1000,
39
+ )
40
+
41
+
42
+ class QueryIndexInput(BaseModel):
43
+ """Input for QueryIndex tool."""
44
+
45
+ query: str = Field(
46
+ description="Question or query to search in the indexed content",
47
+ min_length=1,
48
+ max_length=500,
49
+ )
50
+ max_results: int = Field(
51
+ description="Maximum number of relevant documents to return (default: 4)",
52
+ default=4,
53
+ ge=1,
54
+ le=10,
55
+ )
56
+
57
+
58
+ class ScrapeAndIndex(WebScraperBaseTool):
59
+ """Tool for scraping web content and indexing it into a searchable vector store.
60
+
61
+ This tool can scrape multiple URLs, process the content into chunks,
62
+ and store it in a vector database for later retrieval and question answering.
63
+ """
64
+
65
+ name: str = "web_scraper_scrape_and_index"
66
+ description: str = (
67
+ "Scrape content from one or more web URLs and index them into a vector store for later querying.\n"
68
+ "Use this tool to collect and index web content that you want to reference later.\n"
69
+ "The indexed content can then be queried using the query_indexed_content tool."
70
+ )
71
+ args_schema: Type[BaseModel] = ScrapeAndIndexInput
72
+
73
+ async def _arun(
74
+ self,
75
+ urls: List[str],
76
+ chunk_size: int = DEFAULT_CHUNK_SIZE,
77
+ chunk_overlap: int = DEFAULT_CHUNK_OVERLAP,
78
+ config: RunnableConfig = None,
79
+ **kwargs,
80
+ ) -> str:
81
+ """Scrape URLs and index content into vector store."""
82
+ try:
83
+ # Get agent context - throw error if not available
84
+ if not config:
85
+ raise ValueError("Configuration is required but not provided")
86
+
87
+ context = self.context_from_config(config)
88
+ if not context or not context.agent or not context.agent.id:
89
+ raise ValueError("Agent ID is required but not found in configuration")
90
+
91
+ agent_id = context.agent.id
92
+
93
+ logger.info(
94
+ f"[{agent_id}] Starting scrape and index operation with {len(urls)} URLs"
95
+ )
96
+
97
+ # Use the utility function to scrape and index URLs
98
+ total_chunks, was_merged, valid_urls = await scrape_and_index_urls(
99
+ urls, agent_id, self.skill_store, chunk_size, chunk_overlap
100
+ )
101
+
102
+ logger.info(
103
+ f"[{agent_id}] Scraping completed: {total_chunks} chunks indexed, merged: {was_merged}"
104
+ )
105
+
106
+ if not valid_urls:
107
+ logger.error(f"[{agent_id}] No valid URLs provided")
108
+ return "Error: No valid URLs provided. URLs must start with http:// or https://"
109
+
110
+ if total_chunks == 0:
111
+ logger.error(f"[{agent_id}] No content extracted from URLs")
112
+ return "Error: No content could be extracted from the provided URLs."
113
+
114
+ # Get current storage size for response
115
+ vs_manager = VectorStoreManager(self.skill_store)
116
+ current_size = await vs_manager.get_content_size(agent_id)
117
+ size_limit_reached = len(valid_urls) < len(urls)
118
+
119
+ # Update metadata
120
+ metadata_manager = MetadataManager(self.skill_store)
121
+ new_metadata = metadata_manager.create_url_metadata(
122
+ valid_urls, [], "scrape_and_index"
123
+ )
124
+ await metadata_manager.update_metadata(agent_id, new_metadata)
125
+
126
+ logger.info(f"[{agent_id}] Metadata updated successfully")
127
+
128
+ # Format response
129
+ response = ResponseFormatter.format_indexing_response(
130
+ "scraped and indexed",
131
+ valid_urls,
132
+ total_chunks,
133
+ chunk_size,
134
+ chunk_overlap,
135
+ was_merged,
136
+ current_size_bytes=current_size,
137
+ size_limit_reached=size_limit_reached,
138
+ total_requested_urls=len(urls),
139
+ )
140
+
141
+ logger.info(
142
+ f"[{agent_id}] Scrape and index operation completed successfully"
143
+ )
144
+ return response
145
+
146
+ except Exception as e:
147
+ # Extract agent_id for error logging if possible
148
+ agent_id = "UNKNOWN"
149
+ try:
150
+ if config:
151
+ context = self.context_from_config(config)
152
+ if context and context.agent and context.agent.id:
153
+ agent_id = context.agent.id
154
+ except Exception:
155
+ pass
156
+
157
+ logger.error(f"[{agent_id}] Error in ScrapeAndIndex: {e}", exc_info=True)
158
+ raise type(e)(f"[agent:{agent_id}]: {e}") from e
159
+
160
+
161
+ class QueryIndexedContent(WebScraperBaseTool):
162
+ """Tool for querying previously indexed web content.
163
+
164
+ This tool searches through content that was previously scraped and indexed
165
+ using the scrape_and_index tool to answer questions or find relevant information.
166
+ """
167
+
168
+ name: str = "web_scraper_query_indexed_content"
169
+ description: str = (
170
+ "Query previously indexed web content to find relevant information and answer questions.\n"
171
+ "Use this tool to search through content that was previously scraped and indexed.\n"
172
+ "This tool can help answer questions based on the indexed web content."
173
+ )
174
+ args_schema: Type[BaseModel] = QueryIndexInput
175
+
176
+ async def _arun(
177
+ self,
178
+ query: str,
179
+ max_results: int = 4,
180
+ config: RunnableConfig = None,
181
+ **kwargs,
182
+ ) -> str:
183
+ """Query the indexed content."""
184
+ try:
185
+ # Get agent context - throw error if not available
186
+ if not config:
187
+ raise ValueError("Configuration is required but not provided")
188
+
189
+ context = self.context_from_config(config)
190
+ if not context or not context.agent or not context.agent.id:
191
+ raise ValueError("Agent ID is required but not found in configuration")
192
+
193
+ agent_id = context.agent.id
194
+
195
+ logger.info(f"[{agent_id}] Starting query operation: '{query}'")
196
+
197
+ # Retrieve vector store
198
+ vector_store_key = f"vector_store_{agent_id}"
199
+
200
+ logger.info(f"[{agent_id}] Looking for vector store: {vector_store_key}")
201
+
202
+ stored_data = await self.skill_store.get_agent_skill_data(
203
+ agent_id, "web_scraper", vector_store_key
204
+ )
205
+
206
+ if not stored_data:
207
+ logger.warning(f"[{agent_id}] No vector store found")
208
+ return "No indexed content found. Please use the scrape_and_index tool first to scrape and index some web content before querying."
209
+
210
+ if not stored_data or "faiss_files" not in stored_data:
211
+ logger.warning(f"[{agent_id}] Invalid stored data structure")
212
+ return "No indexed content found. Please use the scrape_and_index tool first to scrape and index some web content before querying."
213
+
214
+ # Create embeddings and decode vector store
215
+ logger.info(f"[{agent_id}] Decoding vector store")
216
+ vs_manager = VectorStoreManager(self.skill_store)
217
+ embeddings = vs_manager.create_embeddings()
218
+ vector_store = vs_manager.decode_vector_store(
219
+ stored_data["faiss_files"], embeddings
220
+ )
221
+
222
+ logger.info(
223
+ f"[{agent_id}] Vector store loaded, index count: {vector_store.index.ntotal}"
224
+ )
225
+
226
+ # Perform similarity search
227
+ docs = vector_store.similarity_search(query, k=max_results)
228
+ logger.info(f"[{agent_id}] Found {len(docs)} similar documents")
229
+
230
+ if not docs:
231
+ logger.info(f"[{agent_id}] No relevant documents found for query")
232
+ return f"No relevant information found for your query: '{query}'. The indexed content may not contain information related to your search."
233
+
234
+ # Format results
235
+ results = []
236
+ for i, doc in enumerate(docs, 1):
237
+ content = doc.page_content.strip()
238
+ source = doc.metadata.get("source", "Unknown")
239
+ results.append(f"**Source {i}:** {source}\n{content}")
240
+
241
+ response = "\n\n".join(results)
242
+ logger.info(
243
+ f"[{agent_id}] Query completed successfully, returning {len(response)} chars"
244
+ )
245
+
246
+ return response
247
+
248
+ except Exception as e:
249
+ # Extract agent_id for error logging if possible
250
+ agent_id = "UNKNOWN"
251
+ try:
252
+ if config:
253
+ context = self.context_from_config(config)
254
+ if context and context.agent and context.agent.id:
255
+ agent_id = context.agent.id
256
+ except Exception:
257
+ pass
258
+
259
+ logger.error(
260
+ f"[{agent_id}] Error in QueryIndexedContent: {e}", exc_info=True
261
+ )
262
+ raise type(e)(f"[agent:{agent_id}]: {e}") from e