@copilotkit/vue 1.57.1

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 (437) hide show
  1. package/AGENTS.md +50 -0
  2. package/CHANGELOG.md +13 -0
  3. package/PARITY.md +434 -0
  4. package/README.md +396 -0
  5. package/dist/components/copilot-provider/CopilotKit.vue.d.ts +20 -0
  6. package/dist/components/copilot-provider/CopilotKit.vue.d.ts.map +1 -0
  7. package/dist/components/copilot-provider/index.d.ts +3 -0
  8. package/dist/components/copilot-provider/index.d.ts.map +1 -0
  9. package/dist/components/copilot-provider/types.d.ts +22 -0
  10. package/dist/components/copilot-provider/types.d.ts.map +1 -0
  11. package/dist/hooks/index.d.ts +7 -0
  12. package/dist/hooks/index.d.ts.map +1 -0
  13. package/dist/hooks/use-copilot-action.d.ts +27 -0
  14. package/dist/hooks/use-copilot-action.d.ts.map +1 -0
  15. package/dist/hooks/use-copilot-readable.d.ts +20 -0
  16. package/dist/hooks/use-copilot-readable.d.ts.map +1 -0
  17. package/dist/hooks/use-frontend-tool.d.ts +21 -0
  18. package/dist/hooks/use-frontend-tool.d.ts.map +1 -0
  19. package/dist/index.cjs +2 -0
  20. package/dist/index.cjs.map +1 -0
  21. package/dist/index.d.cts +10 -0
  22. package/dist/index.d.mts +10 -0
  23. package/dist/index.d.ts +10 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.mjs +252 -0
  26. package/dist/index.mjs.map +1 -0
  27. package/dist/styles.css +2 -0
  28. package/dist/use-render-activity-message-BRL1Rpl-.cjs +85 -0
  29. package/dist/use-render-activity-message-BRL1Rpl-.cjs.map +1 -0
  30. package/dist/use-render-activity-message-CqtxiFSs.js +8927 -0
  31. package/dist/use-render-activity-message-CqtxiFSs.js.map +1 -0
  32. package/dist/v2/components/A2UIMessageRenderer.d.ts +9 -0
  33. package/dist/v2/components/A2UIMessageRenderer.d.ts.map +1 -0
  34. package/dist/v2/components/A2UISurfaceActivityRenderer.vue.d.ts +16 -0
  35. package/dist/v2/components/A2UISurfaceActivityRenderer.vue.d.ts.map +1 -0
  36. package/dist/v2/components/CopilotKitInspector.vue.d.ts +7 -0
  37. package/dist/v2/components/CopilotKitInspector.vue.d.ts.map +1 -0
  38. package/dist/v2/components/InlineFeatureWarning.vue.d.ts +6 -0
  39. package/dist/v2/components/InlineFeatureWarning.vue.d.ts.map +1 -0
  40. package/dist/v2/components/LicenseWarningBanner.vue.d.ts +18 -0
  41. package/dist/v2/components/LicenseWarningBanner.vue.d.ts.map +1 -0
  42. package/dist/v2/components/MCPAppsActivityRenderer.d.ts +88 -0
  43. package/dist/v2/components/MCPAppsActivityRenderer.d.ts.map +1 -0
  44. package/dist/v2/components/OpenGenerativeUIRenderer.d.ts +154 -0
  45. package/dist/v2/components/OpenGenerativeUIRenderer.d.ts.map +1 -0
  46. package/dist/v2/components/a2ui/A2UIBuiltInToolCallRenderer.d.ts +19 -0
  47. package/dist/v2/components/a2ui/A2UIBuiltInToolCallRenderer.d.ts.map +1 -0
  48. package/dist/v2/components/a2ui/A2UICatalogContext.d.ts +16 -0
  49. package/dist/v2/components/a2ui/A2UICatalogContext.d.ts.map +1 -0
  50. package/dist/v2/components/a2ui/VueSurface.d.ts +62 -0
  51. package/dist/v2/components/a2ui/VueSurface.d.ts.map +1 -0
  52. package/dist/v2/components/a2ui/adapter.d.ts +38 -0
  53. package/dist/v2/components/a2ui/adapter.d.ts.map +1 -0
  54. package/dist/v2/components/a2ui/catalog.d.ts +29 -0
  55. package/dist/v2/components/a2ui/catalog.d.ts.map +1 -0
  56. package/dist/v2/components/a2ui/index.d.ts +5 -0
  57. package/dist/v2/components/a2ui/index.d.ts.map +1 -0
  58. package/dist/v2/components/a2ui/utils.d.ts +18 -0
  59. package/dist/v2/components/a2ui/utils.d.ts.map +1 -0
  60. package/dist/v2/components/a2ui.d.ts +12 -0
  61. package/dist/v2/components/a2ui.d.ts.map +1 -0
  62. package/dist/v2/components/chat/CopilotChat.vue.d.ts +50 -0
  63. package/dist/v2/components/chat/CopilotChat.vue.d.ts.map +1 -0
  64. package/dist/v2/components/chat/CopilotChatAssistantMessage.vue.d.ts +164 -0
  65. package/dist/v2/components/chat/CopilotChatAssistantMessage.vue.d.ts.map +1 -0
  66. package/dist/v2/components/chat/CopilotChatAttachmentQueue.vue.d.ts +12 -0
  67. package/dist/v2/components/chat/CopilotChatAttachmentQueue.vue.d.ts.map +1 -0
  68. package/dist/v2/components/chat/CopilotChatAttachmentRenderer.vue.d.ts +7 -0
  69. package/dist/v2/components/chat/CopilotChatAttachmentRenderer.vue.d.ts.map +1 -0
  70. package/dist/v2/components/chat/CopilotChatAudioRecorder.vue.d.ts +12 -0
  71. package/dist/v2/components/chat/CopilotChatAudioRecorder.vue.d.ts.map +1 -0
  72. package/dist/v2/components/chat/CopilotChatInput.vue.d.ts +290 -0
  73. package/dist/v2/components/chat/CopilotChatInput.vue.d.ts.map +1 -0
  74. package/dist/v2/components/chat/CopilotChatMessageView.vue.d.ts +72 -0
  75. package/dist/v2/components/chat/CopilotChatMessageView.vue.d.ts.map +1 -0
  76. package/dist/v2/components/chat/CopilotChatReasoningMessage.vue.d.ts +65 -0
  77. package/dist/v2/components/chat/CopilotChatReasoningMessage.vue.d.ts.map +1 -0
  78. package/dist/v2/components/chat/CopilotChatSuggestionPill.vue.d.ts +27 -0
  79. package/dist/v2/components/chat/CopilotChatSuggestionPill.vue.d.ts.map +1 -0
  80. package/dist/v2/components/chat/CopilotChatSuggestionView.vue.d.ts +26 -0
  81. package/dist/v2/components/chat/CopilotChatSuggestionView.vue.d.ts.map +1 -0
  82. package/dist/v2/components/chat/CopilotChatToggleButton.vue.d.ts +17 -0
  83. package/dist/v2/components/chat/CopilotChatToggleButton.vue.d.ts.map +1 -0
  84. package/dist/v2/components/chat/CopilotChatToggleButtonCloseIcon.d.ts +5 -0
  85. package/dist/v2/components/chat/CopilotChatToggleButtonCloseIcon.d.ts.map +1 -0
  86. package/dist/v2/components/chat/CopilotChatToggleButtonOpenIcon.d.ts +5 -0
  87. package/dist/v2/components/chat/CopilotChatToggleButtonOpenIcon.d.ts.map +1 -0
  88. package/dist/v2/components/chat/CopilotChatToolCallsView.vue.d.ts +21 -0
  89. package/dist/v2/components/chat/CopilotChatToolCallsView.vue.d.ts.map +1 -0
  90. package/dist/v2/components/chat/CopilotChatUserMessage.vue.d.ts +34 -0
  91. package/dist/v2/components/chat/CopilotChatUserMessage.vue.d.ts.map +1 -0
  92. package/dist/v2/components/chat/CopilotChatView.vue.d.ts +106 -0
  93. package/dist/v2/components/chat/CopilotChatView.vue.d.ts.map +1 -0
  94. package/dist/v2/components/chat/CopilotModalHeader.vue.d.ts +15 -0
  95. package/dist/v2/components/chat/CopilotModalHeader.vue.d.ts.map +1 -0
  96. package/dist/v2/components/chat/CopilotModalHeaderCloseButton.d.ts +5 -0
  97. package/dist/v2/components/chat/CopilotModalHeaderCloseButton.d.ts.map +1 -0
  98. package/dist/v2/components/chat/CopilotModalHeaderTitle.d.ts +5 -0
  99. package/dist/v2/components/chat/CopilotModalHeaderTitle.d.ts.map +1 -0
  100. package/dist/v2/components/chat/CopilotPopup.vue.d.ts +50 -0
  101. package/dist/v2/components/chat/CopilotPopup.vue.d.ts.map +1 -0
  102. package/dist/v2/components/chat/CopilotPopupView.vue.d.ts +55 -0
  103. package/dist/v2/components/chat/CopilotPopupView.vue.d.ts.map +1 -0
  104. package/dist/v2/components/chat/CopilotPopupViewInternal.vue.d.ts +55 -0
  105. package/dist/v2/components/chat/CopilotPopupViewInternal.vue.d.ts.map +1 -0
  106. package/dist/v2/components/chat/CopilotPopupWelcomeScreen.vue.d.ts +28 -0
  107. package/dist/v2/components/chat/CopilotPopupWelcomeScreen.vue.d.ts.map +1 -0
  108. package/dist/v2/components/chat/CopilotSidebar.vue.d.ts +48 -0
  109. package/dist/v2/components/chat/CopilotSidebar.vue.d.ts.map +1 -0
  110. package/dist/v2/components/chat/CopilotSidebarView.vue.d.ts +62 -0
  111. package/dist/v2/components/chat/CopilotSidebarView.vue.d.ts.map +1 -0
  112. package/dist/v2/components/chat/CopilotSidebarViewInternal.vue.d.ts +53 -0
  113. package/dist/v2/components/chat/CopilotSidebarViewInternal.vue.d.ts.map +1 -0
  114. package/dist/v2/components/chat/CopilotSidebarWelcomeScreen.vue.d.ts +28 -0
  115. package/dist/v2/components/chat/CopilotSidebarWelcomeScreen.vue.d.ts.map +1 -0
  116. package/dist/v2/components/chat/audioRecorder.d.ts +11 -0
  117. package/dist/v2/components/chat/audioRecorder.d.ts.map +1 -0
  118. package/dist/v2/components/chat/index.d.ts +682 -0
  119. package/dist/v2/components/chat/index.d.ts.map +1 -0
  120. package/dist/v2/components/chat/last-user-message-context.d.ts +29 -0
  121. package/dist/v2/components/chat/last-user-message-context.d.ts.map +1 -0
  122. package/dist/v2/components/chat/normalize-auto-scroll.d.ts +3 -0
  123. package/dist/v2/components/chat/normalize-auto-scroll.d.ts.map +1 -0
  124. package/dist/v2/components/chat/types.d.ts +380 -0
  125. package/dist/v2/components/chat/types.d.ts.map +1 -0
  126. package/dist/v2/components/icons/index.d.ts +2 -0
  127. package/dist/v2/components/icons/index.d.ts.map +1 -0
  128. package/dist/v2/components/index.d.ts +8 -0
  129. package/dist/v2/components/index.d.ts.map +1 -0
  130. package/dist/v2/hooks/index.d.ts +24 -0
  131. package/dist/v2/hooks/index.d.ts.map +1 -0
  132. package/dist/v2/hooks/use-agent-context.d.ts +24 -0
  133. package/dist/v2/hooks/use-agent-context.d.ts.map +1 -0
  134. package/dist/v2/hooks/use-agent.d.ts +53 -0
  135. package/dist/v2/hooks/use-agent.d.ts.map +1 -0
  136. package/dist/v2/hooks/use-attachments.d.ts +21 -0
  137. package/dist/v2/hooks/use-attachments.d.ts.map +1 -0
  138. package/dist/v2/hooks/use-capabilities.d.ts +16 -0
  139. package/dist/v2/hooks/use-capabilities.d.ts.map +1 -0
  140. package/dist/v2/hooks/use-component.d.ts +13 -0
  141. package/dist/v2/hooks/use-component.d.ts.map +1 -0
  142. package/dist/v2/hooks/use-configure-suggestions.d.ts +24 -0
  143. package/dist/v2/hooks/use-configure-suggestions.d.ts.map +1 -0
  144. package/dist/v2/hooks/use-default-render-tool.d.ts +14 -0
  145. package/dist/v2/hooks/use-default-render-tool.d.ts.map +1 -0
  146. package/dist/v2/hooks/use-frontend-tool.d.ts +19 -0
  147. package/dist/v2/hooks/use-frontend-tool.d.ts.map +1 -0
  148. package/dist/v2/hooks/use-human-in-the-loop.d.ts +19 -0
  149. package/dist/v2/hooks/use-human-in-the-loop.d.ts.map +1 -0
  150. package/dist/v2/hooks/use-interrupt.d.ts +36 -0
  151. package/dist/v2/hooks/use-interrupt.d.ts.map +1 -0
  152. package/dist/v2/hooks/use-katex-styles.d.ts +22 -0
  153. package/dist/v2/hooks/use-katex-styles.d.ts.map +1 -0
  154. package/dist/v2/hooks/use-keyboard-height.d.ts +33 -0
  155. package/dist/v2/hooks/use-keyboard-height.d.ts.map +1 -0
  156. package/dist/v2/hooks/use-pin-to-send.d.ts +28 -0
  157. package/dist/v2/hooks/use-pin-to-send.d.ts.map +1 -0
  158. package/dist/v2/hooks/use-render-activity-message.d.ts +21 -0
  159. package/dist/v2/hooks/use-render-activity-message.d.ts.map +1 -0
  160. package/dist/v2/hooks/use-render-custom-messages.d.ts +27 -0
  161. package/dist/v2/hooks/use-render-custom-messages.d.ts.map +1 -0
  162. package/dist/v2/hooks/use-render-tool.d.ts +36 -0
  163. package/dist/v2/hooks/use-render-tool.d.ts.map +1 -0
  164. package/dist/v2/hooks/use-suggestions.d.ts +26 -0
  165. package/dist/v2/hooks/use-suggestions.d.ts.map +1 -0
  166. package/dist/v2/hooks/use-threads.d.ts +42 -0
  167. package/dist/v2/hooks/use-threads.d.ts.map +1 -0
  168. package/dist/v2/index.cjs +2 -0
  169. package/dist/v2/index.cjs.map +1 -0
  170. package/dist/v2/index.d.cts +9 -0
  171. package/dist/v2/index.d.mts +9 -0
  172. package/dist/v2/index.d.ts +9 -0
  173. package/dist/v2/index.d.ts.map +1 -0
  174. package/dist/v2/index.mjs +75 -0
  175. package/dist/v2/index.mjs.map +1 -0
  176. package/dist/v2/lib/processPartialHtml.d.ts +3 -0
  177. package/dist/v2/lib/processPartialHtml.d.ts.map +1 -0
  178. package/dist/v2/lib/shallow-stable.d.ts +7 -0
  179. package/dist/v2/lib/shallow-stable.d.ts.map +1 -0
  180. package/dist/v2/lib/transcription-client.d.ts +19 -0
  181. package/dist/v2/lib/transcription-client.d.ts.map +1 -0
  182. package/dist/v2/lib/vue-core.d.ts +47 -0
  183. package/dist/v2/lib/vue-core.d.ts.map +1 -0
  184. package/dist/v2/providers/CopilotChatConfigurationProvider.types.d.ts +15 -0
  185. package/dist/v2/providers/CopilotChatConfigurationProvider.types.d.ts.map +1 -0
  186. package/dist/v2/providers/CopilotChatConfigurationProvider.vue.d.ts +17 -0
  187. package/dist/v2/providers/CopilotChatConfigurationProvider.vue.d.ts.map +1 -0
  188. package/dist/v2/providers/CopilotKitProvider.types.d.ts +61 -0
  189. package/dist/v2/providers/CopilotKitProvider.types.d.ts.map +1 -0
  190. package/dist/v2/providers/CopilotKitProvider.vue.d.ts +37 -0
  191. package/dist/v2/providers/CopilotKitProvider.vue.d.ts.map +1 -0
  192. package/dist/v2/providers/SandboxFunctionsContext.d.ts +4 -0
  193. package/dist/v2/providers/SandboxFunctionsContext.d.ts.map +1 -0
  194. package/dist/v2/providers/index.d.ts +13 -0
  195. package/dist/v2/providers/index.d.ts.map +1 -0
  196. package/dist/v2/providers/keys.d.ts +17 -0
  197. package/dist/v2/providers/keys.d.ts.map +1 -0
  198. package/dist/v2/providers/license-context.d.ts +7 -0
  199. package/dist/v2/providers/license-context.d.ts.map +1 -0
  200. package/dist/v2/providers/types.d.ts +38 -0
  201. package/dist/v2/providers/types.d.ts.map +1 -0
  202. package/dist/v2/providers/useCopilotChatConfiguration.d.ts +4 -0
  203. package/dist/v2/providers/useCopilotChatConfiguration.d.ts.map +1 -0
  204. package/dist/v2/providers/useCopilotKit.d.ts +2 -0
  205. package/dist/v2/providers/useCopilotKit.d.ts.map +1 -0
  206. package/dist/v2/providers/useLicenseContext.d.ts +14 -0
  207. package/dist/v2/providers/useLicenseContext.d.ts.map +1 -0
  208. package/dist/v2/types/a2ui.d.ts +5 -0
  209. package/dist/v2/types/a2ui.d.ts.map +1 -0
  210. package/dist/v2/types/defineToolCallRenderer.d.ts +15 -0
  211. package/dist/v2/types/defineToolCallRenderer.d.ts.map +1 -0
  212. package/dist/v2/types/frontend-tool.d.ts +6 -0
  213. package/dist/v2/types/frontend-tool.d.ts.map +1 -0
  214. package/dist/v2/types/human-in-the-loop.d.ts +29 -0
  215. package/dist/v2/types/human-in-the-loop.d.ts.map +1 -0
  216. package/dist/v2/types/index.d.ts +10 -0
  217. package/dist/v2/types/index.d.ts.map +1 -0
  218. package/dist/v2/types/interrupt.d.ts +14 -0
  219. package/dist/v2/types/interrupt.d.ts.map +1 -0
  220. package/dist/v2/types/sandbox-function.d.ts +8 -0
  221. package/dist/v2/types/sandbox-function.d.ts.map +1 -0
  222. package/dist/v2/types/vue-activity-message-renderer.d.ts +18 -0
  223. package/dist/v2/types/vue-activity-message-renderer.d.ts.map +1 -0
  224. package/dist/v2/types/vue-custom-message-renderer.d.ts +19 -0
  225. package/dist/v2/types/vue-custom-message-renderer.d.ts.map +1 -0
  226. package/dist/v2/types/vue-tool-call-renderer.d.ts +37 -0
  227. package/dist/v2/types/vue-tool-call-renderer.d.ts.map +1 -0
  228. package/env.d.ts +7 -0
  229. package/eslint.config.mjs +42 -0
  230. package/package.json +130 -0
  231. package/scripts/scope-preflight.mjs +100 -0
  232. package/src/components/copilot-provider/CopilotKit.vue +18 -0
  233. package/src/components/copilot-provider/index.ts +2 -0
  234. package/src/components/copilot-provider/types.ts +24 -0
  235. package/src/hooks/index.ts +9 -0
  236. package/src/hooks/use-copilot-action.ts +168 -0
  237. package/src/hooks/use-copilot-readable.ts +75 -0
  238. package/src/hooks/use-frontend-tool.ts +76 -0
  239. package/src/index.ts +12 -0
  240. package/src/styles/globals.css +314 -0
  241. package/src/v2/__tests__/exports.test.ts +35 -0
  242. package/src/v2/__tests__/mocks/web-inspector.ts +5 -0
  243. package/src/v2/__tests__/setup.ts +141 -0
  244. package/src/v2/__tests__/utils/agents.ts +391 -0
  245. package/src/v2/__tests__/utils/mount.ts +83 -0
  246. package/src/v2/__tests__/utils/test-helpers.ts +712 -0
  247. package/src/v2/components/A2UIMessageRenderer.ts +125 -0
  248. package/src/v2/components/A2UISurfaceActivityRenderer.vue +186 -0
  249. package/src/v2/components/CopilotKitInspector.vue +42 -0
  250. package/src/v2/components/InlineFeatureWarning.vue +35 -0
  251. package/src/v2/components/LicenseWarningBanner.vue +196 -0
  252. package/src/v2/components/MCPAppsActivityRenderer.ts +778 -0
  253. package/src/v2/components/OpenGenerativeUIRenderer.ts +550 -0
  254. package/src/v2/components/__tests__/A2UIMessageRenderer.test.ts +271 -0
  255. package/src/v2/components/__tests__/CopilotKitInspector.test.ts +57 -0
  256. package/src/v2/components/__tests__/MCPAppsActivityRenderer.e2e.test.ts +851 -0
  257. package/src/v2/components/__tests__/MCPAppsActivityRenderer.test.ts +237 -0
  258. package/src/v2/components/__tests__/OpenGenerativeUIRenderer.test.ts +516 -0
  259. package/src/v2/components/a2ui/A2UIBuiltInToolCallRenderer.ts +295 -0
  260. package/src/v2/components/a2ui/A2UICatalogContext.ts +190 -0
  261. package/src/v2/components/a2ui/VueSurface.ts +144 -0
  262. package/src/v2/components/a2ui/adapter.ts +156 -0
  263. package/src/v2/components/a2ui/catalog.ts +858 -0
  264. package/src/v2/components/a2ui/index.ts +7 -0
  265. package/src/v2/components/a2ui/utils.ts +67 -0
  266. package/src/v2/components/a2ui.ts +30 -0
  267. package/src/v2/components/chat/CopilotChat.vue +777 -0
  268. package/src/v2/components/chat/CopilotChatAssistantMessage.vue +891 -0
  269. package/src/v2/components/chat/CopilotChatAttachmentQueue.vue +411 -0
  270. package/src/v2/components/chat/CopilotChatAttachmentRenderer.vue +87 -0
  271. package/src/v2/components/chat/CopilotChatAudioRecorder.vue +269 -0
  272. package/src/v2/components/chat/CopilotChatInput.vue +1271 -0
  273. package/src/v2/components/chat/CopilotChatMessageView.vue +476 -0
  274. package/src/v2/components/chat/CopilotChatReasoningMessage.vue +247 -0
  275. package/src/v2/components/chat/CopilotChatSuggestionPill.vue +56 -0
  276. package/src/v2/components/chat/CopilotChatSuggestionView.vue +93 -0
  277. package/src/v2/components/chat/CopilotChatToggleButton.vue +145 -0
  278. package/src/v2/components/chat/CopilotChatToggleButtonCloseIcon.ts +17 -0
  279. package/src/v2/components/chat/CopilotChatToggleButtonOpenIcon.ts +18 -0
  280. package/src/v2/components/chat/CopilotChatToolCallsView.vue +161 -0
  281. package/src/v2/components/chat/CopilotChatUserMessage.vue +322 -0
  282. package/src/v2/components/chat/CopilotChatView.vue +740 -0
  283. package/src/v2/components/chat/CopilotModalHeader.vue +73 -0
  284. package/src/v2/components/chat/CopilotModalHeaderCloseButton.ts +38 -0
  285. package/src/v2/components/chat/CopilotModalHeaderTitle.ts +22 -0
  286. package/src/v2/components/chat/CopilotPopup.vue +182 -0
  287. package/src/v2/components/chat/CopilotPopupView.vue +168 -0
  288. package/src/v2/components/chat/CopilotPopupViewInternal.vue +453 -0
  289. package/src/v2/components/chat/CopilotPopupWelcomeScreen.vue +140 -0
  290. package/src/v2/components/chat/CopilotSidebar.vue +178 -0
  291. package/src/v2/components/chat/CopilotSidebarView.vue +172 -0
  292. package/src/v2/components/chat/CopilotSidebarViewInternal.vue +366 -0
  293. package/src/v2/components/chat/CopilotSidebarWelcomeScreen.vue +142 -0
  294. package/src/v2/components/chat/__tests__/CopilotChat.attachments.test.ts +237 -0
  295. package/src/v2/components/chat/__tests__/CopilotChat.e2e.test.ts +1240 -0
  296. package/src/v2/components/chat/__tests__/CopilotChat.licenseWarning.test.ts +138 -0
  297. package/src/v2/components/chat/__tests__/CopilotChat.onError.test.ts +85 -0
  298. package/src/v2/components/chat/__tests__/CopilotChat.slots.e2e.test.ts +141 -0
  299. package/src/v2/components/chat/__tests__/CopilotChat.test.ts +652 -0
  300. package/src/v2/components/chat/__tests__/CopilotChatActivityRendering.e2e.test.ts +683 -0
  301. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.slots.e2e.test.ts +768 -0
  302. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.test.ts +1108 -0
  303. package/src/v2/components/chat/__tests__/CopilotChatAssistantMessage.thumbs.test.ts +87 -0
  304. package/src/v2/components/chat/__tests__/CopilotChatAttachmentQueue.test.ts +277 -0
  305. package/src/v2/components/chat/__tests__/CopilotChatAttachmentRenderer.test.ts +124 -0
  306. package/src/v2/components/chat/__tests__/CopilotChatCopyButton.clipboard.test.ts +230 -0
  307. package/src/v2/components/chat/__tests__/CopilotChatInput.bottomAnchored.test.ts +83 -0
  308. package/src/v2/components/chat/__tests__/CopilotChatInput.slots.e2e.test.ts +1139 -0
  309. package/src/v2/components/chat/__tests__/CopilotChatInput.test.ts +1051 -0
  310. package/src/v2/components/chat/__tests__/CopilotChatMessageView.slots.e2e.test.ts +141 -0
  311. package/src/v2/components/chat/__tests__/CopilotChatMessageView.test.ts +494 -0
  312. package/src/v2/components/chat/__tests__/CopilotChatPropsRerender.e2e.test.ts +181 -0
  313. package/src/v2/components/chat/__tests__/CopilotChatReasoningMessage.test.ts +73 -0
  314. package/src/v2/components/chat/__tests__/CopilotChatSuggestionPill.test.ts +73 -0
  315. package/src/v2/components/chat/__tests__/CopilotChatSuggestionView.slots.e2e.test.ts +674 -0
  316. package/src/v2/components/chat/__tests__/CopilotChatSuggestionView.test.ts +91 -0
  317. package/src/v2/components/chat/__tests__/CopilotChatToggleButton.test.ts +93 -0
  318. package/src/v2/components/chat/__tests__/CopilotChatToolCallsView.test.ts +382 -0
  319. package/src/v2/components/chat/__tests__/CopilotChatToolRendering.e2e.test.ts +1019 -0
  320. package/src/v2/components/chat/__tests__/CopilotChatToolRerenders.e2e.test.ts +516 -0
  321. package/src/v2/components/chat/__tests__/CopilotChatUserMessage.slots.e2e.test.ts +701 -0
  322. package/src/v2/components/chat/__tests__/CopilotChatUserMessage.test.ts +337 -0
  323. package/src/v2/components/chat/__tests__/CopilotChatView.connectingGate.test.ts +135 -0
  324. package/src/v2/components/chat/__tests__/CopilotChatView.inputOverlay.test.ts +278 -0
  325. package/src/v2/components/chat/__tests__/CopilotChatView.onClick.e2e.test.ts +1082 -0
  326. package/src/v2/components/chat/__tests__/CopilotChatView.pinToSend.test.ts +166 -0
  327. package/src/v2/components/chat/__tests__/CopilotChatView.slots.e2e.test.ts +1145 -0
  328. package/src/v2/components/chat/__tests__/CopilotChatView.test.ts +374 -0
  329. package/src/v2/components/chat/__tests__/CopilotModalHeader.slots.e2e.test.ts +636 -0
  330. package/src/v2/components/chat/__tests__/CopilotModalHeader.test.ts +112 -0
  331. package/src/v2/components/chat/__tests__/CopilotPopup.test.ts +58 -0
  332. package/src/v2/components/chat/__tests__/CopilotPopupView.slots.e2e.test.ts +725 -0
  333. package/src/v2/components/chat/__tests__/CopilotPopupView.test.ts +112 -0
  334. package/src/v2/components/chat/__tests__/CopilotSidebar.test.ts +58 -0
  335. package/src/v2/components/chat/__tests__/CopilotSidebarView.slots.e2e.test.ts +603 -0
  336. package/src/v2/components/chat/__tests__/CopilotSidebarView.test.ts +214 -0
  337. package/src/v2/components/chat/__tests__/MCPAppsUiMessage.e2e.test.ts +394 -0
  338. package/src/v2/components/chat/__tests__/copilot-chat-throttle.test.ts +82 -0
  339. package/src/v2/components/chat/__tests__/normalize-auto-scroll.test.ts +39 -0
  340. package/src/v2/components/chat/audioRecorder.ts +15 -0
  341. package/src/v2/components/chat/index.ts +52 -0
  342. package/src/v2/components/chat/last-user-message-context.ts +39 -0
  343. package/src/v2/components/chat/normalize-auto-scroll.ts +17 -0
  344. package/src/v2/components/chat/types.ts +481 -0
  345. package/src/v2/components/icons/__tests__/icons.test.ts +86 -0
  346. package/src/v2/components/icons/index.ts +22 -0
  347. package/src/v2/components/index.ts +7 -0
  348. package/src/v2/hooks/__tests__/standard-schema-types.test.ts +149 -0
  349. package/src/v2/hooks/__tests__/standard-schema.test.ts +315 -0
  350. package/src/v2/hooks/__tests__/use-agent-context-timing.e2e.test.ts +144 -0
  351. package/src/v2/hooks/__tests__/use-agent-context.test.ts +271 -0
  352. package/src/v2/hooks/__tests__/use-agent-error-state.test.ts +64 -0
  353. package/src/v2/hooks/__tests__/use-agent-stability.test.ts +268 -0
  354. package/src/v2/hooks/__tests__/use-agent-thread-isolation.test.ts +433 -0
  355. package/src/v2/hooks/__tests__/use-agent-throttle.test.ts +747 -0
  356. package/src/v2/hooks/__tests__/use-agent.e2e.test.ts +187 -0
  357. package/src/v2/hooks/__tests__/use-agent.test.ts +126 -0
  358. package/src/v2/hooks/__tests__/use-attachments.test.ts +181 -0
  359. package/src/v2/hooks/__tests__/use-component.test.ts +145 -0
  360. package/src/v2/hooks/__tests__/use-configure-suggestions.e2e.test.ts +527 -0
  361. package/src/v2/hooks/__tests__/use-configure-suggestions.test.ts +399 -0
  362. package/src/v2/hooks/__tests__/use-default-render-tool.test.ts +214 -0
  363. package/src/v2/hooks/__tests__/use-frontend-tool-available.test.ts +220 -0
  364. package/src/v2/hooks/__tests__/use-frontend-tool.e2e.test.ts +2320 -0
  365. package/src/v2/hooks/__tests__/use-frontend-tool.test.ts +648 -0
  366. package/src/v2/hooks/__tests__/use-human-in-the-loop.e2e.test.ts +1379 -0
  367. package/src/v2/hooks/__tests__/use-human-in-the-loop.test.ts +282 -0
  368. package/src/v2/hooks/__tests__/use-interrupt.test.ts +345 -0
  369. package/src/v2/hooks/__tests__/use-katex-styles.test.ts +69 -0
  370. package/src/v2/hooks/__tests__/use-keyboard-height.test.ts +199 -0
  371. package/src/v2/hooks/__tests__/use-pin-to-send.test.ts +363 -0
  372. package/src/v2/hooks/__tests__/use-render-tool.test.ts +329 -0
  373. package/src/v2/hooks/__tests__/use-suggestions.e2e.test.ts +397 -0
  374. package/src/v2/hooks/__tests__/use-suggestions.test.ts +198 -0
  375. package/src/v2/hooks/__tests__/use-threads.test.ts +1041 -0
  376. package/src/v2/hooks/__tests__/zod-regression.test.ts +339 -0
  377. package/src/v2/hooks/index.ts +29 -0
  378. package/src/v2/hooks/use-agent-context.ts +55 -0
  379. package/src/v2/hooks/use-agent.ts +345 -0
  380. package/src/v2/hooks/use-attachments.ts +261 -0
  381. package/src/v2/hooks/use-capabilities.ts +30 -0
  382. package/src/v2/hooks/use-component.ts +46 -0
  383. package/src/v2/hooks/use-configure-suggestions.ts +252 -0
  384. package/src/v2/hooks/use-default-render-tool.ts +130 -0
  385. package/src/v2/hooks/use-frontend-tool.ts +68 -0
  386. package/src/v2/hooks/use-human-in-the-loop.ts +90 -0
  387. package/src/v2/hooks/use-interrupt.ts +257 -0
  388. package/src/v2/hooks/use-katex-styles.ts +44 -0
  389. package/src/v2/hooks/use-keyboard-height.ts +87 -0
  390. package/src/v2/hooks/use-pin-to-send.ts +160 -0
  391. package/src/v2/hooks/use-render-activity-message.ts +92 -0
  392. package/src/v2/hooks/use-render-custom-messages.ts +129 -0
  393. package/src/v2/hooks/use-render-tool.ts +128 -0
  394. package/src/v2/hooks/use-suggestions.ts +98 -0
  395. package/src/v2/hooks/use-threads.ts +208 -0
  396. package/src/v2/index.ts +11 -0
  397. package/src/v2/lib/__tests__/processPartialHtml.test.ts +84 -0
  398. package/src/v2/lib/__tests__/transcription-client.test.ts +65 -0
  399. package/src/v2/lib/processPartialHtml.ts +21 -0
  400. package/src/v2/lib/shallow-stable.ts +54 -0
  401. package/src/v2/lib/transcription-client.ts +151 -0
  402. package/src/v2/lib/vue-core.ts +161 -0
  403. package/src/v2/providers/CopilotChatConfigurationProvider.types.ts +15 -0
  404. package/src/v2/providers/CopilotChatConfigurationProvider.vue +95 -0
  405. package/src/v2/providers/CopilotKitProvider.types.ts +66 -0
  406. package/src/v2/providers/CopilotKitProvider.vue +653 -0
  407. package/src/v2/providers/SandboxFunctionsContext.ts +11 -0
  408. package/src/v2/providers/__tests__/CopilotChatConfigurationProvider.test.ts +309 -0
  409. package/src/v2/providers/__tests__/CopilotKitProvider.debug.test.ts +295 -0
  410. package/src/v2/providers/__tests__/CopilotKitProvider.license.test.ts +110 -0
  411. package/src/v2/providers/__tests__/CopilotKitProvider.onError.test.ts +67 -0
  412. package/src/v2/providers/__tests__/CopilotKitProvider.renderCustomMessages.e2e.test.ts +901 -0
  413. package/src/v2/providers/__tests__/CopilotKitProvider.sandboxFunctions.test.ts +141 -0
  414. package/src/v2/providers/__tests__/CopilotKitProvider.stability.test.ts +871 -0
  415. package/src/v2/providers/__tests__/CopilotKitProvider.test.ts +603 -0
  416. package/src/v2/providers/__tests__/CopilotKitProvider.wildcard.test.ts +104 -0
  417. package/src/v2/providers/index.ts +21 -0
  418. package/src/v2/providers/keys.ts +25 -0
  419. package/src/v2/providers/license-context.ts +16 -0
  420. package/src/v2/providers/types.ts +40 -0
  421. package/src/v2/providers/useCopilotChatConfiguration.ts +11 -0
  422. package/src/v2/providers/useCopilotKit.ts +11 -0
  423. package/src/v2/providers/useLicenseContext.ts +21 -0
  424. package/src/v2/types/__tests__/defineToolCallRenderer.test.ts +157 -0
  425. package/src/v2/types/a2ui.ts +5 -0
  426. package/src/v2/types/defineToolCallRenderer.ts +32 -0
  427. package/src/v2/types/frontend-tool.ts +8 -0
  428. package/src/v2/types/human-in-the-loop.ts +38 -0
  429. package/src/v2/types/index.ts +9 -0
  430. package/src/v2/types/interrupt.ts +15 -0
  431. package/src/v2/types/sandbox-function.ts +8 -0
  432. package/src/v2/types/vue-activity-message-renderer.ts +22 -0
  433. package/src/v2/types/vue-custom-message-renderer.ts +24 -0
  434. package/src/v2/types/vue-tool-call-renderer.ts +44 -0
  435. package/tsconfig.json +27 -0
  436. package/vite.config.ts +49 -0
  437. package/vitest.config.ts +23 -0
@@ -0,0 +1,85 @@
1
+ "use strict";var _n=Object.create;var Ot=Object.defineProperty;var Hn=Object.getOwnPropertyDescriptor;var Wn=Object.getOwnPropertyNames;var qn=Object.getPrototypeOf,Gn=Object.prototype.hasOwnProperty;var Kn=(t,o,n,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of Wn(o))!Gn.call(t,r)&&r!==n&&Ot(t,r,{get:()=>o[r],enumerable:!(a=Hn(o,r))||a.enumerable});return t};var Dt=(t,o,n)=>(n=t!=null?_n(qn(t)):{},Kn(o||!t||!t.__esModule?Ot(n,"default",{value:t,enumerable:!0}):n,t));const e=require("vue"),X=require("zod"),z=require("@copilotkit/shared"),St=require("zod-to-json-schema"),me=require("@copilotkit/core"),ut=require("@a2ui/web_core/v0_9"),fe=require("@a2ui/web_core/v0_9/basic_catalog"),We=require("@ag-ui/client"),oe=require("lucide-vue-next"),Yt=require("streamdown-vue"),Zt=e.defineComponent({inheritAttrs:!1,__name:"CopilotKitInspector",props:{core:{}},setup(t){const o=t,n=e.useAttrs(),a=e.shallowRef(null);let r=!0;return e.onMounted(()=>{import("@copilotkit/web-inspector").then(s=>{s.defineWebInspector?.(),r&&(a.value=s.WEB_INSPECTOR_TAG)}).catch(s=>{console.error("Failed to load CopilotKit inspector:",s)})}),e.onUnmounted(()=>{r=!1}),(s,i)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.mergeProps({key:0},e.unref(n),{".core":o.core??null}),null,48,[".core"])):e.createCommentVNode("",!0)}}),en=Symbol("CopilotKit"),bt=Symbol("CopilotChatConfiguration"),tn=Symbol("SandboxFunctions");function ke(){const t=e.inject(en);if(!t)throw new Error("useCopilotKit must be used within CopilotKitProvider");return t}const Jn="2025-06-18";function Xn(t){const o="'self' 'wasm-unsafe-eval' 'unsafe-inline' 'unsafe-eval' blob: data: http://localhost:* https://localhost:*",n="* blob: data: http://localhost:* https://localhost:*",a=t?.length?` ${t.join(" ")}`:"",r=`${o}${a}`,s=`${n}${a}`;return`<!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src * data: blob: 'unsafe-inline'; media-src * blob: data:; font-src * blob: data:; script-src ${r}; style-src * blob: data: 'unsafe-inline'; connect-src *; frame-src ${s}; base-uri 'self';" />
6
+ <style>html,body{margin:0;padding:0;height:100%;width:100%;overflow:hidden}*{box-sizing:border-box}iframe{background-color:transparent;border:none;padding:0;overflow:hidden;width:100%;height:100%}</style>
7
+ </head>
8
+ <body>
9
+ <script>
10
+ if(window.self===window.top){throw new Error("This file must be used in an iframe.")}
11
+ const inner=document.createElement("iframe");
12
+ inner.style="width:100%;height:100%;border:none;";
13
+ inner.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms");
14
+ document.body.appendChild(inner);
15
+ window.addEventListener("message",async(event)=>{
16
+ if(event.source===window.parent){
17
+ if(event.data&&event.data.method==="ui/notifications/sandbox-resource-ready"){
18
+ const{html,sandbox}=event.data.params;
19
+ if(typeof sandbox==="string")inner.setAttribute("sandbox",sandbox);
20
+ if(typeof html==="string")inner.srcdoc=html;
21
+ }else if(inner&&inner.contentWindow){
22
+ inner.contentWindow.postMessage(event.data,"*");
23
+ }
24
+ }else if(event.source===inner.contentWindow){
25
+ window.parent.postMessage(event.data,"*");
26
+ }
27
+ });
28
+ window.parent.postMessage({jsonrpc:"2.0",method:"ui/notifications/sandbox-proxy-ready",params:{}},"*");
29
+ <\/script>
30
+ </body>
31
+ </html>`}class Qn{queues=new Map;processing=new Map;async enqueue(o,n){const a=o.threadId||"default";return new Promise((r,s)=>{let i=this.queues.get(a);i||(i=[],this.queues.set(a,i)),i.push({execute:n,resolve:r,reject:s}),this.processQueue(a,o)})}async processQueue(o,n){if(!this.processing.get(o)){this.processing.set(o,!0);try{const a=this.queues.get(o);if(!a)return;for(;a.length>0;){const r=a[0];try{await this.waitForAgentIdle(n);const s=await r.execute();r.resolve(s)}catch(s){r.reject(s instanceof Error?s:new Error(String(s)))}a.shift()}}finally{this.processing.set(o,!1)}}}cancel(o){const n=this.queues.get(o);if(n){for(const a of n)a.reject(new Error("MCPAppsRequestQueue cancelled on unmount"));n.length=0}this.queues.delete(o),this.processing.delete(o)}waitForAgentIdle(o){return new Promise((n,a)=>{if(!o.isRunning){n();return}let r=!1;const s=setTimeout(()=>{r||(r=!0,clearInterval(c),l.unsubscribe(),a(new Error("[CopilotKit] Timed out waiting for agent to become idle")))},3e4),i=()=>{r||(r=!0,clearTimeout(s),clearInterval(c),l.unsubscribe(),n())},l=o.subscribe({onRunFinalized:i,onRunFailed:i}),c=setInterval(()=>{o.isRunning||i()},500)})}}const st=new Qn,nn="mcp-apps",on=X.z.object({result:X.z.object({content:X.z.array(X.z.any()).optional(),structuredContent:X.z.any().optional(),isError:X.z.boolean().optional()}),resourceUri:X.z.string(),serverHash:X.z.string(),serverId:X.z.string().optional(),toolInput:X.z.record(X.z.unknown()).optional()});function Yn(t){return"id"in t&&"method"in t}function Zn(t){return!("id"in t)&&"method"in t}const an=e.defineComponent({name:"MCPAppsActivityRenderer",props:{activityType:{type:String,required:!0},content:{type:Object,required:!0},message:{type:Object,required:!0},agent:{type:Object,required:!1,default:void 0}},setup(t){const{copilotkit:o}=ke(),n=e.ref(null),a=e.ref(null),r=e.ref(!1),s=e.ref(null),i=e.ref(!0),l=e.ref({}),c=e.ref(null),p=e.ref({inProgress:!1,promise:null,resourceUri:null}),y=C=>{a.value?.contentWindow&&a.value.contentWindow.postMessage(C,"*")},u=(C,h)=>{y({jsonrpc:"2.0",id:C,result:h})},d=(C,h,w)=>{y({jsonrpc:"2.0",id:C,error:{code:h,message:w}})},f=(C,h)=>{y({jsonrpc:"2.0",method:C,params:h||{}})};e.watch([()=>t.agent,()=>t.content],([C,h])=>{i.value=!0,s.value=null,r.value=!1,l.value={},c.value=null;const{resourceUri:w,serverHash:m,serverId:b}=h;if(p.value.inProgress&&p.value.resourceUri===w){p.value.promise?.then(k=>{k&&(c.value=k,i.value=!1)}).catch(k=>{s.value=k instanceof Error?k:new Error(String(k)),i.value=!1});return}if(!C){s.value=new Error("No agent available to fetch resource"),i.value=!1;return}p.value.inProgress=!0,p.value.resourceUri=w;const g=(async()=>{try{const A=(await st.enqueue(C,()=>C.runAgent({forwardedProps:{__proxiedMCPRequest:{serverHash:m,serverId:b,method:"resources/read",params:{uri:w}}}}))).result?.contents?.[0];if(!A)throw new Error("No resource content in response");return A}finally{p.value.inProgress=!1}})();p.value.promise=g,g.then(k=>{k&&(c.value=k,i.value=!1)}).catch(k=>{s.value=k instanceof Error?k:new Error(String(k)),i.value=!1})},{immediate:!0}),e.watch([i,c],([C,h],w,m)=>{if(C||!h)return;const b=n.value;if(!b)return;let g=!0,k=null,x=null,A=null;(async()=>{try{const T=document.createElement("iframe");A=T,T.style.width="100%",T.style.height="100px",T.style.border="none",T.style.backgroundColor="transparent",T.style.display="block",T.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms");const F=new Promise(H=>{x=L=>{L.source===T.contentWindow&&L.data?.method==="ui/notifications/sandbox-proxy-ready"&&(x&&(window.removeEventListener("message",x),x=null),H())},window.addEventListener("message",x)});if(!g){x&&(window.removeEventListener("message",x),x=null);return}const U=c.value?._meta?.ui?.csp?.resourceDomains;if(T.srcdoc=Xn(U),a.value=T,b.appendChild(T),await F,!g)return;k=async H=>{if(H.source!==T.contentWindow)return;const L=H.data;if(!(!L||typeof L!="object"||L.jsonrpc!=="2.0")){if(Yn(L))switch(L.method){case"ui/initialize":{u(L.id,{protocolVersion:Jn,hostInfo:{name:"CopilotKit MCP Apps Host",version:"1.0.0"},hostCapabilities:{openLinks:{},logging:{}},hostContext:{theme:"light",platform:"web"}});break}case"ui/message":{const R=t.agent;if(!R){u(L.id,{isError:!1});break}try{const W=L.params,K=W?.role||"user",I=W?.content?.filter(O=>O.type==="text"&&O.text).map(O=>O.text).join(`
32
+ `)||"";I&&R.addMessage({id:z.randomUUID(),role:K,content:I}),u(L.id,{isError:!1}),(W?.followUp??K==="user")&&I&&st.enqueue(R,()=>o.value.runAgent({agent:R})).catch(O=>{console.error("[MCPAppsRenderer] ui/message agent run failed:",O)})}catch(W){console.error("[CopilotKit] MCPApps ui/message handler error:",W),u(L.id,{isError:!0})}break}case"ui/open-link":{const R=L.params?.url;if(!R){d(L.id,-32602,"Missing url parameter");break}window.open(R,"_blank","noopener,noreferrer"),u(L.id,{isError:!1});break}case"tools/call":{const{serverHash:R,serverId:W}=t.content,K=t.agent;if(!R){d(L.id,-32603,"No server hash available for proxying");break}if(!K){d(L.id,-32603,"No agent available for proxying");break}try{const I=await st.enqueue(K,()=>K.runAgent({forwardedProps:{__proxiedMCPRequest:{serverHash:R,serverId:W,method:"tools/call",params:L.params}}}));u(L.id,I.result||{})}catch(I){d(L.id,-32603,String(I))}break}default:d(L.id,-32601,`Method not found: ${L.method}`)}if(Zn(L))switch(L.method){case"ui/notifications/initialized":g&&(r.value=!0);break;case"ui/notifications/size-changed":{const{width:R,height:W}=L.params||{};g&&(l.value={width:typeof R=="number"?R:void 0,height:typeof W=="number"?W:void 0});break}}}},window.addEventListener("message",k);const te=h.text?h.text:h.blob?atob(h.blob):null;if(!te)throw new Error("Resource has no text or blob content");f("ui/notifications/sandbox-resource-ready",{html:te})}catch(T){g&&(s.value=T instanceof Error?T:new Error(String(T)))}})(),m(()=>{g=!1,x&&(window.removeEventListener("message",x),x=null),k&&window.removeEventListener("message",k),A&&(A.remove(),A=null),a.value=null})},{flush:"post"}),e.watch(l,C=>{a.value&&(C.width!==void 0&&(a.value.style.minWidth=`min(${C.width}px, 100%)`,a.value.style.width="100%"),C.height!==void 0&&(a.value.style.height=`${C.height}px`))},{deep:!0}),e.watch([r,()=>t.content.toolInput],([C,h])=>{C&&h&&f("ui/notifications/tool-input",{arguments:h})},{deep:!0}),e.watch([r,()=>t.content.result],([C,h])=>{C&&h&&f("ui/notifications/tool-result",h)},{deep:!0});const v=e.computed(()=>c.value?._meta?.ui?.prefersBorder!==!0?{}:{borderRadius:"8px",backgroundColor:"#f9f9f9",border:"1px solid #e0e0e0"});return e.onBeforeUnmount(()=>{const C=t.agent?.threadId||"default";st.cancel(C)}),()=>e.h("div",{ref:n,style:{width:"100%",height:l.value.height!==void 0?`${l.value.height}px`:"auto",minHeight:"100px",overflow:"hidden",position:"relative",...v.value}},[i.value?e.h("div",{style:{padding:"1rem",color:"#666"}},"Loading..."):null,s.value?e.h("div",{style:{color:"red",padding:"1rem"}},`Error: ${s.value.message}`):null])}}),eo="a2ui-surface",to=X.z.object({operations:X.z.array(X.z.record(X.z.string(),X.z.unknown()))});function yt(t){return t.surfaceId??t.beginRendering?.surfaceId??t.surfaceUpdate?.surfaceId??t.dataModelUpdate?.surfaceId??t.deleteSurface?.surfaceId??t.createSurface?.surfaceId??t.updateComponents?.surfaceId??t.updateDataModel?.surfaceId??"default"}class sn extends me.CopilotKitCore{_renderToolCalls=[];_hookRenderToolCalls=new Map;_cachedMergedRenderToolCalls=null;_renderCustomMessages=[];_renderActivityMessages=[];_interruptState=null;constructor(o){super(o),this._renderToolCalls=o.renderToolCalls??[],this._renderCustomMessages=o.renderCustomMessages??[],this._renderActivityMessages=o.renderActivityMessages??[]}get renderCustomMessages(){return this._renderCustomMessages}get renderActivityMessages(){return this._renderActivityMessages}setRenderActivityMessages(o){this._renderActivityMessages=[...o]}setRenderCustomMessages(o){this._renderCustomMessages=[...o],this.notifySubscribers(n=>{n.onRenderCustomMessagesChanged?.({copilotkit:this,renderCustomMessages:[...this.renderCustomMessages]})},"Subscriber onRenderCustomMessagesChanged error:")}get propRenderToolCalls(){return this._renderToolCalls}get renderToolCalls(){if(this._hookRenderToolCalls.size===0)return this._renderToolCalls;if(this._cachedMergedRenderToolCalls)return this._cachedMergedRenderToolCalls;const o=new Map;for(const n of this._renderToolCalls)o.set(`${n.agentId??""}:${n.name}`,n);for(const[n,a]of this._hookRenderToolCalls)o.set(n,a);return this._cachedMergedRenderToolCalls=Array.from(o.values()),this._cachedMergedRenderToolCalls}get interruptState(){return this._interruptState}setRenderToolCalls(o){this._renderToolCalls=[...o],this._cachedMergedRenderToolCalls=null,this._notifyRenderToolCallsChanged()}addHookRenderToolCall(o){const n=`${o.agentId??""}:${o.name}`;this._hookRenderToolCalls.set(n,o),this._cachedMergedRenderToolCalls=null,this._notifyRenderToolCallsChanged()}removeHookRenderToolCall(o,n){const a=`${n??""}:${o}`;this._hookRenderToolCalls.delete(a)&&(this._cachedMergedRenderToolCalls=null,this._notifyRenderToolCallsChanged())}_notifyRenderToolCallsChanged(){this.notifySubscribers(o=>{const n=o;n.onRenderToolCallsChanged&&n.onRenderToolCallsChanged({copilotkit:this,renderToolCalls:[...this.renderToolCalls]})},"Subscriber onRenderToolCallsChanged error:")}setInterruptState(o){this._interruptState=o,this.notifySubscribers(n=>{n.onInterruptStateChanged?.({copilotkit:this,interruptState:this._interruptState})},"Subscriber onInterruptStateChanged error:")}subscribe(o){return super.subscribe(o)}async waitForPendingFrameworkUpdates(){await e.nextTick()}}const Lt="a2ui_operations",no=e.defineComponent({name:"DefaultA2UILoading",setup(){const t=[.8,.6,.4];return()=>e.h("div",{class:"cpk:flex cpk:flex-col cpk:gap-3 cpk:rounded-xl cpk:border cpk:border-gray-100 cpk:bg-gray-50/50 cpk:p-5",style:{minHeight:"120px"},"data-testid":"a2ui-loading"},[e.h("div",{class:"cpk:flex cpk:items-center cpk:gap-2"},[e.h("div",{class:"cpk:h-3 cpk:w-3 cpk:rounded-full cpk:bg-gray-200",style:{animation:"cpk-a2ui-pulse 1.5s ease-in-out infinite"},"data-testid":"a2ui-loading-dot"}),e.h("span",{class:"cpk:text-xs cpk:font-medium cpk:text-gray-400"},"Generating UI...")]),e.h("div",{class:"cpk:flex cpk:flex-col cpk:gap-2"},t.map((o,n)=>e.h("div",{key:n,class:"cpk:h-3 cpk:rounded cpk:bg-gray-200/70",style:{width:`${o*100}%`,animation:`cpk-a2ui-pulse 1.5s ease-in-out ${n*.15}s infinite`},"data-testid":"a2ui-loading-bar"}))),e.h("style",{},`@keyframes cpk-a2ui-pulse {
33
+ 0%, 100% { opacity: 0.4; }
34
+ 50% { opacity: 1; }
35
+ }`)])}});function rn(t){return{activityType:"a2ui-surface",content:X.z.any(),render:e.defineComponent({name:"A2UIMessageRendererHost",props:{activityType:{type:String,required:!0},content:{type:Object,required:!0},message:{type:Object,required:!0},agent:{type:Object,required:!1,default:void 0}},setup(o){const n=e.computed(()=>Array.isArray(o.content?.[Lt])?o.content[Lt]:[]);return()=>n.value.length===0?t.loadingComponent?e.h(t.loadingComponent):e.h(no):e.h(wn,{activityType:"a2ui-surface",content:{operations:n.value},message:o.message,agent:o.agent,theme:t.theme,catalog:t.catalog})}})}}function ct(t){const o=t.name==="*"&&!t.args?X.z.any():t.args;return{name:t.name,args:o,render:t.render,...t.agentId?{agentId:t.agentId}:{}}}const kt="render_a2ui";function oo(t,o){e.watch([()=>t.value,o],([n,a],r,s)=>{if(!a)return;const i=ct({name:kt,args:X.z.any(),render:({status:c,args:p})=>{if(c==="complete")return null;const y=p,u=y?.items;if(Array.isArray(u)&&u.length>0)return null;const d=y?.components;return Array.isArray(d)&&d.length>2?null:ao(p)}}),l=n.propRenderToolCalls;n.setRenderToolCalls([...l.filter(c=>c.name!==kt),i]),s(()=>{const c=n.propRenderToolCalls;n.setRenderToolCalls(c.filter(p=>p.name!==kt)),wt.clear()})},{immediate:!0})}const wt=new Map;function ao(t){const o=t,n=typeof o?.name=="string"?o.name:"__default__";let a=wt.get(n);a||(a={lastTime:0,lastTokens:0},wt.set(n,a));const r=Date.now();let s=a.lastTokens;if(r-a.lastTime>200){const u=JSON.stringify(t??{}).length;s=Math.round(u/4),a.lastTime=r,a.lastTokens=s}const i=s<50?0:s<200?1:s<400?2:3,l=()=>e.h("div",{style:{width:"7px",height:"7px",borderRadius:"50%",backgroundColor:"#d4d4d8",flexShrink:0}}),c=()=>e.h("div",{style:{width:"12px"}}),p=(u,d,f,v,C,h)=>e.h("div",{style:{width:`${u}px`,height:`${d}px`,borderRadius:"9999px",backgroundColor:f,...v!==void 0?{animation:`cpk-a2ui-fade 2.4s ease-in-out ${v}s infinite`}:{},...C!==void 0?{opacity:C}:{},...h?{transition:h}:{}}}),y=(u,d,f)=>e.h("div",{style:{display:"flex",alignItems:"center",gap:"6px",opacity:u?1:0,transition:`opacity 0.4s ${d}s`}},f);return e.h("div",{style:{margin:"12px 0",maxWidth:"320px"}},[e.h("div",{style:{position:"relative",overflow:"hidden",borderRadius:"12px",border:"1px solid rgba(228,228,231,0.8)",backgroundColor:"#fff",boxShadow:"0 1px 2px rgba(0,0,0,0.04)",padding:"16px 18px 14px"}},[e.h("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"12px"}},[e.h("div",{style:{display:"flex",gap:"4px"}},[l(),l(),l()]),p(64,6,"#e4e4e7",void 0,i>=1?1:.4,"opacity 0.5s")]),e.h("div",{style:{display:"grid",gap:"7px"}},[y(i>=0,0,[p(36,7,"rgba(147,197,253,0.7)",0),p(80,7,"rgba(219,234,254,0.8)",.2)]),y(i>=0,.1,[c(),l(),p(100,7,"rgba(24,24,27,0.2)",.3)]),y(i>=1,.15,[c(),p(48,7,"rgba(24,24,27,0.15)",.1),p(40,7,"rgba(153,246,228,0.6)",.5),p(56,7,"rgba(147,197,253,0.6)",.3)]),y(i>=1,.2,[c(),l(),p(60,7,"rgba(24,24,27,0.15)",.4)]),y(i>=2,.25,[p(40,7,"rgba(153,246,228,0.5)",.2),l(),p(48,7,"rgba(24,24,27,0.15)",.6),p(64,7,"rgba(147,197,253,0.5)",.1)]),y(i>=2,.3,[p(36,7,"rgba(147,197,253,0.6)",.5),p(36,7,"rgba(24,24,27,0.12)",.7)]),y(i>=3,.35,[l(),p(44,7,"rgba(24,24,27,0.18)",.3),l(),p(56,7,"rgba(153,246,228,0.5)",.8),p(48,7,"rgba(147,197,253,0.5)",.4)])]),e.h("div",{style:{pointerEvents:"none",position:"absolute",inset:"0",background:"linear-gradient(105deg, transparent 0%, transparent 40%, rgba(255,255,255,0.6) 50%, transparent 60%, transparent 100%)",backgroundSize:"250% 100%",animation:"cpk-a2ui-sweep 3s ease-in-out infinite"}})]),e.h("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",marginTop:"8px"}},[e.h("span",{style:{fontSize:"12px",color:"#a1a1aa",letterSpacing:"0.025em"}},"Building interface"),...s>0?[e.h("span",{style:{fontSize:"11px",color:"#d4d4d8",fontVariantNumeric:"tabular-nums"}},`~${s.toLocaleString()} tokens`)]:[]]),e.h("style",`
36
+ @keyframes cpk-a2ui-fade {
37
+ 0%, 100% { opacity: 1; }
38
+ 50% { opacity: 0.5; }
39
+ }
40
+ @keyframes cpk-a2ui-sweep {
41
+ 0% { background-position: 250% 0; }
42
+ 100% { background-position: -250% 0; }
43
+ }
44
+ `)])}function ve(t,o,n){const a=e.defineComponent({name:`A2UI_${t.name}`,props:{context:{type:Object,required:!0},buildChild:{type:Function,required:!0}},setup(r){const s=e.ref({});let i=null;const l=n?n():void 0;function c(p){i&&i.dispose(),i=new ut.GenericBinder(p,t.schema),s.value=i.snapshot,i.subscribe(y=>{s.value=y})}return c(r.context),e.watch(()=>r.context,p=>{c(p)}),e.onUnmounted(()=>{i&&(i.dispose(),i=null)}),()=>o({props:s.value,buildChild:r.buildChild,context:r.context,state:l})}});return{name:t.name,schema:t.schema,render:a}}const Ne="8px",so="16px",Je="1px solid #ccc",dt="8px",ln=t=>{switch(t){case"center":return"center";case"end":return"flex-end";case"spaceAround":return"space-around";case"spaceBetween":return"space-between";case"spaceEvenly":return"space-evenly";case"start":return"flex-start";case"stretch":return"stretch";default:return"flex-start"}},Tt=t=>{switch(t){case"start":return"flex-start";case"center":return"center";case"end":return"flex-end";case"stretch":return"stretch";default:return"stretch"}},Ye=()=>({margin:Ne,boxSizing:"border-box"}),ro=()=>({margin:Ne,padding:so,border:Je,borderRadius:dt,boxSizing:"border-box"});function It(t,o){return Array.isArray(t)?t.map(n=>{if(n&&typeof n=="object"&&"id"in n){const a=n;return o(a.id,a.basePath)}return typeof n=="string"?o(n):null}).filter(n=>n!==null):[]}let io=0;function pt(){return`a2ui-vue-${++io}`}const lo=ve(fe.TextApi,({props:t})=>{const o=t.text??"",n={...Ye(),display:"inline-block"};switch(t.variant){case"h1":return e.h("h1",{style:n},o);case"h2":return e.h("h2",{style:n},o);case"h3":return e.h("h3",{style:n},o);case"h4":return e.h("h4",{style:n},o);case"h5":return e.h("h5",{style:n},o);case"caption":return e.h("small",{style:{...n,color:"#666",textAlign:"left"}},o);default:return e.h("span",{style:n},o)}}),co=ve(fe.ImageApi,({props:t})=>{const o=a=>a==="scaleDown"?"scale-down":a||"fill",n={...Ye(),objectFit:o(t.fit),width:"100%",height:"auto",display:"block"};return t.variant==="icon"?(n.width="24px",n.height="24px"):t.variant==="avatar"?(n.width="40px",n.height="40px",n.borderRadius="50%"):t.variant==="smallFeature"?n.maxWidth="100px":t.variant==="largeFeature"?n.maxHeight="400px":t.variant==="header"&&(n.height="200px",n.objectFit="cover"),e.h("img",{src:t.url,alt:t.description||"",style:n})}),uo=ve(fe.IconApi,({props:t})=>{const o=typeof t.name=="string"?t.name:t.name?.path,n={...Ye(),fontSize:"24px",width:"24px",height:"24px",display:"inline-flex",alignItems:"center",justifyContent:"center"};return e.h("span",{class:"material-symbols-outlined",style:n},o)}),po=ve(fe.VideoApi,({props:t})=>{const o={...Ye(),width:"100%",aspectRatio:"16/9"};return e.h("video",{src:t.url,controls:!0,style:o})}),mo=ve(fe.AudioPlayerApi,({props:t})=>{const o={...Ye(),width:"100%"};return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",width:"100%"}},[t.description?e.h("span",{style:{fontSize:"12px",color:"#666"}},t.description):null,e.h("audio",{src:t.url,controls:!0,style:o})])}),fo=ve(fe.RowApi,({props:t,buildChild:o})=>e.h("div",{style:{display:"flex",flexDirection:"row",justifyContent:ln(t.justify),alignItems:Tt(t.align),width:"100%",margin:"0",padding:"0"}},It(t.children,o))),go=ve(fe.ColumnApi,({props:t,buildChild:o})=>e.h("div",{style:{display:"flex",flexDirection:"column",justifyContent:ln(t.justify),alignItems:Tt(t.align),width:"100%",margin:"0",padding:"0"}},It(t.children,o))),ho=ve(fe.ListApi,({props:t,buildChild:o})=>{const n=t.direction==="horizontal",a={display:"flex",flexDirection:n?"row":"column",alignItems:Tt(t.align),overflowX:n?"auto":"hidden",overflowY:n?"hidden":"auto",width:"100%",margin:"0",padding:"0"};return e.h("div",{style:a},It(t.children,o))}),vo=ve(fe.CardApi,({props:t,buildChild:o})=>{const n={...ro(),backgroundColor:"#fff",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",width:"100%"};return e.h("div",{style:n},[t.child?o(t.child):null])}),ko=ve(fe.TabsApi,({props:t,buildChild:o,state:n})=>{const a=t.tabs||[];return e.h("div",{style:{display:"flex",flexDirection:"column",width:"100%",margin:Ne}},[e.h("div",{style:{display:"flex",borderBottom:"1px solid #ccc",marginBottom:"8px"}},a.map((r,s)=>{const i=typeof r.title=="string"?r.title:String(r.title??"");return e.h("button",{key:s,onClick:()=>{n.selectedIndex.value=s},style:{padding:"8px 16px",border:"none",background:"none",borderBottom:n.selectedIndex.value===s?"2px solid var(--a2ui-primary-color, #007bff)":"none",fontWeight:n.selectedIndex.value===s?"bold":"normal",cursor:"pointer",color:n.selectedIndex.value===s?"var(--a2ui-primary-color, #007bff)":"inherit"}},i)})),e.h("div",{style:{flex:"1"}},[a[n.selectedIndex.value]?.child?o(a[n.selectedIndex.value].child):null])])},()=>({selectedIndex:e.ref(0)})),bo=ve(fe.DividerApi,({props:t})=>{const o=t.axis==="vertical",n={margin:Ne,border:"none",backgroundColor:"#ccc"};return o?(n.width="1px",n.height="100%"):(n.width="100%",n.height="1px"),e.h("div",{style:n})}),yo=ve(fe.ModalApi,({props:t,buildChild:o,state:n})=>e.h("div",{},[e.h("div",{onClick:()=>{n.isOpen.value=!0},style:{display:"inline-block"}},[t.trigger?o(t.trigger):null]),n.isOpen.value?e.h("div",{style:{position:"fixed",top:"0",left:"0",right:"0",bottom:"0",backgroundColor:"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:"1000"},onClick:()=>{n.isOpen.value=!1}},[e.h("div",{style:{backgroundColor:"#fff",padding:"24px",borderRadius:"8px",maxWidth:"90%",maxHeight:"90%",overflow:"auto",display:"flex",flexDirection:"column"},onClick:a=>a.stopPropagation()},[e.h("div",{style:{display:"flex",justifyContent:"flex-end"}},[e.h("button",{onClick:()=>{n.isOpen.value=!1},style:{border:"none",background:"none",fontSize:"20px",cursor:"pointer",padding:"4px"}},"×")]),e.h("div",{style:{flex:"1"}},[t.content?o(t.content):null])])]):null]),()=>({isOpen:e.ref(!1)})),wo=ve(fe.ButtonApi,({props:t,buildChild:o})=>{const n={margin:Ne,padding:"8px 16px",cursor:"pointer",border:t.variant==="borderless"?"none":"1px solid #ccc",backgroundColor:t.variant==="primary"?"var(--a2ui-primary-color, #007bff)":t.variant==="borderless"?"transparent":"#fff",color:t.variant==="primary"?"#fff":"inherit",borderRadius:"4px",display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"};return e.h("button",{style:n,onClick:t.action,disabled:t.isValid===!1},[t.child?o(t.child):null])}),Co=ve(fe.TextFieldApi,({props:t,state:o})=>{const n=o.id,a=t.variant==="longText",r=t.variant==="number"?"number":t.variant==="obscured"?"password":"text",s={padding:"8px",width:"100%",border:t.validationErrors&&t.validationErrors.length>0?"1px solid red":Je,borderRadius:dt,boxSizing:"border-box"},i=t.validationErrors&&t.validationErrors.length>0;return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",width:"100%",margin:Ne}},[t.label?e.h("label",{for:n,style:{fontSize:"14px",fontWeight:"bold"}},t.label):null,a?e.h("textarea",{id:n,style:s,value:t.value||"",onInput:l=>t.setValue(l.target.value)}):e.h("input",{id:n,type:r,style:s,value:t.value||"",onInput:l=>t.setValue(l.target.value)}),i?e.h("span",{style:{fontSize:"12px",color:"red"}},t.validationErrors[0]):null])},()=>({id:pt()})),xo=ve(fe.CheckBoxApi,({props:t,state:o})=>{const n=o.id,a=t.validationErrors&&t.validationErrors.length>0;return e.h("div",{style:{display:"flex",flexDirection:"column",margin:Ne}},[e.h("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},[e.h("input",{id:n,type:"checkbox",checked:!!t.value,onChange:r=>t.setValue(r.target.checked),style:{cursor:"pointer",outline:a?"1px solid red":"none"}}),t.label?e.h("label",{for:n,style:{cursor:"pointer",color:a?"red":"inherit"}},t.label):null]),a?e.h("span",{style:{fontSize:"12px",color:"red",marginTop:"4px"}},t.validationErrors?.[0]):null])},()=>({id:pt()})),So=ve(fe.ChoicePickerApi,({props:t,context:o,state:n})=>{const a=Array.isArray(t.value)?t.value:[],r=t.variant==="mutuallyExclusive",s=l=>{if(r)t.setValue([l]);else{const c=a.includes(l)?a.filter(p=>p!==l):[...a,l];t.setValue(c)}},i=(t.options||[]).filter(l=>!t.filterable||n.filter.value===""||String(typeof l.label=="string"?l.label:"").toLowerCase().includes(n.filter.value.toLowerCase()));return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"8px",margin:Ne,width:"100%"}},[t.label?e.h("strong",{style:{fontSize:"14px"}},t.label):null,t.filterable?e.h("input",{type:"text",placeholder:"Filter options...",value:n.filter.value,onInput:l=>{n.filter.value=l.target.value},style:{padding:"4px 8px",border:Je,borderRadius:dt}}):null,e.h("div",{style:{display:"flex",flexDirection:t.displayStyle==="chips"?"row":"column",flexWrap:t.displayStyle==="chips"?"wrap":"nowrap",gap:"8px"}},i.map((l,c)=>{const p=a.includes(l.value),y=typeof l.label=="string"?l.label:String(l.label??l.value);return t.displayStyle==="chips"?e.h("button",{key:c,onClick:()=>s(l.value),style:{padding:"4px 12px",borderRadius:"16px",border:p?"1px solid var(--a2ui-primary-color, #007bff)":Je,backgroundColor:p?"var(--a2ui-primary-color, #007bff)":"#fff",color:p?"#fff":"inherit",cursor:"pointer",fontSize:"12px"}},y):e.h("label",{key:c,style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer"}},[e.h("input",{type:r?"radio":"checkbox",checked:p,onChange:()=>s(l.value),name:r?`choice-${o.componentModel.id}`:void 0}),e.h("span",{style:{fontSize:"14px"}},y)])}))])},()=>({filter:e.ref("")})),To=ve(fe.SliderApi,({props:t,state:o})=>{const n=o.id;return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",margin:Ne,width:"100%"}},[e.h("div",{style:{display:"flex",justifyContent:"space-between"}},[t.label?e.h("label",{for:n,style:{fontSize:"14px",fontWeight:"bold"}},t.label):null,e.h("span",{style:{fontSize:"12px",color:"#666"}},String(t.value))]),e.h("input",{id:n,type:"range",min:t.min??0,max:t.max,value:t.value??0,onInput:a=>t.setValue(Number(a.target.value)),style:{width:"100%",cursor:"pointer"}})])},()=>({id:pt()})),Io=ve(fe.DateTimeInputApi,({props:t,state:o})=>{const n=o.id;let a="datetime-local";t.enableDate&&!t.enableTime&&(a="date"),!t.enableDate&&t.enableTime&&(a="time");const r={padding:"8px",width:"100%",border:Je,borderRadius:dt,boxSizing:"border-box"};return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",width:"100%",margin:Ne}},[t.label?e.h("label",{for:n,style:{fontSize:"14px",fontWeight:"bold"}},t.label):null,e.h("input",{id:n,type:a,style:r,value:t.value||"",onInput:s=>t.setValue(s.target.value),min:typeof t.min=="string"?t.min:void 0,max:typeof t.max=="string"?t.max:void 0})])},()=>({id:pt()})),Ro=[lo,co,uo,po,mo,fo,go,ho,vo,ko,bo,yo,wo,Co,xo,So,To,Io],Ke=new ut.Catalog("https://a2ui.org/specification/v0_9/basic_catalog.json",Ro,fe.BASIC_FUNCTIONS),Ao="A2UI Component Schema — available components for generating UI surfaces. Use these component names and properties when creating A2UI operations.";function Eo(t){const o=t??Ke,n="https://a2ui.org/specification/v0_9/basic_catalog.json",a=[];if(a.push("Available A2UI catalog:"),o.id===n)return a.push(`- ${o.id} (basic catalog)`),a.join(`
45
+ `);let r=!0;for(const i of Ke.components.keys())if(!o.components.has(i)){r=!1;break}const s=[];for(const i of o.components.keys())Ke.components.has(i)||s.push(i);a.push(`- ${o.id}`),r?a.push(" Extends the basic catalog with all standard components plus:"):(a.push(" Custom catalog (does NOT include all basic components)."),a.push(" Custom components:"));for(const i of s){const l=o.components.get(i);if(!l)continue;const c=St.zodToJsonSchema(l.schema);a.push(` - ${i}:`),a.push(` ${JSON.stringify(c,null,2).split(`
46
+ `).join(`
47
+ `)}`)}return a.join(`
48
+ `)}function $o(t){const o=t??Ke,n={};for(const[a,r]of o.components){const s=St.zodToJsonSchema(r.schema,{target:"jsonSchema2019-09"});n[a]={allOf:[{$ref:"common_types.json#/$defs/ComponentCommon"},{properties:{component:{const:a},...s.properties??{}},required:["component",...s.required??[]]}]}}return{catalogId:o.id,components:n}}function Mo(t,o){const n=e.computed(()=>Eo(o.catalog()));e.watch([()=>t.value,o.enabled,n],([r,s,i],l,c)=>{if(!s)return;const p=r.addContext({description:"A2UI catalog capabilities: available catalog IDs and custom component definitions the client can render.",value:i});c(()=>r.removeContext(p))},{immediate:!0});const a=e.computed(()=>o.includeSchema()?JSON.stringify($o(o.catalog())):null);e.watch([()=>t.value,o.enabled,a],([r,s,i],l,c)=>{if(!s||!i)return;const p=[];p.push(r.addContext({description:Ao,value:i})),p.push(r.addContext({description:"A2UI generation guidelines — protocol rules, tool arguments, path rules, data model format, and form/two-way-binding instructions.",value:z.A2UI_DEFAULT_GENERATION_GUIDELINES})),p.push(r.addContext({description:"A2UI design guidelines — visual design rules, component hierarchy tips, and action handler patterns.",value:z.A2UI_DEFAULT_DESIGN_GUIDELINES})),c(()=>{for(const y of p)r.removeContext(y)})},{immediate:!0})}function cn(t){const o=t.match(/<style\b[^>]*>[\s\S]*?<\/style>/gi);return o?o.join(""):""}function un(t){let o=t;o=o.replace(/<[^>]*$/,""),o=o.replace(/<(style|script|head)\b[^>]*>[\s\S]*?<\/\1>/gi,""),o=o.replace(/<(style|script|head)\b[^>]*>[\s\S]*$/gi,""),o=o.replace(/&[a-zA-Z0-9#]*$/,"");const n=o.match(/<body[^>]*>([\s\S]*)/i);return n&&(o=n[1],o=o.replace(/<\/body>[\s\S]*/i,"")),o}function dn(){const t=e.inject(tn,e.computed(()=>[]));return e.computed(()=>t.value)}const pn="open-generative-ui",mn=X.z.object({initialHeight:X.z.number().optional(),generating:X.z.boolean().optional(),css:X.z.string().optional(),cssComplete:X.z.boolean().optional(),html:X.z.array(X.z.string()).optional(),htmlComplete:X.z.boolean().optional(),jsFunctions:X.z.string().optional(),jsFunctionsComplete:X.z.boolean().optional(),jsExpressions:X.z.array(X.z.string()).optional(),jsExpressionsComplete:X.z.boolean().optional()}),fn=X.z.object({initialHeight:X.z.number().optional(),placeholderMessages:X.z.array(X.z.string()).optional(),css:X.z.string().optional(),html:X.z.string().optional(),jsFunctions:X.z.string().optional(),jsExpressions:X.z.array(X.z.string()).optional()});function Bo(t,o){return!!(o.cssComplete&&(!t||!t.cssComplete)||o.htmlComplete||o.generating===!1||o.jsFunctions&&(!t||!t.jsFunctions)||(o.jsExpressions?.length??0)>(t?.jsExpressions?.length??0)||o.html?.length&&(!t||!t.html?.length))}function Vo(t){return/<head[\s>]/i.test(t)?t:`<head></head>${t}`}function Fo(t,o){const n=t.indexOf("</head>");return n!==-1?t.slice(0,n)+`<style>${o}</style>`+t.slice(n):`<head><style>${o}</style></head>${t}`}async function Pt(){const t=await import("@jetbrains/websandbox");return t.default?.default??t.default}const gn=e.defineComponent({name:"OpenGenerativeUIRenderer",props:{content:{type:Object,required:!0}},setup(t){const o=dn(),n=e.ref(null),a=e.ref(t.content),r=e.ref(t.content),s=e.ref(null),i=e.ref(null),l=e.ref(null),c=e.ref(!1),p=e.ref(!1),y=e.ref(0),u=e.ref(!1),d=e.ref([]),f=e.computed(()=>{const T={};for(const F of o.value)T[F.name]=F.handler;return T});e.watch(()=>t.content,T=>{if(r.value=T,Bo(a.value,T)){s.value!==null&&(window.clearTimeout(s.value),s.value=null),a.value=T;return}s.value===null&&(s.value=window.setTimeout(()=>{a.value=r.value,s.value=null},1e3))},{immediate:!0}),e.onBeforeUnmount(()=>{s.value!==null&&window.clearTimeout(s.value)});const v=e.computed(()=>{if(!a.value.htmlComplete&&a.value.html?.length)return a.value.html.join("")}),C=e.computed(()=>v.value?un(v.value):void 0),h=e.computed(()=>v.value?cn(v.value):""),w=e.computed(()=>a.value.htmlComplete&&a.value.html?.length?a.value.html.join(""):void 0),m=e.computed(()=>a.value.cssComplete?a.value.css:void 0),b=e.computed(()=>!!a.value.cssComplete&&!!C.value&&C.value.trim().length>0),g=e.computed(()=>!!w.value||b.value),k=e.computed(()=>`${a.value.initialHeight??200}px`),x=()=>{l.value&&(l.value.destroy(),l.value=null),p.value=!1},A=()=>{i.value&&(i.value.destroy(),i.value=null),c.value=!1,d.value=[],y.value=0,u.value=!1};e.watch([b,w,m,C,h,()=>n.value],async([T,F],U,te)=>{if(!T||F||!n.value||l.value)return;let H=!1;try{const L=await Pt();if(H||!n.value)return;const R=L.create({},{frameContainer:n.value,frameContent:"<head></head><body></body>",allowAdditionalAttributes:""});l.value=R,R.iframe.setAttribute("data-testid","open-generative-ui-preview-sandbox"),R.iframe.style.width="100%",R.iframe.style.height="100%",R.iframe.style.border="none",R.iframe.style.backgroundColor="transparent",R.promise.then(()=>{H||!l.value||(p.value=!0,R.run("var s=document.createElement('style');s.textContent='html, body { overflow: hidden !important; }';document.head.appendChild(s);"))})}catch(L){console.error("[OpenGenerativeUI] Failed to load sandbox module:",L)}te(()=>{H=!0})},{immediate:!0}),e.watch([C,h,m,p],([T,F,U,te])=>{if(!l.value||!te)return;const H=[];U&&H.push(`<style>${U}</style>`),F&&H.push(F),H.length&&l.value.run(`document.head.innerHTML = ${JSON.stringify(H.join(""))}`),T&&l.value.run(`document.body.innerHTML = ${JSON.stringify(T)}`)},{immediate:!0}),e.watch([w,m,f,()=>n.value],async([T,F,U],te,H)=>{if(A(),!T||!n.value)return;x();let L=!1;try{const R=await Pt();if(L||!n.value)return;const W=Vo(T),K=F?Fo(W,F):W,I=R.create(U,{frameContainer:n.value,frameContent:K,allowAdditionalAttributes:""});i.value=I,I.iframe.setAttribute("data-testid","open-generative-ui-final-sandbox"),I.iframe.style.width="100%",I.iframe.style.height="100%",I.iframe.style.border="none",I.iframe.style.backgroundColor="transparent",I.promise.then(()=>{if(L||!i.value)return;c.value=!0,I.run("var s=document.createElement('style');s.textContent='html, body { overflow: hidden !important; }';document.head.appendChild(s);");const $=a.value.jsFunctions;$&&!u.value&&(u.value=!0,d.value.unshift($));const O=a.value.jsExpressions;if(O?.length){const se=y.value;se<O.length&&(d.value.push(...O.slice(se)),y.value=O.length)}const q=[...d.value];d.value=[];for(const se of q)I.run(se)})}catch(R){console.error("[OpenGenerativeUI] Failed to load sandbox module:",R)}H(()=>{L=!0})},{immediate:!0}),e.watch(()=>a.value.jsFunctions,T=>{!T||u.value||(u.value=!0,c.value&&i.value?i.value.run(T):d.value.push(T))}),e.watch(()=>a.value.jsExpressions,T=>{if(!T?.length)return;const F=y.value;if(F>=T.length)return;const U=T.slice(F);if(y.value=T.length,c.value&&i.value)for(const te of U)i.value.run(te);else d.value.push(...U)},{deep:!0});const E=e.computed(()=>a.value.generating!==!1);return e.watch([b,w],([T,F])=>{F&&x(),T||x()},{immediate:!0}),e.onBeforeUnmount(()=>{s.value!==null&&window.clearTimeout(s.value),x(),A()}),()=>e.h("div",{ref:n,"data-testid":"open-generative-ui-renderer",style:{position:"relative",width:"100%",height:k.value,borderRadius:"8px",backgroundColor:g.value?"transparent":"#f5f5f5",border:g.value?"none":"1px solid #e0e0e0",overflow:"hidden",display:g.value?"block":"flex",alignItems:g.value?void 0:"center",justifyContent:g.value?void 0:"center"}},[g.value?null:e.h("div",{"data-testid":"open-generative-ui-placeholder"},[e.h("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",style:{animation:"ck-spin 1s linear infinite"}},[e.h("circle",{cx:"12",cy:"12",r:"10",stroke:"#e0e0e0","stroke-width":"3"}),e.h("path",{d:"M12 2a10 10 0 0 1 10 10",stroke:"#999","stroke-width":"3","stroke-linecap":"round"})]),e.h("style","@keyframes ck-spin { to { transform: rotate(360deg) } }")]),E.value?e.h("div",{"data-testid":"open-generative-ui-progress-overlay",style:{position:"absolute",inset:0,backgroundColor:"rgba(255,255,255,0.45)"}}):null])}}),hn=e.defineComponent({name:"OpenGenerativeUIActivityRenderer",props:{activityType:{type:String,required:!0},content:{type:Object,required:!0},message:{type:Object,required:!0},agent:{type:Object,required:!1,default:void 0}},setup(t){return()=>e.h(gn,{content:t.content})}}),vn=e.defineComponent({name:"OpenGenerativeUIToolRenderer",props:{name:{type:String,required:!0},args:{type:Object,required:!0},status:{type:String,required:!0},result:{type:String,required:!1}},setup(t){const o=e.ref(0);return e.watch(()=>t.args.placeholderMessages,(n,a,r)=>{if(!n?.length||t.status===me.ToolCallStatus.Complete)return;o.value=Math.max(n.length-1,0);const s=window.setInterval(()=>{o.value=(o.value+1)%Math.max(n.length,1)},5e3);r(()=>window.clearInterval(s))},{immediate:!0}),()=>{if(t.status===me.ToolCallStatus.Complete)return null;const n=t.args.placeholderMessages;if(!n?.length)return null;const a=n[o.value]??n[0];return e.h("div",{style:{padding:"8px 12px",color:"#999",fontSize:"14px"},"data-testid":"open-generative-ui-tool-placeholder"},a)}}}),Rt=Symbol("LicenseContext");function kn(){return e.ref(z.createLicenseContextValue(null))}const No={style:{display:"flex",gap:"8px",alignItems:"center"}},Oo=["href"],Do=52,zt="--copilotkit-license-banner-offset",rt=e.defineComponent({__name:"LicenseWarningBanner",props:{type:{},featureName:{default:void 0},expiryDate:{default:void 0},graceRemaining:{default:void 0}},emits:["dismiss"],setup(t,{emit:o}){const n=t,a=o,r=e.computed(()=>{switch(n.type){case"no_license":return{severity:"info",message:"Powered by CopilotKit",actionLabel:"Get a license",actionUrl:"https://copilotkit.ai/pricing"};case"feature_unlicensed":return{severity:"warning",message:`⚠ The "${n.featureName??""}" feature requires a CopilotKit license.`,actionLabel:"Get a license",actionUrl:"https://copilotkit.ai/pricing"};case"expiring":{const u=n.graceRemaining;return{severity:"warning",message:`Your CopilotKit license expires in ${u} ${u===1?"day":"days"}. Please renew.`,actionLabel:"Renew",actionUrl:"https://cloud.copilotkit.ai"}}case"expired":return{severity:"critical",message:`Your CopilotKit license expired${n.expiryDate?` on ${n.expiryDate}`:""}. Please renew at copilotkit.ai/pricing`,actionLabel:"Renew now",actionUrl:"https://copilotkit.ai/pricing"};case"invalid":return{severity:"critical",message:"Invalid CopilotKit license token. Please check your configuration.",actionLabel:"Get a license",actionUrl:"https://copilotkit.ai/pricing"};default:return null}}),s={position:"fixed",bottom:"8px",left:"50%",transform:"translateX(-50%)",zIndex:99999,display:"inline-flex",alignItems:"center",gap:"12px",whiteSpace:"nowrap",padding:"8px 16px",fontSize:"13px",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif",borderRadius:"6px",boxShadow:"0 2px 8px rgba(0, 0, 0, 0.15)"},i=e.computed(()=>{switch(r.value?.severity){case"warning":return{backgroundColor:"#fffbeb",border:"1px solid #fbbf24",color:"#92400e"};case"critical":return{backgroundColor:"#fef2f2",border:"1px solid #fca5a5",color:"#991b1b"};default:return{backgroundColor:"#eff6ff",border:"1px solid #93c5fd",color:"#1e40af"}}}),l=e.computed(()=>({...s,...i.value})),c=e.getCurrentInstance(),p=e.computed(()=>typeof(c?.vnode.props??{}).onDismiss=="function");function y(){a("dismiss")}return e.onMounted(()=>{typeof document>"u"||document.documentElement.style.setProperty(zt,`${Do}px`)}),e.onBeforeUnmount(()=>{typeof document>"u"||document.documentElement.style.removeProperty(zt)}),(u,d)=>r.value?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle(l.value),"data-testid":"copilot-license-banner"},[e.createElementVNode("span",null,e.toDisplayString(r.value.message),1),e.createElementVNode("div",No,[e.createElementVNode("a",{href:r.value.actionUrl,target:"_blank",rel:"noopener noreferrer",style:{fontWeight:600,textDecoration:"underline",color:"inherit"}},e.toDisplayString(r.value.actionLabel),9,Oo),p.value?(e.openBlock(),e.createElementBlock("button",{key:0,style:{background:"none",border:"none",cursor:"pointer",color:"inherit",fontSize:"16px"},onClick:y}," × ")):e.createCommentVNode("",!0)])],4)):e.createCommentVNode("",!0)}}),Ut="X-CopilotCloud-Public-Api-Key",Lo="https://api.cloud.copilotkit.ai/copilotkit/v1",Po="frontendTools must be a stable array. If you want to dynamically add or remove tools, use `useFrontendTool` instead.",zo="humanInTheLoop must be a stable array. If you want to dynamically add or remove human-in-the-loop tools, use `useHumanInTheLoop` instead.",Uo="renderCustomMessages must be a stable array.",jo="renderActivityMessages must be a stable array.",_o="openGenerativeUI.sandboxFunctions must be a stable array.",Ho=`When generating UI with generateSandboxedUi, follow these design principles inspired by shadcn/ui:
49
+
50
+ - Use a minimal, flat aesthetic. Avoid drop shadows and gradients — rely on subtle borders (1px solid, light gray like #e5e7eb) to define surfaces.
51
+ - Neutral base palette: white backgrounds, zinc/slate gray text (#09090b for headings, #71717a for secondary text). One accent color for interactive elements.
52
+ - Use system font stacks (system-ui, -apple-system, sans-serif) at readable sizes (14px body, 600 weight for headings). Tight line-heights.
53
+ - Small, consistent border-radius (6–8px). Cards and containers use border, not shadow, for separation.
54
+ - Buttons: solid fill for primary (dark bg, white text), outline for secondary (border + transparent bg). Subtle hover state (slight opacity or background shift).
55
+ - Use CSS Grid or Flexbox for layout. Ensure the UI looks good at any width.
56
+ - Minimal transitions (150ms) for hover/focus states only. No decorative animations.
57
+ - Keep the UI focused and dense — avoid excessive padding. Use compact spacing (8–12px gaps, 10–14px padding in controls).`,Wo=`Generate sandboxed UI. IMPORTANT: The generated code runs in a sandboxed iframe WITHOUT same-origin access. Do NOT use localStorage, sessionStorage, document.cookie, IndexedDB, or fetch/XMLHttpRequest to same-origin URLs. To communicate with the host application, use Websandbox.connection.remote.<functionName>(args) which returns a Promise.
58
+
59
+ You CAN use external libraries from CDNs by including <script> or <link> tags in the HTML <head> (e.g., Chart.js, D3, Three.js, x-data-spreadsheet, etc.). CDN resources load normally inside the sandbox.
60
+
61
+ PARAMETER ORDER IS CRITICAL — generate parameters in exactly this order:
62
+ 1. initialHeight + placeholderMessages (shown to user while generating)
63
+ 2. css (all styles FIRST — the user sees a placeholder until CSS is complete)
64
+ 3. html (streams in live — the user watches the UI build as HTML is generated)
65
+ 4. jsFunctions (reusable helper functions)
66
+ 5. jsExpressions (applied one-by-one — the user sees each expression take effect)`,qo=e.defineComponent({__name:"CopilotKitProvider",props:{runtimeUrl:{},headers:{type:[Object,Function],default:()=>({})},credentials:{},defaultThrottleMs:{},publicApiKey:{},publicLicenseKey:{},licenseToken:{},properties:{default:()=>({})},useSingleEndpoint:{type:Boolean,default:void 0},agents__unsafe_dev_only:{default:()=>({})},selfManagedAgents:{default:()=>({})},renderToolCalls:{},renderActivityMessages:{default:()=>[]},renderCustomMessages:{default:()=>[]},frontendTools:{default:()=>[]},humanInTheLoop:{default:()=>[]},openGenerativeUI:{default:void 0},showDevConsole:{type:[Boolean,String],default:!1},onError:{},a2ui:{default:void 0},inspectorDefaultAnchor:{},debug:{type:[Boolean,Object]}},setup(t){const o={},n=t,a=e.ref(!1),r=()=>{if(n.showDevConsole===!0){a.value=!0;return}if(n.showDevConsole==="auto"){if(typeof window>"u"){a.value=!1;return}const M=new Set(["localhost","127.0.0.1"]);a.value=M.has(window.location.hostname);return}a.value=!1};e.watch(()=>n.showDevConsole,r,{immediate:!0});const s=n.frontendTools,i=n.humanInTheLoop,l=n.renderCustomMessages,c=n.renderActivityMessages,p=n.openGenerativeUI?.sandboxFunctions;e.watch(()=>n.frontendTools,M=>{M!==s&&console.error(Po)}),e.watch(()=>n.humanInTheLoop,M=>{M!==i&&console.error(zo)}),e.watch(()=>n.renderCustomMessages,M=>{M!==l&&console.error(Uo)}),e.watch(()=>n.renderActivityMessages,M=>{M!==c&&console.error(jo)}),e.watch(()=>n.openGenerativeUI?.sandboxFunctions,M=>{M!==p&&console.error(_o)});const y=e.computed(()=>n.publicApiKey??n.publicLicenseKey),u=e.computed(()=>({...n.agents__unsafe_dev_only,...n.selfManagedAgents})),d=e.computed(()=>Object.keys(u.value).length>0),f=e.computed(()=>typeof n.headers=="function"?n.headers():n.headers),v=e.computed(()=>{const M=f.value;return!y.value||M[Ut]?M:{...M,[Ut]:y.value}}),C=e.computed(()=>n.runtimeUrl??(y.value?Lo:void 0));e.watch([C,y,d],([M,Q,Z])=>{if(M||Q||Z)return;const pe="Missing required prop: 'runtimeUrl' or 'publicApiKey' or 'publicLicenseKey'";if(process.env.NODE_ENV==="production")throw new Error(pe);console.warn(pe)},{immediate:!0});const h=e.computed(()=>{const M=[],Q=[];for(const Z of n.humanInTheLoop)M.push({name:Z.name,description:Z.description,parameters:Z.parameters,followUp:Z.followUp,...Z.agentId&&{agentId:Z.agentId},handler:async()=>{console.warn(`Human-in-the-loop tool '${Z.name}' called but no interactive handler is set up.`)}}),Z.render&&Q.push({name:Z.name,args:Z.parameters??X.z.any(),render:Z.render,...Z.agentId&&{agentId:Z.agentId}});return{tools:M,renderToolCalls:Q}}),w=e.computed(()=>{const M=[];for(const Q of n.frontendTools)M.push(Q);for(const Q of F.value)M.push(Q);return M.push(...h.value.tools),M}),m=e.computed(()=>{const M=[...n.renderToolCalls??[]];for(const Q of[...n.frontendTools,...F.value])if(Q.render){const Z=Q.parameters??(Q.name==="*"?X.z.any():void 0);Z&&M.push({name:Q.name,args:Z,render:Q.render})}return M.push(...h.value.renderToolCalls),M}),b=e.computed(()=>n.renderCustomMessages??[]),g=e.ref(!1),k=e.ref(!1),x=e.ref(void 0),A=e.computed(()=>k.value||!!n.openGenerativeUI),E=e.computed(()=>n.openGenerativeUI?.sandboxFunctions??[]),T=(M,Q)=>St.zodToJsonSchema(M,Q),F=e.computed(()=>A.value?[{name:"generateSandboxedUi",description:Wo,parameters:fn,handler:async()=>"UI generated",followUp:!0,render:vn}]:[]),U=e.computed(()=>{const M=[{activityType:nn,content:on,render:an}];return A.value&&M.push({activityType:pn,content:mn,render:hn}),g.value&&M.unshift(rn({theme:n.a2ui?.theme??o,catalog:n.a2ui?.catalog,loadingComponent:n.a2ui?.loadingComponent})),M}),te=e.computed(()=>[...n.renderActivityMessages??[],...U.value]),H=M=>{n.defaultThrottleMs!==void 0&&(!Number.isFinite(n.defaultThrottleMs)||n.defaultThrottleMs<0)&&console.error(`CopilotKitProvider: defaultThrottleMs must be a non-negative finite number, got ${n.defaultThrottleMs}. useAgent hooks without an explicit throttleMs will fall back to unthrottled.`),M.setDefaultThrottleMs(n.defaultThrottleMs)},L=()=>{const M=new sn({runtimeUrl:C.value,runtimeTransport:n.useSingleEndpoint===!0?"single":n.useSingleEndpoint===!1?"rest":"auto",headers:v.value,credentials:n.credentials,properties:n.properties,agents__unsafe_dev_only:u.value,tools:w.value,renderToolCalls:m.value,renderActivityMessages:te.value,renderCustomMessages:b.value,debug:n.debug});return H(M),M},R=e.shallowRef(L()),W=e.ref(!1),K=e.ref(new Set);e.watch(R,(M,Q,Z)=>{const pe=M.subscribe({onToolExecutionStart:({toolCallId:ce})=>{K.value=new Set(K.value).add(ce)},onToolExecutionEnd:({toolCallId:ce})=>{setTimeout(()=>{const re=new Set(K.value);re.delete(ce),K.value=re,e.triggerRef(R)},0)}}),be=M.subscribe({onRenderToolCallsChanged:()=>{e.triggerRef(R)}}),de=M.subscribe({onRenderCustomMessagesChanged:()=>{e.triggerRef(R)}}),Ie=M.subscribe({onRuntimeConnectionStatusChanged:()=>{g.value=M.a2uiEnabled,k.value=M.openGenerativeUIEnabled,x.value=M.licenseStatus,e.triggerRef(R)}}),Ce=M.subscribe({onError:ce=>{n.onError?.({error:ce.error,code:ce.code,context:ce.context})}});Z(()=>{pe.unsubscribe(),be.unsubscribe(),de.unsubscribe(),Ie.unsubscribe(),Ce.unsubscribe()})},{immediate:!0}),e.watch([w],([M])=>{W.value&&R.value.setTools(M)}),e.watch([m],([M])=>{W.value&&R.value.setRenderToolCalls(M)}),e.watch([b],([M])=>{W.value&&(R.value.setRenderCustomMessages(M),e.triggerRef(R))}),e.watch([te],([M])=>{W.value&&(R.value.setRenderActivityMessages(M),e.triggerRef(R))});function I(){R.value.setRuntimeUrl(C.value),R.value.setRuntimeTransport(n.useSingleEndpoint===!0?"single":n.useSingleEndpoint===!1?"rest":"auto"),R.value.setHeaders(v.value),R.value.setCredentials(n.credentials),R.value.setProperties(n.properties),R.value.setAgents__unsafe_dev_only(u.value),R.value.setDebug(n.debug),H(R.value)}e.watch([()=>C.value,()=>v.value,()=>n.credentials,()=>n.properties,()=>u.value,()=>n.useSingleEndpoint,()=>n.debug],()=>{W.value&&I()}),e.watch(()=>n.defaultThrottleMs,()=>{W.value&&(H(R.value),e.triggerRef(R))}),e.onMounted(()=>{I(),g.value=R.value.a2uiEnabled,k.value=R.value.openGenerativeUIEnabled,x.value=R.value.licenseStatus,W.value=!0});const $=e.computed(()=>n.a2ui?.theme),O=e.computed(()=>n.a2ui?.catalog),q=e.computed(()=>n.a2ui?.loadingComponent),se=e.computed(()=>n.a2ui?.includeSchema??!0);oo(R,()=>g.value),Mo(R,{enabled:()=>g.value,catalog:()=>n.a2ui?.catalog,includeSchema:()=>n.a2ui?.includeSchema??!0});const V=e.ref([]);e.watch([A,E,()=>n.openGenerativeUI?.designSkill],([M,Q,Z],pe,be)=>{if(!M)return;const de=[];if(de.push(R.value.addContext({description:"Design guidelines for the generateSandboxedUi tool. Follow these when building UI.",value:Z??Ho})),Q.length>0){const Ie=JSON.stringify(Q.map(Ce=>({name:Ce.name,description:Ce.description,parameters:z.schemaToJsonSchema(Ce.parameters,{zodToJsonSchema:T})})));de.push(R.value.addContext({description:"Sandbox functions available in generated sandboxed UI code. Call via Websandbox.connection.remote.<functionName>(args).",value:Ie}))}V.value=de,be(()=>{for(const Ie of de)R.value.removeContext(Ie)})},{immediate:!0}),e.provide(en,{copilotkit:R,executingToolCallIds:K,a2uiTheme:$,a2uiCatalog:O,a2uiLoadingComponent:q,a2uiIncludeSchema:se}),e.provide(tn,E);const P=e.computed(()=>z.createLicenseContextValue(null));e.provide(Rt,P);const j=e.computed(()=>x.value==="none"&&!y.value),_=e.computed(()=>x.value==="expired"),ae=e.computed(()=>x.value==="invalid"),le=e.computed(()=>x.value==="expiring");return(M,Q)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.renderSlot(M.$slots,"default"),a.value?(e.openBlock(),e.createBlock(Zt,{key:0,core:R.value,"default-anchor":n.inspectorDefaultAnchor},null,8,["core","default-anchor"])):e.createCommentVNode("",!0),j.value?(e.openBlock(),e.createBlock(rt,{key:1,type:"no_license"})):e.createCommentVNode("",!0),_.value?(e.openBlock(),e.createBlock(rt,{key:2,type:"expired"})):e.createCommentVNode("",!0),ae.value?(e.openBlock(),e.createBlock(rt,{key:3,type:"invalid"})):e.createCommentVNode("",!0),le.value?(e.openBlock(),e.createBlock(rt,{key:4,type:"expiring"})):e.createCommentVNode("",!0)],64))}}),Ee={chatInputPlaceholder:"Type a message...",chatInputToolbarStartTranscribeButtonLabel:"Transcribe",chatInputToolbarCancelTranscribeButtonLabel:"Cancel",chatInputToolbarFinishTranscribeButtonLabel:"Finish",chatInputToolbarAddButtonLabel:"Add photos or files",chatInputToolbarToolsButtonLabel:"Tools",assistantMessageToolbarCopyCodeLabel:"Copy",assistantMessageToolbarCopyCodeCopiedLabel:"Copied",assistantMessageToolbarCopyMessageLabel:"Copy",assistantMessageToolbarThumbsUpLabel:"Good response",assistantMessageToolbarThumbsDownLabel:"Bad response",assistantMessageToolbarReadAloudLabel:"Read aloud",assistantMessageToolbarRegenerateLabel:"Regenerate",userMessageToolbarCopyMessageLabel:"Copy",userMessageToolbarEditMessageLabel:"Edit",chatDisclaimerText:"AI can make mistakes. Please verify important information.",chatToggleOpenLabel:"Open chat",chatToggleCloseLabel:"Close chat",modalHeaderTitle:"CopilotKit Chat",welcomeMessageText:"How can I help you today?"};function Go(t,o){const n=Object.keys(t),a=Object.keys(o);if(n.length!==a.length)return!1;for(const r of n)if(t[r]!==o[r])return!1;return!0}function jt(t){return t!==null&&typeof t=="object"&&Object.prototype.toString.call(t)==="[object Object]"}function bn(t){const o=e.shallowRef(e.toValue(t));return e.watch(()=>e.toValue(t),n=>{const a=o.value;a!==n&&(jt(a)&&jt(n)&&Go(a,n)||(o.value=n))},{immediate:!0}),o}const mt=e.defineComponent({__name:"CopilotChatConfigurationProvider",props:{labels:{},agentId:{},threadId:{},hasExplicitThreadId:{type:Boolean,default:void 0},isModalDefaultOpen:{type:Boolean,default:void 0}},setup(t){const o=t,n=e.inject(bt,null),a=e.computed(()=>n?.value??null),r=bn(e.computed(()=>o.labels)),s=e.computed(()=>({...Ee,...a.value?.labels,...r.value})),i=e.computed(()=>o.agentId??a.value?.agentId??z.DEFAULT_AGENT_ID),l=z.randomUUID(),c=e.computed(()=>o.threadId?o.threadId:a.value?.threadId?a.value.threadId:l),p=e.computed(()=>(o.hasExplicitThreadId!==void 0?o.hasExplicitThreadId:!!o.threadId)||!!a.value?.hasExplicitThreadId),y=e.computed(()=>o.isModalDefaultOpen!==void 0),u=e.computed(()=>o.isModalDefaultOpen??!0),d=e.ref(a.value?.isModalOpen??u.value);function f(w){d.value=w}const v=e.computed(()=>y.value?d.value:a.value?.isModalOpen),C=e.computed(()=>y.value?f:a.value?.setModalOpen),h=e.computed(()=>({labels:s.value,agentId:i.value,threadId:c.value,hasExplicitThreadId:p.value,isModalOpen:v.value,setModalOpen:C.value}));return e.provide(bt,h),(w,m)=>e.renderSlot(w.$slots,"default")}});function ft(){const t=e.inject(Rt,kn(),!0);return e.computed(()=>t.value)}function ge(){const t=e.inject(bt,void 0);return e.computed(()=>t?.value??null)}const yn=e.defineComponent({name:"A2UIDeferredChild",props:{surface:{type:Object,required:!0},id:{type:String,required:!0},basePath:{type:String,required:!0}},setup(t){const o=e.ref(0),n=t.surface.componentsModel.onCreated.subscribe(s=>{s.id===t.id&&o.value++}),a=t.surface.componentsModel.onDeleted.subscribe(s=>{s===t.id&&o.value++});e.onUnmounted(()=>{n.unsubscribe(),a.unsubscribe()});function r(s,i){const l=i||t.basePath;return e.h(yn,{key:`${s}-${l}`,surface:t.surface,id:s,basePath:l})}return()=>{o.value;const s=t.surface.componentsModel.get(t.id);if(!s)return e.h("div",{style:{padding:"12px 16px",borderRadius:"8px",background:"linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%)",backgroundSize:"200% 100%",animation:"a2ui-shimmer 1.5s ease-in-out infinite",minHeight:"2rem"},innerHTML:"<style>@keyframes a2ui-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }</style>"});const i=t.surface.catalog.components.get(s.type);if(!i)return e.h("div",{style:{color:"red"}},`Unknown component: ${s.type}`);const l=new ut.ComponentContext(t.surface,t.id,t.basePath);return e.h(i.render,{context:l,buildChild:r})}}}),Ko=e.defineComponent({name:"A2uiSurface",props:{surface:{type:Object,required:!0}},setup(t){return()=>e.h(yn,{surface:t.surface,id:"root",basePath:"/"})}}),Jo=["data-activity-type","data-message-id"],Xo={key:0,class:"cpk:rounded-lg cpk:border cpk:border-red-200 cpk:bg-red-50 cpk:p-3 cpk:text-sm cpk:text-red-700"},Qo={key:1,class:"cpk:flex cpk:min-h-0 cpk:flex-1 cpk:flex-col cpk:gap-6 cpk:overflow-auto cpk:py-6","data-testid":"a2ui-activity-renderer"},Yo=["data-surface-id"],Zo={class:"a2ui-surface cpk:flex cpk:flex-1"},_t="default",wn=e.defineComponent({__name:"A2UISurfaceActivityRenderer",props:{activityType:{},content:{},message:{},agent:{},theme:{},catalog:{}},setup(t){const o=t,{copilotkit:n}=ke(),a=e.shallowRef(null),r=e.ref(0),s=e.ref(null);let i="";function l(){if(!a.value){const d=o.catalog??Ke;a.value=new ut.MessageProcessor([d],f=>{c(f)})}return a.value}async function c(d){if(o.agent)try{n.value.setProperties({...n.value.properties??{},a2uiAction:d}),await n.value.runAgent({agent:o.agent})}finally{const{a2uiAction:f,...v}=n.value.properties??{};n.value.setProperties(v)}}function p(d){if(!d?.length)return;const f=JSON.stringify(d);if(f===i)return;i=f;const v=l();try{const C=new Map;for(const h of d){const w=yt(h)??_t;C.has(w)||C.set(w,[]),C.get(w).push(h)}for(const[h,w]of C){const b=v.model.getSurface(h)?w.filter(g=>!g?.createSurface):w;v.processMessages(b)}s.value=null}catch(C){console.warn("[A2UI Vue] processMessages error:",C),s.value=C instanceof Error?C.message:String(C)}r.value++}e.watch(()=>[o.content.operations,o.theme,o.catalog,o.agent],()=>{p(o.content.operations)},{deep:!0,immediate:!0}),e.onBeforeUnmount(()=>{a.value=null,i=""});const y=e.computed(()=>(o.content.operations??[]).length>0),u=e.computed(()=>{if(r.value,!a.value)return[];const d=[],f=new Map;for(const v of o.content.operations??[]){const C=yt(v)??_t;f.has(C)||f.set(C,[]),f.get(C).push(v)}for(const[v]of f){const C=a.value.model.getSurface(v);C&&d.push({surfaceId:v,surface:C})}return d});return(d,f)=>y.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-copilotkit":"","data-activity-type":t.activityType,"data-message-id":t.message.id},[s.value?(e.openBlock(),e.createElementBlock("div",Xo," A2UI render error: "+e.toDisplayString(s.value),1)):(e.openBlock(),e.createElementBlock("div",Qo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,v=>(e.openBlock(),e.createElementBlock("div",{key:v.surfaceId,class:"cpk:flex cpk:w-full cpk:flex-none cpk:flex-col cpk:gap-4","data-surface-id":v.surfaceId},[e.createElementVNode("div",Zo,[e.createVNode(e.unref(Ko),{surface:v.surface},null,8,["surface"])])],8,Yo))),128))]))],8,Jo)):e.createCommentVNode("",!0)}}),Cn=e.defineComponent({__name:"CopilotChatToolCallsView",props:{message:{},messages:{default:()=>[]}},setup(t){const o=t,{copilotkit:n,executingToolCallIds:a}=ke(),r=ge();function s(d){return o.messages.find(f=>f.role==="tool"&&f.toolCallId===d)}function i(d){return`tool-call-${d}`}function l(d){return a.value.has(d)}function c(d){return s(d)?.content}function p(d){const f=s(d.id),v=z.partialJSONParse(d.function.arguments);if(f)return{name:d.function.name,args:v,status:me.ToolCallStatus.Complete,result:f.content,toolCall:d,toolMessage:f};const C=l(d.id);return{name:d.function.name,args:v,status:C?me.ToolCallStatus.Executing:me.ToolCallStatus.InProgress,result:void 0,toolCall:d,toolMessage:void 0}}function y(d){const f=s(d.id),v=z.partialJSONParse(d.function.arguments);return f?{name:d.function.name,toolCallId:d.id,args:v,status:me.ToolCallStatus.Complete,result:f.content}:l(d.id)?{name:d.function.name,toolCallId:d.id,args:v,status:me.ToolCallStatus.Executing,result:void 0}:{name:d.function.name,toolCallId:d.id,args:v&&typeof v=="object"?v:{},status:me.ToolCallStatus.InProgress,result:void 0}}function u(d){const f=n.value.renderToolCalls,v=r.value?.agentId??z.DEFAULT_AGENT_ID,C=f.filter(h=>h.name===d.function.name);return C.find(h=>h.agentId===v)??C.find(h=>!h.agentId)??C[0]??f.find(h=>h.name==="*")}return(d,f)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.message.toolCalls??[],v=>e.renderSlot(d.$slots,i(v.function.name),e.mergeProps({key:v.id,ref_for:!0},p(v)),()=>[e.renderSlot(d.$slots,"tool-call",e.mergeProps({ref_for:!0},p(v)),()=>[u(v)?e.withMemo([v.id,v.function.arguments,c(v.id),l(v.id),u(v)?.render],()=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(u(v)?.render),e.mergeProps({key:0,ref_for:!0},y(v)),null,16)),f,0):e.createCommentVNode("",!0)])])),128))}});let Ht=!1;function xn(){e.onMounted(()=>{if(Ht||typeof document>"u")return;Ht=!0,import("katex/dist/katex.min.css").catch(()=>{console.warn("[CopilotKit] Failed to load katex styles — math content may render without formatting")})})}const ea=["data-message-id"],ta={class:"cpk:w-full cpk:bg-transparent cpk:flex cpk:items-center cpk:-ml-[5px] cpk:-mt-[0px]"},na={class:"cpk:flex cpk:items-center cpk:gap-1"},oa=["aria-label","title"],aa=["aria-label","title"],sa=["aria-label","title"],ra=["aria-label","title"],ia=["aria-label","title"],Wt="cpk:cursor-pointer cpk:p-1 cpk:text-muted-foreground cpk:transition-all cpk:hover:text-foreground cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50",qt="cpk:absolute cpk:top-full cpk:right-0 cpk:z-10 cpk:mt-1 cpk:min-w-[120px] cpk:overflow-hidden cpk:rounded-md cpk:border cpk:border-border cpk:bg-background cpk:shadow-lg",it="cpk:w-full cpk:px-3 cpk:py-2 cpk:text-left cpk:text-sm cpk:transition-colors cpk:hover:bg-muted/40",Gt="cpk:cursor-pointer cpk:p-1 cpk:text-muted-foreground cpk:transition-all cpk:hover:text-foreground cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50",Sn=e.defineComponent({__name:"CopilotChatAssistantMessage",props:{message:{},messages:{default:()=>[]},isRunning:{type:Boolean,default:!1},toolbarVisible:{type:Boolean,default:!0}},emits:["thumbs-up","thumbs-down","read-aloud","regenerate"],setup(t,{emit:o}){xn();const n=t,a=o,r=ge(),s=e.computed(()=>r.value?.labels??Ee),i=e.getCurrentInstance(),l=e.ref(!1);let c=null;const p=e.computed(()=>i?.vnode.props??{}),y=["cpk:inline-flex cpk:h-8 cpk:w-8 cpk:items-center cpk:justify-center cpk:rounded-md cpk:p-0","cpk:cursor-pointer cpk:text-[rgb(93,93,93)] cpk:transition-colors cpk:hover:bg-[#E8E8E8]","cpk:hover:text-[rgb(93,93,93)] cpk:dark:text-[rgb(243,243,243)] cpk:dark:hover:bg-[#303030]","cpk:dark:hover:text-[rgb(243,243,243)] cpk:disabled:pointer-events-none cpk:disabled:opacity-50"].join(" ");function u(V,P){try{const _=new URL(V,"https://copilotkit.local").pathname.split("/").filter(Boolean).pop();if(_)return decodeURIComponent(_)}catch{return P}return P}function d(V,P){if(typeof document>"u")return;const j=document.createElement("a");j.href=V,j.download=P,j.rel="noopener noreferrer",document.body.appendChild(j),j.click(),document.body.removeChild(j)}function f(V){const P=Array.from(V.querySelectorAll("thead th")).map(_=>(_.textContent??"").trim()),j=Array.from(V.querySelectorAll("tbody tr")).map(_=>Array.from(_.querySelectorAll("td")).map(ae=>(ae.textContent??"").trim()));return{headers:P,rows:j}}function v(V,P){const j=ae=>{const le=ae.includes(P)||ae.includes('"')||ae.includes(`
67
+ `),M=ae.replace(/"/g,'""');return le?`"${M}"`:M},_=[];V.headers.length>0&&_.push(V.headers.map(j).join(P));for(const ae of V.rows)_.push(ae.map(j).join(P));return _.join(`
68
+ `)}function C(V){if(V.headers.length===0)return V.rows.map(_=>`| ${_.join(" | ")} |`).join(`
69
+ `);const P=`| ${V.headers.map(()=>"---").join(" | ")} |`,j=V.rows.map(_=>`| ${_.join(" | ")} |`);return[`| ${V.headers.join(" | ")} |`,P,...j].join(`
70
+ `)}function h(V,P,j){if(typeof document>"u")return;const _=new Blob([V],{type:j}),ae=URL.createObjectURL(_);d(ae,P),URL.revokeObjectURL(ae)}const w=e.defineComponent({name:"CopilotMarkdownImage",inheritAttrs:!1,props:{src:{type:String,default:""},alt:{type:String,default:""}},setup(V,{attrs:P}){async function j(){if(!V.src)return;const _=u(V.src,"image");try{const ae=await fetch(V.src);if(!ae.ok)throw new Error("Failed to fetch image");const le=await ae.blob(),M=URL.createObjectURL(le);d(M,_),URL.revokeObjectURL(M)}catch{d(V.src,_)}}return()=>{const _={...P,src:V.src,alt:V.alt,class:["cpk:max-w-full cpk:rounded-lg",P.class].filter(Boolean).join(" "),"data-streamdown":"image"};return delete _.className,e.h("div",{class:"cpk:group cpk:relative cpk:my-4 cpk:inline-block","data-streamdown":"image-wrapper"},[e.h("img",_),e.h("div",{class:"cpk:pointer-events-none cpk:absolute cpk:inset-0 cpk:hidden cpk:rounded-lg cpk:bg-black/10 cpk:group-hover:block"}),e.h("button",{type:"button",class:"cpk:absolute cpk:right-2 cpk:bottom-2 cpk:flex cpk:h-8 cpk:w-8 cpk:cursor-pointer cpk:items-center cpk:justify-center cpk:rounded-md cpk:border cpk:border-border cpk:bg-background/90 cpk:shadow-sm cpk:backdrop-blur-sm cpk:transition-all cpk:duration-200 cpk:hover:bg-background cpk:opacity-0 cpk:group-hover:opacity-100",title:"Download image",onClick:j},[e.h(oe.Download,{class:"cpk:size-[14px]"})])])}}}),m=e.defineComponent({name:"CopilotMarkdownTable",inheritAttrs:!1,setup(V,{attrs:P,slots:j}){const _=e.ref(null),ae=e.ref(!1),le=e.ref(!1),M=e.ref(!1);let Q=null;const Z=()=>{ae.value=!1,le.value=!1},pe=()=>{Q&&clearTimeout(Q),M.value=!0,Q=setTimeout(()=>{M.value=!1,Q=null},2e3)},be=()=>_.value?_.value.querySelector("table"):null,de=()=>{const re=be();return re?f(re):null},Ie=async re=>{const he=de();if(!he)return;const Me=v(he,re==="csv"?",":" ");if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(Me)}catch{return}Z(),pe()},Ce=re=>{const he=de();he&&(re==="csv"?h(v(he,","),"table.csv","text/csv"):h(C(he),"table.md","text/markdown"),Z())},ce=re=>{if(!_.value)return;const he=re.target;he&&!_.value.contains(he)&&Z()};return e.onMounted(()=>{typeof document<"u"&&document.addEventListener("mousedown",ce)}),e.onBeforeUnmount(()=>{Q&&clearTimeout(Q),typeof document<"u"&&document.removeEventListener("mousedown",ce)}),()=>{const re={...P,class:["cpk:w-full cpk:border-collapse cpk:border cpk:border-border",P.class].filter(Boolean).join(" "),"data-streamdown":"table"};return delete re.className,e.h("div",{ref:_,class:"cpk:my-4 cpk:flex cpk:flex-col cpk:space-y-2","data-streamdown":"table-wrapper"},[e.h("div",{class:"cpk:flex cpk:items-center cpk:justify-end cpk:gap-1"},[e.h("div",{class:"cpk:relative"},[e.h("button",{type:"button",class:Wt,title:"Copy table",onClick:()=>{ae.value=!ae.value,le.value=!1}},[M.value?e.h(oe.Check,{class:"cpk:size-[14px]"}):e.h(oe.Copy,{class:"cpk:size-[14px]"})]),ae.value?e.h("div",{class:qt},[e.h("button",{type:"button",class:it,title:"Copy table as CSV",onClick:()=>Ie("csv")},"CSV"),e.h("button",{type:"button",class:it,title:"Copy table as TSV",onClick:()=>Ie("tsv")},"TSV")]):null]),e.h("div",{class:"cpk:relative"},[e.h("button",{type:"button",class:Wt,title:"Download table",onClick:()=>{le.value=!le.value,ae.value=!1}},[e.h(oe.Download,{class:"cpk:size-[14px]"})]),le.value?e.h("div",{class:qt},[e.h("button",{type:"button",class:it,title:"Download table as CSV",onClick:()=>Ce("csv")},"CSV"),e.h("button",{type:"button",class:it,title:"Download table as Markdown",onClick:()=>Ce("markdown")},"Markdown")]):null])]),e.h("div",{class:"cpk:overflow-x-auto"},[e.h("table",re,j.default?j.default():[])])])}}}),b={javascript:"js",js:"js",typescript:"ts",ts:"ts",json:"json",vue:"vue",html:"html",css:"css",md:"md",markdown:"md",sh:"sh",bash:"sh",py:"py",python:"py",go:"go",rust:"rs",rs:"rs"},g=e.defineComponent({name:"CopilotCodeBlockCopyAction",props:{code:{type:String,default:""}},setup(V){const P=e.ref(!1);let j=null;const _=async()=>{if(V.code){if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(V.code)}catch{return}j&&clearTimeout(j),P.value=!0,j=setTimeout(()=>{P.value=!1,j=null},2e3)}};return e.onBeforeUnmount(()=>{j&&clearTimeout(j)}),()=>e.h("button",{type:"button",class:Gt,title:"Copy Code","data-streamdown":"code-block-copy-button",onClick:_},[P.value?e.h(oe.Check,{class:"cpk:size-[14px]"}):e.h(oe.Copy,{class:"cpk:size-[14px]"})])}}),k=e.defineComponent({name:"CopilotCodeBlockDownloadAction",props:{code:{type:String,default:""},language:{type:String,default:""}},setup(V){const P=()=>{if(!V.code)return;const j=b[V.language.toLowerCase()]??"txt";h(V.code,`file.${j}`,"text/plain")};return()=>e.h("button",{type:"button",class:Gt,title:"Download file","data-streamdown":"code-block-download-button",onClick:P},[e.h(oe.Download,{class:"cpk:size-[14px]"})])}}),x={img:w,table:m};function A(V){return V?typeof V=="string"?V:Array.isArray(V)?V.map(j=>j&&typeof j=="object"&&"type"in j&&j.type==="text"&&typeof j.text=="string"?j.text:"").filter(j=>j.length>0).join(`
71
+ `):"":""}const E=e.computed(()=>A(n.message.content)),T=e.computed(()=>E.value.trim().length>0);function F(V){const P=p.value[V];return Array.isArray(P)?P.length>0:!!P}const U=e.computed(()=>F("onThumbsUp")),te=e.computed(()=>F("onThumbsDown")),H=e.computed(()=>F("onReadAloud")),L=e.computed(()=>F("onRegenerate")),R=e.computed(()=>n.messages[n.messages.length-1]?.id===n.message.id),W=e.computed(()=>n.toolbarVisible&&T.value&&!(n.isRunning&&R.value));function K(){c&&clearTimeout(c),l.value=!0,c=setTimeout(()=>{l.value=!1,c=null},2e3)}async function I(){const V=E.value;if(V&&!(typeof navigator>"u"||typeof navigator.clipboard?.writeText!="function"))try{await navigator.clipboard.writeText(V),K()}catch(P){console.error("Failed to copy to clipboard:",P)}}function $(){a("thumbs-up",n.message)}function O(){a("thumbs-down",n.message)}function q(){a("read-aloud",n.message)}function se(){a("regenerate",n.message)}return e.onBeforeUnmount(()=>{c&&clearTimeout(c)}),(V,P)=>e.renderSlot(V.$slots,"layout",{message:t.message,content:E.value,isRunning:t.isRunning,toolbarVisible:t.toolbarVisible,shouldShowToolbar:W.value,messageRenderer:V.$slots["message-renderer"]??(()=>null),toolbar:V.$slots.toolbar??(()=>null),copyButton:V.$slots["copy-button"]??(()=>null),thumbsUpButton:V.$slots["thumbs-up-button"]??(()=>null),thumbsDownButton:V.$slots["thumbs-down-button"]??(()=>null),readAloudButton:V.$slots["read-aloud-button"]??(()=>null),regenerateButton:V.$slots["regenerate-button"]??(()=>null),toolCallsView:V.$slots["tool-calls-view"]??(()=>null),onCopy:I,onThumbsUp:$,onThumbsDown:O,onReadAloud:q,onRegenerate:se},()=>[e.createElementVNode("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-assistant-message",class:"cpk:prose cpk:max-w-full cpk:break-words cpk:dark:prose-invert","data-message-id":t.message.id},V.$attrs),[e.renderSlot(V.$slots,"message-renderer",{message:t.message,content:E.value},()=>[T.value?(e.openBlock(),e.createBlock(e.unref(Yt.StreamMarkdown),{key:0,class:"copilot-chat-assistant-markdown",content:E.value,components:x,"code-block-actions":[e.unref(k),e.unref(g)],"code-block-show-line-numbers":!1,"code-block-hide-copy":!0,"code-block-hide-download":!0,"allowed-link-prefixes":["https://","http://","#","/","./","../"],"shiki-theme":{light:"github-light",dark:"github-dark"}},null,8,["content","code-block-actions"])):e.createCommentVNode("",!0)]),e.renderSlot(V.$slots,"tool-calls-view",{message:t.message,messages:t.messages},()=>[e.createVNode(Cn,{message:t.message,messages:t.messages},e.createSlots({_:2},[e.renderList(V.$slots,(j,_)=>({name:_,fn:e.withCtx(ae=>[e.renderSlot(V.$slots,_,e.normalizeProps(e.guardReactiveProps(ae)))])}))]),1032,["message","messages"])]),W.value?e.renderSlot(V.$slots,"toolbar",{key:0,message:t.message,shouldShowToolbar:W.value},()=>[e.createElementVNode("div",ta,[e.createElementVNode("div",na,[e.renderSlot(V.$slots,"copy-button",{onCopy:I,copied:l.value,label:s.value.assistantMessageToolbarCopyMessageLabel},()=>[e.createElementVNode("button",{"data-testid":"copilot-copy-button",type:"button",class:e.normalizeClass(e.unref(y)),"aria-label":s.value.assistantMessageToolbarCopyMessageLabel,title:s.value.assistantMessageToolbarCopyMessageLabel,onClick:I},[l.value?(e.openBlock(),e.createBlock(e.unref(oe.Check),{key:0,class:"cpk:size-[18px]"})):(e.openBlock(),e.createBlock(e.unref(oe.Copy),{key:1,class:"cpk:size-[18px]"}))],10,oa)]),U.value?e.renderSlot(V.$slots,"thumbs-up-button",{key:0,onThumbsUp:$,label:s.value.assistantMessageToolbarThumbsUpLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(y)),"aria-label":s.value.assistantMessageToolbarThumbsUpLabel,title:s.value.assistantMessageToolbarThumbsUpLabel,onClick:$},[e.createVNode(e.unref(oe.ThumbsUp),{class:"cpk:size-[18px]"})],10,aa)]):e.createCommentVNode("",!0),te.value?e.renderSlot(V.$slots,"thumbs-down-button",{key:1,onThumbsDown:O,label:s.value.assistantMessageToolbarThumbsDownLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(y)),"aria-label":s.value.assistantMessageToolbarThumbsDownLabel,title:s.value.assistantMessageToolbarThumbsDownLabel,onClick:O},[e.createVNode(e.unref(oe.ThumbsDown),{class:"cpk:size-[18px]"})],10,sa)]):e.createCommentVNode("",!0),H.value?e.renderSlot(V.$slots,"read-aloud-button",{key:2,onReadAloud:q,label:s.value.assistantMessageToolbarReadAloudLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(y)),"aria-label":s.value.assistantMessageToolbarReadAloudLabel,title:s.value.assistantMessageToolbarReadAloudLabel,onClick:q},[e.createVNode(e.unref(oe.Volume2),{class:"cpk:size-[20px]"})],10,ra)]):e.createCommentVNode("",!0),L.value?e.renderSlot(V.$slots,"regenerate-button",{key:3,onRegenerate:se,label:s.value.assistantMessageToolbarRegenerateLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(y)),"aria-label":s.value.assistantMessageToolbarRegenerateLabel,title:s.value.assistantMessageToolbarRegenerateLabel,onClick:se},[e.createVNode(e.unref(oe.RefreshCw),{class:"cpk:size-[18px]"})],10,ia)]):e.createCommentVNode("",!0),e.renderSlot(V.$slots,"toolbar-items")])])]):e.createCommentVNode("",!0)],16,ea)])}});class _e extends Error{constructor(o){super(o),this.name="AudioRecorderError"}}const Tn=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatAudioRecorder",setup(t,{expose:o}){const n=e.useAttrs(),a=e.ref(null),r=e.ref("idle"),s=e.ref(null),i=e.ref(null),l=e.ref(null),c=e.ref(null),p=e.ref(null),y=e.ref([]),u=e.ref([]),d=e.ref(0),f=e.ref(0),v=e.ref(0);function C(){p.value!==null&&(cancelAnimationFrame(p.value),p.value=null);const g=s.value;if(g&&g.state!=="inactive")try{g.stop()}catch{}i.value&&(i.value.getTracks().forEach(x=>x.stop()),i.value=null);const k=c.value;k&&k.state!=="closed"&&k.close().catch(()=>{}),s.value=null,l.value=null,c.value=null,y.value=[],u.value=[],d.value=0,f.value=0,v.value=0}async function h(){if(r.value!=="idle")throw new _e("Recorder is already active");try{const g=await navigator.mediaDevices.getUserMedia({audio:!0});i.value=g;const k=new AudioContext;c.value=k;const x=k.createMediaStreamSource(g),A=k.createAnalyser();A.fftSize=2048,x.connect(A),l.value=A;const E=MediaRecorder.isTypeSupported("audio/webm;codecs=opus")?"audio/webm;codecs=opus":MediaRecorder.isTypeSupported("audio/webm")?"audio/webm":MediaRecorder.isTypeSupported("audio/mp4")?"audio/mp4":"",T=E?{mimeType:E}:{},F=new MediaRecorder(g,T);s.value=F,y.value=[],F.ondataavailable=U=>{U.data.size>0&&y.value.push(U.data)},F.start(100),r.value="recording"}catch(g){throw C(),g instanceof Error&&g.name==="NotAllowedError"?new _e("Microphone permission denied"):g instanceof Error&&g.name==="NotFoundError"?new _e("No microphone found"):new _e(g instanceof Error?g.message:"Failed to start recording")}}function w(){return new Promise((g,k)=>{const x=s.value;if(!x||r.value!=="recording"){k(new _e("No active recording"));return}r.value="processing",x.onstop=()=>{const A=new Blob(y.value,{type:x.mimeType||"audio/webm"});C(),r.value="idle",g(A)},x.onerror=()=>{C(),r.value="idle",k(new _e("Recording failed"))},x.stop()})}function m(g){let k=0;for(let x=0;x<g.length;x+=1){const A=(g[x]??128)/128-1;k+=A*A}return Math.sqrt(k/g.length)}function b(){const g=a.value;if(!g)return;const k=g.getContext("2d");if(!k)return;const x=g.getBoundingClientRect(),A=window.devicePixelRatio||1;(g.width!==x.width*A||g.height!==x.height*A)&&(g.width=x.width*A,g.height=x.height*A,k.scale(A,A));const E=2,F=E+1,U=Math.floor(x.width/F)+2;if(l.value&&r.value==="recording"){u.value.length===0&&(u.value=Array.from({length:U},()=>0)),v.value<1&&(v.value=Math.min(1,v.value+.03)),d.value+=1/3;const W=l.value.fftSize,K=new Uint8Array(W);l.value.getByteTimeDomainData(K);const I=m(K),q=I>f.value?.12:.08;f.value+=(I-f.value)*q,d.value>=F&&(d.value-=F,u.value.push(f.value),u.value.length>U&&(u.value=u.value.slice(-U)))}k.clearRect(0,0,x.width,x.height);const te=window.getComputedStyle(g);k.fillStyle=te.color,k.globalAlpha=v.value;const H=x.height/2,L=x.height/2-2,R=12;for(let W=0;W<u.value.length;W+=1){const K=u.value[W]??0,I=Math.min(K*4,1),$=Math.max(2,I*L*2),O=x.width-(u.value.length-W)*F-d.value,q=H-$/2;if(O+E<=0||O>=x.width)continue;let se=1;O<R?se=Math.max(0,O/R):O>x.width-R&&(se=Math.max(0,(x.width-O)/R)),k.globalAlpha=v.value*se,k.fillRect(O,q,E,$)}p.value=requestAnimationFrame(b)}return e.watch(r,()=>{p.value!==null&&(cancelAnimationFrame(p.value),p.value=null),p.value=requestAnimationFrame(b)},{immediate:!0}),e.onBeforeUnmount(()=>{C()}),o({get state(){return r.value},start:h,stop:w,dispose:C}),(g,k)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"",class:"cpk:w-full cpk:px-5 cpk:py-3"},e.unref(n)),[e.createElementVNode("canvas",{ref_key:"canvasRef",ref:a,class:"cpk:block cpk:h-[26px] cpk:w-full"},null,512)],16))}}),At=e.defineComponent({__name:"InlineFeatureWarning",props:{featureName:{}},setup(t){const o={padding:"8px 12px",backgroundColor:"#fffbeb",border:"1px solid #fbbf24",borderRadius:"6px",fontSize:"13px",color:"#92400e",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif"},n={color:"#b45309",textDecoration:"underline"};return(a,r)=>(e.openBlock(),e.createElementBlock("div",{style:o,"data-testid":"copilot-inline-feature-warning"},[e.createTextVNode(' ⚠ The "'+e.toDisplayString(t.featureName)+'" feature requires a CopilotKit license. ',1),e.createElementVNode("a",{href:"https://copilotkit.ai/pricing",target:"_blank",rel:"noopener noreferrer",style:n}," Get one at copilotkit.ai/pricing ")]))}});var In=(t=>(t.OnMessagesChanged="OnMessagesChanged",t.OnStateChanged="OnStateChanged",t.OnRunStatusChanged="OnRunStatusChanged",t))(In||{});const la=["OnMessagesChanged","OnStateChanged","OnRunStatusChanged"];function ca(t,o,n){const a=t.clone();if(a===t)throw new Error(`useAgent: ${t.constructor.name}.clone() returned the same instance. clone() must return a new, independent object.`);return a.threadId=o,a.setMessages([]),a.setState({}),a instanceof We.HttpAgent&&(a.headers={...n}),a}const Ct=new WeakMap;function Kt(t,o){if(!(!t||!o))return Ct.get(t)?.get(o)}function ua(t,o,n){let a=Ct.get(t);a||(a=new Map,Ct.set(t,a));const r=a.get(o);if(r)return r.threadId=o,r instanceof We.HttpAgent&&(r.headers={...n}),r;const s=ca(t,o,n);return a.set(o,s),s}function gt(t={}){const o=e.computed(()=>e.toValue(t.agentId)??z.DEFAULT_AGENT_ID),n=ge(),a=e.computed(()=>e.toValue(t.threadId)??n.value?.threadId),{copilotkit:r}=ke(),s=e.computed(()=>t.updates??la),i=e.computed(()=>r.value.defaultThrottleMs),l=e.computed(()=>e.toValue(t.throttleMs)),c=e.shallowRef(null),p=e.shallowRef(null),y=new Map,u=(f,v,C,h)=>{const w=new me.ProxiedCopilotRuntimeAgent({runtimeUrl:v,agentId:f,transport:C,runtimeMode:"pending"});return w.headers={...h},w},d=()=>{const f=o.value,v=a.value,C=v?`${f}:${v}`:f,h=r.value,w=h.getAgent(f);if(w){y.delete(C),y.delete(f);const x=v?ua(w,v,h.headers):w,A=c.value===x;c.value=x,p.value=x,A&&e.triggerRef(c);return}const m=h.runtimeUrl!==void 0,b=h.runtimeConnectionStatus;if(m&&(b===me.CopilotKitCoreRuntimeConnectionStatus.Disconnected||b===me.CopilotKitCoreRuntimeConnectionStatus.Connecting||b===me.CopilotKitCoreRuntimeConnectionStatus.Error)){const x=y.get(C);if(x){x.headers={...h.headers},v&&(x.threadId=v),c.value=x,p.value=x;return}const A=u(f,h.runtimeUrl,h.runtimeTransport,h.headers);v&&(A.threadId=v),y.set(C,A),c.value=A,p.value=A;return}const g=Object.keys(h.agents??{}),k=m?`runtimeUrl=${h.runtimeUrl}`:"no runtimeUrl";throw new Error(`useAgent: Agent '${f}' not found after runtime sync (${k}). `+(g.length?`Known agents: [${g.join(", ")}]`:"No agents registered.")+" Verify your runtime /info and/or agents__unsafe_dev_only.")};return e.watch([o,()=>r.value.agents,()=>r.value.runtimeConnectionStatus,()=>r.value.runtimeUrl,()=>r.value.runtimeTransport,()=>JSON.stringify(Object.entries(r.value.headers??{}).sort(([f],[v])=>f.localeCompare(v))),a],d,{immediate:!0}),e.watch([p,()=>JSON.stringify(Object.entries(r.value.headers??{}).sort(([f],[v])=>f.localeCompare(v)))],([f])=>{f instanceof We.HttpAgent&&(f.headers={...r.value.headers})},{immediate:!0}),e.watch([p,s,l,i],([f,v],C,h)=>{const w=v;if(!f||w.length===0)return;let m=!0,b=!1;const g=()=>{m&&(b||(b=!0,queueMicrotask(()=>{b=!1,m&&e.triggerRef(c)})))},k={};w.includes("OnMessagesChanged")&&(k.onMessagesChanged=()=>{m&&e.triggerRef(c)}),w.includes("OnStateChanged")&&(k.onStateChanged=g),w.includes("OnRunStatusChanged")&&(k.onRunInitialized=g,k.onRunFinalized=g,k.onRunFailed=g,k.onRunErrorEvent=g);const x=r.value.subscribeToAgentWithOptions(f,k,{throttleMs:e.toValue(t.throttleMs)});h(()=>{m=!1,x.unsubscribe()})},{immediate:!0}),{agent:c}}function Rn(t={}){const{copilotkit:o}=ke(),n=ge(),a=e.computed(()=>e.toValue(t.agentId)??n.value?.agentId??z.DEFAULT_AGENT_ID),r=e.ref([]),s=e.ref(!1),i=()=>{const p=o.value.getSuggestions(a.value);r.value=p.suggestions,s.value=p.isLoading};return e.watch([()=>o.value,a],()=>i(),{immediate:!0}),e.watch([()=>o.value,a],(p,y,u)=>{const d=o.value,f=a.value,v=d.subscribe({onSuggestionsChanged:({agentId:C,suggestions:h})=>{if(C!==f)return;r.value=h;const w=d.getSuggestions(f);s.value=w.isLoading},onSuggestionsStartedLoading:({agentId:C})=>{C===f&&(s.value=!0)},onSuggestionsFinishedLoading:({agentId:C})=>{C===f&&(s.value=!1)},onSuggestionsConfigChanged:()=>{const C=d.getSuggestions(f);r.value=C.suggestions,s.value=C.isLoading}});u(()=>v.unsubscribe())},{immediate:!0}),{suggestions:r,isLoading:s,reloadSuggestions:()=>{o.value.reloadSuggestions(a.value)},clearSuggestions:()=>{o.value.clearSuggestions(a.value)}}}function An(t){const o=e.ref([]),n=e.ref(!1),a=e.ref(null),r=e.ref(null),s=e.ref(e.toValue(t.config)),i=e.ref(o.value),l=e.computed(()=>s.value?.enabled??!1);e.watch(()=>e.toValue(t.config),m=>{s.value=m},{immediate:!0});const c=m=>{o.value=m,i.value=m},p=m=>{c(m(i.value))};async function y(m){const b=s.value,g=b?.accept??"*/*",k=b?.maxSize??20*1024*1024,x=m.filter(E=>!z.matchesAcceptFilter(E,g));for(const E of x)b?.onUploadFailed?.({reason:"invalid-type",file:E,message:`File "${E.name}" is not accepted. Supported types: ${g}`});const A=m.filter(E=>z.matchesAcceptFilter(E,g));for(const E of A){if(z.exceedsMaxSize(E,k)){b?.onUploadFailed?.({reason:"file-too-large",file:E,message:`File "${E.name}" exceeds the maximum size of ${z.formatFileSize(k)}`});continue}const T=z.getModalityFromMimeType(E.type),F=z.randomUUID();p(U=>[...U,{id:F,type:T,source:{type:"data",value:"",mimeType:E.type},filename:E.name,size:E.size,status:"uploading"}]);try{let U,te;if(b?.onUpload){const L=await b.onUpload(E),{metadata:R,...W}=L;U=W,te=R}else U={type:"data",value:await z.readFileAsBase64(E),mimeType:E.type};let H;T==="video"&&(H=await z.generateVideoThumbnail(E)),p(L=>L.map(R=>R.id===F?{...R,source:U,status:"ready",thumbnail:H,metadata:te}:R))}catch(U){p(te=>te.filter(H=>H.id!==F)),console.error(`[CopilotKit] Failed to upload "${E.name}":`,U),b?.onUploadFailed?.({reason:"upload-failed",file:E,message:U instanceof Error?U.message:`Failed to upload "${E.name}"`})}}}async function u(m){const b=m.target;b?.files?.length&&(await y(Array.from(b.files)),b&&(b.value=""))}function d(m){l.value&&(m.preventDefault(),m.stopPropagation(),n.value=!0)}function f(m){m.preventDefault(),m.stopPropagation(),n.value=!1}async function v(m){if(m.preventDefault(),m.stopPropagation(),n.value=!1,!l.value)return;const b=Array.from(m.dataTransfer?.files??[]);b.length>0&&await y(b)}function C(m){p(b=>b.filter(g=>g.id!==m))}function h(){const m=i.value.filter(b=>b.status==="ready");return m.length===0||(p(b=>b.filter(g=>g.status!=="ready")),a.value&&(a.value.value="")),m}async function w(m){if(!l.value)return;const b=m.target;if(!b||!r.value?.contains(b))return;const g=s.value?.accept??"*/*",x=Array.from(m.clipboardData?.items??[]).filter(E=>{if(E.kind!=="file")return!1;const T=E.getAsFile();return T!==null&&z.matchesAcceptFilter(T,g)});if(x.length===0)return;m.preventDefault();const A=x.map(E=>E.getAsFile()).filter(E=>E!==null);await y(A)}return e.onMounted(()=>{typeof document<"u"&&document.addEventListener("paste",w)}),e.onBeforeUnmount(()=>{typeof document<"u"&&document.removeEventListener("paste",w)}),{attachments:o,enabled:l,dragOver:n,fileInputRef:a,containerRef:r,processFiles:y,handleFileUpload:u,handleDragOver:d,handleDragLeave:f,handleDrop:v,removeAttachment:C,consumeAttachments:h}}async function da(t){return await new Promise((o,n)=>{const a=new FileReader;a.onloadend=()=>{const r=a.result;o(r.split(",")[1]??"")},a.addEventListener("error",()=>n(new Error("Failed to read audio data"))),a.readAsDataURL(t)})}function pa(t){return typeof t=="object"&&t!==null&&"error"in t&&"message"in t&&typeof t.error=="string"&&typeof t.message=="string"}function ma(t){return{code:t.error,message:t.message,retryable:t.retryable??!1}}class He extends Error{info;constructor(o){super(o.message),this.name="TranscriptionError",this.info=o}}async function fa(t,o,n="recording.webm"){const a=t.runtimeUrl;if(!a)throw new He({code:z.TranscriptionErrorCode.INVALID_REQUEST,message:"Runtime URL is not configured",retryable:!1});const r={...t.headers};let s;try{if(t.runtimeTransport==="single"){const i=await da(o);r["Content-Type"]="application/json",s=await fetch(a,{method:"POST",headers:r,body:JSON.stringify({method:"transcribe",body:{audio:i,mimeType:o.type||"audio/webm",filename:n}})})}else{delete r["Content-Type"];const i=new FormData;i.append("audio",o,n),s=await fetch(`${a}/transcribe`,{method:"POST",headers:r,body:i})}}catch(i){throw new He({code:z.TranscriptionErrorCode.NETWORK_ERROR,message:i instanceof Error?i.message:"Network request failed",retryable:!0})}if(!s.ok){let i;try{i=await s.json()}catch{throw new He({code:z.TranscriptionErrorCode.PROVIDER_ERROR,message:`HTTP ${s.status}: ${s.statusText}`,retryable:s.status>=500})}throw pa(i)?new He(ma(i)):new He({code:z.TranscriptionErrorCode.PROVIDER_ERROR,message:typeof i=="object"&&i!==null&&"message"in i?String(i.message):"Transcription failed",retryable:s.status>=500})}return await s.json()}function En(){const t=typeof window<"u"?window.innerHeight:0,o=e.ref(!1),n=e.ref(0),a=e.ref(t),r=e.ref(t),s=()=>{if(typeof window>"u")return;const l=window.visualViewport;if(!l)return;const c=window.innerHeight,p=l.height,y=Math.max(0,c-p),u=y>150;n.value=y,o.value=u,a.value=p,r.value=c};let i=null;return e.onMounted(()=>{typeof window>"u"||(i=window.visualViewport??null,i&&(s(),i.addEventListener("resize",s),i.addEventListener("scroll",s)))}),e.onBeforeUnmount(()=>{i&&(i.removeEventListener("resize",s),i.removeEventListener("scroll",s),i=null)}),{isKeyboardOpen:e.readonly(o),keyboardHeight:e.readonly(n),availableHeight:e.readonly(a),viewportHeight:e.readonly(r)}}const ga={id:null,sendNonce:0},$n=Symbol("LastUserMessage");function ha(){return e.ref({...ga})}function va({scrollRef:t,contentRef:o,spacerRef:n,topOffset:a=16}){const r=e.inject($n,ha(),!0);let s=-1,i=0,l=null,c=null;function p(){l!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(l),l=null,c?.disconnect(),c=null}e.watch([()=>r.value.id,()=>r.value.sendNonce,t,o,n,()=>a],([y,u,d,f,v],C,h)=>{if(h(p),u===s||(s=u,!y)||!d||!f||!v)return;const w=typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(y):y.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"\\$&"),m=f.querySelector(`[data-message-id="${w}"]`);if(!m)return;const b=d.clientHeight,g=m.getBoundingClientRect().height,k=parseFloat(getComputedStyle(m).paddingTop)||0,x=Math.max(0,g-k),A=Math.max(0,b-x-a);v.style.height=`${A}px`,i=A,typeof requestAnimationFrame=="function"&&(l=requestAnimationFrame(()=>{const E=Jt(m,d)+k-a;d.scrollTo({top:Math.max(0,E),behavior:"smooth"})})),typeof ResizeObserver<"u"&&(c=new ResizeObserver(()=>{if(!f||!v||!d)return;const E=f.getBoundingClientRect().height,T=Jt(m,f),F=E-T-g,U=Math.max(0,A-F);U<i&&(v.style.height=`${U}px`,i=U)}),c.observe(f))},{immediate:!0,flush:"post"})}function Jt(t,o){const n=t.getBoundingClientRect(),a=o.getBoundingClientRect();return n.top-a.top+o.scrollTop}const ka={class:"cpk:pointer-events-auto cpk:mx-auto cpk:max-w-3xl cpk:px-4 cpk:py-0 cpk:sm:px-0 cpk:[div[data-sidebar-chat]_&]:px-8 cpk:[div[data-popup-chat]_&]:px-4"},ba=["data-layout"],ya=["data-layout"],wa=["aria-label","disabled"],Ca={key:0,class:"cpk:my-1 cpk:h-px cpk:bg-border cpk:dark:bg-[#333333]"},xa=["onClick"],Sa={key:1,class:"cpk:flex cpk:w-full cpk:items-center cpk:justify-center cpk:px-5 cpk:py-3"},Ta=["value","placeholder","disabled"],Ia={key:0,class:"cpk:px-3 cpk:py-2 cpk:text-sm cpk:text-muted-foreground"},Ra=["data-slash-index","aria-selected","data-active","onMouseenter","onMousedown"],Aa=["aria-label","disabled"],Ea=["aria-label","disabled"],$a=["aria-label","disabled"],Ma={class:"cpk:mr-[10px]"},Ba=["disabled"],Va={"data-testid":"copilot-chat-input-disclaimer",class:"cpk:mx-auto cpk:max-w-3xl cpk:px-4 cpk:py-3 cpk:text-center cpk:text-xs cpk:text-muted-foreground"},Xe=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatInput",props:{modelValue:{},disabled:{type:Boolean,default:!1},placeholder:{},autoFocus:{type:Boolean,default:!0},clearOnSubmit:{type:Boolean,default:!0},mode:{default:"input"},toolsMenu:{default:()=>[]},isRunning:{type:Boolean,default:!1},positioning:{default:"static"},keyboardHeight:{default:0},showDisclaimer:{type:Boolean,default:void 0},maxRows:{default:5},bottomAnchored:{type:Boolean,default:!1}},emits:["update:modelValue","submit-message","stop","add-file","start-transcribe","cancel-transcribe","finish-transcribe","finish-transcribe-with-audio"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=ge(),i=e.getCurrentInstance(),l=e.ref(null),c=e.ref(null),p=e.ref(null),y=e.ref(null),u=e.ref(null),d=e.ref(null),f=e.ref(null),v=e.ref(null),C=e.ref(n.modelValue??""),h=e.ref(!1),w=e.ref("compact"),m=e.ref(null),b=e.ref(0),g=e.ref(null),k=e.ref(!1),x=e.ref({singleLineHeight:0,maxHeight:0,paddingLeft:0,paddingRight:0}),A=e.ref(null),E=e.ref(!1),T=e.ref(null),F=e.ref(null),U=e.ref(!1),te=e.ref(!1);let H=null,L=null;const R=e.computed(()=>i?.vnode.props??{}),W=e.computed(()=>n.modelValue!==void 0),K=e.computed(()=>W.value?n.modelValue??"":C.value),I=e.computed(()=>s.value?.labels??Ee),$=e.computed(()=>n.placeholder??I.value.chatInputPlaceholder),O=e.computed(()=>n.mode==="input"&&w.value==="expanded"),q=e.computed(()=>n.mode!=="transcribe"&&n.isRunning),se=e.computed(()=>n.showDisclaimer??n.positioning==="absolute"),V=e.computed(()=>de("onSubmitMessage")),P=e.computed(()=>de("onStop")),j=e.computed(()=>de("onAddFile")),_=e.computed(()=>de("onStartTranscribe")),ae=e.computed(()=>de("onCancelTranscribe")),le=e.computed(()=>de("onFinishTranscribe")),M=e.computed(()=>n.mode==="input"&&!n.disabled&&V.value&&K.value.trim().length>0),Q=e.computed(()=>q.value?!P.value:!M.value),Z=e.computed(()=>[n.positioning==="absolute"&&"cpk:absolute cpk:bottom-0 cpk:left-0 cpk:right-0 cpk:z-20 cpk:pointer-events-none",r.class]),pe=e.computed(()=>{const S={...r};return delete S.class,S});function be(S){return Array.isArray(S.items)}function de(S){const B=R.value[S];return Array.isArray(B)?B.length>0:!!B}function Ie(){return j.value?{label:I.value.chatInputToolbarAddButtonLabel,action:()=>a("add-file")}:null}function Ce(){const S=[],B=Ie();if(B&&S.push(B),n.toolsMenu.length>0){S.length>0&&S.push("-");for(const G of n.toolsMenu){if(G==="-"){if(S.length===0||S[S.length-1]==="-")continue;S.push("-");continue}S.push(G)}}for(;S.length>0&&S[S.length-1]==="-";)S.pop();return S}const ce=e.computed(()=>Ce()),re=e.computed(()=>ce.value.length>0);function he(S){const B=new Set,G=[],ne=Re=>{for(const ie of Re)if(ie!=="-"){if(be(ie)&&ie.items.length>0){ne(ie.items);continue}!ie.action||B.has(ie.label)||(B.add(ie.label),G.push(ie))}};return ne(S),G}const ye=e.computed(()=>he(ce.value));function Me(S,B=0,G="root"){const ne=[];for(const[Re,ie]of S.entries()){const Ae=`${G}-${Re}`;if(ie==="-"){ne.push({type:"separator",key:`sep-${Ae}`});continue}if(be(ie)&&ie.items.length>0){ne.push({type:"label",key:`label-${Ae}`,label:ie.label,depth:B}),ne.push(...Me(ie.items,B+1,Ae));continue}ie.action&&ne.push({type:"item",key:`item-${Ae}`,label:ie.label,depth:B,action:ie.action})}return ne}const N=e.computed(()=>Me(ce.value)),J=e.computed(()=>{if(m.value===null||ye.value.length===0)return[];const S=m.value.trim().toLowerCase();if(S.length===0)return ye.value;const B=[],G=[];for(const ne of ye.value){const Re=ne.label.toLowerCase();if(Re.startsWith(S)){B.push(ne);continue}Re.includes(S)&&G.push(ne)}return[...B,...G]}),xe=e.computed(()=>m.value!==null&&ye.value.length>0);function $e(S){W.value||(C.value=S),a("update:modelValue",S)}function et(){$e("")}function we(S){if(ye.value.length===0){m.value=null;return}if(S.startsWith("/")){const B=S.split(/\r?\n/,1)[0]??"";m.value=B.slice(1);return}m.value=null}function tt(S){et(),S.action?.(),m.value=null,b.value=0,requestAnimationFrame(()=>{c.value?.focus()})}function D(){if(n.mode!=="input"||n.disabled||!V.value)return;const B=(c.value?.value??K.value).trim();B&&(a("submit-message",B),n.clearOnSubmit&&et(),c.value?.focus())}function Y(S){const B=S.target.value;$e(B),we(B)}function ee(){if(q.value){P.value&&a("stop");return}D()}function ue(S){if(!n.disabled&&!(h.value||S.isComposing||S.keyCode===229)){if(m.value!==null&&n.mode==="input"){if(S.key==="ArrowDown"){J.value.length>0&&(S.preventDefault(),b.value=b.value<0?0:(b.value+1)%J.value.length);return}if(S.key==="ArrowUp"){J.value.length>0&&(S.preventDefault(),b.value<0?b.value=J.value.length-1:b.value=b.value<=0?J.value.length-1:b.value-1);return}if(S.key==="Enter"){const B=b.value>=0?J.value[b.value]:void 0;if(B){S.preventDefault(),tt(B);return}}if(S.key==="Escape"){S.preventDefault(),m.value=null;return}}if(S.key==="Enter"&&!S.shiftKey&&n.mode==="input"){if(S.preventDefault(),q.value){P.value&&a("stop");return}D()}}}function Se(){!re.value||n.mode==="transcribe"||n.disabled||(k.value=!k.value)}function Le(){k.value=!1}function Be(S){S(),Le(),e.nextTick(()=>{c.value?.focus()})}async function ze(){const S=v.value;if(S&&S.state==="recording")try{const B=await S.stop();a("finish-transcribe-with-audio",B)}catch(B){console.error("Failed to stop recording:",B)}a("finish-transcribe")}function nt(S){const B=S.target;!B||n.mode!=="input"||B.tagName==="BUTTON"||B.closest("button")||c.value?.focus()}function qe(){const S=c.value;if(!S||h.value)return;const B=S.value,G=S.style.height;S.style.height="auto";const ne=window.getComputedStyle(S),Re=parseFloat(ne.paddingLeft)||0,ie=parseFloat(ne.paddingRight)||0,Ae=parseFloat(ne.paddingTop)||0,Oe=parseFloat(ne.paddingBottom)||0;S.value="";const Pe=S.scrollHeight;S.value=B;const De=(Pe-Ae-Oe)*n.maxRows+Ae+Oe;x.value={singleLineHeight:Pe,maxHeight:De,paddingLeft:Re,paddingRight:ie},S.style.height=G,S.style.maxHeight=`${De}px`}function ot(){const S=c.value;if(!S)return 0;x.value.singleLineHeight===0&&qe();const{maxHeight:B}=x.value;B&&(S.style.maxHeight=`${B}px`),S.style.height="auto";const G=S.scrollHeight;return S.style.height=`${B?Math.min(G,B):G}px`,G}function Ve(S){w.value!==S&&(E.value=!0,w.value=S)}function ht(S){const B=window.getComputedStyle(S);if(B.font?.trim())return B.font;if(B.fontSize&&B.fontFamily){const G=`${B.fontStyle} ${B.fontVariant} ${B.fontWeight} ${B.fontSize}/${B.lineHeight} ${B.fontFamily}`;if(G.trim())return G}return process.env.NODE_ENV!=="production"&&!U.value&&(U.value=!0,console.warn("[CopilotChatInput] Could not resolve textarea font for layout measurement. Text-width-based expansion will be skipped until the next container resize.")),null}function Fe(){const S=p.value,B=y.value,G=u.value;if(!S||!B||!G)return F.value=null,null;const ne=window.getComputedStyle(S),Re=parseFloat(ne.paddingLeft)||0,ie=parseFloat(ne.paddingRight)||0,Ae=parseFloat(ne.columnGap)||0,Oe=S.clientWidth-Re-ie;if(Oe<=0)return F.value=null,null;const Pe=B.getBoundingClientRect().width,je=G.getBoundingClientRect().width,De=Math.max(Oe-Pe-je-Ae*2,0);if(De<=0)return F.value=null,null;const at={compactWidth:De};return F.value=at,at}function Te(){if(n.mode!=="input"){Ve("compact");return}if(typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 767px)").matches){qe(),ot(),Ve("expanded");return}const S=c.value;if(!S||!p.value||!y.value||!u.value)return;x.value.singleLineHeight===0&&qe();const B=ot(),G=x.value.singleLineHeight,ne=K.value.includes(`
72
+ `),Re=G>0?B>G+1:!1;let ie=ne||Re;if(!ie){const Ae=F.value??Fe();if(Ae&&Ae.compactWidth>0){const Oe=Math.max(Ae.compactWidth-x.value.paddingLeft-x.value.paddingRight,0);if(Oe>0){const Pe=T.value??document.createElement("canvas");T.value||(T.value=Pe);const je=Pe.getContext("2d");if(je){const De=ht(S);if(De){je.font=De;const at=K.value.length>0?K.value.split(`
73
+ `):[""];let vt=0;for(const jn of at){const Nt=je.measureText(jn||" ").width;Nt>vt&&(vt=Nt)}vt>Oe&&(ie=!0)}}else process.env.NODE_ENV!=="production"&&!te.value&&(te.value=!0,console.warn("[CopilotChatInput] canvas.getContext('2d') returned null. Text-width-based expansion will be skipped."))}}}Ve(ie?"expanded":"compact")}function Ue(S){if(E.value){E.value=!1;return}S&&(F.value=null,U.value=!1,te.value=!1),A.value!==null&&cancelAnimationFrame(A.value),A.value=requestAnimationFrame(()=>{A.value=null,Te()})}return e.watch(()=>n.modelValue,S=>{W.value&&(C.value=S??"")}),e.watch(K,S=>{we(S),Te()}),e.watch(ye,()=>{ye.value.length===0&&(m.value=null)}),e.watch([m,()=>J.value.length],([S,B])=>{S!==null&&S!==g.value&&B>0&&(b.value=0),g.value=S},{immediate:!0}),e.watch([m,J],()=>{if(m.value===null){b.value=0;return}if(J.value.length===0){b.value=-1;return}(b.value<0||b.value>=J.value.length)&&(b.value=0)},{immediate:!0}),e.watch(()=>n.mode,async S=>{S!=="input"&&(w.value="compact",m.value=null,Le());const B=v.value;if(B){if(S==="transcribe"){try{await B.start()}catch(G){console.error(G)}return}if(B.state==="recording")try{await B.stop()}catch{}}},{immediate:!0}),e.watch(v,async S=>{if(!(!S||n.mode!=="transcribe")&&S.state==="idle")try{await S.start()}catch(B){console.error(B)}},{immediate:!0}),e.watch(b,async S=>{if(!xe.value||S<0)return;await e.nextTick(),d.value?.querySelector(`[data-slash-index="${S}"]`)?.scrollIntoView?.({block:"nearest"})}),e.watch(()=>n.disabled,S=>{S&&Le()}),e.onMounted(()=>{if(n.autoFocus&&n.mode==="input"&&c.value?.focus(),Te(),typeof ResizeObserver<"u"){const S=new Set;p.value&&S.add(p.value),y.value&&S.add(y.value),u.value&&S.add(u.value),H=new ResizeObserver(B=>{const G=B.some(ne=>S.has(ne.target));Ue(G)}),p.value&&H.observe(p.value),y.value&&H.observe(y.value),u.value&&H.observe(u.value),c.value&&H.observe(c.value)}L=S=>{if(!k.value)return;const B=S.target;B&&(f.value?.contains(B)||y.value?.contains(B)||Le())},document.addEventListener("mousedown",L)}),e.onBeforeUnmount(()=>{L&&(document.removeEventListener("mousedown",L),L=null),H?.disconnect(),H=null,A.value!==null&&(cancelAnimationFrame(A.value),A.value=null)}),(S,B)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-chat-input-container",class:Z.value,style:{transform:t.keyboardHeight>0?`translateY(-${t.keyboardHeight}px)`:void 0,transition:"transform 0.2s ease-out",...t.positioning==="absolute"||t.bottomAnchored?{paddingBottom:"var(--copilotkit-license-banner-offset, 0px)"}:{}}},pe.value),[e.createElementVNode("div",ka,[e.renderSlot(S.$slots,"layout",{mode:t.mode,isMultiline:O.value,value:K.value,disabled:t.disabled,placeholder:$.value,isProcessing:q.value,sendDisabled:Q.value,menuOpen:k.value,menuItems:N.value,onToggleMenu:Se,onMenuAction:Be,onUpdateValue:$e,onSubmit:D,onKeydown:ue,onSendClick:ee,onStartTranscribe:()=>a("start-transcribe"),onCancelTranscribe:()=>a("cancel-transcribe"),onFinishTranscribe:ze},()=>[e.createElementVNode("div",{ref_key:"shellRef",ref:l,"data-testid":"copilot-chat-input-shell",class:"cpk:flex cpk:w-full cpk:cursor-text cpk:flex-col cpk:items-center cpk:justify-center cpk:overflow-visible cpk:rounded-[28px] cpk:bg-white cpk:bg-clip-padding cpk:shadow-[0_4px_4px_0_#0000000a,0_0_1px_0_#0000009e] cpk:contain-inline-size cpk:dark:bg-[#303030]","data-layout":O.value?"expanded":"compact",onClick:nt},[e.createElementVNode("div",{ref_key:"gridRef",ref:p,class:e.normalizeClass(["cpk:grid cpk:w-full cpk:gap-x-3 cpk:gap-y-3 cpk:px-3 cpk:py-2",O.value?"cpk:grid-cols-[auto_minmax(0,1fr)_auto] cpk:grid-rows-[auto_auto]":"cpk:grid-cols-[auto_minmax(0,1fr)_auto] cpk:items-center"]),"data-layout":O.value?"expanded":"compact"},[e.createElementVNode("div",{ref_key:"addButtonContainerRef",ref:y,class:e.normalizeClass(["cpk:relative cpk:flex cpk:items-center cpk:col-start-1",O.value?"cpk:row-start-2":"cpk:row-start-1"])},[e.renderSlot(S.$slots,"add-menu-button",{disabled:t.disabled||t.mode==="transcribe"||!re.value,menuOpen:k.value,toggleMenu:Se,labels:I.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-add","aria-label":I.value.chatInputToolbarAddButtonLabel,disabled:t.disabled||t.mode==="transcribe"||!re.value,class:"cpk:ml-1 cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:disabled:hover:bg-transparent cpk:disabled:hover:text-[#444444] cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF] cpk:dark:disabled:hover:bg-transparent cpk:dark:disabled:hover:text-[#CCCCCC]",onClick:e.withModifiers(Se,["stop"])},[e.createVNode(e.unref(oe.Plus),{class:"cpk:size-[20px]"})],8,wa)]),k.value&&re.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"addMenuRef",ref:f,class:"cpk:absolute cpk:bottom-full cpk:left-0 cpk:z-30 cpk:mb-2 cpk:min-w-[220px] cpk:overflow-hidden cpk:rounded-lg cpk:border cpk:border-border cpk:bg-white cpk:shadow-lg cpk:dark:border-[#3a3a3a] cpk:dark:bg-[#1f1f1f]","data-testid":"copilot-chat-input-add-menu"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,G=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:G.key},[G.type==="separator"?(e.openBlock(),e.createElementBlock("div",Ca)):G.type==="label"?(e.openBlock(),e.createElementBlock("div",{key:1,class:"cpk:flex cpk:items-center cpk:gap-1 cpk:px-3 cpk:py-1.5 cpk:text-xs cpk:font-semibold cpk:text-muted-foreground",style:e.normalizeStyle({paddingLeft:`${12+G.depth*12}px`})},[e.createElementVNode("span",null,e.toDisplayString(G.label),1),e.createVNode(e.unref(oe.ChevronRight),{class:"cpk:size-3"})],4)):(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",role:"menuitem",class:"cpk:w-full cpk:px-3 cpk:py-2 cpk:text-left cpk:text-sm cpk:transition-colors cpk:hover:bg-muted cpk:dark:hover:bg-[#2f2f2f]",style:e.normalizeStyle({paddingLeft:`${12+G.depth*12}px`}),onClick:ne=>Be(G.action)},e.toDisplayString(G.label),13,xa))],64))),128))],512)):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["cpk:relative cpk:flex cpk:min-h-[50px] cpk:min-w-0 cpk:flex-col cpk:justify-center",O.value?"cpk:col-span-3 cpk:row-start-1":"cpk:col-start-2 cpk:row-start-1"])},[t.mode==="transcribe"?e.renderSlot(S.$slots,"audio-recorder",{key:0},()=>[e.createVNode(Tn,{ref_key:"audioRecorderRef",ref:v},null,512)]):t.mode==="processing"?(e.openBlock(),e.createElementBlock("div",Sa,[e.createVNode(e.unref(oe.Loader2),{class:"cpk:size-[26px] cpk:animate-spin cpk:text-muted-foreground"})])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.renderSlot(S.$slots,"text-area",{value:K.value,disabled:t.disabled,placeholder:$.value,onInput:Y,onKeydown:ue,autoFocus:t.autoFocus,isExpanded:O.value,rows:1,labels:I.value},()=>[e.createElementVNode("textarea",{ref_key:"textareaRef",ref:c,"data-testid":"copilot-chat-input-textarea",value:K.value,placeholder:$.value,disabled:t.disabled,rows:"1",class:e.normalizeClass(["cpk:w-full cpk:bg-transparent cpk:py-3 cpk:text-[16px] cpk:font-normal cpk:leading-relaxed cpk:text-foreground cpk:antialiased cpk:outline-none cpk:placeholder:text-[#00000077] cpk:dark:placeholder:text-[#fffc]",O.value?"cpk:px-5":"cpk:pr-5"]),style:{overflow:"auto",resize:"none"},onInput:Y,onKeydown:ue,onCompositionstart:B[0]||(B[0]=G=>h.value=!0),onCompositionend:B[1]||(B[1]=G=>h.value=!1)},null,42,Ta)]),xe.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"slashMenuRef",ref:d,"data-testid":"copilot-slash-menu",role:"listbox","aria-label":"Slash commands",class:"cpk:absolute cpk:bottom-full cpk:left-0 cpk:right-0 cpk:z-30 cpk:mb-2 cpk:max-h-64 cpk:overflow-y-auto cpk:rounded-lg cpk:border cpk:border-border cpk:bg-white cpk:shadow-lg cpk:dark:border-[#3a3a3a] cpk:dark:bg-[#1f1f1f]",style:{maxHeight:"200px"}},[J.value.length===0?(e.openBlock(),e.createElementBlock("div",Ia," No commands found ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(J.value,(G,ne)=>(e.openBlock(),e.createElementBlock("button",{key:`${G.label}-${ne}`,type:"button",role:"option","data-slash-index":ne,"aria-selected":ne===b.value,"data-active":ne===b.value?"true":void 0,class:e.normalizeClass(["cpk:w-full cpk:px-3 cpk:py-2 cpk:text-left cpk:text-sm cpk:transition-colors cpk:hover:bg-muted cpk:dark:hover:bg-[#2f2f2f]",ne===b.value?"cpk:bg-muted cpk:dark:bg-[#2f2f2f]":"cpk:bg-transparent"]),onMouseenter:Re=>b.value=ne,onMousedown:e.withModifiers(Re=>tt(G),["prevent"])},e.toDisplayString(G.label),43,Ra))),128))],512)):e.createCommentVNode("",!0)],64))],2),e.createElementVNode("div",{ref_key:"actionsContainerRef",ref:u,class:e.normalizeClass(["cpk:flex cpk:items-center cpk:justify-end cpk:gap-2",O.value?"cpk:col-start-3 cpk:row-start-2":"cpk:col-start-3 cpk:row-start-1"])},[t.mode==="transcribe"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[ae.value?e.renderSlot(S.$slots,"cancel-transcribe-button",{key:0,disabled:t.disabled,onClick:()=>a("cancel-transcribe"),labels:I.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-cancel-transcribe","aria-label":I.value.chatInputToolbarCancelTranscribeButtonLabel,disabled:t.disabled,class:"cpk:mr-2 cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF]",onClick:B[2]||(B[2]=G=>a("cancel-transcribe"))},[e.createVNode(e.unref(oe.X),{class:"cpk:size-[18px]"})],8,Aa)]):e.createCommentVNode("",!0),le.value?e.renderSlot(S.$slots,"finish-transcribe-button",{key:1,disabled:t.disabled,onClick:ze,labels:I.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-finish-transcribe","aria-label":I.value.chatInputToolbarFinishTranscribeButtonLabel,disabled:t.disabled,class:"cpk:mr-[10px] cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF]",onClick:ze},[e.createVNode(e.unref(oe.Check),{class:"cpk:size-[18px]"})],8,Ea)]):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[_.value?e.renderSlot(S.$slots,"start-transcribe-button",{key:0,disabled:t.disabled,onClick:()=>a("start-transcribe"),labels:I.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-start-transcribe","aria-label":I.value.chatInputToolbarStartTranscribeButtonLabel,disabled:t.disabled,class:"cpk:mr-2 cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:disabled:hover:bg-transparent cpk:disabled:hover:text-[#444444] cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF] cpk:dark:disabled:hover:bg-transparent cpk:dark:disabled:hover:text-[#CCCCCC]",onClick:B[3]||(B[3]=G=>a("start-transcribe"))},[e.createVNode(e.unref(oe.Mic),{class:"cpk:size-[18px]"})],8,$a)]):e.createCommentVNode("",!0),e.renderSlot(S.$slots,"send-button",{disabled:Q.value,isProcessing:q.value,onClick:ee},()=>[e.createElementVNode("div",Ma,[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-send","aria-label":"Send message",disabled:Q.value,class:"cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-black cpk:text-white cpk:transition-colors cpk:hover:opacity-70 cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:disabled:bg-[#00000014] cpk:disabled:text-[rgb(13,13,13)] cpk:disabled:hover:opacity-100 cpk:dark:bg-white cpk:dark:text-black cpk:dark:disabled:bg-[#454545] cpk:dark:disabled:text-white",onClick:ee},[q.value&&P.value?(e.openBlock(),e.createBlock(e.unref(oe.Square),{key:0,class:"cpk:size-[18px] cpk:fill-current"})):(e.openBlock(),e.createBlock(e.unref(oe.ArrowUp),{key:1,class:"cpk:size-[18px]"}))],8,Ba)])])],64))],2)],10,ya)],8,ba)])]),se.value?e.renderSlot(S.$slots,"disclaimer",{key:0,labels:I.value},()=>[e.createElementVNode("p",Va,e.toDisplayString(I.value.chatDisclaimerText),1)]):e.createCommentVNode("",!0)],16))}}),Fa=["data-card-type"],Na={key:0,class:"cpk:absolute cpk:inset-0 cpk:flex cpk:items-center cpk:justify-center cpk:bg-black/40 cpk:z-10","data-testid":"copilot-chat-attachment-uploading-overlay"},Oa=["onClick"],Da=["src","alt"],La={key:1,class:"cpk:w-full cpk:h-full cpk:relative"},Pa=["src","alt"],za=["src"],Ua=["onClick"],ja={key:2,class:"cpk:flex cpk:flex-col cpk:gap-1 cpk:w-full"},_a=["src"],Ha={key:0,class:"cpk:text-xs cpk:font-medium cpk:overflow-hidden cpk:text-ellipsis cpk:whitespace-nowrap"},Wa=["onClick"],qa={class:"cpk:w-8 cpk:h-8 cpk:rounded-md cpk:bg-primary cpk:text-primary-foreground cpk:flex cpk:items-center cpk:justify-center cpk:text-[10px] cpk:font-semibold cpk:shrink-0"},Ga={class:"cpk:flex cpk:flex-col cpk:min-w-0"},Ka={class:"cpk:text-xs cpk:font-medium cpk:break-all cpk:leading-tight","data-testid":"copilot-chat-attachment-document-filename"},Ja={key:0,class:"cpk:text-[11px] cpk:text-muted-foreground"},Xa={key:2,class:"cpk:w-full cpk:h-full cpk:bg-muted-foreground/20","data-testid":"copilot-chat-attachment-placeholder"},Qa=["onClick"],Ya=["src","alt"],Za=["src"],es=["src","title"],ts={key:1,class:"cpk:w-[90vw] cpk:max-w-[800px] cpk:max-h-[90vh] cpk:overflow-auto cpk:rounded-lg cpk:bg-white cpk:dark:bg-gray-900 cpk:p-6"},ns={key:0,class:"cpk:text-sm cpk:whitespace-pre-wrap cpk:wrap-break-word cpk:text-gray-800 cpk:dark:text-gray-200 cpk:font-mono cpk:m-0","data-testid":"copilot-chat-attachment-lightbox-document-text"},os=["src","title"],as={key:2,class:"cpk:flex cpk:flex-col cpk:items-center cpk:gap-4 cpk:p-8 cpk:rounded-lg cpk:bg-white cpk:dark:bg-gray-900","data-testid":"copilot-chat-attachment-lightbox-document-fallback"},ss={class:"cpk:w-16 cpk:h-16 cpk:rounded-xl cpk:bg-primary cpk:text-primary-foreground cpk:flex cpk:items-center cpk:justify-center cpk:text-xl cpk:font-bold"},rs={class:"cpk:text-center"},is={class:"cpk:text-base cpk:font-medium cpk:text-gray-800 cpk:dark:text-gray-200"},ls={class:"cpk:text-sm cpk:text-gray-500 cpk:dark:text-gray-400 cpk:mt-1"},xt=e.defineComponent({__name:"CopilotChatAttachmentQueue",props:{attachments:{default:()=>[]},className:{default:""}},emits:["remove-attachment"],setup(t,{emit:o}){const n=t,a=o,r=e.ref(null),s=e.ref(null),i=e.computed(()=>r.value!==null),l=e.computed(()=>{const h=r.value;if(!h||h.type!=="document")return!1;const w=h.source.mimeType;return f(w)||v(w)}),c=e.computed(()=>{const h=r.value;if(!h||h.type!=="document")return null;const w=h.source.mimeType;if(!v(w)||h.source.type!=="data")return null;try{return atob(h.source.value)}catch{return h.source.value}}),p=e.computed(()=>{const h=r.value;return!h||h.type!=="document"?null:h.source.type==="url"?h.source.value:s.value});e.watch(r,(h,w)=>{if(s.value&&(URL.revokeObjectURL(s.value),s.value=null),!h||h.type!=="document"||h.source.type!=="data"||typeof window>"u")return;const m=h.source.mimeType;if(!f(m)&&!v(m))return;const b=C(h.source.value,m);s.value=b},{immediate:!0}),e.watch(i,(h,w,m)=>{if(!h||typeof document>"u")return;const b=g=>{g.key==="Escape"&&u()};document.addEventListener("keydown",b),m(()=>{document.removeEventListener("keydown",b)})}),e.onBeforeUnmount(()=>{s.value&&(URL.revokeObjectURL(s.value),s.value=null)});function y(h){if(typeof document<"u"){const w=document;if(typeof w.startViewTransition=="function"){w.startViewTransition(()=>{r.value=h});return}}r.value=h}function u(){r.value=null}function d(h){return h.type==="image"||h.type==="video"?"cpk:w-[72px] cpk:h-[72px]":h.type==="audio"?"cpk:min-w-[200px] cpk:max-w-[280px] cpk:flex-col cpk:p-1 cpk:pr-8":"cpk:p-2 cpk:px-3 cpk:pr-8 cpk:max-w-[240px]"}function f(h){return!!h&&h.includes("pdf")}function v(h){return!!h&&h.startsWith("text/")}function C(h,w){try{const m=atob(h),b=new Uint8Array(m.length);for(let k=0;k<m.length;k+=1)b[k]=m.charCodeAt(k);const g=new Blob([b],{type:w||"application/octet-stream"});return URL.createObjectURL(g)}catch(m){return console.error("[CopilotKit] Failed to decode attachment data:",m),null}}return(h,w)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[n.attachments.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["cpk:flex cpk:flex-wrap cpk:gap-2 cpk:p-2",n.className]),"data-testid":"copilot-chat-attachment-queue"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.attachments,m=>(e.openBlock(),e.createElementBlock("div",{key:m.id,class:e.normalizeClass(["cpk:relative cpk:inline-flex cpk:rounded-lg cpk:overflow-hidden cpk:border cpk:border-border",d(m)]),"data-testid":"copilot-chat-attachment-item","data-card-type":m.type},[m.status==="uploading"?(e.openBlock(),e.createElementBlock("div",Na,[...w[1]||(w[1]=[e.createElementVNode("div",{class:"cpk:w-5 cpk:h-5 cpk:border-2 cpk:border-white cpk:border-t-transparent cpk:rounded-full cpk:animate-spin"},null,-1)])])):e.createCommentVNode("",!0),m.status==="ready"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[m.type==="image"?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"cpk:w-full cpk:h-full cpk:border-none cpk:bg-transparent cpk:p-0 cpk:cursor-pointer","data-testid":"copilot-chat-attachment-image-button",onClick:b=>y(m)},[e.createElementVNode("img",{src:e.unref(z.getSourceUrl)(m.source),alt:m.filename||"Image attachment",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-image-thumbnail"},null,8,Da)],8,Oa)):m.type==="video"?(e.openBlock(),e.createElementBlock("div",La,[m.thumbnail?(e.openBlock(),e.createElementBlock("img",{key:0,src:m.thumbnail,alt:m.filename||"Video thumbnail",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-video-thumbnail"},null,8,Pa)):(e.openBlock(),e.createElementBlock("video",{key:1,src:e.unref(z.getSourceUrl)(m.source),preload:"metadata",muted:"",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-video-fallback"},null,8,za)),e.createElementVNode("button",{type:"button",class:"cpk:absolute cpk:inset-0 cpk:flex cpk:items-center cpk:justify-center cpk:z-10 cpk:cursor-pointer cpk:bg-black/20 cpk:border-none cpk:p-0","aria-label":"Play video","data-testid":"copilot-chat-attachment-video-play",onClick:b=>y(m)},[...w[2]||(w[2]=[e.createElementVNode("div",{class:"cpk:w-8 cpk:h-8 cpk:rounded-full cpk:bg-black/60 cpk:flex cpk:items-center cpk:justify-center cpk:text-white cpk:text-xs cpk:font-semibold"}," ▶ ",-1)])],8,Ua)])):m.type==="audio"?(e.openBlock(),e.createElementBlock("div",ja,[e.createElementVNode("audio",{src:e.unref(z.getSourceUrl)(m.source),controls:"",preload:"metadata",class:"cpk:w-full cpk:h-8","data-testid":"copilot-chat-attachment-audio-player"},null,8,_a),m.filename?(e.openBlock(),e.createElementBlock("span",Ha,e.toDisplayString(m.filename),1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:e.normalizeClass(["cpk:flex cpk:items-center cpk:gap-2 cpk:w-full cpk:border-none cpk:bg-transparent cpk:p-0 cpk:text-left",f(m.source.mimeType)||v(m.source.mimeType)?"cpk:cursor-pointer":"cpk:cursor-default"]),"data-testid":"copilot-chat-attachment-document-button",onClick:b=>(f(m.source.mimeType)||v(m.source.mimeType))&&y(m)},[e.createElementVNode("div",qa,e.toDisplayString(e.unref(z.getDocumentIcon)(m.source.mimeType??"")),1),e.createElementVNode("div",Ga,[e.createElementVNode("span",Ka,e.toDisplayString(m.filename||"Document"),1),m.size!=null?(e.openBlock(),e.createElementBlock("span",Ja,e.toDisplayString(e.unref(z.formatFileSize)(m.size)),1)):e.createCommentVNode("",!0)])],10,Wa))],64)):(e.openBlock(),e.createElementBlock("div",Xa)),e.createElementVNode("button",{type:"button",class:"cpk:absolute cpk:bg-black/60 cpk:text-white cpk:border-none cpk:rounded-full cpk:w-5 cpk:h-5 cpk:flex cpk:items-center cpk:justify-center cpk:cursor-pointer cpk:text-[10px] cpk:z-20 cpk:top-1 cpk:right-1","aria-label":"Remove attachment",onClick:b=>a("remove-attachment",m.id)}," ✕ ",8,Qa)],10,Fa))),128))],2)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"cpk:fixed cpk:inset-0 cpk:z-[9999] cpk:flex cpk:items-center cpk:justify-center cpk:bg-black/80","data-testid":"copilot-chat-attachment-lightbox",onClick:u},[e.createElementVNode("button",{type:"button",class:"cpk:absolute cpk:top-4 cpk:right-4 cpk:text-white cpk:bg-white/10 cpk:hover:bg-white/20 cpk:rounded-full cpk:w-10 cpk:h-10 cpk:flex cpk:items-center cpk:justify-center cpk:cursor-pointer cpk:border-none","aria-label":"Close preview",onClick:e.withModifiers(u,["stop"])}," ✕ "),e.createElementVNode("div",{"data-testid":"copilot-chat-attachment-lightbox-content",onClick:w[0]||(w[0]=e.withModifiers(()=>{},["stop"]))},[r.value.type==="image"?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(z.getSourceUrl)(r.value.source),alt:r.value.filename||"Image attachment",class:"cpk:max-w-[90vw] cpk:max-h-[90vh] cpk:object-contain cpk:rounded-lg","data-testid":"copilot-chat-attachment-lightbox-image"},null,8,Ya)):r.value.type==="video"?(e.openBlock(),e.createElementBlock("video",{key:1,src:e.unref(z.getSourceUrl)(r.value.source),controls:"",autoplay:"",class:"cpk:max-w-[90vw] cpk:max-h-[90vh] cpk:rounded-lg","data-testid":"copilot-chat-attachment-lightbox-video"},null,8,Za)):r.value.type==="document"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[l.value&&f(r.value.source.mimeType)&&p.value?(e.openBlock(),e.createElementBlock("iframe",{key:0,src:p.value,title:r.value.filename||"PDF preview",class:"cpk:w-[90vw] cpk:h-[90vh] cpk:max-w-[1000px] cpk:rounded-lg cpk:bg-white","data-testid":"copilot-chat-attachment-lightbox-document-iframe"},null,8,es)):l.value&&v(r.value.source.mimeType)?(e.openBlock(),e.createElementBlock("div",ts,[c.value!==null?(e.openBlock(),e.createElementBlock("pre",ns,e.toDisplayString(c.value),1)):p.value?(e.openBlock(),e.createElementBlock("iframe",{key:1,src:p.value,title:r.value.filename||"Text preview",class:"cpk:w-full cpk:h-[80vh] cpk:border-none","data-testid":"copilot-chat-attachment-lightbox-document-iframe"},null,8,os)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",as,[e.createElementVNode("div",ss,e.toDisplayString(e.unref(z.getDocumentIcon)(r.value.source.mimeType??"")),1),e.createElementVNode("div",rs,[e.createElementVNode("div",is,e.toDisplayString(r.value.filename||"Document"),1),e.createElementVNode("div",ls,e.toDisplayString(r.value.source.mimeType||"Unknown type")+" "+e.toDisplayString(r.value.size!=null?` · ${e.unref(z.formatFileSize)(r.value.size)}`:""),1)]),w[3]||(w[3]=e.createElementVNode("div",{class:"cpk:text-xs cpk:text-gray-400 cpk:dark:text-gray-500"}," No preview available for this file type ",-1))]))],64)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)]))],64))}}),cs=["data-message-id"],us=["aria-expanded"],ds={class:"cpk:font-medium"},ps={key:0,class:"cpk:inline-flex cpk:items-center cpk:ml-1"},ms={class:"cpk:overflow-hidden"},fs={key:0,class:"cpk:pb-2 cpk:pt-1"},gs={class:"cpk:text-sm cpk:text-muted-foreground"},hs={key:0,class:"cpk:inline-flex cpk:items-center cpk:ml-1 cpk:align-middle"},Mn=e.defineComponent({__name:"CopilotChatReasoningMessage",props:{message:{},messages:{default:()=>[]},isRunning:{type:Boolean,default:!1}},setup(t){const o=t;function n(h){if(h<1)return"a few seconds";if(h<60)return`${Math.round(h)} seconds`;const w=Math.floor(h/60),m=Math.round(h%60);return m===0?`${w} minute${w>1?"s":""}`:`${w}m ${m}s`}const a=e.computed(()=>typeof o.message.content=="string"?o.message.content:""),r=e.computed(()=>a.value.length>0),s=e.computed(()=>o.messages[o.messages.length-1]?.id===o.message.id),i=e.computed(()=>!!(o.isRunning&&s.value)),l=e.ref(0),c=e.ref(i.value),p=e.ref(!1);let y=null,u=null;function d(){u&&(clearInterval(u),u=null)}function f(){y!==null&&(l.value=(Date.now()-y)/1e3)}e.watch(i,h=>{if(h){y===null&&(y=Date.now()),d(),u=setInterval(f,1e3),p.value=!1,c.value=!0;return}d(),f(),p.value||(c.value=!1)},{immediate:!0}),e.onBeforeUnmount(()=>{d()});const v=e.computed(()=>i.value?"Thinking…":`Thought for ${n(l.value)}`);function C(){r.value&&(p.value=!0,c.value=!c.value)}return(h,w)=>(e.openBlock(),e.createElementBlock("div",{"data-copilotkit":"",class:"cpk:my-1","data-message-id":t.message.id},[e.renderSlot(h.$slots,"layout",{message:t.message,messages:t.messages,isRunning:t.isRunning,header:{isOpen:c.value,label:v.value,hasContent:r.value,isStreaming:i.value,onClick:r.value?C:void 0},contentView:{isStreaming:i.value,hasContent:r.value,content:a.value},toggle:{isOpen:c.value,contentView:{isStreaming:i.value,hasContent:r.value,content:a.value}}},()=>[e.renderSlot(h.$slots,"header",{isOpen:c.value,label:v.value,hasContent:r.value,isStreaming:i.value,onClick:r.value?C:void 0},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["cpk:inline-flex cpk:items-center cpk:gap-1 cpk:py-1 cpk:text-sm cpk:text-muted-foreground cpk:transition-colors cpk:select-none",r.value?"cpk:hover:text-foreground cpk:cursor-pointer":"cpk:cursor-default"]),"aria-expanded":r.value?c.value:void 0,onClick:w[0]||(w[0]=m=>r.value?C():void 0)},[e.createElementVNode("span",ds,e.toDisplayString(v.value),1),i.value&&!r.value?(e.openBlock(),e.createElementBlock("span",ps,[...w[1]||(w[1]=[e.createElementVNode("span",{class:"cpk:w-1.5 cpk:h-1.5 cpk:rounded-full cpk:bg-muted-foreground cpk:animate-pulse"},null,-1)])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createBlock(e.unref(oe.ChevronRight),{key:1,class:e.normalizeClass(["cpk:size-3.5 cpk:shrink-0 cpk:transition-transform cpk:duration-200",{"cpk:rotate-90":c.value}])},null,8,["class"])):e.createCommentVNode("",!0)],10,us)]),e.renderSlot(h.$slots,"toggle",{isOpen:c.value,contentView:{isStreaming:i.value,hasContent:r.value,content:a.value}},()=>[e.createElementVNode("div",{class:"cpk:grid cpk:transition-[grid-template-rows] cpk:duration-200 cpk:ease-in-out",style:e.normalizeStyle({gridTemplateRows:c.value?"1fr":"0fr"})},[e.createElementVNode("div",ms,[e.renderSlot(h.$slots,"content-view",{isStreaming:i.value,hasContent:r.value,content:a.value},()=>[r.value||i.value?(e.openBlock(),e.createElementBlock("div",fs,[e.createElementVNode("div",gs,[e.createVNode(e.unref(Yt.StreamMarkdown),{content:a.value},null,8,["content"]),i.value&&r.value?(e.openBlock(),e.createElementBlock("span",hs,[...w[2]||(w[2]=[e.createElementVNode("span",{class:"cpk:w-2 cpk:h-2 cpk:rounded-full cpk:bg-muted-foreground cpk:animate-pulse-cursor"},null,-1)])])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])])],4)])])],8,cs))}}),vs=["data-message-id"],ks=["data-multiline"],bs={class:"cpk:w-full cpk:bg-transparent cpk:flex cpk:items-center cpk:justify-end cpk:-mr-[5px] cpk:mt-[4px] cpk:invisible cpk:group-hover:visible"},ys={class:"cpk:flex cpk:items-center cpk:gap-1 cpk:justify-end"},ws=["aria-label","title"],Cs=["aria-label","title"],xs={class:"cpk:flex cpk:items-center cpk:gap-1"},Ss=["disabled"],Ts={class:"cpk:text-sm cpk:text-muted-foreground cpk:px-0 cpk:font-medium"},Is=["disabled"],Bn=e.defineComponent({__name:"CopilotChatUserMessage",props:{message:{},branchIndex:{default:0},numberOfBranches:{default:1}},emits:["edit-message","switch-to-branch"],setup(t,{emit:o}){const n=t,a=o,r=ge(),s=e.computed(()=>r.value?.labels??Ee),i=e.getCurrentInstance(),l=e.ref(!1);let c=null;const p=e.computed(()=>i?.vnode.props??{}),y=["cpk:inline-flex cpk:h-8 cpk:w-8 cpk:items-center cpk:justify-center cpk:rounded-md cpk:p-0","cpk:cursor-pointer cpk:text-[rgb(93,93,93)] cpk:transition-colors cpk:hover:bg-[#E8E8E8]","cpk:hover:text-[rgb(93,93,93)] cpk:dark:text-[rgb(243,243,243)] cpk:dark:hover:bg-[#303030]","cpk:dark:hover:text-[rgb(243,243,243)] cpk:disabled:pointer-events-none cpk:disabled:opacity-50"].join(" ");function u(T){return T?typeof T=="string"?T:T.map(F=>F&&typeof F=="object"&&"type"in F&&F.type==="text"&&typeof F.text=="string"?F.text:"").filter(F=>F.length>0).join(`
74
+ `):""}const d=e.computed(()=>u(n.message.content)),f=e.computed(()=>d.value.includes(`
75
+ `));function v(T){const F=p.value[T];return Array.isArray(F)?F.length>0:!!F}const C=e.computed(()=>v("onEditMessage")),h=e.computed(()=>n.numberOfBranches>1&&v("onSwitchToBranch")),w=e.computed(()=>n.branchIndex>0),m=e.computed(()=>n.branchIndex<n.numberOfBranches-1);function b(){c&&clearTimeout(c),l.value=!0,c=setTimeout(()=>{l.value=!1,c=null},2e3)}async function g(){if(d.value&&!(typeof navigator>"u"||typeof navigator.clipboard?.writeText!="function"))try{await navigator.clipboard.writeText(d.value),b()}catch(T){console.error("Failed to copy to clipboard:",T)}}function k(){if(!C.value)return;const T={message:n.message};a("edit-message",T)}function x(T){if(!h.value)return;const F={branchIndex:T,numberOfBranches:n.numberOfBranches,message:n.message};a("switch-to-branch",F)}function A(){w.value&&x(n.branchIndex-1)}function E(){m.value&&x(n.branchIndex+1)}return e.onBeforeUnmount(()=>{c&&clearTimeout(c)}),(T,F)=>e.renderSlot(T.$slots,"layout",{message:t.message,content:d.value,isMultiline:f.value,showBranchNavigation:h.value,hasEditAction:C.value,branchIndex:t.branchIndex,numberOfBranches:t.numberOfBranches,canGoPrev:w.value,canGoNext:m.value,onCopy:g,onEdit:k,goPrev:A,goNext:E,copied:l.value},()=>[e.createElementVNode("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-user-message",class:"cpk:flex cpk:flex-col cpk:items-end cpk:group cpk:pt-10","data-message-id":t.message.id},T.$attrs),[e.renderSlot(T.$slots,"message-renderer",{message:t.message,content:d.value,isMultiline:f.value},()=>[e.createElementVNode("div",{class:e.normalizeClass(["cpk:prose cpk:dark:prose-invert cpk:bg-muted cpk:relative cpk:max-w-[80%] cpk:rounded-[18px] cpk:px-4 cpk:py-1.5 cpk:inline-block cpk:whitespace-pre-wrap",{"cpk:py-3":f.value}]),"data-multiline":f.value?"true":void 0},e.toDisplayString(d.value),11,ks)]),e.renderSlot(T.$slots,"toolbar",{message:t.message,showBranchNavigation:h.value,hasEditAction:C.value},()=>[e.createElementVNode("div",bs,[e.createElementVNode("div",ys,[e.renderSlot(T.$slots,"toolbar-items"),e.renderSlot(T.$slots,"copy-button",{onCopy:g,copied:l.value,label:s.value.userMessageToolbarCopyMessageLabel},()=>[e.createElementVNode("button",{"data-testid":"copilot-user-copy-button",type:"button",class:e.normalizeClass(e.unref(y)),"aria-label":s.value.userMessageToolbarCopyMessageLabel,title:s.value.userMessageToolbarCopyMessageLabel,onClick:g},[l.value?(e.openBlock(),e.createBlock(e.unref(oe.Check),{key:0,class:"cpk:size-[18px]"})):(e.openBlock(),e.createBlock(e.unref(oe.Copy),{key:1,class:"cpk:size-[18px]"}))],10,ws)]),C.value?e.renderSlot(T.$slots,"edit-button",{key:0,onEdit:k,label:s.value.userMessageToolbarEditMessageLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(y)),"aria-label":s.value.userMessageToolbarEditMessageLabel,title:s.value.userMessageToolbarEditMessageLabel,onClick:k},[e.createVNode(e.unref(oe.Edit),{class:"cpk:size-[18px]"})],10,Cs)]):e.createCommentVNode("",!0),h.value?e.renderSlot(T.$slots,"branch-navigation",{key:1,branchIndex:t.branchIndex,numberOfBranches:t.numberOfBranches,canGoPrev:w.value,canGoNext:m.value,goPrev:A,goNext:E},()=>[e.createElementVNode("div",xs,[e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(y),"cpk:h-6 cpk:w-6 cpk:p-0"]),disabled:!w.value,"aria-label":"Previous branch",title:"Previous branch",onClick:A},[e.createVNode(e.unref(oe.ChevronLeft),{class:"cpk:size-[20px]"})],10,Ss),e.createElementVNode("span",Ts,e.toDisplayString(t.branchIndex+1)+"/"+e.toDisplayString(t.numberOfBranches),1),e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(y),"cpk:h-6 cpk:w-6 cpk:p-0"]),disabled:!m.value,"aria-label":"Next branch",title:"Next branch",onClick:E},[e.createVNode(e.unref(oe.ChevronRight),{class:"cpk:size-[20px]"})],10,Is)])]):e.createCommentVNode("",!0)])])])],16,vs)])}}),Vn=e.defineComponent({__name:"CopilotChatMessageView",props:{messages:{default:()=>[]},isRunning:{type:Boolean,default:!1}},setup(t){const o=t,{copilotkit:n}=ke(),a=ge(),r=e.ref(0),s=e.ref(null),i=e.useSlots(),l=e.computed(()=>Object.keys(i)),c=e.computed(()=>a.value?.agentId??z.DEFAULT_AGENT_ID),p=e.computed(()=>{const m=c.value,b=n.value.getAgent(m);return Kt(b,a.value?.threadId)??b});e.watch([c,()=>a.value?.threadId,()=>n.value,()=>n.value.runtimeConnectionStatus],([m,b],g,k)=>{const x=n.value.getAgent(c.value),A=Kt(x,b)??x;if(!A)return;const E=A.subscribe({onStateChanged:()=>{r.value+=1},onRunStartedEvent:()=>{r.value+=1},onRunFinishedEvent:()=>{r.value+=1},onRunErrorEvent:()=>{r.value+=1}});k(()=>E.unsubscribe())},{immediate:!0}),e.watch(()=>n.value,(m,b,g)=>{s.value=m.interruptState;const k=m.subscribe({onInterruptStateChanged:({interruptState:x})=>{s.value=x},onRuntimeConnectionStatusChanged:()=>{r.value+=1}});g(()=>k.unsubscribe())},{immediate:!0});function y(m){const b=new Map;for(const g of m){const k=b.get(g.id);if(k&&g.role==="assistant"&&k.role==="assistant"){const x=g.content||k.content,A=g.toolCalls??k.toolCalls;b.set(g.id,{...k,...g,content:x,toolCalls:A})}else b.set(g.id,g)}return[...b.values()]}const u=e.computed(()=>y(o.messages)),d=e.computed(()=>o.messages[o.messages.length-1]),f=e.computed(()=>o.isRunning&&d.value?.role!=="reasoning");e.watch([()=>o.messages.length,()=>u.value.length],([m,b])=>{process.env.NODE_ENV==="development"&&b<m&&console.warn(`CopilotChatMessageView: Deduplicated ${m-b} message(s) with duplicate IDs.`)},{immediate:!0});function v(m){r.value+=0;const b=c.value,g=a.value?.threadId??"",k=n.value,x=k.getRunIdForMessage(b,g,m.id)??k.getRunIdsForThread(b,g).slice(-1)[0],A=x??`missing-run-id:${m.id}`,E=p.value??k.getAgent(b),T=x&&E?E.messages.filter(R=>k.getRunIdForMessage(b,g,R.id)===x).map(R=>R.id):[m.id],F=E?E.messages.findIndex(R=>R.id===m.id):-1,U=F>=0?F:0,te=x?Math.max(T.indexOf(m.id),0):0,H=x?T.length:1,L=x?k.getStateByRun(b,g,x):void 0;return{runId:A,messageIndex:U,messageIndexInRun:te,numberOfMessagesInRun:H,agentId:b,stateSnapshot:L}}function C(m){return`activity-${m}`}function h(m,b){if(r.value+=0,i[b==="before"?"message-before":"message-after"])return null;const k=c.value,A=[...n.value.renderCustomMessages].filter(E=>E.agentId===void 0||E.agentId===k).sort((E,T)=>{const F=E.agentId!==void 0,U=T.agentId!==void 0;return F===U?0:F?-1:1})[0];return A?.render?{renderer:A.render,props:{...v(m),message:m,position:b}}:null}function w(m){r.value+=0;const b=c.value,g=[...n.value.renderActivityMessages].filter(x=>x.activityType===m.activityType&&(x.agentId===void 0||x.agentId===b)).sort((x,A)=>{const E=x.agentId!==void 0,T=A.agentId!==void 0;return E===T?0:E?-1:1})[0];if(!g)return null;const k=g.content.safeParse(m.content);return k.success?{renderer:g.render,props:{activityType:m.activityType,content:k.data,message:m,agent:p.value}}:null}return(m,b)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"",class:"cpk:flex cpk:flex-col"},m.$attrs),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,g=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:g.id},[e.unref(i)["message-before"]?e.renderSlot(m.$slots,"message-before",{key:0,message:g,position:"before",runId:v(g).runId,messageIndex:v(g).messageIndex,messageIndexInRun:v(g).messageIndexInRun,numberOfMessagesInRun:v(g).numberOfMessagesInRun,agentId:v(g).agentId,stateSnapshot:v(g).stateSnapshot}):h(g,"before")?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h(g,"before").renderer),e.mergeProps({key:1,ref_for:!0},h(g,"before").props),null,16)):e.createCommentVNode("",!0),g.role==="assistant"?e.renderSlot(m.$slots,"assistant-message",{key:2,message:g,messages:t.messages,isRunning:t.isRunning},()=>[e.createVNode(Sn,{message:g,messages:t.messages,"is-running":t.isRunning},e.createSlots({_:2},[e.renderList(l.value,k=>({name:k,fn:e.withCtx(x=>[e.renderSlot(m.$slots,k,e.mergeProps({ref_for:!0},x))])}))]),1032,["message","messages","is-running"])]):g.role==="user"?e.renderSlot(m.$slots,"user-message",{key:3,message:g},()=>[e.createVNode(Bn,{message:g},e.createSlots({_:2},[e.renderList(l.value,k=>({name:k,fn:e.withCtx(x=>[e.renderSlot(m.$slots,k,e.mergeProps({ref_for:!0},x))])}))]),1032,["message"])]):g.role==="reasoning"?e.renderSlot(m.$slots,"reasoning-message",{key:4,message:g,messages:t.messages,isRunning:t.isRunning},()=>[e.createVNode(Mn,{message:g,messages:t.messages,"is-running":t.isRunning},null,8,["message","messages","is-running"])]):g.role==="activity"?e.renderSlot(m.$slots,C(g.activityType),{key:5,activityType:g.activityType,content:g.content,message:g,agent:p.value},()=>[e.renderSlot(m.$slots,"activity-message",{activityType:g.activityType,content:g.content,message:g,agent:p.value},()=>[w(g)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(g).renderer),e.mergeProps({key:0,ref_for:!0},w(g).props),null,16)):e.createCommentVNode("",!0)])]):e.createCommentVNode("",!0),e.unref(i)["message-after"]?e.renderSlot(m.$slots,"message-after",{key:6,message:g,position:"after",runId:v(g).runId,messageIndex:v(g).messageIndex,messageIndexInRun:v(g).messageIndexInRun,numberOfMessagesInRun:v(g).numberOfMessagesInRun,agentId:v(g).agentId,stateSnapshot:v(g).stateSnapshot}):h(g,"after")?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h(g,"after").renderer),e.mergeProps({key:7,ref_for:!0},h(g,"after").props),null,16)):e.createCommentVNode("",!0)],64))),128)),s.value?e.renderSlot(m.$slots,"interrupt",{key:0,event:s.value.event,result:s.value.result,resolve:s.value.resolve}):e.createCommentVNode("",!0),f.value?e.renderSlot(m.$slots,"cursor",{key:1},()=>[b[0]||(b[0]=e.createElementVNode("div",{class:"cpk:w-[11px] cpk:h-[11px] cpk:rounded-full cpk:bg-foreground cpk:animate-pulse cpk:ml-1","data-testid":"copilot-chat-cursor"},null,-1))]):e.createCommentVNode("",!0)],16))}}),Rs=["type","aria-busy","disabled"],As={key:0,class:"cpk:flex cpk:h-3.5 cpk:w-3.5 cpk:items-center cpk:justify-center cpk:text-muted-foreground cpk:sm:h-4 cpk:sm:w-4"},Es={key:1,class:"cpk:flex cpk:h-3.5 cpk:w-3.5 cpk:items-center cpk:justify-center cpk:text-muted-foreground cpk:sm:h-4 cpk:sm:w-4"},$s={class:"cpk:whitespace-nowrap cpk:font-medium cpk:leading-none"},Fn=e.defineComponent({__name:"CopilotChatSuggestionPill",props:{icon:{default:void 0},isLoading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{default:"button"}},setup(t){const o=t,n=e.computed(()=>o.isLoading||o.disabled);return(a,r)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps({"data-copilotkit":"","data-slot":"suggestion-pill","data-testid":"copilot-chat-suggestion-pill",type:t.type,"aria-busy":t.isLoading?"true":void 0,disabled:n.value,class:"cpk:group cpk:inline-flex cpk:h-7 cpk:w-fit cpk:items-center cpk:gap-1 cpk:rounded-full cpk:border cpk:border-border/60 cpk:bg-background cpk:px-2.5 cpk:text-[11px] cpk:leading-none cpk:text-foreground cpk:transition-colors cpk:cursor-pointer cpk:hover:bg-accent/60 cpk:hover:text-foreground cpk:focus-visible:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-ring cpk:focus-visible:ring-offset-2 cpk:focus-visible:ring-offset-background cpk:disabled:cursor-not-allowed cpk:disabled:text-muted-foreground cpk:disabled:hover:bg-background cpk:disabled:hover:text-muted-foreground cpk:pointer-events-auto cpk:sm:h-8 cpk:sm:gap-1.5 cpk:sm:px-3 cpk:sm:text-xs"},a.$attrs),[t.isLoading?(e.openBlock(),e.createElementBlock("span",As,[e.createVNode(e.unref(oe.Loader2),{class:"cpk:h-3.5 cpk:w-3.5 cpk:animate-spin cpk:sm:h-4 cpk:sm:w-4","aria-hidden":"true"})])):a.$slots.icon||t.icon?(e.openBlock(),e.createElementBlock("span",Es,[e.renderSlot(a.$slots,"icon",{},()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))])])):e.createCommentVNode("",!0),e.createElementVNode("span",$s,[e.renderSlot(a.$slots,"default")])],16,Rs))}}),Qe=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatSuggestionView",props:{suggestions:{},loadingIndexes:{default:()=>[]}},emits:["select-suggestion"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=e.computed(()=>new Set(n.loadingIndexes)),i=e.computed(()=>["cpk:flex cpk:flex-wrap cpk:items-center cpk:gap-1.5 cpk:pl-0 cpk:pr-4 cpk:pointer-events-none cpk:sm:gap-2 cpk:sm:px-0",r.class]),l=e.computed(()=>{const{class:u,...d}=r;return d});function c(u,d){return s.value.has(u)||d.isLoading===!0}function p(u,d){a("select-suggestion",u,d)}const y=e.computed(()=>({suggestions:n.suggestions,loadingIndexes:n.loadingIndexes,onSelectSuggestion:p,containerClass:i.value,containerAttrs:l.value}));return(u,d)=>e.renderSlot(u.$slots,"layout",e.normalizeProps(e.guardReactiveProps(y.value)),()=>[e.renderSlot(u.$slots,"container",e.normalizeProps(e.guardReactiveProps(y.value)),()=>[e.createElementVNode("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-chat-suggestion-view",class:i.value},l.value),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.suggestions,(f,v)=>e.renderSlot(u.$slots,"suggestion",{key:`${f.title}-${v}`,suggestion:f,index:v,isLoading:c(v,f),onSelect:()=>p(f,v)},()=>[e.createVNode(Fn,{"is-loading":c(v,f),type:"button",onClick:C=>p(f,v)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.title),1)]),_:2},1032,["is-loading","onClick"])])),128))],16)])])}}),Ms=["pin-to-bottom","pin-to-send","none"];function Bs(t){return t===void 0||t===!0?"pin-to-bottom":t===!1?"none":Ms.includes(t)?t:"pin-to-bottom"}const Vs={key:0,class:"cpk:absolute cpk:inset-0 cpk:z-50 cpk:pointer-events-none cpk:flex cpk:items-center cpk:justify-center cpk:bg-primary/5 cpk:border-2 cpk:border-dashed cpk:border-primary/40 cpk:rounded-lg cpk:m-2","data-testid":"copilot-chat-drop-overlay"},Fs={class:"cpk:flex cpk:h-full cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4","data-testid":"copilot-chat-view-welcome-screen"},Ns={class:"cpk:w-full cpk:max-w-3xl cpk:flex cpk:flex-col cpk:items-center"},Os={class:"cpk:mb-6"},Ds={class:"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center"},Ls={class:"cpk:w-full"},Ps={key:0,class:"cpk:mt-4 cpk:flex cpk:justify-center"},zs={class:"cpk:px-4 cpk:sm:px-0 cpk:[div[data-sidebar-chat]_&]:px-8 cpk:[div[data-popup-chat]_&]:px-6"},Us={class:"cpk:max-w-3xl cpk:mx-auto"},js={key:0,class:"cpk:mt-4 cpk:pl-0 cpk:pr-4 cpk:sm:px-0"},_s={key:0,class:"cpk:max-w-3xl cpk:mx-auto cpk:w-full cpk:pointer-events-auto"},Hs=16,Ws=12,Ze=e.defineComponent({__name:"CopilotChatView",props:{messages:{default:()=>[]},autoScroll:{type:[String,Boolean],default:!0},isRunning:{type:Boolean,default:!1},suggestions:{default:()=>[]},suggestionLoadingIndexes:{default:()=>[]},welcomeScreen:{type:Boolean,default:!0},attachments:{},dragOver:{type:Boolean},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean,default:!1},hasExplicitThreadId:{type:Boolean,default:!1},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=ge(),s=e.computed(()=>r.value?.labels??Ee),i=e.getCurrentInstance(),l=e.useSlots(),c=e.ref(null),p=e.ref(null),y=e.ref(null),u=e.ref(null),d=e.ref(0),f=e.ref(!0),v=e.computed(()=>n.inputValue!==void 0),C=e.ref(n.inputValue??""),h=e.computed(()=>Bs(n.autoScroll)),w=e.computed(()=>h.value==="pin-to-bottom"),m=e.computed(()=>h.value==="pin-to-send");va({scrollRef:c,contentRef:p,spacerRef:y,topOffset:16});const{isKeyboardOpen:b,keyboardHeight:g}=En(),k=e.computed(()=>b.value?g.value:0),x=e.computed(()=>v.value?n.inputValue??"":C.value),A=e.computed(()=>!n.isConnecting&&!n.isRunning&&Array.isArray(n.suggestions)&&n.suggestions.length>0),E=e.computed(()=>Array.isArray(n.attachments)&&n.attachments.length>0),T=e.computed(()=>i?.vnode.props??{}),F=e.computed(()=>Object.keys(l).filter(N=>N!=="message-view"&&N!=="scroll-view"&&N!=="feather"&&N!=="scroll-to-bottom-button"&&N!=="input"&&N!=="suggestion-view"&&N!=="welcome-screen"&&N!=="welcome-message")),U=e.computed(()=>n.messages.length===0&&n.welcomeScreen!==!1&&!n.isConnecting&&!n.hasExplicitThreadId),te=e.computed(()=>le("onAddFile")),H=e.computed(()=>le("onStop")),L=e.computed(()=>le("onStartTranscribe")),R=e.computed(()=>le("onCancelTranscribe")),W=e.computed(()=>le("onFinishTranscribe")),K=e.computed(()=>typeof n.onFinishTranscribeWithAudio=="function"),I=e.computed(()=>`${d.value+(A.value?4:32)}px`),$=e.computed(()=>!U.value&&!f.value);let O=null,q=null;function se(){if(typeof ResizeObserver>"u")return;O?.disconnect(),O=null;const N=u.value;N&&(O=new ResizeObserver(J=>{const xe=f.value,$e=J[0]?.contentRect?.height;typeof $e=="number"?d.value=$e:j(),P(),w.value&&xe&&_("auto")}),O.observe(N))}function V(){if(typeof ResizeObserver>"u")return;q?.disconnect(),q=null;const N=p.value;N&&(q=new ResizeObserver(()=>{const J=f.value;P(),w.value&&J&&_("auto")}),q.observe(N))}e.watch(U,async N=>{N||(await e.nextTick(),j(),se(),V())}),e.watch(()=>n.inputValue,N=>{v.value&&(C.value=N??"")}),e.watch([()=>n.messages,()=>n.suggestions,()=>n.isRunning],async()=>{const N=f.value;await e.nextTick(),!(!w.value||!N)&&(_("auto"),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{_("auto")}))},{deep:!0});function P(){const N=c.value;if(!N){f.value=!0;return}const J=N.scrollHeight-N.scrollTop-N.clientHeight;f.value=J<=Ws}function j(){const N=u.value;d.value=N?.offsetHeight??0}function _(N="smooth"){const J=c.value;J&&(typeof J.scrollTo=="function"?J.scrollTo({top:J.scrollHeight,behavior:N}):J.scrollTop=J.scrollHeight,P())}function ae(){P()}function le(N){const J=T.value[N];return Array.isArray(J)?J.length>0:!!J}function M(N){v.value||(C.value=N),a("input-change",N)}function Q(N){a("submit-message",N)}function Z(){a("stop")}function pe(N,J){a("select-suggestion",N,J)}function be(){a("add-file")}function de(N){n.onDragOver?.(N)}function Ie(N){n.onDragLeave?.(N)}function Ce(N){n.onDrop?.(N)}function ce(){a("start-transcribe")}function re(){a("cancel-transcribe")}function he(){a("finish-transcribe")}async function ye(N){await n.onFinishTranscribeWithAudio?.(N)}const Me=e.computed(()=>{const N={"onUpdate:modelValue":M,onSubmitMessage:Q};return H.value&&(N.onStop=Z),te.value&&(N.onAddFile=be),L.value&&(N.onStartTranscribe=ce),R.value&&(N.onCancelTranscribe=re),W.value&&(N.onFinishTranscribe=he),K.value&&(N.onFinishTranscribeWithAudio=ye),N});return e.onMounted(async()=>{await e.nextTick(),j(),P(),w.value&&(_("auto"),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{_("auto")})),se(),V()}),e.onBeforeUnmount(()=>{O?.disconnect(),q?.disconnect(),O=null,q=null}),(N,J)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"",class:"cpk:relative cpk:h-full","data-testid":"copilot-chat-view"},N.$attrs,{onDragover:de,onDragleave:Ie,onDrop:Ce}),[t.dragOver?(e.openBlock(),e.createElementBlock("div",Vs,[...J[3]||(J[3]=[e.createElementVNode("span",{class:"cpk:text-sm cpk:font-medium cpk:text-primary/70"}," Drop files here ",-1)])])):e.createCommentVNode("",!0),U.value?e.renderSlot(N.$slots,"welcome-screen",{key:1,suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,attachments:t.attachments??[],modelValue:x.value,isRunning:t.isRunning,inputMode:t.inputMode,inputToolsMenu:t.inputToolsMenu,onUpdateModelValue:M,onSubmitMessage:Q,onStop:H.value?Z:void 0,onAddFile:be,onStartTranscribe:ce,onCancelTranscribe:re,onFinishTranscribe:he,onFinishTranscribeWithAudio:ye,onSelectSuggestion:pe},()=>[e.createElementVNode("div",Fs,[e.createElementVNode("div",Ns,[e.createElementVNode("div",Os,[e.renderSlot(N.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",Ds,e.toDisplayString(s.value.welcomeMessageText),1)])]),e.createElementVNode("div",Ls,[E.value?(e.openBlock(),e.createBlock(xt,{key:0,attachments:t.attachments??[],"class-name":"cpk:mb-2",onRemoveAttachment:J[0]||(J[0]=xe=>t.onRemoveAttachment&&t.onRemoveAttachment(xe))},null,8,["attachments"])):e.createCommentVNode("",!0),e.renderSlot(N.$slots,"input",{modelValue:x.value,isRunning:t.isRunning,inputMode:t.inputMode,inputToolsMenu:t.inputToolsMenu,attachments:t.attachments??[],onUpdateModelValue:M,onSubmitMessage:Q,onStop:H.value?Z:void 0,onAddFile:be,onStartTranscribe:ce,onCancelTranscribe:re,onFinishTranscribe:he,onFinishTranscribeWithAudio:ye},()=>[e.createVNode(Xe,e.mergeProps({"model-value":x.value,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0,"keyboard-height":k.value},Me.value),null,16,["model-value","is-running","mode","tools-menu","keyboard-height"])])]),A.value?(e.openBlock(),e.createElementBlock("div",Ps,[e.renderSlot(N.$slots,"suggestion-view",{suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,onSelectSuggestion:pe},()=>[e.createVNode(Qe,{suggestions:t.suggestions,"loading-indexes":t.suggestionLoadingIndexes,onSelectSuggestion:pe},null,8,["suggestions","loading-indexes"])])])):e.createCommentVNode("",!0)])])]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.renderSlot(N.$slots,"scroll-view",{messages:t.messages,isRunning:t.isRunning,suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,messagePaddingBottom:I.value,showScrollToBottomButton:$.value,onSelectSuggestion:pe,onScroll:ae,scrollToBottom:_},()=>[e.createElementVNode("div",{ref_key:"scrollContainerRef",ref:c,"data-testid":"copilot-chat-view-scroll",class:"cpk:h-full cpk:max-h-full cpk:min-h-0 cpk:overflow-y-scroll cpk:overflow-x-hidden cpk:relative",onScroll:ae},[e.createElementVNode("div",zs,[e.createElementVNode("div",{ref_key:"scrollContentRef",ref:p,"data-testid":"copilot-scroll-content",style:e.normalizeStyle({paddingBottom:I.value})},[e.createElementVNode("div",Us,[e.renderSlot(N.$slots,"message-view",{messages:t.messages,isRunning:t.isRunning},()=>[e.createVNode(Vn,{messages:t.messages,"is-running":t.isRunning},e.createSlots({_:2},[e.renderList(F.value,xe=>({name:xe,fn:e.withCtx($e=>[e.renderSlot(N.$slots,xe,e.normalizeProps(e.guardReactiveProps($e)))])}))]),1032,["messages","is-running"])]),A.value?(e.openBlock(),e.createElementBlock("div",js,[e.renderSlot(N.$slots,"suggestion-view",{suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,onSelectSuggestion:pe},()=>[e.createVNode(Qe,{class:"cpk:mb-3 cpk:lg:ml-4 cpk:lg:mr-4 cpk:ml-0 cpk:mr-0",suggestions:t.suggestions,"loading-indexes":t.suggestionLoadingIndexes,onSelectSuggestion:pe},null,8,["suggestions","loading-indexes"])])])):e.createCommentVNode("",!0)])],4),m.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"spacerRef",ref:y,"data-pin-to-send-spacer":"","aria-hidden":"true",style:{height:"0px",flex:"0 0 auto"}},null,512)):e.createCommentVNode("",!0)])],544)]),e.renderSlot(N.$slots,"feather",{},()=>[J[4]||(J[4]=e.createElementVNode("div",{"data-testid":"copilot-chat-view-feather"},null,-1))]),$.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"cpk:absolute cpk:inset-x-0 cpk:flex cpk:justify-center cpk:z-30 cpk:pointer-events-none",style:e.normalizeStyle({bottom:`${d.value+Hs}px`})},[e.renderSlot(N.$slots,"scroll-to-bottom-button",{onClick:()=>_()},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-view-scroll-to-bottom",class:"cpk:rounded-full cpk:w-10 cpk:h-10 cpk:p-0 cpk:pointer-events-auto cpk:bg-white cpk:dark:bg-gray-900 cpk:shadow-lg cpk:border cpk:border-gray-200 cpk:dark:border-gray-700 cpk:hover:bg-gray-50 cpk:dark:hover:bg-gray-800 cpk:flex cpk:items-center cpk:justify-center cpk:cursor-pointer",onClick:J[1]||(J[1]=xe=>_())},[e.createVNode(e.unref(oe.ChevronDown),{class:"cpk:w-4 cpk:h-4 cpk:text-gray-600 cpk:dark:text-white"})])])],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"inputContainerRef",ref:u,class:"cpk:absolute cpk:bottom-0 cpk:left-0 cpk:right-0 cpk:z-20 cpk:pointer-events-none","data-testid":"copilot-input-overlay"},[E.value?(e.openBlock(),e.createElementBlock("div",_s,[e.createVNode(xt,{attachments:t.attachments??[],"class-name":"cpk:px-4",onRemoveAttachment:J[2]||(J[2]=xe=>t.onRemoveAttachment&&t.onRemoveAttachment(xe))},null,8,["attachments"])])):e.createCommentVNode("",!0),e.renderSlot(N.$slots,"input",{modelValue:x.value,isRunning:t.isRunning,inputMode:t.inputMode,inputToolsMenu:t.inputToolsMenu,attachments:t.attachments??[],onUpdateModelValue:M,onSubmitMessage:Q,onStop:H.value?Z:void 0,onAddFile:be,onStartTranscribe:ce,onCancelTranscribe:re,onFinishTranscribe:he,onFinishTranscribeWithAudio:ye},()=>[e.createVNode(Xe,e.mergeProps({"model-value":x.value,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0,"keyboard-height":k.value,"bottom-anchored":!0},Me.value),null,16,["model-value","is-running","mode","tools-menu","keyboard-height"])])],512)],64))],16))}}),qs=["accept"],Gs={key:2,style:{position:"absolute",bottom:"100px",left:"50%",transform:"translateX(-50%)","background-color":"#ef4444",color:"white",padding:"8px 16px","border-radius":"8px","font-size":"14px","z-index":"50"}},Et=e.defineComponent({inheritAttrs:!1,__name:"CopilotChat",props:{agentId:{},threadId:{},throttleMs:{},labels:{},attachments:{},onError:{},autoScroll:{type:[String,Boolean],default:!0},welcomeScreen:{type:Boolean,default:!0},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=e.useSlots(),i=ge(),{copilotkit:l}=ke(),c=e.computed(()=>Object.keys(s).filter(D=>D!=="chat-view")),p=e.ref(z.randomUUID()),y=e.ref("input"),u=e.ref(n.inputValue??""),d=e.ref(null),f=e.ref(!1),v=e.ref(!1),C=e.ref(!1),h=e.shallowRef(null),w=e.computed(()=>n.agentId??i.value?.agentId??z.DEFAULT_AGENT_ID),m=e.computed(()=>n.threadId??i.value?.threadId),b=e.computed(()=>m.value??p.value),g=e.computed(()=>!!n.threadId||!!i.value?.hasExplicitThreadId),k=e.ref(null),x=e.computed(()=>g.value&&k.value!==b.value),A=bn(e.computed(()=>n.labels)),E=e.computed(()=>A.value),{agent:T}=gt({agentId:w,threadId:b,throttleMs:e.computed(()=>n.throttleMs)}),{suggestions:F}=Rn({agentId:w}),U=ft(),te=e.computed(()=>U.value.checkFeature("chat"));e.watch(te,D=>{D||console.warn('[CopilotKit] Warning: "chat" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0});const H=e.computed(()=>l.value.audioFileTranscriptionEnabled),L=e.computed(()=>typeof window<"u"&&typeof MediaRecorder<"u"),R=e.computed(()=>H.value&&L.value),{attachments:W,enabled:K,dragOver:I,fileInputRef:$,containerRef:O,handleFileUpload:q,handleDragOver:se,handleDragLeave:V,handleDrop:P,removeAttachment:j,consumeAttachments:_}=An({config:e.computed(()=>n.attachments)}),ae=e.computed(()=>f.value?"processing":y.value),le=e.ref(0),M=e.computed(()=>[...T.value?.messages??[]]),Q=e.computed(()=>(le.value,T.value?.isRunning??!1)),Z=e.computed(()=>Q.value&&M.value.length>0),pe=e.computed(()=>{for(let D=M.value.length-1;D>=0;D--){const Y=M.value[D];if(Y?.role==="user")return Y.id}return null}),be=e.ref(0);let de=pe.value;e.watch(pe,D=>{D&&D!==de&&(be.value+=1,de=D)});const Ie=e.computed(()=>({id:pe.value,sendNonce:be.value}));e.provide($n,Ie),e.watch(()=>T.value,(D,Y,ee)=>{if(!D)return;const ue=D.subscribe({onRunStartedEvent:()=>{le.value+=1},onRunFinishedEvent:()=>{le.value+=1},onRunErrorEvent:()=>{le.value+=1}});ee(()=>ue.unsubscribe())},{immediate:!0}),e.watch(()=>n.inputValue,D=>{D!==void 0&&(u.value=D)}),e.watch([()=>n.threadId,()=>i.value?.threadId],([D,Y],ee)=>{D||Y||ee&&(ee[0]||ee[1])&&(p.value=z.randomUUID())}),e.watch([()=>l.value,w,()=>n.onError],([D,Y,ee],ue,Se)=>{if(!ee)return;const Le=D.subscribe({onError:Be=>{(Be.context?.agentId===Y||!Be.context?.agentId)&&ee({error:Be.error,code:Be.code,context:Be.context})}});Se(()=>Le.unsubscribe())},{immediate:!0}),e.watch([v,()=>l.value,()=>T.value,b,g],([D,Y,ee,ue,Se],Le,Be)=>{if(!D||typeof window>"u"||!ee||!Se)return;const ze=We.AbstractAgent.prototype,nt=ee,qe=nt.connect!==ze.connect,ot=nt.connectAgent!==ze.connectAgent;if(!qe&&!ot){k.value=ue;return}const Ve=h.value,ht=Ve&&Ve.core===Y&&Ve.agent===ee&&Ve.threadId===ue;let Fe;if(ht&&Ve)Fe=Ve;else{const Te=new AbortController;ee instanceof We.HttpAgent&&(ee.abortController=Te),Fe={core:Y,agent:ee,threadId:ue,abortController:Te,detached:!1},h.value=Fe,Y.connectAgent({agent:ee}).catch(Ue=>{Fe.detached||Ue instanceof We.AGUIConnectNotImplementedError||console.error("CopilotChat: connectAgent failed",Ue)}).finally(()=>{if(Fe.detached)return;(typeof requestAnimationFrame=="function"?requestAnimationFrame:S=>setTimeout(S,16))(()=>{Fe.detached||(k.value=Fe.threadId)})})}Be(()=>{const Te=h.value;!Te||Te!==Fe||!(C.value||l.value!==Te.core||T.value!==Te.agent||b.value!==Te.threadId)||(Te.detached=!0,Te.abortController.abort(),Te.agent.detachActiveRun?.(),h.value=null)})},{immediate:!0}),e.onBeforeUnmount(()=>{C.value=!0}),e.onMounted(()=>{v.value=!0}),e.watch(d,(D,Y,ee)=>{if(!D)return;const ue=setTimeout(()=>{d.value=null},5e3);ee(()=>clearTimeout(ue))});async function Ce(){const D=T.value;if(D)try{const Y=h.value;Y&&Y.agent===D&&Y.threadId===b.value&&(Y.detached=!0,Y.abortController.abort(),h.value=null,await Y.agent.detachActiveRun?.()),await l.value.runAgent({agent:D})}catch(Y){console.error("CopilotChat: runAgent failed",Y)}}async function ce(D){if(W.value.some(ue=>ue.status==="uploading")){console.error("[CopilotKit] Cannot send while attachments are uploading");return}if(a("submit-message",D),!T.value){console.error("[CopilotKit] Cannot send message: no agent available");return}const ee=_();if(ee.length>0){const ue=[];D.trim()&&ue.push({type:"text",text:D});for(const Se of ee)ue.push({type:Se.type,source:Se.source,metadata:{...Se.filename?{filename:Se.filename}:{},...Se.metadata}});T.value.addMessage({id:z.randomUUID(),role:"user",content:ue})}else T.value.addMessage({id:z.randomUUID(),role:"user",content:D});u.value="",await Ce()}async function re(D,Y){a("select-suggestion",D,Y),T.value?.addMessage({id:z.randomUUID(),role:"user",content:D.message}),await Ce()}function he(){const D=T.value;if(D)try{l.value.stopAgent({agent:D})}catch(Y){console.error("CopilotChat: stopAgent failed",Y);try{D.abortRun()}catch(ee){console.error("CopilotChat: abortRun fallback failed",ee)}}}function ye(){a("stop"),Z.value&&he()}function Me(D){u.value=D,a("input-change",D)}function N(){a("add-file"),K.value&&setTimeout(()=>{$.value?.click()},100)}function J(){d.value=null,y.value="transcribe",a("start-transcribe")}function xe(){d.value=null,y.value="input",a("cancel-transcribe")}function $e(){y.value="input",a("finish-transcribe")}async function et(D){if(n.onFinishTranscribeWithAudio){await n.onFinishTranscribeWithAudio(D);return}f.value=!0;try{d.value=null;const Y=await fa(l.value,D),ee=u.value.trim();u.value=ee?`${ee} ${Y.text}`:Y.text}catch(Y){if(console.error("CopilotChat: Transcription failed",Y),Y instanceof He){const{code:ee,retryable:ue,message:Se}=Y.info;switch(ee){case z.TranscriptionErrorCode.RATE_LIMITED:d.value="Too many requests. Please wait a moment.";break;case z.TranscriptionErrorCode.AUTH_FAILED:d.value="Authentication error. Please check your configuration.";break;case z.TranscriptionErrorCode.AUDIO_TOO_LONG:d.value="Recording is too long. Please try a shorter recording.";break;case z.TranscriptionErrorCode.AUDIO_TOO_SHORT:d.value="Recording is too short. Please try again.";break;case z.TranscriptionErrorCode.INVALID_AUDIO_FORMAT:d.value="Audio format not supported.";break;case z.TranscriptionErrorCode.SERVICE_NOT_CONFIGURED:d.value="Transcription service is not available.";break;case z.TranscriptionErrorCode.NETWORK_ERROR:d.value="Network error. Please check your connection.";break;default:d.value=ue?"Transcription failed. Please try again.":Se}}else d.value="Transcription failed. Please try again."}finally{f.value=!1}}const we=e.computed(()=>({messages:M.value,autoScroll:n.autoScroll,isRunning:Q.value,suggestions:F.value,suggestionLoadingIndexes:[],welcomeScreen:n.welcomeScreen,attachments:W.value,dragOver:I.value,inputValue:u.value,inputMode:ae.value,inputToolsMenu:n.inputToolsMenu,isConnecting:x.value,hasExplicitThreadId:g.value,onSubmitMessage:ce,onStop:Z.value?ye:void 0,onInputChange:Me,onSelectSuggestion:re,onRemoveAttachment:j,onAddFile:K.value?N:void 0,onDragOver:K.value?se:void 0,onDragLeave:K.value?V:void 0,onDrop:K.value?P:void 0,onStartTranscribe:R.value?J:void 0,onCancelTranscribe:R.value?xe:void 0,onFinishTranscribe:R.value?$e:void 0,onFinishTranscribeWithAudio:R.value?et:void 0})),tt=e.computed(()=>{const D={...r,onSubmitMessage:ce,onInputChange:Me,onSelectSuggestion:re};return Z.value&&(D.onStop=ye),K.value&&(D.onAddFile=N,D.attachments=W.value,D.onRemoveAttachment=j,D.dragOver=I.value,D.onDragOver=se,D.onDragLeave=V,D.onDrop=P),R.value&&(D.onStartTranscribe=J,D.onCancelTranscribe=xe,D.onFinishTranscribe=$e),D});return(D,Y)=>(e.openBlock(),e.createBlock(mt,{"agent-id":w.value,"thread-id":b.value,"has-explicit-thread-id":g.value,labels:E.value},{default:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"attachmentContainerRef",ref:O,style:{display:"contents"}},[e.unref(K)?(e.openBlock(),e.createElementBlock("input",{key:0,ref_key:"fileInputRef",ref:$,type:"file",multiple:"",accept:n.attachments?.accept??"*/*",style:{display:"none"},onChange:Y[0]||(Y[0]=ee=>{e.unref(q)(ee)})},null,40,qs)):e.createCommentVNode("",!0),te.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(At,{key:1,"feature-name":"Chat"})),d.value?(e.openBlock(),e.createElementBlock("div",Gs,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0),e.renderSlot(D.$slots,"chat-view",e.normalizeProps(e.guardReactiveProps(we.value)),()=>[e.createVNode(Ze,e.mergeProps(tt.value,{messages:we.value.messages,"auto-scroll":we.value.autoScroll,"is-running":we.value.isRunning,suggestions:we.value.suggestions,"suggestion-loading-indexes":we.value.suggestionLoadingIndexes,"welcome-screen":we.value.welcomeScreen,"input-value":we.value.inputValue,"input-mode":we.value.inputMode,"input-tools-menu":we.value.inputToolsMenu,"is-connecting":we.value.isConnecting,"has-explicit-thread-id":we.value.hasExplicitThreadId,"on-finish-transcribe-with-audio":we.value.onFinishTranscribeWithAudio}),e.createSlots({_:2},[e.renderList(c.value,ee=>({name:ee,fn:e.withCtx(ue=>[e.renderSlot(D.$slots,ee,e.normalizeProps(e.guardReactiveProps(ue)))])}))]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","is-connecting","has-explicit-thread-id","on-finish-transcribe-with-audio"])])],512)]),_:3},8,["agent-id","thread-id","has-explicit-thread-id","labels"]))}}),Ks=["src"],Js=["src"],Xs={key:0,class:"cpk:text-xs cpk:text-muted-foreground cpk:truncate cpk:max-w-[300px]","data-testid":"copilot-chat-attachment-renderer-audio-filename"},Qs=["src"],Ys={class:"cpk:text-xs cpk:font-bold cpk:uppercase","data-testid":"copilot-chat-attachment-renderer-document-icon"},Zs={class:"cpk:text-sm cpk:text-muted-foreground cpk:truncate","data-testid":"copilot-chat-attachment-renderer-document-label"},er=e.defineComponent({__name:"CopilotChatAttachmentRenderer",props:{type:{},source:{},filename:{default:void 0},className:{default:""}},setup(t){const o=t,n=e.ref(!1),a=e.computed(()=>z.getSourceUrl(o.source)),r=e.computed(()=>o.filename||o.source.mimeType||"Unknown type");return(s,i)=>o.type==="image"&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:a.value,alt:"Image attachment",class:e.normalizeClass(["cpk:max-w-full cpk:h-auto cpk:rounded-lg",o.className]),"data-testid":"copilot-chat-attachment-renderer-image",onError:i[0]||(i[0]=l=>n.value=!0)},null,42,Ks)):o.type==="image"?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:rounded-lg cpk:bg-muted cpk:p-4 cpk:text-sm cpk:text-muted-foreground",o.className]),"data-testid":"copilot-chat-attachment-renderer-image-fallback"},[...i[1]||(i[1]=[e.createElementVNode("span",null,"Failed to load image",-1)])],2)):o.type==="audio"?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["cpk:flex cpk:flex-col cpk:gap-1",o.className]),"data-testid":"copilot-chat-attachment-renderer-audio"},[e.createElementVNode("audio",{src:a.value,controls:"",preload:"metadata",class:"cpk:max-w-[300px] cpk:w-full cpk:h-10"},null,8,Js),o.filename?(e.openBlock(),e.createElementBlock("span",Xs,e.toDisplayString(o.filename),1)):e.createCommentVNode("",!0)],2)):o.type==="video"?(e.openBlock(),e.createElementBlock("video",{key:3,src:a.value,controls:"",preload:"metadata",class:e.normalizeClass(["cpk:max-w-[400px] cpk:w-full cpk:rounded-lg",o.className]),"data-testid":"copilot-chat-attachment-renderer-video"},null,10,Qs)):(e.openBlock(),e.createElementBlock("div",{key:4,class:e.normalizeClass(["cpk:inline-flex cpk:items-center cpk:gap-2 cpk:px-3 cpk:py-2 cpk:border cpk:border-border cpk:rounded-lg cpk:bg-muted",o.className]),"data-testid":"copilot-chat-attachment-renderer-document"},[e.createElementVNode("span",Ys,e.toDisplayString(e.unref(z.getDocumentIcon)(o.source.mimeType??"")),1),e.createElementVNode("span",Zs,e.toDisplayString(r.value),1)],2))}}),$t=e.defineComponent({name:"CopilotChatToggleButtonCloseIcon",inheritAttrs:!1,setup(t,{attrs:o}){return()=>{const{class:n,...a}=o;return e.h(oe.X,{...a,class:["cpk:h-6 cpk:w-6",n],strokeWidth:1.75})}}}),Mt=e.defineComponent({name:"CopilotChatToggleButtonOpenIcon",inheritAttrs:!1,setup(t,{attrs:o}){return()=>{const{class:n,...a}=o;return e.h(oe.MessageCircle,{...a,class:["cpk:h-6 cpk:w-6",n],strokeWidth:1.75,fill:"currentColor"})}}}),tr=["type","data-state","aria-label","aria-pressed","disabled"],lt="cpk:h-6 cpk:w-6",Xt="cpk:pointer-events-none cpk:absolute cpk:inset-0 cpk:flex cpk:items-center cpk:justify-center cpk:will-change-transform",Bt=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatToggleButton",props:{disabled:{type:Boolean,default:!1},type:{default:"button"}},setup(t){const o=t,n=e.useAttrs(),a=ge(),r=e.ref(!1),s=e.computed(()=>a.value?.labels??Ee),i=e.computed(()=>a.value?.isModalOpen??r.value),l=e.computed(()=>i.value?s.value.chatToggleCloseLabel:s.value.chatToggleOpenLabel),c=e.computed(()=>["cpk:fixed cpk:bottom-6 cpk:right-6 cpk:z-[1100] cpk:flex cpk:h-14 cpk:w-14 cpk:items-center cpk:justify-center","cpk:rounded-full cpk:border cpk:border-primary cpk:bg-primary cpk:text-primary-foreground","cpk:shadow-sm cpk:transition-all cpk:duration-200 cpk:ease-out","cpk:hover:scale-[1.04] cpk:hover:shadow-md cpk:cursor-pointer cpk:active:scale-[0.96]","cpk:focus-visible:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-primary/50 cpk:focus-visible:ring-offset-2 cpk:focus-visible:ring-offset-background","cpk:disabled:pointer-events-none cpk:disabled:opacity-60",n.class]),p=e.computed(()=>{const{class:v,onClick:C,...h}=n;return h}),y=Object.freeze({transition:"opacity 120ms ease-out, transform 260ms cubic-bezier(0.22, 1, 0.36, 1)"});function u(v){if(a.value?.setModalOpen){a.value.setModalOpen(v);return}r.value=v}function d(){const v=n.onClick;return Array.isArray(v)?v.filter(C=>typeof C=="function"):typeof v=="function"?[v]:[]}function f(v){if(!o.disabled){for(const C of d())C(v);v.defaultPrevented||u(!i.value)}}return(v,C)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps({"data-copilotkit":"",type:t.type,"data-slot":"chat-toggle-button","data-state":i.value?"open":"closed",class:c.value,"aria-label":l.value,"aria-pressed":i.value,disabled:t.disabled},p.value,{onClick:f}),[e.createElementVNode("span",{"aria-hidden":"true","data-slot":"chat-toggle-button-open-icon",class:e.normalizeClass(Xt),style:e.normalizeStyle({...e.unref(y),opacity:i.value?0:1,transform:`scale(${i.value?.75:1}) rotate(${i.value?90:0}deg)`})},[e.renderSlot(v.$slots,"open-icon",{iconClass:lt,isOpen:i.value},()=>[e.createVNode(e.unref(Mt),{class:e.normalizeClass(lt),"aria-hidden":"true",focusable:!1})])],4),e.createElementVNode("span",{"aria-hidden":"true","data-slot":"chat-toggle-button-close-icon",class:e.normalizeClass(Xt),style:e.normalizeStyle({...e.unref(y),opacity:i.value?1:0,transform:`scale(${i.value?1:.75}) rotate(${i.value?0:-90}deg)`})},[e.renderSlot(v.$slots,"close-icon",{iconClass:lt,isOpen:i.value},()=>[e.createVNode(e.unref($t),{class:e.normalizeClass(lt),"aria-hidden":"true",focusable:!1})])],4)],16,tr))}}),Nn=e.defineComponent({name:"CopilotModalHeaderCloseButton",inheritAttrs:!1,setup(t,{slots:o}){const n=e.useAttrs(),a=e.computed(()=>typeof n["aria-label"]=="string"?n["aria-label"]:"Close");return()=>{const{class:r,type:s,...i}=n;return e.h("button",{...i,type:typeof s=="string"?s:"button",class:["cpk:inline-flex cpk:size-8 cpk:items-center cpk:justify-center cpk:rounded-full cpk:text-muted-foreground cpk:transition cpk:cursor-pointer","cpk:hover:bg-muted cpk:hover:text-foreground cpk:focus-visible:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-ring",r],"aria-label":a.value},o.default?o.default():[e.h(oe.X,{class:"cpk:h-4 cpk:w-4","aria-hidden":!0})])}}}),On=e.defineComponent({name:"CopilotModalHeaderTitle",inheritAttrs:!1,setup(t,{attrs:o,slots:n}){return()=>{const{class:a,...r}=o;return e.h("div",{...r,class:["cpk:w-full cpk:text-base cpk:font-medium cpk:leading-none cpk:tracking-tight cpk:text-foreground",a]},n.default?n.default():[])}}}),nr={class:"cpk:flex cpk:w-full cpk:items-center cpk:gap-2"},or={class:"cpk:flex cpk:flex-1 cpk:justify-center cpk:text-center"},ar={class:"cpk:flex cpk:flex-1 cpk:justify-end"},Vt=e.defineComponent({inheritAttrs:!1,__name:"CopilotModalHeader",props:{title:{}},setup(t){const o=t,n=e.useAttrs(),a=ge(),r=e.computed(()=>o.title??a.value?.labels.modalHeaderTitle??Ee.modalHeaderTitle),s=e.computed(()=>["cpk:flex cpk:items-center cpk:justify-between cpk:border-b cpk:border-border cpk:px-4 cpk:py-4","cpk:bg-background/95 cpk:backdrop-blur cpk:supports-[backdrop-filter]:bg-background/80",n.class]),i=e.computed(()=>{const{class:c,...p}=n;return p});function l(){a.value?.setModalOpen?.(!1)}return(c,p)=>(e.openBlock(),e.createElementBlock("header",e.mergeProps({"data-copilotkit":"","data-slot":"copilot-modal-header",class:s.value},i.value),[e.renderSlot(c.$slots,"layout",{title:r.value,onClose:l},()=>[e.createElementVNode("div",nr,[p[0]||(p[0]=e.createElementVNode("div",{class:"cpk:flex cpk:flex-1","aria-hidden":"true"},null,-1)),e.createElementVNode("div",or,[e.renderSlot(c.$slots,"title-content",{title:r.value},()=>[e.createVNode(e.unref(On),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value),1)]),_:1})])]),e.createElementVNode("div",ar,[e.renderSlot(c.$slots,"close-button",{onClose:l},()=>[e.createVNode(e.unref(Nn),{onClick:l})])])])])],16))}}),sr={key:0,"data-copilotkit":"",class:"cpk:fixed cpk:inset-0 cpk:z-[1200] cpk:flex cpk:max-w-full cpk:flex-col cpk:items-stretch cpk:md:inset-auto cpk:md:bottom-24 cpk:md:right-6 cpk:md:items-end cpk:md:gap-4"},rr=["aria-label"],ir={class:"cpk:flex-1 cpk:overflow-hidden","data-popup-chat":""},lr=420,cr=560,Qt=200,ur=e.defineComponent({inheritAttrs:!1,__name:"CopilotPopupViewInternal",props:{width:{default:void 0},height:{default:void 0},clickOutsideToClose:{type:Boolean,default:!1},messages:{default:()=>[]},autoScroll:{type:[String,Boolean],default:!0},isRunning:{type:Boolean,default:!1},suggestions:{default:()=>[]},suggestionLoadingIndexes:{default:()=>[]},welcomeScreen:{type:Boolean,default:!0},attachments:{},dragOver:{type:Boolean},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=ge(),i=e.getCurrentInstance(),l=e.computed(()=>i?.vnode.props??{}),c=e.ref(null),p=e.ref(s.value?.isModalOpen??!1),y=e.ref(!1);let u,d;const f=e.computed(()=>s.value?.isModalOpen??!1),v=e.computed(()=>s.value?.labels??Ee),C=e.computed(()=>v.value.modalHeaderTitle),h=e.computed(()=>g("onStop")),w=e.computed(()=>f.value&&!y.value?"cpk:pointer-events-auto cpk:translate-y-0 cpk:opacity-100 cpk:md:scale-100":"cpk:pointer-events-none cpk:translate-y-4 cpk:opacity-0 cpk:md:translate-y-5 cpk:md:scale-[0.95]"),m=e.computed(()=>({"--copilot-popup-width":b(n.width,lr),"--copilot-popup-height":b(n.height,cr),"--copilot-popup-max-width":"calc(100vw - 3rem)","--copilot-popup-max-height":"calc(100dvh - 7.5rem)",width:"var(--copilot-popup-width)",height:"var(--copilot-popup-height)",maxWidth:"var(--copilot-popup-max-width)",maxHeight:"var(--copilot-popup-max-height)",paddingTop:"env(safe-area-inset-top)",paddingBottom:"env(safe-area-inset-bottom)",paddingLeft:"env(safe-area-inset-left)",paddingRight:"env(safe-area-inset-right)"}));function b(I,$){return typeof I=="number"&&Number.isFinite(I)?`${I}px`:typeof I=="string"&&I.trim().length>0?I:`${$}px`}function g(I){const $=l.value[I];return Array.isArray($)?$.length>0:!!$}function k(){s.value?.setModalOpen?.(!1)}function x(){s.value?.setModalOpen?.(!0)}function A(){s.value?.setModalOpen?.(!f.value)}function E(I){a("submit-message",I)}function T(){a("stop")}function F(I){a("input-change",I)}function U(I,$){a("select-suggestion",I,$)}function te(){a("add-file")}function H(){a("start-transcribe")}function L(){a("cancel-transcribe")}function R(){a("finish-transcribe")}const W=e.computed(()=>{const I={onSubmitMessage:E,onInputChange:F,onSelectSuggestion:U};return h.value&&(I.onStop=T),g("onAddFile")&&(I.onAddFile=te),g("onStartTranscribe")&&(I.onStartTranscribe=H),g("onCancelTranscribe")&&(I.onCancelTranscribe=L),g("onFinishTranscribe")&&(I.onFinishTranscribe=R),I}),K=e.computed(()=>({...r,...W.value}));return e.watch(f,I=>{if(u&&(clearTimeout(u),u=void 0),I){p.value=!0,y.value=!1;return}p.value&&(y.value=!0,u=setTimeout(()=>{p.value=!1,y.value=!1,u=void 0},Qt))},{immediate:!0}),e.watch(f,(I,$,O)=>{if(!I||typeof window>"u")return;const q=se=>{se.key==="Escape"&&(se.preventDefault(),k())};window.addEventListener("keydown",q),O(()=>{window.removeEventListener("keydown",q)})},{immediate:!0}),e.watch(f,(I,$,O)=>{I&&(d=setTimeout(()=>{if(typeof document>"u")return;const q=c.value;q&&!q.contains(document.activeElement)&&q.focus({preventScroll:!0})},Qt),O(()=>{d&&(clearTimeout(d),d=void 0)}))},{immediate:!0}),e.watch([f,()=>n.clickOutsideToClose],([I,$],O,q)=>{if(!I||!$||typeof document>"u")return;const se=V=>{const P=V.target;!P||c.value?.contains(P)||document.querySelector("[data-slot='chat-toggle-button']")?.contains(P)||k()};document.addEventListener("pointerdown",se),q(()=>{document.removeEventListener("pointerdown",se)})},{immediate:!0}),e.onMounted(async()=>{await e.nextTick()}),e.onBeforeUnmount(()=>{u&&clearTimeout(u),d&&clearTimeout(d)}),(I,$)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.renderSlot(I.$slots,"toggle-button",{isOpen:f.value,toggle:A,open:x,close:k},()=>[e.createVNode(Bt)]),p.value?(e.openBlock(),e.createElementBlock("div",sr,[e.createElementVNode("div",{ref_key:"containerRef",ref:c,tabindex:"-1",role:"dialog","aria-label":v.value.modalHeaderTitle,"data-copilot-popup":"",class:e.normalizeClass(["cpk:relative cpk:flex cpk:h-full cpk:w-full cpk:flex-col cpk:overflow-hidden cpk:bg-background cpk:text-foreground","cpk:origin-bottom cpk:focus:outline-none cpk:transform-gpu cpk:transition-transform cpk:transition-opacity cpk:duration-200 cpk:ease-out","cpk:md:transition-transform cpk:md:transition-opacity","cpk:rounded-none cpk:border cpk:border-border/0 cpk:shadow-none cpk:ring-0","cpk:md:h-[var(--copilot-popup-height)] cpk:md:w-[var(--copilot-popup-width)]","cpk:md:max-h-[var(--copilot-popup-max-height)] cpk:md:max-w-[var(--copilot-popup-max-width)]","cpk:md:origin-bottom-right cpk:md:rounded-2xl cpk:md:border-border cpk:md:shadow-xl cpk:md:ring-1 cpk:md:ring-border/40",w.value]),style:e.normalizeStyle(m.value)},[e.renderSlot(I.$slots,"header",{title:C.value,onClose:k,isOpen:f.value},()=>[e.createVNode(Vt,{title:C.value},null,8,["title"])]),e.createElementVNode("div",ir,[e.createVNode(Ze,e.mergeProps({messages:t.messages,"auto-scroll":t.autoScroll,"is-running":t.isRunning,suggestions:t.suggestions,"suggestion-loading-indexes":t.suggestionLoadingIndexes,"welcome-screen":t.welcomeScreen,"input-value":t.inputValue,"input-mode":t.inputMode,"input-tools-menu":t.inputToolsMenu,"on-finish-transcribe-with-audio":t.onFinishTranscribeWithAudio},K.value),e.createSlots({_:2},[I.$slots["message-view"]?{name:"message-view",fn:e.withCtx(O=>[e.renderSlot(I.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(O)))]),key:"0"}:void 0,I.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(O=>[e.renderSlot(I.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(O)))]),key:"1"}:void 0,I.$slots.feather?{name:"feather",fn:e.withCtx(()=>[e.renderSlot(I.$slots,"feather")]),key:"2"}:void 0,I.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(O=>[e.renderSlot(I.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(O)))]),key:"3"}:void 0,I.$slots.input?{name:"input",fn:e.withCtx(O=>[e.renderSlot(I.$slots,"input",e.normalizeProps(e.guardReactiveProps(O)))]),key:"4"}:void 0,I.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(O=>[e.renderSlot(I.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(O)))]),key:"5"}:void 0,I.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(O=>[e.renderSlot(I.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(O)))]),key:"6"}:void 0,I.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(I.$slots,"welcome-message")]),key:"7"}:void 0]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","on-finish-transcribe-with-audio"])])],14,rr)])):e.createCommentVNode("",!0)],64))}}),Dn=e.defineComponent({inheritAttrs:!1,__name:"CopilotPopupView",props:{width:{default:void 0},height:{default:void 0},clickOutsideToClose:{type:Boolean,default:!1},defaultOpen:{type:Boolean,default:!0},messages:{default:()=>[]},autoScroll:{type:[String,Boolean],default:!0},isRunning:{type:Boolean,default:!1},suggestions:{default:()=>[]},suggestionLoadingIndexes:{default:()=>[]},welcomeScreen:{type:Boolean,default:!0},attachments:{},dragOver:{type:Boolean},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=e.getCurrentInstance(),i=e.computed(()=>s?.vnode.props??{});function l(u){const d=i.value[u];return Array.isArray(d)?d.length>0:!!d}const c=e.computed(()=>{const{defaultOpen:u,...d}=n;return d}),p=e.computed(()=>{const u={onSubmitMessage:d=>a("submit-message",d),onStop:()=>a("stop"),onInputChange:d=>a("input-change",d),onSelectSuggestion:(d,f)=>a("select-suggestion",d,f)};return l("onAddFile")&&(u.onAddFile=()=>a("add-file")),l("onStartTranscribe")&&(u.onStartTranscribe=()=>a("start-transcribe")),l("onCancelTranscribe")&&(u.onCancelTranscribe=()=>a("cancel-transcribe")),l("onFinishTranscribe")&&(u.onFinishTranscribe=()=>a("finish-transcribe")),u}),y=e.computed(()=>({...r,...c.value,...p.value}));return(u,d)=>(e.openBlock(),e.createBlock(mt,{"is-modal-default-open":t.defaultOpen},{default:e.withCtx(()=>[e.createVNode(ur,e.normalizeProps(e.guardReactiveProps(y.value)),e.createSlots({_:2},[u.$slots.header?{name:"header",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"header",e.normalizeProps(e.guardReactiveProps(f)))]),key:"0"}:void 0,u.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(f)))]),key:"1"}:void 0,u.$slots["message-view"]?{name:"message-view",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"2"}:void 0,u.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"3"}:void 0,u.$slots.feather?{name:"feather",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"feather",e.normalizeProps(e.guardReactiveProps(f)))]),key:"4"}:void 0,u.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(f)))]),key:"5"}:void 0,u.$slots.input?{name:"input",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"input",e.normalizeProps(e.guardReactiveProps(f)))]),key:"6"}:void 0,u.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"7"}:void 0,u.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(f)))]),key:"8"}:void 0,u.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(u.$slots,"welcome-message")]),key:"9"}:void 0]),1040)]),_:3},8,["is-modal-default-open"]))}}),dr={"data-copilotkit":"",class:"cpk:h-full cpk:flex cpk:flex-col","data-testid":"copilot-popup-welcome-screen"},pr={class:"cpk:flex-1 cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4"},mr={class:"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center"},fr={class:"cpk:mb-4 cpk:flex cpk:justify-center cpk:px-4"},Ln=e.defineComponent({__name:"CopilotPopupWelcomeScreen",props:{modelValue:{default:""},isRunning:{type:Boolean,default:!1},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},onUpdateModelValue:{},onSubmitMessage:{},onStop:{},onAddFile:{type:Function,default:void 0},onStartTranscribe:{type:Function,default:void 0},onCancelTranscribe:{type:Function,default:void 0},onFinishTranscribe:{type:Function,default:void 0},onFinishTranscribeWithAudio:{type:Function,default:void 0},suggestions:{default:()=>[]},loadingIndexes:{default:()=>[]},onSelectSuggestion:{}},setup(t){const o=t,n=ge(),a=e.computed(()=>n.value?.labels??Ee),r=e.computed(()=>({modelValue:o.modelValue,isRunning:o.isRunning,inputMode:o.inputMode,inputToolsMenu:o.inputToolsMenu,onUpdateModelValue:o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop,onAddFile:o.onAddFile,onStartTranscribe:o.onStartTranscribe,onCancelTranscribe:o.onCancelTranscribe,onFinishTranscribe:o.onFinishTranscribe,onFinishTranscribeWithAudio:o.onFinishTranscribeWithAudio})),s=e.computed(()=>({suggestions:o.suggestions,loadingIndexes:o.loadingIndexes,onSelectSuggestion:o.onSelectSuggestion})),i=e.computed(()=>({...r.value,...s.value})),l=e.computed(()=>{const c={"onUpdate:modelValue":o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop};return o.onAddFile&&(c.onAddFile=o.onAddFile),o.onStartTranscribe&&(c.onStartTranscribe=o.onStartTranscribe),o.onCancelTranscribe&&(c.onCancelTranscribe=o.onCancelTranscribe),o.onFinishTranscribe&&(c.onFinishTranscribe=o.onFinishTranscribe),o.onFinishTranscribeWithAudio&&(c.onFinishTranscribeWithAudio=o.onFinishTranscribeWithAudio),c});return(c,p)=>e.renderSlot(c.$slots,"layout",e.normalizeProps(e.guardReactiveProps(i.value)),()=>[e.createElementVNode("div",dr,[e.createElementVNode("div",pr,[e.renderSlot(c.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",mr,e.toDisplayString(a.value.welcomeMessageText),1)])]),e.createElementVNode("div",null,[e.createElementVNode("div",fr,[e.renderSlot(c.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(s.value)),()=>[e.createVNode(Qe,{suggestions:t.suggestions,"loading-indexes":t.loadingIndexes,onSelectSuggestion:t.onSelectSuggestion},null,8,["suggestions","loading-indexes","onSelectSuggestion"])])]),e.renderSlot(c.$slots,"input",e.normalizeProps(e.guardReactiveProps(r.value)),()=>[e.createVNode(Xe,e.mergeProps({"model-value":t.modelValue,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0},l.value),null,16,["model-value","is-running","mode","tools-menu"])])])])])}}),gr=["aria-hidden"],hr={class:"cpk:flex cpk:h-full cpk:w-full cpk:flex-col cpk:overflow-hidden"},vr={class:"cpk:flex-1 cpk:overflow-hidden","data-sidebar-chat":""},kr=480,br=260,yr=e.defineComponent({inheritAttrs:!1,__name:"CopilotSidebarViewInternal",props:{width:{default:void 0},messages:{default:()=>[]},autoScroll:{type:[String,Boolean],default:!0},isRunning:{type:Boolean,default:!1},suggestions:{default:()=>[]},suggestionLoadingIndexes:{default:()=>[]},welcomeScreen:{type:Boolean,default:!0},attachments:{},dragOver:{type:Boolean},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=ge(),i=e.getCurrentInstance(),l=e.computed(()=>i?.vnode.props??{}),c=e.ref(null),p=e.ref(n.width??kr);let y=null;const u=e.computed(()=>s.value?.isModalOpen??!1),d=e.computed(()=>n.width??p.value),f=e.computed(()=>s.value?.labels.modalHeaderTitle??Ee.modalHeaderTitle),v=e.computed(()=>["cpk:fixed cpk:right-0 cpk:top-0 cpk:z-[1200] cpk:flex cpk:h-[100vh] cpk:h-[100dvh] cpk:max-h-screen cpk:w-full","cpk:border-l cpk:border-border cpk:bg-background cpk:text-foreground cpk:shadow-xl","cpk:transition-transform cpk:duration-300 cpk:ease-out",u.value?"cpk:translate-x-0":"cpk:translate-x-full cpk:pointer-events-none",r.class]),C=e.computed(()=>{const{class:$,...O}=r;return O}),h=e.computed(()=>b("onStop")),w=e.computed(()=>({"--sidebar-width":g(d.value),paddingTop:"env(safe-area-inset-top)",paddingBottom:"env(safe-area-inset-bottom)"})),m=e.computed(()=>`
76
+ @media (min-width: 768px) {
77
+ body {
78
+ margin-inline-end: ${k(d.value)};
79
+ transition: margin-inline-end ${br}ms ease;
80
+ }
81
+ }
82
+ `);function b($){const O=l.value[$];return Array.isArray(O)?O.length>0:!!O}function g($){return typeof $=="number"?`${$}px`:$}function k($){return typeof $=="number"?`${$}px`:$}function x(){if(n.width!==void 0||!c.value)return;const $=c.value.getBoundingClientRect().width;$>0&&(p.value=$)}function A(){s.value?.setModalOpen?.(!1)}function E(){s.value?.setModalOpen?.(!0)}function T(){s.value?.setModalOpen?.(!u.value)}function F($){a("submit-message",$)}function U(){a("stop")}function te($){a("input-change",$)}function H($,O){a("select-suggestion",$,O)}function L(){a("add-file")}function R(){a("start-transcribe")}function W(){a("cancel-transcribe")}function K(){a("finish-transcribe")}const I=e.computed(()=>{const $={onSubmitMessage:F,onInputChange:te,onSelectSuggestion:H};return h.value&&($.onStop=U),b("onAddFile")&&($.onAddFile=L),b("onStartTranscribe")&&($.onStartTranscribe=R),b("onCancelTranscribe")&&($.onCancelTranscribe=W),b("onFinishTranscribe")&&($.onFinishTranscribe=K),$});return e.watch(()=>n.width,$=>{if($!==void 0){p.value=$;return}x()}),e.onMounted(async()=>{await e.nextTick(),x(),!(n.width!==void 0||!c.value||typeof ResizeObserver>"u")&&(y=new ResizeObserver(()=>{x()}),y.observe(c.value))}),e.onBeforeUnmount(()=>{y?.disconnect(),y=null}),($,O)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[u.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent("style"),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m.value),1)]),_:1})):e.createCommentVNode("",!0),e.renderSlot($.$slots,"toggle-button",{isOpen:u.value,toggle:T,open:E,close:A},()=>[e.createVNode(Bt)]),e.createElementVNode("aside",e.mergeProps({ref_key:"sidebarRef",ref:c,"data-copilotkit":"","data-copilot-sidebar":"",class:v.value,style:w.value,"aria-label":"Copilot chat sidebar","aria-hidden":!u.value,role:"complementary"},C.value),[e.createElementVNode("div",hr,[e.renderSlot($.$slots,"header",{title:f.value,onClose:A,isOpen:u.value},()=>[e.createVNode(Vt,{title:f.value},null,8,["title"])]),e.createElementVNode("div",vr,[e.createVNode(Ze,e.mergeProps({messages:t.messages,"auto-scroll":t.autoScroll,"is-running":t.isRunning,suggestions:t.suggestions,"suggestion-loading-indexes":t.suggestionLoadingIndexes,"welcome-screen":t.welcomeScreen,"input-value":t.inputValue,"input-mode":t.inputMode,"input-tools-menu":t.inputToolsMenu,"on-finish-transcribe-with-audio":t.onFinishTranscribeWithAudio},I.value),e.createSlots({_:2},[$.$slots["message-view"]?{name:"message-view",fn:e.withCtx(q=>[e.renderSlot($.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(q)))]),key:"0"}:void 0,$.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(q=>[e.renderSlot($.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(q)))]),key:"1"}:void 0,$.$slots.feather?{name:"feather",fn:e.withCtx(()=>[e.renderSlot($.$slots,"feather")]),key:"2"}:void 0,$.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(q=>[e.renderSlot($.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(q)))]),key:"3"}:void 0,$.$slots.input?{name:"input",fn:e.withCtx(q=>[e.renderSlot($.$slots,"input",e.normalizeProps(e.guardReactiveProps(q)))]),key:"4"}:void 0,$.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(q=>[e.renderSlot($.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(q)))]),key:"5"}:void 0,$.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(q=>[e.renderSlot($.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(q)))]),key:"6"}:void 0,$.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot($.$slots,"welcome-message")]),key:"7"}:void 0]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","on-finish-transcribe-with-audio"])])])],16,gr)],64))}}),Pn=e.defineComponent({inheritAttrs:!1,__name:"CopilotSidebarView",props:{width:{default:void 0},defaultOpen:{type:Boolean,default:!0},messages:{default:()=>[]},autoScroll:{type:[String,Boolean],default:!0},isRunning:{type:Boolean,default:!1},suggestions:{default:()=>[]},suggestionLoadingIndexes:{default:()=>[]},welcomeScreen:{type:Boolean,default:!0},attachments:{},dragOver:{type:Boolean},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=e.getCurrentInstance(),i=e.computed(()=>s?.vnode.props??{}),l=e.computed(()=>{const{defaultOpen:u,...d}=n;return d}),c=e.computed(()=>({...r,...l.value,...y.value}));function p(u){const d=i.value[u];return Array.isArray(d)?d.length>0:!!d}const y=e.computed(()=>{const u={onSubmitMessage:d=>a("submit-message",d),onStop:()=>a("stop"),onInputChange:d=>a("input-change",d),onSelectSuggestion:(d,f)=>a("select-suggestion",d,f)};return p("onAddFile")&&(u.onAddFile=()=>a("add-file")),p("onStartTranscribe")&&(u.onStartTranscribe=()=>a("start-transcribe")),p("onCancelTranscribe")&&(u.onCancelTranscribe=()=>a("cancel-transcribe")),p("onFinishTranscribe")&&(u.onFinishTranscribe=()=>a("finish-transcribe")),u});return(u,d)=>(e.openBlock(),e.createBlock(mt,{"is-modal-default-open":t.defaultOpen},{default:e.withCtx(()=>[e.createVNode(yr,e.normalizeProps(e.guardReactiveProps(c.value)),e.createSlots({_:2},[u.$slots.header?{name:"header",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"header",e.normalizeProps(e.guardReactiveProps(f)))]),key:"0"}:void 0,u.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(f)))]),key:"1"}:void 0,u.$slots["message-view"]?{name:"message-view",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"2"}:void 0,u.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"3"}:void 0,u.$slots.feather?{name:"feather",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"feather",e.normalizeProps(e.guardReactiveProps(f)))]),key:"4"}:void 0,u.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(f)))]),key:"5"}:void 0,u.$slots.input?{name:"input",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"input",e.normalizeProps(e.guardReactiveProps(f)))]),key:"6"}:void 0,u.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"7"}:void 0,u.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(f=>[e.renderSlot(u.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(f)))]),key:"8"}:void 0,u.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(u.$slots,"welcome-message")]),key:"9"}:void 0]),1040)]),_:3},8,["is-modal-default-open"]))}}),wr={"data-copilotkit":"",class:"cpk:h-full cpk:flex cpk:flex-col","data-testid":"copilot-sidebar-welcome-screen"},Cr={class:"cpk:flex-1 cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4"},xr={class:"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center"},Sr={class:"cpk:px-8 cpk:pb-4"},Tr={class:"cpk:max-w-3xl cpk:mx-auto"},Ir={class:"cpk:mb-4 cpk:flex cpk:justify-center"},zn=e.defineComponent({__name:"CopilotSidebarWelcomeScreen",props:{modelValue:{default:""},isRunning:{type:Boolean,default:!1},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},onUpdateModelValue:{},onSubmitMessage:{},onStop:{},onAddFile:{type:Function,default:void 0},onStartTranscribe:{type:Function,default:void 0},onCancelTranscribe:{type:Function,default:void 0},onFinishTranscribe:{type:Function,default:void 0},onFinishTranscribeWithAudio:{type:Function,default:void 0},suggestions:{default:()=>[]},loadingIndexes:{default:()=>[]},onSelectSuggestion:{}},setup(t){const o=t,n=ge(),a=e.computed(()=>n.value?.labels??Ee),r=e.computed(()=>({modelValue:o.modelValue,isRunning:o.isRunning,inputMode:o.inputMode,inputToolsMenu:o.inputToolsMenu,onUpdateModelValue:o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop,onAddFile:o.onAddFile,onStartTranscribe:o.onStartTranscribe,onCancelTranscribe:o.onCancelTranscribe,onFinishTranscribe:o.onFinishTranscribe,onFinishTranscribeWithAudio:o.onFinishTranscribeWithAudio})),s=e.computed(()=>({suggestions:o.suggestions,loadingIndexes:o.loadingIndexes,onSelectSuggestion:o.onSelectSuggestion})),i=e.computed(()=>({...r.value,...s.value})),l=e.computed(()=>{const c={"onUpdate:modelValue":o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop};return o.onAddFile&&(c.onAddFile=o.onAddFile),o.onStartTranscribe&&(c.onStartTranscribe=o.onStartTranscribe),o.onCancelTranscribe&&(c.onCancelTranscribe=o.onCancelTranscribe),o.onFinishTranscribe&&(c.onFinishTranscribe=o.onFinishTranscribe),o.onFinishTranscribeWithAudio&&(c.onFinishTranscribeWithAudio=o.onFinishTranscribeWithAudio),c});return(c,p)=>e.renderSlot(c.$slots,"layout",e.normalizeProps(e.guardReactiveProps(i.value)),()=>[e.createElementVNode("div",wr,[e.createElementVNode("div",Cr,[e.renderSlot(c.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",xr,e.toDisplayString(a.value.welcomeMessageText),1)])]),e.createElementVNode("div",Sr,[e.createElementVNode("div",Tr,[e.createElementVNode("div",Ir,[e.renderSlot(c.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(s.value)),()=>[e.createVNode(Qe,{suggestions:t.suggestions,"loading-indexes":t.loadingIndexes,onSelectSuggestion:t.onSelectSuggestion},null,8,["suggestions","loading-indexes","onSelectSuggestion"])])]),e.renderSlot(c.$slots,"input",e.normalizeProps(e.guardReactiveProps(r.value)),()=>[e.createVNode(Xe,e.mergeProps({"model-value":t.modelValue,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0},l.value),null,16,["model-value","is-running","mode","tools-menu"])])])])])])}}),Rr=e.defineComponent({__name:"CopilotPopup",props:{width:{default:void 0},height:{default:void 0},clickOutsideToClose:{type:Boolean,default:!1},defaultOpen:{type:Boolean,default:!0},agentId:{},threadId:{},throttleMs:{},labels:{},attachments:{},onError:{},autoScroll:{type:[String,Boolean],default:!0},welcomeScreen:{type:Boolean,default:!0},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t){function o(s){return{onSubmitMessage:s.onSubmitMessage,onInputChange:s.onInputChange,onSelectSuggestion:s.onSelectSuggestion,...s.onStop?{onStop:s.onStop}:{},...s.onAddFile?{onAddFile:s.onAddFile}:{},...s.onStartTranscribe?{onStartTranscribe:s.onStartTranscribe}:{},...s.onCancelTranscribe?{onCancelTranscribe:s.onCancelTranscribe}:{},...s.onFinishTranscribe?{onFinishTranscribe:s.onFinishTranscribe}:{}}}const n=t,a=ft(),r=e.computed(()=>a.value.checkFeature("popup"));return e.watch(r,s=>{s||console.warn('[CopilotKit] Warning: "popup" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(At,{key:0,"feature-name":"Popup"})),e.createVNode(Et,e.mergeProps(n,{onSubmitMessage:i[0]||(i[0]=l=>s.$emit("submit-message",l)),onStop:i[1]||(i[1]=l=>s.$emit("stop")),onInputChange:i[2]||(i[2]=l=>s.$emit("input-change",l)),onSelectSuggestion:i[3]||(i[3]=(l,c)=>s.$emit("select-suggestion",l,c)),onAddFile:i[4]||(i[4]=l=>s.$emit("add-file")),onStartTranscribe:i[5]||(i[5]=l=>s.$emit("start-transcribe")),onCancelTranscribe:i[6]||(i[6]=l=>s.$emit("cancel-transcribe")),onFinishTranscribe:i[7]||(i[7]=l=>s.$emit("finish-transcribe"))}),{"chat-view":e.withCtx(l=>[s.$slots["chat-view"]?e.renderSlot(s.$slots,"chat-view",e.normalizeProps(e.mergeProps({key:0},l))):(e.openBlock(),e.createBlock(Dn,e.mergeProps({key:1,messages:l.messages,"auto-scroll":l.autoScroll,"is-running":l.isRunning,suggestions:l.suggestions,"suggestion-loading-indexes":l.suggestionLoadingIndexes,"welcome-screen":l.welcomeScreen,"input-value":l.inputValue,"input-mode":l.inputMode,"input-tools-menu":l.inputToolsMenu,width:t.width,height:t.height,"click-outside-to-close":t.clickOutsideToClose,"default-open":t.defaultOpen,"on-finish-transcribe-with-audio":l.onFinishTranscribeWithAudio},o(l)),e.createSlots({"welcome-screen":e.withCtx(c=>[s.$slots["welcome-screen"]?e.renderSlot(s.$slots,"welcome-screen",e.normalizeProps(e.mergeProps({key:0},c))):(e.openBlock(),e.createBlock(Ln,e.normalizeProps(e.mergeProps({key:1},c)),e.createSlots({_:2},[s.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(s.$slots,"welcome-message")]),key:"0"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(p=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(p)))]),key:"1"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(p=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(p)))]),key:"2"}:void 0]),1040))]),_:2},[s.$slots.header?{name:"header",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"header",e.normalizeProps(e.guardReactiveProps(c)))]),key:"0"}:void 0,s.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(c)))]),key:"1"}:void 0,s.$slots["message-view"]?{name:"message-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"2"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(c)))]),key:"3"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"4"}:void 0]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","width","height","click-outside-to-close","default-open","on-finish-transcribe-with-audio"]))]),_:3},16)],64))}}),Ar=e.defineComponent({__name:"CopilotSidebar",props:{width:{default:void 0},defaultOpen:{type:Boolean,default:!0},agentId:{},threadId:{},throttleMs:{},labels:{},attachments:{},onError:{},autoScroll:{type:[String,Boolean],default:!0},welcomeScreen:{type:Boolean,default:!0},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t){function o(s){return{onSubmitMessage:s.onSubmitMessage,onInputChange:s.onInputChange,onSelectSuggestion:s.onSelectSuggestion,...s.onStop?{onStop:s.onStop}:{},...s.onAddFile?{onAddFile:s.onAddFile}:{},...s.onStartTranscribe?{onStartTranscribe:s.onStartTranscribe}:{},...s.onCancelTranscribe?{onCancelTranscribe:s.onCancelTranscribe}:{},...s.onFinishTranscribe?{onFinishTranscribe:s.onFinishTranscribe}:{}}}const n=t,a=ft(),r=e.computed(()=>a.value.checkFeature("sidebar"));return e.watch(r,s=>{s||console.warn('[CopilotKit] Warning: "sidebar" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(At,{key:0,"feature-name":"Sidebar"})),e.createVNode(Et,e.mergeProps(n,{onSubmitMessage:i[0]||(i[0]=l=>s.$emit("submit-message",l)),onStop:i[1]||(i[1]=l=>s.$emit("stop")),onInputChange:i[2]||(i[2]=l=>s.$emit("input-change",l)),onSelectSuggestion:i[3]||(i[3]=(l,c)=>s.$emit("select-suggestion",l,c)),onAddFile:i[4]||(i[4]=l=>s.$emit("add-file")),onStartTranscribe:i[5]||(i[5]=l=>s.$emit("start-transcribe")),onCancelTranscribe:i[6]||(i[6]=l=>s.$emit("cancel-transcribe")),onFinishTranscribe:i[7]||(i[7]=l=>s.$emit("finish-transcribe"))}),{"chat-view":e.withCtx(l=>[s.$slots["chat-view"]?e.renderSlot(s.$slots,"chat-view",e.normalizeProps(e.mergeProps({key:0},l))):(e.openBlock(),e.createBlock(Pn,e.mergeProps({key:1,messages:l.messages,"auto-scroll":l.autoScroll,"is-running":l.isRunning,suggestions:l.suggestions,"suggestion-loading-indexes":l.suggestionLoadingIndexes,"welcome-screen":l.welcomeScreen,"input-value":l.inputValue,"input-mode":l.inputMode,"input-tools-menu":l.inputToolsMenu,width:t.width,"default-open":t.defaultOpen,"on-finish-transcribe-with-audio":l.onFinishTranscribeWithAudio},o(l)),e.createSlots({"welcome-screen":e.withCtx(c=>[s.$slots["welcome-screen"]?e.renderSlot(s.$slots,"welcome-screen",e.normalizeProps(e.mergeProps({key:0},c))):(e.openBlock(),e.createBlock(zn,e.normalizeProps(e.mergeProps({key:1},c)),e.createSlots({_:2},[s.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(s.$slots,"welcome-message")]),key:"0"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(p=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(p)))]),key:"1"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(p=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(p)))]),key:"2"}:void 0]),1040))]),_:2},[s.$slots.header?{name:"header",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"header",e.normalizeProps(e.guardReactiveProps(c)))]),key:"0"}:void 0,s.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(c)))]),key:"1"}:void 0,s.$slots["message-view"]?{name:"message-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"2"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(c)))]),key:"3"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"4"}:void 0]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","width","default-open","on-finish-transcribe-with-audio"]))]),_:3},16)],64))}}),Er=Object.assign(Et,{View:Ze}),$r=Object.assign(Bt,{OpenIcon:Mt,CloseIcon:$t}),Mr=Object.assign(Vt,{Title:On,CloseButton:Nn}),Br=Object.assign(Dn,{WelcomeScreen:Ln}),Vr=Object.assign(Pn,{WelcomeScreen:zn});function Fr(t){const{copilotkit:o}=ke(),n=e.computed(()=>e.toValue(t.description)),a=e.computed(()=>e.toValue(t.value)),r=e.computed(()=>typeof a.value=="string"?a.value:JSON.stringify(a.value));e.watch([()=>o.value,n,r],(s,i,l)=>{const c=o.value,p=c.addContext({description:n.value,value:r.value});l(()=>c.removeContext(p))},{immediate:!0})}const Nr=[];function Ft(t,o){const{copilotkit:n}=ke(),a=o??Nr;e.watch([()=>t.name,()=>t.available,()=>a.length,...a],(r,s,i)=>{const l=n.value,c=t.name;l.getTool({toolName:c,agentId:t.agentId})&&(console.warn(`Tool '${c}' already exists for agent '${t.agentId||"global"}'. Overriding with latest registration.`),l.removeTool(c,t.agentId)),l.addTool(t),t.render&&l.addHookRenderToolCall({name:c,args:t.parameters,agentId:t.agentId,render:t.render}),i(()=>{l.removeTool(c,t.agentId)})},{immediate:!0})}function Or(t,o){const n=`Use this tool to display the "${t.name}" component in the chat. This tool renders a visual UI component for the user.`,a=t.description?`${n}
83
+
84
+ ${t.description}`:n;Ft({name:t.name,description:a,parameters:t.parameters,render:({args:r})=>{const s=t.render;return e.h(s,r)},agentId:t.agentId},o)}const Dr=[];function Un(t,o){const{copilotkit:n}=ke(),a=o??Dr;e.watch([()=>n.value,()=>t.name,()=>t.agentId,()=>a.length,...a],()=>{const r=i=>typeof t.render=="function"?t.render(i):e.h(t.render,i),s=t.name==="*"&&!t.parameters?ct({name:"*",render:i=>r({...i,parameters:i.args}),...t.agentId?{agentId:t.agentId}:{}}):ct({name:t.name,args:t.parameters,render:i=>r({...i,parameters:i.args}),...t.agentId?{agentId:t.agentId}:{}});n.value.addHookRenderToolCall(s)},{immediate:!0})}const Lr=e.defineComponent({props:{name:{type:String,required:!0},toolCallId:{type:String,required:!0},parameters:{type:null,required:!1,default:void 0},status:{type:String,required:!0},result:{type:String,required:!1,default:void 0}},setup(t){const o=e.ref(!1);return()=>{const n=t.status==="inProgress"||t.status==="executing",a=t.status==="complete",r=n?"Running":a?"Done":t.status;return e.h("div",{style:{marginTop:"8px",paddingBottom:"8px"}},[e.h("div",{style:{borderRadius:"12px",border:"1px solid #e4e4e7",backgroundColor:"#fafafa",padding:"14px 16px"}},[e.h("button",{type:"button",onClick:()=>{o.value=!o.value},style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",cursor:"pointer",border:"none",padding:0,margin:0,background:"transparent",textAlign:"left"}},[e.h("span",{style:{fontWeight:"600"}},t.name),e.h("span",r)]),o.value?e.h("div",{style:{marginTop:"12px"}},[e.h("div","Arguments"),e.h("pre",JSON.stringify(t.parameters??{},null,2)),t.result!==void 0?e.h("div",[e.h("div","Result"),e.h("pre",t.result)]):null]):null])])}}});function Pr(t,o){Un({name:"*",render:t?.render??(n=>e.h(Lr,{name:n.name,toolCallId:n.toolCallId,parameters:n.parameters,status:n.status,result:n.result}))},o)}function zr(t,o){const{copilotkit:n}=ke(),a=e.ref(null),r=async c=>{a.value&&(a.value(c),a.value=null)},l={...t,handler:async()=>new Promise(c=>{a.value=c}),render:c=>{const p=t.render;return c.status==="inProgress"?e.h(p,{...c,name:t.name,description:t.description||"",respond:void 0}):c.status==="executing"?e.h(p,{...c,name:t.name,description:t.description||"",respond:r}):c.status==="complete"?e.h(p,{...c,name:t.name,description:t.description||"",respond:void 0}):e.h(p,c)}};Ft(l,o),e.onScopeDispose(()=>{n.value.removeHookRenderToolCall(t.name,t.agentId)})}function Ur(t){return"instructions"in t}function jr(t){return t.map(o=>({...o,isLoading:o.isLoading??!1}))}function _r(t,o){const{copilotkit:n}=ke(),a=ge(),r=o??[],s=e.computed(()=>a.value?.agentId??z.DEFAULT_AGENT_ID),i=e.computed(()=>t?t.consumerAgentId:void 0),l=e.computed(()=>{if(!t||t.available==="disabled")return null;if(Ur(t))return{...t};const h=jr(t.suggestions);return{...t,suggestions:h}}),c=e.computed(()=>l.value?JSON.stringify(l.value):null),p=e.computed(()=>{if(!l.value)return s.value;const h=l.value.consumerAgentId;return!h||h==="*"?s.value:h}),y=e.computed(()=>i.value===void 0||i.value==="*"),u=e.ref(!1),d=e.ref(null),f=e.ref(null),v=()=>{if(!u.value||!y.value)return;if(Object.values(n.value.agents??{}).some(w=>!!w.agentId&&w.isRunning)){d.value=setTimeout(()=>{d.value=null,v()},0);return}u.value=!1,C()},C=()=>{if(l.value){if(y.value){let h=!1;const w=Object.values(n.value.agents??{});for(const m of w){const b=m.agentId;b&&(m.isRunning?h=!0:n.value.reloadSuggestions(b))}u.value=h,h&&d.value===null&&(d.value=setTimeout(()=>{d.value=null,v()},0));return}p.value&&n.value.reloadSuggestions(p.value)}};e.watch([()=>n.value,c],([h,w],m,b)=>{if(!w||!l.value)return;const g=n.value,k=l.value,x=g.addSuggestionsConfig(k);C(),b(()=>g.removeSuggestionsConfig(x))},{immediate:!0}),e.watch([l,c],([h,w])=>{if(!h){f.value=null;return}w&&f.value===w||(w&&(f.value=w),C())},{immediate:!1}),e.watch([l,()=>r.length,...r],([h])=>{!h||r.length===0||C()},{immediate:!0}),e.watch([()=>n.value,u],(h,w,m)=>{m(()=>{d.value!==null&&(clearTimeout(d.value),d.value=null)})},{immediate:!0}),e.watch([()=>n.value,y],([h,w],m,b)=>{if(!w)return;const g=Object.values(h.agents??{}).filter(k=>!!k).map(k=>k.subscribe({onRunStartedEvent:v,onRunFinishedEvent:v,onRunFinalized:v,onRunFailed:v,onRunErrorEvent:v}));b(()=>{for(const k of g)k.unsubscribe()})},{immediate:!0})}const Hr="on_interrupt";function Wr(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof Reflect.get(t,"then")=="function"}function qr(t){return t instanceof Promise?t:new Promise((o,n)=>{try{t.then(o,n)}catch(a){n(a)}})}function Gr(t={}){const{copilotkit:o}=ke(),{agent:n}=gt({agentId:t.agentId}),a=e.shallowRef(null),r=e.shallowRef(null);e.watch(n,(l,c,p)=>{if(!l){a.value=null,r.value=null;return}let y=null;const u=l.subscribe({onCustomEvent:({event:d})=>{d.name===Hr&&(y={name:d.name,value:d.value})},onRunStartedEvent:()=>{y=null,a.value=null},onRunFinalized:()=>{y&&(a.value=y,y=null)},onRunFailed:()=>{y=null}});p(()=>u.unsubscribe())},{immediate:!0});const s=l=>{const c=n.value;if(!c)return;const p=a.value?.value;a.value=null,o.value.runAgent({agent:c,forwardedProps:{command:{resume:l,interruptEvent:p}}}).catch(y=>{console.error("[CopilotKit] useInterrupt: failed to resume agent:",y)})};e.watch(a,(l,c,p)=>{if(!l){r.value=null;return}if(t.enabled&&!t.enabled(l)){r.value=null;return}const y=t.handler;if(!y){r.value=null;return}let u=!1;const d=y({event:l,resolve:s});Wr(d)?qr(d).then(f=>{u||(r.value=f)}).catch(f=>{u||(console.error("[CopilotKit] useInterrupt handler failed:",f),r.value=null)}):r.value=d,p(()=>{u=!0})},{immediate:!0});const i=e.computed(()=>!a.value||t.enabled&&!t.enabled(a.value)?null:{event:a.value,result:r.value,resolve:s});return e.watch([()=>o.value,i,()=>t.renderInChat!==!1],([l,c,p],y,u)=>{if(!p)return;l.setInterruptState(c);const d=c;u(()=>{l.interruptState===d&&l.setInterruptState(null)})},{immediate:!0}),e.onScopeDispose(()=>{const l=o.value;t.renderInChat!==!1&&l.interruptState===i.value&&l.setInterruptState(null)}),{interrupt:a,result:r,hasInterrupt:e.computed(()=>i.value!==null),resolveInterrupt:s,slotProps:i}}function Ge(t,o,n){n.value=o(t.getState());const a=t.select(o).subscribe(()=>{n.value=o(t.getState())});e.onScopeDispose(()=>a.unsubscribe())}function Kr(t){const{copilotkit:o}=ke(),n=me.ɵcreateThreadStore({fetch:globalThis.fetch}),a=e.computed(()=>e.toValue(t.agentId)),r=e.computed(()=>e.toValue(t.includeArchived)),s=e.computed(()=>e.toValue(t.limit)),i=e.computed(()=>JSON.stringify(Object.entries(o.value.headers??{}).sort(([w],[m])=>w.localeCompare(m)))),l=e.ref([]),c=e.ref(!1),p=e.ref(null),y=e.ref(!1),u=e.ref(!1);Ge(n,me.ɵselectThreads,l),Ge(n,me.ɵselectThreadsIsLoading,c),Ge(n,me.ɵselectThreadsError,p),Ge(n,me.ɵselectHasNextPage,y),Ge(n,me.ɵselectIsFetchingNextPage,u),n.start(),e.onScopeDispose(()=>{n.stop()});const d=e.ref(!1);e.watch([()=>o.value.runtimeUrl,()=>o.value.runtimeConnectionStatus,i,()=>o.value.intelligence?.wsUrl,a,r,s],([w,m,,b,g,k,x])=>{if(!w){n.setContext(null);return}if(m!==me.CopilotKitCoreRuntimeConnectionStatus.Connected)return;const A={runtimeUrl:w,headers:{...o.value.headers},wsUrl:b,agentId:g,includeArchived:k,limit:x};n.setContext(A),d.value=!0},{immediate:!0});const f=e.computed(()=>o.value.runtimeUrl?null:new Error("Runtime URL is not configured")),v=e.computed(()=>!!o.value.runtimeUrl&&!d.value),C=e.computed(()=>f.value?!1:v.value||c.value),h=e.computed(()=>f.value??p.value);return{threads:e.computed(()=>l.value.map(({id:w,agentId:m,name:b,archived:g,createdAt:k,updatedAt:x,lastRunAt:A})=>({id:w,agentId:m,name:b,archived:g,createdAt:k,updatedAt:x,...A!==void 0?{lastRunAt:A}:{}}))),isLoading:C,error:h,hasMoreThreads:y,isFetchingMoreThreads:u,fetchMoreThreads:()=>n.fetchNextPage(),renameThread:(w,m)=>n.renameThread(w,m),archiveThread:w=>n.archiveThread(w),deleteThread:w=>n.deleteThread(w)}}function Jr(t){const{agent:o}=gt({agentId:t});return e.computed(()=>{const n=o.value;if(n&&"capabilities"in n)return n.capabilities})}function Xr(){const{copilotkit:t}=ke(),o=ge();return function(a){const r=o.value;if(!r)return null;const s=r.agentId||z.DEFAULT_AGENT_ID,{threadId:i}=r,l=t.value,c=[...l.renderCustomMessages].filter(k=>k.agentId===void 0||k.agentId===s).sort((k,x)=>{const A=k.agentId!==void 0,E=x.agentId!==void 0;return A===E?0:A?-1:1});if(!c.length)return null;const{message:p,position:y}=a,u=l.getRunIdForMessage(s,i,p.id)??l.getRunIdsForThread(s,i).slice(-1)[0],d=u??`missing-run-id:${p.id}`,f=l.getAgent(s);if(!f)return null;const v=u?f.messages.filter(k=>l.getRunIdForMessage(s,i,k.id)===u).map(k=>k.id):[p.id],C=f.messages.findIndex(k=>k.id===p.id);C<0&&console.warn(`[CopilotKit] useRenderCustomMessages: message "${p.id}" not found in agent "${s}" messages`);const h=Math.max(0,C),w=u?Math.max(v.indexOf(p.id),0):0,m=u?v.length:1,b=u?l.getStateByRun(s,i,u):void 0,g={message:p,position:y,runId:d,messageIndex:h,messageIndexInRun:w,numberOfMessagesInRun:m,agentId:s,stateSnapshot:b};for(const k of c)if(k.render)return{renderer:k.render,props:g};return null}}function Qr(){const{copilotkit:t}=ke(),o=ge(),n=e.computed(()=>o.value?.agentId??z.DEFAULT_AGENT_ID),a=e.computed(()=>[...t.value.renderActivityMessages]);function r(i){const l=a.value;if(!l.length)return null;const c=l.filter(p=>p.activityType===i);return c.find(p=>p.agentId===n.value)??c.find(p=>p.agentId===void 0)??l.find(p=>p.activityType==="*")??null}function s(i){const l=r(i.activityType);if(!l)return null;const c=l.content.safeParse(i.content);if(!c.success)return console.warn(`Failed to parse content for activity message '${i.activityType}':`,c.error),null;const p=t.value.getAgent(n.value);return{renderer:l.render,props:{activityType:i.activityType,content:c.data,message:i,agent:p}}}return{renderActivityMessage:s,findRenderer:r}}exports.A2UIActivityContentSchema=to;exports.A2UISurfaceActivityType=eo;exports.CopilotChat=Er;exports.CopilotChatDefaultLabels=Ee;exports.CopilotChatToggleButton=$r;exports.CopilotChatToggleButtonCloseIcon=$t;exports.CopilotChatToggleButtonOpenIcon=Mt;exports.CopilotKitCoreVue=sn;exports.CopilotModalHeader=Mr;exports.CopilotPopupView=Br;exports.CopilotSidebarView=Vr;exports.GenerateSandboxedUiArgsSchema=fn;exports.LicenseContextKey=Rt;exports.MCPAppsActivityContentSchema=on;exports.MCPAppsActivityRenderer=an;exports.MCPAppsActivityType=nn;exports.OpenGenerativeUIActivityRenderer=hn;exports.OpenGenerativeUIActivityType=pn;exports.OpenGenerativeUIContentSchema=mn;exports.OpenGenerativeUIRenderer=gn;exports.OpenGenerativeUIToolRenderer=vn;exports.UseAgentUpdate=In;exports._sfc_main=wn;exports._sfc_main$1=Sn;exports._sfc_main$10=Qe;exports._sfc_main$11=Cn;exports._sfc_main$12=Bn;exports._sfc_main$13=Ze;exports._sfc_main$14=Zt;exports._sfc_main$15=qo;exports._sfc_main$16=Rr;exports._sfc_main$17=Ar;exports._sfc_main$2=xt;exports._sfc_main$3=er;exports._sfc_main$4=Tn;exports._sfc_main$5=mt;exports._sfc_main$6=Xe;exports._sfc_main$7=Vn;exports._sfc_main$8=Mn;exports._sfc_main$9=Fn;exports.createA2UIMessageRenderer=rn;exports.createDefaultLicenseRef=kn;exports.defineToolCallRenderer=ct;exports.extractCompleteStyles=cn;exports.getOperationSurfaceId=yt;exports.processPartialHtml=un;exports.useAgent=gt;exports.useAgentContext=Fr;exports.useAttachments=An;exports.useCapabilities=Jr;exports.useComponent=Or;exports.useConfigureSuggestions=_r;exports.useCopilotChatConfiguration=ge;exports.useCopilotKit=ke;exports.useDefaultRenderTool=Pr;exports.useFrontendTool=Ft;exports.useHumanInTheLoop=zr;exports.useInterrupt=Gr;exports.useKatexStyles=xn;exports.useKeyboardHeight=En;exports.useLicenseContext=ft;exports.useRenderActivityMessage=Qr;exports.useRenderCustomMessages=Xr;exports.useRenderTool=Un;exports.useSandboxFunctions=dn;exports.useSuggestions=Rn;exports.useThreads=Kr;
85
+ //# sourceMappingURL=use-render-activity-message-BRL1Rpl-.cjs.map