@copilotkit/react-ui 1.4.4 → 1.4.6

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 +18 -38
  2. package/dist/chunk-2B57NCBA.mjs +232 -0
  3. package/dist/chunk-2B57NCBA.mjs.map +1 -0
  4. package/dist/chunk-3XAXY2Z3.mjs +18 -0
  5. package/dist/chunk-3XAXY2Z3.mjs.map +1 -0
  6. package/dist/chunk-4FIGRRFS.mjs +146 -0
  7. package/dist/chunk-4FIGRRFS.mjs.map +1 -0
  8. package/dist/chunk-4LUMV4YO.mjs +92 -0
  9. package/dist/chunk-4LUMV4YO.mjs.map +1 -0
  10. package/dist/chunk-4T3TMQNJ.mjs +45 -0
  11. package/dist/chunk-4T3TMQNJ.mjs.map +1 -0
  12. package/dist/chunk-54JAUBUJ.mjs +26 -0
  13. package/dist/chunk-54JAUBUJ.mjs.map +1 -0
  14. package/dist/chunk-63ZKP62F.mjs +91 -0
  15. package/dist/chunk-63ZKP62F.mjs.map +1 -0
  16. package/dist/chunk-6INMITFA.mjs +18 -0
  17. package/dist/chunk-6INMITFA.mjs.map +1 -0
  18. package/dist/chunk-CBBFRI3Q.mjs +81 -0
  19. package/dist/chunk-CBBFRI3Q.mjs.map +1 -0
  20. package/dist/chunk-DHGDU64D.mjs +201 -0
  21. package/dist/chunk-DHGDU64D.mjs.map +1 -0
  22. package/dist/chunk-EFZPSZWO.mjs +1 -0
  23. package/dist/chunk-EFZPSZWO.mjs.map +1 -0
  24. package/dist/chunk-FZC7X5PK.mjs +262 -0
  25. package/dist/chunk-FZC7X5PK.mjs.map +1 -0
  26. package/dist/chunk-IU3WTXLQ.mjs +1 -0
  27. package/dist/chunk-IU3WTXLQ.mjs.map +1 -0
  28. package/dist/chunk-KXE2JCUH.mjs +1 -0
  29. package/dist/chunk-KXE2JCUH.mjs.map +1 -0
  30. package/dist/chunk-MMVDU6DF.mjs +1 -0
  31. package/dist/chunk-MMVDU6DF.mjs.map +1 -0
  32. package/dist/chunk-MRFF7GSQ.mjs +1 -0
  33. package/dist/chunk-MRFF7GSQ.mjs.map +1 -0
  34. package/dist/chunk-MRXNTQOX.mjs +59 -0
  35. package/dist/chunk-MRXNTQOX.mjs.map +1 -0
  36. package/dist/chunk-OMTPWC7T.mjs +84 -0
  37. package/dist/chunk-OMTPWC7T.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-RJCZRKTV.mjs +106 -0
  41. package/dist/chunk-RJCZRKTV.mjs.map +1 -0
  42. package/dist/chunk-RKPANT3F.mjs +174 -0
  43. package/dist/chunk-RKPANT3F.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-TKFQ7VQR.mjs +30 -0
  53. package/dist/chunk-TKFQ7VQR.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-V7W6IM2V.mjs +1 -0
  57. package/dist/chunk-V7W6IM2V.mjs.map +1 -0
  58. package/dist/chunk-VEC45H6Q.mjs +18 -0
  59. package/dist/chunk-VEC45H6Q.mjs.map +1 -0
  60. package/dist/chunk-VYKDFXGS.mjs +21 -0
  61. package/dist/chunk-VYKDFXGS.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-WOUWNTAV.mjs +72 -0
  65. package/dist/chunk-WOUWNTAV.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 +103 -0
  82. package/dist/components/chat/Chat.js +2219 -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 +319 -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 +2414 -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 +2425 -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 +2434 -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 +2449 -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 +130 -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 +620 -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 +620 -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 +6 -0
  212. package/dist/components/help-modal/icons.js +70 -0
  213. package/dist/components/help-modal/icons.js.map +1 -0
  214. package/dist/components/help-modal/icons.mjs +10 -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 +135 -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 +133 -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 +2453 -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 +2481 -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 +7 -7
package/CHANGELOG.md CHANGED
@@ -1,54 +1,34 @@
1
1
  # ui
2
2
 
3
- ## 1.4.4
4
-
5
- ### Patch Changes
6
-
7
- - Updated dependencies [e35e6ad]
8
- - @copilotkit/react-core@1.4.4
9
- - @copilotkit/runtime-client-gql@1.4.4
10
- - @copilotkit/shared@1.4.4
11
-
12
- ## 1.4.4-next.4
13
-
14
- ### Patch Changes
15
-
16
- - @copilotkit/runtime-client-gql@1.4.4-next.4
17
- - @copilotkit/react-core@1.4.4-next.4
18
- - @copilotkit/shared@1.4.4-next.4
19
-
20
- ## 1.4.4-next.3
3
+ ## 1.4.6
21
4
 
22
5
  ### Patch Changes
23
6
 
24
- - @copilotkit/runtime-client-gql@1.4.4-next.3
25
- - @copilotkit/react-core@1.4.4-next.3
26
- - @copilotkit/shared@1.4.4-next.3
27
-
28
- ## 1.4.4-next.2
29
-
30
- ### Patch Changes
31
-
32
- - @copilotkit/runtime-client-gql@1.4.4-next.2
33
- - @copilotkit/react-core@1.4.4-next.2
34
- - @copilotkit/shared@1.4.4-next.2
7
+ - .
8
+ - Updated dependencies
9
+ - @copilotkit/runtime-client-gql@1.4.6
10
+ - @copilotkit/react-core@1.4.6
11
+ - @copilotkit/shared@1.4.6
35
12
 
36
- ## 1.4.4-next.1
13
+ ## 1.4.5
37
14
 
38
15
  ### Patch Changes
39
16
 
40
- - @copilotkit/runtime-client-gql@1.4.4-next.1
41
- - @copilotkit/react-core@1.4.4-next.1
42
- - @copilotkit/shared@1.4.4-next.1
17
+ - .
18
+ - Updated dependencies
19
+ - @copilotkit/runtime-client-gql@1.4.5
20
+ - @copilotkit/react-core@1.4.5
21
+ - @copilotkit/shared@1.4.5
43
22
 
44
- ## 1.4.4-next.0
23
+ ## 1.4.4
45
24
 
46
25
  ### Patch Changes
47
26
 
48
- - Updated dependencies [e35e6ad]
49
- - @copilotkit/react-core@1.4.4-next.0
50
- - @copilotkit/runtime-client-gql@1.4.4-next.0
51
- - @copilotkit/shared@1.4.4-next.0
27
+ - .
28
+ - Updated dependencies
29
+ - @copilotkit/react-core@1.4.4
30
+ - @copilotkit/runtime-client-gql@1.4.4
31
+ - @copilotkit/shared@1.4.4
52
32
 
53
33
  ## 1.4.3
54
34
 
@@ -0,0 +1,232 @@
1
+ import {
2
+ getPublishedCopilotKitVersion,
3
+ logActions,
4
+ logMessages,
5
+ logReadables,
6
+ shouldShowDevConsole
7
+ } from "./chunk-4FIGRRFS.mjs";
8
+ import {
9
+ CopilotKitHelpModal
10
+ } from "./chunk-WOUWNTAV.mjs";
11
+ import {
12
+ CheckIcon,
13
+ ChevronDownIcon,
14
+ CopilotKitIcon,
15
+ ExclamationMarkIcon,
16
+ ExclamationMarkTriangleIcon
17
+ } from "./chunk-OTPAZXVR.mjs";
18
+ import {
19
+ SmallSpinnerIcon
20
+ } from "./chunk-FZC7X5PK.mjs";
21
+
22
+ // src/components/dev-console/console.tsx
23
+ import { useCopilotContext, useCopilotMessagesContext } from "@copilotkit/react-core";
24
+ import { useEffect, useRef, useState } from "react";
25
+ import { Menu, MenuButton, MenuItem, MenuItems } from "@headlessui/react";
26
+ import { COPILOTKIT_VERSION } from "@copilotkit/shared";
27
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
28
+ function CopilotDevConsole() {
29
+ const currentVersion = COPILOTKIT_VERSION;
30
+ const context = useCopilotContext();
31
+ const [showDevConsole, setShowDevConsole] = useState(false);
32
+ useEffect(() => {
33
+ setShowDevConsole(shouldShowDevConsole(context.showDevConsole));
34
+ }, [context.showDevConsole]);
35
+ const dontRunTwiceInDevMode = useRef(false);
36
+ const [versionStatus, setVersionStatus] = useState("unknown");
37
+ const [latestVersion, setLatestVersion] = useState("");
38
+ const consoleRef = useRef(null);
39
+ const [debugButtonMode, setDebugButtonMode] = useState("full");
40
+ const checkForUpdates = (force = false) => {
41
+ setVersionStatus("checking");
42
+ getPublishedCopilotKitVersion(currentVersion, force).then((v) => {
43
+ setLatestVersion(v.latest);
44
+ let versionOk = false;
45
+ if (v.current === v.latest) {
46
+ versionOk = true;
47
+ } else if (/[a-zA-Z]/.test(v.current)) {
48
+ versionOk = true;
49
+ }
50
+ if (versionOk) {
51
+ setVersionStatus("latest");
52
+ } else if (v.severity !== "low") {
53
+ setVersionStatus("outdated");
54
+ } else {
55
+ setVersionStatus("update-available");
56
+ }
57
+ }).catch((e) => {
58
+ console.error(e);
59
+ setVersionStatus("unknown");
60
+ });
61
+ };
62
+ useEffect(() => {
63
+ if (dontRunTwiceInDevMode.current === true) {
64
+ return;
65
+ }
66
+ dontRunTwiceInDevMode.current = true;
67
+ checkForUpdates();
68
+ }, []);
69
+ useEffect(() => {
70
+ const handleResize = (entries) => {
71
+ for (let entry of entries) {
72
+ if (entry.target === consoleRef.current) {
73
+ const width = entry.contentRect.width;
74
+ if (width < 400) {
75
+ setDebugButtonMode("compact");
76
+ } else {
77
+ setDebugButtonMode("full");
78
+ }
79
+ }
80
+ }
81
+ };
82
+ const observer = new ResizeObserver(handleResize);
83
+ if (consoleRef.current) {
84
+ observer.observe(consoleRef.current);
85
+ const initialWidth = consoleRef.current.getBoundingClientRect().width;
86
+ if (initialWidth < 400) {
87
+ setDebugButtonMode("compact");
88
+ } else {
89
+ setDebugButtonMode("full");
90
+ }
91
+ }
92
+ return () => {
93
+ if (consoleRef.current) {
94
+ observer.unobserve(consoleRef.current);
95
+ }
96
+ };
97
+ }, [consoleRef.current]);
98
+ if (!showDevConsole) {
99
+ return null;
100
+ }
101
+ return /* @__PURE__ */ jsxs(
102
+ "div",
103
+ {
104
+ ref: consoleRef,
105
+ className: "copilotKitDevConsole " + (versionStatus === "update-available" ? "copilotKitDevConsoleUpgrade" : "") + (versionStatus === "outdated" ? "copilotKitDevConsoleWarnOutdated" : ""),
106
+ children: [
107
+ /* @__PURE__ */ jsx("div", { className: "copilotKitDevConsoleLogo", children: /* @__PURE__ */ jsx("a", { href: "https://copilotkit.ai", target: "_blank", children: CopilotKitIcon }) }),
108
+ /* @__PURE__ */ jsx(
109
+ VersionInfo,
110
+ {
111
+ showDevConsole: context.showDevConsole,
112
+ versionStatus,
113
+ currentVersion,
114
+ latestVersion
115
+ }
116
+ ),
117
+ /* @__PURE__ */ jsx(CopilotKitHelpModal, {}),
118
+ /* @__PURE__ */ jsx(
119
+ DebugMenuButton,
120
+ {
121
+ setShowDevConsole,
122
+ checkForUpdates,
123
+ mode: debugButtonMode
124
+ }
125
+ )
126
+ ]
127
+ }
128
+ );
129
+ }
130
+ function VersionInfo({
131
+ showDevConsole,
132
+ versionStatus,
133
+ currentVersion,
134
+ latestVersion
135
+ }) {
136
+ const [copyStatus, setCopyStatus] = useState("");
137
+ let versionLabel = "";
138
+ let versionIcon = "";
139
+ let currentVersionLabel = currentVersion;
140
+ if (versionStatus === "latest") {
141
+ versionLabel = "latest";
142
+ versionIcon = CheckIcon;
143
+ } else if (versionStatus === "checking") {
144
+ versionLabel = "checking";
145
+ versionIcon = SmallSpinnerIcon;
146
+ } else if (versionStatus === "update-available") {
147
+ versionLabel = "update available";
148
+ versionIcon = ExclamationMarkIcon;
149
+ currentVersionLabel = `${currentVersion} \u2192 ${latestVersion}`;
150
+ } else if (versionStatus === "outdated") {
151
+ versionLabel = "outdated";
152
+ versionIcon = ExclamationMarkTriangleIcon;
153
+ currentVersionLabel = `${currentVersion} \u2192 ${latestVersion}`;
154
+ }
155
+ let asideLabel = "";
156
+ if (showDevConsole === "auto") {
157
+ asideLabel = "(localhost only)";
158
+ } else if (showDevConsole === true) {
159
+ asideLabel = "(always on)";
160
+ }
161
+ const installCommand = [
162
+ `npm install`,
163
+ `@copilotkit/react-core@${latestVersion}`,
164
+ `@copilotkit/react-ui@${latestVersion}`,
165
+ `@copilotkit/react-textarea@${latestVersion}`
166
+ ].join(" ");
167
+ const handleCopyClick = () => {
168
+ navigator.clipboard.writeText(installCommand.trim()).then(() => {
169
+ setCopyStatus("Command copied to clipboard!");
170
+ setTimeout(() => setCopyStatus(""), 1e3);
171
+ });
172
+ };
173
+ return /* @__PURE__ */ jsxs("div", { className: "copilotKitVersionInfo", children: [
174
+ /* @__PURE__ */ jsxs("header", { children: [
175
+ "COPILOTKIT DEV CONSOLE",
176
+ showDevConsole === "auto" && /* @__PURE__ */ jsx("aside", { children: asideLabel })
177
+ ] }),
178
+ /* @__PURE__ */ jsxs("section", { children: [
179
+ "Version: ",
180
+ versionLabel,
181
+ " (",
182
+ currentVersionLabel,
183
+ ") ",
184
+ versionIcon
185
+ ] }),
186
+ (versionStatus === "update-available" || versionStatus === "outdated") && /* @__PURE__ */ jsx("footer", { children: /* @__PURE__ */ jsx("button", { onClick: handleCopyClick, children: copyStatus || installCommand }) })
187
+ ] });
188
+ }
189
+ function DebugMenuButton({
190
+ setShowDevConsole,
191
+ checkForUpdates,
192
+ mode
193
+ }) {
194
+ const context = useCopilotContext();
195
+ const messagesContext = useCopilotMessagesContext();
196
+ return /* @__PURE__ */ jsx("div", { className: "bg-black top-24 w-52 text-right", children: /* @__PURE__ */ jsxs(Menu, { children: [
197
+ /* @__PURE__ */ jsx(MenuButton, { className: `copilotKitDebugMenuButton ${mode === "compact" ? "compact" : ""}`, children: mode == "compact" ? "Debug" : /* @__PURE__ */ jsxs(Fragment, { children: [
198
+ "Debug ",
199
+ ChevronDownIcon
200
+ ] }) }),
201
+ /* @__PURE__ */ jsxs(
202
+ MenuItems,
203
+ {
204
+ transition: true,
205
+ anchor: "bottom end",
206
+ className: "copilotKitDebugMenu",
207
+ style: { zIndex: 40 },
208
+ children: [
209
+ /* @__PURE__ */ jsx(MenuItem, { children: /* @__PURE__ */ jsx("button", { className: "copilotKitDebugMenuItem", onClick: () => logReadables(context), children: "Log Readables" }) }),
210
+ /* @__PURE__ */ jsx(MenuItem, { children: /* @__PURE__ */ jsx("button", { className: "copilotKitDebugMenuItem", onClick: () => logActions(context), children: "Log Actions" }) }),
211
+ /* @__PURE__ */ jsx(MenuItem, { children: /* @__PURE__ */ jsx(
212
+ "button",
213
+ {
214
+ className: "copilotKitDebugMenuItem",
215
+ onClick: () => logMessages(messagesContext),
216
+ children: "Log Messages"
217
+ }
218
+ ) }),
219
+ /* @__PURE__ */ jsx(MenuItem, { children: /* @__PURE__ */ jsx("button", { className: "copilotKitDebugMenuItem", onClick: () => checkForUpdates(true), children: "Check for Updates" }) }),
220
+ /* @__PURE__ */ jsx("hr", {}),
221
+ /* @__PURE__ */ jsx(MenuItem, { children: /* @__PURE__ */ jsx("button", { className: "copilotKitDebugMenuItem", onClick: () => setShowDevConsole(false), children: "Hide Dev Console" }) })
222
+ ]
223
+ }
224
+ )
225
+ ] }) });
226
+ }
227
+
228
+ export {
229
+ CopilotDevConsole,
230
+ DebugMenuButton
231
+ };
232
+ //# sourceMappingURL=chunk-2B57NCBA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/dev-console/console.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCopilotContext, useCopilotMessagesContext } from \"@copilotkit/react-core\";\nimport {\n getPublishedCopilotKitVersion,\n logActions,\n logMessages,\n logReadables,\n shouldShowDevConsole,\n} from \"./utils\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n CopilotKitIcon,\n ExclamationMarkIcon,\n ExclamationMarkTriangleIcon,\n} from \"./icons\";\nimport { Menu, MenuButton, MenuItem, MenuItems } from \"@headlessui/react\";\nimport { COPILOTKIT_VERSION } from \"@copilotkit/shared\";\nimport { SmallSpinnerIcon } from \"../chat/Icons\";\nimport { CopilotKitHelpModal } from \"../help-modal\";\n\ntype VersionStatus = \"unknown\" | \"checking\" | \"latest\" | \"update-available\" | \"outdated\";\n\nexport function CopilotDevConsole() {\n const currentVersion = COPILOTKIT_VERSION;\n const context = useCopilotContext();\n\n // to prevent hydration errors, ensure that the component renders the same content\n // server-side as it does during the initial client-side render to prevent a hydration\n // mismatch\n // see: https://nextjs.org/docs/messages/react-hydration-error#solution-1-using-useeffect-to-run-on-the-client-only\n\n const [showDevConsole, setShowDevConsole] = useState(false);\n\n useEffect(() => {\n setShowDevConsole(shouldShowDevConsole(context.showDevConsole));\n }, [context.showDevConsole]);\n\n const dontRunTwiceInDevMode = useRef(false);\n const [versionStatus, setVersionStatus] = useState<VersionStatus>(\"unknown\");\n const [latestVersion, setLatestVersion] = useState<string>(\"\");\n const consoleRef = useRef<HTMLDivElement>(null);\n const [debugButtonMode, setDebugButtonMode] = useState<\"full\" | \"compact\">(\"full\");\n\n const checkForUpdates = (force: boolean = false) => {\n setVersionStatus(\"checking\");\n\n getPublishedCopilotKitVersion(currentVersion, force)\n .then((v) => {\n setLatestVersion(v.latest);\n let versionOk = false;\n\n // match exact version or a version with a letter (e.g. 1.0.0-alpha.1)\n if (v.current === v.latest) {\n versionOk = true;\n } else if (/[a-zA-Z]/.test(v.current)) {\n versionOk = true;\n }\n\n if (versionOk) {\n setVersionStatus(\"latest\");\n } else if (v.severity !== \"low\") {\n setVersionStatus(\"outdated\");\n } else {\n setVersionStatus(\"update-available\");\n }\n })\n .catch((e) => {\n console.error(e);\n setVersionStatus(\"unknown\");\n });\n };\n\n useEffect(() => {\n if (dontRunTwiceInDevMode.current === true) {\n return;\n }\n dontRunTwiceInDevMode.current = true;\n\n checkForUpdates();\n }, []);\n\n useEffect(() => {\n const handleResize = (entries: ResizeObserverEntry[]) => {\n for (let entry of entries) {\n if (entry.target === consoleRef.current) {\n const width = entry.contentRect.width;\n if (width < 400) {\n setDebugButtonMode(\"compact\");\n } else {\n setDebugButtonMode(\"full\");\n }\n }\n }\n };\n\n const observer = new ResizeObserver(handleResize);\n if (consoleRef.current) {\n observer.observe(consoleRef.current);\n\n const initialWidth = consoleRef.current.getBoundingClientRect().width;\n if (initialWidth < 400) {\n setDebugButtonMode(\"compact\");\n } else {\n setDebugButtonMode(\"full\");\n }\n }\n\n return () => {\n if (consoleRef.current) {\n observer.unobserve(consoleRef.current);\n }\n };\n }, [consoleRef.current]);\n\n if (!showDevConsole) {\n return null;\n }\n return (\n <div\n ref={consoleRef}\n className={\n \"copilotKitDevConsole \" +\n (versionStatus === \"update-available\" ? \"copilotKitDevConsoleUpgrade\" : \"\") +\n (versionStatus === \"outdated\" ? \"copilotKitDevConsoleWarnOutdated\" : \"\")\n }\n >\n <div className=\"copilotKitDevConsoleLogo\">\n <a href=\"https://copilotkit.ai\" target=\"_blank\">\n {CopilotKitIcon}\n </a>\n </div>\n <VersionInfo\n showDevConsole={context.showDevConsole}\n versionStatus={versionStatus}\n currentVersion={currentVersion}\n latestVersion={latestVersion}\n />\n\n <CopilotKitHelpModal />\n\n <DebugMenuButton\n setShowDevConsole={setShowDevConsole}\n checkForUpdates={checkForUpdates}\n mode={debugButtonMode}\n />\n </div>\n );\n}\n\nfunction VersionInfo({\n showDevConsole,\n versionStatus,\n currentVersion,\n latestVersion,\n}: {\n showDevConsole: boolean | \"auto\";\n versionStatus: VersionStatus;\n currentVersion: string;\n latestVersion: string;\n}) {\n const [copyStatus, setCopyStatus] = useState<string>(\"\");\n\n let versionLabel = \"\";\n let versionIcon: any = \"\";\n let currentVersionLabel = currentVersion;\n\n if (versionStatus === \"latest\") {\n versionLabel = \"latest\";\n versionIcon = CheckIcon;\n } else if (versionStatus === \"checking\") {\n versionLabel = \"checking\";\n versionIcon = SmallSpinnerIcon;\n } else if (versionStatus === \"update-available\") {\n versionLabel = \"update available\";\n versionIcon = ExclamationMarkIcon;\n currentVersionLabel = `${currentVersion} → ${latestVersion}`;\n } else if (versionStatus === \"outdated\") {\n versionLabel = \"outdated\";\n versionIcon = ExclamationMarkTriangleIcon;\n currentVersionLabel = `${currentVersion} → ${latestVersion}`;\n }\n\n let asideLabel = \"\";\n if (showDevConsole === \"auto\") {\n asideLabel = \"(localhost only)\";\n } else if (showDevConsole === true) {\n asideLabel = \"(always on)\";\n }\n\n const installCommand = [\n `npm install`,\n `@copilotkit/react-core@${latestVersion}`,\n `@copilotkit/react-ui@${latestVersion}`,\n `@copilotkit/react-textarea@${latestVersion}`,\n ].join(\" \");\n\n const handleCopyClick = () => {\n navigator.clipboard.writeText(installCommand.trim()).then(() => {\n setCopyStatus(\"Command copied to clipboard!\");\n setTimeout(() => setCopyStatus(\"\"), 1000);\n });\n };\n\n return (\n <div className=\"copilotKitVersionInfo\">\n <header>\n COPILOTKIT DEV CONSOLE{showDevConsole === \"auto\" && <aside>{asideLabel}</aside>}\n </header>\n <section>\n Version: {versionLabel} ({currentVersionLabel}) {versionIcon}\n </section>\n {(versionStatus === \"update-available\" || versionStatus === \"outdated\") && (\n <footer>\n <button onClick={handleCopyClick}>{copyStatus || installCommand}</button>\n </footer>\n )}\n </div>\n );\n}\nexport default function DebugMenuButton({\n setShowDevConsole,\n checkForUpdates,\n mode,\n}: {\n setShowDevConsole: (show: boolean) => void;\n checkForUpdates: (force: boolean) => void;\n mode: \"full\" | \"compact\";\n}) {\n const context = useCopilotContext();\n const messagesContext = useCopilotMessagesContext();\n\n return (\n <div className=\"bg-black top-24 w-52 text-right\">\n <Menu>\n <MenuButton className={`copilotKitDebugMenuButton ${mode === \"compact\" ? \"compact\" : \"\"}`}>\n {mode == \"compact\" ? \"Debug\" : <>Debug {ChevronDownIcon}</>}\n </MenuButton>\n\n <MenuItems\n transition\n anchor=\"bottom end\"\n className=\"copilotKitDebugMenu\"\n style={{ zIndex: 40 }}\n >\n <MenuItem>\n <button className=\"copilotKitDebugMenuItem\" onClick={() => logReadables(context)}>\n Log Readables\n </button>\n </MenuItem>\n <MenuItem>\n <button className=\"copilotKitDebugMenuItem\" onClick={() => logActions(context)}>\n Log Actions\n </button>\n </MenuItem>\n <MenuItem>\n <button\n className=\"copilotKitDebugMenuItem\"\n onClick={() => logMessages(messagesContext)}\n >\n Log Messages\n </button>\n </MenuItem>\n <MenuItem>\n <button className=\"copilotKitDebugMenuItem\" onClick={() => checkForUpdates(true)}>\n Check for Updates\n </button>\n </MenuItem>\n <hr />\n <MenuItem>\n <button className=\"copilotKitDebugMenuItem\" onClick={() => setShowDevConsole(false)}>\n Hide Dev Console\n </button>\n </MenuItem>\n </MenuItems>\n </Menu>\n </div>\n );\n}\n"],"mappings":"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","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,146 @@
1
+ import {
2
+ __async
3
+ } from "./chunk-MRXNTQOX.mjs";
4
+
5
+ // src/components/dev-console/utils.ts
6
+ import {
7
+ defaultCopilotContextCategories
8
+ } from "@copilotkit/react-core";
9
+ function shouldShowDevConsole(showDevConsole) {
10
+ if (typeof showDevConsole === "boolean") {
11
+ return showDevConsole;
12
+ }
13
+ return getHostname() === "localhost" || getHostname() === "127.0.0.1" || getHostname() === "0.0.0.0" || getHostname() === "::1";
14
+ }
15
+ function getHostname() {
16
+ if (typeof window !== "undefined" && window.location) {
17
+ return window.location.hostname;
18
+ }
19
+ return "";
20
+ }
21
+ function getPublishedCopilotKitVersion(current, forceCheck = false) {
22
+ return __async(this, null, function* () {
23
+ const LOCAL_STORAGE_KEY = "__copilotkit_version_check__";
24
+ const serializedVersion = localStorage.getItem(LOCAL_STORAGE_KEY);
25
+ if (serializedVersion && !forceCheck) {
26
+ try {
27
+ const parsedVersion = JSON.parse(serializedVersion);
28
+ const oneHour = 60 * 60 * 1e3;
29
+ const now = (/* @__PURE__ */ new Date()).getTime();
30
+ if (parsedVersion.current === current && now - new Date(parsedVersion.lastChecked).getTime() < oneHour) {
31
+ return parsedVersion;
32
+ }
33
+ } catch (error) {
34
+ console.error("Failed to parse CopilotKitVersion from localStorage", error);
35
+ }
36
+ }
37
+ try {
38
+ const response = yield fetch("https://api.cloud.stagingcopilotkit.ai/check-for-updates", {
39
+ method: "POST",
40
+ headers: {
41
+ "Content-Type": "application/json"
42
+ },
43
+ body: JSON.stringify({
44
+ packages: [
45
+ {
46
+ packageName: "@copilotkit/shared",
47
+ packageVersion: current
48
+ }
49
+ ]
50
+ })
51
+ });
52
+ const data = yield response.json();
53
+ const version = {
54
+ current,
55
+ lastChecked: (/* @__PURE__ */ new Date()).getTime(),
56
+ latest: data.packages[0].latestVersion,
57
+ severity: data.packages[0].severity,
58
+ advisory: data.packages[0].advisory || null
59
+ };
60
+ localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(version));
61
+ return version;
62
+ } catch (error) {
63
+ console.error("Failed to check for updates", error);
64
+ throw error;
65
+ }
66
+ });
67
+ }
68
+ function logReadables(context) {
69
+ console.log("%cCurrent Readables:", "font-size: 16px; font-weight: bold;");
70
+ const readables = context.getContextString([], defaultCopilotContextCategories).trim();
71
+ if (readables.length === 0) {
72
+ console.log("No readables found");
73
+ return;
74
+ }
75
+ console.log(readables);
76
+ }
77
+ function logActions(context) {
78
+ console.log("%cCurrent Actions:", "font-size: 16px; font-weight: bold;");
79
+ if (Object.values(context.actions).length === 0) {
80
+ console.log("No actions found");
81
+ return;
82
+ }
83
+ for (const action of Object.values(context.actions)) {
84
+ console.group(action.name);
85
+ console.log("name", action.name);
86
+ console.log("description", action.description);
87
+ console.log("parameters", action.parameters);
88
+ console.groupEnd();
89
+ }
90
+ }
91
+ function logMessages(context) {
92
+ console.log("%cCurrent Messages:", "font-size: 16px; font-weight: bold;");
93
+ if (context.messages.length === 0) {
94
+ console.log("No messages found");
95
+ return;
96
+ }
97
+ const tableData = context.messages.map((message) => {
98
+ if (message.isTextMessage()) {
99
+ return {
100
+ id: message.id,
101
+ type: "TextMessage",
102
+ role: message.role,
103
+ name: void 0,
104
+ scope: void 0,
105
+ content: message.content
106
+ };
107
+ } else if (message.isActionExecutionMessage()) {
108
+ return {
109
+ id: message.id,
110
+ type: "ActionExecutionMessage",
111
+ role: void 0,
112
+ name: message.name,
113
+ scope: message.scope,
114
+ content: message.arguments
115
+ };
116
+ } else if (message.isResultMessage()) {
117
+ return {
118
+ id: message.id,
119
+ type: "ResultMessage",
120
+ role: void 0,
121
+ name: message.actionName,
122
+ scope: message.actionExecutionId,
123
+ content: message.result
124
+ };
125
+ } else if (message.isAgentStateMessage()) {
126
+ return {
127
+ id: message.id,
128
+ type: `AgentStateMessage (running: ${message.running})`,
129
+ role: message.role,
130
+ name: void 0,
131
+ scope: message.threadId,
132
+ content: message.state
133
+ };
134
+ }
135
+ });
136
+ console.table(tableData);
137
+ }
138
+
139
+ export {
140
+ shouldShowDevConsole,
141
+ getPublishedCopilotKitVersion,
142
+ logReadables,
143
+ logActions,
144
+ logMessages
145
+ };
146
+ //# sourceMappingURL=chunk-4FIGRRFS.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/dev-console/utils.ts"],"sourcesContent":["import {\n CopilotContextParams,\n CopilotMessagesContextParams,\n defaultCopilotContextCategories,\n} from \"@copilotkit/react-core\";\nimport { CopilotKitVersion } from \"./types\";\nimport { ActionExecutionMessage, ResultMessage, TextMessage } from \"@copilotkit/runtime-client-gql\";\nimport { AgentStateMessage } from \"@copilotkit/runtime-client-gql\";\n\nexport function shouldShowDevConsole(showDevConsole: boolean | \"auto\"): boolean {\n if (typeof showDevConsole === \"boolean\") {\n return showDevConsole;\n }\n return (\n getHostname() === \"localhost\" ||\n getHostname() === \"127.0.0.1\" ||\n getHostname() === \"0.0.0.0\" ||\n getHostname() === \"::1\"\n );\n}\n\nfunction getHostname(): string {\n if (typeof window !== \"undefined\" && window.location) {\n return window.location.hostname;\n }\n return \"\";\n}\n\nexport async function getPublishedCopilotKitVersion(\n current: string,\n forceCheck: boolean = false,\n): Promise<CopilotKitVersion> {\n const LOCAL_STORAGE_KEY = \"__copilotkit_version_check__\";\n const serializedVersion = localStorage.getItem(LOCAL_STORAGE_KEY);\n if (serializedVersion && !forceCheck) {\n try {\n const parsedVersion: CopilotKitVersion = JSON.parse(serializedVersion);\n const oneHour = 60 * 60 * 1000;\n const now = new Date().getTime();\n\n if (\n parsedVersion.current === current &&\n now - new Date(parsedVersion.lastChecked).getTime() < oneHour\n ) {\n return parsedVersion;\n }\n } catch (error) {\n console.error(\"Failed to parse CopilotKitVersion from localStorage\", error);\n }\n }\n\n try {\n const response = await fetch(\"https://api.cloud.stagingcopilotkit.ai/check-for-updates\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n packages: [\n {\n packageName: \"@copilotkit/shared\",\n packageVersion: current,\n },\n ],\n }),\n });\n\n const data = await response.json();\n\n const version: CopilotKitVersion = {\n current,\n lastChecked: new Date().getTime(),\n latest: data.packages[0].latestVersion,\n severity: data.packages[0].severity,\n advisory: data.packages[0].advisory || null,\n };\n\n localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(version));\n return version;\n } catch (error) {\n console.error(\"Failed to check for updates\", error);\n throw error;\n }\n}\n\nexport function logReadables(context: CopilotContextParams) {\n console.log(\"%cCurrent Readables:\", \"font-size: 16px; font-weight: bold;\");\n\n const readables = context.getContextString([], defaultCopilotContextCategories).trim();\n if (readables.length === 0) {\n console.log(\"No readables found\");\n return;\n }\n console.log(readables);\n}\n\nexport function logActions(context: CopilotContextParams) {\n console.log(\"%cCurrent Actions:\", \"font-size: 16px; font-weight: bold;\");\n\n if (Object.values(context.actions).length === 0) {\n console.log(\"No actions found\");\n return;\n }\n for (const action of Object.values(context.actions)) {\n console.group(action.name);\n console.log(\"name\", action.name);\n console.log(\"description\", action.description);\n console.log(\"parameters\", action.parameters);\n\n console.groupEnd();\n }\n}\n\nexport function logMessages(context: CopilotMessagesContextParams) {\n console.log(\"%cCurrent Messages:\", \"font-size: 16px; font-weight: bold;\");\n\n if (context.messages.length === 0) {\n console.log(\"No messages found\");\n return;\n }\n\n const tableData = context.messages.map((message) => {\n if (message.isTextMessage()) {\n return {\n id: message.id,\n type: \"TextMessage\",\n role: message.role,\n name: undefined,\n scope: undefined,\n content: message.content,\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n id: message.id,\n type: \"ActionExecutionMessage\",\n role: undefined,\n name: message.name,\n scope: message.scope,\n content: message.arguments,\n };\n } else if (message.isResultMessage()) {\n return {\n id: message.id,\n type: \"ResultMessage\",\n role: undefined,\n name: message.actionName,\n scope: message.actionExecutionId,\n content: message.result,\n };\n } else if (message.isAgentStateMessage()) {\n return {\n id: message.id,\n type: `AgentStateMessage (running: ${message.running})`,\n role: message.role,\n name: undefined,\n scope: message.threadId,\n content: message.state,\n };\n }\n });\n console.table(tableData);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,92 @@
1
+ import {
2
+ Textarea_default
3
+ } from "./chunk-YQFVRDNC.mjs";
4
+ import {
5
+ useChatContext
6
+ } from "./chunk-CBBFRI3Q.mjs";
7
+ import {
8
+ usePushToTalk
9
+ } from "./chunk-S5MBUNGN.mjs";
10
+
11
+ // src/components/chat/Input.tsx
12
+ import { useEffect, useRef, useState } from "react";
13
+ import { useCopilotContext } from "@copilotkit/react-core";
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ var Input = ({ inProgress, onSend, isVisible = false }) => {
16
+ const context = useChatContext();
17
+ const copilotContext = useCopilotContext();
18
+ const pushToTalkConfigured = copilotContext.copilotApiConfig.textToSpeechUrl !== void 0 && copilotContext.copilotApiConfig.transcribeAudioUrl !== void 0;
19
+ const textareaRef = useRef(null);
20
+ const handleDivClick = (event) => {
21
+ var _a;
22
+ if (event.target !== event.currentTarget)
23
+ return;
24
+ (_a = textareaRef.current) == null ? void 0 : _a.focus();
25
+ };
26
+ const [text, setText] = useState("");
27
+ const send = () => {
28
+ var _a;
29
+ if (inProgress)
30
+ return;
31
+ onSend(text);
32
+ setText("");
33
+ (_a = textareaRef.current) == null ? void 0 : _a.focus();
34
+ };
35
+ useEffect(() => {
36
+ var _a;
37
+ if (isVisible) {
38
+ (_a = textareaRef.current) == null ? void 0 : _a.focus();
39
+ }
40
+ }, [isVisible]);
41
+ const { pushToTalkState, setPushToTalkState } = usePushToTalk({
42
+ sendFunction: onSend,
43
+ inProgress
44
+ });
45
+ const sendIcon = inProgress || pushToTalkState === "transcribing" ? context.icons.activityIcon : context.icons.sendIcon;
46
+ const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
47
+ const sendDisabled = inProgress || text.length === 0 || pushToTalkState !== "idle";
48
+ return /* @__PURE__ */ jsxs("div", { className: "copilotKitInput", onClick: handleDivClick, children: [
49
+ /* @__PURE__ */ jsx(
50
+ Textarea_default,
51
+ {
52
+ ref: textareaRef,
53
+ placeholder: context.labels.placeholder,
54
+ autoFocus: true,
55
+ maxRows: 5,
56
+ value: text,
57
+ onChange: (event) => setText(event.target.value),
58
+ onKeyDown: (event) => {
59
+ if (event.key === "Enter" && !event.shiftKey) {
60
+ event.preventDefault();
61
+ send();
62
+ }
63
+ }
64
+ }
65
+ ),
66
+ /* @__PURE__ */ jsxs("div", { className: "copilotKitInputControls", children: [
67
+ showPushToTalk && /* @__PURE__ */ jsx(
68
+ "button",
69
+ {
70
+ onClick: () => setPushToTalkState(pushToTalkState === "idle" ? "recording" : "transcribing"),
71
+ className: pushToTalkState === "recording" ? "copilotKitPushToTalkRecording" : "",
72
+ children: context.icons.pushToTalkIcon
73
+ }
74
+ ),
75
+ /* @__PURE__ */ jsx(
76
+ "button",
77
+ {
78
+ disabled: sendDisabled,
79
+ onClick: send,
80
+ "data-copilotkit-in-progress": !!inProgress,
81
+ "data-testid": inProgress ? "copilot-chat-request-in-progress" : void 0,
82
+ children: sendIcon
83
+ }
84
+ )
85
+ ] })
86
+ ] });
87
+ };
88
+
89
+ export {
90
+ Input
91
+ };
92
+ //# sourceMappingURL=chunk-4LUMV4YO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Input.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { InputProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport AutoResizingTextarea from \"./Textarea\";\nimport { usePushToTalk } from \"../../hooks/use-push-to-talk\";\nimport { useCopilotContext } from \"@copilotkit/react-core\";\n\nexport const Input = ({ inProgress, onSend, isVisible = false }: InputProps) => {\n const context = useChatContext();\n const copilotContext = useCopilotContext();\n\n const pushToTalkConfigured =\n copilotContext.copilotApiConfig.textToSpeechUrl !== undefined &&\n copilotContext.copilotApiConfig.transcribeAudioUrl !== undefined;\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const handleDivClick = (event: React.MouseEvent<HTMLDivElement>) => {\n // Check if the clicked element is not the textarea itself\n if (event.target !== event.currentTarget) return;\n\n textareaRef.current?.focus();\n };\n\n const [text, setText] = useState(\"\");\n const send = () => {\n if (inProgress) return;\n onSend(text);\n setText(\"\");\n\n textareaRef.current?.focus();\n };\n\n useEffect(() => {\n if (isVisible) {\n textareaRef.current?.focus();\n }\n }, [isVisible]);\n\n const { pushToTalkState, setPushToTalkState } = usePushToTalk({\n sendFunction: onSend,\n inProgress,\n });\n\n const sendIcon =\n inProgress || pushToTalkState === \"transcribing\"\n ? context.icons.activityIcon\n : context.icons.sendIcon;\n const showPushToTalk =\n pushToTalkConfigured &&\n (pushToTalkState === \"idle\" || pushToTalkState === \"recording\") &&\n !inProgress;\n const sendDisabled = inProgress || text.length === 0 || pushToTalkState !== \"idle\";\n\n return (\n <div className=\"copilotKitInput\" onClick={handleDivClick}>\n <AutoResizingTextarea\n ref={textareaRef}\n placeholder={context.labels.placeholder}\n autoFocus={true}\n maxRows={5}\n value={text}\n onChange={(event) => setText(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault();\n send();\n }\n }}\n />\n <div className=\"copilotKitInputControls\">\n {showPushToTalk && (\n <button\n onClick={() =>\n setPushToTalkState(pushToTalkState === \"idle\" ? \"recording\" : \"transcribing\")\n }\n className={pushToTalkState === \"recording\" ? \"copilotKitPushToTalkRecording\" : \"\"}\n >\n {context.icons.pushToTalkIcon}\n </button>\n )}\n <button\n disabled={sendDisabled}\n onClick={send}\n data-copilotkit-in-progress={!!inProgress}\n data-testid={inProgress ? \"copilot-chat-request-in-progress\" : undefined}\n >\n {sendIcon}\n </button>\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;AAAA,SAAgB,WAAW,QAAQ,gBAAgB;AAKnD,SAAS,yBAAyB;AAmD5B,cAcA,YAdA;AAjDC,IAAM,QAAQ,CAAC,EAAE,YAAY,QAAQ,YAAY,MAAM,MAAkB;AAC9E,QAAM,UAAU,eAAe;AAC/B,QAAM,iBAAiB,kBAAkB;AAEzC,QAAM,uBACJ,eAAe,iBAAiB,oBAAoB,UACpD,eAAe,iBAAiB,uBAAuB;AAEzD,QAAM,cAAc,OAA4B,IAAI;AAEpD,QAAM,iBAAiB,CAAC,UAA4C;AAjBtE;AAmBI,QAAI,MAAM,WAAW,MAAM;AAAe;AAE1C,sBAAY,YAAZ,mBAAqB;AAAA,EACvB;AAEA,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,EAAE;AACnC,QAAM,OAAO,MAAM;AAzBrB;AA0BI,QAAI;AAAY;AAChB,WAAO,IAAI;AACX,YAAQ,EAAE;AAEV,sBAAY,YAAZ,mBAAqB;AAAA,EACvB;AAEA,YAAU,MAAM;AAjClB;AAkCI,QAAI,WAAW;AACb,wBAAY,YAAZ,mBAAqB;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,EAAE,iBAAiB,mBAAmB,IAAI,cAAc;AAAA,IAC5D,cAAc;AAAA,IACd;AAAA,EACF,CAAC;AAED,QAAM,WACJ,cAAc,oBAAoB,iBAC9B,QAAQ,MAAM,eACd,QAAQ,MAAM;AACpB,QAAM,iBACJ,yBACC,oBAAoB,UAAU,oBAAoB,gBACnD,CAAC;AACH,QAAM,eAAe,cAAc,KAAK,WAAW,KAAK,oBAAoB;AAE5E,SACE,qBAAC,SAAI,WAAU,mBAAkB,SAAS,gBACxC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,aAAa,QAAQ,OAAO;AAAA,QAC5B,WAAW;AAAA,QACX,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU,CAAC,UAAU,QAAQ,MAAM,OAAO,KAAK;AAAA,QAC/C,WAAW,CAAC,UAAU;AACpB,cAAI,MAAM,QAAQ,WAAW,CAAC,MAAM,UAAU;AAC5C,kBAAM,eAAe;AACrB,iBAAK;AAAA,UACP;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,qBAAC,SAAI,WAAU,2BACZ;AAAA,wBACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,MACP,mBAAmB,oBAAoB,SAAS,cAAc,cAAc;AAAA,UAE9E,WAAW,oBAAoB,cAAc,kCAAkC;AAAA,UAE9E,kBAAQ,MAAM;AAAA;AAAA,MACjB;AAAA,MAEF;AAAA,QAAC;AAAA;AAAA,UACC,UAAU;AAAA,UACV,SAAS;AAAA,UACT,+BAA6B,CAAC,CAAC;AAAA,UAC/B,eAAa,aAAa,qCAAqC;AAAA,UAE9D;AAAA;AAAA,MACH;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}