@copilotkit/react-ui 1.5.8 → 1.5.10-next.0

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 +45 -0
  2. package/dist/chunk-22XXW3F6.mjs +304 -0
  3. package/dist/chunk-22XXW3F6.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-6RN2UVSW.mjs +30 -0
  13. package/dist/chunk-6RN2UVSW.mjs.map +1 -0
  14. package/dist/chunk-7II4YL7R.mjs +170 -0
  15. package/dist/chunk-7II4YL7R.mjs.map +1 -0
  16. package/dist/chunk-BH6PCAAL.mjs +81 -0
  17. package/dist/chunk-BH6PCAAL.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-D2AA7PDR.mjs +21 -0
  21. package/dist/chunk-D2AA7PDR.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-EMQEEXUB.mjs +97 -0
  25. package/dist/chunk-EMQEEXUB.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-HZGELGAZ.mjs +232 -0
  29. package/dist/chunk-HZGELGAZ.mjs.map +1 -0
  30. package/dist/chunk-IU3WTXLQ.mjs +1 -0
  31. package/dist/chunk-IU3WTXLQ.mjs.map +1 -0
  32. package/dist/chunk-KXE2JCUH.mjs +1 -0
  33. package/dist/chunk-KXE2JCUH.mjs.map +1 -0
  34. package/dist/chunk-MMVDU6DF.mjs +1 -0
  35. package/dist/chunk-MMVDU6DF.mjs.map +1 -0
  36. package/dist/chunk-MRFF7GSQ.mjs +1 -0
  37. package/dist/chunk-MRFF7GSQ.mjs.map +1 -0
  38. package/dist/chunk-MRXNTQOX.mjs +59 -0
  39. package/dist/chunk-MRXNTQOX.mjs.map +1 -0
  40. package/dist/chunk-NLZW3ZOG.mjs +95 -0
  41. package/dist/chunk-NLZW3ZOG.mjs.map +1 -0
  42. package/dist/chunk-OTPAZXVR.mjs +92 -0
  43. package/dist/chunk-OTPAZXVR.mjs.map +1 -0
  44. package/dist/chunk-PNQVKBPN.mjs +146 -0
  45. package/dist/chunk-PNQVKBPN.mjs.map +1 -0
  46. package/dist/chunk-RJCZRKTV.mjs +106 -0
  47. package/dist/chunk-RJCZRKTV.mjs.map +1 -0
  48. package/dist/chunk-RQNJNK2W.mjs +25 -0
  49. package/dist/chunk-RQNJNK2W.mjs.map +1 -0
  50. package/dist/chunk-RU73BEZM.mjs +41 -0
  51. package/dist/chunk-RU73BEZM.mjs.map +1 -0
  52. package/dist/chunk-S5MBUNGN.mjs +140 -0
  53. package/dist/chunk-S5MBUNGN.mjs.map +1 -0
  54. package/dist/chunk-T26KLXLH.mjs +1 -0
  55. package/dist/chunk-T26KLXLH.mjs.map +1 -0
  56. package/dist/chunk-TI7SY2RI.mjs +164 -0
  57. package/dist/chunk-TI7SY2RI.mjs.map +1 -0
  58. package/dist/chunk-UPTB2MVO.mjs +395 -0
  59. package/dist/chunk-UPTB2MVO.mjs.map +1 -0
  60. package/dist/chunk-V7W6IM2V.mjs +1 -0
  61. package/dist/chunk-V7W6IM2V.mjs.map +1 -0
  62. package/dist/chunk-VEC45H6Q.mjs +18 -0
  63. package/dist/chunk-VEC45H6Q.mjs.map +1 -0
  64. package/dist/chunk-WB3YULQ4.mjs +1 -0
  65. package/dist/chunk-WB3YULQ4.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
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/components/chat/Messages.tsx
31
+ var Messages_exports = {};
32
+ __export(Messages_exports, {
33
+ Messages: () => Messages,
34
+ useScrollToBottom: () => useScrollToBottom
35
+ });
36
+ module.exports = __toCommonJS(Messages_exports);
37
+ var import_react2 = require("react");
38
+
39
+ // src/components/chat/ChatContext.tsx
40
+ var import_react = __toESM(require("react"));
41
+ var import_jsx_runtime = require("react/jsx-runtime");
42
+ var ChatContext = import_react.default.createContext(void 0);
43
+ function useChatContext() {
44
+ const context = import_react.default.useContext(ChatContext);
45
+ if (context === void 0) {
46
+ throw new Error(
47
+ "Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?"
48
+ );
49
+ }
50
+ return context;
51
+ }
52
+
53
+ // src/components/chat/Messages.tsx
54
+ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
55
+ var import_jsx_runtime2 = require("react/jsx-runtime");
56
+ var Messages = ({
57
+ messages,
58
+ inProgress,
59
+ children,
60
+ RenderTextMessage,
61
+ RenderActionExecutionMessage,
62
+ RenderAgentStateMessage,
63
+ RenderResultMessage
64
+ }) => {
65
+ const context = useChatContext();
66
+ const initialMessages = (0, import_react2.useMemo)(
67
+ () => makeInitialMessages(context.labels.initial),
68
+ [context.labels.initial]
69
+ );
70
+ messages = [...initialMessages, ...messages];
71
+ const actionResults = {};
72
+ for (let i = 0; i < messages.length; i++) {
73
+ if (messages[i].isActionExecutionMessage()) {
74
+ const id = messages[i].id;
75
+ const resultMessage = messages.find(
76
+ (message) => message.isResultMessage() && message.actionExecutionId === id
77
+ );
78
+ if (resultMessage) {
79
+ actionResults[id] = import_runtime_client_gql.ResultMessage.decodeResult(resultMessage.result || "");
80
+ }
81
+ }
82
+ }
83
+ const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);
84
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
85
+ messages.map((message, index) => {
86
+ const isCurrentMessage = index === messages.length - 1;
87
+ if (message.isTextMessage()) {
88
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
89
+ RenderTextMessage,
90
+ {
91
+ message,
92
+ inProgress,
93
+ index,
94
+ isCurrentMessage
95
+ },
96
+ index
97
+ );
98
+ } else if (message.isActionExecutionMessage()) {
99
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
100
+ RenderActionExecutionMessage,
101
+ {
102
+ message,
103
+ inProgress,
104
+ index,
105
+ isCurrentMessage,
106
+ actionResult: actionResults[message.id]
107
+ },
108
+ index
109
+ );
110
+ } else if (message.isAgentStateMessage()) {
111
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
112
+ RenderAgentStateMessage,
113
+ {
114
+ message,
115
+ inProgress,
116
+ index,
117
+ isCurrentMessage
118
+ },
119
+ index
120
+ );
121
+ } else if (message.isResultMessage()) {
122
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
123
+ RenderResultMessage,
124
+ {
125
+ message,
126
+ inProgress,
127
+ index,
128
+ isCurrentMessage
129
+ },
130
+ index
131
+ );
132
+ }
133
+ }),
134
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("footer", { ref: messagesEndRef, children })
135
+ ] });
136
+ };
137
+ function makeInitialMessages(initial) {
138
+ let initialArray = [];
139
+ if (initial) {
140
+ if (Array.isArray(initial)) {
141
+ initialArray.push(...initial);
142
+ } else {
143
+ initialArray.push(initial);
144
+ }
145
+ }
146
+ return initialArray.map(
147
+ (message) => new import_runtime_client_gql.TextMessage({
148
+ role: import_runtime_client_gql.Role.Assistant,
149
+ content: message
150
+ })
151
+ );
152
+ }
153
+ function useScrollToBottom(messages) {
154
+ const messagesEndRef = (0, import_react2.useRef)(null);
155
+ const messagesContainerRef = (0, import_react2.useRef)(null);
156
+ const isProgrammaticScrollRef = (0, import_react2.useRef)(false);
157
+ const isUserScrollUpRef = (0, import_react2.useRef)(false);
158
+ const scrollToBottom = () => {
159
+ if (messagesEndRef.current) {
160
+ isProgrammaticScrollRef.current = true;
161
+ messagesEndRef.current.scrollIntoView({
162
+ behavior: "auto"
163
+ });
164
+ }
165
+ };
166
+ const handleScroll = () => {
167
+ if (isProgrammaticScrollRef.current) {
168
+ isProgrammaticScrollRef.current = false;
169
+ return;
170
+ }
171
+ if (messagesContainerRef.current) {
172
+ const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;
173
+ isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;
174
+ }
175
+ };
176
+ (0, import_react2.useEffect)(() => {
177
+ const container = messagesContainerRef.current;
178
+ if (container) {
179
+ container.addEventListener("scroll", handleScroll);
180
+ }
181
+ return () => {
182
+ if (container) {
183
+ container.removeEventListener("scroll", handleScroll);
184
+ }
185
+ };
186
+ }, []);
187
+ (0, import_react2.useEffect)(() => {
188
+ const container = messagesContainerRef.current;
189
+ if (!container) {
190
+ return;
191
+ }
192
+ const mutationObserver = new MutationObserver(() => {
193
+ if (!isUserScrollUpRef.current) {
194
+ scrollToBottom();
195
+ }
196
+ });
197
+ mutationObserver.observe(container, {
198
+ childList: true,
199
+ subtree: true,
200
+ characterData: true
201
+ });
202
+ return () => {
203
+ mutationObserver.disconnect();
204
+ };
205
+ }, []);
206
+ (0, import_react2.useEffect)(() => {
207
+ isUserScrollUpRef.current = false;
208
+ scrollToBottom();
209
+ }, [messages.filter((m) => m.isTextMessage() && m.role === import_runtime_client_gql.Role.User).length]);
210
+ return { messagesEndRef, messagesContainerRef };
211
+ }
212
+ // Annotate the CommonJS export names for ESM import in node:
213
+ 0 && (module.exports = {
214
+ Messages,
215
+ useScrollToBottom
216
+ });
217
+ //# sourceMappingURL=Messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/chat/Messages.tsx","../../../src/components/chat/ChatContext.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","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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,gBAA2C;;;ACA3C,mBAAyC;AA0LhC;AA5EF,IAAM,cAAc,aAAAC,QAAM,cAAuC,MAAS;AAE1E,SAAS,iBAA8B;AAC5C,QAAM,UAAU,aAAAA,QAAM,WAAW,WAAW;AAC5C,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;ADrHA,gCAA0D;AAoCtD,IAAAC,sBAAA;AAlCG,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAqB;AACnB,QAAM,UAAU,eAAe;AAC/B,QAAM,sBAAkB;AAAA,IACtB,MAAM,oBAAoB,QAAQ,OAAO,OAAO;AAAA,IAChD,CAAC,QAAQ,OAAO,OAAO;AAAA,EACzB;AACA,aAAW,CAAC,GAAG,iBAAiB,GAAG,QAAQ;AAE3C,QAAM,gBAAwC,CAAC;AAE/C,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,QAAI,SAAS,CAAC,EAAE,yBAAyB,GAAG;AAC1C,YAAM,KAAK,SAAS,CAAC,EAAE;AACvB,YAAM,gBAA2C,SAAS;AAAA,QACxD,CAAC,YAAY,QAAQ,gBAAgB,KAAK,QAAQ,sBAAsB;AAAA,MAC1E;AAEA,UAAI,eAAe;AACjB,sBAAc,EAAE,IAAI,wCAAc,aAAa,cAAc,UAAU,EAAE;AAAA,MAC3E;AAAA,IACF;AAAA,EACF;AAEA,QAAM,EAAE,gBAAgB,qBAAqB,IAAI,kBAAkB,QAAQ;AAE3E,SACE,8CAAC,SAAI,WAAU,sBAAqB,KAAK,sBACtC;AAAA,aAAS,IAAI,CAAC,SAAS,UAAU;AAChC,YAAM,mBAAmB,UAAU,SAAS,SAAS;AAErD,UAAI,QAAQ,cAAc,GAAG;AAC3B,eACE;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UAJK;AAAA,QAKP;AAAA,MAEJ,WAAW,QAAQ,yBAAyB,GAAG;AAC7C,eACE;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,cAAc,cAAc,QAAQ,EAAE;AAAA;AAAA,UALjC;AAAA,QAMP;AAAA,MAEJ,WAAW,QAAQ,oBAAoB,GAAG;AACxC,eACE;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UAJK;AAAA,QAKP;AAAA,MAEJ,WAAW,QAAQ,gBAAgB,GAAG;AACpC,eACE;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UAJK;AAAA,QAKP;AAAA,MAEJ;AAAA,IACF,CAAC;AAAA,IACD,6CAAC,YAAO,KAAK,gBAAiB,UAAS;AAAA,KACzC;AAEJ;AAEA,SAAS,oBAAoB,SAAwC;AACnE,MAAI,eAAyB,CAAC;AAC9B,MAAI,SAAS;AACX,QAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,mBAAa,KAAK,GAAG,OAAO;AAAA,IAC9B,OAAO;AACL,mBAAa,KAAK,OAAO;AAAA,IAC3B;AAAA,EACF;AAEA,SAAO,aAAa;AAAA,IAClB,CAAC,YACC,IAAI,sCAAY;AAAA,MACd,MAAM,+BAAK;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AAAA,EACL;AACF;AACO,SAAS,kBAAkB,UAAiB;AACjD,QAAM,qBAAiB,sBAAuB,IAAI;AAClD,QAAM,2BAAuB,sBAA8B,IAAI;AAC/D,QAAM,8BAA0B,sBAAO,KAAK;AAC5C,QAAM,wBAAoB,sBAAO,KAAK;AAEtC,QAAM,iBAAiB,MAAM;AAC3B,QAAI,eAAe,SAAS;AAC1B,8BAAwB,UAAU;AAClC,qBAAe,QAAQ,eAAe;AAAA,QACpC,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,eAAe,MAAM;AACzB,QAAI,wBAAwB,SAAS;AACnC,8BAAwB,UAAU;AAClC;AAAA,IACF;AAEA,QAAI,qBAAqB,SAAS;AAChC,YAAM,EAAE,WAAW,cAAc,aAAa,IAAI,qBAAqB;AACvE,wBAAkB,UAAU,YAAY,eAAe;AAAA,IACzD;AAAA,EACF;AAEA,+BAAU,MAAM;AACd,UAAM,YAAY,qBAAqB;AACvC,QAAI,WAAW;AACb,gBAAU,iBAAiB,UAAU,YAAY;AAAA,IACnD;AACA,WAAO,MAAM;AACX,UAAI,WAAW;AACb,kBAAU,oBAAoB,UAAU,YAAY;AAAA,MACtD;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,+BAAU,MAAM;AACd,UAAM,YAAY,qBAAqB;AACvC,QAAI,CAAC,WAAW;AACd;AAAA,IACF;AAEA,UAAM,mBAAmB,IAAI,iBAAiB,MAAM;AAClD,UAAI,CAAC,kBAAkB,SAAS;AAC9B,uBAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,qBAAiB,QAAQ,WAAW;AAAA,MAClC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,eAAe;AAAA,IACjB,CAAC;AAED,WAAO,MAAM;AACX,uBAAiB,WAAW;AAAA,IAC9B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,+BAAU,MAAM;AACd,sBAAkB,UAAU;AAC5B,mBAAe;AAAA,EACjB,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,cAAc,KAAK,EAAE,SAAS,+BAAK,IAAI,EAAE,MAAM,CAAC;AAE7E,SAAO,EAAE,gBAAgB,qBAAqB;AAChD;","names":["import_react","React","import_jsx_runtime"]}
@@ -0,0 +1,12 @@
1
+ import {
2
+ Messages,
3
+ useScrollToBottom
4
+ } from "../../chunk-7II4YL7R.mjs";
5
+ import "../../chunk-CBBFRI3Q.mjs";
6
+ import "../../chunk-FZC7X5PK.mjs";
7
+ import "../../chunk-MRXNTQOX.mjs";
8
+ export {
9
+ Messages,
10
+ useScrollToBottom
11
+ };
12
+ //# sourceMappingURL=Messages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,51 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React__default from 'react';
3
+ import { WindowProps, ButtonProps, HeaderProps } from './props.js';
4
+ import { CopilotChatProps } from './Chat.js';
5
+ import '@copilotkit/runtime-client-gql';
6
+ import './ChatContext.js';
7
+ import '@copilotkit/react-core';
8
+ import '../../types/suggestions.js';
9
+
10
+ interface CopilotModalProps extends CopilotChatProps {
11
+ /**
12
+ * Whether the chat window should be open by default.
13
+ * @default false
14
+ */
15
+ defaultOpen?: boolean;
16
+ /**
17
+ * If the chat window should close when the user clicks outside of it.
18
+ * @default true
19
+ */
20
+ clickOutsideToClose?: boolean;
21
+ /**
22
+ * If the chat window should close when the user hits the Escape key.
23
+ * @default true
24
+ */
25
+ hitEscapeToClose?: boolean;
26
+ /**
27
+ * The shortcut key to open the chat window.
28
+ * Uses Command-[shortcut] on a Mac and Ctrl-[shortcut] on Windows.
29
+ * @default '/'
30
+ */
31
+ shortcut?: string;
32
+ /**
33
+ * A callback that gets called when the chat window opens or closes.
34
+ */
35
+ onSetOpen?: (open: boolean) => void;
36
+ /**
37
+ * A custom Window component to use instead of the default.
38
+ */
39
+ Window?: React__default.ComponentType<WindowProps>;
40
+ /**
41
+ * A custom Button component to use instead of the default.
42
+ */
43
+ Button?: React__default.ComponentType<ButtonProps>;
44
+ /**
45
+ * A custom Header component to use instead of the default.
46
+ */
47
+ Header?: React__default.ComponentType<HeaderProps>;
48
+ }
49
+ declare const CopilotModal: ({ instructions, defaultOpen, clickOutsideToClose, hitEscapeToClose, onSetOpen, onSubmitMessage, onStopGeneration, onReloadMessages, shortcut, icons, labels, makeSystemMessage, showResponseButton, onInProgress, Window, Button, Header, Messages, Input, ResponseButton, className, children, }: CopilotModalProps) => react_jsx_runtime.JSX.Element;
50
+
51
+ export { CopilotModal, CopilotModalProps };