@copilotkit/react-ui 1.5.9 → 1.5.10

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 (288) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/chunk-375NVWZM.mjs +21 -0
  3. package/dist/chunk-375NVWZM.mjs.map +1 -0
  4. package/dist/chunk-3E7HY2UN.mjs +85 -0
  5. package/dist/chunk-3E7HY2UN.mjs.map +1 -0
  6. package/dist/chunk-3XAXY2Z3.mjs +18 -0
  7. package/dist/chunk-3XAXY2Z3.mjs.map +1 -0
  8. package/dist/chunk-54JAUBUJ.mjs +26 -0
  9. package/dist/chunk-54JAUBUJ.mjs.map +1 -0
  10. package/dist/chunk-6INMITFA.mjs +18 -0
  11. package/dist/chunk-6INMITFA.mjs.map +1 -0
  12. package/dist/chunk-7II4YL7R.mjs +170 -0
  13. package/dist/chunk-7II4YL7R.mjs.map +1 -0
  14. package/dist/chunk-BH6PCAAL.mjs +81 -0
  15. package/dist/chunk-BH6PCAAL.mjs.map +1 -0
  16. package/dist/chunk-CBBFRI3Q.mjs +81 -0
  17. package/dist/chunk-CBBFRI3Q.mjs.map +1 -0
  18. package/dist/chunk-DCNCY2PL.mjs +304 -0
  19. package/dist/chunk-DCNCY2PL.mjs.map +1 -0
  20. package/dist/chunk-EFZPSZWO.mjs +1 -0
  21. package/dist/chunk-EFZPSZWO.mjs.map +1 -0
  22. package/dist/chunk-EMQEEXUB.mjs +97 -0
  23. package/dist/chunk-EMQEEXUB.mjs.map +1 -0
  24. package/dist/chunk-F2W5FD7L.mjs +232 -0
  25. package/dist/chunk-F2W5FD7L.mjs.map +1 -0
  26. package/dist/chunk-FZC7X5PK.mjs +262 -0
  27. package/dist/chunk-FZC7X5PK.mjs.map +1 -0
  28. package/dist/chunk-IU3WTXLQ.mjs +1 -0
  29. package/dist/chunk-IU3WTXLQ.mjs.map +1 -0
  30. package/dist/chunk-KXE2JCUH.mjs +1 -0
  31. package/dist/chunk-KXE2JCUH.mjs.map +1 -0
  32. package/dist/chunk-MMVDU6DF.mjs +1 -0
  33. package/dist/chunk-MMVDU6DF.mjs.map +1 -0
  34. package/dist/chunk-MRFF7GSQ.mjs +1 -0
  35. package/dist/chunk-MRFF7GSQ.mjs.map +1 -0
  36. package/dist/chunk-MRXNTQOX.mjs +59 -0
  37. package/dist/chunk-MRXNTQOX.mjs.map +1 -0
  38. package/dist/chunk-OTPAZXVR.mjs +92 -0
  39. package/dist/chunk-OTPAZXVR.mjs.map +1 -0
  40. package/dist/chunk-PNQVKBPN.mjs +146 -0
  41. package/dist/chunk-PNQVKBPN.mjs.map +1 -0
  42. package/dist/chunk-RJCZRKTV.mjs +106 -0
  43. package/dist/chunk-RJCZRKTV.mjs.map +1 -0
  44. package/dist/chunk-RQNJNK2W.mjs +25 -0
  45. package/dist/chunk-RQNJNK2W.mjs.map +1 -0
  46. package/dist/chunk-RU73BEZM.mjs +41 -0
  47. package/dist/chunk-RU73BEZM.mjs.map +1 -0
  48. package/dist/chunk-S5MBUNGN.mjs +140 -0
  49. package/dist/chunk-S5MBUNGN.mjs.map +1 -0
  50. package/dist/chunk-T26KLXLH.mjs +1 -0
  51. package/dist/chunk-T26KLXLH.mjs.map +1 -0
  52. package/dist/chunk-TI7SY2RI.mjs +164 -0
  53. package/dist/chunk-TI7SY2RI.mjs.map +1 -0
  54. package/dist/chunk-UPTB2MVO.mjs +395 -0
  55. package/dist/chunk-UPTB2MVO.mjs.map +1 -0
  56. package/dist/chunk-UWVGLGFQ.mjs +95 -0
  57. package/dist/chunk-UWVGLGFQ.mjs.map +1 -0
  58. package/dist/chunk-V7W6IM2V.mjs +1 -0
  59. package/dist/chunk-V7W6IM2V.mjs.map +1 -0
  60. package/dist/chunk-VEC45H6Q.mjs +18 -0
  61. package/dist/chunk-VEC45H6Q.mjs.map +1 -0
  62. package/dist/chunk-WB3YULQ4.mjs +1 -0
  63. package/dist/chunk-WB3YULQ4.mjs.map +1 -0
  64. package/dist/chunk-WSMMTZCM.mjs +30 -0
  65. package/dist/chunk-WSMMTZCM.mjs.map +1 -0
  66. package/dist/chunk-YAGE7RCE.mjs +118 -0
  67. package/dist/chunk-YAGE7RCE.mjs.map +1 -0
  68. package/dist/chunk-YQ3D5IQV.mjs +75 -0
  69. package/dist/chunk-YQ3D5IQV.mjs.map +1 -0
  70. package/dist/chunk-YQFVRDNC.mjs +53 -0
  71. package/dist/chunk-YQFVRDNC.mjs.map +1 -0
  72. package/dist/chunk-Z2UZSN3K.mjs +29 -0
  73. package/dist/chunk-Z2UZSN3K.mjs.map +1 -0
  74. package/dist/chunk-ZABXREBH.mjs +65 -0
  75. package/dist/chunk-ZABXREBH.mjs.map +1 -0
  76. package/dist/components/chat/Button.d.ts +7 -0
  77. package/dist/components/chat/Button.js +71 -0
  78. package/dist/components/chat/Button.js.map +1 -0
  79. package/dist/components/chat/Button.mjs +10 -0
  80. package/dist/components/chat/Button.mjs.map +1 -0
  81. package/dist/components/chat/Chat.d.ts +148 -0
  82. package/dist/components/chat/Chat.js +2427 -0
  83. package/dist/components/chat/Chat.js.map +1 -0
  84. package/dist/components/chat/Chat.mjs +34 -0
  85. package/dist/components/chat/Chat.mjs.map +1 -0
  86. package/dist/components/chat/ChatContext.d.ts +105 -0
  87. package/dist/components/chat/ChatContext.js +279 -0
  88. package/dist/components/chat/ChatContext.js.map +1 -0
  89. package/dist/components/chat/ChatContext.mjs +13 -0
  90. package/dist/components/chat/ChatContext.mjs.map +1 -0
  91. package/dist/components/chat/CodeBlock.d.ts +14 -0
  92. package/dist/components/chat/CodeBlock.js +523 -0
  93. package/dist/components/chat/CodeBlock.js.map +1 -0
  94. package/dist/components/chat/CodeBlock.mjs +14 -0
  95. package/dist/components/chat/CodeBlock.mjs.map +1 -0
  96. package/dist/components/chat/Header.d.ts +7 -0
  97. package/dist/components/chat/Header.js +64 -0
  98. package/dist/components/chat/Header.js.map +1 -0
  99. package/dist/components/chat/Header.mjs +10 -0
  100. package/dist/components/chat/Header.mjs.map +1 -0
  101. package/dist/components/chat/Icons.d.ts +18 -0
  102. package/dist/components/chat/Icons.js +321 -0
  103. package/dist/components/chat/Icons.js.map +1 -0
  104. package/dist/components/chat/Icons.mjs +32 -0
  105. package/dist/components/chat/Icons.mjs.map +1 -0
  106. package/dist/components/chat/Input.d.ts +7 -0
  107. package/dist/components/chat/Input.js +324 -0
  108. package/dist/components/chat/Input.js.map +1 -0
  109. package/dist/components/chat/Input.mjs +12 -0
  110. package/dist/components/chat/Input.mjs.map +1 -0
  111. package/dist/components/chat/Markdown.d.ts +8 -0
  112. package/dist/components/chat/Markdown.js +583 -0
  113. package/dist/components/chat/Markdown.js.map +1 -0
  114. package/dist/components/chat/Markdown.mjs +11 -0
  115. package/dist/components/chat/Markdown.mjs.map +1 -0
  116. package/dist/components/chat/Messages.d.ts +12 -0
  117. package/dist/components/chat/Messages.js +217 -0
  118. package/dist/components/chat/Messages.js.map +1 -0
  119. package/dist/components/chat/Messages.mjs +12 -0
  120. package/dist/components/chat/Messages.mjs.map +1 -0
  121. package/dist/components/chat/Modal.d.ts +51 -0
  122. package/dist/components/chat/Modal.js +2626 -0
  123. package/dist/components/chat/Modal.js.map +1 -0
  124. package/dist/components/chat/Modal.mjs +34 -0
  125. package/dist/components/chat/Modal.mjs.map +1 -0
  126. package/dist/components/chat/Popup.d.ts +13 -0
  127. package/dist/components/chat/Popup.js +2637 -0
  128. package/dist/components/chat/Popup.js.map +1 -0
  129. package/dist/components/chat/Popup.mjs +35 -0
  130. package/dist/components/chat/Popup.mjs.map +1 -0
  131. package/dist/components/chat/Response.d.ts +7 -0
  132. package/dist/components/chat/Response.js +64 -0
  133. package/dist/components/chat/Response.js.map +1 -0
  134. package/dist/components/chat/Response.mjs +10 -0
  135. package/dist/components/chat/Response.mjs.map +1 -0
  136. package/dist/components/chat/Sidebar.d.ts +13 -0
  137. package/dist/components/chat/Sidebar.js +2646 -0
  138. package/dist/components/chat/Sidebar.js.map +1 -0
  139. package/dist/components/chat/Sidebar.mjs +35 -0
  140. package/dist/components/chat/Sidebar.mjs.map +1 -0
  141. package/dist/components/chat/Suggestion.d.ts +14 -0
  142. package/dist/components/chat/Suggestion.js +181 -0
  143. package/dist/components/chat/Suggestion.js.map +1 -0
  144. package/dist/components/chat/Suggestion.mjs +11 -0
  145. package/dist/components/chat/Suggestion.mjs.map +1 -0
  146. package/dist/components/chat/Textarea.d.ts +13 -0
  147. package/dist/components/chat/Textarea.js +73 -0
  148. package/dist/components/chat/Textarea.js.map +1 -0
  149. package/dist/components/chat/Textarea.mjs +8 -0
  150. package/dist/components/chat/Textarea.mjs.map +1 -0
  151. package/dist/components/chat/Window.d.ts +7 -0
  152. package/dist/components/chat/Window.js +164 -0
  153. package/dist/components/chat/Window.js.map +1 -0
  154. package/dist/components/chat/Window.mjs +10 -0
  155. package/dist/components/chat/Window.mjs.map +1 -0
  156. package/dist/components/chat/index.d.ts +11 -0
  157. package/dist/components/chat/index.js +2661 -0
  158. package/dist/components/chat/index.js.map +1 -0
  159. package/dist/components/chat/index.mjs +47 -0
  160. package/dist/components/chat/index.mjs.map +1 -0
  161. package/dist/components/chat/messages/RenderActionExecutionMessage.d.ts +7 -0
  162. package/dist/components/chat/messages/RenderActionExecutionMessage.js +131 -0
  163. package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +1 -0
  164. package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +10 -0
  165. package/dist/components/chat/messages/RenderActionExecutionMessage.mjs.map +1 -0
  166. package/dist/components/chat/messages/RenderAgentStateMessage.d.ts +7 -0
  167. package/dist/components/chat/messages/RenderAgentStateMessage.js +111 -0
  168. package/dist/components/chat/messages/RenderAgentStateMessage.js.map +1 -0
  169. package/dist/components/chat/messages/RenderAgentStateMessage.mjs +10 -0
  170. package/dist/components/chat/messages/RenderAgentStateMessage.mjs.map +1 -0
  171. package/dist/components/chat/messages/RenderResultMessage.d.ts +7 -0
  172. package/dist/components/chat/messages/RenderResultMessage.js +64 -0
  173. package/dist/components/chat/messages/RenderResultMessage.js.map +1 -0
  174. package/dist/components/chat/messages/RenderResultMessage.mjs +10 -0
  175. package/dist/components/chat/messages/RenderResultMessage.mjs.map +1 -0
  176. package/dist/components/chat/messages/RenderTextMessage.d.ts +7 -0
  177. package/dist/components/chat/messages/RenderTextMessage.js +629 -0
  178. package/dist/components/chat/messages/RenderTextMessage.js.map +1 -0
  179. package/dist/components/chat/messages/RenderTextMessage.mjs +13 -0
  180. package/dist/components/chat/messages/RenderTextMessage.mjs.map +1 -0
  181. package/dist/components/chat/props.d.ts +46 -0
  182. package/dist/components/chat/props.js +19 -0
  183. package/dist/components/chat/props.js.map +1 -0
  184. package/dist/components/chat/props.mjs +2 -0
  185. package/dist/components/chat/props.mjs.map +1 -0
  186. package/dist/components/dev-console/console.d.ts +10 -0
  187. package/dist/components/dev-console/console.js +720 -0
  188. package/dist/components/dev-console/console.js.map +1 -0
  189. package/dist/components/dev-console/console.mjs +17 -0
  190. package/dist/components/dev-console/console.mjs.map +1 -0
  191. package/dist/components/dev-console/icons.d.ts +9 -0
  192. package/dist/components/dev-console/icons.js +120 -0
  193. package/dist/components/dev-console/icons.js.map +1 -0
  194. package/dist/components/dev-console/icons.mjs +16 -0
  195. package/dist/components/dev-console/icons.mjs.map +1 -0
  196. package/dist/components/dev-console/index.d.ts +5 -0
  197. package/dist/components/dev-console/index.js +720 -0
  198. package/dist/components/dev-console/index.js.map +1 -0
  199. package/dist/components/dev-console/index.mjs +18 -0
  200. package/dist/components/dev-console/index.mjs.map +1 -0
  201. package/dist/components/dev-console/types.d.ts +9 -0
  202. package/dist/components/dev-console/types.js +19 -0
  203. package/dist/components/dev-console/types.js.map +1 -0
  204. package/dist/components/dev-console/types.mjs +1 -0
  205. package/dist/components/dev-console/types.mjs.map +1 -0
  206. package/dist/components/dev-console/utils.d.ts +10 -0
  207. package/dist/components/dev-console/utils.js +188 -0
  208. package/dist/components/dev-console/utils.js.map +1 -0
  209. package/dist/components/dev-console/utils.mjs +16 -0
  210. package/dist/components/dev-console/utils.mjs.map +1 -0
  211. package/dist/components/help-modal/icons.d.ts +9 -0
  212. package/dist/components/help-modal/icons.js +107 -0
  213. package/dist/components/help-modal/icons.js.map +1 -0
  214. package/dist/components/help-modal/icons.mjs +12 -0
  215. package/dist/components/help-modal/icons.mjs.map +1 -0
  216. package/dist/components/help-modal/index.d.ts +2 -0
  217. package/dist/components/help-modal/index.js +255 -0
  218. package/dist/components/help-modal/index.js.map +1 -0
  219. package/dist/components/help-modal/index.mjs +10 -0
  220. package/dist/components/help-modal/index.mjs.map +1 -0
  221. package/dist/components/help-modal/modal.d.ts +5 -0
  222. package/dist/components/help-modal/modal.js +253 -0
  223. package/dist/components/help-modal/modal.js.map +1 -0
  224. package/dist/components/help-modal/modal.mjs +9 -0
  225. package/dist/components/help-modal/modal.mjs.map +1 -0
  226. package/dist/components/index.d.ts +14 -0
  227. package/dist/components/index.js +2665 -0
  228. package/dist/components/index.js.map +1 -0
  229. package/dist/components/index.mjs +54 -0
  230. package/dist/components/index.mjs.map +1 -0
  231. package/dist/context/index.d.ts +2 -0
  232. package/dist/context/index.js +19 -0
  233. package/dist/context/index.js.map +1 -0
  234. package/dist/context/index.mjs +2 -0
  235. package/dist/context/index.mjs.map +1 -0
  236. package/dist/hooks/index.d.ts +1 -0
  237. package/dist/hooks/index.js +55 -0
  238. package/dist/hooks/index.js.map +1 -0
  239. package/dist/hooks/index.mjs +9 -0
  240. package/dist/hooks/index.mjs.map +1 -0
  241. package/dist/hooks/use-copilot-chat-suggestions.d.ts +83 -0
  242. package/dist/hooks/use-copilot-chat-suggestions.js +53 -0
  243. package/dist/hooks/use-copilot-chat-suggestions.js.map +1 -0
  244. package/dist/hooks/use-copilot-chat-suggestions.mjs +8 -0
  245. package/dist/hooks/use-copilot-chat-suggestions.mjs.map +1 -0
  246. package/dist/hooks/use-copy-to-clipboard.d.ts +9 -0
  247. package/dist/hooks/use-copy-to-clipboard.js +60 -0
  248. package/dist/hooks/use-copy-to-clipboard.js.map +1 -0
  249. package/dist/hooks/use-copy-to-clipboard.mjs +8 -0
  250. package/dist/hooks/use-copy-to-clipboard.mjs.map +1 -0
  251. package/dist/hooks/use-push-to-talk.d.ts +19 -0
  252. package/dist/hooks/use-push-to-talk.js +195 -0
  253. package/dist/hooks/use-push-to-talk.js.map +1 -0
  254. package/dist/hooks/use-push-to-talk.mjs +12 -0
  255. package/dist/hooks/use-push-to-talk.mjs.map +1 -0
  256. package/dist/index.css +751 -0
  257. package/dist/index.css.map +1 -0
  258. package/dist/index.d.ts +16 -0
  259. package/dist/index.js +2693 -0
  260. package/dist/index.js.map +1 -0
  261. package/dist/index.mjs +62 -0
  262. package/dist/index.mjs.map +1 -0
  263. package/dist/lib/utils.d.ts +4 -0
  264. package/dist/lib/utils.js +76 -0
  265. package/dist/lib/utils.js.map +1 -0
  266. package/dist/lib/utils.mjs +34 -0
  267. package/dist/lib/utils.mjs.map +1 -0
  268. package/dist/lib/utils.test.d.ts +2 -0
  269. package/dist/lib/utils.test.js +9 -0
  270. package/dist/lib/utils.test.js.map +1 -0
  271. package/dist/lib/utils.test.mjs +7 -0
  272. package/dist/lib/utils.test.mjs.map +1 -0
  273. package/dist/types/css.d.ts +16 -0
  274. package/dist/types/css.js +19 -0
  275. package/dist/types/css.js.map +1 -0
  276. package/dist/types/css.mjs +1 -0
  277. package/dist/types/css.mjs.map +1 -0
  278. package/dist/types/index.d.ts +2 -0
  279. package/dist/types/index.js +19 -0
  280. package/dist/types/index.js.map +1 -0
  281. package/dist/types/index.mjs +2 -0
  282. package/dist/types/index.mjs.map +1 -0
  283. package/dist/types/suggestions.d.ts +8 -0
  284. package/dist/types/suggestions.js +19 -0
  285. package/dist/types/suggestions.js.map +1 -0
  286. package/dist/types/suggestions.mjs +1 -0
  287. package/dist/types/suggestions.mjs.map +1 -0
  288. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,51 @@
1
1
  # ui
2
2
 
3
+ ## 1.5.10
4
+
5
+ ### Patch Changes
6
+
7
+ - 1fc7fa5: test changelog
8
+ - c4a6aa5: test release notes
9
+ - 716bd5c: test changelog
10
+ - a35d447: test changelog
11
+ - 4ae197e: Test release notes
12
+ - 4211318: test changelog
13
+ - 8166ac6: Test release notes
14
+ - d431537: Test release notes
15
+ - Updated dependencies [72f9e58]
16
+ - Updated dependencies [db3d539]
17
+ - Updated dependencies [aecb6f4]
18
+ - Updated dependencies [e5d588d]
19
+ - Updated dependencies [4211318]
20
+ - Updated dependencies [9b3bdc2]
21
+ - Updated dependencies [d431537]
22
+ - @copilotkit/runtime-client-gql@1.5.10
23
+ - @copilotkit/react-core@1.5.10
24
+ - @copilotkit/shared@1.5.10
25
+
26
+ ## 1.5.10-next.0
27
+
28
+ ### Patch Changes
29
+
30
+ - 1fc7fa5: test changelog
31
+ - c4a6aa5: test release notes
32
+ - 716bd5c: test changelog
33
+ - a35d447: test changelog
34
+ - 4ae197e: Test release notes
35
+ - 4211318: test changelog
36
+ - 8166ac6: Test release notes
37
+ - d431537: Test release notes
38
+ - Updated dependencies [72f9e58]
39
+ - Updated dependencies [db3d539]
40
+ - Updated dependencies [aecb6f4]
41
+ - Updated dependencies [e5d588d]
42
+ - Updated dependencies [4211318]
43
+ - Updated dependencies [9b3bdc2]
44
+ - Updated dependencies [d431537]
45
+ - @copilotkit/runtime-client-gql@1.5.10-next.0
46
+ - @copilotkit/react-core@1.5.10-next.0
47
+ - @copilotkit/shared@1.5.10-next.0
48
+
3
49
  ## 1.5.9
4
50
 
5
51
  ### Patch Changes
@@ -0,0 +1,21 @@
1
+ import {
2
+ CopilotModal
3
+ } from "./chunk-UWVGLGFQ.mjs";
4
+ import {
5
+ __spreadProps,
6
+ __spreadValues
7
+ } from "./chunk-MRXNTQOX.mjs";
8
+
9
+ // src/components/chat/Popup.tsx
10
+ import { jsx } from "react/jsx-runtime";
11
+ function CopilotPopup(props) {
12
+ props = __spreadProps(__spreadValues({}, props), {
13
+ className: props.className ? props.className + " copilotKitPopup" : "copilotKitPopup"
14
+ });
15
+ return /* @__PURE__ */ jsx(CopilotModal, __spreadProps(__spreadValues({}, props), { children: props.children }));
16
+ }
17
+
18
+ export {
19
+ CopilotPopup
20
+ };
21
+ //# sourceMappingURL=chunk-375NVWZM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Popup.tsx"],"sourcesContent":["/**\n * <br/>\n * <img src=\"/images/CopilotPopup.gif\" width=\"500\" />\n *\n * A chatbot popup component for the CopilotKit framework. The component allows for a high degree\n * of customization through various props and custom CSS.\n *\n * See [CopilotSidebar](/reference/components/chat/CopilotSidebar) for a sidebar version of this component.\n *\n * ## Install Dependencies\n *\n * This component is part of the [@copilotkit/react-ui](https://npmjs.com/package/@copilotkit/react-ui) package.\n *\n * ```shell npm2yarn \\\"@copilotkit/react-ui\"\\\n * npm install @copilotkit/react-core @copilotkit/react-ui\n * ```\n * ## Usage\n *\n * ```tsx\n * import { CopilotPopup } from \"@copilotkit/react-ui\";\n * import \"@copilotkit/react-ui/styles.css\";\n *\n * <CopilotPopup\n * labels={{\n * title: \"Your Assistant\",\n * initial: \"Hi! 👋 How can I assist you today?\",\n * }}\n * />\n * ```\n *\n * ### Look & Feel\n *\n * By default, CopilotKit components do not have any styles. You can import CopilotKit's stylesheet at the root of your project:\n * ```tsx title=\"YourRootComponent.tsx\"\n * ...\n * import \"@copilotkit/react-ui/styles.css\"; // [!code highlight]\n *\n * export function YourRootComponent() {\n * return (\n * <CopilotKit>\n * ...\n * </CopilotKit>\n * );\n * }\n * ```\n * For more information about how to customize the styles, check out the [Customize Look & Feel](/guides/custom-look-and-feel/customize-built-in-ui-components) guide.\n */\n\nimport { CopilotModal, CopilotModalProps } from \"./Modal\";\n\nexport function CopilotPopup(props: CopilotModalProps) {\n props = {\n ...props,\n className: props.className ? props.className + \" copilotKitPopup\" : \"copilotKitPopup\",\n };\n return <CopilotModal {...props}>{props.children}</CopilotModal>;\n}\n"],"mappings":";;;;;;;;;AAuDS;AALF,SAAS,aAAa,OAA0B;AACrD,UAAQ,iCACH,QADG;AAAA,IAEN,WAAW,MAAM,YAAY,MAAM,YAAY,qBAAqB;AAAA,EACtE;AACA,SAAO,oBAAC,+CAAiB,QAAjB,EAAyB,gBAAM,WAAS;AAClD;","names":[]}
@@ -0,0 +1,85 @@
1
+ import {
2
+ useChatContext
3
+ } from "./chunk-CBBFRI3Q.mjs";
4
+
5
+ // src/components/chat/messages/RenderActionExecutionMessage.tsx
6
+ import { MessageStatusCode } from "@copilotkit/runtime-client-gql";
7
+ import { useCopilotContext } from "@copilotkit/react-core";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ function RenderActionExecutionMessage(props) {
10
+ const { message, inProgress, index, isCurrentMessage, actionResult } = props;
11
+ const { chatComponentsCache } = useCopilotContext();
12
+ const { icons } = useChatContext();
13
+ if (message.isActionExecutionMessage()) {
14
+ if (chatComponentsCache.current !== null && (chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"])) {
15
+ const render = chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"];
16
+ if (typeof render === "string") {
17
+ if (isCurrentMessage && inProgress) {
18
+ return /* @__PURE__ */ jsxs("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
19
+ icons.spinnerIcon,
20
+ " ",
21
+ /* @__PURE__ */ jsx("span", { className: "inProgressLabel", children: render })
22
+ ] }, index);
23
+ } else {
24
+ return null;
25
+ }
26
+ } else {
27
+ const args = message.arguments;
28
+ let status = "inProgress";
29
+ if (actionResult !== void 0) {
30
+ status = "complete";
31
+ } else if (message.status.code !== MessageStatusCode.Pending) {
32
+ status = "executing";
33
+ }
34
+ try {
35
+ const toRender = render({
36
+ status,
37
+ args,
38
+ result: actionResult,
39
+ name: message.name
40
+ });
41
+ if (!toRender && status === "complete") {
42
+ return null;
43
+ }
44
+ if (typeof toRender === "string") {
45
+ return /* @__PURE__ */ jsxs("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
46
+ isCurrentMessage && inProgress && icons.spinnerIcon,
47
+ " ",
48
+ toRender
49
+ ] }, index);
50
+ } else {
51
+ return /* @__PURE__ */ jsx(
52
+ "div",
53
+ {
54
+ "data-message-type": "action-render",
55
+ className: "copilotKitCustomAssistantMessage",
56
+ children: toRender
57
+ },
58
+ index
59
+ );
60
+ }
61
+ } catch (e) {
62
+ console.error(`Error executing render function for action ${message.name}: ${e}`);
63
+ return /* @__PURE__ */ jsxs("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
64
+ isCurrentMessage && inProgress && icons.spinnerIcon,
65
+ /* @__PURE__ */ jsxs("b", { children: [
66
+ "\u274C Error executing render: ",
67
+ message.name
68
+ ] }),
69
+ /* @__PURE__ */ jsx("br", {}),
70
+ e instanceof Error ? e.message : String(e)
71
+ ] }, index);
72
+ }
73
+ }
74
+ } else if (!inProgress || !isCurrentMessage) {
75
+ return null;
76
+ } else {
77
+ return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: icons.spinnerIcon }, index);
78
+ }
79
+ }
80
+ }
81
+
82
+ export {
83
+ RenderActionExecutionMessage
84
+ };
85
+ //# sourceMappingURL=chunk-3E7HY2UN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/messages/RenderActionExecutionMessage.tsx"],"sourcesContent":["import { MessageStatusCode } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { useChatContext } from \"../ChatContext\";\nimport { RenderFunctionStatus, useCopilotContext } from \"@copilotkit/react-core\";\n\nexport function RenderActionExecutionMessage(props: RenderMessageProps) {\n const { message, inProgress, index, isCurrentMessage, actionResult } = props;\n const { chatComponentsCache } = useCopilotContext();\n const { icons } = useChatContext();\n\n if (message.isActionExecutionMessage()) {\n if (\n chatComponentsCache.current !== null &&\n (chatComponentsCache.current.actions[message.name] ||\n chatComponentsCache.current.actions[\"*\"])\n ) {\n const render =\n chatComponentsCache.current.actions[message.name] ||\n chatComponentsCache.current.actions[\"*\"];\n // render a static string\n if (typeof render === \"string\") {\n // when render is static, we show it only when in progress\n if (isCurrentMessage && inProgress) {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {icons.spinnerIcon} <span className=\"inProgressLabel\">{render}</span>\n </div>\n );\n }\n // Done - silent by default to avoid a series of \"done\" messages\n else {\n return null;\n }\n }\n // render is a function\n else {\n const args = message.arguments;\n\n let status: RenderFunctionStatus = \"inProgress\";\n\n if (actionResult !== undefined) {\n status = \"complete\";\n } else if (message.status.code !== MessageStatusCode.Pending) {\n status = \"executing\";\n }\n\n try {\n const toRender = render({\n status: status as any,\n args,\n result: actionResult,\n name: message.name,\n });\n // No result and complete: stay silent\n if (!toRender && status === \"complete\") {\n return null;\n }\n if (typeof toRender === \"string\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && icons.spinnerIcon} {toRender}\n </div>\n );\n } else {\n return (\n <div\n key={index}\n data-message-type=\"action-render\"\n className=\"copilotKitCustomAssistantMessage\"\n >\n {toRender}\n </div>\n );\n }\n } catch (e) {\n console.error(`Error executing render function for action ${message.name}: ${e}`);\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && icons.spinnerIcon}\n <b>❌ Error executing render: {message.name}</b>\n <br />\n {e instanceof Error ? e.message : String(e)}\n </div>\n );\n }\n }\n }\n // No render function found- show the default message\n else if (!inProgress || !isCurrentMessage) {\n // Done - silent by default to avoid a series of \"done\" messages\n return null;\n } else {\n // In progress\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {icons.spinnerIcon}\n </div>\n );\n }\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,yBAAyB;AAGlC,SAA+B,yBAAyB;AAqB5C,SACsB,KADtB;AAnBL,SAAS,6BAA6B,OAA2B;AACtE,QAAM,EAAE,SAAS,YAAY,OAAO,kBAAkB,aAAa,IAAI;AACvE,QAAM,EAAE,oBAAoB,IAAI,kBAAkB;AAClD,QAAM,EAAE,MAAM,IAAI,eAAe;AAEjC,MAAI,QAAQ,yBAAyB,GAAG;AACtC,QACE,oBAAoB,YAAY,SAC/B,oBAAoB,QAAQ,QAAQ,QAAQ,IAAI,KAC/C,oBAAoB,QAAQ,QAAQ,GAAG,IACzC;AACA,YAAM,SACJ,oBAAoB,QAAQ,QAAQ,QAAQ,IAAI,KAChD,oBAAoB,QAAQ,QAAQ,GAAG;AAEzC,UAAI,OAAO,WAAW,UAAU;AAE9B,YAAI,oBAAoB,YAAY;AAClC,iBACE,qBAAC,SAAgB,WAAW,gDACzB;AAAA,kBAAM;AAAA,YAAY;AAAA,YAAC,oBAAC,UAAK,WAAU,mBAAmB,kBAAO;AAAA,eADtD,KAEV;AAAA,QAEJ,OAEK;AACH,iBAAO;AAAA,QACT;AAAA,MACF,OAEK;AACH,cAAM,OAAO,QAAQ;AAErB,YAAI,SAA+B;AAEnC,YAAI,iBAAiB,QAAW;AAC9B,mBAAS;AAAA,QACX,WAAW,QAAQ,OAAO,SAAS,kBAAkB,SAAS;AAC5D,mBAAS;AAAA,QACX;AAEA,YAAI;AACF,gBAAM,WAAW,OAAO;AAAA,YACtB;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,YACR,MAAM,QAAQ;AAAA,UAChB,CAAC;AAED,cAAI,CAAC,YAAY,WAAW,YAAY;AACtC,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,aAAa,UAAU;AAChC,mBACE,qBAAC,SAAgB,WAAW,gDACzB;AAAA,kCAAoB,cAAc,MAAM;AAAA,cAAY;AAAA,cAAE;AAAA,iBAD/C,KAEV;AAAA,UAEJ,OAAO;AACL,mBACE;AAAA,cAAC;AAAA;AAAA,gBAEC,qBAAkB;AAAA,gBAClB,WAAU;AAAA,gBAET;AAAA;AAAA,cAJI;AAAA,YAKP;AAAA,UAEJ;AAAA,QACF,SAAS,GAAP;AACA,kBAAQ,MAAM,8CAA8C,QAAQ,SAAS,GAAG;AAChF,iBACE,qBAAC,SAAgB,WAAW,gDACzB;AAAA,gCAAoB,cAAc,MAAM;AAAA,YACzC,qBAAC,OAAE;AAAA;AAAA,cAA2B,QAAQ;AAAA,eAAK;AAAA,YAC3C,oBAAC,QAAG;AAAA,YACH,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,eAJlC,KAKV;AAAA,QAEJ;AAAA,MACF;AAAA,IACF,WAES,CAAC,cAAc,CAAC,kBAAkB;AAEzC,aAAO;AAAA,IACT,OAAO;AAEL,aACE,oBAAC,SAAgB,WAAW,gDACzB,gBAAM,eADC,KAEV;AAAA,IAEJ;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,18 @@
1
+ import {
2
+ useChatContext
3
+ } from "./chunk-CBBFRI3Q.mjs";
4
+
5
+ // src/components/chat/Response.tsx
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ var ResponseButton = ({ onClick, inProgress }) => {
8
+ const context = useChatContext();
9
+ return /* @__PURE__ */ jsxs("button", { onClick, className: "copilotKitResponseButton", children: [
10
+ /* @__PURE__ */ jsx("span", { children: inProgress ? context.icons.stopIcon : context.icons.regenerateIcon }),
11
+ inProgress ? context.labels.stopGenerating : context.labels.regenerateResponse
12
+ ] });
13
+ };
14
+
15
+ export {
16
+ ResponseButton
17
+ };
18
+ //# sourceMappingURL=chunk-3XAXY2Z3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Response.tsx"],"sourcesContent":["import { useChatContext } from \"./ChatContext\";\nimport { ResponseButtonProps } from \"./props\";\n\nexport const ResponseButton = ({ onClick, inProgress }: ResponseButtonProps) => {\n const context = useChatContext();\n return (\n <button onClick={onClick} className=\"copilotKitResponseButton\">\n <span>{inProgress ? context.icons.stopIcon : context.icons.regenerateIcon}</span>\n {inProgress ? context.labels.stopGenerating : context.labels.regenerateResponse}\n </button>\n );\n};\n"],"mappings":";;;;;AAMI,SACE,KADF;AAHG,IAAM,iBAAiB,CAAC,EAAE,SAAS,WAAW,MAA2B;AAC9E,QAAM,UAAU,eAAe;AAC/B,SACE,qBAAC,YAAO,SAAkB,WAAU,4BAClC;AAAA,wBAAC,UAAM,uBAAa,QAAQ,MAAM,WAAW,QAAQ,MAAM,gBAAe;AAAA,IACzE,aAAa,QAAQ,OAAO,iBAAiB,QAAQ,OAAO;AAAA,KAC/D;AAEJ;","names":[]}
@@ -0,0 +1,26 @@
1
+ // src/hooks/use-copy-to-clipboard.tsx
2
+ import * as React from "react";
3
+ function useCopyToClipboard({ timeout = 2e3 }) {
4
+ const [isCopied, setIsCopied] = React.useState(false);
5
+ const copyToClipboard = (value) => {
6
+ var _a;
7
+ if (typeof window === "undefined" || !((_a = navigator.clipboard) == null ? void 0 : _a.writeText)) {
8
+ return;
9
+ }
10
+ if (!value) {
11
+ return;
12
+ }
13
+ navigator.clipboard.writeText(value).then(() => {
14
+ setIsCopied(true);
15
+ setTimeout(() => {
16
+ setIsCopied(false);
17
+ }, timeout);
18
+ });
19
+ };
20
+ return { isCopied, copyToClipboard };
21
+ }
22
+
23
+ export {
24
+ useCopyToClipboard
25
+ };
26
+ //# sourceMappingURL=chunk-54JAUBUJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/use-copy-to-clipboard.tsx"],"sourcesContent":["import * as React from \"react\";\n\nexport interface useCopyToClipboardProps {\n timeout?: number;\n}\n\nexport function useCopyToClipboard({ timeout = 2000 }: useCopyToClipboardProps) {\n const [isCopied, setIsCopied] = React.useState<Boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (typeof window === \"undefined\" || !navigator.clipboard?.writeText) {\n return;\n }\n\n if (!value) {\n return;\n }\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n\n setTimeout(() => {\n setIsCopied(false);\n }, timeout);\n });\n };\n\n return { isCopied, copyToClipboard };\n}\n"],"mappings":";AAAA,YAAY,WAAW;AAMhB,SAAS,mBAAmB,EAAE,UAAU,IAAK,GAA4B;AAC9E,QAAM,CAAC,UAAU,WAAW,IAAU,eAAkB,KAAK;AAE7D,QAAM,kBAAkB,CAAC,UAAkB;AAT7C;AAUI,QAAI,OAAO,WAAW,eAAe,GAAC,eAAU,cAAV,mBAAqB,YAAW;AACpE;AAAA,IACF;AAEA,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,cAAU,UAAU,UAAU,KAAK,EAAE,KAAK,MAAM;AAC9C,kBAAY,IAAI;AAEhB,iBAAW,MAAM;AACf,oBAAY,KAAK;AAAA,MACnB,GAAG,OAAO;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,UAAU,gBAAgB;AACrC;","names":[]}
@@ -0,0 +1,18 @@
1
+ import {
2
+ useChatContext
3
+ } from "./chunk-CBBFRI3Q.mjs";
4
+
5
+ // src/components/chat/messages/RenderResultMessage.tsx
6
+ import { jsx } from "react/jsx-runtime";
7
+ function RenderResultMessage(props) {
8
+ const { message, inProgress, index, isCurrentMessage } = props;
9
+ const { icons } = useChatContext();
10
+ if (message.isResultMessage() && inProgress && isCurrentMessage) {
11
+ return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: icons.spinnerIcon }, index);
12
+ }
13
+ }
14
+
15
+ export {
16
+ RenderResultMessage
17
+ };
18
+ //# sourceMappingURL=chunk-6INMITFA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/messages/RenderResultMessage.tsx"],"sourcesContent":["import { ResultMessage } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { useChatContext } from \"../ChatContext\";\n\nexport function RenderResultMessage(props: RenderMessageProps) {\n const { message, inProgress, index, isCurrentMessage } = props;\n const { icons } = useChatContext();\n if (message.isResultMessage() && inProgress && isCurrentMessage) {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {icons.spinnerIcon}\n </div>\n );\n }\n}\n"],"mappings":";;;;;AASM;AALC,SAAS,oBAAoB,OAA2B;AAC7D,QAAM,EAAE,SAAS,YAAY,OAAO,iBAAiB,IAAI;AACzD,QAAM,EAAE,MAAM,IAAI,eAAe;AACjC,MAAI,QAAQ,gBAAgB,KAAK,cAAc,kBAAkB;AAC/D,WACE,oBAAC,SAAgB,WAAW,gDACzB,gBAAM,eADC,KAEV;AAAA,EAEJ;AACF;","names":[]}
@@ -0,0 +1,170 @@
1
+ import {
2
+ useChatContext
3
+ } from "./chunk-CBBFRI3Q.mjs";
4
+
5
+ // src/components/chat/Messages.tsx
6
+ import { useEffect, useMemo, useRef } from "react";
7
+ import { ResultMessage, TextMessage, Role } from "@copilotkit/runtime-client-gql";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ var Messages = ({
10
+ messages,
11
+ inProgress,
12
+ children,
13
+ RenderTextMessage,
14
+ RenderActionExecutionMessage,
15
+ RenderAgentStateMessage,
16
+ RenderResultMessage
17
+ }) => {
18
+ const context = useChatContext();
19
+ const initialMessages = useMemo(
20
+ () => makeInitialMessages(context.labels.initial),
21
+ [context.labels.initial]
22
+ );
23
+ messages = [...initialMessages, ...messages];
24
+ const actionResults = {};
25
+ for (let i = 0; i < messages.length; i++) {
26
+ if (messages[i].isActionExecutionMessage()) {
27
+ const id = messages[i].id;
28
+ const resultMessage = messages.find(
29
+ (message) => message.isResultMessage() && message.actionExecutionId === id
30
+ );
31
+ if (resultMessage) {
32
+ actionResults[id] = ResultMessage.decodeResult(resultMessage.result || "");
33
+ }
34
+ }
35
+ }
36
+ const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);
37
+ return /* @__PURE__ */ jsxs("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
38
+ messages.map((message, index) => {
39
+ const isCurrentMessage = index === messages.length - 1;
40
+ if (message.isTextMessage()) {
41
+ return /* @__PURE__ */ jsx(
42
+ RenderTextMessage,
43
+ {
44
+ message,
45
+ inProgress,
46
+ index,
47
+ isCurrentMessage
48
+ },
49
+ index
50
+ );
51
+ } else if (message.isActionExecutionMessage()) {
52
+ return /* @__PURE__ */ jsx(
53
+ RenderActionExecutionMessage,
54
+ {
55
+ message,
56
+ inProgress,
57
+ index,
58
+ isCurrentMessage,
59
+ actionResult: actionResults[message.id]
60
+ },
61
+ index
62
+ );
63
+ } else if (message.isAgentStateMessage()) {
64
+ return /* @__PURE__ */ jsx(
65
+ RenderAgentStateMessage,
66
+ {
67
+ message,
68
+ inProgress,
69
+ index,
70
+ isCurrentMessage
71
+ },
72
+ index
73
+ );
74
+ } else if (message.isResultMessage()) {
75
+ return /* @__PURE__ */ jsx(
76
+ RenderResultMessage,
77
+ {
78
+ message,
79
+ inProgress,
80
+ index,
81
+ isCurrentMessage
82
+ },
83
+ index
84
+ );
85
+ }
86
+ }),
87
+ /* @__PURE__ */ jsx("footer", { ref: messagesEndRef, children })
88
+ ] });
89
+ };
90
+ function makeInitialMessages(initial) {
91
+ let initialArray = [];
92
+ if (initial) {
93
+ if (Array.isArray(initial)) {
94
+ initialArray.push(...initial);
95
+ } else {
96
+ initialArray.push(initial);
97
+ }
98
+ }
99
+ return initialArray.map(
100
+ (message) => new TextMessage({
101
+ role: Role.Assistant,
102
+ content: message
103
+ })
104
+ );
105
+ }
106
+ function useScrollToBottom(messages) {
107
+ const messagesEndRef = useRef(null);
108
+ const messagesContainerRef = useRef(null);
109
+ const isProgrammaticScrollRef = useRef(false);
110
+ const isUserScrollUpRef = useRef(false);
111
+ const scrollToBottom = () => {
112
+ if (messagesEndRef.current) {
113
+ isProgrammaticScrollRef.current = true;
114
+ messagesEndRef.current.scrollIntoView({
115
+ behavior: "auto"
116
+ });
117
+ }
118
+ };
119
+ const handleScroll = () => {
120
+ if (isProgrammaticScrollRef.current) {
121
+ isProgrammaticScrollRef.current = false;
122
+ return;
123
+ }
124
+ if (messagesContainerRef.current) {
125
+ const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;
126
+ isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;
127
+ }
128
+ };
129
+ useEffect(() => {
130
+ const container = messagesContainerRef.current;
131
+ if (container) {
132
+ container.addEventListener("scroll", handleScroll);
133
+ }
134
+ return () => {
135
+ if (container) {
136
+ container.removeEventListener("scroll", handleScroll);
137
+ }
138
+ };
139
+ }, []);
140
+ useEffect(() => {
141
+ const container = messagesContainerRef.current;
142
+ if (!container) {
143
+ return;
144
+ }
145
+ const mutationObserver = new MutationObserver(() => {
146
+ if (!isUserScrollUpRef.current) {
147
+ scrollToBottom();
148
+ }
149
+ });
150
+ mutationObserver.observe(container, {
151
+ childList: true,
152
+ subtree: true,
153
+ characterData: true
154
+ });
155
+ return () => {
156
+ mutationObserver.disconnect();
157
+ };
158
+ }, []);
159
+ useEffect(() => {
160
+ isUserScrollUpRef.current = false;
161
+ scrollToBottom();
162
+ }, [messages.filter((m) => m.isTextMessage() && m.role === Role.User).length]);
163
+ return { messagesEndRef, messagesContainerRef };
164
+ }
165
+
166
+ export {
167
+ Messages,
168
+ useScrollToBottom
169
+ };
170
+ //# sourceMappingURL=chunk-7II4YL7R.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Messages.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Message, ResultMessage, TextMessage, Role } from \"@copilotkit/runtime-client-gql\";\n\nexport const Messages = ({\n messages,\n inProgress,\n children,\n RenderTextMessage,\n RenderActionExecutionMessage,\n RenderAgentStateMessage,\n RenderResultMessage,\n}: MessagesProps) => {\n const context = useChatContext();\n const initialMessages = useMemo(\n () => makeInitialMessages(context.labels.initial),\n [context.labels.initial],\n );\n messages = [...initialMessages, ...messages];\n\n const actionResults: Record<string, string> = {};\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i].isActionExecutionMessage()) {\n const id = messages[i].id;\n const resultMessage: ResultMessage | undefined = messages.find(\n (message) => message.isResultMessage() && message.actionExecutionId === id,\n ) as ResultMessage | undefined;\n\n if (resultMessage) {\n actionResults[id] = ResultMessage.decodeResult(resultMessage.result || \"\");\n }\n }\n }\n\n const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);\n\n return (\n <div className=\"copilotKitMessages\" ref={messagesContainerRef}>\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n\n if (message.isTextMessage()) {\n return (\n <RenderTextMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n />\n );\n } else if (message.isActionExecutionMessage()) {\n return (\n <RenderActionExecutionMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n actionResult={actionResults[message.id]}\n />\n );\n } else if (message.isAgentStateMessage()) {\n return (\n <RenderAgentStateMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n />\n );\n } else if (message.isResultMessage()) {\n return (\n <RenderResultMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n />\n );\n }\n })}\n <footer ref={messagesEndRef}>{children}</footer>\n </div>\n );\n};\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = [];\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial);\n } else {\n initialArray.push(initial);\n }\n }\n\n return initialArray.map(\n (message) =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n }),\n );\n}\nexport function useScrollToBottom(messages: any[]) {\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const messagesContainerRef = useRef<HTMLDivElement | null>(null);\n const isProgrammaticScrollRef = useRef(false);\n const isUserScrollUpRef = useRef(false);\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n isProgrammaticScrollRef.current = true;\n messagesEndRef.current.scrollIntoView({\n behavior: \"auto\",\n });\n }\n };\n\n const handleScroll = () => {\n if (isProgrammaticScrollRef.current) {\n isProgrammaticScrollRef.current = false;\n return;\n }\n\n if (messagesContainerRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;\n isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;\n }\n };\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (container) {\n container.addEventListener(\"scroll\", handleScroll);\n }\n return () => {\n if (container) {\n container.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (!container) {\n return;\n }\n\n const mutationObserver = new MutationObserver(() => {\n if (!isUserScrollUpRef.current) {\n scrollToBottom();\n }\n });\n\n mutationObserver.observe(container, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n return () => {\n mutationObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n isUserScrollUpRef.current = false;\n scrollToBottom();\n }, [messages.filter((m) => m.isTextMessage() && m.role === Role.User).length]);\n\n return { messagesEndRef, messagesContainerRef };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,81 @@
1
+ // src/components/help-modal/icons.tsx
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ var LifeBuoyIcon = () => /* @__PURE__ */ jsx(
4
+ "svg",
5
+ {
6
+ xmlns: "http://www.w3.org/2000/svg",
7
+ width: "24",
8
+ height: "24",
9
+ viewBox: "0 0 24 24",
10
+ fill: "none",
11
+ stroke: "currentColor",
12
+ strokeWidth: "2",
13
+ strokeLinecap: "round",
14
+ strokeLinejoin: "round",
15
+ className: "icon icon-tabler icons-tabler-outline icon-tabler-lifebuoy",
16
+ children: /* @__PURE__ */ jsxs("g", { transform: "translate(0, -1)", children: [
17
+ /* @__PURE__ */ jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }),
18
+ /* @__PURE__ */ jsx("path", { d: "M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0" }),
19
+ /* @__PURE__ */ jsx("path", { d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" }),
20
+ /* @__PURE__ */ jsx("path", { d: "M15 15l3.35 3.35" }),
21
+ /* @__PURE__ */ jsx("path", { d: "M9 15l-3.35 3.35" }),
22
+ /* @__PURE__ */ jsx("path", { d: "M5.65 5.65l3.35 3.35" }),
23
+ /* @__PURE__ */ jsx("path", { d: "M18.35 5.65l-3.35 3.35" })
24
+ ] })
25
+ }
26
+ );
27
+ var CloseIcon = () => /* @__PURE__ */ jsx(
28
+ "svg",
29
+ {
30
+ xmlns: "http://www.w3.org/2000/svg",
31
+ fill: "none",
32
+ viewBox: "0 0 24 24",
33
+ strokeWidth: "1.5",
34
+ stroke: "currentColor",
35
+ width: "20",
36
+ height: "20",
37
+ children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
38
+ }
39
+ );
40
+ var LoadingSpinnerIcon = ({ color = "rgb(107 114 128)" }) => /* @__PURE__ */ jsxs(
41
+ "svg",
42
+ {
43
+ style: {
44
+ animation: "copilotKitSpinAnimation 1s linear infinite",
45
+ color
46
+ },
47
+ width: "24",
48
+ height: "24",
49
+ xmlns: "http://www.w3.org/2000/svg",
50
+ fill: "none",
51
+ viewBox: "0 0 24 24",
52
+ children: [
53
+ /* @__PURE__ */ jsx(
54
+ "circle",
55
+ {
56
+ style: { opacity: 0.25 },
57
+ cx: "12",
58
+ cy: "12",
59
+ r: "10",
60
+ stroke: "currentColor",
61
+ strokeWidth: "4"
62
+ }
63
+ ),
64
+ /* @__PURE__ */ jsx(
65
+ "path",
66
+ {
67
+ style: { opacity: 0.75 },
68
+ fill: "currentColor",
69
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
70
+ }
71
+ )
72
+ ]
73
+ }
74
+ );
75
+
76
+ export {
77
+ LifeBuoyIcon,
78
+ CloseIcon,
79
+ LoadingSpinnerIcon
80
+ };
81
+ //# sourceMappingURL=chunk-BH6PCAAL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/help-modal/icons.tsx"],"sourcesContent":["import React from \"react\";\n\nexport const LifeBuoyIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"icon icon-tabler icons-tabler-outline icon-tabler-lifebuoy\"\n >\n <g transform=\"translate(0, -1)\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0\" />\n <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" />\n <path d=\"M15 15l3.35 3.35\" />\n <path d=\"M9 15l-3.35 3.35\" />\n <path d=\"M5.65 5.65l3.35 3.35\" />\n <path d=\"M18.35 5.65l-3.35 3.35\" />\n </g>\n </svg>\n);\n\nexport const CloseIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"1.5\"\n stroke=\"currentColor\"\n width=\"20\"\n height=\"20\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n);\n\nexport const LoadingSpinnerIcon = ({ color = \"rgb(107 114 128)\" }: { color?: string }) => (\n <svg\n style={{\n animation: \"copilotKitSpinAnimation 1s linear infinite\",\n color,\n }}\n width=\"24\"\n height=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n style={{ opacity: 0.25 }}\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n style={{ opacity: 0.75 }}\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n);\n"],"mappings":";AAeI,SACE,KADF;AAbG,IAAM,eAAe,MAC1B;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,WAAU;AAAA,IAEV,+BAAC,OAAE,WAAU,oBACX;AAAA,0BAAC,UAAK,QAAO,QAAO,GAAE,iBAAgB,MAAK,QAAO;AAAA,MAClD,oBAAC,UAAK,GAAE,4CAA2C;AAAA,MACnD,oBAAC,UAAK,GAAE,8CAA6C;AAAA,MACrD,oBAAC,UAAK,GAAE,oBAAmB;AAAA,MAC3B,oBAAC,UAAK,GAAE,oBAAmB;AAAA,MAC3B,oBAAC,UAAK,GAAE,wBAAuB;AAAA,MAC/B,oBAAC,UAAK,GAAE,0BAAyB;AAAA,OACnC;AAAA;AACF;AAGK,IAAM,YAAY,MACvB;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,MAAK;AAAA,IACL,SAAQ;AAAA,IACR,aAAY;AAAA,IACZ,QAAO;AAAA,IACP,OAAM;AAAA,IACN,QAAO;AAAA,IAEP,8BAAC,UAAK,eAAc,SAAQ,gBAAe,SAAQ,GAAE,wBAAuB;AAAA;AAC9E;AAGK,IAAM,qBAAqB,CAAC,EAAE,QAAQ,mBAAmB,MAC9D;AAAA,EAAC;AAAA;AAAA,IACC,OAAO;AAAA,MACL,WAAW;AAAA,MACX;AAAA,IACF;AAAA,IACA,OAAM;AAAA,IACN,QAAO;AAAA,IACP,OAAM;AAAA,IACN,MAAK;AAAA,IACL,SAAQ;AAAA,IAER;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,SAAS,KAAK;AAAA,UACvB,IAAG;AAAA,UACH,IAAG;AAAA,UACH,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA;AAAA,MACb;AAAA,MACD;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,SAAS,KAAK;AAAA,UACvB,MAAK;AAAA,UACL,GAAE;AAAA;AAAA,MACH;AAAA;AAAA;AACH;","names":[]}
@@ -0,0 +1,81 @@
1
+ import {
2
+ ActivityIcon,
3
+ CloseIcon,
4
+ HeaderCloseIcon,
5
+ OpenIcon,
6
+ PushToTalkIcon,
7
+ RegenerateIcon,
8
+ SendIcon,
9
+ SpinnerIcon,
10
+ StopIcon
11
+ } from "./chunk-FZC7X5PK.mjs";
12
+ import {
13
+ __spreadValues
14
+ } from "./chunk-MRXNTQOX.mjs";
15
+
16
+ // src/components/chat/ChatContext.tsx
17
+ import React, { useMemo } from "react";
18
+ import { jsx } from "react/jsx-runtime";
19
+ var ChatContext = React.createContext(void 0);
20
+ function useChatContext() {
21
+ const context = React.useContext(ChatContext);
22
+ if (context === void 0) {
23
+ throw new Error(
24
+ "Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?"
25
+ );
26
+ }
27
+ return context;
28
+ }
29
+ var ChatContextProvider = ({
30
+ // temperature,
31
+ // instructions,
32
+ // maxFeedback,
33
+ labels,
34
+ icons,
35
+ children,
36
+ open,
37
+ setOpen
38
+ }) => {
39
+ const memoizedLabels = useMemo(
40
+ () => __spreadValues(__spreadValues({}, {
41
+ initial: "",
42
+ title: "CopilotKit",
43
+ placeholder: "Type a message...",
44
+ error: "\u274C An error occurred. Please try again.",
45
+ stopGenerating: "Stop generating",
46
+ regenerateResponse: "Regenerate response"
47
+ }), labels),
48
+ [labels]
49
+ );
50
+ const memoizedIcons = useMemo(
51
+ () => __spreadValues(__spreadValues({}, {
52
+ openIcon: OpenIcon,
53
+ closeIcon: CloseIcon,
54
+ headerCloseIcon: HeaderCloseIcon,
55
+ sendIcon: SendIcon,
56
+ activityIcon: ActivityIcon,
57
+ spinnerIcon: SpinnerIcon,
58
+ stopIcon: StopIcon,
59
+ regenerateIcon: RegenerateIcon,
60
+ pushToTalkIcon: PushToTalkIcon
61
+ }), icons),
62
+ [icons]
63
+ );
64
+ const context = useMemo(
65
+ () => ({
66
+ labels: memoizedLabels,
67
+ icons: memoizedIcons,
68
+ open,
69
+ setOpen
70
+ }),
71
+ [memoizedLabels, memoizedIcons, open, setOpen]
72
+ );
73
+ return /* @__PURE__ */ jsx(ChatContext.Provider, { value: context, children });
74
+ };
75
+
76
+ export {
77
+ ChatContext,
78
+ useChatContext,
79
+ ChatContextProvider
80
+ };
81
+ //# sourceMappingURL=chunk-CBBFRI3Q.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/ChatContext.tsx"],"sourcesContent":["import React, { useMemo, useState } from \"react\";\nimport * as DefaultIcons from \"./Icons\";\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode;\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode;\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode;\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode;\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode;\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode;\n\n /**\n * The icons to use for push to talk.\n * @default <PushToTalkIcon />\n */\n\n pushToTalkIcon?: React.ReactNode;\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[];\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string;\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string;\n\n /**\n * The message to display when an error occurs.\n * @default \"❌ An error occurred. Please try again.\"\n */\n error?: string;\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string;\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string;\n}\n\ninterface ChatContext {\n labels: Required<CopilotChatLabels>;\n icons: Required<CopilotChatIcons>;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContext = React.createContext<ChatContext | undefined>(undefined);\n\nexport function useChatContext(): ChatContext {\n const context = React.useContext(ChatContext);\n if (context === undefined) {\n throw new Error(\n \"Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?\",\n );\n }\n return context;\n}\n\ninterface ChatContextProps {\n // temperature?: number;\n // instructions?: string;\n // maxFeedback?: number;\n labels?: CopilotChatLabels;\n icons?: CopilotChatIcons;\n children?: React.ReactNode;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContextProvider = ({\n // temperature,\n // instructions,\n // maxFeedback,\n labels,\n icons,\n children,\n open,\n setOpen,\n}: ChatContextProps) => {\n const memoizedLabels = useMemo(\n () => ({\n ...{\n initial: \"\",\n title: \"CopilotKit\",\n placeholder: \"Type a message...\",\n error: \"❌ An error occurred. Please try again.\",\n stopGenerating: \"Stop generating\",\n regenerateResponse: \"Regenerate response\",\n },\n ...labels,\n }),\n [labels],\n );\n\n const memoizedIcons = useMemo(\n () => ({\n ...{\n openIcon: DefaultIcons.OpenIcon,\n closeIcon: DefaultIcons.CloseIcon,\n headerCloseIcon: DefaultIcons.HeaderCloseIcon,\n sendIcon: DefaultIcons.SendIcon,\n activityIcon: DefaultIcons.ActivityIcon,\n spinnerIcon: DefaultIcons.SpinnerIcon,\n stopIcon: DefaultIcons.StopIcon,\n regenerateIcon: DefaultIcons.RegenerateIcon,\n pushToTalkIcon: DefaultIcons.PushToTalkIcon,\n },\n ...icons,\n }),\n [icons],\n );\n\n const context = useMemo(\n () => ({\n labels: memoizedLabels,\n icons: memoizedIcons,\n open,\n setOpen,\n }),\n [memoizedLabels, memoizedIcons, open, setOpen],\n );\n\n return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,SAAS,eAAyB;AA0LhC;AA5EF,IAAM,cAAc,MAAM,cAAuC,MAAS;AAE1E,SAAS,iBAA8B;AAC5C,QAAM,UAAU,MAAM,WAAW,WAAW;AAC5C,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAaO,IAAM,sBAAsB,CAAC;AAAA;AAAA;AAAA;AAAA,EAIlC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,QAAM,iBAAiB;AAAA,IACrB,MAAO,kCACF;AAAA,MACD,SAAS;AAAA,MACT,OAAO;AAAA,MACP,aAAa;AAAA,MACb,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,IACtB,IACG;AAAA,IAEL,CAAC,MAAM;AAAA,EACT;AAEA,QAAM,gBAAgB;AAAA,IACpB,MAAO,kCACF;AAAA,MACD,UAAuB;AAAA,MACvB,WAAwB;AAAA,MACxB,iBAA8B;AAAA,MAC9B,UAAuB;AAAA,MACvB,cAA2B;AAAA,MAC3B,aAA0B;AAAA,MAC1B,UAAuB;AAAA,MACvB,gBAA6B;AAAA,MAC7B,gBAA6B;AAAA,IAC/B,IACG;AAAA,IAEL,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,UAAU;AAAA,IACd,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,eAAe,MAAM,OAAO;AAAA,EAC/C;AAEA,SAAO,oBAAC,YAAY,UAAZ,EAAqB,OAAO,SAAU,UAAS;AACzD;","names":[]}