intentkit 1.2.10__tar.gz → 1.2.12__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 (751) hide show
  1. {intentkit-1.2.10 → intentkit-1.2.12}/PKG-INFO +16 -15
  2. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/__init__.py +1 -1
  3. intentkit-1.2.12/intentkit/abstracts/graph.py +108 -0
  4. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/executor.py +6 -0
  5. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/engine.py +2 -1
  6. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/llm.csv +4 -6
  7. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/llm_picker.py +3 -3
  8. intentkit-1.2.12/intentkit/skills/cn_stock/README.md +34 -0
  9. intentkit-1.2.12/intentkit/skills/cn_stock/__init__.py +69 -0
  10. intentkit-1.2.12/intentkit/skills/cn_stock/base.py +107 -0
  11. intentkit-1.2.12/intentkit/skills/cn_stock/get_announcement.py +47 -0
  12. intentkit-1.2.12/intentkit/skills/cn_stock/get_board.py +63 -0
  13. intentkit-1.2.12/intentkit/skills/cn_stock/get_capital_flow.py +69 -0
  14. intentkit-1.2.12/intentkit/skills/cn_stock/get_financials.py +52 -0
  15. intentkit-1.2.12/intentkit/skills/cn_stock/get_index.py +96 -0
  16. intentkit-1.2.12/intentkit/skills/cn_stock/get_kline.py +72 -0
  17. intentkit-1.2.12/intentkit/skills/cn_stock/get_news.py +62 -0
  18. intentkit-1.2.12/intentkit/skills/cn_stock/get_quote.py +74 -0
  19. intentkit-1.2.12/intentkit/skills/cn_stock/is_trading_day.py +60 -0
  20. intentkit-1.2.12/intentkit/skills/cn_stock/schema.json +102 -0
  21. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/__init__.py +1 -3
  22. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/grok.py +1 -13
  23. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/schema.json +1 -13
  24. {intentkit-1.2.10 → intentkit-1.2.12}/pyproject.toml +18 -16
  25. intentkit-1.2.10/intentkit/abstracts/graph.py +0 -52
  26. {intentkit-1.2.10 → intentkit-1.2.12}/.gitignore +0 -0
  27. {intentkit-1.2.10 → intentkit-1.2.12}/LICENSE +0 -0
  28. {intentkit-1.2.10 → intentkit-1.2.12}/app/team/intentkit/docker-compose.yml +0 -0
  29. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/.dockerignore +0 -0
  30. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/LICENSE +0 -0
  31. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/MANIFEST.in +0 -0
  32. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/README.md +0 -0
  33. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/__init__.py +0 -0
  34. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/agent.py +0 -0
  35. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/api.py +0 -0
  36. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/engine.py +0 -0
  37. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/skill.py +0 -0
  38. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/twitter.py +0 -0
  39. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/abstracts/wallet.py +0 -0
  40. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/__init__.py +0 -0
  41. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/__init__.py +0 -0
  42. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/client.py +0 -0
  43. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/registry.py +0 -0
  44. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/tool.py +0 -0
  45. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/mcp/wrapper.py +0 -0
  46. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/moralis.py +0 -0
  47. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/s3.py +0 -0
  48. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/s3_setup.py +0 -0
  49. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/supabase.py +0 -0
  50. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/twitter.py +0 -0
  51. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/clients/web3_ens.py +0 -0
  52. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/__init__.py +0 -0
  53. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/base.py +0 -0
  54. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/config.py +0 -0
  55. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/db.py +0 -0
  56. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/db_mig.py +0 -0
  57. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/config/redis.py +0 -0
  58. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/__init__.py +0 -0
  59. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/account_checking.py +0 -0
  60. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/__init__.py +0 -0
  61. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/analytics.py +0 -0
  62. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/constants.py +0 -0
  63. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/management.py +0 -0
  64. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/notifications.py +0 -0
  65. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/public_info.py +0 -0
  66. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/publish.py +0 -0
  67. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/queries.py +0 -0
  68. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent/wallet.py +0 -0
  69. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent_activity.py +0 -0
  70. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/agent_post.py +0 -0
  71. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/api.py +0 -0
  72. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/asset.py +0 -0
  73. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/autonomous.py +0 -0
  74. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/avatar.py +0 -0
  75. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/budget.py +0 -0
  76. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/chat.py +0 -0
  77. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/cleanup.py +0 -0
  78. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/client.py +0 -0
  79. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/__init__.py +0 -0
  80. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/adjustment.py +0 -0
  81. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/base.py +0 -0
  82. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/expense.py +0 -0
  83. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/list_events.py +0 -0
  84. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/plan_credit.py +0 -0
  85. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/recharge.py +0 -0
  86. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/refill.py +0 -0
  87. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/reward.py +0 -0
  88. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/credit/withdraw.py +0 -0
  89. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/draft.py +0 -0
  90. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/draft_chat.py +0 -0
  91. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/engine.py +0 -0
  92. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/__init__.py +0 -0
  93. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/cache.py +0 -0
  94. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/constants.py +0 -0
  95. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/engine.py +0 -0
  96. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/service.py +0 -0
  97. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/__init__.py +0 -0
  98. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/add_autonomous_task.py +0 -0
  99. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/base.py +0 -0
  100. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/call_agent.py +0 -0
  101. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/create_team_agent.py +0 -0
  102. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/delete_autonomous_task.py +0 -0
  103. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/edit_autonomous_task.py +0 -0
  104. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/get_post.py +0 -0
  105. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/get_self_info.py +0 -0
  106. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/get_team_agent.py +0 -0
  107. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/get_team_info.py +0 -0
  108. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/list_autonomous_tasks.py +0 -0
  109. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/list_skills.py +0 -0
  110. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/list_team_agents.py +0 -0
  111. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/llm.py +0 -0
  112. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/recent_team_activities.py +0 -0
  113. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/recent_team_posts.py +0 -0
  114. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/update_self.py +0 -0
  115. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/update_self_memory.py +0 -0
  116. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/update_team_agent.py +0 -0
  117. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/skills/update_user_profile.py +0 -0
  118. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/__init__.py +0 -0
  119. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/agent_manager.py +0 -0
  120. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/content_manager.py +0 -0
  121. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/self_updater.py +0 -0
  122. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/lead/sub_agents/user_manager.py +0 -0
  123. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/__init__.py +0 -0
  124. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/service.py +0 -0
  125. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/__init__.py +0 -0
  126. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/add_autonomous_task.py +0 -0
  127. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/base.py +0 -0
  128. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/delete_autonomous_task.py +0 -0
  129. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/draft.py +0 -0
  130. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/edit_autonomous_task.py +0 -0
  131. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/list_autonomous_tasks.py +0 -0
  132. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/llm.py +0 -0
  133. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/public_info.py +0 -0
  134. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/manager/skills/publish.py +0 -0
  135. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/memory.py +0 -0
  136. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/middleware.py +0 -0
  137. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/prompt.py +0 -0
  138. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/public_agents.py +0 -0
  139. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/public_api.py +0 -0
  140. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/scheduler.py +0 -0
  141. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/share_link.py +0 -0
  142. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/statistics.py +0 -0
  143. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/__init__.py +0 -0
  144. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/base.py +0 -0
  145. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/call_agent.py +0 -0
  146. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/create_activity.py +0 -0
  147. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/create_post.py +0 -0
  148. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/current_time.py +0 -0
  149. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/get_post.py +0 -0
  150. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/read_webpage.py +0 -0
  151. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/recent_activities.py +0 -0
  152. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/recent_posts.py +0 -0
  153. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/search_web.py +0 -0
  154. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/system_skills/update_memory.py +0 -0
  155. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/task_registry.py +0 -0
  156. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/__init__.py +0 -0
  157. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/channel.py +0 -0
  158. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/feed.py +0 -0
  159. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/membership.py +0 -0
  160. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/push.py +0 -0
  161. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/subscription.py +0 -0
  162. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/team/wechat_session_notice.py +0 -0
  163. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/template.py +0 -0
  164. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/core/user.py +0 -0
  165. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/__init__.py +0 -0
  166. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/__init__.py +0 -0
  167. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/agent.py +0 -0
  168. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/autonomous.py +0 -0
  169. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/core.py +0 -0
  170. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/db.py +0 -0
  171. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/public.json +0 -0
  172. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/public_info.py +0 -0
  173. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/response.py +0 -0
  174. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/schema.json +0 -0
  175. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/tags.py +0 -0
  176. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent/user_input.py +0 -0
  177. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent_activity.py +0 -0
  178. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent_data.py +0 -0
  179. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/agent_post.py +0 -0
  180. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/app_setting.py +0 -0
  181. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/chat.py +0 -0
  182. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/__init__.py +0 -0
  183. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/account.py +0 -0
  184. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/base.py +0 -0
  185. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/event.py +0 -0
  186. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/price.py +0 -0
  187. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/credit/transaction.py +0 -0
  188. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/draft.py +0 -0
  189. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/llm.py +0 -0
  190. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/share_link.py +0 -0
  191. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/skill.py +0 -0
  192. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/team.py +0 -0
  193. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/team_channel.py +0 -0
  194. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/team_feed.py +0 -0
  195. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/template.py +0 -0
  196. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/user.py +0 -0
  197. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/user_data.py +0 -0
  198. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/models/x402_order.py +0 -0
  199. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/__init__.py +0 -0
  200. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/__init__.py +0 -0
  201. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/aave_v3.svg +0 -0
  202. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/base.py +0 -0
  203. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/borrow.py +0 -0
  204. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/constants.py +0 -0
  205. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/get_reserve_data.py +0 -0
  206. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/get_user_account_data.py +0 -0
  207. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/repay.py +0 -0
  208. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/schema.json +0 -0
  209. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/set_collateral.py +0 -0
  210. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/supply.py +0 -0
  211. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/utils.py +0 -0
  212. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aave_v3/withdraw.py +0 -0
  213. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/__init__.py +0 -0
  214. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/acp.png +0 -0
  215. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/base.py +0 -0
  216. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/cancel_checkout.py +0 -0
  217. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/complete_checkout.py +0 -0
  218. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/create_checkout.py +0 -0
  219. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/get_checkout.py +0 -0
  220. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/list_products.py +0 -0
  221. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/acp/schema.json +0 -0
  222. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/__init__.py +0 -0
  223. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/add_liquidity.py +0 -0
  224. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/aerodrome.svg +0 -0
  225. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/base.py +0 -0
  226. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/constants.py +0 -0
  227. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/get_positions.py +0 -0
  228. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/quote.py +0 -0
  229. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/remove_liquidity.py +0 -0
  230. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/schema.json +0 -0
  231. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/swap.py +0 -0
  232. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aerodrome/utils.py +0 -0
  233. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/README.md +0 -0
  234. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/__init__.py +0 -0
  235. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/aixbt.jpg +0 -0
  236. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/base.py +0 -0
  237. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/projects.py +0 -0
  238. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/aixbt/schema.json +0 -0
  239. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/__init__.py +0 -0
  240. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/allora.jpeg +0 -0
  241. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/base.py +0 -0
  242. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/price.py +0 -0
  243. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/allora/schema.json +0 -0
  244. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/availability.py +0 -0
  245. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/base.py +0 -0
  246. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/__init__.py +0 -0
  247. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/base.py +0 -0
  248. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/basename.svg +0 -0
  249. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/constants.py +0 -0
  250. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/register.py +0 -0
  251. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/basename/schema.json +0 -0
  252. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/README.md +0 -0
  253. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/__init__.py +0 -0
  254. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/base.py +0 -0
  255. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/carv.webp +0 -0
  256. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/fetch_news.py +0 -0
  257. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/onchain_query.py +0 -0
  258. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/schema.json +0 -0
  259. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/carv/token_info_and_price.py +0 -0
  260. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/README.md +0 -0
  261. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/__init__.py +0 -0
  262. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/base.py +0 -0
  263. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/casino.png +0 -0
  264. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/deck_draw.py +0 -0
  265. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/deck_shuffle.py +0 -0
  266. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/dice_roll.py +0 -0
  267. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/schema.json +0 -0
  268. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/casino/utils.py +0 -0
  269. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/__init__.py +0 -0
  270. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/base.py +0 -0
  271. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/cdp.png +0 -0
  272. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/get_balance.py +0 -0
  273. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/get_wallet_details.py +0 -0
  274. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/native_transfer.py +0 -0
  275. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cdp/schema.json +0 -0
  276. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/README.md +0 -0
  277. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/__init__.py +0 -0
  278. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/base.py +0 -0
  279. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/chain_lookup.py +0 -0
  280. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/chainlist.png +0 -0
  281. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/chainlist/schema.json +0 -0
  282. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/README.md +0 -0
  283. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/__init__.py +0 -0
  284. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/base.py +0 -0
  285. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/constants.py +0 -0
  286. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/cookiefun.png +0 -0
  287. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/get_account_details.py +0 -0
  288. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
  289. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
  290. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/get_sectors.py +0 -0
  291. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/schema.json +0 -0
  292. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cookiefun/search_accounts.py +0 -0
  293. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/__init__.py +0 -0
  294. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/api.py +0 -0
  295. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/base.py +0 -0
  296. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
  297. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
  298. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
  299. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  300. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  301. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
  302. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
  303. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptocompare/schema.json +0 -0
  304. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/__init__.py +0 -0
  305. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/base.py +0 -0
  306. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
  307. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
  308. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  309. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/cryptopanic/schema.json +0 -0
  310. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/README.md +0 -0
  311. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/__init__.py +0 -0
  312. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/base.py +0 -0
  313. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
  314. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
  315. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dapplooker/schema.json +0 -0
  316. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/__init__.py +0 -0
  317. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/api.py +0 -0
  318. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/base.py +0 -0
  319. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/__init__.py +0 -0
  320. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  321. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
  322. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
  323. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
  324. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
  325. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
  326. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
  327. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/config/__init__.py +0 -0
  328. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/config/chains.py +0 -0
  329. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/defillama.jpeg +0 -0
  330. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/fees/__init__.py +0 -0
  331. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
  332. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/schema.json +0 -0
  333. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
  334. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  335. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  336. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  337. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  338. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tests/__init__.py +0 -0
  339. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
  340. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
  341. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/__init__.py +0 -0
  342. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  343. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
  344. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  345. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
  346. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  347. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
  348. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/volumes/__init__.py +0 -0
  349. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  350. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  351. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
  352. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/yields/__init__.py +0 -0
  353. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
  354. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
  355. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/README.md +0 -0
  356. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/__init__.py +0 -0
  357. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/base.py +0 -0
  358. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/dexscreener.png +0 -0
  359. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
  360. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
  361. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
  362. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/model/__init__.py +0 -0
  363. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
  364. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/schema.json +0 -0
  365. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/search_token.py +0 -0
  366. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dexscreener/utils.py +0 -0
  367. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/__init__.py +0 -0
  368. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/base.py +0 -0
  369. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/dune.png +0 -0
  370. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/execute_query.py +0 -0
  371. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/get_query_results.py +0 -0
  372. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/run_sql.py +0 -0
  373. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/dune/schema.json +0 -0
  374. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/README.md +0 -0
  375. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/__init__.py +0 -0
  376. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/base.py +0 -0
  377. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/elfa.jpg +0 -0
  378. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/mention.py +0 -0
  379. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/schema.json +0 -0
  380. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/stats.py +0 -0
  381. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/tokens.py +0 -0
  382. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/elfa/utils.py +0 -0
  383. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/README.md +0 -0
  384. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/__init__.py +0 -0
  385. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/abi/__init__.py +0 -0
  386. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/abi/approval.py +0 -0
  387. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/abi/erc20.py +0 -0
  388. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/abi/route.py +0 -0
  389. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/base.py +0 -0
  390. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/best_yield.py +0 -0
  391. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/enso.jpg +0 -0
  392. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/networks.py +0 -0
  393. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/prices.py +0 -0
  394. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/route.py +0 -0
  395. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/schema.json +0 -0
  396. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/tokens.py +0 -0
  397. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/enso/wallet.py +0 -0
  398. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/__init__.py +0 -0
  399. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/base.py +0 -0
  400. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/constants.py +0 -0
  401. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/erc20.svg +0 -0
  402. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/get_balance.py +0 -0
  403. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/get_token_address.py +0 -0
  404. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/schema.json +0 -0
  405. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/transfer.py +0 -0
  406. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc20/utils.py +0 -0
  407. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/__init__.py +0 -0
  408. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/base.py +0 -0
  409. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/constants.py +0 -0
  410. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/erc721.svg +0 -0
  411. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/get_balance.py +0 -0
  412. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/mint.py +0 -0
  413. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/schema.json +0 -0
  414. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/erc721/transfer.py +0 -0
  415. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/README.md +0 -0
  416. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/__init__.py +0 -0
  417. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/base.py +0 -0
  418. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/clear.py +0 -0
  419. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/crawl.py +0 -0
  420. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/firecrawl.png +0 -0
  421. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/query.py +0 -0
  422. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/schema.json +0 -0
  423. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/scrape.py +0 -0
  424. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/firecrawl/utils.py +0 -0
  425. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/README.md +0 -0
  426. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/__init__.py +0 -0
  427. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/base.py +0 -0
  428. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/github.jpg +0 -0
  429. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/github_search.py +0 -0
  430. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/github/schema.json +0 -0
  431. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/__init__.py +0 -0
  432. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/base.py +0 -0
  433. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/heurist.png +0 -0
  434. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
  435. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
  436. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
  437. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
  438. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  439. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
  440. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
  441. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/heurist/schema.json +0 -0
  442. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/README.md +0 -0
  443. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/__init__.py +0 -0
  444. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/base.py +0 -0
  445. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/get.py +0 -0
  446. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/http.svg +0 -0
  447. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/post.py +0 -0
  448. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/put.py +0 -0
  449. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/http/schema.json +0 -0
  450. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/base.py +0 -0
  451. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/gemini.py +0 -0
  452. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/gpt.py +0 -0
  453. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/image.svg +0 -0
  454. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/minimax.py +0 -0
  455. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/image/openrouter.py +0 -0
  456. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/README.md +0 -0
  457. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/__init__.py +0 -0
  458. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/base.py +0 -0
  459. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/jupiter.png +0 -0
  460. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/price.py +0 -0
  461. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/schema.json +0 -0
  462. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/jupiter/swap.py +0 -0
  463. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/README.md +0 -0
  464. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/__init__.py +0 -0
  465. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/base.py +0 -0
  466. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/lifi.png +0 -0
  467. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/schema.json +0 -0
  468. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/token_execute.py +0 -0
  469. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/token_quote.py +0 -0
  470. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/lifi/utils.py +0 -0
  471. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/mcp_coingecko/__init__.py +0 -0
  472. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/mcp_coingecko/coingecko.svg +0 -0
  473. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/mcp_coingecko/schema.json +0 -0
  474. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/README.md +0 -0
  475. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/__init__.py +0 -0
  476. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/api.py +0 -0
  477. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/base.py +0 -0
  478. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
  479. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
  480. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
  481. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
  482. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/moralis.png +0 -0
  483. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/moralis/schema.json +0 -0
  484. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/__init__.py +0 -0
  485. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/base.py +0 -0
  486. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/borrow.py +0 -0
  487. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/constants.py +0 -0
  488. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/deposit.py +0 -0
  489. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/get_position.py +0 -0
  490. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/get_vault_data.py +0 -0
  491. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/morpho.svg +0 -0
  492. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/repay.py +0 -0
  493. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/schema.json +0 -0
  494. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/supply_collateral.py +0 -0
  495. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/withdraw.py +0 -0
  496. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/morpho/withdraw_collateral.py +0 -0
  497. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/onchain.py +0 -0
  498. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/__init__.py +0 -0
  499. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/base.py +0 -0
  500. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/buy_nft.py +0 -0
  501. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/cancel_listing.py +0 -0
  502. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/constants.py +0 -0
  503. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/create_listing.py +0 -0
  504. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_collection.py +0 -0
  505. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_collection_stats.py +0 -0
  506. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_events.py +0 -0
  507. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_listings.py +0 -0
  508. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_nft.py +0 -0
  509. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_nfts_by_account.py +0 -0
  510. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/get_offers.py +0 -0
  511. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/onchain_base.py +0 -0
  512. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/opensea.svg +0 -0
  513. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/schema.json +0 -0
  514. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/opensea/update_listing.py +0 -0
  515. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/__init__.py +0 -0
  516. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/add_liquidity.py +0 -0
  517. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/base.py +0 -0
  518. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/constants.py +0 -0
  519. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/get_positions.py +0 -0
  520. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/pancakeswap.png +0 -0
  521. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/quote.py +0 -0
  522. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/remove_liquidity.py +0 -0
  523. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/schema.json +0 -0
  524. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/swap.py +0 -0
  525. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pancakeswap/utils.py +0 -0
  526. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/__init__.py +0 -0
  527. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/base.py +0 -0
  528. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/cancel_order.py +0 -0
  529. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_market.py +0 -0
  530. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_orderbook.py +0 -0
  531. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_orders.py +0 -0
  532. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_positions.py +0 -0
  533. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_price_history.py +0 -0
  534. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/get_trades.py +0 -0
  535. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/place_order.py +0 -0
  536. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/polymarket.png +0 -0
  537. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/schema.json +0 -0
  538. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/polymarket/search_markets.py +0 -0
  539. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/README.md +0 -0
  540. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/__init__.py +0 -0
  541. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/base.py +0 -0
  542. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/constants.py +0 -0
  543. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/moralis.png +0 -0
  544. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/schema.json +0 -0
  545. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/token_balances.py +0 -0
  546. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
  547. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
  548. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_history.py +0 -0
  549. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
  550. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
  551. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
  552. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
  553. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_stats.py +0 -0
  554. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
  555. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/__init__.py +0 -0
  556. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/base.py +0 -0
  557. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/fetch_price.py +0 -0
  558. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/fetch_price_feed.py +0 -0
  559. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/pyth.svg +0 -0
  560. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/pyth/schema.json +0 -0
  561. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/__init__.py +0 -0
  562. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/base.py +0 -0
  563. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/get_channel.py +0 -0
  564. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/get_message.py +0 -0
  565. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/schedule_message.py +0 -0
  566. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/schema.json +0 -0
  567. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/send_message.py +0 -0
  568. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/slack/slack.jpg +0 -0
  569. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/__init__.py +0 -0
  570. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/base.py +0 -0
  571. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/delete_data.py +0 -0
  572. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/fetch_data.py +0 -0
  573. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/insert_data.py +0 -0
  574. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/invoke_function.py +0 -0
  575. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/schema.json +0 -0
  576. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/supabase.svg +0 -0
  577. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/update_data.py +0 -0
  578. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/supabase/upsert_data.py +0 -0
  579. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/__init__.py +0 -0
  580. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/base.py +0 -0
  581. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/constants.py +0 -0
  582. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/create_flow.py +0 -0
  583. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/delete_flow.py +0 -0
  584. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/schema.json +0 -0
  585. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/superfluid.svg +0 -0
  586. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/superfluid/update_flow.py +0 -0
  587. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/README.md +0 -0
  588. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/__init__.py +0 -0
  589. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/base.py +0 -0
  590. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/schema.json +0 -0
  591. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/tavily.jpg +0 -0
  592. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/tavily_extract.py +0 -0
  593. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/tavily/tavily_search.py +0 -0
  594. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/README.md +0 -0
  595. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/__init__.py +0 -0
  596. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/base.py +0 -0
  597. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/constants.py +0 -0
  598. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/erc20_transfers.py +0 -0
  599. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/moralis.png +0 -0
  600. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/schema.json +0 -0
  601. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/token_analytics.py +0 -0
  602. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/token_price.py +0 -0
  603. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/token/token_search.py +0 -0
  604. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/__init__.py +0 -0
  605. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/base.py +0 -0
  606. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/follow_user.py +0 -0
  607. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/get_mentions.py +0 -0
  608. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/get_timeline.py +0 -0
  609. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/get_user_by_username.py +0 -0
  610. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/get_user_tweets.py +0 -0
  611. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/like_tweet.py +0 -0
  612. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/post_tweet.py +0 -0
  613. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/reply_tweet.py +0 -0
  614. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/retweet.py +0 -0
  615. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/schema.json +0 -0
  616. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/search_tweets.py +0 -0
  617. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/twitter/twitter.png +0 -0
  618. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/__init__.py +0 -0
  619. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/ask_user.py +0 -0
  620. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/base.py +0 -0
  621. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/schema.json +0 -0
  622. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/show_card.py +0 -0
  623. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/ui/ui.svg +0 -0
  624. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/__init__.py +0 -0
  625. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/add_liquidity.py +0 -0
  626. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/base.py +0 -0
  627. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/constants.py +0 -0
  628. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/get_positions.py +0 -0
  629. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/quote.py +0 -0
  630. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/remove_liquidity.py +0 -0
  631. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/schema.json +0 -0
  632. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/swap.py +0 -0
  633. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/uniswap.svg +0 -0
  634. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/uniswap/utils.py +0 -0
  635. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/__init__.py +0 -0
  636. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/base.py +0 -0
  637. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/schema.json +0 -0
  638. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
  639. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
  640. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/__init__.py +0 -0
  641. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/base.py +0 -0
  642. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/input.py +0 -0
  643. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/schema.json +0 -0
  644. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/venice_audio.py +0 -0
  645. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
  646. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/README.md +0 -0
  647. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/__init__.py +0 -0
  648. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/api.py +0 -0
  649. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/base.py +0 -0
  650. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/config.py +0 -0
  651. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
  652. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
  653. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
  654. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  655. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  656. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/README.md +0 -0
  657. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
  658. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
  659. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  660. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  661. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  662. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
  663. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  664. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  665. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  666. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  667. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
  668. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
  669. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
  670. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  671. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  672. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/README.md +0 -0
  673. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
  674. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
  675. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
  676. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
  677. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/schema.json +0 -0
  678. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/utils.py +0 -0
  679. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/venice_image/venice_image.jpg +0 -0
  680. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/__init__.py +0 -0
  681. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/base.py +0 -0
  682. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/gemini.py +0 -0
  683. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/gpt.py +0 -0
  684. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/grok.py +0 -0
  685. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/minimax.py +0 -0
  686. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/schema.json +0 -0
  687. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/video/video.svg +0 -0
  688. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/README.md +0 -0
  689. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/__init__.py +0 -0
  690. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/base.py +0 -0
  691. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/document_indexer.py +0 -0
  692. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/langchain.png +0 -0
  693. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/schema.json +0 -0
  694. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
  695. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/utils.py +0 -0
  696. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/web_scraper/website_indexer.py +0 -0
  697. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/__init__.py +0 -0
  698. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/base.py +0 -0
  699. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/constants.py +0 -0
  700. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/schema.json +0 -0
  701. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/unwrap_eth.py +0 -0
  702. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/weth.svg +0 -0
  703. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/weth/wrap_eth.py +0 -0
  704. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/__init__.py +0 -0
  705. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/base.py +0 -0
  706. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/check_price.py +0 -0
  707. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/get_orders.py +0 -0
  708. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/http_request.py +0 -0
  709. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/httpx_compat.py +0 -0
  710. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/pay.py +0 -0
  711. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/schema.json +0 -0
  712. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/x402/x402.webp +0 -0
  713. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/README.md +0 -0
  714. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/__init__.py +0 -0
  715. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/base.py +0 -0
  716. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/price.py +0 -0
  717. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/schema.json +0 -0
  718. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/swap.py +0 -0
  719. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/transfer.py +0 -0
  720. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/skills/xmtp/xmtp.png +0 -0
  721. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/__init__.py +0 -0
  722. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/alert.py +0 -0
  723. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/alert_handler.py +0 -0
  724. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/chain.py +0 -0
  725. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/ens.py +0 -0
  726. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/error.py +0 -0
  727. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/logging.py +0 -0
  728. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/opengraph.py +0 -0
  729. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/pdf.py +0 -0
  730. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/random.py +0 -0
  731. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/s3_setup.py +0 -0
  732. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/schema.py +0 -0
  733. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/slack_alert.py +0 -0
  734. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/telegram_alert.py +0 -0
  735. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/templates/post_pdf.html +0 -0
  736. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/time.py +0 -0
  737. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/tx.py +0 -0
  738. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/utils/upload.py +0 -0
  739. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/__init__.py +0 -0
  740. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/cdp.py +0 -0
  741. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/evm_wallet.py +0 -0
  742. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/native.py +0 -0
  743. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy.py +0 -0
  744. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_client.py +0 -0
  745. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_nonce.py +0 -0
  746. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_safe.py +0 -0
  747. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_signer.py +0 -0
  748. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_types.py +0 -0
  749. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/privy_utils.py +0 -0
  750. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/signer.py +0 -0
  751. {intentkit-1.2.10 → intentkit-1.2.12}/intentkit/wallets/web3.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 1.2.10
3
+ Version: 1.2.12
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
@@ -40,6 +40,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
40
40
  Requires-Python: ==3.13.*
41
41
  Requires-Dist: aiohttp>=3.11.16
42
42
  Requires-Dist: aiosqlite>=0.21.0
43
+ Requires-Dist: akshare>=1.16.0
43
44
  Requires-Dist: asyncpg>=0.30.0
44
45
  Requires-Dist: aws-secretsmanager-caching>=1.1.3
45
46
  Requires-Dist: boto3<2.0.0,>=1.37.23
@@ -54,20 +55,20 @@ Requires-Dist: fastapi>=0.115.8
54
55
  Requires-Dist: filetype<2.0.0,>=1.2.0
55
56
  Requires-Dist: httpx>=0.28.1
56
57
  Requires-Dist: jsonref>=1.1.0
57
- Requires-Dist: langchain-anthropic>=0.3.12
58
- Requires-Dist: langchain-community>=0.3.19
59
- Requires-Dist: langchain-core>=0.3.43
60
- Requires-Dist: langchain-deepseek>=0.1.4
61
- Requires-Dist: langchain-google-genai>=3.2.0
62
- Requires-Dist: langchain-openai>=0.3.8
63
- Requires-Dist: langchain-openrouter>=0.2.1
64
- Requires-Dist: langchain-text-splitters>=0.3.8
65
- Requires-Dist: langchain-xai>=0.2.1
66
- Requires-Dist: langchain>=0.3.25
67
- Requires-Dist: langgraph-checkpoint-postgres>=2.0.16
68
- Requires-Dist: langgraph-checkpoint>=2.0.18
69
- Requires-Dist: langgraph-prebuilt>=0.6.1
70
- Requires-Dist: langgraph>=0.6.1
58
+ Requires-Dist: langchain-anthropic<2,>=1.4
59
+ Requires-Dist: langchain-community<1,>=0.4
60
+ Requires-Dist: langchain-core<2,>=1.4
61
+ Requires-Dist: langchain-deepseek<2,>=1.0
62
+ Requires-Dist: langchain-google-genai<5,>=4.2
63
+ Requires-Dist: langchain-openai<2,>=1.2
64
+ Requires-Dist: langchain-openrouter<1,>=0.2.3
65
+ Requires-Dist: langchain-text-splitters<2,>=1.1
66
+ Requires-Dist: langchain-xai<2,>=1.2
67
+ Requires-Dist: langchain<2,>=1.3
68
+ Requires-Dist: langgraph-checkpoint-postgres<4,>=3.1
69
+ Requires-Dist: langgraph-checkpoint<5,>=4.1
70
+ Requires-Dist: langgraph-prebuilt<2,>=1.1
71
+ Requires-Dist: langgraph<2,>=1.2
71
72
  Requires-Dist: mcp>=1.0.0
72
73
  Requires-Dist: mypy-boto3-s3<2.0.0,>=1.37.24
73
74
  Requires-Dist: openai>=1.59.6
@@ -3,7 +3,7 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "1.2.10"
6
+ __version__ = "1.2.12"
7
7
  __author__ = "Ruihua"
8
8
  __email__ = "ruihua@crestal.network"
9
9
 
@@ -0,0 +1,108 @@
1
+ from collections.abc import Callable, Sequence
2
+ from enum import Enum
3
+ from typing import Annotated, Any, NotRequired
4
+
5
+ from langchain.agents import AgentState as BaseAgentState
6
+ from langchain_core.messages import AnyMessage, RemoveMessage
7
+ from langgraph.channels.delta import DeltaChannel
8
+
9
+ # `_messages_delta_reducer` is upstream's batching-invariant counterpart of
10
+ # `add_messages` for use with `DeltaChannel`. It is private (leading underscore)
11
+ # but is documented in its own docstring with a `DeltaChannel` usage example —
12
+ # treat as semi-public within the `langgraph>=1.2,<2` pin.
13
+ from langgraph.graph.message import (
14
+ REMOVE_ALL_MESSAGES,
15
+ _messages_delta_reducer, # pyright: ignore[reportPrivateUsage]
16
+ )
17
+ from pydantic import BaseModel
18
+
19
+ from intentkit.models.agent import Agent
20
+ from intentkit.models.chat import AuthorType, ChatMessageAttachment
21
+
22
+
23
+ class AgentError(str, Enum):
24
+ """The error types that can be raised by the agent."""
25
+
26
+ INSUFFICIENT_CREDITS = "insufficient_credits"
27
+
28
+
29
+ def _messages_reducer(
30
+ state: list[AnyMessage], writes: Sequence[Any]
31
+ ) -> list[AnyMessage]:
32
+ """Batching-invariant messages reducer for `DeltaChannel`.
33
+
34
+ Wraps `_messages_delta_reducer` to add `REMOVE_ALL_MESSAGES` handling,
35
+ which the upstream batched reducer documents as out-of-scope. Without
36
+ this wrapper, `SummarizationMiddleware` (which emits
37
+ `[RemoveMessage(REMOVE_ALL_MESSAGES), summary, ...preserved]`) silently
38
+ no-ops the reset and the message list grows unbounded.
39
+
40
+ Strategy: flatten writes once, find the *last* `REMOVE_ALL_MESSAGES`
41
+ sentinel. If present, reset state to empty and delegate to the upstream
42
+ reducer with only the post-sentinel writes — preserves batching
43
+ invariance (`reduce(reduce(s, A), B) == reduce(s, A+B)`) across all
44
+ combinations of resets and normal writes.
45
+ """
46
+ flat: list[Any] = []
47
+ for w in writes:
48
+ if isinstance(w, list):
49
+ flat.extend(w)
50
+ else:
51
+ flat.append(w)
52
+ last_reset = -1
53
+ for i, m in enumerate(flat):
54
+ if isinstance(m, RemoveMessage) and m.id == REMOVE_ALL_MESSAGES:
55
+ last_reset = i
56
+ if last_reset >= 0:
57
+ return _messages_delta_reducer([], [flat[last_reset + 1 :]])
58
+ return _messages_delta_reducer(state, writes) # pyright: ignore[reportArgumentType]
59
+
60
+
61
+ class AgentState(BaseAgentState[Any]):
62
+ """The state of the agent.
63
+
64
+ `messages` is overridden to use `DeltaChannel` so checkpointing stores
65
+ incremental writes rather than a full snapshot per step — for long chat
66
+ threads this turns O(N^2) checkpoint growth into O(N). `_messages_reducer`
67
+ delegates to the upstream batching-invariant `_messages_delta_reducer`
68
+ but adds `REMOVE_ALL_MESSAGES` handling so the bundled
69
+ `SummarizationMiddleware` reset path still works.
70
+
71
+ `snapshot_frequency=50` is tuned for chat workloads (a few-to-dozens of
72
+ steps per thread) rather than the upstream default of 1000 which targets
73
+ long workflow graphs. 50 caps resume-replay cost at one short reducer
74
+ pass while keeping snapshot writes rare for typical conversations.
75
+ """
76
+
77
+ messages: Annotated[
78
+ list[AnyMessage],
79
+ DeltaChannel(_messages_reducer, snapshot_frequency=50),
80
+ ]
81
+ context: dict[str, Any]
82
+ error: NotRequired[AgentError]
83
+ step_count: NotRequired[int]
84
+ __extra__: NotRequired[dict[str, Any]]
85
+
86
+
87
+ class AgentContext(BaseModel):
88
+ agent_id: str
89
+ get_agent: Callable[[], Agent]
90
+ chat_id: str
91
+ user_id: str | None = None
92
+ team_id: str | None = None
93
+ app_id: str | None = None
94
+ entrypoint: AuthorType
95
+ is_private: bool
96
+ thinking: bool = False
97
+ payer: str | None = None
98
+ start_message_id: str = ""
99
+ start_message_attachments: list[ChatMessageAttachment] | None = None
100
+ call_depth: int = 0
101
+
102
+ @property
103
+ def agent(self) -> Agent:
104
+ return self.get_agent()
105
+
106
+ @property
107
+ def thread_id(self) -> str:
108
+ return f"{self.agent_id}-{self.chat_id}"
@@ -88,6 +88,7 @@ async def build_executor(
88
88
  TodoListMiddleware,
89
89
  ToolRetryMiddleware,
90
90
  )
91
+ from langchain_anthropic.middleware import AnthropicPromptCachingMiddleware
91
92
 
92
93
  from intentkit.core.middleware import (
93
94
  DynamicPromptMiddleware,
@@ -257,6 +258,11 @@ async def build_executor(
257
258
  ModelRetryMiddleware(),
258
259
  ]
259
260
 
261
+ # Anthropic prompt caching: 5m ephemeral cache slashes input-token cost on
262
+ # long system prompts + repeated history. No-op for non-Anthropic providers.
263
+ if model_provider == LLMProvider.ANTHROPIC_COMPATIBLE:
264
+ middleware.append(AnthropicPromptCachingMiddleware())
265
+
260
266
  if agent.enable_todo:
261
267
  middleware.append(TodoListMiddleware())
262
268
 
@@ -28,6 +28,7 @@ from intentkit.core.manager.skills import (
28
28
  from intentkit.models.agent import Agent
29
29
  from intentkit.models.agent_data import AgentData
30
30
  from intentkit.models.chat import ChatMessage, ChatMessageCreate
31
+ from intentkit.models.llm_picker import pick_default_model
31
32
 
32
33
  logger = logging.getLogger(__name__)
33
34
 
@@ -141,7 +142,7 @@ def _build_manager_agent(agent_id: str, user_id: str) -> Agent:
141
142
  "5. When updating a draft, try to select the right skills. Don't pick too many, just enough to meet user needs.\n"
142
143
  "6. Update skill is override update, you must put the whole fields to input data, not only changed fields."
143
144
  ),
144
- "model": "grok-code-fast-1",
145
+ "model": pick_default_model(),
145
146
  "prompt": prompt,
146
147
  "prompt_append": None,
147
148
  "temperature": 0.2,
@@ -30,10 +30,8 @@ deepseek-v4-flash,Deepseek V4 Flash,deepseek,TRUE,0.14,0.028,0.28,1,1048576,3200
30
30
  deepseek/deepseek-v4-flash,Deepseek V4 Flash,openrouter,TRUE,0.14,0.028,0.28,1,1048576,32000,4,4,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
31
31
  deepseek-v4-pro,Deepseek V4 Pro,deepseek,TRUE,1.74,0.145,3.48,3,1048576,64000,5,2,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
32
32
  deepseek/deepseek-v4-pro,Deepseek V4 Pro,openrouter,TRUE,1.74,0.145,3.48,3,1048576,64000,5,2,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
33
- grok-4.20-0309-reasoning,Grok 4.20,xai,TRUE,2,0.2,6,3,2000000,4096,5,3,TRUE,FALSE,FALSE,TRUE,high,TRUE,FALSE,FALSE,180
34
- x-ai/grok-4.20,Grok 4.20,openrouter,TRUE,2,0.2,6,3,2000000,4096,5,3,TRUE,FALSE,FALSE,TRUE,high,TRUE,TRUE,TRUE,180
35
- grok-4-1-fast-non-reasoning,Grok 4.1 Fast,xai,TRUE,0.2,0.05,0.5,2,2000000,4096,3,4,TRUE,FALSE,FALSE,TRUE,none,TRUE,FALSE,FALSE,180
36
- x-ai/grok-4.1-fast,Grok 4.1 Fast,openrouter,TRUE,0.2,0.05,0.5,2,2000000,4096,3,4,TRUE,FALSE,FALSE,TRUE,none,TRUE,TRUE,TRUE,180
37
- grok-4-1-fast-reasoning,Grok 4.1 Fast Reasoning,xai,TRUE,0.2,0.05,0.5,2,2000000,4096,3,4,TRUE,FALSE,FALSE,TRUE,high,TRUE,FALSE,FALSE,180
38
- x-ai/grok-4.1-fast-reasoning,Grok 4.1 Fast Reasoning,openrouter,TRUE,0.2,0.05,0.5,2,2000000,4096,3,4,TRUE,FALSE,FALSE,TRUE,high,TRUE,TRUE,TRUE,180
33
+ grok-4.3,Grok 4.3,xai,TRUE,1.25,0.125,2.5,2,1000000,128000,5,4,TRUE,FALSE,FALSE,TRUE,high,TRUE,FALSE,FALSE,180
34
+ x-ai/grok-4.3,Grok 4.3,openrouter,TRUE,1.25,0.125,2.5,2,1000000,128000,5,4,TRUE,FALSE,FALSE,TRUE,high,TRUE,TRUE,TRUE,180
35
+ grok-4.20-non-reasoning,Grok 4.20,xai,TRUE,1.25,0.125,2.5,2,2000000,128000,4,4,TRUE,FALSE,FALSE,TRUE,none,TRUE,FALSE,FALSE,180
36
+ x-ai/grok-4.20,Grok 4.20,openrouter,TRUE,1.25,0.125,2.5,2,2000000,128000,4,4,TRUE,FALSE,FALSE,TRUE,none,TRUE,TRUE,TRUE,180
39
37
  MiniMax-M2.7,MiniMax M2.7,minimax,TRUE,0.1,0.01,0.4,1,204800,131072,5,3,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
@@ -14,7 +14,7 @@ def pick_summarize_model() -> str:
14
14
  ("gemini-3.1-flash-lite-preview", LLMProvider.GOOGLE),
15
15
  ("deepseek/deepseek-v4-flash", LLMProvider.OPENROUTER),
16
16
  ("gpt-5.4-mini", LLMProvider.OPENAI),
17
- ("grok-4-1-fast-non-reasoning", LLMProvider.XAI),
17
+ ("grok-4.20-non-reasoning", LLMProvider.XAI),
18
18
  ("deepseek-v4-flash", LLMProvider.DEEPSEEK),
19
19
  ("MiniMax-M2.7", LLMProvider.MINIMAX),
20
20
  ("mimo-v2.5", LLMProvider.MIMO_PLAN),
@@ -51,7 +51,7 @@ def pick_default_model() -> str:
51
51
  ("MiniMax-M2.7", LLMProvider.MINIMAX),
52
52
  ("minimax/minimax-m2.7", LLMProvider.OPENROUTER),
53
53
  ("gpt-5.4-mini", LLMProvider.OPENAI),
54
- ("grok-4-1-fast-non-reasoning", LLMProvider.XAI),
54
+ ("grok-4.20-non-reasoning", LLMProvider.XAI),
55
55
  ("deepseek-v4-flash", LLMProvider.DEEPSEEK),
56
56
  ("mimo-v2.5", LLMProvider.MIMO_PLAN),
57
57
  ]
@@ -106,7 +106,7 @@ def pick_long_context_model() -> str:
106
106
  # Priority order based on cost (cheapest first), one per provider:
107
107
  order: list[tuple[str, LLMProvider]] = [
108
108
  ("gemini-3.1-flash-lite-preview", LLMProvider.GOOGLE),
109
- ("grok-4-1-fast-non-reasoning", LLMProvider.XAI),
109
+ ("grok-4.20-non-reasoning", LLMProvider.XAI),
110
110
  ("deepseek/deepseek-v4-flash", LLMProvider.OPENROUTER),
111
111
  ("gpt-5.4-nano", LLMProvider.OPENAI),
112
112
  ("deepseek-v4-flash", LLMProvider.DEEPSEEK),
@@ -0,0 +1,34 @@
1
+ # cn_stock — China A-Share Market Data
2
+
3
+ Skill package providing real-time and historical market data for Chinese A-shares
4
+ (Shanghai / Shenzhen / Beijing exchanges), backed by [akshare](https://akshare.akfamily.xyz/).
5
+
6
+ ## Tools
7
+
8
+ | Skill | Purpose |
9
+ |---|---|
10
+ | `get_quote` | Real-time spot quote for one or more A-shares (price, change %, volume, P/E, P/B, market cap). |
11
+ | `get_kline` | Daily / weekly / monthly OHLCV bars for a single A-share, with forward/back adjustment. |
12
+ | `get_index` | Spot value (and optional 30-day history) for major Chinese stock indices (上证, 深证, 创业板, 沪深300, ...). |
13
+ | `get_board` | Industry / concept board snapshot ranked by intraday % change. |
14
+ | `get_capital_flow` | Net capital inflow/outflow for an individual stock or the whole market. |
15
+ | `get_news` | Recent news for a specific A-share, or top macro financial headlines. |
16
+ | `get_announcement` | Listed-company announcements (公告) for a given trading day. |
17
+ | `get_financials` | Key financial metrics (EPS, ROE, revenue, margins) by reporting period. |
18
+ | `is_trading_day` | Whether a given calendar date is an A-share trading day. Always call at the start of a scheduled task — cron triggers do not skip holidays. |
19
+
20
+ ## Operational notes
21
+
22
+ - All akshare calls are blocking; the base class wraps them in `asyncio.to_thread`.
23
+ - Results are short-TTL cached in Redis (5–60s for live quotes, longer for kline/financials)
24
+ to absorb retry storms — akshare scrapes free public endpoints which rate-limit by IP.
25
+ - A category-level global rate limit of 60 calls/min protects shared infrastructure.
26
+ - Stock codes are normalized: accepts `600519`, `sh600519`, `SH600519`, `600519.SH`.
27
+ - Symbols not yet listed or recently delisted may return empty data; tools raise
28
+ `ToolException` with a clear message rather than silently returning empty results.
29
+
30
+ ## Composition
31
+
32
+ These tools are designed to be used by **leaf** public agents (one per data domain),
33
+ which a team-built monitor agent can orchestrate via `lead_call_agent`. See the
34
+ public-agent YAMLs in `public_agents/base/cn-*.yaml` for working examples.
@@ -0,0 +1,69 @@
1
+ """Chinese A-share market data skills (akshare-backed)."""
2
+
3
+ import logging
4
+ from typing import TypedDict
5
+
6
+ from intentkit.skills.base import SkillConfig, SkillState
7
+ from intentkit.skills.cn_stock.base import CNStockBaseTool
8
+ from intentkit.skills.cn_stock.get_announcement import GetAnnouncement
9
+ from intentkit.skills.cn_stock.get_board import GetBoard
10
+ from intentkit.skills.cn_stock.get_capital_flow import GetCapitalFlow
11
+ from intentkit.skills.cn_stock.get_financials import GetFinancials
12
+ from intentkit.skills.cn_stock.get_index import GetIndex
13
+ from intentkit.skills.cn_stock.get_kline import GetKLine
14
+ from intentkit.skills.cn_stock.get_news import GetNews
15
+ from intentkit.skills.cn_stock.get_quote import GetQuote
16
+ from intentkit.skills.cn_stock.is_trading_day import IsTradingDay
17
+
18
+ logger = logging.getLogger(__name__)
19
+
20
+
21
+ class SkillStates(TypedDict, total=False):
22
+ get_quote: SkillState
23
+ get_kline: SkillState
24
+ get_index: SkillState
25
+ get_board: SkillState
26
+ get_capital_flow: SkillState
27
+ get_news: SkillState
28
+ get_announcement: SkillState
29
+ get_financials: SkillState
30
+ is_trading_day: SkillState
31
+
32
+
33
+ class Config(SkillConfig):
34
+ """Configuration for cn_stock skills."""
35
+
36
+ states: SkillStates
37
+
38
+
39
+ # Tool instances are stateless across calls; build once at import and reuse.
40
+ _TOOLS: dict[str, CNStockBaseTool] = {
41
+ "get_quote": GetQuote(),
42
+ "get_kline": GetKLine(),
43
+ "get_index": GetIndex(),
44
+ "get_board": GetBoard(),
45
+ "get_capital_flow": GetCapitalFlow(),
46
+ "get_news": GetNews(),
47
+ "get_announcement": GetAnnouncement(),
48
+ "get_financials": GetFinancials(),
49
+ "is_trading_day": IsTradingDay(),
50
+ }
51
+
52
+
53
+ async def get_skills(
54
+ config: "Config",
55
+ is_private: bool,
56
+ **_,
57
+ ) -> list[CNStockBaseTool]:
58
+ available: list[CNStockBaseTool] = []
59
+ for name, state in config["states"].items():
60
+ if state == "disabled":
61
+ continue
62
+ if state == "private" and not is_private:
63
+ continue
64
+ tool = _TOOLS.get(name)
65
+ if tool is None:
66
+ logger.warning("Unknown cn_stock skill: %s", name)
67
+ continue
68
+ available.append(tool)
69
+ return available
@@ -0,0 +1,107 @@
1
+ """Base class for cn_stock (Chinese A-share) tools backed by akshare."""
2
+
3
+ import asyncio
4
+ import json
5
+ import logging
6
+ from datetime import date, datetime
7
+ from typing import Any, Callable
8
+
9
+ import pytz
10
+ from langchain_core.tools.base import ToolException
11
+
12
+ from intentkit.config.redis import get_redis
13
+ from intentkit.skills.base import IntentKitSkill
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+ # A-share exchanges all run on Asia/Shanghai. Defaults must follow that wall clock,
18
+ # regardless of the server's local timezone (typically UTC in production).
19
+ _CN_TZ = pytz.timezone("Asia/Shanghai")
20
+
21
+
22
+ def today_cn() -> date:
23
+ """Return today's date in the Asia/Shanghai timezone."""
24
+ return datetime.now(_CN_TZ).date()
25
+
26
+
27
+ def normalize_a_share_symbol(symbol: str) -> str:
28
+ """Strip exchange prefix/suffix and return a bare 6-digit A-share code.
29
+
30
+ Accepts formats like "600519", "sh600519", "SH600519", "600519.SH", "600519.sh".
31
+ """
32
+ s = symbol.strip().upper()
33
+ for prefix in ("SH", "SZ", "BJ"):
34
+ if s.startswith(prefix):
35
+ s = s[len(prefix) :]
36
+ break
37
+ if "." in s:
38
+ s = s.split(".", 1)[0]
39
+ if len(s) != 6 or not s.isdigit():
40
+ raise ToolException(f"Invalid A-share code: {symbol!r} (expect 6 digits)")
41
+ return s
42
+
43
+
44
+ def market_of(symbol: str) -> str:
45
+ """Return the exchange code ("sh"/"sz"/"bj") for a normalized 6-digit code."""
46
+ code = normalize_a_share_symbol(symbol)
47
+ # 920xxx is the BSE prefix introduced in 2025 for new listings; treat it as bj
48
+ # rather than letting all 9xxxxx through (900xxx are SSE B-shares, not A-shares).
49
+ if code.startswith("92"):
50
+ return "bj"
51
+ head = code[0]
52
+ if head == "6":
53
+ return "sh"
54
+ if head in ("0", "3"):
55
+ return "sz"
56
+ if head in ("4", "8"):
57
+ return "bj"
58
+ raise ToolException(f"Cannot infer market for code {code}")
59
+
60
+
61
+ class CNStockBaseTool(IntentKitSkill):
62
+ category: str = "cn_stock"
63
+
64
+ async def run_blocking(
65
+ self,
66
+ cache_key: str | None,
67
+ cache_ttl: int,
68
+ func: Callable[..., Any],
69
+ *args: Any,
70
+ **kwargs: Any,
71
+ ) -> Any:
72
+ """Execute a blocking akshare call off the event loop with optional caching.
73
+
74
+ Pass cache_key=None to skip the cache for live data that must never be stale.
75
+ """
76
+ redis = get_redis() if cache_key is not None else None
77
+ if redis is not None:
78
+ cached = await redis.get(f"cn_stock:{cache_key}")
79
+ if cached:
80
+ try:
81
+ return json.loads(cached)
82
+ except (TypeError, ValueError):
83
+ logger.warning("Bad cache payload for %s, refetching", cache_key)
84
+
85
+ # akshare scrapes free public endpoints which rate-limit by IP; cap shared use.
86
+ await self.global_rate_limit_by_category(limit=60, seconds=60)
87
+
88
+ try:
89
+ result = await asyncio.to_thread(func, *args, **kwargs)
90
+ except Exception as e:
91
+ raise ToolException(f"akshare call failed: {e}") from e
92
+
93
+ if hasattr(result, "to_json"):
94
+ payload_str = result.to_json(
95
+ orient="records", date_format="iso", force_ascii=False
96
+ )
97
+ payload: Any = json.loads(payload_str)
98
+ elif isinstance(result, (str, int, float, bool, list, dict)) or result is None:
99
+ payload = result
100
+ payload_str = json.dumps(payload, ensure_ascii=False, default=str)
101
+ else:
102
+ payload = str(result)
103
+ payload_str = json.dumps(payload, ensure_ascii=False)
104
+
105
+ if redis is not None:
106
+ await redis.set(f"cn_stock:{cache_key}", payload_str, ex=cache_ttl)
107
+ return payload
@@ -0,0 +1,47 @@
1
+ """Listed-company announcements (公告) via akshare."""
2
+
3
+ from typing import Any
4
+
5
+ import akshare as ak
6
+ from langchain_core.tools import ArgsSchema
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.cn_stock.base import CNStockBaseTool, today_cn
10
+
11
+
12
+ class GetAnnouncementInput(BaseModel):
13
+ on_date: str | None = Field(
14
+ default=None,
15
+ description="Date in YYYYMMDD; defaults to today. Announcements are released after market close.",
16
+ )
17
+ limit: int = Field(
18
+ default=20,
19
+ description="Maximum number of items to return (1-100).",
20
+ ge=1,
21
+ le=100,
22
+ )
23
+
24
+
25
+ class GetAnnouncement(CNStockBaseTool):
26
+ name: str = "cn_stock_get_announcement"
27
+ description: str = (
28
+ "Get the day's listed-company announcements (财报、重大事项、增持减持、停复牌等). "
29
+ "Use to surface material disclosures that may move stock prices."
30
+ )
31
+ args_schema: ArgsSchema | None = GetAnnouncementInput
32
+
33
+ async def _arun(
34
+ self,
35
+ on_date: str | None = None,
36
+ limit: int = 20,
37
+ **_: Any,
38
+ ) -> list[dict[str, Any]]:
39
+ d = on_date or today_cn().strftime("%Y%m%d")
40
+ rows: list[dict[str, Any]] = await self.run_blocking(
41
+ f"announce:{d}",
42
+ 900,
43
+ ak.stock_notice_report,
44
+ symbol="全部",
45
+ date=d,
46
+ )
47
+ return rows[:limit] if rows else []
@@ -0,0 +1,63 @@
1
+ """Industry/concept board snapshot via akshare."""
2
+
3
+ from typing import Any, Literal
4
+
5
+ import akshare as ak
6
+ from langchain_core.tools import ArgsSchema
7
+ from pydantic import BaseModel, Field
8
+
9
+ from intentkit.skills.cn_stock.base import CNStockBaseTool
10
+
11
+
12
+ class GetBoardInput(BaseModel):
13
+ kind: Literal["industry", "concept"] = Field(
14
+ default="industry",
15
+ description="'industry' (行业板块) or 'concept' (概念板块).",
16
+ )
17
+ top: int = Field(
18
+ default=20,
19
+ description="Return top-N gainers and bottom-N losers by % change (1-50).",
20
+ ge=1,
21
+ le=50,
22
+ )
23
+
24
+
25
+ class GetBoard(CNStockBaseTool):
26
+ name: str = "cn_stock_get_board"
27
+ description: str = (
28
+ "Get a snapshot of industry or concept boards, sorted by intraday percentage "
29
+ "change. Use to identify hot sectors and rotation. Returns top gainers and "
30
+ "top losers."
31
+ )
32
+ args_schema: ArgsSchema | None = GetBoardInput
33
+
34
+ async def _arun(
35
+ self,
36
+ kind: Literal["industry", "concept"] = "industry",
37
+ top: int = 20,
38
+ **_: Any,
39
+ ) -> dict[str, Any]:
40
+ fetcher = (
41
+ ak.stock_board_industry_name_em
42
+ if kind == "industry"
43
+ else ak.stock_board_concept_name_em
44
+ )
45
+ rows: list[dict[str, Any]] = await self.run_blocking(
46
+ f"board:{kind}",
47
+ 60,
48
+ fetcher,
49
+ )
50
+
51
+ def pct(r: dict[str, Any]) -> float:
52
+ v = r.get("涨跌幅")
53
+ try:
54
+ return float(v) if v is not None else 0.0
55
+ except (TypeError, ValueError):
56
+ return 0.0
57
+
58
+ ranked = sorted(rows, key=pct, reverse=True)
59
+ return {
60
+ "kind": kind,
61
+ "gainers": ranked[:top],
62
+ "losers": ranked[-top:][::-1],
63
+ }
@@ -0,0 +1,69 @@
1
+ """Capital flow (资金流向) for an individual stock or the whole market."""
2
+
3
+ from typing import Any, Literal
4
+
5
+ import akshare as ak
6
+ from langchain_core.tools import ArgsSchema
7
+ from langchain_core.tools.base import ToolException
8
+ from pydantic import BaseModel, Field
9
+
10
+ from intentkit.skills.cn_stock.base import (
11
+ CNStockBaseTool,
12
+ market_of,
13
+ normalize_a_share_symbol,
14
+ )
15
+
16
+
17
+ class GetCapitalFlowInput(BaseModel):
18
+ scope: Literal["stock", "market"] = Field(
19
+ ...,
20
+ description="'stock' for individual flow (requires symbol); 'market' for whole-market flow.",
21
+ )
22
+ symbol: str | None = Field(
23
+ default=None,
24
+ description="6-digit A-share code; required when scope='stock'.",
25
+ )
26
+ days: int = Field(
27
+ default=5,
28
+ description="Number of recent trading days to return (1-30).",
29
+ ge=1,
30
+ le=30,
31
+ )
32
+
33
+
34
+ class GetCapitalFlow(CNStockBaseTool):
35
+ name: str = "cn_stock_get_capital_flow"
36
+ description: str = (
37
+ "Get net capital inflow / outflow data. For an individual stock returns recent "
38
+ "main / retail / institutional flows; for the whole market returns aggregate "
39
+ "north-bound and main-fund flows. Use to gauge smart-money positioning."
40
+ )
41
+ args_schema: ArgsSchema | None = GetCapitalFlowInput
42
+
43
+ async def _arun(
44
+ self,
45
+ scope: Literal["stock", "market"],
46
+ symbol: str | None = None,
47
+ days: int = 5,
48
+ **_: Any,
49
+ ) -> list[dict[str, Any]]:
50
+ if scope == "stock":
51
+ if not symbol:
52
+ raise ToolException("symbol is required when scope='stock'")
53
+ code = normalize_a_share_symbol(symbol)
54
+ mkt = market_of(symbol)
55
+ rows: list[dict[str, Any]] = await self.run_blocking(
56
+ f"flow:stock:{code}",
57
+ 300,
58
+ ak.stock_individual_fund_flow,
59
+ stock=code,
60
+ market=mkt,
61
+ )
62
+ return rows[-days:] if rows else []
63
+
64
+ rows = await self.run_blocking(
65
+ "flow:market",
66
+ 300,
67
+ ak.stock_market_fund_flow,
68
+ )
69
+ return rows[-days:] if rows else []