intentkit 0.8.11.dev1__tar.gz → 0.8.12.dev1__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 (459) hide show
  1. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/PKG-INFO +1 -1
  2. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/__init__.py +1 -1
  3. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/abstracts/graph.py +4 -0
  4. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/abstracts/skill.py +0 -81
  5. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/agent.py +0 -95
  6. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/engine.py +12 -5
  7. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/skill.py +38 -40
  8. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/pyproject.toml +1 -1
  9. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/base.py +67 -0
  10. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/casino/deck_draw.py +3 -4
  11. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/casino/deck_shuffle.py +4 -2
  12. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/base.py +4 -13
  13. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/fetch_news.py +1 -1
  14. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/fetch_price.py +1 -1
  15. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/fetch_top_exchanges.py +1 -1
  16. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/fetch_top_market_cap.py +1 -1
  17. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/fetch_top_volume.py +1 -1
  18. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/fetch_trading_signals.py +1 -1
  19. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/base.py +3 -9
  20. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/networks.py +1 -6
  21. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/route.py +3 -5
  22. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/tokens.py +2 -12
  23. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/clear.py +3 -6
  24. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/scrape.py +2 -4
  25. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/utils.py +14 -5
  26. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/base.py +4 -13
  27. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/follow_user.py +1 -3
  28. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/get_mentions.py +2 -7
  29. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/get_timeline.py +3 -9
  30. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/get_user_by_username.py +1 -3
  31. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/get_user_tweets.py +3 -9
  32. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/like_tweet.py +1 -3
  33. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/post_tweet.py +1 -3
  34. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/reply_tweet.py +1 -3
  35. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/retweet.py +1 -3
  36. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/search_tweets.py +3 -9
  37. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/web_scraper/scrape_and_index.py +2 -4
  38. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/web_scraper/utils.py +7 -11
  39. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/.gitignore +0 -0
  40. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/LICENSE +0 -0
  41. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/MANIFEST.in +0 -0
  42. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/README.md +0 -0
  43. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/abstracts/__init__.py +0 -0
  44. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/abstracts/agent.py +0 -0
  45. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/abstracts/api.py +0 -0
  46. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/abstracts/engine.py +0 -0
  47. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/abstracts/twitter.py +0 -0
  48. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/clients/__init__.py +0 -0
  49. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/clients/cdp.py +0 -0
  50. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/clients/twitter.py +0 -0
  51. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/clients/web3.py +0 -0
  52. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/config/__init__.py +0 -0
  53. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/config/config.py +0 -0
  54. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/__init__.py +0 -0
  55. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/api.py +0 -0
  56. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/asset.py +0 -0
  57. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/chat.py +0 -0
  58. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/client.py +0 -0
  59. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/credit.py +0 -0
  60. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/node.py +0 -0
  61. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/prompt.py +0 -0
  62. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/scheduler.py +0 -0
  63. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/core/statistics.py +0 -0
  64. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/agent.py +0 -0
  65. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/agent_data.py +0 -0
  66. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/agent_public.json +0 -0
  67. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/agent_schema.json +0 -0
  68. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/app_setting.py +0 -0
  69. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/base.py +0 -0
  70. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/chat.py +0 -0
  71. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/conversation.py +0 -0
  72. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/credit.py +0 -0
  73. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/db.py +0 -0
  74. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/db_mig.py +0 -0
  75. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/generator.py +0 -0
  76. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/llm.csv +0 -0
  77. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/llm.py +0 -0
  78. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/redis.py +0 -0
  79. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/skills.csv +0 -0
  80. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/models/user.py +0 -0
  81. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/__init__.py +0 -0
  82. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/acolyt/__init__.py +0 -0
  83. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/acolyt/acolyt.jpg +0 -0
  84. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/acolyt/ask.py +0 -0
  85. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/acolyt/base.py +0 -0
  86. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/acolyt/schema.json +0 -0
  87. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/aixbt/README.md +0 -0
  88. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/aixbt/__init__.py +0 -0
  89. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/aixbt/aixbt.jpg +0 -0
  90. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/aixbt/base.py +0 -0
  91. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/aixbt/projects.py +0 -0
  92. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/aixbt/schema.json +0 -0
  93. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/allora/__init__.py +0 -0
  94. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/allora/allora.jpeg +0 -0
  95. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/allora/base.py +0 -0
  96. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/allora/price.py +0 -0
  97. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/allora/schema.json +0 -0
  98. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/basename/__init__.py +0 -0
  99. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/basename/base.py +0 -0
  100. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/basename/basename.svg +0 -0
  101. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/basename/schema.json +0 -0
  102. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/carv/README.md +0 -0
  103. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/carv/__init__.py +0 -0
  104. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/carv/base.py +0 -0
  105. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/carv/carv.webp +0 -0
  106. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/carv/fetch_news.py +0 -0
  107. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/carv/onchain_query.py +0 -0
  108. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/carv/schema.json +0 -0
  109. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/carv/token_info_and_price.py +0 -0
  110. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/casino/README.md +0 -0
  111. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/casino/__init__.py +0 -0
  112. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/casino/base.py +0 -0
  113. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/casino/casino.png +0 -0
  114. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/casino/dice_roll.py +0 -0
  115. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/casino/schema.json +0 -0
  116. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/casino/utils.py +0 -0
  117. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cdp/__init__.py +0 -0
  118. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cdp/base.py +0 -0
  119. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cdp/cdp.png +0 -0
  120. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cdp/schema.json +0 -0
  121. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/chainlist/README.md +0 -0
  122. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/chainlist/__init__.py +0 -0
  123. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/chainlist/base.py +0 -0
  124. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/chainlist/chain_lookup.py +0 -0
  125. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/chainlist/chainlist.png +0 -0
  126. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/chainlist/schema.json +0 -0
  127. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/common/__init__.py +0 -0
  128. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/common/base.py +0 -0
  129. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/common/common.jpg +0 -0
  130. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/common/current_time.py +0 -0
  131. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/common/schema.json +0 -0
  132. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/README.md +0 -0
  133. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/__init__.py +0 -0
  134. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/base.py +0 -0
  135. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/constants.py +0 -0
  136. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/cookiefun.png +0 -0
  137. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/get_account_details.py +0 -0
  138. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/get_account_feed.py +0 -0
  139. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/get_account_smart_followers.py +0 -0
  140. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/get_sectors.py +0 -0
  141. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/schema.json +0 -0
  142. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cookiefun/search_accounts.py +0 -0
  143. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/__init__.py +0 -0
  144. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/api.py +0 -0
  145. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/cryptocompare.png +0 -0
  146. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptocompare/schema.json +0 -0
  147. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptopanic/__init__.py +0 -0
  148. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptopanic/base.py +0 -0
  149. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptopanic/cryptopanic.png +0 -0
  150. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptopanic/fetch_crypto_news.py +0 -0
  151. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  152. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/cryptopanic/schema.json +0 -0
  153. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dapplooker/README.md +0 -0
  154. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dapplooker/__init__.py +0 -0
  155. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dapplooker/base.py +0 -0
  156. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dapplooker/dapplooker.jpg +0 -0
  157. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dapplooker/dapplooker_token_data.py +0 -0
  158. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dapplooker/schema.json +0 -0
  159. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/__init__.py +0 -0
  160. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/api.py +0 -0
  161. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/coins/__init__.py +0 -0
  162. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  163. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/coins/fetch_block.py +0 -0
  164. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/coins/fetch_current_prices.py +0 -0
  165. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/coins/fetch_first_price.py +0 -0
  166. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/coins/fetch_historical_prices.py +0 -0
  167. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/coins/fetch_price_chart.py +0 -0
  168. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/coins/fetch_price_percentage.py +0 -0
  169. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/config/__init__.py +0 -0
  170. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/config/chains.py +0 -0
  171. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/defillama.jpeg +0 -0
  172. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/fees/__init__.py +0 -0
  173. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/fees/fetch_fees_overview.py +0 -0
  174. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/schema.json +0 -0
  175. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/stablecoins/__init__.py +0 -0
  176. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  177. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  178. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  179. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  180. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tests/__init__.py +0 -0
  181. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tests/api_integration.test.py +0 -0
  182. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tests/api_unit.test.py +0 -0
  183. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tvl/__init__.py +0 -0
  184. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  185. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tvl/fetch_chains.py +0 -0
  186. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  187. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tvl/fetch_protocol.py +0 -0
  188. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  189. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/tvl/fetch_protocols.py +0 -0
  190. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/volumes/__init__.py +0 -0
  191. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  192. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  193. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/volumes/fetch_options_overview.py +0 -0
  194. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/yields/__init__.py +0 -0
  195. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/yields/fetch_pool_chart.py +0 -0
  196. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/defillama/yields/fetch_pools.py +0 -0
  197. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/README.md +0 -0
  198. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/__init__.py +0 -0
  199. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/base.py +0 -0
  200. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/dexscreener.png +0 -0
  201. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/get_pair_info.py +0 -0
  202. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/get_token_pairs.py +0 -0
  203. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/get_tokens_info.py +0 -0
  204. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/model/__init__.py +0 -0
  205. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/model/search_token_response.py +0 -0
  206. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/schema.json +0 -0
  207. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/search_token.py +0 -0
  208. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dexscreener/utils.py +0 -0
  209. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dune_analytics/__init__.py +0 -0
  210. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dune_analytics/base.py +0 -0
  211. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dune_analytics/dune.png +0 -0
  212. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dune_analytics/fetch_kol_buys.py +0 -0
  213. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  214. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/dune_analytics/schema.json +0 -0
  215. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/elfa/README.md +0 -0
  216. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/elfa/__init__.py +0 -0
  217. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/elfa/base.py +0 -0
  218. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/elfa/elfa.jpg +0 -0
  219. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/elfa/mention.py +0 -0
  220. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/elfa/schema.json +0 -0
  221. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/elfa/stats.py +0 -0
  222. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/elfa/tokens.py +0 -0
  223. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/elfa/utils.py +0 -0
  224. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/README.md +0 -0
  225. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/__init__.py +0 -0
  226. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/abi/__init__.py +0 -0
  227. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/abi/approval.py +0 -0
  228. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/abi/erc20.py +0 -0
  229. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/abi/route.py +0 -0
  230. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/base.py +0 -0
  231. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/best_yield.py +0 -0
  232. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/enso.jpg +0 -0
  233. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/prices.py +0 -0
  234. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/schema.json +0 -0
  235. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/enso/wallet.py +0 -0
  236. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/erc20/__init__.py +0 -0
  237. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/erc20/base.py +0 -0
  238. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/erc20/erc20.svg +0 -0
  239. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/erc20/schema.json +0 -0
  240. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/erc721/__init__.py +0 -0
  241. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/erc721/base.py +0 -0
  242. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/erc721/erc721.svg +0 -0
  243. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/erc721/schema.json +0 -0
  244. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/README.md +0 -0
  245. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/__init__.py +0 -0
  246. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/base.py +0 -0
  247. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/crawl.py +0 -0
  248. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/firecrawl.png +0 -0
  249. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/query.py +0 -0
  250. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/firecrawl/schema.json +0 -0
  251. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/github/README.md +0 -0
  252. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/github/__init__.py +0 -0
  253. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/github/base.py +0 -0
  254. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/github/github.jpg +0 -0
  255. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/github/github_search.py +0 -0
  256. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/github/schema.json +0 -0
  257. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/__init__.py +0 -0
  258. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/base.py +0 -0
  259. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/heurist.png +0 -0
  260. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/image_generation_animagine_xl.py +0 -0
  261. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/image_generation_arthemy_comics.py +0 -0
  262. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/image_generation_arthemy_real.py +0 -0
  263. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/image_generation_braindance.py +0 -0
  264. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  265. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/image_generation_flux_1_dev.py +0 -0
  266. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/image_generation_sdxl.py +0 -0
  267. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/heurist/schema.json +0 -0
  268. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/http/README.md +0 -0
  269. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/http/__init__.py +0 -0
  270. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/http/base.py +0 -0
  271. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/http/get.py +0 -0
  272. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/http/http.svg +0 -0
  273. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/http/post.py +0 -0
  274. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/http/put.py +0 -0
  275. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/http/schema.json +0 -0
  276. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/lifi/README.md +0 -0
  277. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/lifi/__init__.py +0 -0
  278. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/lifi/base.py +0 -0
  279. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/lifi/lifi.png +0 -0
  280. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/lifi/schema.json +0 -0
  281. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/lifi/token_execute.py +0 -0
  282. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/lifi/token_quote.py +0 -0
  283. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/lifi/utils.py +0 -0
  284. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/README.md +0 -0
  285. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/__init__.py +0 -0
  286. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/api.py +0 -0
  287. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/base.py +0 -0
  288. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/fetch_chain_portfolio.py +0 -0
  289. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/fetch_nft_portfolio.py +0 -0
  290. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/fetch_solana_portfolio.py +0 -0
  291. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/fetch_wallet_portfolio.py +0 -0
  292. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/moralis.png +0 -0
  293. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/moralis/schema.json +0 -0
  294. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/morpho/__init__.py +0 -0
  295. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/morpho/base.py +0 -0
  296. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/morpho/morpho.svg +0 -0
  297. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/morpho/schema.json +0 -0
  298. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/nation/__init__.py +0 -0
  299. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/nation/base.py +0 -0
  300. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/nation/nation.png +0 -0
  301. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/nation/nft_check.py +0 -0
  302. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/nation/schema.json +0 -0
  303. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/openai/__init__.py +0 -0
  304. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/openai/base.py +0 -0
  305. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/openai/dalle_image_generation.py +0 -0
  306. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/openai/gpt_image_generation.py +0 -0
  307. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/openai/gpt_image_to_image.py +0 -0
  308. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/openai/image_to_text.py +0 -0
  309. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/openai/openai.png +0 -0
  310. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/openai/schema.json +0 -0
  311. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/README.md +0 -0
  312. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/__init__.py +0 -0
  313. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/base.py +0 -0
  314. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/constants.py +0 -0
  315. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/moralis.png +0 -0
  316. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/schema.json +0 -0
  317. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/token_balances.py +0 -0
  318. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/wallet_approvals.py +0 -0
  319. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/wallet_defi_positions.py +0 -0
  320. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/wallet_history.py +0 -0
  321. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/wallet_net_worth.py +0 -0
  322. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/wallet_nfts.py +0 -0
  323. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/wallet_profitability.py +0 -0
  324. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/wallet_profitability_summary.py +0 -0
  325. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/wallet_stats.py +0 -0
  326. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/portfolio/wallet_swaps.py +0 -0
  327. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/pyth/__init__.py +0 -0
  328. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/pyth/base.py +0 -0
  329. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/pyth/pyth.svg +0 -0
  330. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/pyth/schema.json +0 -0
  331. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/skills.toml +0 -0
  332. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/slack/__init__.py +0 -0
  333. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/slack/base.py +0 -0
  334. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/slack/get_channel.py +0 -0
  335. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/slack/get_message.py +0 -0
  336. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/slack/schedule_message.py +0 -0
  337. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/slack/schema.json +0 -0
  338. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/slack/send_message.py +0 -0
  339. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/slack/slack.jpg +0 -0
  340. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/__init__.py +0 -0
  341. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/base.py +0 -0
  342. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/delete_data.py +0 -0
  343. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/fetch_data.py +0 -0
  344. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/insert_data.py +0 -0
  345. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/invoke_function.py +0 -0
  346. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/schema.json +0 -0
  347. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/supabase.svg +0 -0
  348. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/update_data.py +0 -0
  349. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/supabase/upsert_data.py +0 -0
  350. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/superfluid/__init__.py +0 -0
  351. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/superfluid/base.py +0 -0
  352. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/superfluid/schema.json +0 -0
  353. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/superfluid/superfluid.svg +0 -0
  354. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/__init__.py +0 -0
  355. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/add_autonomous_task.py +0 -0
  356. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/base.py +0 -0
  357. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/delete_autonomous_task.py +0 -0
  358. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/edit_autonomous_task.py +0 -0
  359. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/list_autonomous_tasks.py +0 -0
  360. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/read_agent_api_key.py +0 -0
  361. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/regenerate_agent_api_key.py +0 -0
  362. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/schema.json +0 -0
  363. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/system/system.svg +0 -0
  364. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/tavily/README.md +0 -0
  365. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/tavily/__init__.py +0 -0
  366. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/tavily/base.py +0 -0
  367. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/tavily/schema.json +0 -0
  368. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/tavily/tavily.jpg +0 -0
  369. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/tavily/tavily_extract.py +0 -0
  370. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/tavily/tavily_search.py +0 -0
  371. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/README.md +0 -0
  372. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/__init__.py +0 -0
  373. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/base.py +0 -0
  374. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/constants.py +0 -0
  375. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/erc20_transfers.py +0 -0
  376. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/moralis.png +0 -0
  377. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/schema.json +0 -0
  378. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/token_analytics.py +0 -0
  379. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/token_price.py +0 -0
  380. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/token/token_search.py +0 -0
  381. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/__init__.py +0 -0
  382. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/schema.json +0 -0
  383. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/twitter/twitter.png +0 -0
  384. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/unrealspeech/__init__.py +0 -0
  385. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/unrealspeech/base.py +0 -0
  386. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/unrealspeech/schema.json +0 -0
  387. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/unrealspeech/text_to_speech.py +0 -0
  388. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/unrealspeech/unrealspeech.jpg +0 -0
  389. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_audio/__init__.py +0 -0
  390. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_audio/base.py +0 -0
  391. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_audio/input.py +0 -0
  392. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_audio/schema.json +0 -0
  393. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_audio/venice_audio.py +0 -0
  394. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_audio/venice_logo.jpg +0 -0
  395. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/README.md +0 -0
  396. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/__init__.py +0 -0
  397. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/api.py +0 -0
  398. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/base.py +0 -0
  399. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/config.py +0 -0
  400. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_enhance/README.md +0 -0
  401. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_enhance/__init__.py +0 -0
  402. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_enhance/image_enhance.py +0 -0
  403. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  404. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  405. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/README.md +0 -0
  406. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/__init__.py +0 -0
  407. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/image_generation_base.py +0 -0
  408. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  409. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  410. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  411. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/image_generation_input.py +0 -0
  412. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  413. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  414. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  415. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  416. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_upscale/README.md +0 -0
  417. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_upscale/__init__.py +0 -0
  418. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_upscale/image_upscale.py +0 -0
  419. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  420. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  421. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_vision/README.md +0 -0
  422. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_vision/__init__.py +0 -0
  423. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_vision/image_vision.py +0 -0
  424. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_vision/image_vision_base.py +0 -0
  425. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/image_vision/image_vision_input.py +0 -0
  426. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/schema.json +0 -0
  427. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/utils.py +0 -0
  428. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/venice_image/venice_image.jpg +0 -0
  429. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/web_scraper/README.md +0 -0
  430. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/web_scraper/__init__.py +0 -0
  431. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/web_scraper/base.py +0 -0
  432. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/web_scraper/document_indexer.py +0 -0
  433. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/web_scraper/langchain.png +0 -0
  434. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/web_scraper/schema.json +0 -0
  435. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/web_scraper/website_indexer.py +0 -0
  436. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/weth/__init__.py +0 -0
  437. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/weth/base.py +0 -0
  438. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/weth/schema.json +0 -0
  439. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/weth/weth.svg +0 -0
  440. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/wow/__init__.py +0 -0
  441. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/wow/base.py +0 -0
  442. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/wow/schema.json +0 -0
  443. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/wow/wow.svg +0 -0
  444. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/xmtp/README.md +0 -0
  445. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/xmtp/__init__.py +0 -0
  446. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/xmtp/base.py +0 -0
  447. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/xmtp/price.py +0 -0
  448. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/xmtp/schema.json +0 -0
  449. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/xmtp/swap.py +0 -0
  450. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/xmtp/transfer.py +0 -0
  451. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/skills/xmtp/xmtp.png +0 -0
  452. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/utils/__init__.py +0 -0
  453. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/utils/chain.py +0 -0
  454. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/utils/error.py +0 -0
  455. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/utils/logging.py +0 -0
  456. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/utils/random.py +0 -0
  457. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/utils/s3.py +0 -0
  458. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/utils/slack_alert.py +0 -0
  459. {intentkit-0.8.11.dev1 → intentkit-0.8.12.dev1}/utils/tx.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.8.11.dev1
3
+ Version: 0.8.12.dev1
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
5
  Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
6
6
  Project-URL: Repository, https://github.com/crestalnetwork/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.8.11-dev1"
6
+ __version__ = "0.8.12-dev1"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
@@ -41,3 +41,7 @@ class AgentContext(BaseModel):
41
41
  @property
42
42
  def agent(self) -> Agent:
43
43
  return self.get_agent()
44
+
45
+ @property
46
+ def thread_id(self) -> str:
47
+ return f"{self.agent_id}-{self.chat_id}"
@@ -59,87 +59,6 @@ class SkillStoreABC(ABC):
59
59
  """
60
60
  pass
61
61
 
62
- @staticmethod
63
- @abstractmethod
64
- async def get_agent_skill_data(
65
- agent_id: str, skill: str, key: str
66
- ) -> Optional[Dict[str, Any]]:
67
- """Get skill data for an agent.
68
-
69
- Args:
70
- agent_id: ID of the agent
71
- skill: Name of the skill
72
- key: Data key
73
-
74
- Returns:
75
- Dictionary containing the skill data if found, None otherwise
76
- """
77
- pass
78
-
79
- @staticmethod
80
- @abstractmethod
81
- async def save_agent_skill_data(
82
- agent_id: str, skill: str, key: str, data: Dict[str, Any]
83
- ) -> None:
84
- """Save or update skill data for an agent.
85
-
86
- Args:
87
- agent_id: ID of the agent
88
- skill: Name of the skill
89
- key: Data key
90
- data: JSON data to store
91
- """
92
- pass
93
-
94
- @staticmethod
95
- @abstractmethod
96
- async def delete_agent_skill_data(agent_id: str, skill: str, key: str) -> None:
97
- """Delete skill data for an agent.
98
-
99
- Args:
100
- agent_id: ID of the agent
101
- skill: Name of the skill
102
- key: Data key
103
- """
104
- pass
105
-
106
- @staticmethod
107
- @abstractmethod
108
- async def get_thread_skill_data(
109
- thread_id: str, skill: str, key: str
110
- ) -> Optional[Dict[str, Any]]:
111
- """Get skill data for a thread.
112
-
113
- Args:
114
- thread_id: ID of the thread
115
- skill: Name of the skill
116
- key: Data key
117
-
118
- Returns:
119
- Dictionary containing the skill data if found, None otherwise
120
- """
121
- pass
122
-
123
- @staticmethod
124
- @abstractmethod
125
- async def save_thread_skill_data(
126
- thread_id: str,
127
- agent_id: str,
128
- skill: str,
129
- key: str,
130
- data: Dict[str, Any],
131
- ) -> None:
132
- """Save or update skill data for a thread.
133
-
134
- Args:
135
- thread_id: ID of the thread
136
- agent_id: ID of the agent that owns this thread
137
- skill: Name of the skill
138
- key: Data key
139
- data: JSON data to store
140
- """
141
- pass
142
-
143
62
  @staticmethod
144
63
  @abstractmethod
145
64
  async def list_autonomous_tasks(agent_id: str) -> List[AgentAutonomous]:
@@ -25,12 +25,6 @@ from intentkit.models.credit import (
25
25
  UpstreamType,
26
26
  )
27
27
  from intentkit.models.db import get_session
28
- from intentkit.models.skill import (
29
- AgentSkillData,
30
- AgentSkillDataCreate,
31
- ThreadSkillData,
32
- ThreadSkillDataCreate,
33
- )
34
28
  from intentkit.utils.error import IntentKitAPIError
35
29
  from intentkit.utils.slack_alert import send_slack_message
36
30
 
@@ -522,95 +516,6 @@ class AgentStore(SkillStoreABC):
522
516
  async def get_agent_quota(agent_id: str) -> AgentQuota:
523
517
  return await AgentQuota.get(agent_id)
524
518
 
525
- @staticmethod
526
- async def get_agent_skill_data(
527
- agent_id: str, skill: str, key: str
528
- ) -> Optional[Dict[str, Any]]:
529
- """Get skill data for an agent.
530
-
531
- Args:
532
- agent_id: ID of the agent
533
- skill: Name of the skill
534
- key: Data key
535
-
536
- Returns:
537
- Dictionary containing the skill data if found, None otherwise
538
- """
539
- return await AgentSkillData.get(agent_id, skill, key)
540
-
541
- @staticmethod
542
- async def save_agent_skill_data(
543
- agent_id: str, skill: str, key: str, data: Dict[str, Any]
544
- ) -> None:
545
- """Save or update skill data for an agent.
546
-
547
- Args:
548
- agent_id: ID of the agent
549
- skill: Name of the skill
550
- key: Data key
551
- data: JSON data to store
552
- """
553
- skill_data = AgentSkillDataCreate(
554
- agent_id=agent_id,
555
- skill=skill,
556
- key=key,
557
- data=data,
558
- )
559
- await skill_data.save()
560
-
561
- @staticmethod
562
- async def delete_agent_skill_data(agent_id: str, skill: str, key: str) -> None:
563
- """Delete skill data for an agent.
564
-
565
- Args:
566
- agent_id: ID of the agent
567
- skill: Name of the skill
568
- key: Data key
569
- """
570
- await AgentSkillData.delete(agent_id, skill, key)
571
-
572
- @staticmethod
573
- async def get_thread_skill_data(
574
- thread_id: str, skill: str, key: str
575
- ) -> Optional[Dict[str, Any]]:
576
- """Get skill data for a thread.
577
-
578
- Args:
579
- thread_id: ID of the thread
580
- skill: Name of the skill
581
- key: Data key
582
-
583
- Returns:
584
- Dictionary containing the skill data if found, None otherwise
585
- """
586
- return await ThreadSkillData.get(thread_id, skill, key)
587
-
588
- @staticmethod
589
- async def save_thread_skill_data(
590
- thread_id: str,
591
- agent_id: str,
592
- skill: str,
593
- key: str,
594
- data: Dict[str, Any],
595
- ) -> None:
596
- """Save or update skill data for a thread.
597
-
598
- Args:
599
- thread_id: ID of the thread
600
- agent_id: ID of the agent that owns this thread
601
- skill: Name of the skill
602
- key: Data key
603
- data: JSON data to store
604
- """
605
- skill_data = ThreadSkillDataCreate(
606
- thread_id=thread_id,
607
- agent_id=agent_id,
608
- skill=skill,
609
- key=key,
610
- data=data,
611
- )
612
- await skill_data.save()
613
-
614
519
  @staticmethod
615
520
  async def list_autonomous_tasks(agent_id: str) -> List[AgentAutonomous]:
616
521
  """List all autonomous tasks for an agent.
@@ -21,6 +21,7 @@ from typing import Optional, Tuple
21
21
 
22
22
  import sqlalchemy
23
23
  from epyxid import XID
24
+ from langchain.agents import create_agent as create_react_agent
24
25
  from langchain_core.language_models import BaseChatModel
25
26
  from langchain_core.messages import (
26
27
  BaseMessage,
@@ -29,7 +30,6 @@ from langchain_core.messages import (
29
30
  from langchain_core.tools import BaseTool
30
31
  from langgraph.errors import GraphRecursionError
31
32
  from langgraph.graph.state import CompiledStateGraph
32
- from langgraph.prebuilt import create_react_agent
33
33
  from langgraph.runtime import Runtime
34
34
  from sqlalchemy import func, update
35
35
  from sqlalchemy.exc import SQLAlchemyError
@@ -56,7 +56,7 @@ from intentkit.models.chat import (
56
56
  from intentkit.models.credit import CreditAccount, OwnerType
57
57
  from intentkit.models.db import get_langgraph_checkpointer, get_session
58
58
  from intentkit.models.llm import LLMModelInfo, LLMProvider, create_llm_model
59
- from intentkit.models.skill import AgentSkillData, ThreadSkillData
59
+ from intentkit.models.skill import AgentSkillData, ChatSkillData
60
60
  from intentkit.models.user import User
61
61
  from intentkit.utils.error import IntentKitAPIError
62
62
 
@@ -70,7 +70,9 @@ _agents: dict[str, CompiledStateGraph] = {}
70
70
  _agents_updated: dict[str, datetime] = {}
71
71
 
72
72
 
73
- async def build_agent(agent: Agent, agent_data: AgentData) -> CompiledStateGraph:
73
+ async def build_agent(
74
+ agent: Agent, agent_data: AgentData, custom_skills: list[BaseTool] = []
75
+ ) -> CompiledStateGraph:
74
76
  """Build an AI agent with specified configuration and tools.
75
77
 
76
78
  This function:
@@ -82,7 +84,8 @@ async def build_agent(agent: Agent, agent_data: AgentData) -> CompiledStateGraph
82
84
  Args:
83
85
  agent (Agent): Agent configuration object
84
86
  agent_data (AgentData): Agent data object
85
- is_private (bool, optional): Flag indicating whether the agent is private. Defaults to False.
87
+ custom_skills (list[BaseTool], optional): Designed for advanced user who directly
88
+ call this function to inject custom skills into the agent tool node.
86
89
 
87
90
  Returns:
88
91
  CompiledStateGraph: Initialized LangChain agent
@@ -127,6 +130,10 @@ async def build_agent(agent: Agent, agent_data: AgentData) -> CompiledStateGraph
127
130
  except ImportError as e:
128
131
  logger.error(f"Could not import skill module: {k} ({e})")
129
132
 
133
+ # add custom skills to private tools
134
+ if custom_skills and len(custom_skills) > 0:
135
+ private_tools.extend(custom_skills)
136
+
130
137
  # filter the duplicate tools
131
138
  tools = list({tool.name: tool for tool in tools}.values())
132
139
  private_tools = list({tool.name: tool for tool in private_tools}.values())
@@ -889,7 +896,7 @@ async def clean_agent_memory(
889
896
 
890
897
  if clean_skill:
891
898
  await AgentSkillData.clean_data(agent_id)
892
- await ThreadSkillData.clean_data(agent_id, chat_id)
899
+ await ChatSkillData.clean_data(agent_id, chat_id)
893
900
 
894
901
  async with get_session() as db:
895
902
  if clean_agent:
@@ -213,12 +213,12 @@ class AgentSkillData(AgentSkillDataCreate):
213
213
  await db.commit()
214
214
 
215
215
 
216
- class ThreadSkillDataTable(Base):
217
- """Database table model for storing skill-specific data for threads."""
216
+ class ChatSkillDataTable(Base):
217
+ """Database table model for storing skill-specific data for chats."""
218
218
 
219
- __tablename__ = "thread_skill_data"
219
+ __tablename__ = "chat_skill_data"
220
220
 
221
- thread_id = Column(String, primary_key=True)
221
+ chat_id = Column(String, primary_key=True)
222
222
  skill = Column(String, primary_key=True)
223
223
  key = Column(String, primary_key=True)
224
224
  agent_id = Column(String, nullable=False)
@@ -236,31 +236,29 @@ class ThreadSkillDataTable(Base):
236
236
  )
237
237
 
238
238
 
239
- class ThreadSkillDataCreate(BaseModel):
240
- """Base model for creating thread skill data records."""
239
+ class ChatSkillDataCreate(BaseModel):
240
+ """Base model for creating chat skill data records."""
241
241
 
242
242
  model_config = ConfigDict(from_attributes=True)
243
243
 
244
- thread_id: Annotated[
245
- str, Field(description="ID of the thread this data belongs to")
246
- ]
244
+ chat_id: Annotated[str, Field(description="ID of the chat this data belongs to")]
247
245
  skill: Annotated[str, Field(description="Name of the skill this data is for")]
248
246
  key: Annotated[str, Field(description="Key for this specific piece of data")]
249
- agent_id: Annotated[str, Field(description="ID of the agent that owns this thread")]
247
+ agent_id: Annotated[str, Field(description="ID of the agent that owns this chat")]
250
248
  data: Annotated[Dict[str, Any], Field(description="JSON data stored for this key")]
251
249
 
252
- async def save(self) -> "ThreadSkillData":
250
+ async def save(self) -> "ChatSkillData":
253
251
  """Save or update skill data.
254
252
 
255
253
  Returns:
256
- ThreadSkillData: The saved thread skill data instance
254
+ ChatSkillData: The saved chat skill data instance
257
255
  """
258
256
  async with get_session() as db:
259
257
  record = await db.scalar(
260
- select(ThreadSkillDataTable).where(
261
- ThreadSkillDataTable.thread_id == self.thread_id,
262
- ThreadSkillDataTable.skill == self.skill,
263
- ThreadSkillDataTable.key == self.key,
258
+ select(ChatSkillDataTable).where(
259
+ ChatSkillDataTable.chat_id == self.chat_id,
260
+ ChatSkillDataTable.skill == self.skill,
261
+ ChatSkillDataTable.key == self.key,
264
262
  )
265
263
  )
266
264
 
@@ -270,18 +268,18 @@ class ThreadSkillDataCreate(BaseModel):
270
268
  record.agent_id = self.agent_id
271
269
  else:
272
270
  # Create new record
273
- record = ThreadSkillDataTable(**self.model_dump())
271
+ record = ChatSkillDataTable(**self.model_dump())
274
272
  db.add(record)
275
273
  await db.commit()
276
274
  await db.refresh(record)
277
- return ThreadSkillData.model_validate(record)
275
+ return ChatSkillData.model_validate(record)
278
276
 
279
277
 
280
- class ThreadSkillData(ThreadSkillDataCreate):
281
- """Model for storing skill-specific data for threads.
278
+ class ChatSkillData(ChatSkillDataCreate):
279
+ """Model for storing skill-specific data for chats.
282
280
 
283
- This model uses a composite primary key of (thread_id, skill, key) to store
284
- skill-specific data for threads in a flexible way. It also includes agent_id
281
+ This model uses a composite primary key of (chat_id, skill, key) to store
282
+ skill-specific data for chats in a flexible way. It also includes agent_id
285
283
  as a required field for tracking ownership.
286
284
  """
287
285
 
@@ -298,11 +296,11 @@ class ThreadSkillData(ThreadSkillDataCreate):
298
296
  ]
299
297
 
300
298
  @classmethod
301
- async def get(cls, thread_id: str, skill: str, key: str) -> Optional[dict]:
302
- """Get skill data for a thread.
299
+ async def get(cls, chat_id: str, skill: str, key: str) -> Optional[dict]:
300
+ """Get skill data for a chat.
303
301
 
304
302
  Args:
305
- thread_id: ID of the thread
303
+ chat_id: ID of the chat
306
304
  skill: Name of the skill
307
305
  key: Data key
308
306
 
@@ -311,10 +309,10 @@ class ThreadSkillData(ThreadSkillDataCreate):
311
309
  """
312
310
  async with get_session() as db:
313
311
  record = await db.scalar(
314
- select(ThreadSkillDataTable).where(
315
- ThreadSkillDataTable.thread_id == thread_id,
316
- ThreadSkillDataTable.skill == skill,
317
- ThreadSkillDataTable.key == key,
312
+ select(ChatSkillDataTable).where(
313
+ ChatSkillDataTable.chat_id == chat_id,
314
+ ChatSkillDataTable.skill == skill,
315
+ ChatSkillDataTable.key == key,
318
316
  )
319
317
  )
320
318
  return record.data if record else None
@@ -323,33 +321,33 @@ class ThreadSkillData(ThreadSkillDataCreate):
323
321
  async def clean_data(
324
322
  cls,
325
323
  agent_id: str,
326
- thread_id: Annotated[
324
+ chat_id: Annotated[
327
325
  str,
328
326
  Field(
329
327
  default="",
330
- description="Optional ID of the thread. If provided, only cleans data for that thread.",
328
+ description="Optional ID of the chat. If provided, only cleans data for that chat.",
331
329
  ),
332
330
  ],
333
331
  ):
334
- """Clean all skill data for a thread or agent.
332
+ """Clean all skill data for a chat or agent.
335
333
 
336
334
  Args:
337
335
  agent_id: ID of the agent
338
- thread_id: Optional ID of the thread. If provided, only cleans data for that thread.
339
- If empty, cleans all data for the agent.
336
+ chat_id: Optional ID of the chat. If provided, only cleans data for that chat.
337
+ If empty, cleans all data for the agent.
340
338
  """
341
339
  async with get_session() as db:
342
- if thread_id and thread_id != "":
340
+ if chat_id and chat_id != "":
343
341
  await db.execute(
344
- delete(ThreadSkillDataTable).where(
345
- ThreadSkillDataTable.agent_id == agent_id,
346
- ThreadSkillDataTable.thread_id == thread_id,
342
+ delete(ChatSkillDataTable).where(
343
+ ChatSkillDataTable.agent_id == agent_id,
344
+ ChatSkillDataTable.chat_id == chat_id,
347
345
  )
348
346
  )
349
347
  else:
350
348
  await db.execute(
351
- delete(ThreadSkillDataTable).where(
352
- ThreadSkillDataTable.agent_id == agent_id
349
+ delete(ChatSkillDataTable).where(
350
+ ChatSkillDataTable.agent_id == agent_id
353
351
  )
354
352
  )
355
353
  await db.commit()
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.8.11-dev1"
3
+ version = "0.8.12-dev1"
4
4
  description = "Intent-based AI Agent Platform - Core Package"
5
5
  authors = [{ name = "hyacinthus", email = "hyacinthus@gmail.com" }]
6
6
  requires-python = ">=3.12"
@@ -33,6 +33,12 @@ from intentkit.abstracts.skill import SkillStoreABC
33
33
  from intentkit.clients import get_wallet_provider
34
34
  from intentkit.clients.web3 import get_web3_client
35
35
  from intentkit.models.redis import get_redis
36
+ from intentkit.models.skill import (
37
+ AgentSkillData,
38
+ AgentSkillDataCreate,
39
+ ChatSkillData,
40
+ ChatSkillDataCreate,
41
+ )
36
42
  from intentkit.utils.error import IntentKitAPIError, RateLimitExceeded
37
43
 
38
44
  if TYPE_CHECKING:
@@ -184,6 +190,67 @@ class IntentKitSkill(BaseTool):
184
190
 
185
191
  return get_web3_client(network_id)
186
192
 
193
+ async def get_agent_skill_data(
194
+ self,
195
+ key: str,
196
+ ) -> Optional[Dict[str, Any]]:
197
+ """Retrieve persisted data for this skill scoped to the active agent."""
198
+ return await self.get_agent_skill_data_raw(self.name, key)
199
+
200
+ async def get_agent_skill_data_raw(
201
+ self,
202
+ skill_name: str,
203
+ key: str,
204
+ ) -> Optional[Dict[str, Any]]:
205
+ """Retrieve persisted data for a specific skill scoped to the active agent."""
206
+ context = self.get_context()
207
+ return await AgentSkillData.get(context.agent_id, skill_name, key)
208
+
209
+ async def save_agent_skill_data(self, key: str, data: Dict[str, Any]) -> None:
210
+ """Persist data for this skill scoped to the active agent."""
211
+ await self.save_agent_skill_data_raw(self.name, key, data)
212
+
213
+ async def save_agent_skill_data_raw(
214
+ self,
215
+ skill_name: str,
216
+ key: str,
217
+ data: Dict[str, Any],
218
+ ) -> None:
219
+ """Persist data for a specific skill scoped to the active agent."""
220
+ context = self.get_context()
221
+ skill_data = AgentSkillDataCreate(
222
+ agent_id=context.agent_id,
223
+ skill=skill_name,
224
+ key=key,
225
+ data=data,
226
+ )
227
+ await skill_data.save()
228
+
229
+ async def delete_agent_skill_data(self, key: str) -> None:
230
+ """Remove persisted data for this skill scoped to the active agent."""
231
+ context = self.get_context()
232
+ await AgentSkillData.delete(context.agent_id, self.name, key)
233
+
234
+ async def get_thread_skill_data(
235
+ self,
236
+ key: str,
237
+ ) -> Optional[Dict[str, Any]]:
238
+ """Retrieve persisted data for this skill scoped to the active chat."""
239
+ context = self.get_context()
240
+ return await ChatSkillData.get(context.chat_id, self.name, key)
241
+
242
+ async def save_thread_skill_data(self, key: str, data: Dict[str, Any]) -> None:
243
+ """Persist data for this skill scoped to the active chat."""
244
+ context = self.get_context()
245
+ skill_data = ChatSkillDataCreate(
246
+ chat_id=context.chat_id,
247
+ agent_id=context.agent_id,
248
+ skill=self.name,
249
+ key=key,
250
+ data=data,
251
+ )
252
+ await skill_data.save()
253
+
187
254
 
188
255
  async def get_agentkit_actions(
189
256
  agent_id: str,
@@ -68,8 +68,8 @@ class CasinoDeckDraw(CasinoBaseTool):
68
68
  count = validate_card_count(count)
69
69
 
70
70
  # Get current deck info
71
- deck_info = await self.skill_store.get_agent_skill_data(
72
- context.agent_id, DECK_STORAGE_KEY, CURRENT_DECK_KEY
71
+ deck_info = await self.get_agent_skill_data_raw(
72
+ DECK_STORAGE_KEY, CURRENT_DECK_KEY
73
73
  )
74
74
 
75
75
  deck_id = "new" # Default to new deck
@@ -99,8 +99,7 @@ class CasinoDeckDraw(CasinoBaseTool):
99
99
  else:
100
100
  deck_info["remaining"] = data["remaining"]
101
101
 
102
- await self.skill_store.save_agent_skill_data(
103
- context.agent_id,
102
+ await self.save_agent_skill_data_raw(
104
103
  DECK_STORAGE_KEY,
105
104
  CURRENT_DECK_KEY,
106
105
  deck_info,
@@ -95,8 +95,10 @@ class CasinoDeckShuffle(CasinoBaseTool):
95
95
  "shuffled": data["shuffled"],
96
96
  }
97
97
 
98
- await self.skill_store.save_agent_skill_data(
99
- context.agent_id, DECK_STORAGE_KEY, CURRENT_DECK_KEY, deck_info
98
+ await self.save_agent_skill_data_raw(
99
+ DECK_STORAGE_KEY,
100
+ CURRENT_DECK_KEY,
101
+ deck_info,
100
102
  )
101
103
 
102
104
  return {
@@ -36,22 +36,17 @@ class CryptoCompareBaseTool(IntentKitSkill):
36
36
  def category(self) -> str:
37
37
  return "cryptocompare"
38
38
 
39
- async def check_rate_limit(
40
- self, agent_id: str, max_requests: int = 1, interval: int = 15
41
- ) -> None:
39
+ async def check_rate_limit(self, max_requests: int = 1, interval: int = 15) -> None:
42
40
  """Check if the rate limit has been exceeded.
43
41
 
44
42
  Args:
45
- agent_id: The ID of the agent.
46
43
  max_requests: Maximum number of requests allowed within the rate limit window.
47
44
  interval: Time interval in minutes for the rate limit window.
48
45
 
49
46
  Raises:
50
47
  RateLimitExceeded: If the rate limit has been exceeded.
51
48
  """
52
- rate_limit = await self.skill_store.get_agent_skill_data(
53
- agent_id, self.name, "rate_limit"
54
- )
49
+ rate_limit = await self.get_agent_skill_data("rate_limit")
55
50
 
56
51
  current_time = datetime.now(tz=timezone.utc)
57
52
 
@@ -65,9 +60,7 @@ class CryptoCompareBaseTool(IntentKitSkill):
65
60
  raise RateLimitExceeded("Rate limit exceeded")
66
61
 
67
62
  rate_limit["count"] += 1
68
- await self.skill_store.save_agent_skill_data(
69
- agent_id, self.name, "rate_limit", rate_limit
70
- )
63
+ await self.save_agent_skill_data("rate_limit", rate_limit)
71
64
 
72
65
  return
73
66
 
@@ -76,9 +69,7 @@ class CryptoCompareBaseTool(IntentKitSkill):
76
69
  "count": 1,
77
70
  "reset_time": (current_time + timedelta(minutes=interval)).isoformat(),
78
71
  }
79
- await self.skill_store.save_agent_skill_data(
80
- agent_id, self.name, "rate_limit", new_rate_limit
81
- )
72
+ await self.save_agent_skill_data("rate_limit", new_rate_limit)
82
73
  return
83
74
 
84
75
  async def fetch_price(
@@ -56,7 +56,7 @@ class CryptoCompareFetchNews(CryptoCompareBaseTool):
56
56
  skill_config = context.agent.skill_config(self.category)
57
57
 
58
58
  # Check rate limit
59
- await self.check_rate_limit(context.agent_id, max_requests=5, interval=60)
59
+ await self.check_rate_limit(max_requests=5, interval=60)
60
60
 
61
61
  # Get API key from context
62
62
  api_key = skill_config.get("api_key")
@@ -66,7 +66,7 @@ class CryptoCompareFetchPrice(CryptoCompareBaseTool):
66
66
  skill_config = context.agent.skill_config(self.category)
67
67
 
68
68
  # Check rate limit
69
- await self.check_rate_limit(context.agent_id, max_requests=10, interval=60)
69
+ await self.check_rate_limit(max_requests=10, interval=60)
70
70
 
71
71
  # Get API key from context
72
72
  api_key = skill_config.get("api_key")
@@ -72,7 +72,7 @@ class CryptoCompareFetchTopExchanges(CryptoCompareBaseTool):
72
72
  skill_config = context.agent.skill_config(self.category)
73
73
 
74
74
  # Check rate limit
75
- await self.check_rate_limit(context.agent_id, max_requests=5, interval=60)
75
+ await self.check_rate_limit(max_requests=5, interval=60)
76
76
 
77
77
  # Get API key from context
78
78
  api_key = skill_config.get("api_key")
@@ -65,7 +65,7 @@ class CryptoCompareFetchTopMarketCap(CryptoCompareBaseTool):
65
65
  skill_config = context.agent.skill_config(self.category)
66
66
 
67
67
  # Check rate limit
68
- await self.check_rate_limit(context.agent_id, max_requests=5, interval=60)
68
+ await self.check_rate_limit(max_requests=5, interval=60)
69
69
 
70
70
  # Get API key from context
71
71
  api_key = skill_config.get("api_key")
@@ -64,7 +64,7 @@ class CryptoCompareFetchTopVolume(CryptoCompareBaseTool):
64
64
  skill_config = context.agent.skill_config(self.category)
65
65
 
66
66
  # Check rate limit
67
- await self.check_rate_limit(context.agent_id, max_requests=5, interval=60)
67
+ await self.check_rate_limit(max_requests=5, interval=60)
68
68
 
69
69
  # Get API key from context
70
70
  api_key = skill_config.get("api_key")