@copilotkit/vue 2.0.0-rc.3 → 2.0.0-rc.30

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 (343) hide show
  1. package/CONTRIBUTOR_GUIDE.md +1 -1
  2. package/PARITY.md +3 -3
  3. package/dist/hooks/use-copilot-action.d.ts.map +1 -1
  4. package/dist/hooks/use-frontend-tool.d.ts +1 -1
  5. package/dist/hooks/use-frontend-tool.d.ts.map +1 -1
  6. package/dist/hooks/zod-parameters.d.ts +14 -0
  7. package/dist/hooks/zod-parameters.d.ts.map +1 -0
  8. package/dist/index.cjs +1 -73
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.mjs +365 -16920
  11. package/dist/index.mjs.map +1 -1
  12. package/dist/use-render-activity-message-BZJ33B_r.cjs +113 -0
  13. package/dist/use-render-activity-message-BZJ33B_r.cjs.map +1 -0
  14. package/dist/use-render-activity-message-DrR407LQ.js +15901 -0
  15. package/dist/use-render-activity-message-DrR407LQ.js.map +1 -0
  16. package/dist/v2/components/A2UIMessageRenderer.d.ts +14 -0
  17. package/dist/v2/components/A2UIMessageRenderer.d.ts.map +1 -1
  18. package/dist/v2/components/A2UISurfaceActivityRenderer.vue.d.ts +10 -3
  19. package/dist/v2/components/A2UISurfaceActivityRenderer.vue.d.ts.map +1 -1
  20. package/dist/v2/components/CopilotKitInspector.vue.d.ts +5 -1
  21. package/dist/v2/components/CopilotKitInspector.vue.d.ts.map +1 -1
  22. package/dist/v2/components/InlineFeatureWarning.vue.d.ts.map +1 -1
  23. package/dist/v2/components/LicenseWarningBanner.vue.d.ts +2 -2
  24. package/dist/v2/components/LicenseWarningBanner.vue.d.ts.map +1 -1
  25. package/dist/v2/components/MCPAppsActivityRenderer.d.ts.map +1 -1
  26. package/dist/v2/components/OpenGenerativeUIRenderer.d.ts +13 -59
  27. package/dist/v2/components/OpenGenerativeUIRenderer.d.ts.map +1 -1
  28. package/dist/v2/components/a2ui/A2UIBuiltInToolCallRenderer.d.ts +3 -11
  29. package/dist/v2/components/a2ui/A2UIBuiltInToolCallRenderer.d.ts.map +1 -1
  30. package/dist/v2/components/a2ui/A2UICatalogContext.d.ts +10 -15
  31. package/dist/v2/components/a2ui/A2UICatalogContext.d.ts.map +1 -1
  32. package/dist/v2/components/a2ui/A2UIRecoveryStates.d.ts +14 -130
  33. package/dist/v2/components/a2ui/A2UIRecoveryStates.d.ts.map +1 -1
  34. package/dist/v2/components/a2ui/catalog.d.ts.map +1 -1
  35. package/dist/v2/components/a2ui/utils.d.ts +3 -15
  36. package/dist/v2/components/a2ui/utils.d.ts.map +1 -1
  37. package/dist/v2/components/a2ui.d.ts +9 -8
  38. package/dist/v2/components/a2ui.d.ts.map +1 -1
  39. package/dist/v2/components/chat/CopilotChat.vue.d.ts +2 -2
  40. package/dist/v2/components/chat/CopilotChat.vue.d.ts.map +1 -1
  41. package/dist/v2/components/chat/CopilotChatAssistantMessage.vue.d.ts.map +1 -1
  42. package/dist/v2/components/chat/CopilotChatAttachmentQueue.vue.d.ts.map +1 -1
  43. package/dist/v2/components/chat/CopilotChatAttachmentRenderer.vue.d.ts.map +1 -1
  44. package/dist/v2/components/chat/CopilotChatAudioRecorder.vue.d.ts +4 -8
  45. package/dist/v2/components/chat/CopilotChatAudioRecorder.vue.d.ts.map +1 -1
  46. package/dist/v2/components/chat/CopilotChatFeedbackCommentPopover.vue.d.ts +1 -1
  47. package/dist/v2/components/chat/CopilotChatFeedbackCommentPopover.vue.d.ts.map +1 -1
  48. package/dist/v2/components/chat/CopilotChatInput.vue.d.ts +7 -286
  49. package/dist/v2/components/chat/CopilotChatInput.vue.d.ts.map +1 -1
  50. package/dist/v2/components/chat/CopilotChatInspectorButton.vue.d.ts.map +1 -1
  51. package/dist/v2/components/chat/CopilotChatLightbox.vue.d.ts.map +1 -1
  52. package/dist/v2/components/chat/CopilotChatMessageView.vue.d.ts +1 -1
  53. package/dist/v2/components/chat/CopilotChatMessageView.vue.d.ts.map +1 -1
  54. package/dist/v2/components/chat/CopilotChatReasoningMessage.vue.d.ts.map +1 -1
  55. package/dist/v2/components/chat/CopilotChatToolCallGroup.vue.d.ts +1 -1
  56. package/dist/v2/components/chat/CopilotChatToolCallGroup.vue.d.ts.map +1 -1
  57. package/dist/v2/components/chat/CopilotChatToolCallItem.vue.d.ts.map +1 -1
  58. package/dist/v2/components/chat/CopilotChatToolCallsView.vue.d.ts +1 -1
  59. package/dist/v2/components/chat/CopilotChatToolCallsView.vue.d.ts.map +1 -1
  60. package/dist/v2/components/chat/CopilotChatUserMessage.vue.d.ts.map +1 -1
  61. package/dist/v2/components/chat/CopilotChatView.vue.d.ts +3 -3
  62. package/dist/v2/components/chat/CopilotChatView.vue.d.ts.map +1 -1
  63. package/dist/v2/components/chat/CopilotChatWorkSummary.vue.d.ts.map +1 -1
  64. package/dist/v2/components/chat/CopilotModalHeader.vue.d.ts.map +1 -1
  65. package/dist/v2/components/chat/CopilotPopup.vue.d.ts +8 -3
  66. package/dist/v2/components/chat/CopilotPopup.vue.d.ts.map +1 -1
  67. package/dist/v2/components/chat/CopilotPopupView.vue.d.ts +5 -3
  68. package/dist/v2/components/chat/CopilotPopupView.vue.d.ts.map +1 -1
  69. package/dist/v2/components/chat/CopilotPopupViewInternal.vue.d.ts +5 -3
  70. package/dist/v2/components/chat/CopilotPopupViewInternal.vue.d.ts.map +1 -1
  71. package/dist/v2/components/chat/CopilotSidebar.vue.d.ts +8 -3
  72. package/dist/v2/components/chat/CopilotSidebar.vue.d.ts.map +1 -1
  73. package/dist/v2/components/chat/CopilotSidebarView.vue.d.ts +6 -4
  74. package/dist/v2/components/chat/CopilotSidebarView.vue.d.ts.map +1 -1
  75. package/dist/v2/components/chat/CopilotSidebarViewInternal.vue.d.ts +6 -4
  76. package/dist/v2/components/chat/CopilotSidebarViewInternal.vue.d.ts.map +1 -1
  77. package/dist/v2/components/chat/CopilotThreadsDrawer.vue.d.ts.map +1 -1
  78. package/dist/v2/components/chat/StreamingMarkdownDefault.vue.d.ts +1 -0
  79. package/dist/v2/components/chat/StreamingMarkdownDefault.vue.d.ts.map +1 -1
  80. package/dist/v2/components/chat/audioRecorder.d.ts +3 -4
  81. package/dist/v2/components/chat/audioRecorder.d.ts.map +1 -1
  82. package/dist/v2/components/chat/copilotChatToolCallItemRender.d.ts +4 -4
  83. package/dist/v2/components/chat/copilotChatToolCallItemRender.d.ts.map +1 -1
  84. package/dist/v2/components/chat/forwarded-slots.d.ts +12 -0
  85. package/dist/v2/components/chat/forwarded-slots.d.ts.map +1 -0
  86. package/dist/v2/components/chat/index.d.ts +34 -31
  87. package/dist/v2/components/chat/index.d.ts.map +1 -1
  88. package/dist/v2/components/chat/inspector-shortcuts.d.ts +2 -1
  89. package/dist/v2/components/chat/inspector-shortcuts.d.ts.map +1 -1
  90. package/dist/v2/components/chat/message-feedback.d.ts +38 -49
  91. package/dist/v2/components/chat/message-feedback.d.ts.map +1 -1
  92. package/dist/v2/components/chat/tool-call-display-context.d.ts +4 -19
  93. package/dist/v2/components/chat/tool-call-display-context.d.ts.map +1 -1
  94. package/dist/v2/components/chat/tool-call-group-parts.d.ts +7 -20
  95. package/dist/v2/components/chat/tool-call-group-parts.d.ts.map +1 -1
  96. package/dist/v2/components/chat/turn-work.d.ts +0 -2
  97. package/dist/v2/components/chat/turn-work.d.ts.map +1 -1
  98. package/dist/v2/components/chat/types.d.ts +9 -4
  99. package/dist/v2/components/chat/types.d.ts.map +1 -1
  100. package/dist/v2/components/chat/use-chat-labels.d.ts +8 -0
  101. package/dist/v2/components/chat/use-chat-labels.d.ts.map +1 -0
  102. package/dist/v2/components/chat/use-copy-feedback.d.ts +11 -0
  103. package/dist/v2/components/chat/use-copy-feedback.d.ts.map +1 -0
  104. package/dist/v2/components/chat/use-lightbox.d.ts.map +1 -1
  105. package/dist/v2/components/icons/index.d.ts +968 -1
  106. package/dist/v2/components/icons/index.d.ts.map +1 -1
  107. package/dist/v2/components/ui/CopilotDropdownMenuContent.vue.d.ts +1 -1
  108. package/dist/v2/components/ui/CopilotDropdownMenuContent.vue.d.ts.map +1 -1
  109. package/dist/v2/hooks/use-agent-context.d.ts +2 -3
  110. package/dist/v2/hooks/use-agent-context.d.ts.map +1 -1
  111. package/dist/v2/hooks/use-agent.d.ts +4 -1
  112. package/dist/v2/hooks/use-agent.d.ts.map +1 -1
  113. package/dist/v2/hooks/use-attachments.d.ts +7 -0
  114. package/dist/v2/hooks/use-attachments.d.ts.map +1 -1
  115. package/dist/v2/hooks/use-capabilities.d.ts.map +1 -1
  116. package/dist/v2/hooks/use-component.d.ts +1 -0
  117. package/dist/v2/hooks/use-component.d.ts.map +1 -1
  118. package/dist/v2/hooks/use-configure-suggestions.d.ts +4 -9
  119. package/dist/v2/hooks/use-configure-suggestions.d.ts.map +1 -1
  120. package/dist/v2/hooks/use-default-render-tool.d.ts +2 -7
  121. package/dist/v2/hooks/use-default-render-tool.d.ts.map +1 -1
  122. package/dist/v2/hooks/use-frontend-tool.d.ts +5 -0
  123. package/dist/v2/hooks/use-frontend-tool.d.ts.map +1 -1
  124. package/dist/v2/hooks/use-human-in-the-loop.d.ts +2 -1
  125. package/dist/v2/hooks/use-human-in-the-loop.d.ts.map +1 -1
  126. package/dist/v2/hooks/use-interrupt.d.ts +0 -1
  127. package/dist/v2/hooks/use-interrupt.d.ts.map +1 -1
  128. package/dist/v2/hooks/use-keyboard-height.d.ts +1 -1
  129. package/dist/v2/hooks/use-keyboard-height.d.ts.map +1 -1
  130. package/dist/v2/hooks/use-pin-to-send.d.ts +4 -12
  131. package/dist/v2/hooks/use-pin-to-send.d.ts.map +1 -1
  132. package/dist/v2/hooks/use-render-activity-message.d.ts +13 -9
  133. package/dist/v2/hooks/use-render-activity-message.d.ts.map +1 -1
  134. package/dist/v2/hooks/use-render-custom-messages.d.ts +5 -7
  135. package/dist/v2/hooks/use-render-custom-messages.d.ts.map +1 -1
  136. package/dist/v2/hooks/use-render-tool.d.ts +1 -1
  137. package/dist/v2/hooks/use-render-tool.d.ts.map +1 -1
  138. package/dist/v2/hooks/use-suggestions.d.ts.map +1 -1
  139. package/dist/v2/hooks/use-threads.d.ts +6 -23
  140. package/dist/v2/hooks/use-threads.d.ts.map +1 -1
  141. package/dist/v2/index.cjs +1 -1
  142. package/dist/v2/index.mjs +197 -200
  143. package/dist/v2/index.mjs.map +1 -1
  144. package/dist/v2/lib/processPartialHtml.d.ts +1 -2
  145. package/dist/v2/lib/processPartialHtml.d.ts.map +1 -1
  146. package/dist/v2/lib/shallow-stable.d.ts.map +1 -1
  147. package/dist/v2/lib/vue-core.d.ts +33 -19
  148. package/dist/v2/lib/vue-core.d.ts.map +1 -1
  149. package/dist/v2/providers/CopilotChatConfigurationProvider.vue.d.ts.map +1 -1
  150. package/dist/v2/providers/CopilotKitProvider.types.d.ts +9 -129
  151. package/dist/v2/providers/CopilotKitProvider.types.d.ts.map +1 -1
  152. package/dist/v2/providers/CopilotKitProvider.vue.d.ts +9 -10
  153. package/dist/v2/providers/CopilotKitProvider.vue.d.ts.map +1 -1
  154. package/dist/v2/providers/chat-configuration-store-key.d.ts +8 -0
  155. package/dist/v2/providers/chat-configuration-store-key.d.ts.map +1 -0
  156. package/dist/v2/providers/markdown-renderer.d.ts +4 -2
  157. package/dist/v2/providers/markdown-renderer.d.ts.map +1 -1
  158. package/dist/v2/providers/types.d.ts +3 -46
  159. package/dist/v2/providers/types.d.ts.map +1 -1
  160. package/dist/v2/providers/use-inspector-thread-override.d.ts +5 -0
  161. package/dist/v2/providers/use-inspector-thread-override.d.ts.map +1 -1
  162. package/dist/v2/types/defineToolCallRenderer.d.ts +1 -1
  163. package/dist/v2/types/defineToolCallRenderer.d.ts.map +1 -1
  164. package/dist/v2/types/human-in-the-loop.d.ts +8 -29
  165. package/dist/v2/types/human-in-the-loop.d.ts.map +1 -1
  166. package/dist/v2/types/interrupt.d.ts +1 -22
  167. package/dist/v2/types/interrupt.d.ts.map +1 -1
  168. package/dist/v2/types/vue-activity-message-renderer.d.ts +16 -15
  169. package/dist/v2/types/vue-activity-message-renderer.d.ts.map +1 -1
  170. package/dist/v2/types/vue-custom-message-renderer.d.ts +7 -16
  171. package/dist/v2/types/vue-custom-message-renderer.d.ts.map +1 -1
  172. package/dist/v2/types/vue-tool-call-renderer.d.ts +16 -35
  173. package/dist/v2/types/vue-tool-call-renderer.d.ts.map +1 -1
  174. package/package.json +12 -13
  175. package/src/__tests__/build-entries.test.ts +29 -0
  176. package/src/hooks/__tests__/zod-parameters.test.ts +520 -0
  177. package/src/hooks/use-copilot-action.ts +2 -1
  178. package/src/hooks/use-frontend-tool.ts +3 -6
  179. package/src/hooks/zod-parameters.ts +162 -0
  180. package/src/v2/__tests__/exports.test.ts +10 -0
  181. package/src/v2/__tests__/mocks/web-inspector.ts +6 -0
  182. package/src/v2/__tests__/utils/test-helpers.ts +34 -4
  183. package/src/v2/components/A2UIMessageRenderer.ts +98 -68
  184. package/src/v2/components/A2UISurfaceActivityRenderer.vue +68 -103
  185. package/src/v2/components/CopilotKitInspector.vue +104 -51
  186. package/src/v2/components/InlineFeatureWarning.vue +20 -21
  187. package/src/v2/components/LicenseWarningBanner.vue +27 -135
  188. package/src/v2/components/MCPAppsActivityRenderer.ts +75 -201
  189. package/src/v2/components/OpenGenerativeUIRenderer.ts +122 -446
  190. package/src/v2/components/__tests__/A2UIMessageRenderer.test.ts +171 -8
  191. package/src/v2/components/__tests__/CopilotKitInspector.test.ts +42 -0
  192. package/src/v2/components/__tests__/LicenseWarningBanner.test.ts +60 -0
  193. package/src/v2/components/__tests__/OpenGenerativeUIRenderer.test.ts +64 -8
  194. package/src/v2/components/__tests__/OpenGenerativeUIToolRenderer.test.ts +38 -0
  195. package/src/v2/components/a2ui/A2UIBuiltInToolCallRenderer.ts +6 -26
  196. package/src/v2/components/a2ui/A2UICatalogContext.ts +27 -185
  197. package/src/v2/components/a2ui/A2UIRecoveryStates.ts +127 -327
  198. package/src/v2/components/a2ui/catalog.ts +3 -3
  199. package/src/v2/components/a2ui/utils.ts +13 -65
  200. package/src/v2/components/a2ui.ts +15 -22
  201. package/src/v2/components/chat/CopilotChat.vue +121 -498
  202. package/src/v2/components/chat/CopilotChatAssistantMessage.vue +47 -184
  203. package/src/v2/components/chat/CopilotChatAttachmentQueue.vue +36 -55
  204. package/src/v2/components/chat/CopilotChatAttachmentRenderer.vue +14 -6
  205. package/src/v2/components/chat/CopilotChatAudioRecorder.vue +19 -246
  206. package/src/v2/components/chat/CopilotChatFeedbackCommentPopover.vue +12 -77
  207. package/src/v2/components/chat/CopilotChatInput.vue +139 -654
  208. package/src/v2/components/chat/CopilotChatInspectorButton.vue +45 -108
  209. package/src/v2/components/chat/CopilotChatLightbox.vue +10 -31
  210. package/src/v2/components/chat/CopilotChatMessageView.vue +96 -274
  211. package/src/v2/components/chat/CopilotChatReasoningMessage.vue +27 -62
  212. package/src/v2/components/chat/CopilotChatToolCallGroup.vue +63 -71
  213. package/src/v2/components/chat/CopilotChatToolCallItem.vue +8 -6
  214. package/src/v2/components/chat/CopilotChatToolCallsView.vue +31 -32
  215. package/src/v2/components/chat/CopilotChatUserMessage.vue +24 -112
  216. package/src/v2/components/chat/CopilotChatView.vue +123 -161
  217. package/src/v2/components/chat/CopilotChatWorkSummary.vue +26 -36
  218. package/src/v2/components/chat/CopilotModalHeader.vue +11 -23
  219. package/src/v2/components/chat/CopilotPopup.vue +23 -25
  220. package/src/v2/components/chat/CopilotPopupView.vue +10 -39
  221. package/src/v2/components/chat/CopilotPopupViewInternal.vue +49 -185
  222. package/src/v2/components/chat/CopilotSidebar.vue +23 -25
  223. package/src/v2/components/chat/CopilotSidebarView.vue +10 -39
  224. package/src/v2/components/chat/CopilotSidebarViewInternal.vue +56 -100
  225. package/src/v2/components/chat/CopilotThreadsDrawer.vue +43 -105
  226. package/src/v2/components/chat/StreamingMarkdownDefault.vue +15 -28
  227. package/src/v2/components/chat/__tests__/CopilotChat.labels.test.ts +19 -4
  228. package/src/v2/components/chat/__tests__/CopilotChat.test.ts +12 -10
  229. package/src/v2/components/chat/__tests__/CopilotChatActivityRendering.e2e.test.ts +26 -9
  230. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.learningFeedback.test.ts +5 -5
  231. package/src/v2/components/chat/__tests__/CopilotChatAttachmentQueue.test.ts +28 -0
  232. package/src/v2/components/chat/__tests__/CopilotChatInput.test.ts +132 -1
  233. package/src/v2/components/chat/__tests__/CopilotChatMessageView.test.ts +247 -403
  234. package/src/v2/components/chat/__tests__/CopilotChatMessageView.toolCallDisplay.test.ts +1 -99
  235. package/src/v2/components/chat/__tests__/CopilotChatView.pinToSend.test.ts +43 -1
  236. package/src/v2/components/chat/__tests__/CopilotPopup.test.ts +90 -1
  237. package/src/v2/components/chat/__tests__/CopilotPopupView.test.ts +19 -0
  238. package/src/v2/components/chat/__tests__/CopilotSidebar.test.ts +90 -1
  239. package/src/v2/components/chat/__tests__/CopilotSidebarView.position.test.ts +32 -8
  240. package/src/v2/components/chat/__tests__/CopilotSidebarView.test.ts +2 -1
  241. package/src/v2/components/chat/__tests__/StreamingMarkdownDefault.test.ts +54 -0
  242. package/src/v2/components/chat/audioRecorder.ts +4 -7
  243. package/src/v2/components/chat/copilotChatToolCallItemRender.ts +25 -90
  244. package/src/v2/components/chat/forwarded-slots.ts +17 -0
  245. package/src/v2/components/chat/index.ts +0 -1
  246. package/src/v2/components/chat/inspector-shortcuts.ts +10 -16
  247. package/src/v2/components/chat/message-feedback.ts +92 -195
  248. package/src/v2/components/chat/tool-call-display-context.ts +6 -22
  249. package/src/v2/components/chat/tool-call-group-parts.ts +47 -108
  250. package/src/v2/components/chat/turn-work.ts +0 -9
  251. package/src/v2/components/chat/types.ts +12 -4
  252. package/src/v2/components/chat/use-chat-labels.ts +16 -0
  253. package/src/v2/components/chat/use-copy-feedback.ts +21 -0
  254. package/src/v2/components/chat/use-lightbox.ts +15 -33
  255. package/src/v2/components/icons/__tests__/icons.test.ts +72 -68
  256. package/src/v2/components/icons/index.ts +109 -27
  257. package/src/v2/hooks/__tests__/use-agent-error-state.test.ts +5 -3
  258. package/src/v2/hooks/__tests__/use-agent-stability.test.ts +25 -4
  259. package/src/v2/hooks/__tests__/use-agent-throttle.test.ts +5 -1
  260. package/src/v2/hooks/__tests__/use-agent.test.ts +6 -3
  261. package/src/v2/hooks/__tests__/use-component.test.ts +21 -0
  262. package/src/v2/hooks/__tests__/use-configure-suggestions.test.ts +30 -1
  263. package/src/v2/hooks/__tests__/use-default-render-tool.test.ts +10 -10
  264. package/src/v2/hooks/__tests__/use-frontend-tool.e2e.test.ts +66 -1
  265. package/src/v2/hooks/__tests__/use-human-in-the-loop.e2e.test.ts +6 -1
  266. package/src/v2/hooks/__tests__/use-human-in-the-loop.test.ts +187 -12
  267. package/src/v2/hooks/__tests__/use-interrupt.test.ts +97 -0
  268. package/src/v2/hooks/__tests__/use-render-activity-message.test.ts +106 -0
  269. package/src/v2/hooks/__tests__/use-render-tool.test.ts +3 -6
  270. package/src/v2/hooks/__tests__/use-threads.test.ts +48 -6
  271. package/src/v2/hooks/__tests__/zod-regression.test.ts +5 -4
  272. package/src/v2/hooks/use-agent-context.ts +4 -10
  273. package/src/v2/hooks/use-agent.ts +86 -290
  274. package/src/v2/hooks/use-attachments.ts +48 -168
  275. package/src/v2/hooks/use-capabilities.ts +2 -7
  276. package/src/v2/hooks/use-component.ts +7 -4
  277. package/src/v2/hooks/use-configure-suggestions.ts +29 -220
  278. package/src/v2/hooks/use-default-render-tool.ts +31 -152
  279. package/src/v2/hooks/use-frontend-tool.ts +15 -25
  280. package/src/v2/hooks/use-human-in-the-loop.ts +11 -80
  281. package/src/v2/hooks/use-interrupt.ts +29 -308
  282. package/src/v2/hooks/use-keyboard-height.ts +17 -40
  283. package/src/v2/hooks/use-pin-to-send.ts +15 -99
  284. package/src/v2/hooks/use-render-activity-message.ts +35 -57
  285. package/src/v2/hooks/use-render-custom-messages.ts +24 -88
  286. package/src/v2/hooks/use-render-tool.ts +2 -4
  287. package/src/v2/hooks/use-suggestions.ts +17 -36
  288. package/src/v2/hooks/use-threads.ts +49 -288
  289. package/src/v2/lib/__tests__/shallow-stable.test.ts +54 -0
  290. package/src/v2/lib/__tests__/vue-core-renderers.test.ts +42 -0
  291. package/src/v2/lib/processPartialHtml.ts +6 -21
  292. package/src/v2/lib/shallow-stable.ts +2 -16
  293. package/src/v2/lib/vue-core.ts +90 -85
  294. package/src/v2/providers/CopilotChatConfigurationProvider.vue +48 -186
  295. package/src/v2/providers/CopilotKitProvider.types.ts +12 -132
  296. package/src/v2/providers/CopilotKitProvider.vue +291 -641
  297. package/src/v2/providers/__tests__/CopilotChatConfigurationProvider.test.ts +22 -2
  298. package/src/v2/providers/__tests__/CopilotKitProvider.a2ui.test.ts +38 -2
  299. package/src/v2/providers/__tests__/CopilotKitProvider.config.test.ts +124 -0
  300. package/src/v2/providers/__tests__/CopilotKitProvider.headersAtSendTime.test.ts +3 -3
  301. package/src/v2/providers/__tests__/CopilotKitProvider.learning.test.ts +3 -1
  302. package/src/v2/providers/__tests__/CopilotKitProvider.sandboxFunctions.test.ts +4 -1
  303. package/src/v2/providers/__tests__/CopilotKitProvider.test.ts +88 -28
  304. package/src/v2/providers/chat-configuration-store-key.ts +9 -0
  305. package/src/v2/providers/markdown-renderer.ts +8 -2
  306. package/src/v2/providers/types.ts +3 -49
  307. package/src/v2/providers/use-inspector-thread-override.ts +22 -80
  308. package/src/v2/types/__tests__/defineToolCallRenderer.test.ts +28 -33
  309. package/src/v2/types/defineToolCallRenderer.ts +7 -6
  310. package/src/v2/types/human-in-the-loop.ts +8 -32
  311. package/src/v2/types/interrupt.ts +7 -31
  312. package/src/v2/types/vue-activity-message-renderer.ts +24 -15
  313. package/src/v2/types/vue-custom-message-renderer.ts +12 -16
  314. package/src/v2/types/vue-tool-call-renderer.ts +23 -38
  315. package/tsconfig.json +0 -1
  316. package/vite.config.ts +8 -5
  317. package/vitest.config.ts +12 -7
  318. package/dist/v2/components/chat/BasicMarkdown.vue.d.ts +0 -9
  319. package/dist/v2/components/chat/BasicMarkdown.vue.d.ts.map +0 -1
  320. package/dist/v2/components/chat/normalize-auto-scroll.d.ts +0 -3
  321. package/dist/v2/components/chat/normalize-auto-scroll.d.ts.map +0 -1
  322. package/dist/v2/components/chat/tool-call-layout.d.ts +0 -115
  323. package/dist/v2/components/chat/tool-call-layout.d.ts.map +0 -1
  324. package/dist/v2/lib/is-mobile-viewport.d.ts +0 -15
  325. package/dist/v2/lib/is-mobile-viewport.d.ts.map +0 -1
  326. package/dist/v2/lib/message-feedback.d.ts +0 -33
  327. package/dist/v2/lib/message-feedback.d.ts.map +0 -1
  328. package/dist/v2/lib/transcription-client.d.ts +0 -19
  329. package/dist/v2/lib/transcription-client.d.ts.map +0 -1
  330. package/src/v2/components/__tests__/A2UICatalogContext.test.ts +0 -63
  331. package/src/v2/components/a2ui/__tests__/A2UIRecoveryStates.test.ts +0 -175
  332. package/src/v2/components/chat/BasicMarkdown.vue +0 -160
  333. package/src/v2/components/chat/__tests__/BasicMarkdown.test.ts +0 -69
  334. package/src/v2/components/chat/__tests__/normalize-auto-scroll.test.ts +0 -39
  335. package/src/v2/components/chat/normalize-auto-scroll.ts +0 -17
  336. package/src/v2/components/chat/tool-call-layout.ts +0 -304
  337. package/src/v2/lib/__tests__/is-mobile-viewport.test.ts +0 -48
  338. package/src/v2/lib/__tests__/message-feedback.test.ts +0 -152
  339. package/src/v2/lib/__tests__/processPartialHtml.test.ts +0 -84
  340. package/src/v2/lib/__tests__/transcription-client.test.ts +0 -67
  341. package/src/v2/lib/is-mobile-viewport.ts +0 -23
  342. package/src/v2/lib/message-feedback.ts +0 -120
  343. package/src/v2/lib/transcription-client.ts +0 -151
@@ -1,110 +1,24 @@
1
1
  import { defineComponent, h, inject, ref } from "vue";
2
2
  import type { WatchSource } from "vue";
3
3
  import type { Component, VNodeChild } from "vue";
4
- import { ToolCallStatus } from "@copilotkit/core";
4
+ import {
5
+ ɵadaptDefaultToolCallRenderProps as adaptRendererProps,
6
+ ɵgetToolCallBadge,
7
+ ɵnormalizeToolCallStatus,
8
+ ɵstringifyToolCallAttr,
9
+ ɵstringifyToolCallPayload,
10
+ } from "@copilotkit/core";
11
+ import type {
12
+ ɵDefaultToolCallRenderProps,
13
+ ɵRawToolCallRenderProps,
14
+ } from "@copilotkit/core";
5
15
  import { useRenderTool } from "./use-render-tool";
6
16
  import { ToolCallGroupContextKey } from "../components/chat/tool-call-display-context";
7
17
  import { ToolCallRow } from "../components/chat/tool-call-group-parts";
18
+ import { useChatLabels } from "../components/chat/use-chat-labels";
8
19
 
9
- type DefaultRenderProps = {
10
- name: string;
11
- toolCallId: string;
12
- parameters: unknown;
13
- status: "inProgress" | "executing" | "complete";
14
- result: string | undefined;
15
- };
16
-
17
- /**
18
- * Module-level dedup set so an unknown status value only emits a console
19
- * warning the FIRST time we encounter it. Otherwise a stuck/unmapped status
20
- * would log on every re-render (potentially many per second).
21
- */
22
- const warnedUnknownStatuses = new Set<string>();
23
-
24
- /**
25
- * Map a {@link ToolCallStatus} enum value to the documented string-union
26
- * status the {@link DefaultRenderProps} contract exposes. Unknown / future
27
- * enum members log a warning (once per distinct value) and fall back to
28
- * `"inProgress"`.
29
- */
30
- function mapToolCallStatus(
31
- status: ToolCallStatus,
32
- ): DefaultRenderProps["status"] {
33
- switch (status) {
34
- case ToolCallStatus.Complete:
35
- return "complete";
36
- case ToolCallStatus.Executing:
37
- return "executing";
38
- case ToolCallStatus.InProgress:
39
- return "inProgress";
40
- default: {
41
- const key = String(status);
42
- if (!warnedUnknownStatuses.has(key)) {
43
- warnedUnknownStatuses.add(key);
44
- console.warn(
45
- `[CopilotKit] Unknown ToolCallStatus "${key}" in default tool-call renderer; falling back to "inProgress".`,
46
- );
47
- }
48
- return "inProgress";
49
- }
50
- }
51
- }
52
-
53
- /**
54
- * Convert framework-internal raw renderer props (`args`, enum status) to the
55
- * documented DefaultRenderProps shape. Idempotent on already-documented input
56
- * — if the caller passes `parameters` and a string-union `status`, those win.
57
- */
58
- type AdaptInput = {
59
- name?: unknown;
60
- toolCallId?: unknown;
61
- args?: unknown;
62
- parameters?: unknown;
63
- status?: unknown;
64
- result?: unknown;
65
- };
66
-
67
- function adaptRendererProps(raw: AdaptInput): DefaultRenderProps {
68
- const parameters = raw.parameters !== undefined ? raw.parameters : raw.args;
69
- const rawStatus = raw.status;
70
- const status: DefaultRenderProps["status"] =
71
- rawStatus === "inProgress" ||
72
- rawStatus === "executing" ||
73
- rawStatus === "complete"
74
- ? rawStatus
75
- : mapToolCallStatus(rawStatus as ToolCallStatus);
76
- return {
77
- name: raw.name as string,
78
- toolCallId: raw.toolCallId as string,
79
- parameters,
80
- status,
81
- result: raw.result as string | undefined,
82
- };
83
- }
84
-
85
- /**
86
- * Guarded JSON.stringify for the expanded `<pre>` blocks. A circular reference
87
- * would otherwise crash the Vue render.
88
- */
89
- function safeStringifyForPre(value: unknown): string {
90
- try {
91
- return JSON.stringify(value, null, 2);
92
- } catch (err) {
93
- console.warn(
94
- "[CopilotKit] Failed to JSON.stringify tool-call payload for default renderer; falling back to String():",
95
- err,
96
- );
97
- try {
98
- return String(value);
99
- } catch (innerErr) {
100
- console.warn(
101
- "[CopilotKit] safeStringifyForPre: value could not be stringified:",
102
- innerErr,
103
- );
104
- return "[unserializable]";
105
- }
106
- }
107
- }
20
+ type DefaultRenderProps = ɵDefaultToolCallRenderProps;
21
+ type AdaptInput = ɵRawToolCallRenderProps;
108
22
 
109
23
  const DefaultToolCallRenderer = defineComponent({
110
24
  props: {
@@ -127,7 +41,7 @@ const DefaultToolCallRenderer = defineComponent({
127
41
  },
128
42
  result: {
129
43
  // Typeless on purpose: the renderer body handles both string results
130
- // and structured (object) results via `safeStringifyForPre`. Declaring
44
+ // and structured (object) results via `ɵstringifyToolCallPayload`. Declaring
131
45
  // `type: String` would trip Vue's dev-mode prop-type warning on every
132
46
  // non-string result and make the defensive branch unreachable.
133
47
  type: null,
@@ -138,42 +52,31 @@ const DefaultToolCallRenderer = defineComponent({
138
52
  setup(props) {
139
53
  const isExpanded = ref(false);
140
54
  const groupContext = inject(ToolCallGroupContextKey, null);
55
+ const labels = useChatLabels();
141
56
 
142
57
  return () => {
143
58
  const group = groupContext?.value;
59
+ // A status a newer runtime could send reads "unknown".
60
+ const cardStatus = ɵnormalizeToolCallStatus(props.status);
144
61
  // Inside a group of calls, a row that fits the group instead of a card.
145
62
  if (group) {
146
63
  return h(ToolCallRow, {
147
64
  "data-testid": "copilot-tool-render",
148
65
  "data-tool-name": props.name,
149
66
  "data-tool-call-id": props.toolCallId,
150
- "data-status": props.status,
151
- "data-args": safeStringifyForAttr(props.parameters),
152
- "data-result": safeStringifyForAttr(props.result),
67
+ "data-status": cardStatus,
68
+ "data-args": ɵstringifyToolCallAttr(props.parameters),
69
+ "data-result": ɵstringifyToolCallAttr(props.result),
153
70
  name: props.name,
154
71
  parameters: props.parameters,
155
72
  result: props.result,
156
- status:
157
- props.status === "complete"
158
- ? group.failedIds.has(props.toolCallId)
159
- ? "failed"
160
- : "done"
161
- : group.active
162
- ? "running"
163
- : "stopped",
73
+ status: group.statusById.get(props.toolCallId) ?? "done",
164
74
  appearance: group.appearance,
165
75
  });
166
76
  }
167
77
 
168
- const isActive =
169
- props.status === "inProgress" || props.status === "executing";
170
- const isComplete = props.status === "complete";
171
- const statusLabel = isActive
172
- ? "Running"
173
- : isComplete
174
- ? "Done"
175
- : props.status;
176
- const tone = isActive ? "running" : isComplete ? "done" : "other";
78
+ const { tone, labelKey } = ɵgetToolCallBadge(cardStatus);
79
+ const statusLabel = labels.value[labelKey];
177
80
 
178
81
  // Markup and classes match React's DefaultToolCallRenderer; styles live
179
82
  // in @copilotkit/core (default-tool-call.css).
@@ -183,9 +86,9 @@ const DefaultToolCallRenderer = defineComponent({
183
86
  "data-testid": "copilot-tool-render",
184
87
  "data-tool-name": props.name,
185
88
  "data-tool-call-id": props.toolCallId,
186
- "data-status": props.status,
187
- "data-args": safeStringifyForAttr(props.parameters),
188
- "data-result": safeStringifyForAttr(props.result),
89
+ "data-status": cardStatus,
90
+ "data-args": ɵstringifyToolCallAttr(props.parameters),
91
+ "data-result": ɵstringifyToolCallAttr(props.result),
189
92
  class: "cpk-default-tool-call",
190
93
  },
191
94
  [
@@ -252,12 +155,12 @@ const DefaultToolCallRenderer = defineComponent({
252
155
  h(
253
156
  "div",
254
157
  { class: "cpk-default-tool-call-label" },
255
- "Arguments",
158
+ labels.value.toolCallArgumentsLabel,
256
159
  ),
257
160
  h(
258
161
  "pre",
259
162
  { class: "cpk-default-tool-call-code" },
260
- safeStringifyForPre(props.parameters ?? {}),
163
+ ɵstringifyToolCallPayload(props.parameters ?? {}),
261
164
  ),
262
165
  ]),
263
166
  props.result !== undefined
@@ -265,14 +168,12 @@ const DefaultToolCallRenderer = defineComponent({
265
168
  h(
266
169
  "div",
267
170
  { class: "cpk-default-tool-call-label" },
268
- "Result",
171
+ labels.value.toolCallResultLabel,
269
172
  ),
270
173
  h(
271
174
  "pre",
272
175
  { class: "cpk-default-tool-call-code" },
273
- typeof props.result === "string"
274
- ? props.result
275
- : safeStringifyForPre(props.result),
176
+ ɵstringifyToolCallPayload(props.result),
276
177
  ),
277
178
  ])
278
179
  : null,
@@ -285,28 +186,6 @@ const DefaultToolCallRenderer = defineComponent({
285
186
  },
286
187
  });
287
188
 
288
- function safeStringifyForAttr(value: unknown): string {
289
- if (value === undefined || value === null) return "";
290
- if (typeof value === "string") return value;
291
- try {
292
- return JSON.stringify(value);
293
- } catch (err) {
294
- console.warn(
295
- "[CopilotKit] Failed to JSON.stringify tool-call payload for data-* attribute; falling back to String():",
296
- err,
297
- );
298
- try {
299
- return String(value);
300
- } catch (innerErr) {
301
- console.warn(
302
- "[CopilotKit] safeStringifyForAttr: value could not be stringified:",
303
- innerErr,
304
- );
305
- return "";
306
- }
307
- }
308
- }
309
-
310
189
  export function useDefaultRenderTool(
311
190
  config?: {
312
191
  render?:
@@ -1,4 +1,5 @@
1
1
  import { watch } from "vue";
2
+ import { ɵregisterFrontendTools } from "@copilotkit/core";
2
3
  import type { WatchSource } from "vue";
3
4
  import { useCopilotKit } from "../providers/useCopilotKit";
4
5
  import type { VueFrontendTool } from "../types";
@@ -12,6 +13,11 @@ const EMPTY_DEPS: WatchSource<unknown>[] = [];
12
13
  * The tool registration is reactive to provided dependencies and is cleaned up
13
14
  * automatically when the current scope is disposed.
14
15
  *
16
+ * A tool with the same name and `agentId` as a tool that is already
17
+ * registered (for example a provider `frontendTools` entry) takes its place
18
+ * while this scope is active, with a console warning. When the scope is
19
+ * disposed, the earlier tool is active again.
20
+ *
15
21
  * @example
16
22
  * ```ts
17
23
  * useFrontendTool({
@@ -40,31 +46,15 @@ export function useFrontendTool<T extends Record<string, unknown>>(
40
46
  ],
41
47
  (_newValues, _old, onCleanup) => {
42
48
  const core = copilotkit.value;
43
- const name = tool.name;
44
-
45
- if (core.getTool({ toolName: name, agentId: tool.agentId })) {
46
- console.warn(
47
- `Tool '${name}' already exists for agent '${tool.agentId || "global"}'. Overriding with latest registration.`,
48
- );
49
- core.removeTool(name, tool.agentId);
50
- }
51
- core.addTool(tool);
52
-
53
- // The render function is registered even when tool.parameters is
54
- // undefined — tools like HITL confirm dialogs have no parameters
55
- // but still need their UI rendered in the chat.
56
- if (tool.render) {
57
- core.addHookRenderToolCall({
58
- name,
59
- args: tool.parameters,
60
- agentId: tool.agentId,
61
- render: tool.render,
62
- } as VueToolCallRenderer<unknown>);
63
- }
64
-
65
- onCleanup(() => {
66
- core.removeTool(name, tool.agentId);
67
- });
49
+ // Registrations stack in core: this one shadows an earlier tool with the
50
+ // same name and agentId (a provider tool, or another component's), and
51
+ // unregistering it brings that tool back. The renderer stays registered
52
+ // so past calls still render in the chat history.
53
+ onCleanup(
54
+ ɵregisterFrontendTools(core, [tool], (renderer) =>
55
+ core.addHookRenderToolCall(renderer as VueToolCallRenderer),
56
+ ),
57
+ );
68
58
  },
69
59
  { immediate: true },
70
60
  );
@@ -1,7 +1,7 @@
1
- import { onScopeDispose, ref } from "vue";
1
+ import { onScopeDispose } from "vue";
2
2
  import type { WatchSource } from "vue";
3
3
  import { h } from "vue";
4
- import { ToolCallStatus } from "@copilotkit/core";
4
+ import { ɵbuildHumanInTheLoopTool, ɵhitlRenderProps } from "@copilotkit/core";
5
5
  import { useCopilotKit } from "../providers/useCopilotKit";
6
6
  import { useFrontendTool } from "./use-frontend-tool";
7
7
  import type {
@@ -15,7 +15,8 @@ import type {
15
15
  * Registers a human-in-the-loop frontend tool.
16
16
  *
17
17
  * The tool pauses execution until `respond` is called from the rendered
18
- * component during the `executing` phase.
18
+ * component during the `executing` phase. Each call waits on its own
19
+ * `respond`, so parallel calls of one tool stay independent.
19
20
  *
20
21
  * @example
21
22
  * ```ts
@@ -31,88 +32,18 @@ export function useHumanInTheLoop<T extends Record<string, unknown>>(
31
32
  deps?: WatchSource<unknown>[],
32
33
  ) {
33
34
  const { copilotkit } = useCopilotKit();
34
- const resolvePromiseRef = ref<((result: unknown) => void) | null>(null);
35
- const rejectPromiseRef = ref<((error: unknown) => void) | null>(null);
36
- const cleanupAbortRef = ref<(() => void) | null>(null);
37
-
38
- const respond = async (result: unknown) => {
39
- if (resolvePromiseRef.value) {
40
- cleanupAbortRef.value?.();
41
- cleanupAbortRef.value = null;
42
- resolvePromiseRef.value(result);
43
- resolvePromiseRef.value = null;
44
- rejectPromiseRef.value = null;
45
- }
46
- };
47
-
48
- const handler = async (_args: T, context?: { signal?: AbortSignal }) => {
49
- const signal = context?.signal;
50
- return new Promise((resolve, reject) => {
51
- if (signal?.aborted) {
52
- reject(new Error("Human-in-the-loop interaction aborted"));
53
- return;
54
- }
55
-
56
- resolvePromiseRef.value = resolve;
57
- rejectPromiseRef.value = reject;
58
-
59
- if (signal) {
60
- const onAbort = () => {
61
- cleanupAbortRef.value = null;
62
- resolvePromiseRef.value = null;
63
- const rejectPending = rejectPromiseRef.value;
64
- rejectPromiseRef.value = null;
65
- rejectPending?.(new Error("Human-in-the-loop interaction aborted"));
66
- };
67
-
68
- signal.addEventListener("abort", onAbort, { once: true });
69
- cleanupAbortRef.value = () => {
70
- signal.removeEventListener("abort", onAbort);
71
- };
72
- }
73
- });
74
- };
35
+ const registry = () => copilotkit.value.ɵhumanInTheLoop;
75
36
 
76
37
  const RenderComponent: VueToolCallRenderer<T>["render"] = (
77
38
  props: VueToolCallRendererRenderProps<T>,
78
- ) => {
79
- const ToolComponent = tool.render;
80
- if (props.status === ToolCallStatus.InProgress) {
81
- return h(ToolComponent as Parameters<typeof h>[0], {
82
- ...props,
83
- name: tool.name,
84
- description: tool.description || "",
85
- agentId: tool.agentId,
86
- respond: undefined,
87
- });
88
- }
89
- if (props.status === ToolCallStatus.Executing) {
90
- return h(ToolComponent as Parameters<typeof h>[0], {
91
- ...props,
92
- name: tool.name,
93
- description: tool.description || "",
94
- agentId: tool.agentId,
95
- respond,
96
- });
97
- }
98
- if (props.status === ToolCallStatus.Complete) {
99
- return h(ToolComponent as Parameters<typeof h>[0], {
100
- ...props,
101
- name: tool.name,
102
- description: tool.description || "",
103
- agentId: tool.agentId,
104
- respond: undefined,
105
- });
106
- }
107
-
108
- const exhaustiveCheck: never = props;
109
- return exhaustiveCheck;
110
- };
39
+ ) =>
40
+ h(
41
+ tool.render as Parameters<typeof h>[0],
42
+ ɵhitlRenderProps<T, typeof props>(props, tool, registry()),
43
+ );
111
44
 
112
45
  const frontendTool: VueFrontendTool<T> = {
113
- ...tool,
114
- type: "human-in-the-loop",
115
- handler,
46
+ ...ɵbuildHumanInTheLoopTool<T>(tool, registry),
116
47
  render: RenderComponent,
117
48
  };
118
49