intentkit 0.6.0.dev14__tar.gz → 0.6.0.dev15__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 (398) hide show
  1. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/PKG-INFO +1 -1
  2. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/__init__.py +1 -1
  3. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/agent_schema.json +8 -0
  4. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/pyproject.toml +1 -1
  5. intentkit-0.6.0.dev15/skills/http/README.md +78 -0
  6. intentkit-0.6.0.dev15/skills/http/__init__.py +100 -0
  7. intentkit-0.6.0.dev15/skills/http/base.py +21 -0
  8. intentkit-0.6.0.dev15/skills/http/get.py +96 -0
  9. intentkit-0.6.0.dev15/skills/http/http.svg +15 -0
  10. intentkit-0.6.0.dev15/skills/http/post.py +113 -0
  11. intentkit-0.6.0.dev15/skills/http/put.py +113 -0
  12. intentkit-0.6.0.dev15/skills/http/schema.json +92 -0
  13. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/.gitignore +0 -0
  14. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/LICENSE +0 -0
  15. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/MANIFEST.in +0 -0
  16. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/README.md +0 -0
  17. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/abstracts/__init__.py +0 -0
  18. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/abstracts/agent.py +0 -0
  19. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/abstracts/api.py +0 -0
  20. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/abstracts/engine.py +0 -0
  21. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/abstracts/exception.py +0 -0
  22. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/abstracts/graph.py +0 -0
  23. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/abstracts/skill.py +0 -0
  24. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/abstracts/twitter.py +0 -0
  25. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/clients/__init__.py +0 -0
  26. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/clients/cdp.py +0 -0
  27. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/clients/twitter.py +0 -0
  28. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/config/__init__.py +0 -0
  29. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/config/config.py +0 -0
  30. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/core/__init__.py +0 -0
  31. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/core/agent.py +0 -0
  32. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/core/api.py +0 -0
  33. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/core/client.py +0 -0
  34. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/core/credit.py +0 -0
  35. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/core/engine.py +0 -0
  36. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/core/node.py +0 -0
  37. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/core/prompt.py +0 -0
  38. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/core/skill.py +0 -0
  39. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/agent.py +0 -0
  40. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/agent_data.py +0 -0
  41. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/app_setting.py +0 -0
  42. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/base.py +0 -0
  43. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/chat.py +0 -0
  44. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/conversation.py +0 -0
  45. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/credit.py +0 -0
  46. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/db.py +0 -0
  47. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/db_mig.py +0 -0
  48. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/generator.py +0 -0
  49. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/llm.py +0 -0
  50. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/redis.py +0 -0
  51. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/skill.py +0 -0
  52. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/models/user.py +0 -0
  53. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/__init__.py +0 -0
  54. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/acolyt/__init__.py +0 -0
  55. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/acolyt/acolyt.jpg +0 -0
  56. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/acolyt/ask.py +0 -0
  57. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/acolyt/base.py +0 -0
  58. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/acolyt/schema.json +0 -0
  59. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/aixbt/README.md +0 -0
  60. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/aixbt/__init__.py +0 -0
  61. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/aixbt/aixbt.jpg +0 -0
  62. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/aixbt/base.py +0 -0
  63. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/aixbt/projects.py +0 -0
  64. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/aixbt/schema.json +0 -0
  65. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/allora/__init__.py +0 -0
  66. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/allora/allora.jpeg +0 -0
  67. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/allora/base.py +0 -0
  68. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/allora/price.py +0 -0
  69. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/allora/schema.json +0 -0
  70. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/base.py +0 -0
  71. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/carv/README.md +0 -0
  72. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/carv/__init__.py +0 -0
  73. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/carv/base.py +0 -0
  74. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/carv/carv.webp +0 -0
  75. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/carv/fetch_news.py +0 -0
  76. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/carv/onchain_query.py +0 -0
  77. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/carv/schema.json +0 -0
  78. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/carv/token_info_and_price.py +0 -0
  79. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cdp/__init__.py +0 -0
  80. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cdp/base.py +0 -0
  81. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cdp/cdp.png +0 -0
  82. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cdp/get_balance.py +0 -0
  83. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cdp/schema.json +0 -0
  84. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/chainlist/README.md +0 -0
  85. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/chainlist/__init__.py +0 -0
  86. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/chainlist/base.py +0 -0
  87. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/chainlist/chain_lookup.py +0 -0
  88. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/chainlist/chainlist.png +0 -0
  89. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/chainlist/schema.json +0 -0
  90. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/common/__init__.py +0 -0
  91. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/common/base.py +0 -0
  92. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/common/common.jpg +0 -0
  93. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/common/current_time.py +0 -0
  94. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/common/schema.json +0 -0
  95. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/README.md +0 -0
  96. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/__init__.py +0 -0
  97. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/base.py +0 -0
  98. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/constants.py +0 -0
  99. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/cookiefun.png +0 -0
  100. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/get_account_details.py +0 -0
  101. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/get_account_feed.py +0 -0
  102. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/get_account_smart_followers.py +0 -0
  103. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/get_sectors.py +0 -0
  104. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/schema.json +0 -0
  105. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cookiefun/search_accounts.py +0 -0
  106. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/__init__.py +0 -0
  107. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/api.py +0 -0
  108. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/base.py +0 -0
  109. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/cryptocompare.png +0 -0
  110. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/fetch_news.py +0 -0
  111. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/fetch_price.py +0 -0
  112. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  113. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  114. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/fetch_top_volume.py +0 -0
  115. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/fetch_trading_signals.py +0 -0
  116. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptocompare/schema.json +0 -0
  117. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptopanic/__init__.py +0 -0
  118. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptopanic/base.py +0 -0
  119. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptopanic/cryptopanic.png +0 -0
  120. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  121. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  122. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/cryptopanic/schema.json +0 -0
  123. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dapplooker/README.md +0 -0
  124. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dapplooker/__init__.py +0 -0
  125. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dapplooker/base.py +0 -0
  126. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dapplooker/dapplooker.jpg +0 -0
  127. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dapplooker/dapplooker_token_data.py +0 -0
  128. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dapplooker/schema.json +0 -0
  129. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/__init__.py +0 -0
  130. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/api.py +0 -0
  131. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/base.py +0 -0
  132. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/coins/__init__.py +0 -0
  133. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  134. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/coins/fetch_block.py +0 -0
  135. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/coins/fetch_current_prices.py +0 -0
  136. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/coins/fetch_first_price.py +0 -0
  137. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  138. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/coins/fetch_price_chart.py +0 -0
  139. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  140. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/config/__init__.py +0 -0
  141. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/config/chains.py +0 -0
  142. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/defillama.jpeg +0 -0
  143. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/fees/__init__.py +0 -0
  144. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  145. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/schema.json +0 -0
  146. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/stablecoins/__init__.py +0 -0
  147. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  148. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  149. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  150. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  151. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tests/__init__.py +0 -0
  152. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tests/api_integration.test.py +0 -0
  153. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tests/api_unit.test.py +0 -0
  154. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tvl/__init__.py +0 -0
  155. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  156. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tvl/fetch_chains.py +0 -0
  157. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  158. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tvl/fetch_protocol.py +0 -0
  159. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  160. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/tvl/fetch_protocols.py +0 -0
  161. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/volumes/__init__.py +0 -0
  162. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  163. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  164. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  165. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/yields/__init__.py +0 -0
  166. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  167. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/defillama/yields/fetch_pools.py +0 -0
  168. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dexscreener/__init__.py +0 -0
  169. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dexscreener/base.py +0 -0
  170. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dexscreener/dexscreener.png +0 -0
  171. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dexscreener/model/__init__.py +0 -0
  172. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dexscreener/model/search_token_response.py +0 -0
  173. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dexscreener/schema.json +0 -0
  174. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dexscreener/search_token.py +0 -0
  175. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dune_analytics/__init__.py +0 -0
  176. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dune_analytics/base.py +0 -0
  177. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dune_analytics/dune.png +0 -0
  178. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  179. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  180. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/dune_analytics/schema.json +0 -0
  181. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/elfa/README.md +0 -0
  182. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/elfa/__init__.py +0 -0
  183. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/elfa/base.py +0 -0
  184. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/elfa/elfa.jpg +0 -0
  185. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/elfa/mention.py +0 -0
  186. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/elfa/schema.json +0 -0
  187. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/elfa/stats.py +0 -0
  188. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/elfa/tokens.py +0 -0
  189. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/README.md +0 -0
  190. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/__init__.py +0 -0
  191. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/abi/__init__.py +0 -0
  192. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/abi/approval.py +0 -0
  193. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/abi/erc20.py +0 -0
  194. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/abi/route.py +0 -0
  195. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/base.py +0 -0
  196. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/best_yield.py +0 -0
  197. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/enso.jpg +0 -0
  198. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/networks.py +0 -0
  199. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/prices.py +0 -0
  200. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/route.py +0 -0
  201. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/schema.json +0 -0
  202. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/tokens.py +0 -0
  203. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/enso/wallet.py +0 -0
  204. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/README.md +0 -0
  205. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/__init__.py +0 -0
  206. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/base.py +0 -0
  207. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/clear.py +0 -0
  208. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/crawl.py +0 -0
  209. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/firecrawl.png +0 -0
  210. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/query.py +0 -0
  211. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/schema.json +0 -0
  212. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/scrape.py +0 -0
  213. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/firecrawl/utils.py +0 -0
  214. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/github/README.md +0 -0
  215. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/github/__init__.py +0 -0
  216. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/github/base.py +0 -0
  217. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/github/github.jpg +0 -0
  218. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/github/github_search.py +0 -0
  219. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/github/schema.json +0 -0
  220. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/__init__.py +0 -0
  221. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/base.py +0 -0
  222. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/heurist.png +0 -0
  223. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/image_generation_animagine_xl.py +0 -0
  224. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/image_generation_arthemy_comics.py +0 -0
  225. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/image_generation_arthemy_real.py +0 -0
  226. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/image_generation_braindance.py +0 -0
  227. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  228. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/image_generation_flux_1_dev.py +0 -0
  229. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/image_generation_sdxl.py +0 -0
  230. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/heurist/schema.json +0 -0
  231. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/lifi/README.md +0 -0
  232. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/lifi/__init__.py +0 -0
  233. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/lifi/base.py +0 -0
  234. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/lifi/lifi.png +0 -0
  235. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/lifi/schema.json +0 -0
  236. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/lifi/token_execute.py +0 -0
  237. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/lifi/token_quote.py +0 -0
  238. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/lifi/utils.py +0 -0
  239. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/README.md +0 -0
  240. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/__init__.py +0 -0
  241. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/api.py +0 -0
  242. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/base.py +0 -0
  243. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/fetch_chain_portfolio.py +0 -0
  244. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/fetch_nft_portfolio.py +0 -0
  245. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/fetch_solana_portfolio.py +0 -0
  246. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  247. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/moralis.png +0 -0
  248. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/schema.json +0 -0
  249. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/tests/__init__.py +0 -0
  250. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/moralis/tests/test_wallet.py +0 -0
  251. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/nation/__init__.py +0 -0
  252. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/nation/base.py +0 -0
  253. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/nation/nation.png +0 -0
  254. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/nation/nft_check.py +0 -0
  255. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/nation/schema.json +0 -0
  256. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/openai/__init__.py +0 -0
  257. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/openai/base.py +0 -0
  258. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/openai/dalle_image_generation.py +0 -0
  259. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/openai/gpt_image_generation.py +0 -0
  260. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/openai/gpt_image_to_image.py +0 -0
  261. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/openai/image_to_text.py +0 -0
  262. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/openai/openai.png +0 -0
  263. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/openai/schema.json +0 -0
  264. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/README.md +0 -0
  265. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/__init__.py +0 -0
  266. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/base.py +0 -0
  267. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/constants.py +0 -0
  268. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/moralis.png +0 -0
  269. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/schema.json +0 -0
  270. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/token_balances.py +0 -0
  271. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/wallet_approvals.py +0 -0
  272. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/wallet_defi_positions.py +0 -0
  273. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/wallet_history.py +0 -0
  274. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/wallet_net_worth.py +0 -0
  275. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/wallet_nfts.py +0 -0
  276. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/wallet_profitability.py +0 -0
  277. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/wallet_profitability_summary.py +0 -0
  278. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/wallet_stats.py +0 -0
  279. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/portfolio/wallet_swaps.py +0 -0
  280. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/skills.toml +0 -0
  281. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/slack/__init__.py +0 -0
  282. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/slack/base.py +0 -0
  283. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/slack/get_channel.py +0 -0
  284. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/slack/get_message.py +0 -0
  285. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/slack/schedule_message.py +0 -0
  286. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/slack/schema.json +0 -0
  287. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/slack/send_message.py +0 -0
  288. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/slack/slack.jpg +0 -0
  289. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/__init__.py +0 -0
  290. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/base.py +0 -0
  291. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/delete_data.py +0 -0
  292. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/fetch_data.py +0 -0
  293. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/insert_data.py +0 -0
  294. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/invoke_function.py +0 -0
  295. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/schema.json +0 -0
  296. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/supabase.svg +0 -0
  297. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/update_data.py +0 -0
  298. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/supabase/upsert_data.py +0 -0
  299. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/system/__init__.py +0 -0
  300. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/system/base.py +0 -0
  301. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/system/read_agent_api_key.py +0 -0
  302. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/system/regenerate_agent_api_key.py +0 -0
  303. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/system/schema.json +0 -0
  304. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/system/system.svg +0 -0
  305. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/tavily/README.md +0 -0
  306. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/tavily/__init__.py +0 -0
  307. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/tavily/base.py +0 -0
  308. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/tavily/schema.json +0 -0
  309. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/tavily/tavily.jpg +0 -0
  310. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/tavily/tavily_extract.py +0 -0
  311. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/tavily/tavily_search.py +0 -0
  312. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/README.md +0 -0
  313. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/__init__.py +0 -0
  314. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/base.py +0 -0
  315. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/constants.py +0 -0
  316. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/erc20_transfers.py +0 -0
  317. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/moralis.png +0 -0
  318. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/schema.json +0 -0
  319. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/token_analytics.py +0 -0
  320. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/token_price.py +0 -0
  321. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/token/token_search.py +0 -0
  322. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/__init__.py +0 -0
  323. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/base.py +0 -0
  324. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/follow_user.py +0 -0
  325. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/get_mentions.py +0 -0
  326. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/get_timeline.py +0 -0
  327. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/get_user_by_username.py +0 -0
  328. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/get_user_tweets.py +0 -0
  329. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/like_tweet.py +0 -0
  330. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/post_tweet.py +0 -0
  331. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/reply_tweet.py +0 -0
  332. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/retweet.py +0 -0
  333. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/schema.json +0 -0
  334. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/search_tweets.py +0 -0
  335. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/twitter/twitter.png +0 -0
  336. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/unrealspeech/__init__.py +0 -0
  337. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/unrealspeech/base.py +0 -0
  338. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/unrealspeech/schema.json +0 -0
  339. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/unrealspeech/text_to_speech.py +0 -0
  340. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/unrealspeech/unrealspeech.jpg +0 -0
  341. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_audio/__init__.py +0 -0
  342. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_audio/base.py +0 -0
  343. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_audio/input.py +0 -0
  344. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_audio/schema.json +0 -0
  345. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_audio/venice_audio.py +0 -0
  346. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_audio/venice_logo.jpg +0 -0
  347. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/README.md +0 -0
  348. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/__init__.py +0 -0
  349. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/api.py +0 -0
  350. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/base.py +0 -0
  351. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/config.py +0 -0
  352. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_enhance/README.md +0 -0
  353. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_enhance/__init__.py +0 -0
  354. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  355. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  356. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  357. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/README.md +0 -0
  358. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/__init__.py +0 -0
  359. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  360. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  361. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  362. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  363. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  364. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  365. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  366. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  367. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  368. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_upscale/README.md +0 -0
  369. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_upscale/__init__.py +0 -0
  370. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  371. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  372. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  373. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_vision/README.md +0 -0
  374. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_vision/__init__.py +0 -0
  375. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_vision/image_vision.py +0 -0
  376. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  377. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  378. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/schema.json +0 -0
  379. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/utils.py +0 -0
  380. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/venice_image/venice_image.jpg +0 -0
  381. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/web_scraper/README.md +0 -0
  382. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/web_scraper/__init__.py +0 -0
  383. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/web_scraper/base.py +0 -0
  384. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/web_scraper/document_indexer.py +0 -0
  385. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/web_scraper/langchain.png +0 -0
  386. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/web_scraper/schema.json +0 -0
  387. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/web_scraper/scrape_and_index.py +0 -0
  388. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/web_scraper/utils.py +0 -0
  389. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/skills/web_scraper/website_indexer.py +0 -0
  390. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/utils/__init__.py +0 -0
  391. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/utils/chain.py +0 -0
  392. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/utils/error.py +0 -0
  393. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/utils/logging.py +0 -0
  394. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/utils/middleware.py +0 -0
  395. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/utils/random.py +0 -0
  396. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/utils/s3.py +0 -0
  397. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/utils/slack_alert.py +0 -0
  398. {intentkit-0.6.0.dev14 → intentkit-0.6.0.dev15}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.6.0.dev14
3
+ Version: 0.6.0.dev15
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.14"
6
+ __version__ = "0.6.0-dev.15"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -535,6 +535,10 @@
535
535
  "title": "System",
536
536
  "$ref": "../skills/system/schema.json"
537
537
  },
538
+ "http": {
539
+ "title": "HTTP Client",
540
+ "$ref": "../skills/http/schema.json"
541
+ },
538
542
  "web_scraper": {
539
543
  "title": "Web Scraper & Content Indexing",
540
544
  "$ref": "../skills/web_scraper/schema.json"
@@ -567,6 +571,10 @@
567
571
  "title": "Slack",
568
572
  "$ref": "../skills/slack/schema.json"
569
573
  },
574
+ "supabase": {
575
+ "title": "Supabase",
576
+ "$ref": "../skills/supabase/schema.json"
577
+ },
570
578
  "venice_audio": {
571
579
  "title": "Venice Audio",
572
580
  "$ref": "../skills/venice_audio/schema.json"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.6.0-dev.14"
3
+ version = "0.6.0-dev.15"
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"
@@ -0,0 +1,78 @@
1
+ # HTTP Client Skills
2
+
3
+ This skill category provides HTTP client functionality for making web requests using the httpx async client library.
4
+
5
+ ## Available Skills
6
+
7
+ ### http_get
8
+ Make HTTP GET requests to fetch data from web APIs and websites.
9
+
10
+ **Parameters:**
11
+ - `url` (string, required): The URL to send the GET request to
12
+ - `headers` (dict, optional): Custom headers to include in the request
13
+ - `params` (dict, optional): Query parameters to include in the request
14
+ - `timeout` (float, optional): Request timeout in seconds (default: 30)
15
+
16
+ **Example usage:**
17
+ ```
18
+ Fetch data from https://api.example.com/users with timeout of 10 seconds
19
+ ```
20
+
21
+ ### http_post
22
+ Make HTTP POST requests to send data to web APIs and submit forms.
23
+
24
+ **Parameters:**
25
+ - `url` (string, required): The URL to send the POST request to
26
+ - `data` (dict or string, optional): The data to send in the request body
27
+ - `headers` (dict, optional): Custom headers to include in the request
28
+ - `params` (dict, optional): Query parameters to include in the request
29
+ - `timeout` (float, optional): Request timeout in seconds (default: 30)
30
+
31
+ **Example usage:**
32
+ ```
33
+ Send a POST request to https://api.example.com/users with JSON data {"name": "John", "email": "john@example.com"}
34
+ ```
35
+
36
+ ### http_put
37
+ Make HTTP PUT requests to update or replace data on web APIs.
38
+
39
+ **Parameters:**
40
+ - `url` (string, required): The URL to send the PUT request to
41
+ - `data` (dict or string, optional): The data to send in the request body
42
+ - `headers` (dict, optional): Custom headers to include in the request
43
+ - `params` (dict, optional): Query parameters to include in the request
44
+ - `timeout` (float, optional): Request timeout in seconds (default: 30)
45
+
46
+ **Example usage:**
47
+ ```
48
+ Update user data at https://api.example.com/users/123 with {"name": "Jane Doe"}
49
+ ```
50
+
51
+ ## Features
52
+
53
+ - **Async Support**: All HTTP operations are asynchronous using httpx
54
+ - **Automatic JSON Handling**: Dictionary data is automatically sent as JSON with proper Content-Type headers
55
+ - **Error Handling**: Comprehensive error handling for timeouts, HTTP errors, and connection issues
56
+ - **Flexible Data Types**: Support for both JSON (dict) and raw string data in POST/PUT requests
57
+ - **Custom Headers**: Support for custom headers in all request types
58
+ - **Query Parameters**: Support for URL query parameters
59
+ - **Configurable Timeouts**: Customizable request timeouts
60
+
61
+ ## Configuration
62
+
63
+ Each skill can be configured with one of three states:
64
+ - `disabled`: Skill is not available
65
+ - `public`: Available to both agent owner and all users
66
+ - `private`: Available only to the agent owner
67
+
68
+ ## Natural Language Usage
69
+
70
+ These skills are designed to work seamlessly with natural language instructions:
71
+
72
+ - "Get the weather data from the API"
73
+ - "Send a POST request to create a new user"
74
+ - "Update the user profile using PUT request"
75
+ - "Fetch the latest news from the RSS feed"
76
+ - "Submit the form data to the webhook"
77
+
78
+ The AI agent will automatically select the appropriate HTTP method and construct the proper request based on your natural language description.
@@ -0,0 +1,100 @@
1
+ """HTTP client skills."""
2
+
3
+ import logging
4
+ from typing import TypedDict
5
+
6
+ from intentkit.abstracts.skill import SkillStoreABC
7
+ from intentkit.skills.base import SkillConfig, SkillState
8
+ from intentkit.skills.http.base import HttpBaseTool
9
+ from intentkit.skills.http.get import HttpGet
10
+ from intentkit.skills.http.post import HttpPost
11
+ from intentkit.skills.http.put import HttpPut
12
+
13
+ # Cache skills at the system level, because they are stateless
14
+ _cache: dict[str, HttpBaseTool] = {}
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ class SkillStates(TypedDict):
20
+ """Type definition for HTTP skill states."""
21
+
22
+ http_get: SkillState
23
+ http_post: SkillState
24
+ http_put: SkillState
25
+
26
+
27
+ class Config(SkillConfig):
28
+ """Configuration for HTTP client skills."""
29
+
30
+ states: SkillStates
31
+
32
+
33
+ async def get_skills(
34
+ config: "Config",
35
+ is_private: bool,
36
+ store: SkillStoreABC,
37
+ **_,
38
+ ) -> list[HttpBaseTool]:
39
+ """Get all HTTP client skills.
40
+
41
+ Args:
42
+ config: The configuration for HTTP client skills.
43
+ is_private: Whether to include private skills.
44
+ store: The skill store for persisting data.
45
+
46
+ Returns:
47
+ A list of HTTP client skills.
48
+ """
49
+ available_skills = []
50
+
51
+ # Include skills based on their state
52
+ for skill_name, state in config["states"].items():
53
+ if state == "disabled":
54
+ continue
55
+ elif state == "public" or (state == "private" and is_private):
56
+ available_skills.append(skill_name)
57
+
58
+ # Get each skill using the cached getter
59
+ result = []
60
+ for name in available_skills:
61
+ skill = get_http_skill(name, store)
62
+ if skill:
63
+ result.append(skill)
64
+ return result
65
+
66
+
67
+ def get_http_skill(
68
+ name: str,
69
+ store: SkillStoreABC,
70
+ ) -> HttpBaseTool:
71
+ """Get an HTTP client skill by name.
72
+
73
+ Args:
74
+ name: The name of the skill to get
75
+ store: The skill store for persisting data
76
+
77
+ Returns:
78
+ The requested HTTP client skill
79
+ """
80
+ if name == "http_get":
81
+ if name not in _cache:
82
+ _cache[name] = HttpGet(
83
+ skill_store=store,
84
+ )
85
+ return _cache[name]
86
+ elif name == "http_post":
87
+ if name not in _cache:
88
+ _cache[name] = HttpPost(
89
+ skill_store=store,
90
+ )
91
+ return _cache[name]
92
+ elif name == "http_put":
93
+ if name not in _cache:
94
+ _cache[name] = HttpPut(
95
+ skill_store=store,
96
+ )
97
+ return _cache[name]
98
+ else:
99
+ logger.warning(f"Unknown HTTP skill: {name}")
100
+ return None
@@ -0,0 +1,21 @@
1
+ from typing import Type
2
+
3
+ from pydantic import BaseModel, Field
4
+
5
+ from intentkit.abstracts.skill import SkillStoreABC
6
+ from intentkit.skills.base import IntentKitSkill
7
+
8
+
9
+ class HttpBaseTool(IntentKitSkill):
10
+ """Base class for HTTP client tools."""
11
+
12
+ name: str = Field(description="The name of the tool")
13
+ description: str = Field(description="A description of what the tool does")
14
+ args_schema: Type[BaseModel]
15
+ skill_store: SkillStoreABC = Field(
16
+ description="The skill store for persisting data"
17
+ )
18
+
19
+ @property
20
+ def category(self) -> str:
21
+ return "http"
@@ -0,0 +1,96 @@
1
+ import logging
2
+ from typing import Any, Dict, Optional, Type
3
+
4
+ import httpx
5
+ from langchain_core.runnables import RunnableConfig
6
+ from pydantic import BaseModel, Field
7
+
8
+ from intentkit.skills.http.base import HttpBaseTool
9
+
10
+ logger = logging.getLogger(__name__)
11
+
12
+
13
+ class HttpGetInput(BaseModel):
14
+ """Input for HTTP GET request."""
15
+
16
+ url: str = Field(description="The URL to send the GET request to")
17
+ headers: Optional[Dict[str, str]] = Field(
18
+ description="Optional headers to include in the request",
19
+ default=None,
20
+ )
21
+ params: Optional[Dict[str, Any]] = Field(
22
+ description="Optional query parameters to include in the request",
23
+ default=None,
24
+ )
25
+ timeout: Optional[float] = Field(
26
+ description="Request timeout in seconds (default: 30)",
27
+ default=30.0,
28
+ )
29
+
30
+
31
+ class HttpGet(HttpBaseTool):
32
+ """Tool for making HTTP GET requests.
33
+
34
+ This tool allows you to make HTTP GET requests to any URL with optional
35
+ headers and query parameters. It returns the response content as a string.
36
+
37
+ Attributes:
38
+ name: The name of the tool.
39
+ description: A description of what the tool does.
40
+ args_schema: The schema for the tool's input arguments.
41
+ """
42
+
43
+ name: str = "http_get"
44
+ description: str = (
45
+ "Make an HTTP GET request to a specified URL. "
46
+ "You can include custom headers and query parameters. "
47
+ "Returns the response content as text. "
48
+ "Use this when you need to fetch data from web APIs or websites."
49
+ )
50
+ args_schema: Type[BaseModel] = HttpGetInput
51
+
52
+ async def _arun(
53
+ self,
54
+ url: str,
55
+ headers: Optional[Dict[str, str]] = None,
56
+ params: Optional[Dict[str, Any]] = None,
57
+ timeout: float = 30.0,
58
+ config: RunnableConfig = None,
59
+ **kwargs,
60
+ ) -> str:
61
+ """Implementation of the HTTP GET request.
62
+
63
+ Args:
64
+ url: The URL to send the GET request to.
65
+ headers: Optional headers to include in the request.
66
+ params: Optional query parameters to include in the request.
67
+ timeout: Request timeout in seconds.
68
+ config: The runnable config (unused but required by interface).
69
+
70
+ Returns:
71
+ str: The response content as text, or error message if request fails.
72
+ """
73
+ try:
74
+ async with httpx.AsyncClient() as client:
75
+ response = await client.get(
76
+ url=url,
77
+ headers=headers,
78
+ params=params,
79
+ timeout=timeout,
80
+ )
81
+
82
+ # Raise an exception for bad status codes
83
+ response.raise_for_status()
84
+
85
+ # Return response content
86
+ return f"Status: {response.status_code}\nContent: {response.text}"
87
+
88
+ except httpx.TimeoutException:
89
+ return f"Error: Request to {url} timed out after {timeout} seconds"
90
+ except httpx.HTTPStatusError as e:
91
+ return f"Error: HTTP {e.response.status_code} - {e.response.text}"
92
+ except httpx.RequestError as e:
93
+ return f"Error: Failed to connect to {url} - {str(e)}"
94
+ except Exception as e:
95
+ logger.error(f"Unexpected error in HTTP GET request: {e}")
96
+ return f"Error: Unexpected error occurred - {str(e)}"
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
2
+ <!-- Background -->
3
+ <rect width="100" height="100" fill="#2563eb" rx="15"/>
4
+
5
+ <!-- HTTP text -->
6
+ <text x="50" y="35" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="white" text-anchor="middle">HTTP</text>
7
+
8
+ <!-- Arrow indicating request/response -->
9
+ <path d="M20 50 L35 45 L35 48 L65 48 L65 45 L80 50 L65 55 L65 52 L35 52 L35 55 Z" fill="white"/>
10
+
11
+ <!-- Globe/network icon -->
12
+ <circle cx="50" cy="75" r="12" fill="none" stroke="white" stroke-width="2"/>
13
+ <path d="M38 75 Q50 65 62 75 M38 75 Q50 85 62 75" fill="none" stroke="white" stroke-width="1.5"/>
14
+ <line x1="50" y1="63" x2="50" y2="87" stroke="white" stroke-width="1.5"/>
15
+ </svg>
@@ -0,0 +1,113 @@
1
+ import logging
2
+ from typing import Any, Dict, Optional, Type, Union
3
+
4
+ import httpx
5
+ from langchain_core.runnables import RunnableConfig
6
+ from pydantic import BaseModel, Field
7
+
8
+ from intentkit.skills.http.base import HttpBaseTool
9
+
10
+ logger = logging.getLogger(__name__)
11
+
12
+
13
+ class HttpPostInput(BaseModel):
14
+ """Input for HTTP POST request."""
15
+
16
+ url: str = Field(description="The URL to send the POST request to")
17
+ data: Optional[Union[Dict[str, Any], str]] = Field(
18
+ description="The data to send in the request body. Can be a dictionary (will be sent as JSON) or a string",
19
+ default=None,
20
+ )
21
+ headers: Optional[Dict[str, str]] = Field(
22
+ description="Optional headers to include in the request",
23
+ default=None,
24
+ )
25
+ params: Optional[Dict[str, Any]] = Field(
26
+ description="Optional query parameters to include in the request",
27
+ default=None,
28
+ )
29
+ timeout: Optional[float] = Field(
30
+ description="Request timeout in seconds (default: 30)",
31
+ default=30.0,
32
+ )
33
+
34
+
35
+ class HttpPost(HttpBaseTool):
36
+ """Tool for making HTTP POST requests.
37
+
38
+ This tool allows you to make HTTP POST requests to any URL with optional
39
+ headers, query parameters, and request body data. It returns the response content as a string.
40
+
41
+ Attributes:
42
+ name: The name of the tool.
43
+ description: A description of what the tool does.
44
+ args_schema: The schema for the tool's input arguments.
45
+ """
46
+
47
+ name: str = "http_post"
48
+ description: str = (
49
+ "Make an HTTP POST request to a specified URL. "
50
+ "You can include custom headers, query parameters, and request body data. "
51
+ "Data can be provided as a dictionary (sent as JSON) or as a string. "
52
+ "Returns the response content as text. "
53
+ "Use this when you need to send data to web APIs or submit forms."
54
+ )
55
+ args_schema: Type[BaseModel] = HttpPostInput
56
+
57
+ async def _arun(
58
+ self,
59
+ url: str,
60
+ data: Optional[Union[Dict[str, Any], str]] = None,
61
+ headers: Optional[Dict[str, str]] = None,
62
+ params: Optional[Dict[str, Any]] = None,
63
+ timeout: float = 30.0,
64
+ config: RunnableConfig = None,
65
+ **kwargs,
66
+ ) -> str:
67
+ """Implementation of the HTTP POST request.
68
+
69
+ Args:
70
+ url: The URL to send the POST request to.
71
+ data: The data to send in the request body.
72
+ headers: Optional headers to include in the request.
73
+ params: Optional query parameters to include in the request.
74
+ timeout: Request timeout in seconds.
75
+ config: The runnable config (unused but required by interface).
76
+
77
+ Returns:
78
+ str: The response content as text, or error message if request fails.
79
+ """
80
+ try:
81
+ # Prepare headers
82
+ request_headers = headers or {}
83
+
84
+ # If data is a dictionary, send as JSON
85
+ if isinstance(data, dict):
86
+ if "content-type" not in {k.lower() for k in request_headers.keys()}:
87
+ request_headers["Content-Type"] = "application/json"
88
+
89
+ async with httpx.AsyncClient() as client:
90
+ response = await client.post(
91
+ url=url,
92
+ json=data if isinstance(data, dict) else None,
93
+ content=data if isinstance(data, str) else None,
94
+ headers=request_headers,
95
+ params=params,
96
+ timeout=timeout,
97
+ )
98
+
99
+ # Raise an exception for bad status codes
100
+ response.raise_for_status()
101
+
102
+ # Return response content
103
+ return f"Status: {response.status_code}\nContent: {response.text}"
104
+
105
+ except httpx.TimeoutException:
106
+ return f"Error: Request to {url} timed out after {timeout} seconds"
107
+ except httpx.HTTPStatusError as e:
108
+ return f"Error: HTTP {e.response.status_code} - {e.response.text}"
109
+ except httpx.RequestError as e:
110
+ return f"Error: Failed to connect to {url} - {str(e)}"
111
+ except Exception as e:
112
+ logger.error(f"Unexpected error in HTTP POST request: {e}")
113
+ return f"Error: Unexpected error occurred - {str(e)}"
@@ -0,0 +1,113 @@
1
+ import logging
2
+ from typing import Any, Dict, Optional, Type, Union
3
+
4
+ import httpx
5
+ from langchain_core.runnables import RunnableConfig
6
+ from pydantic import BaseModel, Field
7
+
8
+ from intentkit.skills.http.base import HttpBaseTool
9
+
10
+ logger = logging.getLogger(__name__)
11
+
12
+
13
+ class HttpPutInput(BaseModel):
14
+ """Input for HTTP PUT request."""
15
+
16
+ url: str = Field(description="The URL to send the PUT request to")
17
+ data: Optional[Union[Dict[str, Any], str]] = Field(
18
+ description="The data to send in the request body. Can be a dictionary (will be sent as JSON) or a string",
19
+ default=None,
20
+ )
21
+ headers: Optional[Dict[str, str]] = Field(
22
+ description="Optional headers to include in the request",
23
+ default=None,
24
+ )
25
+ params: Optional[Dict[str, Any]] = Field(
26
+ description="Optional query parameters to include in the request",
27
+ default=None,
28
+ )
29
+ timeout: Optional[float] = Field(
30
+ description="Request timeout in seconds (default: 30)",
31
+ default=30.0,
32
+ )
33
+
34
+
35
+ class HttpPut(HttpBaseTool):
36
+ """Tool for making HTTP PUT requests.
37
+
38
+ This tool allows you to make HTTP PUT requests to any URL with optional
39
+ headers, query parameters, and request body data. It returns the response content as a string.
40
+
41
+ Attributes:
42
+ name: The name of the tool.
43
+ description: A description of what the tool does.
44
+ args_schema: The schema for the tool's input arguments.
45
+ """
46
+
47
+ name: str = "http_put"
48
+ description: str = (
49
+ "Make an HTTP PUT request to a specified URL. "
50
+ "You can include custom headers, query parameters, and request body data. "
51
+ "Data can be provided as a dictionary (sent as JSON) or as a string. "
52
+ "Returns the response content as text. "
53
+ "Use this when you need to update or replace data on web APIs."
54
+ )
55
+ args_schema: Type[BaseModel] = HttpPutInput
56
+
57
+ async def _arun(
58
+ self,
59
+ url: str,
60
+ data: Optional[Union[Dict[str, Any], str]] = None,
61
+ headers: Optional[Dict[str, str]] = None,
62
+ params: Optional[Dict[str, Any]] = None,
63
+ timeout: float = 30.0,
64
+ config: RunnableConfig = None,
65
+ **kwargs,
66
+ ) -> str:
67
+ """Implementation of the HTTP PUT request.
68
+
69
+ Args:
70
+ url: The URL to send the PUT request to.
71
+ data: The data to send in the request body.
72
+ headers: Optional headers to include in the request.
73
+ params: Optional query parameters to include in the request.
74
+ timeout: Request timeout in seconds.
75
+ config: The runnable config (unused but required by interface).
76
+
77
+ Returns:
78
+ str: The response content as text, or error message if request fails.
79
+ """
80
+ try:
81
+ # Prepare headers
82
+ request_headers = headers or {}
83
+
84
+ # If data is a dictionary, send as JSON
85
+ if isinstance(data, dict):
86
+ if "content-type" not in {k.lower() for k in request_headers.keys()}:
87
+ request_headers["Content-Type"] = "application/json"
88
+
89
+ async with httpx.AsyncClient() as client:
90
+ response = await client.put(
91
+ url=url,
92
+ json=data if isinstance(data, dict) else None,
93
+ content=data if isinstance(data, str) else None,
94
+ headers=request_headers,
95
+ params=params,
96
+ timeout=timeout,
97
+ )
98
+
99
+ # Raise an exception for bad status codes
100
+ response.raise_for_status()
101
+
102
+ # Return response content
103
+ return f"Status: {response.status_code}\nContent: {response.text}"
104
+
105
+ except httpx.TimeoutException:
106
+ return f"Error: Request to {url} timed out after {timeout} seconds"
107
+ except httpx.HTTPStatusError as e:
108
+ return f"Error: HTTP {e.response.status_code} - {e.response.text}"
109
+ except httpx.RequestError as e:
110
+ return f"Error: Failed to connect to {url} - {str(e)}"
111
+ except Exception as e:
112
+ logger.error(f"Unexpected error in HTTP PUT request: {e}")
113
+ return f"Error: Unexpected error occurred - {str(e)}"
@@ -0,0 +1,92 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "title": "HTTP Client",
5
+ "description": "HTTP client skills for making web requests",
6
+ "x-icon": "https://ai.service.crestal.dev/skills/http/http.jpg",
7
+ "x-tags": [
8
+ "HTTP",
9
+ "Web",
10
+ "API",
11
+ "Client"
12
+ ],
13
+ "properties": {
14
+ "enabled": {
15
+ "type": "boolean",
16
+ "title": "Enabled",
17
+ "description": "Whether this skill is enabled",
18
+ "default": true
19
+ },
20
+ "states": {
21
+ "type": "object",
22
+ "properties": {
23
+ "http_get": {
24
+ "type": "string",
25
+ "title": "HTTP GET",
26
+ "enum": [
27
+ "disabled",
28
+ "public",
29
+ "private"
30
+ ],
31
+ "x-enum-title": [
32
+ "Disabled",
33
+ "Agent Owner + All Users",
34
+ "Agent Owner Only"
35
+ ],
36
+ "description": "Make HTTP GET requests to fetch data from web APIs and websites",
37
+ "default": "private"
38
+ },
39
+ "http_post": {
40
+ "type": "string",
41
+ "title": "HTTP POST",
42
+ "enum": [
43
+ "disabled",
44
+ "public",
45
+ "private"
46
+ ],
47
+ "x-enum-title": [
48
+ "Disabled",
49
+ "Agent Owner + All Users",
50
+ "Agent Owner Only"
51
+ ],
52
+ "description": "Make HTTP POST requests to send data to web APIs and submit forms",
53
+ "default": "private"
54
+ },
55
+ "http_put": {
56
+ "type": "string",
57
+ "title": "HTTP PUT",
58
+ "enum": [
59
+ "disabled",
60
+ "public",
61
+ "private"
62
+ ],
63
+ "x-enum-title": [
64
+ "Disabled",
65
+ "Agent Owner + All Users",
66
+ "Agent Owner Only"
67
+ ],
68
+ "description": "Make HTTP PUT requests to update or replace data on web APIs",
69
+ "default": "private"
70
+ }
71
+ },
72
+ "description": "States for each HTTP client skill (disabled, public, or private)"
73
+ },
74
+ "api_key_provider": {
75
+ "type": "string",
76
+ "title": "API Key Provider",
77
+ "description": "Who provides the API key",
78
+ "enum": [
79
+ "platform"
80
+ ],
81
+ "x-enum-title": [
82
+ "Nation Hosted"
83
+ ],
84
+ "default": "platform"
85
+ }
86
+ },
87
+ "required": [
88
+ "states",
89
+ "enabled"
90
+ ],
91
+ "additionalProperties": true
92
+ }
File without changes