intentkit 0.8.34.dev6__tar.gz → 0.8.34.dev8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/PKG-INFO +1 -1
  2. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/__init__.py +1 -1
  3. intentkit-0.8.34.dev8/intentkit/core/cleanup.py +80 -0
  4. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/scheduler.py +13 -0
  5. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/db_mig.py +23 -24
  6. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/pyproject.toml +1 -1
  7. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/.gitignore +0 -0
  8. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/LICENSE +0 -0
  9. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/LICENSE +0 -0
  10. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/MANIFEST.in +0 -0
  11. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/README.md +0 -0
  12. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/abstracts/__init__.py +0 -0
  13. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/abstracts/agent.py +0 -0
  14. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/abstracts/api.py +0 -0
  15. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/abstracts/engine.py +0 -0
  16. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/abstracts/graph.py +0 -0
  17. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/abstracts/skill.py +0 -0
  18. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/abstracts/twitter.py +0 -0
  19. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/clients/__init__.py +0 -0
  20. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/clients/cdp.py +0 -0
  21. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/clients/s3.py +0 -0
  22. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/clients/twitter.py +0 -0
  23. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/clients/web3.py +0 -0
  24. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/config/__init__.py +0 -0
  25. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/config/config.py +0 -0
  26. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/__init__.py +0 -0
  27. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/account_checking.py +0 -0
  28. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/agent.py +0 -0
  29. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/api.py +0 -0
  30. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/asset.py +0 -0
  31. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/chat.py +0 -0
  32. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/client.py +0 -0
  33. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/credit.py +0 -0
  34. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/draft.py +0 -0
  35. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/draft_chat.py +0 -0
  36. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/engine.py +0 -0
  37. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/manager/__init__.py +0 -0
  38. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/manager/engine.py +0 -0
  39. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/manager/service.py +0 -0
  40. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/manager/skills.py +0 -0
  41. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/middleware.py +0 -0
  42. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/prompt.py +0 -0
  43. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/core/statistics.py +0 -0
  44. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/agent.py +0 -0
  45. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/agent_data.py +0 -0
  46. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/agent_public.json +0 -0
  47. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/agent_schema.json +0 -0
  48. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/app_setting.py +0 -0
  49. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/base.py +0 -0
  50. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/chat.py +0 -0
  51. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/credit.py +0 -0
  52. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/db.py +0 -0
  53. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/draft.py +0 -0
  54. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/llm.csv +0 -0
  55. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/llm.py +0 -0
  56. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/redis.py +0 -0
  57. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/skill.py +0 -0
  58. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/skills.csv +0 -0
  59. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/team.py +0 -0
  60. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/models/user.py +0 -0
  61. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/__init__.py +0 -0
  62. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/acolyt/__init__.py +0 -0
  63. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/acolyt/acolyt.jpg +0 -0
  64. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/acolyt/ask.py +0 -0
  65. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/acolyt/base.py +0 -0
  66. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/acolyt/schema.json +0 -0
  67. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/aixbt/README.md +0 -0
  68. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/aixbt/__init__.py +0 -0
  69. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/aixbt/aixbt.jpg +0 -0
  70. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/aixbt/base.py +0 -0
  71. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/aixbt/projects.py +0 -0
  72. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/aixbt/schema.json +0 -0
  73. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/allora/__init__.py +0 -0
  74. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/allora/allora.jpeg +0 -0
  75. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/allora/base.py +0 -0
  76. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/allora/price.py +0 -0
  77. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/allora/schema.json +0 -0
  78. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/base.py +0 -0
  79. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/basename/__init__.py +0 -0
  80. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/basename/base.py +0 -0
  81. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/basename/basename.svg +0 -0
  82. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/basename/schema.json +0 -0
  83. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/carv/README.md +0 -0
  84. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/carv/__init__.py +0 -0
  85. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/carv/base.py +0 -0
  86. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/carv/carv.webp +0 -0
  87. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/carv/fetch_news.py +0 -0
  88. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/carv/onchain_query.py +0 -0
  89. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/carv/schema.json +0 -0
  90. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/carv/token_info_and_price.py +0 -0
  91. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/casino/README.md +0 -0
  92. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/casino/__init__.py +0 -0
  93. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/casino/base.py +0 -0
  94. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/casino/casino.png +0 -0
  95. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/casino/deck_draw.py +0 -0
  96. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/casino/deck_shuffle.py +0 -0
  97. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/casino/dice_roll.py +0 -0
  98. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/casino/schema.json +0 -0
  99. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/casino/utils.py +0 -0
  100. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cdp/__init__.py +0 -0
  101. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cdp/base.py +0 -0
  102. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cdp/cdp.png +0 -0
  103. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cdp/schema.json +0 -0
  104. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/chainlist/README.md +0 -0
  105. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/chainlist/__init__.py +0 -0
  106. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/chainlist/base.py +0 -0
  107. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/chainlist/chain_lookup.py +0 -0
  108. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/chainlist/chainlist.png +0 -0
  109. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/chainlist/schema.json +0 -0
  110. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/common/__init__.py +0 -0
  111. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/common/base.py +0 -0
  112. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/common/common.jpg +0 -0
  113. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/common/current_time.py +0 -0
  114. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/common/schema.json +0 -0
  115. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/README.md +0 -0
  116. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/__init__.py +0 -0
  117. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/base.py +0 -0
  118. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/constants.py +0 -0
  119. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/cookiefun.png +0 -0
  120. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/get_account_details.py +0 -0
  121. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
  122. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
  123. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/get_sectors.py +0 -0
  124. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/schema.json +0 -0
  125. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cookiefun/search_accounts.py +0 -0
  126. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/__init__.py +0 -0
  127. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/api.py +0 -0
  128. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/base.py +0 -0
  129. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
  130. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
  131. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
  132. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  133. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  134. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
  135. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
  136. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptocompare/schema.json +0 -0
  137. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptopanic/__init__.py +0 -0
  138. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptopanic/base.py +0 -0
  139. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
  140. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
  141. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  142. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/cryptopanic/schema.json +0 -0
  143. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dapplooker/README.md +0 -0
  144. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dapplooker/__init__.py +0 -0
  145. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dapplooker/base.py +0 -0
  146. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
  147. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
  148. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dapplooker/schema.json +0 -0
  149. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/__init__.py +0 -0
  150. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/api.py +0 -0
  151. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/base.py +0 -0
  152. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/coins/__init__.py +0 -0
  153. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  154. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
  155. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
  156. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
  157. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
  158. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
  159. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
  160. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/config/__init__.py +0 -0
  161. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/config/chains.py +0 -0
  162. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/defillama.jpeg +0 -0
  163. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/fees/__init__.py +0 -0
  164. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
  165. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/schema.json +0 -0
  166. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
  167. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  168. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  169. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  170. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  171. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tests/__init__.py +0 -0
  172. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
  173. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
  174. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tvl/__init__.py +0 -0
  175. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  176. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
  177. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  178. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
  179. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  180. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
  181. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/volumes/__init__.py +0 -0
  182. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  183. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  184. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
  185. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/yields/__init__.py +0 -0
  186. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
  187. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
  188. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/README.md +0 -0
  189. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/__init__.py +0 -0
  190. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/base.py +0 -0
  191. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/dexscreener.png +0 -0
  192. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
  193. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
  194. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
  195. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/model/__init__.py +0 -0
  196. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
  197. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/schema.json +0 -0
  198. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/search_token.py +0 -0
  199. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dexscreener/utils.py +0 -0
  200. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dune_analytics/__init__.py +0 -0
  201. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dune_analytics/base.py +0 -0
  202. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dune_analytics/dune.png +0 -0
  203. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dune_analytics/fetch_kol_buys.py +0 -0
  204. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dune_analytics/fetch_nation_metrics.py +0 -0
  205. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/dune_analytics/schema.json +0 -0
  206. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/elfa/README.md +0 -0
  207. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/elfa/__init__.py +0 -0
  208. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/elfa/base.py +0 -0
  209. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/elfa/elfa.jpg +0 -0
  210. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/elfa/mention.py +0 -0
  211. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/elfa/schema.json +0 -0
  212. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/elfa/stats.py +0 -0
  213. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/elfa/tokens.py +0 -0
  214. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/elfa/utils.py +0 -0
  215. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/README.md +0 -0
  216. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/__init__.py +0 -0
  217. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/abi/__init__.py +0 -0
  218. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/abi/approval.py +0 -0
  219. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/abi/erc20.py +0 -0
  220. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/abi/route.py +0 -0
  221. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/base.py +0 -0
  222. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/best_yield.py +0 -0
  223. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/enso.jpg +0 -0
  224. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/networks.py +0 -0
  225. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/prices.py +0 -0
  226. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/route.py +0 -0
  227. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/schema.json +0 -0
  228. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/tokens.py +0 -0
  229. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/enso/wallet.py +0 -0
  230. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/erc20/__init__.py +0 -0
  231. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/erc20/base.py +0 -0
  232. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/erc20/erc20.svg +0 -0
  233. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/erc20/schema.json +0 -0
  234. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/erc721/__init__.py +0 -0
  235. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/erc721/base.py +0 -0
  236. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/erc721/erc721.svg +0 -0
  237. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/erc721/schema.json +0 -0
  238. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/README.md +0 -0
  239. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/__init__.py +0 -0
  240. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/base.py +0 -0
  241. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/clear.py +0 -0
  242. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/crawl.py +0 -0
  243. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/firecrawl.png +0 -0
  244. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/query.py +0 -0
  245. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/schema.json +0 -0
  246. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/scrape.py +0 -0
  247. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/firecrawl/utils.py +0 -0
  248. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/github/README.md +0 -0
  249. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/github/__init__.py +0 -0
  250. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/github/base.py +0 -0
  251. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/github/github.jpg +0 -0
  252. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/github/github_search.py +0 -0
  253. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/github/schema.json +0 -0
  254. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/__init__.py +0 -0
  255. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/base.py +0 -0
  256. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/heurist.png +0 -0
  257. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
  258. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
  259. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
  260. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
  261. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  262. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
  263. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
  264. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/heurist/schema.json +0 -0
  265. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/http/README.md +0 -0
  266. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/http/__init__.py +0 -0
  267. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/http/base.py +0 -0
  268. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/http/get.py +0 -0
  269. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/http/http.svg +0 -0
  270. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/http/post.py +0 -0
  271. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/http/put.py +0 -0
  272. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/http/schema.json +0 -0
  273. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/lifi/README.md +0 -0
  274. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/lifi/__init__.py +0 -0
  275. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/lifi/base.py +0 -0
  276. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/lifi/lifi.png +0 -0
  277. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/lifi/schema.json +0 -0
  278. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/lifi/token_execute.py +0 -0
  279. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/lifi/token_quote.py +0 -0
  280. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/lifi/utils.py +0 -0
  281. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/README.md +0 -0
  282. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/__init__.py +0 -0
  283. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/api.py +0 -0
  284. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/base.py +0 -0
  285. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
  286. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
  287. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
  288. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
  289. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/moralis.png +0 -0
  290. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/moralis/schema.json +0 -0
  291. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/morpho/__init__.py +0 -0
  292. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/morpho/base.py +0 -0
  293. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/morpho/morpho.svg +0 -0
  294. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/morpho/schema.json +0 -0
  295. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/nation/__init__.py +0 -0
  296. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/nation/base.py +0 -0
  297. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/nation/nation.png +0 -0
  298. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/nation/nft_check.py +0 -0
  299. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/nation/schema.json +0 -0
  300. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/onchain.py +0 -0
  301. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/__init__.py +0 -0
  302. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/base.py +0 -0
  303. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/dalle_image_generation.py +0 -0
  304. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/gpt_avatar_generator.py +0 -0
  305. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/gpt_image_generation.py +0 -0
  306. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/gpt_image_mini_generator.py +0 -0
  307. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/gpt_image_to_image.py +0 -0
  308. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/image_to_text.py +0 -0
  309. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/openai.png +0 -0
  310. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/openai/schema.json +0 -0
  311. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/README.md +0 -0
  312. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/__init__.py +0 -0
  313. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/base.py +0 -0
  314. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/constants.py +0 -0
  315. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/moralis.png +0 -0
  316. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/schema.json +0 -0
  317. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/token_balances.py +0 -0
  318. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
  319. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
  320. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/wallet_history.py +0 -0
  321. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
  322. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
  323. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
  324. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
  325. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/wallet_stats.py +0 -0
  326. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
  327. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/pyth/__init__.py +0 -0
  328. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/pyth/base.py +0 -0
  329. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/pyth/pyth.svg +0 -0
  330. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/pyth/schema.json +0 -0
  331. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/skills.toml +0 -0
  332. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/slack/__init__.py +0 -0
  333. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/slack/base.py +0 -0
  334. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/slack/get_channel.py +0 -0
  335. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/slack/get_message.py +0 -0
  336. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/slack/schedule_message.py +0 -0
  337. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/slack/schema.json +0 -0
  338. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/slack/send_message.py +0 -0
  339. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/slack/slack.jpg +0 -0
  340. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/__init__.py +0 -0
  341. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/base.py +0 -0
  342. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/delete_data.py +0 -0
  343. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/fetch_data.py +0 -0
  344. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/insert_data.py +0 -0
  345. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/invoke_function.py +0 -0
  346. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/schema.json +0 -0
  347. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/supabase.svg +0 -0
  348. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/update_data.py +0 -0
  349. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/supabase/upsert_data.py +0 -0
  350. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/superfluid/__init__.py +0 -0
  351. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/superfluid/base.py +0 -0
  352. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/superfluid/schema.json +0 -0
  353. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/superfluid/superfluid.svg +0 -0
  354. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/__init__.py +0 -0
  355. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/add_autonomous_task.py +0 -0
  356. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/base.py +0 -0
  357. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/delete_autonomous_task.py +0 -0
  358. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/edit_autonomous_task.py +0 -0
  359. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/list_autonomous_tasks.py +0 -0
  360. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/read_agent_api_key.py +0 -0
  361. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/regenerate_agent_api_key.py +0 -0
  362. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/schema.json +0 -0
  363. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/system/system.svg +0 -0
  364. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/tavily/README.md +0 -0
  365. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/tavily/__init__.py +0 -0
  366. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/tavily/base.py +0 -0
  367. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/tavily/schema.json +0 -0
  368. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/tavily/tavily.jpg +0 -0
  369. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/tavily/tavily_extract.py +0 -0
  370. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/tavily/tavily_search.py +0 -0
  371. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/README.md +0 -0
  372. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/__init__.py +0 -0
  373. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/base.py +0 -0
  374. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/constants.py +0 -0
  375. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/erc20_transfers.py +0 -0
  376. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/moralis.png +0 -0
  377. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/schema.json +0 -0
  378. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/token_analytics.py +0 -0
  379. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/token_price.py +0 -0
  380. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/token/token_search.py +0 -0
  381. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/__init__.py +0 -0
  382. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/base.py +0 -0
  383. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/follow_user.py +0 -0
  384. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/get_mentions.py +0 -0
  385. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/get_timeline.py +0 -0
  386. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/get_user_by_username.py +0 -0
  387. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/get_user_tweets.py +0 -0
  388. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/like_tweet.py +0 -0
  389. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/post_tweet.py +0 -0
  390. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/reply_tweet.py +0 -0
  391. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/retweet.py +0 -0
  392. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/schema.json +0 -0
  393. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/search_tweets.py +0 -0
  394. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/twitter/twitter.png +0 -0
  395. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/unrealspeech/__init__.py +0 -0
  396. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/unrealspeech/base.py +0 -0
  397. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/unrealspeech/schema.json +0 -0
  398. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
  399. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
  400. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_audio/__init__.py +0 -0
  401. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_audio/base.py +0 -0
  402. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_audio/input.py +0 -0
  403. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_audio/schema.json +0 -0
  404. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_audio/venice_audio.py +0 -0
  405. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
  406. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/README.md +0 -0
  407. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/__init__.py +0 -0
  408. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/api.py +0 -0
  409. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/base.py +0 -0
  410. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/config.py +0 -0
  411. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
  412. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
  413. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
  414. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  415. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  416. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/README.md +0 -0
  417. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
  418. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
  419. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  420. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  421. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  422. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
  423. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  424. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  425. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  426. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  427. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
  428. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
  429. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
  430. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  431. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  432. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_vision/README.md +0 -0
  433. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
  434. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
  435. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
  436. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
  437. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/schema.json +0 -0
  438. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/utils.py +0 -0
  439. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/venice_image/venice_image.jpg +0 -0
  440. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/web_scraper/README.md +0 -0
  441. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/web_scraper/__init__.py +0 -0
  442. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/web_scraper/base.py +0 -0
  443. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/web_scraper/document_indexer.py +0 -0
  444. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/web_scraper/langchain.png +0 -0
  445. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/web_scraper/schema.json +0 -0
  446. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
  447. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/web_scraper/utils.py +0 -0
  448. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/web_scraper/website_indexer.py +0 -0
  449. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/weth/__init__.py +0 -0
  450. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/weth/base.py +0 -0
  451. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/weth/schema.json +0 -0
  452. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/weth/weth.svg +0 -0
  453. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/wow/__init__.py +0 -0
  454. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/wow/base.py +0 -0
  455. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/wow/schema.json +0 -0
  456. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/wow/wow.svg +0 -0
  457. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/x402/__init__.py +0 -0
  458. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/x402/base.py +0 -0
  459. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/x402/http_request.py +0 -0
  460. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/x402/schema.json +0 -0
  461. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/x402/x402.webp +0 -0
  462. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/xmtp/README.md +0 -0
  463. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/xmtp/__init__.py +0 -0
  464. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/xmtp/base.py +0 -0
  465. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/xmtp/price.py +0 -0
  466. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/xmtp/schema.json +0 -0
  467. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/xmtp/swap.py +0 -0
  468. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/xmtp/transfer.py +0 -0
  469. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/skills/xmtp/xmtp.png +0 -0
  470. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/utils/__init__.py +0 -0
  471. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/utils/chain.py +0 -0
  472. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/utils/ens.py +0 -0
  473. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/utils/error.py +0 -0
  474. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/utils/logging.py +0 -0
  475. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/utils/random.py +0 -0
  476. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/utils/schema.py +0 -0
  477. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/utils/slack_alert.py +0 -0
  478. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/utils/tx.py +0 -0
  479. {intentkit-0.8.34.dev6 → intentkit-0.8.34.dev8}/intentkit/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.8.34.dev6
3
+ Version: 0.8.34.dev8
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-dev6"
6
+ __version__ = "0.8.34-dev8"
7
7
  __author__ = "Ruihua"
8
8
  __email__ = "ruihua@crestal.network"
9
9
 
@@ -0,0 +1,80 @@
1
+ import logging
2
+ from datetime import datetime, timedelta, timezone
3
+
4
+ from sqlalchemy import text
5
+
6
+ from intentkit.config.config import config
7
+ from intentkit.models.db import get_session, init_db
8
+
9
+ logger = logging.getLogger(__name__)
10
+
11
+
12
+ async def cleanup_checkpoints(days: int = 90, dry_run: bool = False) -> int:
13
+ """
14
+ Cleanup checkpoints older than the specified number of days.
15
+
16
+ Args:
17
+ days: Number of days to keep history for.
18
+ dry_run: If True, only count threads to be deleted without deleting.
19
+
20
+ Returns:
21
+ int: Number of threads deleted (or found, if dry_run is True).
22
+ """
23
+ # Ensure DB is initialized (idempotent)
24
+ await init_db(**config.db)
25
+
26
+ # Use UTC for consistency with LangGraph timestamps
27
+ cutoff_date = datetime.now(timezone.utc) - timedelta(days=days)
28
+ logger.info(
29
+ f"Cleaning up threads older than {days} days (before {cutoff_date.isoformat()})"
30
+ )
31
+
32
+ # 1. Identify threads to delete
33
+ count_query = text("""
34
+ SELECT count(DISTINCT thread_id)
35
+ FROM checkpoints
36
+ WHERE (checkpoint ->> 'ts')::timestamptz < :cutoff
37
+ """)
38
+
39
+ async with get_session() as session:
40
+ result = await session.execute(count_query, {"cutoff": cutoff_date})
41
+ thread_count = result.scalar()
42
+
43
+ logger.info(f"Found {thread_count} threads to delete.")
44
+
45
+ if thread_count == 0:
46
+ return 0
47
+
48
+ if dry_run:
49
+ logger.info("Dry run enabled. No changes made.")
50
+ return thread_count
51
+
52
+ # 2. Perform deletion
53
+ logger.info("Deleting...")
54
+ async with get_session() as session:
55
+ async with session.begin():
56
+ delete_stmt = text("""
57
+ WITH old_threads AS (
58
+ SELECT thread_id, checkpoint_ns
59
+ FROM checkpoints
60
+ WHERE (checkpoint ->> 'ts')::timestamptz < :cutoff
61
+ ),
62
+ deleted_writes AS (
63
+ DELETE FROM checkpoint_writes cw
64
+ USING old_threads ot
65
+ WHERE cw.thread_id = ot.thread_id AND cw.checkpoint_ns = ot.checkpoint_ns
66
+ ),
67
+ deleted_blobs AS (
68
+ DELETE FROM checkpoint_blobs cb
69
+ USING old_threads ot
70
+ WHERE cb.thread_id = ot.thread_id AND cb.checkpoint_ns = ot.checkpoint_ns
71
+ )
72
+ DELETE FROM checkpoints cp
73
+ USING old_threads ot
74
+ WHERE cp.thread_id = ot.thread_id AND cp.checkpoint_ns = ot.checkpoint_ns
75
+ """)
76
+
77
+ await session.execute(delete_stmt, {"cutoff": cutoff_date})
78
+ logger.info("Deletion completed.")
79
+
80
+ return thread_count
@@ -13,6 +13,7 @@ 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
16
17
  from intentkit.core.credit import refill_all_free_credits
17
18
  from intentkit.models.agent_data import AgentQuota
18
19
 
@@ -140,4 +141,16 @@ def create_scheduler(
140
141
  replace_existing=True,
141
142
  )
142
143
 
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
+
143
156
  return scheduler
@@ -120,31 +120,14 @@ async def migrate_checkpoints_table(conn) -> None:
120
120
  if table not in existing_tables:
121
121
  continue
122
122
 
123
- # 1. Add checkpoint_ns column
123
+ # Step 1: Add checkpoint_ns column
124
124
  await conn.execute(
125
125
  text(
126
126
  f"ALTER TABLE {table} ADD COLUMN IF NOT EXISTS checkpoint_ns TEXT DEFAULT ''"
127
127
  )
128
128
  )
129
129
 
130
- # 2. Drop columns that ShallowPostgresSaver doesn't use
131
- if table == "checkpoints":
132
- # ShallowPostgresSaver doesn't use checkpoint_id or parent_checkpoint_id
133
- await conn.execute(
134
- text("ALTER TABLE checkpoints DROP COLUMN IF EXISTS checkpoint_id")
135
- )
136
- await conn.execute(
137
- text(
138
- "ALTER TABLE checkpoints DROP COLUMN IF EXISTS parent_checkpoint_id"
139
- )
140
- )
141
- elif table == "checkpoint_blobs":
142
- # ShallowPostgresSaver doesn't use version column
143
- await conn.execute(
144
- text("ALTER TABLE checkpoint_blobs DROP COLUMN IF EXISTS version")
145
- )
146
-
147
- # 3. Update Primary Key
130
+ # Step 2: Check current and expected Primary Key
148
131
  def _check_pk(connection, table_name=table):
149
132
  insp = inspect(connection)
150
133
  return insp.get_pk_constraint(table_name)
@@ -171,15 +154,15 @@ async def migrate_checkpoints_table(conn) -> None:
171
154
  }
172
155
  pk_cols = "thread_id, checkpoint_ns, checkpoint_id, task_id, idx"
173
156
 
157
+ # Step 3: Handle duplicates BEFORE dropping columns (so we can use checkpoint_id, version, etc.)
174
158
  if current_cols != expected_cols:
175
159
  logger.info(f"Migrating {table} PK from {current_cols} to {expected_cols}")
176
160
 
177
- # If migrating checkpoints to (thread_id, checkpoint_ns), we need to handle duplicates
178
161
  if table == "checkpoints" and expected_cols == {
179
162
  "thread_id",
180
163
  "checkpoint_ns",
181
164
  }:
182
- # Keep only the latest checkpoint for each (thread_id, checkpoint_ns) based on checkpoint_id (time-ordered)
165
+ # Keep only the latest checkpoint based on MAX(checkpoint_id)
183
166
  await conn.execute(
184
167
  text("""
185
168
  DELETE FROM checkpoints
@@ -191,14 +174,12 @@ async def migrate_checkpoints_table(conn) -> None:
191
174
  """)
192
175
  )
193
176
 
194
- # If migrating checkpoint_blobs to (thread_id, checkpoint_ns, channel), we need to handle duplicates
195
177
  elif table == "checkpoint_blobs" and expected_cols == {
196
178
  "thread_id",
197
179
  "checkpoint_ns",
198
180
  "channel",
199
181
  }:
200
- # Keep only blobs that are referenced by the remaining checkpoints
201
- # The relationship is: checkpoints.checkpoint -> 'channel_versions' ->> blob.channel = blob.version
182
+ # Keep only blobs referenced by checkpoints via channel_versions
202
183
  await conn.execute(
203
184
  text("""
204
185
  DELETE FROM checkpoint_blobs cb
@@ -212,9 +193,27 @@ async def migrate_checkpoints_table(conn) -> None:
212
193
  """)
213
194
  )
214
195
 
196
+ # Step 4: Update Primary Key FIRST (before dropping columns)
197
+ if current_cols != expected_cols:
215
198
  if pk.get("name"):
216
199
  await conn.execute(
217
200
  text(f"ALTER TABLE {table} DROP CONSTRAINT {pk['name']}")
218
201
  )
219
202
 
220
203
  await conn.execute(text(f"ALTER TABLE {table} ADD PRIMARY KEY ({pk_cols})"))
204
+
205
+ # Step 5: Drop columns that ShallowPostgresSaver doesn't use
206
+ # (Can only drop AFTER removing from PK)
207
+ if table == "checkpoints":
208
+ await conn.execute(
209
+ text("ALTER TABLE checkpoints DROP COLUMN IF EXISTS checkpoint_id")
210
+ )
211
+ await conn.execute(
212
+ text(
213
+ "ALTER TABLE checkpoints DROP COLUMN IF EXISTS parent_checkpoint_id"
214
+ )
215
+ )
216
+ elif table == "checkpoint_blobs":
217
+ await conn.execute(
218
+ text("ALTER TABLE checkpoint_blobs DROP COLUMN IF EXISTS version")
219
+ )
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "intentkit"
3
- version = "0.8.34-dev6"
3
+ version = "0.8.34-dev8"
4
4
  description = "Intent-based AI Agent Platform - Core Package"
5
5
  authors = [
6
6
  { name = "Ruihua", email = "ruihua@crestal.network" },
File without changes