@copilotkit/react-ui 1.1.3-feat-runtime-remote-actions.2 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/CHANGELOG.md +21 -19
  2. package/dist/components/chat/Button.d.mts +7 -0
  3. package/dist/components/chat/Button.js.map +1 -1
  4. package/dist/components/chat/Button.mjs +30 -6
  5. package/dist/components/chat/Button.mjs.map +1 -1
  6. package/dist/components/chat/Chat.d.mts +87 -0
  7. package/dist/components/chat/Chat.d.ts +2 -2
  8. package/dist/components/chat/Chat.js +8 -107
  9. package/dist/components/chat/Chat.js.map +1 -1
  10. package/dist/components/chat/Chat.mjs +1754 -20
  11. package/dist/components/chat/Chat.mjs.map +1 -1
  12. package/dist/components/chat/ChatContext.d.mts +105 -0
  13. package/dist/components/chat/ChatContext.d.ts +1 -1
  14. package/dist/components/chat/ChatContext.mjs +228 -7
  15. package/dist/components/chat/ChatContext.mjs.map +1 -1
  16. package/dist/components/chat/CodeBlock.d.mts +14 -0
  17. package/dist/components/chat/CodeBlock.js +1 -2
  18. package/dist/components/chat/CodeBlock.js.map +1 -1
  19. package/dist/components/chat/CodeBlock.mjs +482 -8
  20. package/dist/components/chat/CodeBlock.mjs.map +1 -1
  21. package/dist/components/chat/Header.d.mts +7 -0
  22. package/dist/components/chat/Header.mjs +23 -6
  23. package/dist/components/chat/Header.mjs.map +1 -1
  24. package/dist/components/chat/Icons.d.mts +18 -0
  25. package/dist/components/chat/Icons.mjs +271 -16
  26. package/dist/components/chat/Icons.mjs.map +1 -1
  27. package/dist/components/chat/Input.d.mts +7 -0
  28. package/dist/components/chat/Input.js +2 -4
  29. package/dist/components/chat/Input.js.map +1 -1
  30. package/dist/components/chat/Input.mjs +255 -8
  31. package/dist/components/chat/Input.mjs.map +1 -1
  32. package/dist/components/chat/Markdown.d.mts +8 -0
  33. package/dist/components/chat/Markdown.js +1 -2
  34. package/dist/components/chat/Markdown.js.map +1 -1
  35. package/dist/components/chat/Markdown.mjs +546 -7
  36. package/dist/components/chat/Markdown.mjs.map +1 -1
  37. package/dist/components/chat/Messages.d.mts +7 -0
  38. package/dist/components/chat/Messages.js +3 -48
  39. package/dist/components/chat/Messages.js.map +1 -1
  40. package/dist/components/chat/Messages.mjs +678 -8
  41. package/dist/components/chat/Messages.mjs.map +1 -1
  42. package/dist/components/chat/Modal.d.mts +51 -0
  43. package/dist/components/chat/Modal.d.ts +1 -1
  44. package/dist/components/chat/Modal.js +9 -107
  45. package/dist/components/chat/Modal.js.map +1 -1
  46. package/dist/components/chat/Modal.mjs +1956 -22
  47. package/dist/components/chat/Modal.mjs.map +1 -1
  48. package/dist/components/chat/Popup.d.mts +13 -0
  49. package/dist/components/chat/Popup.js +9 -107
  50. package/dist/components/chat/Popup.js.map +1 -1
  51. package/dist/components/chat/Popup.mjs +1965 -23
  52. package/dist/components/chat/Popup.mjs.map +1 -1
  53. package/dist/components/chat/Response.d.mts +7 -0
  54. package/dist/components/chat/Response.mjs +23 -6
  55. package/dist/components/chat/Response.mjs.map +1 -1
  56. package/dist/components/chat/Sidebar.d.mts +13 -0
  57. package/dist/components/chat/Sidebar.js +10 -107
  58. package/dist/components/chat/Sidebar.js.map +1 -1
  59. package/dist/components/chat/Sidebar.mjs +1977 -23
  60. package/dist/components/chat/Sidebar.mjs.map +1 -1
  61. package/dist/components/chat/Suggestion.d.mts +14 -0
  62. package/dist/components/chat/Suggestion.js.map +1 -1
  63. package/dist/components/chat/Suggestion.mjs +152 -5
  64. package/dist/components/chat/Suggestion.mjs.map +1 -1
  65. package/dist/components/chat/Textarea.d.mts +13 -0
  66. package/dist/components/chat/Textarea.js.map +1 -1
  67. package/dist/components/chat/Textarea.mjs +48 -4
  68. package/dist/components/chat/Textarea.mjs.map +1 -1
  69. package/dist/components/chat/Window.d.mts +7 -0
  70. package/dist/components/chat/Window.js.map +1 -1
  71. package/dist/components/chat/Window.mjs +125 -6
  72. package/dist/components/chat/Window.mjs.map +1 -1
  73. package/dist/components/chat/index.d.mts +11 -0
  74. package/dist/components/chat/index.js +10 -107
  75. package/dist/components/chat/index.js.map +1 -1
  76. package/dist/components/chat/index.mjs +1983 -31
  77. package/dist/components/chat/index.mjs.map +1 -1
  78. package/dist/components/chat/props.d.mts +35 -0
  79. package/dist/components/chat/props.d.ts +1 -1
  80. package/dist/components/chat/props.mjs +0 -1
  81. package/dist/components/dev-console/console.d.mts +10 -0
  82. package/dist/components/dev-console/console.js +0 -52
  83. package/dist/components/dev-console/console.js.map +1 -1
  84. package/dist/components/dev-console/console.mjs +426 -8
  85. package/dist/components/dev-console/console.mjs.map +1 -1
  86. package/dist/components/dev-console/icons.d.mts +9 -0
  87. package/dist/components/dev-console/icons.mjs +83 -8
  88. package/dist/components/dev-console/icons.mjs.map +1 -1
  89. package/dist/components/dev-console/index.d.mts +5 -0
  90. package/dist/components/dev-console/index.js +0 -52
  91. package/dist/components/dev-console/index.js.map +1 -1
  92. package/dist/components/dev-console/index.mjs +424 -10
  93. package/dist/components/dev-console/index.mjs.map +1 -1
  94. package/dist/components/dev-console/types.d.mts +9 -0
  95. package/dist/components/dev-console/types.d.ts +1 -1
  96. package/dist/components/dev-console/utils.d.mts +9 -0
  97. package/dist/components/dev-console/utils.d.ts +1 -2
  98. package/dist/components/dev-console/utils.js +0 -53
  99. package/dist/components/dev-console/utils.js.map +1 -1
  100. package/dist/components/dev-console/utils.mjs +103 -9
  101. package/dist/components/dev-console/utils.mjs.map +1 -1
  102. package/dist/components/index.d.mts +11 -0
  103. package/dist/components/index.js +10 -107
  104. package/dist/components/index.js.map +1 -1
  105. package/dist/components/index.mjs +1983 -32
  106. package/dist/components/index.mjs.map +1 -1
  107. package/dist/context/index.d.mts +2 -0
  108. package/dist/context/index.d.ts +1 -1
  109. package/dist/context/index.mjs +0 -1
  110. package/dist/hooks/index.d.mts +1 -0
  111. package/dist/hooks/index.mjs +24 -5
  112. package/dist/hooks/index.mjs.map +1 -1
  113. package/dist/hooks/use-copilot-chat-suggestions.d.mts +83 -0
  114. package/dist/hooks/use-copilot-chat-suggestions.mjs +24 -4
  115. package/dist/hooks/use-copilot-chat-suggestions.mjs.map +1 -1
  116. package/dist/hooks/use-copy-to-clipboard.d.mts +9 -0
  117. package/dist/hooks/use-copy-to-clipboard.d.ts +1 -1
  118. package/dist/hooks/use-copy-to-clipboard.mjs +21 -4
  119. package/dist/hooks/use-copy-to-clipboard.mjs.map +1 -1
  120. package/dist/hooks/use-push-to-talk.d.mts +19 -0
  121. package/dist/hooks/use-push-to-talk.d.ts +1 -1
  122. package/dist/hooks/use-push-to-talk.js.map +1 -1
  123. package/dist/hooks/use-push-to-talk.mjs +148 -6
  124. package/dist/hooks/use-push-to-talk.mjs.map +1 -1
  125. package/dist/index.css +1 -747
  126. package/dist/index.d.mts +13 -0
  127. package/dist/index.js +17 -107
  128. package/dist/index.js.map +1 -1
  129. package/dist/index.mjs +2015 -38
  130. package/dist/index.mjs.map +1 -1
  131. package/dist/lib/utils.d.mts +4 -0
  132. package/dist/lib/utils.mjs +20 -3
  133. package/dist/lib/utils.mjs.map +1 -1
  134. package/dist/lib/utils.test.d.mts +2 -0
  135. package/dist/lib/utils.test.d.ts +1 -1
  136. package/dist/types/css.d.mts +16 -0
  137. package/dist/types/css.d.ts +1 -1
  138. package/dist/types/index.d.mts +2 -0
  139. package/dist/types/index.mjs +0 -1
  140. package/dist/types/suggestions.d.mts +8 -0
  141. package/dist/types/suggestions.d.ts +1 -1
  142. package/package.json +19 -11
  143. package/src/components/chat/Chat.tsx +2 -5
  144. package/src/components/chat/Messages.tsx +2 -83
  145. package/src/components/chat/Modal.tsx +1 -0
  146. package/src/components/chat/Popup.tsx +1 -4
  147. package/src/components/chat/Sidebar.tsx +2 -3
  148. package/src/components/chat/Suggestion.tsx +0 -2
  149. package/src/components/dev-console/console.tsx +0 -6
  150. package/src/components/dev-console/utils.ts +0 -56
  151. package/tsup.config.ts +59 -15
  152. package/dist/chunk-54JAUBUJ.mjs +0 -26
  153. package/dist/chunk-54JAUBUJ.mjs.map +0 -1
  154. package/dist/chunk-5HHVL5WK.mjs +0 -29
  155. package/dist/chunk-5HHVL5WK.mjs.map +0 -1
  156. package/dist/chunk-B2KQEX2R.mjs +0 -91
  157. package/dist/chunk-B2KQEX2R.mjs.map +0 -1
  158. package/dist/chunk-BJPGMY3I.mjs +0 -70
  159. package/dist/chunk-BJPGMY3I.mjs.map +0 -1
  160. package/dist/chunk-EFZPSZWO.mjs +0 -1
  161. package/dist/chunk-EFZPSZWO.mjs.map +0 -1
  162. package/dist/chunk-FL4ETWFB.mjs +0 -21
  163. package/dist/chunk-FL4ETWFB.mjs.map +0 -1
  164. package/dist/chunk-FLV3J3VX.mjs +0 -18
  165. package/dist/chunk-FLV3J3VX.mjs.map +0 -1
  166. package/dist/chunk-FO7Z5LAL.mjs +0 -118
  167. package/dist/chunk-FO7Z5LAL.mjs.map +0 -1
  168. package/dist/chunk-FOZVHL73.mjs +0 -171
  169. package/dist/chunk-FOZVHL73.mjs.map +0 -1
  170. package/dist/chunk-FZC7X5PK.mjs +0 -262
  171. package/dist/chunk-FZC7X5PK.mjs.map +0 -1
  172. package/dist/chunk-H7TM5JE6.mjs +0 -146
  173. package/dist/chunk-H7TM5JE6.mjs.map +0 -1
  174. package/dist/chunk-HR36Y2FQ.mjs +0 -167
  175. package/dist/chunk-HR36Y2FQ.mjs.map +0 -1
  176. package/dist/chunk-I4QG2ZZU.mjs +0 -220
  177. package/dist/chunk-I4QG2ZZU.mjs.map +0 -1
  178. package/dist/chunk-IU3WTXLQ.mjs +0 -1
  179. package/dist/chunk-IU3WTXLQ.mjs.map +0 -1
  180. package/dist/chunk-JD7BAH7U.mjs +0 -1
  181. package/dist/chunk-JD7BAH7U.mjs.map +0 -1
  182. package/dist/chunk-MRFF7GSQ.mjs +0 -1
  183. package/dist/chunk-MRFF7GSQ.mjs.map +0 -1
  184. package/dist/chunk-MRXNTQOX.mjs +0 -59
  185. package/dist/chunk-MRXNTQOX.mjs.map +0 -1
  186. package/dist/chunk-OTPAZXVR.mjs +0 -92
  187. package/dist/chunk-OTPAZXVR.mjs.map +0 -1
  188. package/dist/chunk-QOEAEMUQ.mjs +0 -30
  189. package/dist/chunk-QOEAEMUQ.mjs.map +0 -1
  190. package/dist/chunk-T26KLXLH.mjs +0 -1
  191. package/dist/chunk-T26KLXLH.mjs.map +0 -1
  192. package/dist/chunk-U6J5DGOE.mjs +0 -83
  193. package/dist/chunk-U6J5DGOE.mjs.map +0 -1
  194. package/dist/chunk-UPTB2MVO.mjs +0 -395
  195. package/dist/chunk-UPTB2MVO.mjs.map +0 -1
  196. package/dist/chunk-V7W6IM2V.mjs +0 -1
  197. package/dist/chunk-V7W6IM2V.mjs.map +0 -1
  198. package/dist/chunk-VOBX4JOA.mjs +0 -138
  199. package/dist/chunk-VOBX4JOA.mjs.map +0 -1
  200. package/dist/chunk-WB3YULQ4.mjs +0 -1
  201. package/dist/chunk-WB3YULQ4.mjs.map +0 -1
  202. package/dist/chunk-WCPLXRZX.mjs +0 -106
  203. package/dist/chunk-WCPLXRZX.mjs.map +0 -1
  204. package/dist/chunk-XSUSSWDS.mjs +0 -18
  205. package/dist/chunk-XSUSSWDS.mjs.map +0 -1
  206. package/dist/chunk-YOH25I6N.mjs +0 -25
  207. package/dist/chunk-YOH25I6N.mjs.map +0 -1
  208. package/dist/chunk-YQ3D5IQV.mjs +0 -75
  209. package/dist/chunk-YQ3D5IQV.mjs.map +0 -1
  210. package/dist/chunk-YQFVRDNC.mjs +0 -53
  211. package/dist/chunk-YQFVRDNC.mjs.map +0 -1
  212. package/dist/index.css.map +0 -1
@@ -1,12 +1,682 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+
33
+ // src/components/chat/Messages.tsx
34
+ import React3, { useEffect, useMemo as useMemo2 } from "react";
35
+
36
+ // src/components/chat/ChatContext.tsx
37
+ import React from "react";
38
+
39
+ // src/components/chat/Icons.tsx
40
+ import { jsx, jsxs } from "react/jsx-runtime";
41
+ function CheckIcon(_a) {
42
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
43
+ return /* @__PURE__ */ jsx(
44
+ "svg",
45
+ __spreadProps(__spreadValues({
46
+ xmlns: "http://www.w3.org/2000/svg",
47
+ viewBox: "0 0 256 256",
48
+ fill: "currentColor",
49
+ style: { height: "1rem", width: "1rem" },
50
+ className
51
+ }, props), {
52
+ children: /* @__PURE__ */ jsx("path", { d: "m229.66 77.66-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69 218.34 66.34a8 8 0 0 1 11.32 11.32Z" })
53
+ })
54
+ );
55
+ }
56
+ function DownloadIcon(_a) {
57
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
58
+ return /* @__PURE__ */ jsx(
59
+ "svg",
60
+ __spreadProps(__spreadValues({
61
+ xmlns: "http://www.w3.org/2000/svg",
62
+ viewBox: "0 0 256 256",
63
+ fill: "currentColor",
64
+ style: { height: "1rem", width: "1rem" },
65
+ className
66
+ }, props), {
67
+ children: /* @__PURE__ */ jsx("path", { d: "M224 152v56a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16v-56a8 8 0 0 1 16 0v56h160v-56a8 8 0 0 1 16 0Zm-101.66 5.66a8 8 0 0 0 11.32 0l40-40a8 8 0 0 0-11.32-11.32L136 132.69V40a8 8 0 0 0-16 0v92.69l-26.34-26.35a8 8 0 0 0-11.32 11.32Z" })
68
+ })
69
+ );
70
+ }
71
+ function CopyIcon(_a) {
72
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
73
+ return /* @__PURE__ */ jsx(
74
+ "svg",
75
+ __spreadProps(__spreadValues({
76
+ xmlns: "http://www.w3.org/2000/svg",
77
+ viewBox: "0 0 256 256",
78
+ fill: "currentColor",
79
+ style: { height: "1rem", width: "1rem" },
80
+ className
81
+ }, props), {
82
+ children: /* @__PURE__ */ jsx("path", { d: "M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8Zm-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z" })
83
+ })
84
+ );
85
+ }
86
+
87
+ // src/components/chat/ChatContext.tsx
88
+ import { jsx as jsx2 } from "react/jsx-runtime";
89
+ var ChatContext = React.createContext(void 0);
90
+ function useChatContext() {
91
+ const context = React.useContext(ChatContext);
92
+ if (context === void 0) {
93
+ throw new Error(
94
+ "Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?"
95
+ );
96
+ }
97
+ return context;
98
+ }
99
+
100
+ // src/components/chat/Markdown.tsx
101
+ import { memo as memo2 } from "react";
102
+ import ReactMarkdown from "react-markdown";
103
+
104
+ // src/components/chat/CodeBlock.tsx
105
+ import { memo } from "react";
106
+ import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
107
+
108
+ // src/hooks/use-copy-to-clipboard.tsx
109
+ import * as React2 from "react";
110
+ function useCopyToClipboard({ timeout = 2e3 }) {
111
+ const [isCopied, setIsCopied] = React2.useState(false);
112
+ const copyToClipboard = (value) => {
113
+ var _a;
114
+ if (typeof window === "undefined" || !((_a = navigator.clipboard) == null ? void 0 : _a.writeText)) {
115
+ return;
116
+ }
117
+ if (!value) {
118
+ return;
119
+ }
120
+ navigator.clipboard.writeText(value).then(() => {
121
+ setIsCopied(true);
122
+ setTimeout(() => {
123
+ setIsCopied(false);
124
+ }, timeout);
125
+ });
126
+ };
127
+ return { isCopied, copyToClipboard };
128
+ }
129
+
130
+ // src/components/chat/CodeBlock.tsx
131
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
132
+ var programmingLanguages = {
133
+ javascript: ".js",
134
+ python: ".py",
135
+ java: ".java",
136
+ c: ".c",
137
+ cpp: ".cpp",
138
+ "c++": ".cpp",
139
+ "c#": ".cs",
140
+ ruby: ".rb",
141
+ php: ".php",
142
+ swift: ".swift",
143
+ "objective-c": ".m",
144
+ kotlin: ".kt",
145
+ typescript: ".ts",
146
+ go: ".go",
147
+ perl: ".pl",
148
+ rust: ".rs",
149
+ scala: ".scala",
150
+ haskell: ".hs",
151
+ lua: ".lua",
152
+ shell: ".sh",
153
+ sql: ".sql",
154
+ html: ".html",
155
+ css: ".css"
156
+ // add more file extensions here, make sure the key is same as language prop in CodeBlock.tsx component
157
+ };
158
+ var generateRandomString = (length, lowercase = false) => {
159
+ const chars = "ABCDEFGHJKLMNPQRSTUVWXY3456789";
160
+ let result = "";
161
+ for (let i = 0; i < length; i++) {
162
+ result += chars.charAt(Math.floor(Math.random() * chars.length));
163
+ }
164
+ return lowercase ? result.toLowerCase() : result;
165
+ };
166
+ var CodeBlock = memo(({ language, value }) => {
167
+ const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2e3 });
168
+ const downloadAsFile = () => {
169
+ if (typeof window === "undefined") {
170
+ return;
171
+ }
172
+ const fileExtension = programmingLanguages[language] || ".file";
173
+ const suggestedFileName = `file-${generateRandomString(3, true)}${fileExtension}`;
174
+ const fileName = window.prompt("Enter file name", suggestedFileName);
175
+ if (!fileName) {
176
+ return;
177
+ }
178
+ const blob = new Blob([value], { type: "text/plain" });
179
+ const url = URL.createObjectURL(blob);
180
+ const link = document.createElement("a");
181
+ link.download = fileName;
182
+ link.href = url;
183
+ link.style.display = "none";
184
+ document.body.appendChild(link);
185
+ link.click();
186
+ document.body.removeChild(link);
187
+ URL.revokeObjectURL(url);
188
+ };
189
+ const onCopy = () => {
190
+ if (isCopied) return;
191
+ copyToClipboard(value);
192
+ };
193
+ return /* @__PURE__ */ jsxs2("div", { className: "copilotKitCodeBlock", children: [
194
+ /* @__PURE__ */ jsxs2("div", { className: "copilotKitCodeBlockToolbar", children: [
195
+ /* @__PURE__ */ jsx3("span", { className: "copilotKitCodeBlockToolbarLanguage", children: language }),
196
+ /* @__PURE__ */ jsxs2("div", { className: "copilotKitCodeBlockToolbarButtons", children: [
197
+ /* @__PURE__ */ jsxs2("button", { className: "copilotKitCodeBlockToolbarButton", onClick: downloadAsFile, children: [
198
+ /* @__PURE__ */ jsx3(DownloadIcon, {}),
199
+ /* @__PURE__ */ jsx3("span", { className: "sr-only", children: "Download" })
200
+ ] }),
201
+ /* @__PURE__ */ jsxs2("button", { className: "copilotKitCodeBlockToolbarButton", onClick: onCopy, children: [
202
+ isCopied ? /* @__PURE__ */ jsx3(CheckIcon, {}) : /* @__PURE__ */ jsx3(CopyIcon, {}),
203
+ /* @__PURE__ */ jsx3("span", { className: "sr-only", children: "Copy code" })
204
+ ] })
205
+ ] })
206
+ ] }),
207
+ /* @__PURE__ */ jsx3(
208
+ SyntaxHighlighter,
209
+ {
210
+ language,
211
+ style: highlightStyle,
212
+ PreTag: "div",
213
+ customStyle: {
214
+ margin: 0,
215
+ borderBottomLeftRadius: "0.375rem",
216
+ borderBottomRightRadius: "0.375rem"
217
+ },
218
+ children: value
219
+ }
220
+ )
221
+ ] });
222
+ });
223
+ CodeBlock.displayName = "CodeBlock";
224
+ var highlightStyle = {
225
+ 'pre[class*="language-"]': {
226
+ color: "#d4d4d4",
227
+ fontSize: "13px",
228
+ textShadow: "none",
229
+ fontFamily: 'Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace',
230
+ direction: "ltr",
231
+ textAlign: "left",
232
+ whiteSpace: "pre",
233
+ wordSpacing: "normal",
234
+ wordBreak: "normal",
235
+ lineHeight: "1.5",
236
+ MozTabSize: "4",
237
+ OTabSize: "4",
238
+ tabSize: "4",
239
+ WebkitHyphens: "none",
240
+ MozHyphens: "none",
241
+ msHyphens: "none",
242
+ hyphens: "none",
243
+ padding: "1em",
244
+ margin: ".5em 0",
245
+ overflow: "auto",
246
+ background: "#1e1e1e"
247
+ },
248
+ 'code[class*="language-"]': {
249
+ color: "#d4d4d4",
250
+ fontSize: "13px",
251
+ textShadow: "none",
252
+ fontFamily: 'Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace',
253
+ direction: "ltr",
254
+ textAlign: "left",
255
+ whiteSpace: "pre",
256
+ wordSpacing: "normal",
257
+ wordBreak: "normal",
258
+ lineHeight: "1.5",
259
+ MozTabSize: "4",
260
+ OTabSize: "4",
261
+ tabSize: "4",
262
+ WebkitHyphens: "none",
263
+ MozHyphens: "none",
264
+ msHyphens: "none",
265
+ hyphens: "none"
266
+ },
267
+ 'pre[class*="language-"]::selection': {
268
+ textShadow: "none",
269
+ background: "#264F78"
270
+ },
271
+ 'code[class*="language-"]::selection': {
272
+ textShadow: "none",
273
+ background: "#264F78"
274
+ },
275
+ 'pre[class*="language-"] *::selection': {
276
+ textShadow: "none",
277
+ background: "#264F78"
278
+ },
279
+ 'code[class*="language-"] *::selection': {
280
+ textShadow: "none",
281
+ background: "#264F78"
282
+ },
283
+ ':not(pre) > code[class*="language-"]': {
284
+ padding: ".1em .3em",
285
+ borderRadius: ".3em",
286
+ color: "#db4c69",
287
+ background: "#1e1e1e"
288
+ },
289
+ ".namespace": {
290
+ Opacity: ".7"
291
+ },
292
+ "doctype.doctype-tag": {
293
+ color: "#569CD6"
294
+ },
295
+ "doctype.name": {
296
+ color: "#9cdcfe"
297
+ },
298
+ comment: {
299
+ color: "#6a9955"
300
+ },
301
+ prolog: {
302
+ color: "#6a9955"
303
+ },
304
+ punctuation: {
305
+ color: "#d4d4d4"
306
+ },
307
+ ".language-html .language-css .token.punctuation": {
308
+ color: "#d4d4d4"
309
+ },
310
+ ".language-html .language-javascript .token.punctuation": {
311
+ color: "#d4d4d4"
312
+ },
313
+ property: {
314
+ color: "#9cdcfe"
315
+ },
316
+ tag: {
317
+ color: "#569cd6"
318
+ },
319
+ boolean: {
320
+ color: "#569cd6"
321
+ },
322
+ number: {
323
+ color: "#b5cea8"
324
+ },
325
+ constant: {
326
+ color: "#9cdcfe"
327
+ },
328
+ symbol: {
329
+ color: "#b5cea8"
330
+ },
331
+ inserted: {
332
+ color: "#b5cea8"
333
+ },
334
+ unit: {
335
+ color: "#b5cea8"
336
+ },
337
+ selector: {
338
+ color: "#d7ba7d"
339
+ },
340
+ "attr-name": {
341
+ color: "#9cdcfe"
342
+ },
343
+ string: {
344
+ color: "#ce9178"
345
+ },
346
+ char: {
347
+ color: "#ce9178"
348
+ },
349
+ builtin: {
350
+ color: "#ce9178"
351
+ },
352
+ deleted: {
353
+ color: "#ce9178"
354
+ },
355
+ ".language-css .token.string.url": {
356
+ textDecoration: "underline"
357
+ },
358
+ operator: {
359
+ color: "#d4d4d4"
360
+ },
361
+ entity: {
362
+ color: "#569cd6"
363
+ },
364
+ "operator.arrow": {
365
+ color: "#569CD6"
366
+ },
367
+ atrule: {
368
+ color: "#ce9178"
369
+ },
370
+ "atrule.rule": {
371
+ color: "#c586c0"
372
+ },
373
+ "atrule.url": {
374
+ color: "#9cdcfe"
375
+ },
376
+ "atrule.url.function": {
377
+ color: "#dcdcaa"
378
+ },
379
+ "atrule.url.punctuation": {
380
+ color: "#d4d4d4"
381
+ },
382
+ keyword: {
383
+ color: "#569CD6"
384
+ },
385
+ "keyword.module": {
386
+ color: "#c586c0"
387
+ },
388
+ "keyword.control-flow": {
389
+ color: "#c586c0"
390
+ },
391
+ function: {
392
+ color: "#dcdcaa"
393
+ },
394
+ "function.maybe-class-name": {
395
+ color: "#dcdcaa"
396
+ },
397
+ regex: {
398
+ color: "#d16969"
399
+ },
400
+ important: {
401
+ color: "#569cd6"
402
+ },
403
+ italic: {
404
+ fontStyle: "italic"
405
+ },
406
+ "class-name": {
407
+ color: "#4ec9b0"
408
+ },
409
+ "maybe-class-name": {
410
+ color: "#4ec9b0"
411
+ },
412
+ console: {
413
+ color: "#9cdcfe"
414
+ },
415
+ parameter: {
416
+ color: "#9cdcfe"
417
+ },
418
+ interpolation: {
419
+ color: "#9cdcfe"
420
+ },
421
+ "punctuation.interpolation-punctuation": {
422
+ color: "#569cd6"
423
+ },
424
+ variable: {
425
+ color: "#9cdcfe"
426
+ },
427
+ "imports.maybe-class-name": {
428
+ color: "#9cdcfe"
429
+ },
430
+ "exports.maybe-class-name": {
431
+ color: "#9cdcfe"
432
+ },
433
+ escape: {
434
+ color: "#d7ba7d"
435
+ },
436
+ "tag.punctuation": {
437
+ color: "#808080"
438
+ },
439
+ cdata: {
440
+ color: "#808080"
441
+ },
442
+ "attr-value": {
443
+ color: "#ce9178"
444
+ },
445
+ "attr-value.punctuation": {
446
+ color: "#ce9178"
447
+ },
448
+ "attr-value.punctuation.attr-equals": {
449
+ color: "#d4d4d4"
450
+ },
451
+ namespace: {
452
+ color: "#4ec9b0"
453
+ },
454
+ 'pre[class*="language-javascript"]': {
455
+ color: "#9cdcfe"
456
+ },
457
+ 'code[class*="language-javascript"]': {
458
+ color: "#9cdcfe"
459
+ },
460
+ 'pre[class*="language-jsx"]': {
461
+ color: "#9cdcfe"
462
+ },
463
+ 'code[class*="language-jsx"]': {
464
+ color: "#9cdcfe"
465
+ },
466
+ 'pre[class*="language-typescript"]': {
467
+ color: "#9cdcfe"
468
+ },
469
+ 'code[class*="language-typescript"]': {
470
+ color: "#9cdcfe"
471
+ },
472
+ 'pre[class*="language-tsx"]': {
473
+ color: "#9cdcfe"
474
+ },
475
+ 'code[class*="language-tsx"]': {
476
+ color: "#9cdcfe"
477
+ },
478
+ 'pre[class*="language-css"]': {
479
+ color: "#ce9178"
480
+ },
481
+ 'code[class*="language-css"]': {
482
+ color: "#ce9178"
483
+ },
484
+ 'pre[class*="language-html"]': {
485
+ color: "#d4d4d4"
486
+ },
487
+ 'code[class*="language-html"]': {
488
+ color: "#d4d4d4"
489
+ },
490
+ ".language-regex .token.anchor": {
491
+ color: "#dcdcaa"
492
+ },
493
+ ".language-html .token.punctuation": {
494
+ color: "#808080"
495
+ },
496
+ 'pre[class*="language-"] > code[class*="language-"]': {
497
+ position: "relative",
498
+ zIndex: "1"
499
+ },
500
+ ".line-highlight.line-highlight": {
501
+ background: "#f7ebc6",
502
+ boxShadow: "inset 5px 0 0 #f7d87c",
503
+ zIndex: "0"
504
+ }
505
+ };
506
+
507
+ // src/components/chat/Markdown.tsx
508
+ import remarkGfm from "remark-gfm";
509
+ import remarkMath from "remark-math";
510
+ import { jsx as jsx4 } from "react/jsx-runtime";
511
+ var MemoizedReactMarkdown = memo2(
512
+ ReactMarkdown,
513
+ (prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className
514
+ );
515
+ var Markdown = ({ content }) => {
516
+ return /* @__PURE__ */ jsx4("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ jsx4(MemoizedReactMarkdown, { components, remarkPlugins: [remarkGfm, remarkMath], children: content }) });
517
+ };
518
+ var components = {
519
+ p({ children }) {
520
+ return /* @__PURE__ */ jsx4("p", { children });
521
+ },
522
+ a(_a) {
523
+ var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
524
+ return /* @__PURE__ */ jsx4(
525
+ "a",
526
+ __spreadProps(__spreadValues({
527
+ style: { color: "blue", textDecoration: "underline" }
528
+ }, props), {
529
+ target: "_blank",
530
+ rel: "noopener noreferrer",
531
+ children
532
+ })
533
+ );
534
+ },
535
+ code(_c) {
536
+ var _d = _c, { children, className, inline } = _d, props = __objRest(_d, ["children", "className", "inline"]);
537
+ if (children.length) {
538
+ if (children[0] == "\u258D") {
539
+ return /* @__PURE__ */ jsx4(
540
+ "span",
541
+ {
542
+ style: {
543
+ animation: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",
544
+ marginTop: "0.25rem"
545
+ },
546
+ children: "\u258D"
547
+ }
548
+ );
549
+ }
550
+ children[0] = children[0].replace("`\u258D`", "\u258D");
551
+ }
552
+ const match = /language-(\w+)/.exec(className || "");
553
+ if (inline) {
554
+ return /* @__PURE__ */ jsx4("code", __spreadProps(__spreadValues({ className }, props), { children }));
555
+ }
556
+ return /* @__PURE__ */ jsx4(
557
+ CodeBlock,
558
+ __spreadValues({
559
+ language: match && match[1] || "",
560
+ value: String(children).replace(/\n$/, "")
561
+ }, props),
562
+ Math.random()
563
+ );
564
+ }
565
+ };
566
+
567
+ // src/components/chat/Messages.tsx
568
+ import { useCopilotContext } from "@copilotkit/react-core";
1
569
  import {
2
- Messages
3
- } from "../../chunk-FOZVHL73.mjs";
4
- import "../../chunk-YQ3D5IQV.mjs";
5
- import "../../chunk-BJPGMY3I.mjs";
6
- import "../../chunk-UPTB2MVO.mjs";
7
- import "../../chunk-FZC7X5PK.mjs";
8
- import "../../chunk-54JAUBUJ.mjs";
9
- import "../../chunk-MRXNTQOX.mjs";
570
+ MessageStatusCode,
571
+ ActionExecutionMessage,
572
+ ResultMessage,
573
+ TextMessage,
574
+ Role
575
+ } from "@copilotkit/runtime-client-gql";
576
+ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
577
+ var Messages = ({ messages, inProgress, children }) => {
578
+ const { chatComponentsCache } = useCopilotContext();
579
+ const context = useChatContext();
580
+ const initialMessages = useMemo2(
581
+ () => makeInitialMessages(context.labels.initial),
582
+ [context.labels.initial]
583
+ );
584
+ messages = [...initialMessages, ...messages];
585
+ const functionResults = {};
586
+ for (let i = 0; i < messages.length; i++) {
587
+ if (messages[i] instanceof ActionExecutionMessage) {
588
+ const id = messages[i].id;
589
+ const resultMessage = messages.find(
590
+ (message) => message instanceof ResultMessage && message.actionExecutionId === id
591
+ );
592
+ if (resultMessage) {
593
+ functionResults[id] = ResultMessage.decodeResult(resultMessage.result || "");
594
+ }
595
+ }
596
+ }
597
+ const messagesEndRef = React3.useRef(null);
598
+ const scrollToBottom = () => {
599
+ if (messagesEndRef.current) {
600
+ messagesEndRef.current.scrollIntoView({
601
+ behavior: "auto"
602
+ });
603
+ }
604
+ };
605
+ useEffect(() => {
606
+ scrollToBottom();
607
+ }, [messages]);
608
+ return /* @__PURE__ */ jsxs3("div", { className: "copilotKitMessages", children: [
609
+ messages.map((message, index) => {
610
+ const isCurrentMessage = index === messages.length - 1;
611
+ if (message instanceof TextMessage && message.role === "user") {
612
+ return /* @__PURE__ */ jsx5("div", { className: "copilotKitMessage copilotKitUserMessage", children: message.content }, index);
613
+ } else if (message instanceof TextMessage && message.role == "assistant") {
614
+ return /* @__PURE__ */ jsx5("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: isCurrentMessage && inProgress && !message.content ? context.icons.spinnerIcon : /* @__PURE__ */ jsx5(Markdown, { content: message.content }) }, index);
615
+ } else if (message instanceof ActionExecutionMessage) {
616
+ if (chatComponentsCache.current !== null && chatComponentsCache.current[message.name]) {
617
+ const render = chatComponentsCache.current[message.name];
618
+ if (typeof render === "string") {
619
+ if (isCurrentMessage && inProgress) {
620
+ return /* @__PURE__ */ jsxs3("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
621
+ context.icons.spinnerIcon,
622
+ " ",
623
+ /* @__PURE__ */ jsx5("span", { className: "inProgressLabel", children: render })
624
+ ] }, index);
625
+ } else {
626
+ return null;
627
+ }
628
+ } else {
629
+ const args = message.arguments;
630
+ let status = "inProgress";
631
+ if (functionResults[message.id] !== void 0) {
632
+ status = "complete";
633
+ } else if (message.status.code !== MessageStatusCode.Pending) {
634
+ status = "executing";
635
+ }
636
+ const toRender = render({
637
+ status,
638
+ args,
639
+ result: functionResults[message.id]
640
+ });
641
+ if (!toRender && status === "complete") {
642
+ return null;
643
+ }
644
+ if (typeof toRender === "string") {
645
+ return /* @__PURE__ */ jsxs3("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
646
+ isCurrentMessage && inProgress && context.icons.spinnerIcon,
647
+ " ",
648
+ toRender
649
+ ] }, index);
650
+ } else {
651
+ return /* @__PURE__ */ jsx5("div", { className: "copilotKitCustomAssistantMessage", children: toRender }, index);
652
+ }
653
+ }
654
+ } else if (!inProgress || !isCurrentMessage) {
655
+ return null;
656
+ } else {
657
+ return /* @__PURE__ */ jsx5("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
658
+ }
659
+ }
660
+ }),
661
+ /* @__PURE__ */ jsx5("footer", { ref: messagesEndRef, children })
662
+ ] });
663
+ };
664
+ function makeInitialMessages(initial) {
665
+ let initialArray = [];
666
+ if (initial) {
667
+ if (Array.isArray(initial)) {
668
+ initialArray.push(...initial);
669
+ } else {
670
+ initialArray.push(initial);
671
+ }
672
+ }
673
+ return initialArray.map(
674
+ (message) => new TextMessage({
675
+ role: Role.Assistant,
676
+ content: message
677
+ })
678
+ );
679
+ }
10
680
  export {
11
681
  Messages
12
682
  };