@copilotkit/vue 2.0.0-rc.2 → 2.0.0-rc.21

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