intentkit 0.18.0__tar.gz → 1.1.0__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 (734) hide show
  1. {intentkit-0.18.0 → intentkit-1.1.0}/PKG-INFO +1 -1
  2. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/__init__.py +1 -1
  3. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/api.py +32 -2
  4. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/engine.py +109 -1
  5. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/engine.py +2 -1
  6. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/__init__.py +6 -0
  7. intentkit-1.1.0/intentkit/core/lead/skills/update_user_profile.py +134 -0
  8. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/__init__.py +11 -0
  9. intentkit-1.1.0/intentkit/core/lead/sub_agents/user_manager.py +82 -0
  10. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/prompt.py +7 -0
  11. intentkit-1.1.0/intentkit/core/team/wechat_session_notice.py +88 -0
  12. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/llm.csv +8 -10
  13. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/llm.py +1 -1
  14. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/llm_picker.py +11 -12
  15. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/user.py +24 -0
  16. {intentkit-0.18.0 → intentkit-1.1.0}/pyproject.toml +1 -1
  17. {intentkit-0.18.0 → intentkit-1.1.0}/.gitignore +0 -0
  18. {intentkit-0.18.0 → intentkit-1.1.0}/LICENSE +0 -0
  19. {intentkit-0.18.0 → intentkit-1.1.0}/app/team/intentkit/docker-compose.yml +0 -0
  20. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/.dockerignore +0 -0
  21. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/LICENSE +0 -0
  22. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/MANIFEST.in +0 -0
  23. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/README.md +0 -0
  24. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/__init__.py +0 -0
  25. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/agent.py +0 -0
  26. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/api.py +0 -0
  27. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/engine.py +0 -0
  28. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/graph.py +0 -0
  29. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/skill.py +0 -0
  30. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/twitter.py +0 -0
  31. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/abstracts/wallet.py +0 -0
  32. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/__init__.py +0 -0
  33. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/__init__.py +0 -0
  34. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/client.py +0 -0
  35. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/registry.py +0 -0
  36. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/tool.py +0 -0
  37. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/mcp/wrapper.py +0 -0
  38. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/moralis.py +0 -0
  39. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/s3.py +0 -0
  40. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/s3_setup.py +0 -0
  41. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/supabase.py +0 -0
  42. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/twitter.py +0 -0
  43. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/clients/web3_ens.py +0 -0
  44. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/__init__.py +0 -0
  45. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/base.py +0 -0
  46. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/config.py +0 -0
  47. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/db.py +0 -0
  48. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/db_mig.py +0 -0
  49. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/config/redis.py +0 -0
  50. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/__init__.py +0 -0
  51. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/account_checking.py +0 -0
  52. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/__init__.py +0 -0
  53. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/analytics.py +0 -0
  54. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/constants.py +0 -0
  55. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/management.py +0 -0
  56. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/notifications.py +0 -0
  57. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/public_info.py +0 -0
  58. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/queries.py +0 -0
  59. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent/wallet.py +0 -0
  60. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent_activity.py +0 -0
  61. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/agent_post.py +0 -0
  62. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/asset.py +0 -0
  63. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/autonomous.py +0 -0
  64. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/avatar.py +0 -0
  65. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/budget.py +0 -0
  66. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/chat.py +0 -0
  67. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/cleanup.py +0 -0
  68. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/client.py +0 -0
  69. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/__init__.py +0 -0
  70. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/adjustment.py +0 -0
  71. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/base.py +0 -0
  72. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/expense.py +0 -0
  73. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/list_events.py +0 -0
  74. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/plan_credit.py +0 -0
  75. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/recharge.py +0 -0
  76. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/refill.py +0 -0
  77. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/reward.py +0 -0
  78. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/credit/withdraw.py +0 -0
  79. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/draft.py +0 -0
  80. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/draft_chat.py +0 -0
  81. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/executor.py +0 -0
  82. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/__init__.py +0 -0
  83. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/cache.py +0 -0
  84. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/constants.py +0 -0
  85. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/service.py +0 -0
  86. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/add_autonomous_task.py +0 -0
  87. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/base.py +0 -0
  88. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/call_agent.py +0 -0
  89. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/create_team_agent.py +0 -0
  90. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/delete_autonomous_task.py +0 -0
  91. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/edit_autonomous_task.py +0 -0
  92. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/get_post.py +0 -0
  93. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/get_self_info.py +0 -0
  94. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/get_team_agent.py +0 -0
  95. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/get_team_info.py +0 -0
  96. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/list_autonomous_tasks.py +0 -0
  97. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/list_skills.py +0 -0
  98. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/list_team_agents.py +0 -0
  99. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/llm.py +0 -0
  100. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/recent_team_activities.py +0 -0
  101. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/recent_team_posts.py +0 -0
  102. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/update_self.py +0 -0
  103. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/update_self_memory.py +0 -0
  104. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/skills/update_team_agent.py +0 -0
  105. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/agent_manager.py +0 -0
  106. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/content_manager.py +0 -0
  107. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/self_updater.py +0 -0
  108. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/lead/sub_agents/task_manager.py +0 -0
  109. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/__init__.py +0 -0
  110. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/engine.py +0 -0
  111. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/service.py +0 -0
  112. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/__init__.py +0 -0
  113. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/add_autonomous_task.py +0 -0
  114. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/base.py +0 -0
  115. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/delete_autonomous_task.py +0 -0
  116. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/draft.py +0 -0
  117. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/edit_autonomous_task.py +0 -0
  118. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/list_autonomous_tasks.py +0 -0
  119. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/llm.py +0 -0
  120. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/manager/skills/public_info.py +0 -0
  121. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/memory.py +0 -0
  122. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/middleware.py +0 -0
  123. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/public_agents.py +0 -0
  124. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/public_api.py +0 -0
  125. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/scheduler.py +0 -0
  126. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/share_link.py +0 -0
  127. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/statistics.py +0 -0
  128. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/__init__.py +0 -0
  129. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/base.py +0 -0
  130. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/call_agent.py +0 -0
  131. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/create_activity.py +0 -0
  132. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/create_post.py +0 -0
  133. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/current_time.py +0 -0
  134. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/get_post.py +0 -0
  135. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/read_webpage.py +0 -0
  136. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/recent_activities.py +0 -0
  137. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/recent_posts.py +0 -0
  138. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/search_web.py +0 -0
  139. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/system_skills/update_memory.py +0 -0
  140. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/task_registry.py +0 -0
  141. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/__init__.py +0 -0
  142. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/channel.py +0 -0
  143. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/feed.py +0 -0
  144. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/membership.py +0 -0
  145. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/push.py +0 -0
  146. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/team/subscription.py +0 -0
  147. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/template.py +0 -0
  148. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/core/user.py +0 -0
  149. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/__init__.py +0 -0
  150. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/__init__.py +0 -0
  151. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/agent.py +0 -0
  152. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/autonomous.py +0 -0
  153. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/core.py +0 -0
  154. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/db.py +0 -0
  155. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/public.json +0 -0
  156. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/public_info.py +0 -0
  157. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/response.py +0 -0
  158. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/schema.json +0 -0
  159. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent/user_input.py +0 -0
  160. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent_activity.py +0 -0
  161. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent_data.py +0 -0
  162. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/agent_post.py +0 -0
  163. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/app_setting.py +0 -0
  164. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/chat.py +0 -0
  165. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/__init__.py +0 -0
  166. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/account.py +0 -0
  167. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/base.py +0 -0
  168. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/event.py +0 -0
  169. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/price.py +0 -0
  170. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/credit/transaction.py +0 -0
  171. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/draft.py +0 -0
  172. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/share_link.py +0 -0
  173. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/skill.py +0 -0
  174. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/team.py +0 -0
  175. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/team_channel.py +0 -0
  176. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/team_feed.py +0 -0
  177. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/template.py +0 -0
  178. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/user_data.py +0 -0
  179. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/models/x402_order.py +0 -0
  180. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/__init__.py +0 -0
  181. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/__init__.py +0 -0
  182. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/aave_v3.svg +0 -0
  183. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/base.py +0 -0
  184. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/borrow.py +0 -0
  185. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/constants.py +0 -0
  186. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/get_reserve_data.py +0 -0
  187. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/get_user_account_data.py +0 -0
  188. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/repay.py +0 -0
  189. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/schema.json +0 -0
  190. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/set_collateral.py +0 -0
  191. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/supply.py +0 -0
  192. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/utils.py +0 -0
  193. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aave_v3/withdraw.py +0 -0
  194. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/__init__.py +0 -0
  195. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/acp.png +0 -0
  196. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/base.py +0 -0
  197. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/cancel_checkout.py +0 -0
  198. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/complete_checkout.py +0 -0
  199. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/create_checkout.py +0 -0
  200. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/get_checkout.py +0 -0
  201. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/list_products.py +0 -0
  202. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/acp/schema.json +0 -0
  203. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/__init__.py +0 -0
  204. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/add_liquidity.py +0 -0
  205. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/aerodrome.svg +0 -0
  206. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/base.py +0 -0
  207. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/constants.py +0 -0
  208. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/get_positions.py +0 -0
  209. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/quote.py +0 -0
  210. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/remove_liquidity.py +0 -0
  211. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/schema.json +0 -0
  212. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/swap.py +0 -0
  213. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aerodrome/utils.py +0 -0
  214. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/README.md +0 -0
  215. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/__init__.py +0 -0
  216. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/aixbt.jpg +0 -0
  217. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/base.py +0 -0
  218. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/projects.py +0 -0
  219. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/aixbt/schema.json +0 -0
  220. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/__init__.py +0 -0
  221. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/allora.jpeg +0 -0
  222. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/base.py +0 -0
  223. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/price.py +0 -0
  224. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/allora/schema.json +0 -0
  225. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/base.py +0 -0
  226. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/__init__.py +0 -0
  227. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/base.py +0 -0
  228. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/basename.svg +0 -0
  229. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/constants.py +0 -0
  230. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/register.py +0 -0
  231. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/basename/schema.json +0 -0
  232. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/README.md +0 -0
  233. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/__init__.py +0 -0
  234. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/base.py +0 -0
  235. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/carv.webp +0 -0
  236. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/fetch_news.py +0 -0
  237. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/onchain_query.py +0 -0
  238. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/schema.json +0 -0
  239. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/carv/token_info_and_price.py +0 -0
  240. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/README.md +0 -0
  241. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/__init__.py +0 -0
  242. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/base.py +0 -0
  243. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/casino.png +0 -0
  244. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/deck_draw.py +0 -0
  245. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/deck_shuffle.py +0 -0
  246. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/dice_roll.py +0 -0
  247. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/schema.json +0 -0
  248. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/casino/utils.py +0 -0
  249. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/__init__.py +0 -0
  250. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/base.py +0 -0
  251. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/cdp.png +0 -0
  252. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/get_balance.py +0 -0
  253. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/get_wallet_details.py +0 -0
  254. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/native_transfer.py +0 -0
  255. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cdp/schema.json +0 -0
  256. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/README.md +0 -0
  257. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/__init__.py +0 -0
  258. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/base.py +0 -0
  259. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/chain_lookup.py +0 -0
  260. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/chainlist.png +0 -0
  261. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/chainlist/schema.json +0 -0
  262. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/README.md +0 -0
  263. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/__init__.py +0 -0
  264. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/base.py +0 -0
  265. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/constants.py +0 -0
  266. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/cookiefun.png +0 -0
  267. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/get_account_details.py +0 -0
  268. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
  269. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
  270. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/get_sectors.py +0 -0
  271. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/schema.json +0 -0
  272. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cookiefun/search_accounts.py +0 -0
  273. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/__init__.py +0 -0
  274. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/api.py +0 -0
  275. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/base.py +0 -0
  276. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
  277. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
  278. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
  279. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
  280. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
  281. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
  282. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
  283. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptocompare/schema.json +0 -0
  284. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/__init__.py +0 -0
  285. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/base.py +0 -0
  286. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
  287. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
  288. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
  289. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/cryptopanic/schema.json +0 -0
  290. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/README.md +0 -0
  291. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/__init__.py +0 -0
  292. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/base.py +0 -0
  293. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
  294. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
  295. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dapplooker/schema.json +0 -0
  296. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/__init__.py +0 -0
  297. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/api.py +0 -0
  298. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/base.py +0 -0
  299. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/__init__.py +0 -0
  300. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
  301. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
  302. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
  303. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
  304. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
  305. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
  306. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
  307. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/config/__init__.py +0 -0
  308. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/config/chains.py +0 -0
  309. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/defillama.jpeg +0 -0
  310. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/fees/__init__.py +0 -0
  311. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
  312. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/schema.json +0 -0
  313. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
  314. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
  315. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
  316. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
  317. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
  318. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tests/__init__.py +0 -0
  319. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
  320. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
  321. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/__init__.py +0 -0
  322. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
  323. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
  324. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
  325. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
  326. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
  327. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
  328. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/volumes/__init__.py +0 -0
  329. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
  330. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
  331. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
  332. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/yields/__init__.py +0 -0
  333. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
  334. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
  335. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/README.md +0 -0
  336. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/__init__.py +0 -0
  337. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/base.py +0 -0
  338. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/dexscreener.png +0 -0
  339. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
  340. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
  341. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
  342. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/model/__init__.py +0 -0
  343. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
  344. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/schema.json +0 -0
  345. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/search_token.py +0 -0
  346. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dexscreener/utils.py +0 -0
  347. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/__init__.py +0 -0
  348. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/base.py +0 -0
  349. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/dune.png +0 -0
  350. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/execute_query.py +0 -0
  351. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/get_query_results.py +0 -0
  352. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/run_sql.py +0 -0
  353. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/dune/schema.json +0 -0
  354. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/README.md +0 -0
  355. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/__init__.py +0 -0
  356. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/base.py +0 -0
  357. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/elfa.jpg +0 -0
  358. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/mention.py +0 -0
  359. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/schema.json +0 -0
  360. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/stats.py +0 -0
  361. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/tokens.py +0 -0
  362. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/elfa/utils.py +0 -0
  363. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/README.md +0 -0
  364. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/__init__.py +0 -0
  365. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/abi/__init__.py +0 -0
  366. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/abi/approval.py +0 -0
  367. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/abi/erc20.py +0 -0
  368. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/abi/route.py +0 -0
  369. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/base.py +0 -0
  370. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/best_yield.py +0 -0
  371. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/enso.jpg +0 -0
  372. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/networks.py +0 -0
  373. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/prices.py +0 -0
  374. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/route.py +0 -0
  375. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/schema.json +0 -0
  376. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/tokens.py +0 -0
  377. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/enso/wallet.py +0 -0
  378. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/__init__.py +0 -0
  379. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/base.py +0 -0
  380. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/constants.py +0 -0
  381. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/erc20.svg +0 -0
  382. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/get_balance.py +0 -0
  383. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/get_token_address.py +0 -0
  384. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/schema.json +0 -0
  385. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/transfer.py +0 -0
  386. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc20/utils.py +0 -0
  387. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/__init__.py +0 -0
  388. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/base.py +0 -0
  389. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/constants.py +0 -0
  390. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/erc721.svg +0 -0
  391. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/get_balance.py +0 -0
  392. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/mint.py +0 -0
  393. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/schema.json +0 -0
  394. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/erc721/transfer.py +0 -0
  395. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/README.md +0 -0
  396. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/__init__.py +0 -0
  397. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/base.py +0 -0
  398. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/clear.py +0 -0
  399. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/crawl.py +0 -0
  400. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/firecrawl.png +0 -0
  401. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/query.py +0 -0
  402. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/schema.json +0 -0
  403. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/scrape.py +0 -0
  404. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/firecrawl/utils.py +0 -0
  405. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/README.md +0 -0
  406. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/__init__.py +0 -0
  407. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/base.py +0 -0
  408. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/github.jpg +0 -0
  409. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/github_search.py +0 -0
  410. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/github/schema.json +0 -0
  411. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/__init__.py +0 -0
  412. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/base.py +0 -0
  413. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/heurist.png +0 -0
  414. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
  415. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
  416. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
  417. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
  418. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
  419. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
  420. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
  421. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/heurist/schema.json +0 -0
  422. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/README.md +0 -0
  423. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/__init__.py +0 -0
  424. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/base.py +0 -0
  425. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/get.py +0 -0
  426. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/http.svg +0 -0
  427. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/post.py +0 -0
  428. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/put.py +0 -0
  429. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/http/schema.json +0 -0
  430. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/__init__.py +0 -0
  431. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/base.py +0 -0
  432. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/gemini.py +0 -0
  433. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/gpt.py +0 -0
  434. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/grok.py +0 -0
  435. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/image.svg +0 -0
  436. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/minimax.py +0 -0
  437. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/openrouter.py +0 -0
  438. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/image/schema.json +0 -0
  439. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/README.md +0 -0
  440. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/__init__.py +0 -0
  441. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/base.py +0 -0
  442. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/jupiter.png +0 -0
  443. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/price.py +0 -0
  444. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/schema.json +0 -0
  445. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/jupiter/swap.py +0 -0
  446. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/README.md +0 -0
  447. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/__init__.py +0 -0
  448. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/base.py +0 -0
  449. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/lifi.png +0 -0
  450. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/schema.json +0 -0
  451. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/token_execute.py +0 -0
  452. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/token_quote.py +0 -0
  453. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/lifi/utils.py +0 -0
  454. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/mcp_coingecko/__init__.py +0 -0
  455. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/mcp_coingecko/coingecko.svg +0 -0
  456. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/mcp_coingecko/schema.json +0 -0
  457. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/README.md +0 -0
  458. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/__init__.py +0 -0
  459. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/api.py +0 -0
  460. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/base.py +0 -0
  461. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
  462. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
  463. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
  464. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
  465. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/moralis.png +0 -0
  466. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/moralis/schema.json +0 -0
  467. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/__init__.py +0 -0
  468. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/base.py +0 -0
  469. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/borrow.py +0 -0
  470. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/constants.py +0 -0
  471. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/deposit.py +0 -0
  472. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/get_position.py +0 -0
  473. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/get_vault_data.py +0 -0
  474. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/morpho.svg +0 -0
  475. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/repay.py +0 -0
  476. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/schema.json +0 -0
  477. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/supply_collateral.py +0 -0
  478. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/withdraw.py +0 -0
  479. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/morpho/withdraw_collateral.py +0 -0
  480. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/onchain.py +0 -0
  481. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/__init__.py +0 -0
  482. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/base.py +0 -0
  483. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/buy_nft.py +0 -0
  484. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/cancel_listing.py +0 -0
  485. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/constants.py +0 -0
  486. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/create_listing.py +0 -0
  487. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_collection.py +0 -0
  488. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_collection_stats.py +0 -0
  489. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_events.py +0 -0
  490. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_listings.py +0 -0
  491. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_nft.py +0 -0
  492. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_nfts_by_account.py +0 -0
  493. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/get_offers.py +0 -0
  494. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/onchain_base.py +0 -0
  495. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/opensea.svg +0 -0
  496. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/schema.json +0 -0
  497. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/opensea/update_listing.py +0 -0
  498. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/__init__.py +0 -0
  499. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/add_liquidity.py +0 -0
  500. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/base.py +0 -0
  501. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/constants.py +0 -0
  502. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/get_positions.py +0 -0
  503. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/pancakeswap.png +0 -0
  504. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/quote.py +0 -0
  505. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/remove_liquidity.py +0 -0
  506. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/schema.json +0 -0
  507. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/swap.py +0 -0
  508. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pancakeswap/utils.py +0 -0
  509. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/__init__.py +0 -0
  510. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/base.py +0 -0
  511. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/cancel_order.py +0 -0
  512. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_market.py +0 -0
  513. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_orderbook.py +0 -0
  514. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_orders.py +0 -0
  515. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_positions.py +0 -0
  516. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_price_history.py +0 -0
  517. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/get_trades.py +0 -0
  518. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/place_order.py +0 -0
  519. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/polymarket.png +0 -0
  520. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/schema.json +0 -0
  521. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/polymarket/search_markets.py +0 -0
  522. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/README.md +0 -0
  523. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/__init__.py +0 -0
  524. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/base.py +0 -0
  525. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/constants.py +0 -0
  526. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/moralis.png +0 -0
  527. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/schema.json +0 -0
  528. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/token_balances.py +0 -0
  529. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
  530. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
  531. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_history.py +0 -0
  532. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
  533. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
  534. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
  535. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
  536. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_stats.py +0 -0
  537. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
  538. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/__init__.py +0 -0
  539. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/base.py +0 -0
  540. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/fetch_price.py +0 -0
  541. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/fetch_price_feed.py +0 -0
  542. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/pyth.svg +0 -0
  543. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/pyth/schema.json +0 -0
  544. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/__init__.py +0 -0
  545. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/base.py +0 -0
  546. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/get_channel.py +0 -0
  547. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/get_message.py +0 -0
  548. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/schedule_message.py +0 -0
  549. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/schema.json +0 -0
  550. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/send_message.py +0 -0
  551. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/slack/slack.jpg +0 -0
  552. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/__init__.py +0 -0
  553. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/base.py +0 -0
  554. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/delete_data.py +0 -0
  555. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/fetch_data.py +0 -0
  556. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/insert_data.py +0 -0
  557. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/invoke_function.py +0 -0
  558. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/schema.json +0 -0
  559. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/supabase.svg +0 -0
  560. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/update_data.py +0 -0
  561. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/supabase/upsert_data.py +0 -0
  562. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/__init__.py +0 -0
  563. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/base.py +0 -0
  564. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/constants.py +0 -0
  565. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/create_flow.py +0 -0
  566. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/delete_flow.py +0 -0
  567. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/schema.json +0 -0
  568. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/superfluid.svg +0 -0
  569. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/superfluid/update_flow.py +0 -0
  570. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/README.md +0 -0
  571. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/__init__.py +0 -0
  572. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/base.py +0 -0
  573. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/schema.json +0 -0
  574. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/tavily.jpg +0 -0
  575. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/tavily_extract.py +0 -0
  576. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/tavily/tavily_search.py +0 -0
  577. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/README.md +0 -0
  578. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/__init__.py +0 -0
  579. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/base.py +0 -0
  580. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/constants.py +0 -0
  581. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/erc20_transfers.py +0 -0
  582. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/moralis.png +0 -0
  583. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/schema.json +0 -0
  584. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/token_analytics.py +0 -0
  585. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/token_price.py +0 -0
  586. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/token/token_search.py +0 -0
  587. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/__init__.py +0 -0
  588. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/base.py +0 -0
  589. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/follow_user.py +0 -0
  590. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/get_mentions.py +0 -0
  591. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/get_timeline.py +0 -0
  592. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/get_user_by_username.py +0 -0
  593. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/get_user_tweets.py +0 -0
  594. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/like_tweet.py +0 -0
  595. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/post_tweet.py +0 -0
  596. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/reply_tweet.py +0 -0
  597. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/retweet.py +0 -0
  598. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/schema.json +0 -0
  599. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/search_tweets.py +0 -0
  600. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/twitter/twitter.png +0 -0
  601. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/__init__.py +0 -0
  602. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/ask_user.py +0 -0
  603. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/base.py +0 -0
  604. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/schema.json +0 -0
  605. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/show_card.py +0 -0
  606. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/ui/ui.svg +0 -0
  607. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/__init__.py +0 -0
  608. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/add_liquidity.py +0 -0
  609. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/base.py +0 -0
  610. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/constants.py +0 -0
  611. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/get_positions.py +0 -0
  612. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/quote.py +0 -0
  613. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/remove_liquidity.py +0 -0
  614. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/schema.json +0 -0
  615. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/swap.py +0 -0
  616. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/uniswap.svg +0 -0
  617. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/uniswap/utils.py +0 -0
  618. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/__init__.py +0 -0
  619. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/base.py +0 -0
  620. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/schema.json +0 -0
  621. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
  622. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
  623. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/__init__.py +0 -0
  624. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/base.py +0 -0
  625. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/input.py +0 -0
  626. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/schema.json +0 -0
  627. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/venice_audio.py +0 -0
  628. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
  629. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/README.md +0 -0
  630. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/__init__.py +0 -0
  631. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/api.py +0 -0
  632. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/base.py +0 -0
  633. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/config.py +0 -0
  634. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
  635. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
  636. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
  637. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
  638. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
  639. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/README.md +0 -0
  640. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
  641. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
  642. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
  643. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
  644. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
  645. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
  646. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
  647. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
  648. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
  649. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
  650. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
  651. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
  652. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
  653. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
  654. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
  655. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/README.md +0 -0
  656. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
  657. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
  658. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
  659. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
  660. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/schema.json +0 -0
  661. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/utils.py +0 -0
  662. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/venice_image/venice_image.jpg +0 -0
  663. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/__init__.py +0 -0
  664. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/base.py +0 -0
  665. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/gemini.py +0 -0
  666. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/gpt.py +0 -0
  667. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/grok.py +0 -0
  668. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/minimax.py +0 -0
  669. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/schema.json +0 -0
  670. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/video/video.svg +0 -0
  671. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/README.md +0 -0
  672. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/__init__.py +0 -0
  673. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/base.py +0 -0
  674. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/document_indexer.py +0 -0
  675. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/langchain.png +0 -0
  676. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/schema.json +0 -0
  677. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
  678. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/utils.py +0 -0
  679. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/web_scraper/website_indexer.py +0 -0
  680. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/__init__.py +0 -0
  681. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/base.py +0 -0
  682. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/constants.py +0 -0
  683. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/schema.json +0 -0
  684. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/unwrap_eth.py +0 -0
  685. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/weth.svg +0 -0
  686. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/weth/wrap_eth.py +0 -0
  687. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/__init__.py +0 -0
  688. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/base.py +0 -0
  689. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/check_price.py +0 -0
  690. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/get_orders.py +0 -0
  691. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/http_request.py +0 -0
  692. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/httpx_compat.py +0 -0
  693. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/pay.py +0 -0
  694. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/schema.json +0 -0
  695. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/x402/x402.webp +0 -0
  696. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/README.md +0 -0
  697. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/__init__.py +0 -0
  698. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/base.py +0 -0
  699. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/price.py +0 -0
  700. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/schema.json +0 -0
  701. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/swap.py +0 -0
  702. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/transfer.py +0 -0
  703. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/skills/xmtp/xmtp.png +0 -0
  704. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/__init__.py +0 -0
  705. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/alert.py +0 -0
  706. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/alert_handler.py +0 -0
  707. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/chain.py +0 -0
  708. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/ens.py +0 -0
  709. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/error.py +0 -0
  710. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/logging.py +0 -0
  711. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/opengraph.py +0 -0
  712. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/pdf.py +0 -0
  713. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/random.py +0 -0
  714. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/s3_setup.py +0 -0
  715. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/schema.py +0 -0
  716. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/slack_alert.py +0 -0
  717. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/telegram_alert.py +0 -0
  718. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/templates/post_pdf.html +0 -0
  719. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/time.py +0 -0
  720. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/tx.py +0 -0
  721. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/utils/upload.py +0 -0
  722. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/__init__.py +0 -0
  723. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/cdp.py +0 -0
  724. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/evm_wallet.py +0 -0
  725. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/native.py +0 -0
  726. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy.py +0 -0
  727. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_client.py +0 -0
  728. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_nonce.py +0 -0
  729. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_safe.py +0 -0
  730. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_signer.py +0 -0
  731. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_types.py +0 -0
  732. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/privy_utils.py +0 -0
  733. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/signer.py +0 -0
  734. {intentkit-0.18.0 → intentkit-1.1.0}/intentkit/wallets/web3.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.18.0
3
+ Version: 1.1.0
4
4
  Summary: Intent-based AI Agent Platform - Core Package
5
5
  Project-URL: Homepage, https://github.com/crestalnetwork/intentkit
6
6
  Project-URL: Repository, https://github.com/crestalnetwork/intentkit
@@ -3,7 +3,7 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "0.18.0"
6
+ __version__ = "1.1.0"
7
7
  __author__ = "Ruihua"
8
8
  __email__ = "ruihua@crestal.network"
9
9
 
@@ -22,6 +22,10 @@ from intentkit.core.engine import execute_agent, stream_agent
22
22
  from intentkit.core.lead.engine import stream_lead
23
23
  from intentkit.core.lead.service import verify_team_membership
24
24
  from intentkit.core.team.channel import set_push_channel, set_push_channel_if_empty
25
+ from intentkit.core.team.wechat_session_notice import (
26
+ WECHAT_SESSION_EXPIRING,
27
+ build_expiring_prompt,
28
+ )
25
29
  from intentkit.models.chat import (
26
30
  AuthorType,
27
31
  ChatMessage,
@@ -31,6 +35,11 @@ from intentkit.models.chat import (
31
35
  from intentkit.models.user import User, UserUpdate
32
36
  from intentkit.utils.error import IntentKitAPIError
33
37
 
38
+ # Set of recognized system_trigger values. Each value supplies its own
39
+ # synthesized prompt and may override the author_type to TRIGGER so the
40
+ # event is recorded in chat history without looking like a real user message.
41
+ _SYSTEM_TRIGGERS: frozenset[str] = frozenset({WECHAT_SESSION_EXPIRING})
42
+
34
43
  # ⚠️ INTERNAL API ONLY - DO NOT EXPOSE TO PUBLIC INTERNET ⚠️
35
44
  core_router = APIRouter(
36
45
  prefix="/core",
@@ -91,6 +100,11 @@ class LeadExecuteRequest(BaseModel):
91
100
  chat_id: str
92
101
  message: str
93
102
  attachments: list[ChatMessageAttachment] | None = None
103
+ # When set, the integration is asking the lead agent to handle a
104
+ # system-driven event (e.g. wechat reply window about to close) rather
105
+ # than a real user message. The `message` field is replaced with a
106
+ # synthesized prompt and the saved record is tagged AuthorType.TRIGGER.
107
+ system_trigger: str | None = None
94
108
 
95
109
 
96
110
  # Per-channel config: (user_lookup, bind_field, author_type, chat_id_prefix)
@@ -131,15 +145,31 @@ async def _resolve_lead(
131
145
  else:
132
146
  user_id = request.channel_user_id
133
147
 
148
+ # System-driven trigger: replace the (likely empty) caller message with
149
+ # a synthesized prompt and tag the saved record as TRIGGER so chat-UI
150
+ # consumers can hide it the same way they hide autonomous task triggers.
151
+ message_text = request.message
152
+ saved_author_type = author_type
153
+ if request.system_trigger:
154
+ if request.system_trigger not in _SYSTEM_TRIGGERS:
155
+ raise IntentKitAPIError(
156
+ 400,
157
+ "Bad Request",
158
+ f"Unknown system_trigger: {request.system_trigger}",
159
+ )
160
+ if request.system_trigger == WECHAT_SESSION_EXPIRING:
161
+ message_text = await build_expiring_prompt(request.team_id)
162
+ saved_author_type = AuthorType.TRIGGER
163
+
134
164
  chat_msg = ChatMessageCreate(
135
165
  id=str(XID()),
136
166
  agent_id=f"team-{request.team_id}",
137
167
  chat_id=f"{chat_prefix}:{request.team_id}:{request.chat_id}",
138
168
  user_id=user_id,
139
169
  author_id=user_id,
140
- author_type=author_type,
170
+ author_type=saved_author_type,
141
171
  thread_type=author_type,
142
- message=request.message,
172
+ message=message_text,
143
173
  attachments=request.attachments,
144
174
  )
145
175
  return user_id, chat_msg
@@ -571,6 +571,102 @@ def _is_unrecoverable_checkpoint_error(exc: Exception) -> bool:
571
571
  return False
572
572
 
573
573
 
574
+ def _summarize_history_messages(msgs: list[Any], max_messages: int = 10) -> list[dict]:
575
+ """Build a compact summary of the last N thread messages.
576
+
577
+ Focuses on tool_calls carried on AIMessage — useful when the LLM returns
578
+ MALFORMED_FUNCTION_CALL and the offending call isn't present in the current
579
+ turn's chunks, so we have to look back in checkpoint history.
580
+ """
581
+ summary: list[dict] = []
582
+ for msg in msgs[-max_messages:]:
583
+ entry: dict = {
584
+ "type": type(msg).__name__,
585
+ "id": getattr(msg, "id", None),
586
+ }
587
+ tool_calls = getattr(msg, "tool_calls", None)
588
+ if tool_calls:
589
+ entry["tool_calls"] = [
590
+ {"name": tc.get("name"), "args": tc.get("args")} for tc in tool_calls
591
+ ]
592
+ invalid_tc = getattr(msg, "invalid_tool_calls", None)
593
+ if invalid_tc:
594
+ entry["invalid_tool_calls"] = invalid_tc
595
+ content = getattr(msg, "content", None)
596
+ if content:
597
+ preview = extract_text_content(content) or str(content)
598
+ entry["content_preview"] = preview[:200]
599
+ thinking = extract_thinking_content(msg)
600
+ if thinking:
601
+ entry["thinking_preview"] = thinking[:200]
602
+ response_meta = getattr(msg, "response_metadata", None)
603
+ if response_meta and "finish_reason" in response_meta:
604
+ entry["finish_reason"] = response_meta["finish_reason"]
605
+ summary.append(entry)
606
+ return summary
607
+
608
+
609
+ async def _cleanup_empty_model_output(
610
+ executor: Any,
611
+ stream_config: "RunnableConfig",
612
+ agent_id: str,
613
+ thread_id: str,
614
+ ) -> list[Any]:
615
+ """Handle checkpoint fallout from a zero-output model turn (e.g. Gemini
616
+ MALFORMED_FUNCTION_CALL).
617
+
618
+ Returns the full message list (for diagnostics) and, if the last message
619
+ is an empty AIMessage (no content, no tool_calls), removes it so the next
620
+ user turn doesn't inherit the junk state. Without this the thread keeps
621
+ the empty message and subsequent turns may misbehave.
622
+ """
623
+ try:
624
+ snap = await executor.aget_state(stream_config)
625
+ msgs = snap.values.get("messages") if snap.values else None
626
+ except Exception:
627
+ logger.warning(
628
+ f"Failed to fetch thread state for {agent_id}",
629
+ extra={"thread_id": thread_id},
630
+ exc_info=True,
631
+ )
632
+ return []
633
+
634
+ if not msgs:
635
+ return []
636
+
637
+ last = msgs[-1]
638
+ # Treat list-content (e.g. thinking-only blocks) as empty when
639
+ # extract_text_content yields nothing — a non-empty list is still truthy
640
+ # so a direct `not last.content` check would miss these.
641
+ if (
642
+ isinstance(last, AIMessage)
643
+ and not extract_text_content(last.content)
644
+ and not last.tool_calls
645
+ ):
646
+ if not last.id:
647
+ logger.warning(
648
+ f"Empty AIMessage has no id; skipping removal for {agent_id}",
649
+ extra={"thread_id": thread_id},
650
+ )
651
+ else:
652
+ try:
653
+ await executor.aupdate_state(
654
+ stream_config,
655
+ {"messages": [RemoveMessage(id=last.id)]},
656
+ )
657
+ logger.info(
658
+ f"Removed empty AIMessage for {agent_id}",
659
+ extra={"thread_id": thread_id},
660
+ )
661
+ except Exception:
662
+ logger.warning(
663
+ f"Failed to remove empty AIMessage for {agent_id}",
664
+ extra={"thread_id": thread_id},
665
+ exc_info=True,
666
+ )
667
+ return msgs
668
+
669
+
574
670
  async def _cancel_cleanup(
575
671
  executor: Any,
576
672
  stream_config: "RunnableConfig",
@@ -950,11 +1046,23 @@ async def stream_agent_raw(
950
1046
 
951
1047
  # If the stream completed normally but yielded zero messages,
952
1048
  # the LLM likely returned an empty response (no content, no tool calls).
1049
+ # Typical cause: Gemini MALFORMED_FUNCTION_CALL — the malformed call isn't
1050
+ # in this turn's chunks, so dump recent history tool_calls for diagnosis
1051
+ # and prune the empty AIMessage so the thread isn't stuck on next turn.
953
1052
  if not yielded_any:
1053
+ history_msgs = await _cleanup_empty_model_output(
1054
+ executor,
1055
+ stream_config,
1056
+ user_message.agent_id,
1057
+ thread_id,
1058
+ )
1059
+ history_summary = _summarize_history_messages(history_msgs)
954
1060
  logger.error(
955
1061
  f"Agent {user_message.agent_id} produced no output messages. "
956
1062
  f"Total chunks received: {len(raw_chunks)}. "
957
- f"Raw chunks: {raw_chunks}",
1063
+ f"Raw chunks: {raw_chunks}. "
1064
+ f"Recent history ({len(history_summary)} of {len(history_msgs)} msgs): "
1065
+ f"{history_summary}",
958
1066
  extra={"thread_id": thread_id},
959
1067
  )
960
1068
  yield await _create_system_error_response(
@@ -73,7 +73,8 @@ async def _build_lead_agent(team_id: str) -> Agent:
73
73
  "- `agent-manager`: Agent CRUD.\n"
74
74
  "- `task-manager`: Autonomous task scheduling and management.\n"
75
75
  "- `self-updater`: Update your own name, avatar, personality, or memory.\n"
76
- "- `content-manager`: Read team activities and posts.\n\n"
76
+ "- `content-manager`: Read team activities and posts.\n"
77
+ "- `user-manager`: Update the current user's profile (name, timezone, language).\n\n"
77
78
  "You can also use `lead_call_agent` to delegate to any team agent "
78
79
  "discovered via `lead_list_team_agents`.\n\n"
79
80
  "### Workflow\n\n"
@@ -72,6 +72,10 @@ from intentkit.core.lead.skills.update_team_agent import (
72
72
  UpdateTeamAgent,
73
73
  update_team_agent_skill,
74
74
  )
75
+ from intentkit.core.lead.skills.update_user_profile import (
76
+ LeadUpdateUserProfile,
77
+ lead_update_user_profile_skill,
78
+ )
75
79
 
76
80
  __all__ = [
77
81
  "CreateTeamAgent",
@@ -108,6 +112,8 @@ __all__ = [
108
112
  "lead_update_self_memory_skill",
109
113
  "ListTeamAgents",
110
114
  "list_team_agents_skill",
115
+ "LeadUpdateUserProfile",
116
+ "lead_update_user_profile_skill",
111
117
  "UpdateTeamAgent",
112
118
  "update_team_agent_skill",
113
119
  ]
@@ -0,0 +1,134 @@
1
+ """Skill to update the current user's profile."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import logging
6
+ from typing import Any, override
7
+ from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
8
+
9
+ from langchain_core.tools import ArgsSchema
10
+ from langchain_core.tools.base import ToolException
11
+ from pydantic import BaseModel, Field
12
+
13
+ from intentkit.config.redis import get_redis
14
+ from intentkit.core.lead.skills.base import LeadSkill
15
+ from intentkit.models.user import UserUpdate
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+ # Must stay in sync with USER_CACHE_PREFIX in app/team/user.py — we duplicate
20
+ # the constant because core/ cannot import from app/.
21
+ _USER_CACHE_PREFIX = "intentkit:user:"
22
+
23
+
24
+ class UpdateUserProfileInput(BaseModel):
25
+ """Input model for lead_update_user_profile skill."""
26
+
27
+ name: str | None = Field(
28
+ default=None,
29
+ description="New display name (max 50 chars). Omit to keep unchanged.",
30
+ )
31
+ timezone: str | None = Field(
32
+ default=None,
33
+ description=(
34
+ "IANA timezone identifier (e.g. 'Asia/Shanghai', 'America/New_York'). "
35
+ "Convert offsets like 'GMT+8' to the corresponding IANA name first. "
36
+ "Omit to keep unchanged. Pass an empty string to clear."
37
+ ),
38
+ )
39
+ language: str | None = Field(
40
+ default=None,
41
+ description=(
42
+ "Preferred language as a BCP 47 tag (e.g. 'zh-CN', 'en', 'ja'). "
43
+ "Omit to keep unchanged. Pass an empty string to clear."
44
+ ),
45
+ )
46
+
47
+
48
+ class UpdateUserProfileOutput(BaseModel):
49
+ """Output model for lead_update_user_profile skill."""
50
+
51
+ message: str = Field(description="Success message")
52
+ updated_fields: list[str] = Field(description="List of fields that were updated")
53
+
54
+
55
+ class LeadUpdateUserProfile(LeadSkill):
56
+ """Skill to update the current user's profile (name, timezone, language).
57
+
58
+ Writes go through `UserUpdate.patch`, so a row is created if the user does
59
+ not yet exist. The user's API-side Redis cache is invalidated so the next
60
+ GET reflects the change.
61
+ """
62
+
63
+ name: str = "lead_update_user_profile"
64
+ description: str = (
65
+ "Update the current user's profile. Supported fields: name, timezone, "
66
+ "language. Only provide the fields you want to change. The user is "
67
+ "always taken from the current conversation context — never accept a "
68
+ "user id as input."
69
+ )
70
+ args_schema: ArgsSchema | None = UpdateUserProfileInput
71
+
72
+ @override
73
+ async def _arun(
74
+ self,
75
+ name: str | None = None,
76
+ timezone: str | None = None,
77
+ language: str | None = None,
78
+ **kwargs: Any,
79
+ ) -> UpdateUserProfileOutput:
80
+ context = self.get_context()
81
+ user_id = context.user_id
82
+ if not user_id:
83
+ raise ToolException("No user_id in context")
84
+
85
+ updates: dict[str, Any] = {}
86
+ updated_fields: list[str] = []
87
+
88
+ if name is not None:
89
+ trimmed = name.strip()
90
+ if trimmed:
91
+ updates["name"] = trimmed[:50]
92
+ updated_fields.append("name")
93
+
94
+ if timezone is not None:
95
+ tz = timezone.strip()
96
+ if tz:
97
+ try:
98
+ ZoneInfo(tz)
99
+ except (ZoneInfoNotFoundError, ValueError) as exc:
100
+ raise ToolException(
101
+ f"Invalid IANA timezone: {timezone!r}. "
102
+ "Use a name like 'Asia/Shanghai' or 'America/New_York'."
103
+ ) from exc
104
+ updates["timezone"] = tz
105
+ else:
106
+ updates["timezone"] = None
107
+ updated_fields.append("timezone")
108
+
109
+ if language is not None:
110
+ lang = language.strip()
111
+ updates["language"] = lang[:32] if lang else None
112
+ updated_fields.append("language")
113
+
114
+ if not updates:
115
+ return UpdateUserProfileOutput(
116
+ message="No fields provided to update.",
117
+ updated_fields=[],
118
+ )
119
+
120
+ await UserUpdate.model_validate(updates).patch(user_id)
121
+
122
+ try:
123
+ redis = get_redis()
124
+ await redis.delete(f"{_USER_CACHE_PREFIX}{user_id}")
125
+ except Exception as exc:
126
+ logger.warning("Failed to invalidate user cache for %s: %s", user_id, exc)
127
+
128
+ return UpdateUserProfileOutput(
129
+ message=f"User profile updated: {', '.join(updated_fields)}.",
130
+ updated_fields=updated_fields,
131
+ )
132
+
133
+
134
+ lead_update_user_profile_skill = LeadUpdateUserProfile()
@@ -23,6 +23,7 @@ SLUG_AGENT_MANAGER = "agent-manager"
23
23
  SLUG_TASK_MANAGER = "task-manager"
24
24
  SLUG_SELF_UPDATER = "self-updater"
25
25
  SLUG_CONTENT_MANAGER = "content-manager"
26
+ SLUG_USER_MANAGER = "user-manager"
26
27
 
27
28
 
28
29
  @dataclass
@@ -112,6 +113,10 @@ from intentkit.core.lead.sub_agents.task_manager import ( # noqa: E402
112
113
  build_task_manager,
113
114
  get_task_manager_skills,
114
115
  )
116
+ from intentkit.core.lead.sub_agents.user_manager import ( # noqa: E402
117
+ build_user_manager,
118
+ get_user_manager_skills,
119
+ )
115
120
 
116
121
  SUB_AGENT_REGISTRY: dict[str, SubAgentDefinition] = {
117
122
  SLUG_AGENT_MANAGER: SubAgentDefinition(
@@ -147,4 +152,10 @@ SUB_AGENT_REGISTRY: dict[str, SubAgentDefinition] = {
147
152
  build_fn=build_content_manager,
148
153
  skills_fn=get_content_manager_skills,
149
154
  ),
155
+ SLUG_USER_MANAGER: SubAgentDefinition(
156
+ slug=SLUG_USER_MANAGER,
157
+ description=("Manages the current user's profile: name, timezone, language."),
158
+ build_fn=build_user_manager,
159
+ skills_fn=get_user_manager_skills,
160
+ ),
150
161
  }
@@ -0,0 +1,82 @@
1
+ """User Manager sub-agent definition."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Sequence
6
+ from datetime import datetime, timezone
7
+
8
+ from langchain_core.tools import BaseTool
9
+
10
+ from intentkit.core.lead.skills.update_user_profile import (
11
+ lead_update_user_profile_skill,
12
+ )
13
+ from intentkit.models.agent import Agent
14
+ from intentkit.models.llm_picker import pick_default_model
15
+
16
+
17
+ def get_user_manager_skills() -> Sequence[BaseTool]:
18
+ """Return skills for the user-manager sub-agent."""
19
+ return [
20
+ lead_update_user_profile_skill,
21
+ ]
22
+
23
+
24
+ def build_user_manager(team_id: str) -> Agent:
25
+ """Build an in-memory User Manager sub-agent."""
26
+ now = datetime.now(timezone.utc)
27
+
28
+ prompt = (
29
+ "### Workflow\n\n"
30
+ "1. Confirm with the user which fields they want to change "
31
+ "(name, timezone, language).\n"
32
+ "2. Call `lead_update_user_profile` with only the fields being changed.\n"
33
+ "3. Report the result back to the user.\n\n"
34
+ "### Field Guidelines\n\n"
35
+ "- `name`: max 50 characters, the user's preferred display name.\n"
36
+ "- `timezone`: must be an IANA timezone (e.g. `Asia/Shanghai`, "
37
+ "`America/New_York`, `Europe/Berlin`). If the user gives an offset "
38
+ "like `GMT+8` or `UTC-5`, translate it to the matching IANA name "
39
+ "before calling the tool.\n"
40
+ "- `language`: BCP 47 tag (e.g. `zh-CN`, `en`, `ja`, `ko`). Use the "
41
+ "tag, not the language's English name.\n\n"
42
+ "### Boundaries\n\n"
43
+ "- Only ever update the current user. Never accept or use a user id "
44
+ "supplied by the user.\n"
45
+ "- Do not expose or modify any other user's profile.\n"
46
+ )
47
+
48
+ agent_data = {
49
+ "id": f"team-{team_id}-user-manager",
50
+ "owner": "system",
51
+ "team_id": team_id,
52
+ "name": "User Manager",
53
+ "purpose": "Manage the current user's profile (name, timezone, language).",
54
+ "principles": (
55
+ "1. Speak to users in their language.\n"
56
+ "2. Only operate on the current user — never on others.\n"
57
+ "3. Confirm what will be changed before updating."
58
+ ),
59
+ "model": pick_default_model(),
60
+ "prompt": prompt,
61
+ "temperature": 0.2,
62
+ "search_internet": False,
63
+ "super_mode": False,
64
+ "enable_todo": False,
65
+ "enable_activity": False,
66
+ "enable_post": False,
67
+ "enable_long_term_memory": False,
68
+ "sub_agents": None,
69
+ "skills": {
70
+ "ui": {
71
+ "enabled": True,
72
+ "states": {
73
+ "ui_show_card": "private",
74
+ "ui_ask_user": "private",
75
+ },
76
+ },
77
+ },
78
+ "created_at": now,
79
+ "updated_at": now,
80
+ }
81
+
82
+ return Agent.model_validate(agent_data)
@@ -224,6 +224,13 @@ async def _build_user_info_section(context: AgentContext) -> str:
224
224
  prompt_array.append(f"User X Username: {user.x_username}\n")
225
225
  if user.telegram_username:
226
226
  prompt_array.append(f"User Telegram Username: {user.telegram_username}\n")
227
+ if user.timezone:
228
+ prompt_array.append(f"User Timezone: {user.timezone}\n")
229
+ if user.language:
230
+ prompt_array.append(
231
+ f"User Preferred Language: {user.language} "
232
+ "(reply in this language unless the user clearly switches)\n"
233
+ )
227
234
 
228
235
  if prompt_array:
229
236
  prompt_array.append("\n")
@@ -0,0 +1,88 @@
1
+ """Build the synthesized prompt sent to the lead agent when the wechat
2
+ 24-hour reply window is about to close.
3
+
4
+ The Go integration's per-team timer fires this through the
5
+ ``/core/lead/stream`` endpoint with ``system_trigger='wechat_session_expiring'``.
6
+ The lead agent receives the prompt as a TRIGGER-author message, generates a
7
+ heads-up message for the user, and the response is dispatched back over
8
+ wechat by the existing sender path while the window is still open.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import asyncio
14
+ import logging
15
+
16
+ from intentkit.core.autonomous import list_autonomous_tasks
17
+ from intentkit.core.lead.service import get_team_agents
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ # Trigger value shared with integrations/wechat/bot/session_timer.go
23
+ # (SessionTriggerExpiring). Keep aligned.
24
+ WECHAT_SESSION_EXPIRING = "wechat_session_expiring"
25
+
26
+
27
+ async def _build_team_status_block(team_id: str) -> str:
28
+ """Return a compact, human-readable summary of the team's agents and
29
+ their currently enabled autonomous tasks. Best-effort: failures are
30
+ swallowed and reflected as a placeholder line so the notice still goes
31
+ out even if status collection breaks."""
32
+ try:
33
+ agents = await get_team_agents(team_id)
34
+ except Exception:
35
+ logger.warning(
36
+ "wechat session notice: failed to list team agents", exc_info=True
37
+ )
38
+ return "(暂无法获取 agent 状态)"
39
+
40
+ if not agents:
41
+ return "团队当前没有部署任何 agent。"
42
+
43
+ # Fan out per-agent task lookups concurrently — sequential awaits would
44
+ # add one DB round-trip per agent on the user-facing latency path.
45
+ task_results = await asyncio.gather(
46
+ *(list_autonomous_tasks(a.id) for a in agents),
47
+ return_exceptions=True,
48
+ )
49
+
50
+ lines: list[str] = []
51
+ for agent, tasks_or_err in zip(agents, task_results):
52
+ if isinstance(tasks_or_err, BaseException):
53
+ logger.warning(
54
+ "wechat session notice: failed to list autonomous tasks for %s",
55
+ agent.id,
56
+ exc_info=tasks_or_err,
57
+ )
58
+ tasks = []
59
+ else:
60
+ tasks = tasks_or_err
61
+
62
+ enabled_tasks = [t for t in tasks if t.enabled]
63
+ if enabled_tasks:
64
+ task_summaries = [f"{t.name}(cron={t.cron})" for t in enabled_tasks]
65
+ lines.append(
66
+ f"- {agent.name}: 进行中的自动任务 {len(enabled_tasks)} 个 — "
67
+ + ";".join(task_summaries)
68
+ )
69
+ else:
70
+ lines.append(f"- {agent.name}: 暂无启用中的自动任务。")
71
+
72
+ return "\n".join(lines)
73
+
74
+
75
+ async def build_expiring_prompt(team_id: str) -> str:
76
+ """Build the synthesized user-facing prompt for the lead agent."""
77
+ status_block = await _build_team_status_block(team_id)
78
+ return (
79
+ "系统事件:用户在微信上即将达到 24 小时未与你互动的时间窗口,"
80
+ "再过 30 分钟左右我将无法主动给 ta 发消息。"
81
+ "请直接以你自己的口吻给用户写一条微信消息,做到:\n"
82
+ "1) 简明告知微信对主动消息有 1 天的时间限制,即将到期;\n"
83
+ "2) 提示如果想继续接收推送,回复任意消息或交付一个新任务即可;\n"
84
+ "3) 顺带把当前每个 agent 的状态和未完成任务概要带上。\n\n"
85
+ "回复直接就是发给用户的文本,不要再加引导语、问候或 markdown。\n\n"
86
+ "当前团队状态如下:\n"
87
+ f"{status_block}"
88
+ )
@@ -4,14 +4,14 @@ openrouter/free,OpenRouter Free,openrouter,TRUE,0,,0,1,200000,20000,2,2,FALSE,FA
4
4
  qwen/qwen3.6-plus,Qwen3.6 Plus,openrouter,TRUE,0.325,,1.95,2,1000000,65536,4,4,TRUE,FALSE,TRUE,FALSE,high,TRUE,TRUE,TRUE,300
5
5
  minimax/minimax-m2.7,MiniMax M2.7,openrouter,TRUE,0.3,0.03,1.2,2,204800,131072,5,3,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
6
6
  minimax/minimax-m2-her,Minimax M2 Her,openrouter,TRUE,0.3,0.03,1.2,2,65536,2048,3,3,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
7
- xiaomi/mimo-v2-pro,MiMo V2 Pro,openrouter,TRUE,1,,3,3,1048576,131072,5,2,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
8
- moonshotai/kimi-k2.5,Moonshot Kimi K2.5,openrouter,TRUE,0.6,0.225,3,2,262000,64000,4,3,TRUE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
9
- qwen/qwen3-coder-next,Qwen3 Coder Next,openrouter,TRUE,0.07,0.06,0.3,2,262144,65536,4,4,TRUE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
7
+ xiaomi/mimo-v2.5-pro,MiMo V2.5 Pro,openrouter,TRUE,1,0.2,3,3,1048576,131072,5,2,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
8
+ xiaomi/mimo-v2.5,MiMo V2.5,openrouter,TRUE,0.4,0.08,2,2,1048576,131072,4,3,TRUE,TRUE,TRUE,FALSE,high,TRUE,TRUE,TRUE,300
9
+ moonshotai/kimi-k2.6,Moonshot Kimi K2.6,openrouter,TRUE,0.95,0.16,4,2,256000,65536,4,3,TRUE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
10
10
  qwen/qwen3.5-flash-02-23,Qwen3.5 Flash,openrouter,TRUE,0.1,,0.4,1,1000000,65536,4,5,TRUE,FALSE,TRUE,FALSE,none,TRUE,TRUE,TRUE,300
11
11
  z-ai/glm-4.7-flash,GLM 4.7 Flash,openrouter,TRUE,0.06,0.01,0.4,1,202752,131072,3,5,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
12
12
  z-ai/glm-5.1,GLM 5.1,openrouter,TRUE,1.26,,3.96,3,202752,131072,5,2,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
13
13
  anthropic/claude-sonnet-4.6,Claude Sonnet 4.6,openrouter,TRUE,3,0.3,15,4,200000,8192,5,3,TRUE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
14
- anthropic/claude-opus-4.6,Claude Opus 4.6,openrouter,TRUE,5,0.5,25,5,1000000,8192,5,2,TRUE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
14
+ anthropic/claude-opus-4.7,Claude Opus 4.7,openrouter,TRUE,5,0.5,25,5,1000000,8192,5,2,TRUE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
15
15
  gemini-3-flash-preview,Gemini 3 Flash,google,TRUE,0.5,0.05,3,2,1048576,65536,4,5,TRUE,TRUE,TRUE,TRUE,none,TRUE,FALSE,FALSE,300
16
16
  google/gemini-3-flash-preview,Gemini 3 Flash,openrouter,TRUE,0.5,0.05,3,2,1048576,65536,4,5,TRUE,TRUE,TRUE,TRUE,none,TRUE,TRUE,TRUE,300
17
17
  gemini-3.1-pro-preview-customtools,Gemini 3.1 Pro,google,TRUE,2,0.2,12,4,1048576,65536,5,3,TRUE,TRUE,TRUE,TRUE,high,TRUE,FALSE,FALSE,300
@@ -20,16 +20,14 @@ gemini-3.1-flash-lite-preview,Gemini 3.1 Flash Lite,google,TRUE,0.25,0.025,1.5,2
20
20
  google/gemini-3.1-flash-lite-preview,Gemini 3.1 Flash Lite,openrouter,TRUE,0.25,0.025,1.5,2,1048576,65536,3,5,TRUE,TRUE,TRUE,TRUE,high,TRUE,TRUE,TRUE,300
21
21
  gpt-5.4,GPT-5.4,openai,TRUE,2.5,0.25,15,4,272000,128000,5,3,TRUE,FALSE,FALSE,TRUE,high,FALSE,FALSE,FALSE,180
22
22
  openai/gpt-5.4,GPT-5.4,openrouter,TRUE,2.5,0.25,15,4,272000,128000,5,3,TRUE,FALSE,FALSE,TRUE,high,FALSE,TRUE,TRUE,180
23
- gpt-5.3-codex,GPT-5.3 Codex,openai,TRUE,1.75,0.175,14,4,400000,128000,5,3,TRUE,FALSE,FALSE,TRUE,high,FALSE,FALSE,FALSE,180
24
- openai/gpt-5.3-codex,GPT-5.3 Codex,openrouter,TRUE,1.75,0.175,14,4,400000,128000,5,3,TRUE,FALSE,FALSE,TRUE,high,FALSE,TRUE,TRUE,180
25
23
  gpt-5.4-nano,GPT-5.4 Nano,openai,TRUE,0.1,0.01,0.625,1,400000,128000,3,5,TRUE,FALSE,FALSE,TRUE,minimal,FALSE,FALSE,FALSE,180
26
24
  openai/gpt-5.4-nano,GPT-5.4 Nano,openrouter,TRUE,0.1,0.01,0.625,1,400000,128000,3,5,TRUE,FALSE,FALSE,TRUE,minimal,FALSE,TRUE,TRUE,180
27
25
  gpt-5.4-mini,GPT-5.4 Mini,openai,TRUE,0.375,0.0375,2.25,2,400000,128000,4,4,TRUE,FALSE,FALSE,TRUE,minimal,FALSE,FALSE,FALSE,180
28
26
  openai/gpt-5.4-mini,GPT-5.4 Mini,openrouter,TRUE,0.375,0.0375,2.25,2,400000,128000,4,4,TRUE,FALSE,FALSE,TRUE,minimal,FALSE,TRUE,TRUE,180
29
- deepseek-chat,Deepseek V3.2,deepseek,TRUE,0.28,,0.42,2,128000,4096,4,3,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
30
- deepseek/deepseek-v3.2,Deepseek V3.2,openrouter,TRUE,0.28,,0.42,2,128000,4096,4,3,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
31
- deepseek-reasoner,DeepSeek V3.2 Thinking,deepseek,TRUE,0.28,,0.42,2,128000,32000,5,1,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
32
- deepseek/deepseek-v3.2-thinking,DeepSeek V3.2 Thinking,openrouter,TRUE,0.28,,0.42,2,128000,32000,5,1,FALSE,FALSE,FALSE,FALSE,high,TRUE,TRUE,TRUE,300
27
+ deepseek-v4-flash,Deepseek V4 Flash,deepseek,TRUE,0.14,0.028,0.28,1,1048576,32000,4,4,FALSE,FALSE,FALSE,FALSE,none,TRUE,TRUE,TRUE,300
28
+ 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
29
+ 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
30
+ 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
31
  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
32
  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
33
  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
@@ -60,7 +60,7 @@ def load_default_llm_models() -> dict[str, "LLMModelInfo"]:
60
60
  """Load default LLM models from a CSV file.
61
61
 
62
62
  Models are keyed by ``{provider}:{id}`` so that the same model ID from
63
- different providers (e.g. ``deepseek-chat`` via DeepSeek *and* OpenRouter)
63
+ different providers (e.g. ``deepseek-v4-flash`` via DeepSeek *and* OpenRouter)
64
64
  is preserved as separate entries.
65
65
  """
66
66