intentkit 0.8.34__tar.gz → 0.8.34.dev3__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.
Files changed (481) hide show
  1. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/PKG-INFO +1 -1
  2. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/__init__.py +1 -1
  3. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/config/config.py +6 -8
  4. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/chat.py +5 -2
  5. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/engine.py +6 -8
  6. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/scheduler.py +0 -13
  7. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/db.py +1 -14
  8. intentkit-0.8.34.dev3/intentkit/models/db_mig.py +103 -0
  9. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/skills.csv +1 -0
  10. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_animagine_xl.py +2 -1
  11. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_arthemy_comics.py +2 -1
  12. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_arthemy_real.py +2 -1
  13. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_braindance.py +2 -1
  14. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +2 -1
  15. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_flux_1_dev.py +2 -1
  16. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/image_generation_sdxl.py +2 -1
  17. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/dalle_image_generation.py +1 -1
  18. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/gpt_avatar_generator.py +1 -1
  19. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/gpt_image_generation.py +1 -1
  20. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/gpt_image_mini_generator.py +1 -1
  21. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/gpt_image_to_image.py +1 -1
  22. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/venice_audio.py +1 -1
  23. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/api.py +1 -1
  24. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_base.py +1 -2
  25. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/__init__.py +3 -0
  26. intentkit-0.8.34.dev3/intentkit/skills/x402/ask_agent.py +98 -0
  27. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/schema.json +15 -10
  28. {intentkit-0.8.34/intentkit/clients → intentkit-0.8.34.dev3/intentkit/utils}/s3.py +29 -51
  29. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/pyproject.toml +1 -1
  30. intentkit-0.8.34/intentkit/core/cleanup.py +0 -80
  31. intentkit-0.8.34/intentkit/models/db_mig.py +0 -219
  32. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/.gitignore +0 -0
  33. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/LICENSE +0 -0
  34. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/LICENSE +0 -0
  35. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/MANIFEST.in +0 -0
  36. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/README.md +0 -0
  37. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/__init__.py +0 -0
  38. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/agent.py +0 -0
  39. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/api.py +0 -0
  40. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/engine.py +0 -0
  41. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/graph.py +0 -0
  42. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/skill.py +0 -0
  43. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/abstracts/twitter.py +0 -0
  44. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/clients/__init__.py +0 -0
  45. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/clients/cdp.py +0 -0
  46. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/clients/twitter.py +0 -0
  47. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/clients/web3.py +0 -0
  48. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/config/__init__.py +0 -0
  49. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/__init__.py +0 -0
  50. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/account_checking.py +0 -0
  51. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/agent.py +0 -0
  52. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/api.py +0 -0
  53. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/asset.py +0 -0
  54. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/client.py +0 -0
  55. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/credit.py +0 -0
  56. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/draft.py +0 -0
  57. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/draft_chat.py +0 -0
  58. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/manager/__init__.py +0 -0
  59. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/manager/engine.py +0 -0
  60. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/manager/service.py +0 -0
  61. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/manager/skills.py +0 -0
  62. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/middleware.py +0 -0
  63. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/prompt.py +0 -0
  64. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/core/statistics.py +0 -0
  65. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/agent.py +0 -0
  66. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/agent_data.py +0 -0
  67. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/agent_public.json +0 -0
  68. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/agent_schema.json +0 -0
  69. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/app_setting.py +0 -0
  70. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/base.py +0 -0
  71. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/chat.py +0 -0
  72. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/credit.py +0 -0
  73. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/draft.py +0 -0
  74. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/llm.csv +0 -0
  75. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/llm.py +0 -0
  76. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/redis.py +0 -0
  77. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/skill.py +0 -0
  78. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/team.py +0 -0
  79. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/models/user.py +0 -0
  80. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/__init__.py +0 -0
  81. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/__init__.py +0 -0
  82. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/acolyt.jpg +0 -0
  83. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/ask.py +0 -0
  84. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/base.py +0 -0
  85. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/acolyt/schema.json +0 -0
  86. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/README.md +0 -0
  87. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/__init__.py +0 -0
  88. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/aixbt.jpg +0 -0
  89. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/base.py +0 -0
  90. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/projects.py +0 -0
  91. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/aixbt/schema.json +0 -0
  92. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/__init__.py +0 -0
  93. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/allora.jpeg +0 -0
  94. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/base.py +0 -0
  95. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/price.py +0 -0
  96. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/allora/schema.json +0 -0
  97. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/base.py +0 -0
  98. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/basename/__init__.py +0 -0
  99. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/basename/base.py +0 -0
  100. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/basename/basename.svg +0 -0
  101. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/basename/schema.json +0 -0
  102. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/README.md +0 -0
  103. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/__init__.py +0 -0
  104. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/base.py +0 -0
  105. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/carv.webp +0 -0
  106. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/fetch_news.py +0 -0
  107. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/onchain_query.py +0 -0
  108. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/schema.json +0 -0
  109. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/carv/token_info_and_price.py +0 -0
  110. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/README.md +0 -0
  111. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/__init__.py +0 -0
  112. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/base.py +0 -0
  113. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/casino.png +0 -0
  114. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/deck_draw.py +0 -0
  115. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/deck_shuffle.py +0 -0
  116. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/dice_roll.py +0 -0
  117. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/schema.json +0 -0
  118. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/casino/utils.py +0 -0
  119. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cdp/__init__.py +0 -0
  120. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cdp/base.py +0 -0
  121. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cdp/cdp.png +0 -0
  122. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cdp/schema.json +0 -0
  123. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/README.md +0 -0
  124. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/__init__.py +0 -0
  125. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/base.py +0 -0
  126. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/chain_lookup.py +0 -0
  127. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/chainlist.png +0 -0
  128. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/chainlist/schema.json +0 -0
  129. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/__init__.py +0 -0
  130. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/base.py +0 -0
  131. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/common.jpg +0 -0
  132. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/current_time.py +0 -0
  133. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/common/schema.json +0 -0
  134. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/README.md +0 -0
  135. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/__init__.py +0 -0
  136. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/base.py +0 -0
  137. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/constants.py +0 -0
  138. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/cookiefun.png +0 -0
  139. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/get_account_details.py +0 -0
  140. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
  141. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
  142. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/get_sectors.py +0 -0
  143. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/schema.json +0 -0
  144. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cookiefun/search_accounts.py +0 -0
  145. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/__init__.py +0 -0
  146. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/api.py +0 -0
  147. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/base.py +0 -0
  148. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
  149. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
  150. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
  151. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  152. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  153. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
  154. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
  155. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptocompare/schema.json +0 -0
  156. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/__init__.py +0 -0
  157. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/base.py +0 -0
  158. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
  159. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
  160. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  161. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/cryptopanic/schema.json +0 -0
  162. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/README.md +0 -0
  163. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/__init__.py +0 -0
  164. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/base.py +0 -0
  165. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
  166. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
  167. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dapplooker/schema.json +0 -0
  168. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/__init__.py +0 -0
  169. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/api.py +0 -0
  170. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/base.py +0 -0
  171. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/__init__.py +0 -0
  172. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  173. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
  174. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
  175. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
  176. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
  177. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
  178. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
  179. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/config/__init__.py +0 -0
  180. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/config/chains.py +0 -0
  181. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/defillama.jpeg +0 -0
  182. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/fees/__init__.py +0 -0
  183. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
  184. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/schema.json +0 -0
  185. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
  186. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  187. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  188. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  189. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  190. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tests/__init__.py +0 -0
  191. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
  192. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
  193. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/__init__.py +0 -0
  194. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  195. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
  196. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  197. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
  198. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  199. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
  200. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/volumes/__init__.py +0 -0
  201. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  202. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  203. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
  204. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/yields/__init__.py +0 -0
  205. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
  206. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
  207. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/README.md +0 -0
  208. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/__init__.py +0 -0
  209. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/base.py +0 -0
  210. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/dexscreener.png +0 -0
  211. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
  212. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
  213. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
  214. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/model/__init__.py +0 -0
  215. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
  216. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/schema.json +0 -0
  217. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/search_token.py +0 -0
  218. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dexscreener/utils.py +0 -0
  219. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/__init__.py +0 -0
  220. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/base.py +0 -0
  221. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/dune.png +0 -0
  222. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/fetch_kol_buys.py +0 -0
  223. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  224. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/dune_analytics/schema.json +0 -0
  225. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/README.md +0 -0
  226. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/__init__.py +0 -0
  227. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/base.py +0 -0
  228. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/elfa.jpg +0 -0
  229. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/mention.py +0 -0
  230. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/schema.json +0 -0
  231. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/stats.py +0 -0
  232. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/tokens.py +0 -0
  233. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/elfa/utils.py +0 -0
  234. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/README.md +0 -0
  235. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/__init__.py +0 -0
  236. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/abi/__init__.py +0 -0
  237. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/abi/approval.py +0 -0
  238. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/abi/erc20.py +0 -0
  239. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/abi/route.py +0 -0
  240. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/base.py +0 -0
  241. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/best_yield.py +0 -0
  242. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/enso.jpg +0 -0
  243. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/networks.py +0 -0
  244. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/prices.py +0 -0
  245. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/route.py +0 -0
  246. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/schema.json +0 -0
  247. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/tokens.py +0 -0
  248. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/enso/wallet.py +0 -0
  249. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc20/__init__.py +0 -0
  250. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc20/base.py +0 -0
  251. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc20/erc20.svg +0 -0
  252. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc20/schema.json +0 -0
  253. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc721/__init__.py +0 -0
  254. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc721/base.py +0 -0
  255. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc721/erc721.svg +0 -0
  256. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/erc721/schema.json +0 -0
  257. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/README.md +0 -0
  258. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/__init__.py +0 -0
  259. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/base.py +0 -0
  260. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/clear.py +0 -0
  261. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/crawl.py +0 -0
  262. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/firecrawl.png +0 -0
  263. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/query.py +0 -0
  264. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/schema.json +0 -0
  265. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/scrape.py +0 -0
  266. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/firecrawl/utils.py +0 -0
  267. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/README.md +0 -0
  268. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/__init__.py +0 -0
  269. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/base.py +0 -0
  270. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/github.jpg +0 -0
  271. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/github_search.py +0 -0
  272. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/github/schema.json +0 -0
  273. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/__init__.py +0 -0
  274. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/base.py +0 -0
  275. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/heurist.png +0 -0
  276. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/heurist/schema.json +0 -0
  277. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/README.md +0 -0
  278. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/__init__.py +0 -0
  279. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/base.py +0 -0
  280. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/get.py +0 -0
  281. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/http.svg +0 -0
  282. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/post.py +0 -0
  283. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/put.py +0 -0
  284. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/http/schema.json +0 -0
  285. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/README.md +0 -0
  286. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/__init__.py +0 -0
  287. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/base.py +0 -0
  288. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/lifi.png +0 -0
  289. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/schema.json +0 -0
  290. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/token_execute.py +0 -0
  291. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/token_quote.py +0 -0
  292. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/lifi/utils.py +0 -0
  293. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/README.md +0 -0
  294. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/__init__.py +0 -0
  295. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/api.py +0 -0
  296. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/base.py +0 -0
  297. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
  298. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
  299. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
  300. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
  301. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/moralis.png +0 -0
  302. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/moralis/schema.json +0 -0
  303. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/morpho/__init__.py +0 -0
  304. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/morpho/base.py +0 -0
  305. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/morpho/morpho.svg +0 -0
  306. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/morpho/schema.json +0 -0
  307. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/__init__.py +0 -0
  308. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/base.py +0 -0
  309. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/nation.png +0 -0
  310. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/nft_check.py +0 -0
  311. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/nation/schema.json +0 -0
  312. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/onchain.py +0 -0
  313. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/__init__.py +0 -0
  314. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/base.py +0 -0
  315. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/image_to_text.py +0 -0
  316. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/openai.png +0 -0
  317. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/openai/schema.json +0 -0
  318. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/README.md +0 -0
  319. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/__init__.py +0 -0
  320. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/base.py +0 -0
  321. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/constants.py +0 -0
  322. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/moralis.png +0 -0
  323. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/schema.json +0 -0
  324. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/token_balances.py +0 -0
  325. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
  326. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
  327. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_history.py +0 -0
  328. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
  329. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
  330. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
  331. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
  332. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_stats.py +0 -0
  333. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
  334. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/pyth/__init__.py +0 -0
  335. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/pyth/base.py +0 -0
  336. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/pyth/pyth.svg +0 -0
  337. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/pyth/schema.json +0 -0
  338. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/skills.toml +0 -0
  339. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/__init__.py +0 -0
  340. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/base.py +0 -0
  341. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/get_channel.py +0 -0
  342. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/get_message.py +0 -0
  343. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/schedule_message.py +0 -0
  344. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/schema.json +0 -0
  345. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/send_message.py +0 -0
  346. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/slack/slack.jpg +0 -0
  347. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/__init__.py +0 -0
  348. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/base.py +0 -0
  349. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/delete_data.py +0 -0
  350. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/fetch_data.py +0 -0
  351. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/insert_data.py +0 -0
  352. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/invoke_function.py +0 -0
  353. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/schema.json +0 -0
  354. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/supabase.svg +0 -0
  355. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/update_data.py +0 -0
  356. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/supabase/upsert_data.py +0 -0
  357. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/superfluid/__init__.py +0 -0
  358. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/superfluid/base.py +0 -0
  359. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/superfluid/schema.json +0 -0
  360. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/superfluid/superfluid.svg +0 -0
  361. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/__init__.py +0 -0
  362. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/add_autonomous_task.py +0 -0
  363. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/base.py +0 -0
  364. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/delete_autonomous_task.py +0 -0
  365. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/edit_autonomous_task.py +0 -0
  366. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/list_autonomous_tasks.py +0 -0
  367. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/read_agent_api_key.py +0 -0
  368. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/regenerate_agent_api_key.py +0 -0
  369. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/schema.json +0 -0
  370. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/system/system.svg +0 -0
  371. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/README.md +0 -0
  372. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/__init__.py +0 -0
  373. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/base.py +0 -0
  374. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/schema.json +0 -0
  375. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/tavily.jpg +0 -0
  376. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/tavily_extract.py +0 -0
  377. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/tavily/tavily_search.py +0 -0
  378. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/README.md +0 -0
  379. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/__init__.py +0 -0
  380. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/base.py +0 -0
  381. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/constants.py +0 -0
  382. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/erc20_transfers.py +0 -0
  383. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/moralis.png +0 -0
  384. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/schema.json +0 -0
  385. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/token_analytics.py +0 -0
  386. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/token_price.py +0 -0
  387. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/token/token_search.py +0 -0
  388. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/__init__.py +0 -0
  389. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/base.py +0 -0
  390. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/follow_user.py +0 -0
  391. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/get_mentions.py +0 -0
  392. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/get_timeline.py +0 -0
  393. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/get_user_by_username.py +0 -0
  394. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/get_user_tweets.py +0 -0
  395. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/like_tweet.py +0 -0
  396. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/post_tweet.py +0 -0
  397. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/reply_tweet.py +0 -0
  398. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/retweet.py +0 -0
  399. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/schema.json +0 -0
  400. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/search_tweets.py +0 -0
  401. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/twitter/twitter.png +0 -0
  402. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/__init__.py +0 -0
  403. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/base.py +0 -0
  404. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/schema.json +0 -0
  405. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
  406. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
  407. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/__init__.py +0 -0
  408. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/base.py +0 -0
  409. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/input.py +0 -0
  410. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/schema.json +0 -0
  411. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
  412. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/README.md +0 -0
  413. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/__init__.py +0 -0
  414. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/base.py +0 -0
  415. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/config.py +0 -0
  416. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
  417. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
  418. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
  419. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  420. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  421. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/README.md +0 -0
  422. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
  423. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  424. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  425. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  426. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
  427. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  428. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  429. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  430. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  431. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
  432. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
  433. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
  434. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  435. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  436. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/README.md +0 -0
  437. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
  438. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
  439. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
  440. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
  441. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/schema.json +0 -0
  442. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/utils.py +0 -0
  443. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/venice_image/venice_image.jpg +0 -0
  444. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/README.md +0 -0
  445. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/__init__.py +0 -0
  446. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/base.py +0 -0
  447. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/document_indexer.py +0 -0
  448. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/langchain.png +0 -0
  449. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/schema.json +0 -0
  450. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
  451. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/utils.py +0 -0
  452. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/web_scraper/website_indexer.py +0 -0
  453. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/weth/__init__.py +0 -0
  454. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/weth/base.py +0 -0
  455. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/weth/schema.json +0 -0
  456. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/weth/weth.svg +0 -0
  457. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/wow/__init__.py +0 -0
  458. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/wow/base.py +0 -0
  459. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/wow/schema.json +0 -0
  460. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/wow/wow.svg +0 -0
  461. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/base.py +0 -0
  462. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/http_request.py +0 -0
  463. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/x402/x402.webp +0 -0
  464. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/README.md +0 -0
  465. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/__init__.py +0 -0
  466. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/base.py +0 -0
  467. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/price.py +0 -0
  468. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/schema.json +0 -0
  469. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/swap.py +0 -0
  470. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/transfer.py +0 -0
  471. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/skills/xmtp/xmtp.png +0 -0
  472. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/__init__.py +0 -0
  473. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/chain.py +0 -0
  474. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/ens.py +0 -0
  475. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/error.py +0 -0
  476. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/logging.py +0 -0
  477. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/random.py +0 -0
  478. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/schema.py +0 -0
  479. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/slack_alert.py +0 -0
  480. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/utils/tx.py +0 -0
  481. {intentkit-0.8.34 → intentkit-0.8.34.dev3}/intentkit/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.8.34
3
+ Version: 0.8.34.dev3
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.34"
6
+ __version__ = "0.8.34-dev3"
7
7
  __author__ = "Ruihua"
8
8
  __email__ = "ruihua@crestal.network"
9
9
 
@@ -7,6 +7,7 @@ from dotenv import load_dotenv
7
7
 
8
8
  from intentkit.utils.chain import ChainProvider, QuicknodeChainProvider
9
9
  from intentkit.utils.logging import setup_logging
10
+ from intentkit.utils.s3 import init_s3
10
11
  from intentkit.utils.slack_alert import init_slack
11
12
 
12
13
  SecretsMap = dict[str, str | int]
@@ -70,16 +71,9 @@ class Config:
70
71
  self.redis_host: str | None = self.load("REDIS_HOST")
71
72
  self.redis_port: int = self.load_int("REDIS_PORT", 6379)
72
73
  self.redis_db: int = self.load_int("REDIS_DB", 0)
73
- # AWS S3
74
+ # AWS
74
75
  self.aws_s3_bucket: str | None = self.load("AWS_S3_BUCKET")
75
76
  self.aws_s3_cdn_url: str | None = self.load("AWS_S3_CDN_URL")
76
- # If using custom S3 endpoint
77
- self.aws_s3_endpoint_url: str | None = self.load("AWS_S3_ENDPOINT_URL")
78
- self.aws_s3_region_name: str | None = self.load("AWS_S3_REGION_NAME")
79
- self.aws_s3_access_key_id: str | None = self.load("AWS_S3_ACCESS_KEY_ID")
80
- self.aws_s3_secret_access_key: str | None = self.load(
81
- "AWS_S3_SECRET_ACCESS_KEY"
82
- )
83
77
  # Internal API
84
78
  self.internal_base_url: str = self.load(
85
79
  "INTERNAL_BASE_URL", "http://intent-api"
@@ -95,6 +89,7 @@ class Config:
95
89
  self.debug_password: str | None = self.load("DEBUG_PASSWORD")
96
90
  # Payment
97
91
  self.payment_enabled: bool = self.load("PAYMENT_ENABLED", "false") == "true"
92
+ self.x402_fee_address: str | None = self.load("X402_FEE_ADDRESS")
98
93
  # Open API for agent
99
94
  self.open_api_base_url: str = self.load(
100
95
  "OPEN_API_BASE_URL", "http://localhost:8000"
@@ -188,6 +183,9 @@ class Config:
188
183
  # If the slack alert token exists, init it
189
184
  if self.slack_alert_token and self.slack_alert_channel:
190
185
  init_slack(self.slack_alert_token, self.slack_alert_channel)
186
+ # If the AWS S3 bucket and CDN URL exist, init it
187
+ if self.aws_s3_bucket and self.aws_s3_cdn_url:
188
+ init_s3(self.aws_s3_bucket, self.aws_s3_cdn_url, self.env)
191
189
 
192
190
  @overload
193
191
  def load(self, key: str) -> str | None: ... # noqa: F811
@@ -6,7 +6,9 @@ including clearing thread history using LangGraph's checkpointer.
6
6
 
7
7
  import logging
8
8
 
9
- from intentkit.models.db import get_checkpointer
9
+ from langgraph.checkpoint.postgres.shallow import AsyncShallowPostgresSaver
10
+
11
+ from intentkit.models.db import get_connection_pool
10
12
  from intentkit.utils.error import IntentKitAPIError
11
13
 
12
14
  logger = logging.getLogger(__name__)
@@ -34,7 +36,8 @@ async def clear_thread_memory(agent_id: str, chat_id: str) -> bool:
34
36
  thread_id = f"{agent_id}-{chat_id}"
35
37
 
36
38
  # Get the LangGraph checkpointer instance
37
- checkpointer = get_checkpointer()
39
+ pool = get_connection_pool()
40
+ checkpointer = AsyncShallowPostgresSaver(pool)
38
41
 
39
42
  # Use the official LangGraph method to delete all thread content
40
43
  await checkpointer.adelete_thread(thread_id)
@@ -27,6 +27,7 @@ from langchain_core.messages import (
27
27
  )
28
28
  from langchain_core.tools import BaseTool
29
29
  from langgraph.checkpoint.memory import InMemorySaver
30
+ from langgraph.checkpoint.postgres.shallow import AsyncShallowPostgresSaver
30
31
  from langgraph.errors import GraphRecursionError
31
32
  from langgraph.graph.state import CompiledStateGraph
32
33
  from sqlalchemy import func, update
@@ -54,10 +55,7 @@ from intentkit.models.chat import (
54
55
  ChatMessageSkillCall,
55
56
  )
56
57
  from intentkit.models.credit import CreditAccount, OwnerType
57
- from intentkit.models.db import (
58
- get_checkpointer,
59
- get_session,
60
- )
58
+ from intentkit.models.db import get_connection_pool, get_session
61
59
  from intentkit.models.llm import LLMModelInfo, create_llm_model
62
60
  from intentkit.models.skill import AgentSkillData, ChatSkillData, Skill
63
61
  from intentkit.models.user import User
@@ -126,9 +124,10 @@ async def build_agent(
126
124
 
127
125
  # ==== Store buffered conversation history in memory.
128
126
  try:
129
- checkpointer = get_checkpointer()
127
+ pool = get_connection_pool()
128
+ memory = AsyncShallowPostgresSaver(pool)
130
129
  except RuntimeError:
131
- checkpointer = InMemorySaver()
130
+ memory = InMemorySaver()
132
131
 
133
132
  # ==== Load skills
134
133
  tools: list[BaseTool | dict] = []
@@ -199,7 +198,7 @@ async def build_agent(
199
198
  middleware=middleware,
200
199
  state_schema=AgentState,
201
200
  context_schema=AgentContext,
202
- checkpointer=checkpointer,
201
+ checkpointer=memory,
203
202
  debug=config.debug_checkpoint,
204
203
  name=agent.id,
205
204
  )
@@ -374,7 +373,6 @@ async def stream_agent_raw(
374
373
  payer = user_message.user_id
375
374
  if user_message.author_type in [
376
375
  AuthorType.TELEGRAM,
377
- AuthorType.DISCORD,
378
376
  AuthorType.TWITTER,
379
377
  AuthorType.API,
380
378
  AuthorType.X402,
@@ -13,7 +13,6 @@ from intentkit.core.agent import (
13
13
  update_agents_account_snapshot,
14
14
  update_agents_statistics,
15
15
  )
16
- from intentkit.core.cleanup import cleanup_checkpoints
17
16
  from intentkit.core.credit import refill_all_free_credits
18
17
  from intentkit.models.agent_data import AgentQuota
19
18
 
@@ -141,16 +140,4 @@ def create_scheduler(
141
140
  replace_existing=True,
142
141
  )
143
142
 
144
- # Cleanup old checkpoints daily at UTC 2:20
145
- # Cleanup old checkpoints daily at UTC 2:20
146
-
147
- scheduler.add_job(
148
- cleanup_checkpoints,
149
- trigger=CronTrigger(hour=2, minute=20, timezone="UTC"),
150
- id="cleanup_checkpoints",
151
- name="Cleanup old checkpoints",
152
- kwargs={"days": 90, "dry_run": False},
153
- replace_existing=True,
154
- )
155
-
156
143
  return scheduler
@@ -13,7 +13,6 @@ from intentkit.models.db_mig import safe_migrate
13
13
 
14
14
  engine: AsyncEngine | None = None
15
15
  _connection_pool: AsyncConnectionPool | None = None
16
- _checkpointer: AsyncShallowPostgresSaver | None = None
17
16
 
18
17
 
19
18
  async def check_connection(conn):
@@ -52,7 +51,7 @@ async def init_db(
52
51
  auto_migrate: Whether to run migrations automatically (default: True)
53
52
  pool_size: Database connection pool size (default: 3)
54
53
  """
55
- global engine, _connection_pool, _checkpointer
54
+ global engine, _connection_pool
56
55
  # Initialize psycopg pool and AsyncShallowPostgresSaver if not already initialized
57
56
  if _connection_pool is None:
58
57
  if host:
@@ -71,7 +70,6 @@ async def init_db(
71
70
  max_lifetime=3600, # 1 hour
72
71
  )
73
72
  _connection_pool = pool
74
- _checkpointer = AsyncShallowPostgresSaver(pool)
75
73
  if auto_migrate:
76
74
  # Migrate can not use pool, so we start from scratch
77
75
  async with AsyncShallowPostgresSaver.from_conn_string(
@@ -152,14 +150,3 @@ def get_connection_pool() -> AsyncConnectionPool:
152
150
  if _connection_pool is None:
153
151
  raise RuntimeError("Database pool not initialized. Call init_db first.")
154
152
  return _connection_pool
155
-
156
-
157
- def get_checkpointer() -> AsyncShallowPostgresSaver:
158
- """Get the AsyncShallowPostgresSaver instance.
159
-
160
- Returns:
161
- AsyncShallowPostgresSaver: The AsyncShallowPostgresSaver instance
162
- """
163
- if _checkpointer is None:
164
- raise RuntimeError("Database checkpointer not initialized. Call init_db first.")
165
- return _checkpointer
@@ -0,0 +1,103 @@
1
+ """Database migration utilities."""
2
+
3
+ import logging
4
+ from collections.abc import Callable
5
+
6
+ from sqlalchemy import Column, MetaData, inspect, text
7
+
8
+ from intentkit.models.base import Base
9
+
10
+ logger = logging.getLogger(__name__)
11
+
12
+
13
+ async def add_column_if_not_exists(
14
+ conn, dialect, table_name: str, column: Column
15
+ ) -> None:
16
+ """Add a column to a table if it doesn't exist.
17
+
18
+ Args:
19
+ conn: SQLAlchemy conn
20
+ table_name: Name of the table
21
+ column: Column to add
22
+ """
23
+
24
+ # Use run_sync to perform inspection on the connection
25
+ def _get_columns(connection):
26
+ inspector = inspect(connection)
27
+ return [c["name"] for c in inspector.get_columns(table_name)]
28
+
29
+ columns = await conn.run_sync(_get_columns)
30
+
31
+ if column.name not in columns:
32
+ # Build column definition
33
+ column_def = f"{column.name} {column.type.compile(dialect)}"
34
+
35
+ # Add DEFAULT if specified
36
+ if column.default is not None:
37
+ if hasattr(column.default, "arg"):
38
+ default_value = column.default.arg
39
+ if not isinstance(default_value, Callable):
40
+ if isinstance(default_value, bool):
41
+ default_value = str(default_value).lower()
42
+ elif isinstance(default_value, str):
43
+ default_value = f"'{default_value}'"
44
+ elif isinstance(default_value, list | dict):
45
+ default_value = "'{}'"
46
+ column_def += f" DEFAULT {default_value}"
47
+
48
+ # Execute ALTER TABLE
49
+ await conn.execute(text(f"ALTER TABLE {table_name} ADD COLUMN {column_def}"))
50
+ logger.info(f"Added column {column.name} to table {table_name}")
51
+
52
+
53
+ async def update_table_schema(conn, dialect, model_cls) -> None:
54
+ """Update table schema by adding missing columns from the model.
55
+
56
+ Args:
57
+ conn: SQLAlchemy conn
58
+ dialect: SQLAlchemy dialect
59
+ model_cls: SQLAlchemy model class to check for new columns
60
+ """
61
+ if not hasattr(model_cls, "__table__"):
62
+ return
63
+
64
+ table_name = model_cls.__tablename__
65
+ for name, column in model_cls.__table__.columns.items():
66
+ if name != "id": # Skip primary key
67
+ await add_column_if_not_exists(conn, dialect, table_name, column)
68
+
69
+
70
+ async def safe_migrate(engine) -> None:
71
+ """Safely migrate all SQLAlchemy models by adding new columns.
72
+
73
+ Args:
74
+ engine: SQLAlchemy engine
75
+ """
76
+ logger.info("Starting database schema migration")
77
+ dialect = engine.dialect
78
+
79
+ async with engine.begin() as conn:
80
+ try:
81
+ # Create tables if they don't exist
82
+ await conn.run_sync(Base.metadata.create_all)
83
+
84
+ # Get existing table metadata
85
+ metadata = MetaData()
86
+ await conn.run_sync(metadata.reflect)
87
+
88
+ # Update schema for all model classes
89
+ for mapper in Base.registry.mappers:
90
+ model_cls = mapper.class_
91
+ if hasattr(model_cls, "__tablename__"):
92
+ table_name = model_cls.__tablename__
93
+ if table_name in metadata.tables:
94
+ # We need a sync wrapper for the async update_table_schema
95
+ async def update_table_wrapper():
96
+ await update_table_schema(conn, dialect, model_cls)
97
+
98
+ await update_table_wrapper()
99
+ except Exception as e:
100
+ logger.error(f"Error updating database schema: {str(e)}")
101
+ raise
102
+
103
+ logger.info("Database schema updated successfully")
@@ -167,6 +167,7 @@ firecrawl,firecrawl_clear_indexed_content,firecrawl_clear_indexed_content,TRUE,1
167
167
  xmtp,xmtp_transfer,xmtp_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
168
168
  xmtp,xmtp_swap,xmtp_swap,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
169
169
  xmtp,xmtp_get_swap_price,xmtp_get_swap_price,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
170
+ x402,x402_ask_agent,x402_ask_agent,TRUE,1,1,1,,,0x445750026A4a1906b61302442E085f9cbAfe206a
170
171
  x402,x402_http_request,x402_http_request,TRUE,1,1,1,,,0x445750026A4a1906b61302442E085f9cbAfe206a
171
172
  casino,deck_shuffle,casino_deck_shuffle,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
172
173
  casino,deck_draw,casino_deck_draw,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
@@ -4,9 +4,9 @@ import httpx
4
4
  from epyxid import XID
5
5
  from pydantic import BaseModel, Field
6
6
 
7
- from intentkit.clients.s3 import store_image
8
7
  from intentkit.config.config import config
9
8
  from intentkit.skills.heurist.base import HeuristBaseTool
9
+ from intentkit.utils.s3 import store_image
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12
 
@@ -77,6 +77,7 @@ class ImageGenerationAnimagineXL(HeuristBaseTool):
77
77
  """
78
78
  context = self.get_context()
79
79
  skill_config = context.agent.skill_config(self.category)
80
+ skill_config = skill_config
80
81
 
81
82
  # Get the Heurist API key from configuration
82
83
  if "api_key" in skill_config and skill_config["api_key"]:
@@ -4,9 +4,9 @@ import httpx
4
4
  from epyxid import XID
5
5
  from pydantic import BaseModel, Field
6
6
 
7
- from intentkit.clients.s3 import store_image
8
7
  from intentkit.config.config import config
9
8
  from intentkit.skills.heurist.base import HeuristBaseTool
9
+ from intentkit.utils.s3 import store_image
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12
 
@@ -76,6 +76,7 @@ class ImageGenerationArthemyComics(HeuristBaseTool):
76
76
  """
77
77
  context = self.get_context()
78
78
  skill_config = context.agent.skill_config(self.category)
79
+ skill_config = skill_config
79
80
 
80
81
  # Get the Heurist API key from configuration
81
82
  if "api_key" in skill_config and skill_config["api_key"]:
@@ -4,9 +4,9 @@ import httpx
4
4
  from epyxid import XID
5
5
  from pydantic import BaseModel, Field
6
6
 
7
- from intentkit.clients.s3 import store_image
8
7
  from intentkit.config.config import config
9
8
  from intentkit.skills.heurist.base import HeuristBaseTool
9
+ from intentkit.utils.s3 import store_image
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12
 
@@ -76,6 +76,7 @@ class ImageGenerationArthemyReal(HeuristBaseTool):
76
76
  """
77
77
  context = self.get_context()
78
78
  skill_config = context.agent.skill_config(self.category)
79
+ skill_config = skill_config
79
80
 
80
81
  # Get the Heurist API key from configuration
81
82
  if "api_key" in skill_config and skill_config["api_key"]:
@@ -4,9 +4,9 @@ import httpx
4
4
  from epyxid import XID
5
5
  from pydantic import BaseModel, Field
6
6
 
7
- from intentkit.clients.s3 import store_image
8
7
  from intentkit.config.config import config
9
8
  from intentkit.skills.heurist.base import HeuristBaseTool
9
+ from intentkit.utils.s3 import store_image
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12
 
@@ -76,6 +76,7 @@ class ImageGenerationBrainDance(HeuristBaseTool):
76
76
  """
77
77
  context = self.get_context()
78
78
  skill_config = context.agent.skill_config(self.category)
79
+ skill_config = skill_config
79
80
 
80
81
  # Get the Heurist API key from configuration
81
82
  if "api_key" in skill_config and skill_config["api_key"]:
@@ -4,9 +4,9 @@ import httpx
4
4
  from epyxid import XID
5
5
  from pydantic import BaseModel, Field
6
6
 
7
- from intentkit.clients.s3 import store_image
8
7
  from intentkit.config.config import config
9
8
  from intentkit.skills.heurist.base import HeuristBaseTool
9
+ from intentkit.utils.s3 import store_image
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12
 
@@ -76,6 +76,7 @@ class ImageGenerationCyberRealisticXL(HeuristBaseTool):
76
76
  """
77
77
  context = self.get_context()
78
78
  skill_config = context.agent.skill_config(self.category)
79
+ skill_config = skill_config
79
80
 
80
81
  # Get the Heurist API key from configuration
81
82
  if "api_key" in skill_config and skill_config["api_key"]:
@@ -4,9 +4,9 @@ import httpx
4
4
  from epyxid import XID
5
5
  from pydantic import BaseModel, Field
6
6
 
7
- from intentkit.clients.s3 import store_image
8
7
  from intentkit.config.config import config
9
8
  from intentkit.skills.heurist.base import HeuristBaseTool
9
+ from intentkit.utils.s3 import store_image
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12
 
@@ -76,6 +76,7 @@ class ImageGenerationFlux1Dev(HeuristBaseTool):
76
76
  """
77
77
  context = self.get_context()
78
78
  skill_config = context.agent.skill_config(self.category)
79
+ skill_config = skill_config
79
80
 
80
81
  # Get the Heurist API key from configuration
81
82
  if "api_key" in skill_config and skill_config["api_key"]:
@@ -4,9 +4,9 @@ import httpx
4
4
  from epyxid import XID
5
5
  from pydantic import BaseModel, Field
6
6
 
7
- from intentkit.clients.s3 import store_image
8
7
  from intentkit.config.config import config
9
8
  from intentkit.skills.heurist.base import HeuristBaseTool
9
+ from intentkit.utils.s3 import store_image
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12
 
@@ -76,6 +76,7 @@ class ImageGenerationSDXL(HeuristBaseTool):
76
76
  """
77
77
  context = self.get_context()
78
78
  skill_config = context.agent.skill_config(self.category)
79
+ skill_config = skill_config
79
80
 
80
81
  # Get the Heurist API key from configuration
81
82
  if "api_key" in skill_config and skill_config["api_key"]:
@@ -6,8 +6,8 @@ import openai
6
6
  from epyxid import XID
7
7
  from pydantic import BaseModel, Field
8
8
 
9
- from intentkit.clients.s3 import store_image
10
9
  from intentkit.skills.openai.base import OpenAIBaseTool
10
+ from intentkit.utils.s3 import store_image
11
11
 
12
12
  logger = logging.getLogger(__name__)
13
13
 
@@ -7,8 +7,8 @@ import openai
7
7
  from epyxid import XID
8
8
  from pydantic import BaseModel, Field
9
9
 
10
- from intentkit.clients.s3 import store_image_bytes
11
10
  from intentkit.skills.openai.base import OpenAIBaseTool
11
+ from intentkit.utils.s3 import store_image_bytes
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14
 
@@ -8,8 +8,8 @@ import openai
8
8
  from epyxid import XID
9
9
  from pydantic import BaseModel, Field
10
10
 
11
- from intentkit.clients.s3 import store_image_bytes
12
11
  from intentkit.skills.openai.base import OpenAIBaseTool
12
+ from intentkit.utils.s3 import store_image_bytes
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
15
 
@@ -8,9 +8,9 @@ import openai
8
8
  from epyxid import XID
9
9
  from pydantic import BaseModel
10
10
 
11
- from intentkit.clients.s3 import store_image_bytes
12
11
  from intentkit.skills.openai.base import OpenAIBaseTool
13
12
  from intentkit.skills.openai.gpt_image_generation import GPTImageGenerationInput
13
+ from intentkit.utils.s3 import store_image_bytes
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
@@ -10,8 +10,8 @@ import openai
10
10
  from epyxid import XID
11
11
  from pydantic import BaseModel, Field
12
12
 
13
- from intentkit.clients.s3 import store_image_bytes
14
13
  from intentkit.skills.openai.base import OpenAIBaseTool
14
+ from intentkit.utils.s3 import store_image_bytes
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
17
 
@@ -6,9 +6,9 @@ from typing import Any
6
6
  import httpx
7
7
  from pydantic import BaseModel
8
8
 
9
- from intentkit.clients.s3 import store_file
10
9
  from intentkit.skills.venice_audio.base import VeniceAudioBaseTool
11
10
  from intentkit.skills.venice_audio.input import AllowedAudioFormat, VeniceAudioInput
11
+ from intentkit.utils.s3 import store_file
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14
 
@@ -12,7 +12,7 @@ from typing import Any
12
12
 
13
13
  import httpx
14
14
 
15
- from intentkit.clients.s3 import store_image_bytes
15
+ from intentkit.utils.s3 import store_image_bytes
16
16
 
17
17
  logger = logging.getLogger(__name__)
18
18
 
@@ -5,14 +5,13 @@ from typing import Any, Literal
5
5
 
6
6
  from pydantic import BaseModel, Field
7
7
 
8
- from intentkit.clients.s3 import store_image_bytes
9
-
10
8
  # Import the generic base
11
9
  from intentkit.skills.base import ToolException
12
10
  from intentkit.skills.venice_image.base import VeniceImageBaseTool
13
11
  from intentkit.skills.venice_image.image_generation.image_generation_input import (
14
12
  VeniceImageGenerationInput,
15
13
  )
14
+ from intentkit.utils.s3 import store_image_bytes
16
15
 
17
16
  logger = logging.getLogger(__name__)
18
17
 
@@ -4,6 +4,7 @@ import logging
4
4
  from typing import TypedDict
5
5
 
6
6
  from intentkit.skills.base import SkillConfig, SkillState
7
+ from intentkit.skills.x402.ask_agent import X402AskAgent
7
8
  from intentkit.skills.x402.base import X402BaseSkill
8
9
  from intentkit.skills.x402.http_request import X402HttpRequest
9
10
 
@@ -13,6 +14,7 @@ _cache: dict[str, X402BaseSkill] = {}
13
14
 
14
15
 
15
16
  class SkillStates(TypedDict):
17
+ x402_ask_agent: SkillState
16
18
  x402_http_request: SkillState
17
19
 
18
20
 
@@ -23,6 +25,7 @@ class Config(SkillConfig):
23
25
 
24
26
 
25
27
  _SKILL_BUILDERS: dict[str, type[X402BaseSkill]] = {
28
+ "x402_ask_agent": X402AskAgent,
26
29
  "x402_http_request": X402HttpRequest,
27
30
  }
28
31
 
@@ -0,0 +1,98 @@
1
+ import logging
2
+ from typing import Any
3
+
4
+ from langchain_core.tools import ToolException
5
+ from pydantic import BaseModel, Field
6
+
7
+ from intentkit.config.config import config
8
+ from intentkit.models.chat import AuthorType
9
+ from intentkit.skills.x402.base import X402BaseSkill
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ class AskAgentInput(BaseModel):
15
+ """Arguments for the x402 ask agent skill."""
16
+
17
+ agent_id: str = Field(description="ID or slug of the agent to query.")
18
+ message: str = Field(description="Message to send to the target agent.")
19
+ search_mode: bool | None = Field(
20
+ default=None, description="Enable search mode when interacting with the agent."
21
+ )
22
+ super_mode: bool | None = Field(
23
+ default=None, description="Enable super mode when interacting with the agent."
24
+ )
25
+
26
+
27
+ class X402AskAgent(X402BaseSkill):
28
+ """Skill that queries another agent via the x402 API."""
29
+
30
+ name: str = "x402_ask_agent"
31
+ description: str = (
32
+ "Call another agent through the x402 API and return the final agent message."
33
+ )
34
+ args_schema: type[BaseModel] = AskAgentInput
35
+
36
+ async def _arun(
37
+ self,
38
+ agent_id: str,
39
+ message: str,
40
+ search_mode: bool | None = None,
41
+ super_mode: bool | None = None,
42
+ ) -> str:
43
+ try:
44
+ # Use wallet provider signer to satisfy eth_account.BaseAccount interface requirements
45
+ base_url = (config.open_api_base_url or "").rstrip("/")
46
+ if not base_url:
47
+ raise ToolException("X402 API base URL is not configured.")
48
+ target_url = f"{base_url}/x402"
49
+ payload: dict[str, Any] = {
50
+ "agent_id": agent_id,
51
+ "message": message,
52
+ "app_id": "skill",
53
+ }
54
+ if search_mode is not None:
55
+ payload["search_mode"] = search_mode
56
+ if super_mode is not None:
57
+ payload["super_mode"] = super_mode
58
+
59
+ async with self.http_client(timeout=20.0) as client:
60
+ response = await client.post(target_url, json=payload)
61
+ try:
62
+ response.raise_for_status()
63
+ except Exception as e:
64
+ error_body = ""
65
+ try:
66
+ error_body = response.text
67
+ except Exception:
68
+ error_body = "Unable to read response body"
69
+ logger.error(
70
+ f"HTTP request failed with status {response.status_code}: {error_body}"
71
+ )
72
+ raise ToolException(
73
+ f"HTTP request failed with status {response.status_code}: {error_body}"
74
+ ) from e
75
+ messages = response.json()
76
+ if not isinstance(messages, list) or not messages:
77
+ raise ValueError("Agent returned an empty response.")
78
+
79
+ last_message = messages[-1]
80
+ if not isinstance(last_message, dict):
81
+ raise ValueError("Agent response format is invalid.")
82
+
83
+ author_type = last_message.get("author_type")
84
+ content = last_message.get("message")
85
+
86
+ if author_type == AuthorType.SYSTEM.value:
87
+ raise ToolException(content or "Agent returned a system message.")
88
+
89
+ if not content:
90
+ raise ToolException("Agent response did not include message text.")
91
+
92
+ return str(content)
93
+ except ToolException:
94
+ # Re-raise ToolException as-is
95
+ raise
96
+ except Exception as e:
97
+ logger.error(f"Unexpected error in x402_ask_agent: {str(e)}")
98
+ raise ToolException(f"Unexpected error occurred: {str(e)}") from e