@copilotkit/react-ui 1.8.13-next.1 → 1.8.13-next.3
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.
- package/CHANGELOG.md +18 -0
- package/dist/{chunk-RVLCPPEL.mjs → chunk-5INP2EWU.mjs} +6 -4
- package/dist/chunk-5INP2EWU.mjs.map +1 -0
- package/dist/{chunk-XFCMZH2H.mjs → chunk-6VUDBDUN.mjs} +2 -2
- package/dist/{chunk-24TDU7MY.mjs → chunk-ALWZ35SI.mjs} +2 -2
- package/dist/{chunk-IIRQWGWV.mjs → chunk-B3D7U7TJ.mjs} +5 -3
- package/dist/chunk-B3D7U7TJ.mjs.map +1 -0
- package/dist/{chunk-KQ44Z255.mjs → chunk-EMIYIMQ6.mjs} +4 -4
- package/dist/{chunk-ZDKVXAL3.mjs → chunk-FWKHST6I.mjs} +75 -39
- package/dist/chunk-FWKHST6I.mjs.map +1 -0
- package/dist/{chunk-NWE7CLTB.mjs → chunk-IAHSHPRJ.mjs} +22 -21
- package/dist/chunk-IAHSHPRJ.mjs.map +1 -0
- package/dist/{chunk-XZNY26GH.mjs → chunk-IMBPSLL4.mjs} +3 -3
- package/dist/chunk-IMBPSLL4.mjs.map +1 -0
- package/dist/{chunk-MDMNZ6JL.mjs → chunk-JU3HNL5N.mjs} +2 -2
- package/dist/{chunk-DSQGQJI4.mjs → chunk-MPZAMNCN.mjs} +2 -2
- package/dist/{chunk-K7SXHJRT.mjs → chunk-QEZ3YYLO.mjs} +2 -2
- package/dist/chunk-QGSPTXOV.mjs +24 -0
- package/dist/chunk-QGSPTXOV.mjs.map +1 -0
- package/dist/chunk-SC6JRFAJ.mjs +1 -0
- package/dist/{chunk-LUPGADWY.mjs → chunk-UKWBNVMQ.mjs} +2 -2
- package/dist/{chunk-OZXUB3V7.mjs → chunk-XMNTLIK5.mjs} +5 -4
- package/dist/chunk-XMNTLIK5.mjs.map +1 -0
- package/dist/chunk-YTXEWDNC.mjs +117 -0
- package/dist/chunk-YTXEWDNC.mjs.map +1 -0
- package/dist/components/chat/Button.d.ts +2 -0
- package/dist/components/chat/Chat.d.ts +11 -2
- package/dist/components/chat/Chat.js +117 -50
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +13 -12
- package/dist/components/chat/Header.d.ts +2 -0
- package/dist/components/chat/Input.d.ts +2 -0
- package/dist/components/chat/Input.mjs +2 -2
- package/dist/components/chat/Markdown.d.ts +3 -1
- package/dist/components/chat/Markdown.js +65 -20
- package/dist/components/chat/Markdown.js.map +1 -1
- package/dist/components/chat/Markdown.mjs +1 -1
- package/dist/components/chat/Messages.d.ts +2 -1
- package/dist/components/chat/Messages.js +4 -2
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +1 -1
- package/dist/components/chat/Modal.d.ts +2 -2
- package/dist/components/chat/Modal.js +186 -88
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +19 -18
- package/dist/components/chat/Popup.d.ts +1 -1
- package/dist/components/chat/Popup.js +188 -90
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +20 -19
- package/dist/components/chat/Sidebar.d.ts +1 -1
- package/dist/components/chat/Sidebar.js +188 -90
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +20 -19
- package/dist/components/chat/Suggestion.d.ts +8 -3
- package/dist/components/chat/Suggestion.js +2 -2
- package/dist/components/chat/Suggestion.js.map +1 -1
- package/dist/components/chat/Suggestion.mjs +1 -1
- package/dist/components/chat/Suggestions.d.ts +9 -0
- package/dist/components/chat/Suggestions.js +73 -0
- package/dist/components/chat/Suggestions.js.map +1 -0
- package/dist/components/chat/Suggestions.mjs +10 -0
- package/dist/components/chat/Suggestions.mjs.map +1 -0
- package/dist/components/chat/Window.d.ts +2 -0
- package/dist/components/chat/index.d.ts +6 -3
- package/dist/components/chat/index.js +194 -92
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +31 -24
- package/dist/components/chat/messages/AssistantMessage.d.ts +2 -0
- package/dist/components/chat/messages/AssistantMessage.js +68 -22
- package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
- package/dist/components/chat/messages/AssistantMessage.mjs +2 -2
- package/dist/components/chat/messages/RenderActionExecutionMessage.d.ts +2 -0
- package/dist/components/chat/messages/RenderActionExecutionMessage.js +68 -22
- package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +3 -3
- package/dist/components/chat/messages/RenderAgentStateMessage.d.ts +2 -0
- package/dist/components/chat/messages/RenderAgentStateMessage.js +68 -22
- package/dist/components/chat/messages/RenderAgentStateMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderAgentStateMessage.mjs +3 -3
- package/dist/components/chat/messages/RenderImageMessage.d.ts +2 -0
- package/dist/components/chat/messages/RenderImageMessage.js +68 -22
- package/dist/components/chat/messages/RenderImageMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderImageMessage.mjs +3 -3
- package/dist/components/chat/messages/RenderResultMessage.d.ts +2 -0
- package/dist/components/chat/messages/RenderResultMessage.js +68 -22
- package/dist/components/chat/messages/RenderResultMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderResultMessage.mjs +3 -3
- package/dist/components/chat/messages/RenderTextMessage.d.ts +2 -0
- package/dist/components/chat/messages/RenderTextMessage.js +72 -24
- package/dist/components/chat/messages/RenderTextMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderTextMessage.mjs +3 -3
- package/dist/components/chat/messages/UserMessage.d.ts +2 -0
- package/dist/components/chat/props.d.ts +27 -1
- package/dist/components/chat/props.js.map +1 -1
- package/dist/components/index.d.ts +6 -3
- package/dist/components/index.js +194 -92
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +35 -28
- package/dist/index.css +32 -28
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.js +194 -92
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +35 -28
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +11 -10
- package/src/components/chat/Chat.tsx +21 -13
- package/src/components/chat/Markdown.tsx +86 -29
- package/src/components/chat/Messages.tsx +2 -0
- package/src/components/chat/Modal.tsx +4 -0
- package/src/components/chat/Suggestion.tsx +10 -3
- package/src/components/chat/Suggestions.tsx +20 -0
- package/src/components/chat/index.tsx +2 -0
- package/src/components/chat/messages/AssistantMessage.tsx +2 -1
- package/src/components/chat/messages/RenderTextMessage.tsx +2 -0
- package/src/components/chat/props.ts +29 -0
- package/src/css/markdown.css +33 -28
- package/src/types/index.ts +1 -0
- package/dist/chunk-ABHUX6T6.mjs +0 -72
- package/dist/chunk-ABHUX6T6.mjs.map +0 -1
- package/dist/chunk-IIRQWGWV.mjs.map +0 -1
- package/dist/chunk-NWE7CLTB.mjs.map +0 -1
- package/dist/chunk-OZXUB3V7.mjs.map +0 -1
- package/dist/chunk-PXEVB7IK.mjs +0 -1
- package/dist/chunk-RVLCPPEL.mjs.map +0 -1
- package/dist/chunk-XZNY26GH.mjs.map +0 -1
- package/dist/chunk-ZDKVXAL3.mjs.map +0 -1
- /package/dist/{chunk-XFCMZH2H.mjs.map → chunk-6VUDBDUN.mjs.map} +0 -0
- /package/dist/{chunk-24TDU7MY.mjs.map → chunk-ALWZ35SI.mjs.map} +0 -0
- /package/dist/{chunk-KQ44Z255.mjs.map → chunk-EMIYIMQ6.mjs.map} +0 -0
- /package/dist/{chunk-MDMNZ6JL.mjs.map → chunk-JU3HNL5N.mjs.map} +0 -0
- /package/dist/{chunk-DSQGQJI4.mjs.map → chunk-MPZAMNCN.mjs.map} +0 -0
- /package/dist/{chunk-K7SXHJRT.mjs.map → chunk-QEZ3YYLO.mjs.map} +0 -0
- /package/dist/{chunk-PXEVB7IK.mjs.map → chunk-SC6JRFAJ.mjs.map} +0 -0
- /package/dist/{chunk-LUPGADWY.mjs.map → chunk-UKWBNVMQ.mjs.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Markdown
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YTXEWDNC.mjs";
|
|
4
4
|
import {
|
|
5
5
|
useChatContext
|
|
6
6
|
} from "./chunk-IEMQ2SQW.mjs";
|
|
@@ -18,7 +18,8 @@ var AssistantMessage = (props) => {
|
|
|
18
18
|
onCopy,
|
|
19
19
|
onThumbsUp,
|
|
20
20
|
onThumbsDown,
|
|
21
|
-
isCurrentMessage
|
|
21
|
+
isCurrentMessage,
|
|
22
|
+
markdownTagRenderers
|
|
22
23
|
} = props;
|
|
23
24
|
const [copied, setCopied] = useState(false);
|
|
24
25
|
const handleCopy = () => {
|
|
@@ -51,7 +52,7 @@ var AssistantMessage = (props) => {
|
|
|
51
52
|
const LoadingIcon = () => /* @__PURE__ */ jsx("span", { children: icons.activityIcon });
|
|
52
53
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
53
54
|
(message || isLoading) && /* @__PURE__ */ jsxs("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
54
|
-
message && /* @__PURE__ */ jsx(Markdown, { content: message || "" }),
|
|
55
|
+
message && /* @__PURE__ */ jsx(Markdown, { content: message || "", components: markdownTagRenderers }),
|
|
55
56
|
isLoading && /* @__PURE__ */ jsx(LoadingIcon, {}),
|
|
56
57
|
message && !isLoading && /* @__PURE__ */ jsxs(
|
|
57
58
|
"div",
|
|
@@ -109,4 +110,4 @@ var AssistantMessage = (props) => {
|
|
|
109
110
|
export {
|
|
110
111
|
AssistantMessage
|
|
111
112
|
};
|
|
112
|
-
//# sourceMappingURL=chunk-
|
|
113
|
+
//# sourceMappingURL=chunk-XMNTLIK5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat/messages/AssistantMessage.tsx"],"sourcesContent":["import { AssistantMessageProps } from \"../props\";\nimport { useChatContext } from \"../ChatContext\";\nimport { Markdown } from \"../Markdown\";\nimport { useState } from \"react\";\n\nexport const AssistantMessage = (props: AssistantMessageProps) => {\n const { icons, labels } = useChatContext();\n const {\n message,\n isLoading,\n subComponent,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n isCurrentMessage,\n markdownTagRenderers,\n } = props;\n const [copied, setCopied] = useState(false);\n\n const handleCopy = () => {\n if (message && onCopy) {\n navigator.clipboard.writeText(message);\n setCopied(true);\n onCopy(message);\n setTimeout(() => setCopied(false), 2000);\n } else if (message) {\n navigator.clipboard.writeText(message);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }\n };\n\n const handleRegenerate = () => {\n if (onRegenerate) {\n onRegenerate();\n }\n };\n\n const handleThumbsUp = () => {\n if (onThumbsUp && message) {\n onThumbsUp(message);\n }\n };\n\n const handleThumbsDown = () => {\n if (onThumbsDown && message) {\n onThumbsDown(message);\n }\n };\n\n const LoadingIcon = () => <span>{icons.activityIcon}</span>;\n\n return (\n <>\n {(message || isLoading) && (\n <div className=\"copilotKitMessage copilotKitAssistantMessage\">\n {message && <Markdown content={message || \"\"} components={markdownTagRenderers} />}\n {isLoading && <LoadingIcon />}\n\n {message && !isLoading && (\n <div\n className={`copilotKitMessageControls ${isCurrentMessage ? \"currentMessage\" : \"\"}`}\n >\n <button\n className=\"copilotKitMessageControlButton\"\n onClick={handleRegenerate}\n aria-label={labels.regenerateResponse}\n title={labels.regenerateResponse}\n >\n {icons.regenerateIcon}\n </button>\n <button\n className=\"copilotKitMessageControlButton\"\n onClick={handleCopy}\n aria-label={labels.copyToClipboard}\n title={labels.copyToClipboard}\n >\n {copied ? (\n <span style={{ fontSize: \"10px\", fontWeight: \"bold\" }}>✓</span>\n ) : (\n icons.copyIcon\n )}\n </button>\n {onThumbsUp && (\n <button\n className=\"copilotKitMessageControlButton\"\n onClick={handleThumbsUp}\n aria-label={labels.thumbsUp}\n title={labels.thumbsUp}\n >\n {icons.thumbsUpIcon}\n </button>\n )}\n {onThumbsDown && (\n <button\n className=\"copilotKitMessageControlButton\"\n onClick={handleThumbsDown}\n aria-label={labels.thumbsDown}\n title={labels.thumbsDown}\n >\n {icons.thumbsDownIcon}\n </button>\n )}\n </div>\n )}\n </div>\n )}\n <div style={{ marginBottom: \"0.5rem\" }}>{subComponent}</div>\n </>\n );\n};\n"],"mappings":";;;;;;;;AAGA,SAAS,gBAAgB;AAgDG,SAGxB,UAHwB,KAUhB,YAVgB;AA9CrB,IAAM,mBAAmB,CAAC,UAAiC;AAChE,QAAM,EAAE,OAAO,OAAO,IAAI,eAAe;AACzC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAE1C,QAAM,aAAa,MAAM;AACvB,QAAI,WAAW,QAAQ;AACrB,gBAAU,UAAU,UAAU,OAAO;AACrC,gBAAU,IAAI;AACd,aAAO,OAAO;AACd,iBAAW,MAAM,UAAU,KAAK,GAAG,GAAI;AAAA,IACzC,WAAW,SAAS;AAClB,gBAAU,UAAU,UAAU,OAAO;AACrC,gBAAU,IAAI;AACd,iBAAW,MAAM,UAAU,KAAK,GAAG,GAAI;AAAA,IACzC;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM;AAC7B,QAAI,cAAc;AAChB,mBAAa;AAAA,IACf;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM;AAC3B,QAAI,cAAc,SAAS;AACzB,iBAAW,OAAO;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM;AAC7B,QAAI,gBAAgB,SAAS;AAC3B,mBAAa,OAAO;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,cAAc,MAAM,oBAAC,UAAM,gBAAM,cAAa;AAEpD,SACE,iCACI;AAAA,gBAAW,cACX,qBAAC,SAAI,WAAU,gDACZ;AAAA,iBAAW,oBAAC,YAAS,SAAS,WAAW,IAAI,YAAY,sBAAsB;AAAA,MAC/E,aAAa,oBAAC,eAAY;AAAA,MAE1B,WAAW,CAAC,aACX;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,6BAA6B,mBAAmB,mBAAmB;AAAA,UAE9E;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAY,OAAO;AAAA,gBACnB,OAAO,OAAO;AAAA,gBAEb,gBAAM;AAAA;AAAA,YACT;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAY,OAAO;AAAA,gBACnB,OAAO,OAAO;AAAA,gBAEb,mBACC,oBAAC,UAAK,OAAO,EAAE,UAAU,QAAQ,YAAY,OAAO,GAAG,oBAAC,IAExD,MAAM;AAAA;AAAA,YAEV;AAAA,YACC,cACC;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAY,OAAO;AAAA,gBACnB,OAAO,OAAO;AAAA,gBAEb,gBAAM;AAAA;AAAA,YACT;AAAA,YAED,gBACC;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAY,OAAO;AAAA,gBACnB,OAAO,OAAO;AAAA,gBAEb,gBAAM;AAAA;AAAA,YACT;AAAA;AAAA;AAAA,MAEJ;AAAA,OAEJ;AAAA,IAEF,oBAAC,SAAI,OAAO,EAAE,cAAc,SAAS,GAAI,wBAAa;AAAA,KACxD;AAEJ;","names":[]}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CodeBlock
|
|
3
|
+
} from "./chunk-KENCH7RN.mjs";
|
|
4
|
+
import {
|
|
5
|
+
__objRest,
|
|
6
|
+
__spreadProps,
|
|
7
|
+
__spreadValues
|
|
8
|
+
} from "./chunk-MRXNTQOX.mjs";
|
|
9
|
+
|
|
10
|
+
// src/components/chat/Markdown.tsx
|
|
11
|
+
import { memo } from "react";
|
|
12
|
+
import ReactMarkdown from "react-markdown";
|
|
13
|
+
import remarkGfm from "remark-gfm";
|
|
14
|
+
import remarkMath from "remark-math";
|
|
15
|
+
import rehypeRaw from "rehype-raw";
|
|
16
|
+
import { jsx } from "react/jsx-runtime";
|
|
17
|
+
var defaultComponents = {
|
|
18
|
+
a(_a) {
|
|
19
|
+
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
|
20
|
+
return /* @__PURE__ */ jsx("a", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { target: "_blank", rel: "noopener noreferrer", children }));
|
|
21
|
+
},
|
|
22
|
+
// @ts-expect-error -- inline
|
|
23
|
+
code(_c) {
|
|
24
|
+
var _d = _c, { children, className, inline } = _d, props = __objRest(_d, ["children", "className", "inline"]);
|
|
25
|
+
if (Array.isArray(children) && children.length) {
|
|
26
|
+
if (children[0] == "\u258D") {
|
|
27
|
+
return /* @__PURE__ */ jsx(
|
|
28
|
+
"span",
|
|
29
|
+
{
|
|
30
|
+
style: {
|
|
31
|
+
animation: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",
|
|
32
|
+
marginTop: "0.25rem"
|
|
33
|
+
},
|
|
34
|
+
children: "\u258D"
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
children[0] = (children == null ? void 0 : children[0]).replace("`\u258D`", "\u258D");
|
|
39
|
+
}
|
|
40
|
+
const match = /language-(\w+)/.exec(className || "");
|
|
41
|
+
if (inline) {
|
|
42
|
+
return /* @__PURE__ */ jsx("code", __spreadProps(__spreadValues({ className }, props), { children }));
|
|
43
|
+
}
|
|
44
|
+
return /* @__PURE__ */ jsx(
|
|
45
|
+
CodeBlock,
|
|
46
|
+
__spreadValues({
|
|
47
|
+
language: match && match[1] || "",
|
|
48
|
+
value: String(children).replace(/\n$/, "")
|
|
49
|
+
}, props),
|
|
50
|
+
Math.random()
|
|
51
|
+
);
|
|
52
|
+
},
|
|
53
|
+
h1: (_e) => {
|
|
54
|
+
var _f = _e, { children } = _f, props = __objRest(_f, ["children"]);
|
|
55
|
+
return /* @__PURE__ */ jsx("h1", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
56
|
+
},
|
|
57
|
+
h2: (_g) => {
|
|
58
|
+
var _h = _g, { children } = _h, props = __objRest(_h, ["children"]);
|
|
59
|
+
return /* @__PURE__ */ jsx("h2", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
60
|
+
},
|
|
61
|
+
h3: (_i) => {
|
|
62
|
+
var _j = _i, { children } = _j, props = __objRest(_j, ["children"]);
|
|
63
|
+
return /* @__PURE__ */ jsx("h3", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
64
|
+
},
|
|
65
|
+
h4: (_k) => {
|
|
66
|
+
var _l = _k, { children } = _l, props = __objRest(_l, ["children"]);
|
|
67
|
+
return /* @__PURE__ */ jsx("h4", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
68
|
+
},
|
|
69
|
+
h5: (_m) => {
|
|
70
|
+
var _n = _m, { children } = _n, props = __objRest(_n, ["children"]);
|
|
71
|
+
return /* @__PURE__ */ jsx("h5", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
72
|
+
},
|
|
73
|
+
h6: (_o) => {
|
|
74
|
+
var _p = _o, { children } = _p, props = __objRest(_p, ["children"]);
|
|
75
|
+
return /* @__PURE__ */ jsx("h6", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
76
|
+
},
|
|
77
|
+
p: (_q) => {
|
|
78
|
+
var _r = _q, { children } = _r, props = __objRest(_r, ["children"]);
|
|
79
|
+
return /* @__PURE__ */ jsx("p", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
80
|
+
},
|
|
81
|
+
pre: (_s) => {
|
|
82
|
+
var _t = _s, { children } = _t, props = __objRest(_t, ["children"]);
|
|
83
|
+
return /* @__PURE__ */ jsx("pre", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
84
|
+
},
|
|
85
|
+
blockquote: (_u) => {
|
|
86
|
+
var _v = _u, { children } = _v, props = __objRest(_v, ["children"]);
|
|
87
|
+
return /* @__PURE__ */ jsx("blockquote", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
88
|
+
},
|
|
89
|
+
ul: (_w) => {
|
|
90
|
+
var _x = _w, { children } = _x, props = __objRest(_x, ["children"]);
|
|
91
|
+
return /* @__PURE__ */ jsx("ul", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
92
|
+
},
|
|
93
|
+
li: (_y) => {
|
|
94
|
+
var _z = _y, { children } = _z, props = __objRest(_z, ["children"]);
|
|
95
|
+
return /* @__PURE__ */ jsx("li", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
var MemoizedReactMarkdown = memo(
|
|
99
|
+
ReactMarkdown,
|
|
100
|
+
(prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.components === nextProps.components
|
|
101
|
+
);
|
|
102
|
+
var Markdown = ({ content, components }) => {
|
|
103
|
+
return /* @__PURE__ */ jsx("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ jsx(
|
|
104
|
+
MemoizedReactMarkdown,
|
|
105
|
+
{
|
|
106
|
+
components: __spreadValues(__spreadValues({}, defaultComponents), components),
|
|
107
|
+
remarkPlugins: [remarkGfm, remarkMath],
|
|
108
|
+
rehypePlugins: [rehypeRaw],
|
|
109
|
+
children: content
|
|
110
|
+
}
|
|
111
|
+
) });
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export {
|
|
115
|
+
Markdown
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=chunk-YTXEWDNC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat/Markdown.tsx"],"sourcesContent":["import { FC, memo } from \"react\";\nimport ReactMarkdown, { Options, Components } from \"react-markdown\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\nimport rehypeRaw from \"rehype-raw\";\n\nconst defaultComponents: Components = {\n a({ children, ...props }) {\n return (\n <a className=\"copilotKitMarkdownElement\" {...props} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n );\n },\n // @ts-expect-error -- inline\n code({ children, className, inline, ...props }) {\n if (Array.isArray(children) && children.length) {\n if (children[0] == \"▍\") {\n return (\n <span\n style={{\n animation: \"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\",\n marginTop: \"0.25rem\",\n }}\n >\n ▍\n </span>\n );\n }\n\n children[0] = (children?.[0] as string).replace(\"`▍`\", \"▍\");\n }\n\n const match = /language-(\\w+)/.exec(className || \"\");\n\n if (inline) {\n return (\n <code className={className} {...props}>\n {children}\n </code>\n );\n }\n\n return (\n <CodeBlock\n key={Math.random()}\n language={(match && match[1]) || \"\"}\n value={String(children).replace(/\\n$/, \"\")}\n {...props}\n />\n );\n },\n h1: ({ children, ...props }) => (\n <h1 className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </h1>\n ),\n h2: ({ children, ...props }) => (\n <h2 className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </h2>\n ),\n h3: ({ children, ...props }) => (\n <h3 className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </h3>\n ),\n h4: ({ children, ...props }) => (\n <h4 className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </h4>\n ),\n h5: ({ children, ...props }) => (\n <h5 className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </h5>\n ),\n h6: ({ children, ...props }) => (\n <h6 className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </h6>\n ),\n p: ({ children, ...props }) => (\n <p className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </p>\n ),\n pre: ({ children, ...props }) => (\n <pre className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </pre>\n ),\n blockquote: ({ children, ...props }) => (\n <blockquote className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </blockquote>\n ),\n ul: ({ children, ...props }) => (\n <ul className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </ul>\n ),\n li: ({ children, ...props }) => (\n <li className=\"copilotKitMarkdownElement\" {...props}>\n {children}\n </li>\n ),\n};\n\nconst MemoizedReactMarkdown: FC<Options> = memo(\n ReactMarkdown,\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children && prevProps.components === nextProps.components,\n);\n\ntype MarkdownProps = {\n content: string;\n components?: Components;\n};\n\nexport const Markdown = ({ content, components }: MarkdownProps) => {\n return (\n <div className=\"copilotKitMarkdown\">\n <MemoizedReactMarkdown\n components={{ ...defaultComponents, ...components }}\n remarkPlugins={[remarkGfm, remarkMath]}\n rehypePlugins={[rehypeRaw]}\n >\n {content}\n </MemoizedReactMarkdown>\n </div>\n );\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ButtonProps } from './props.js';
|
|
3
3
|
import '@copilotkit/runtime-client-gql';
|
|
4
|
+
import '../../types/suggestions.js';
|
|
5
|
+
import 'react';
|
|
4
6
|
|
|
5
7
|
declare const Button: ({}: ButtonProps) => react_jsx_runtime.JSX.Element;
|
|
6
8
|
|
|
@@ -4,7 +4,7 @@ import React__default from 'react';
|
|
|
4
4
|
import { SystemMessageFunction, HintFunction } from '@copilotkit/react-core';
|
|
5
5
|
import { CopilotChatSuggestion } from '../../types/suggestions.js';
|
|
6
6
|
import { Message } from '@copilotkit/runtime-client-gql';
|
|
7
|
-
import { AssistantMessageProps, UserMessageProps, MessagesProps, RenderMessageProps, InputProps } from './props.js';
|
|
7
|
+
import { ComponentsMap, AssistantMessageProps, UserMessageProps, MessagesProps, RenderMessageProps, RenderSuggestionsListProps, InputProps } from './props.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Props for CopilotChat component.
|
|
@@ -51,6 +51,11 @@ interface CopilotChatProps {
|
|
|
51
51
|
* A callback function for thumbs down feedback
|
|
52
52
|
*/
|
|
53
53
|
onThumbsDown?: (message: string) => void;
|
|
54
|
+
/**
|
|
55
|
+
* A list of markdown components to render in assistant message.
|
|
56
|
+
* Useful when you want to render custom elements in the message (e.g a reference tag element)
|
|
57
|
+
*/
|
|
58
|
+
markdownTagRenderers?: ComponentsMap;
|
|
54
59
|
/**
|
|
55
60
|
* Icons can be used to set custom icons for the chat window.
|
|
56
61
|
*/
|
|
@@ -107,6 +112,10 @@ interface CopilotChatProps {
|
|
|
107
112
|
* A custom RenderImageMessage component to use instead of the default.
|
|
108
113
|
*/
|
|
109
114
|
RenderImageMessage?: React__default.ComponentType<RenderMessageProps>;
|
|
115
|
+
/**
|
|
116
|
+
* A custom suggestions list component to use instead of the default.
|
|
117
|
+
*/
|
|
118
|
+
RenderSuggestionsList?: React__default.ComponentType<RenderSuggestionsListProps>;
|
|
110
119
|
/**
|
|
111
120
|
* A custom Input component to use instead of the default.
|
|
112
121
|
*/
|
|
@@ -166,7 +175,7 @@ type ImageUpload = {
|
|
|
166
175
|
contentType: string;
|
|
167
176
|
bytes: string;
|
|
168
177
|
};
|
|
169
|
-
declare function CopilotChat({ instructions, onSubmitMessage, makeSystemMessage, onInProgress, onStopGeneration, onReloadMessages, onRegenerate, onCopy, onThumbsUp, onThumbsDown, Messages, RenderTextMessage, RenderActionExecutionMessage, RenderAgentStateMessage, RenderResultMessage, RenderImageMessage, Input, className, icons, labels, AssistantMessage, UserMessage, imageUploadsEnabled, inputFileAccept, }: CopilotChatProps): react_jsx_runtime.JSX.Element;
|
|
178
|
+
declare function CopilotChat({ instructions, onSubmitMessage, makeSystemMessage, onInProgress, onStopGeneration, onReloadMessages, onRegenerate, onCopy, onThumbsUp, onThumbsDown, markdownTagRenderers, Messages, RenderTextMessage, RenderActionExecutionMessage, RenderAgentStateMessage, RenderResultMessage, RenderImageMessage, RenderSuggestionsList, Input, className, icons, labels, AssistantMessage, UserMessage, imageUploadsEnabled, inputFileAccept, }: CopilotChatProps): react_jsx_runtime.JSX.Element;
|
|
170
179
|
declare function WrappedCopilotChat({ children, icons, labels, className, }: {
|
|
171
180
|
children: React__default.ReactNode;
|
|
172
181
|
icons?: CopilotChatIcons;
|
|
@@ -413,7 +413,8 @@ var Messages = ({
|
|
|
413
413
|
onRegenerate,
|
|
414
414
|
onCopy,
|
|
415
415
|
onThumbsUp,
|
|
416
|
-
onThumbsDown
|
|
416
|
+
onThumbsDown,
|
|
417
|
+
markdownTagRenderers
|
|
417
418
|
}) => {
|
|
418
419
|
const context = useChatContext();
|
|
419
420
|
const initialMessages = (0, import_react2.useMemo)(
|
|
@@ -452,7 +453,8 @@ var Messages = ({
|
|
|
452
453
|
onRegenerate,
|
|
453
454
|
onCopy,
|
|
454
455
|
onThumbsUp,
|
|
455
|
-
onThumbsDown
|
|
456
|
+
onThumbsDown,
|
|
457
|
+
markdownTagRenderers
|
|
456
458
|
},
|
|
457
459
|
index
|
|
458
460
|
);
|
|
@@ -1281,31 +1283,17 @@ var highlightStyle = {
|
|
|
1281
1283
|
// src/components/chat/Markdown.tsx
|
|
1282
1284
|
var import_remark_gfm = __toESM(require("remark-gfm"));
|
|
1283
1285
|
var import_remark_math = __toESM(require("remark-math"));
|
|
1286
|
+
var import_rehype_raw = __toESM(require("rehype-raw"));
|
|
1284
1287
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1285
|
-
var
|
|
1286
|
-
import_react_markdown.default,
|
|
1287
|
-
(prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className
|
|
1288
|
-
);
|
|
1289
|
-
var Markdown = ({ content }) => {
|
|
1290
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(MemoizedReactMarkdown, { components, remarkPlugins: [import_remark_gfm.default, import_remark_math.default], children: content }) });
|
|
1291
|
-
};
|
|
1292
|
-
var components = {
|
|
1288
|
+
var defaultComponents = {
|
|
1293
1289
|
a(_a) {
|
|
1294
1290
|
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
|
1295
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1296
|
-
"a",
|
|
1297
|
-
__spreadProps(__spreadValues({
|
|
1298
|
-
style: { color: "blue", textDecoration: "underline" }
|
|
1299
|
-
}, props), {
|
|
1300
|
-
target: "_blank",
|
|
1301
|
-
rel: "noopener noreferrer",
|
|
1302
|
-
children
|
|
1303
|
-
})
|
|
1304
|
-
);
|
|
1291
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("a", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { target: "_blank", rel: "noopener noreferrer", children }));
|
|
1305
1292
|
},
|
|
1293
|
+
// @ts-expect-error -- inline
|
|
1306
1294
|
code(_c) {
|
|
1307
1295
|
var _d = _c, { children, className, inline } = _d, props = __objRest(_d, ["children", "className", "inline"]);
|
|
1308
|
-
if (children.length) {
|
|
1296
|
+
if (Array.isArray(children) && children.length) {
|
|
1309
1297
|
if (children[0] == "\u258D") {
|
|
1310
1298
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1311
1299
|
"span",
|
|
@@ -1318,7 +1306,7 @@ var components = {
|
|
|
1318
1306
|
}
|
|
1319
1307
|
);
|
|
1320
1308
|
}
|
|
1321
|
-
children[0] = children[0].replace("`\u258D`", "\u258D");
|
|
1309
|
+
children[0] = (children == null ? void 0 : children[0]).replace("`\u258D`", "\u258D");
|
|
1322
1310
|
}
|
|
1323
1311
|
const match = /language-(\w+)/.exec(className || "");
|
|
1324
1312
|
if (inline) {
|
|
@@ -1332,8 +1320,67 @@ var components = {
|
|
|
1332
1320
|
}, props),
|
|
1333
1321
|
Math.random()
|
|
1334
1322
|
);
|
|
1323
|
+
},
|
|
1324
|
+
h1: (_e) => {
|
|
1325
|
+
var _f = _e, { children } = _f, props = __objRest(_f, ["children"]);
|
|
1326
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h1", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1327
|
+
},
|
|
1328
|
+
h2: (_g) => {
|
|
1329
|
+
var _h = _g, { children } = _h, props = __objRest(_h, ["children"]);
|
|
1330
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h2", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1331
|
+
},
|
|
1332
|
+
h3: (_i) => {
|
|
1333
|
+
var _j = _i, { children } = _j, props = __objRest(_j, ["children"]);
|
|
1334
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1335
|
+
},
|
|
1336
|
+
h4: (_k) => {
|
|
1337
|
+
var _l = _k, { children } = _l, props = __objRest(_l, ["children"]);
|
|
1338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h4", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1339
|
+
},
|
|
1340
|
+
h5: (_m) => {
|
|
1341
|
+
var _n = _m, { children } = _n, props = __objRest(_n, ["children"]);
|
|
1342
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h5", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1343
|
+
},
|
|
1344
|
+
h6: (_o) => {
|
|
1345
|
+
var _p = _o, { children } = _p, props = __objRest(_p, ["children"]);
|
|
1346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h6", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1347
|
+
},
|
|
1348
|
+
p: (_q) => {
|
|
1349
|
+
var _r = _q, { children } = _r, props = __objRest(_r, ["children"]);
|
|
1350
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1351
|
+
},
|
|
1352
|
+
pre: (_s) => {
|
|
1353
|
+
var _t = _s, { children } = _t, props = __objRest(_t, ["children"]);
|
|
1354
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("pre", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1355
|
+
},
|
|
1356
|
+
blockquote: (_u) => {
|
|
1357
|
+
var _v = _u, { children } = _v, props = __objRest(_v, ["children"]);
|
|
1358
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("blockquote", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1359
|
+
},
|
|
1360
|
+
ul: (_w) => {
|
|
1361
|
+
var _x = _w, { children } = _x, props = __objRest(_x, ["children"]);
|
|
1362
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("ul", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1363
|
+
},
|
|
1364
|
+
li: (_y) => {
|
|
1365
|
+
var _z = _y, { children } = _z, props = __objRest(_z, ["children"]);
|
|
1366
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("li", __spreadProps(__spreadValues({ className: "copilotKitMarkdownElement" }, props), { children }));
|
|
1335
1367
|
}
|
|
1336
1368
|
};
|
|
1369
|
+
var MemoizedReactMarkdown = (0, import_react7.memo)(
|
|
1370
|
+
import_react_markdown.default,
|
|
1371
|
+
(prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.components === nextProps.components
|
|
1372
|
+
);
|
|
1373
|
+
var Markdown = ({ content, components }) => {
|
|
1374
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1375
|
+
MemoizedReactMarkdown,
|
|
1376
|
+
{
|
|
1377
|
+
components: __spreadValues(__spreadValues({}, defaultComponents), components),
|
|
1378
|
+
remarkPlugins: [import_remark_gfm.default, import_remark_math.default],
|
|
1379
|
+
rehypePlugins: [import_rehype_raw.default],
|
|
1380
|
+
children: content
|
|
1381
|
+
}
|
|
1382
|
+
) });
|
|
1383
|
+
};
|
|
1337
1384
|
|
|
1338
1385
|
// src/components/chat/messages/AssistantMessage.tsx
|
|
1339
1386
|
var import_react8 = require("react");
|
|
@@ -1348,7 +1395,8 @@ var AssistantMessage = (props) => {
|
|
|
1348
1395
|
onCopy,
|
|
1349
1396
|
onThumbsUp,
|
|
1350
1397
|
onThumbsDown,
|
|
1351
|
-
isCurrentMessage
|
|
1398
|
+
isCurrentMessage,
|
|
1399
|
+
markdownTagRenderers
|
|
1352
1400
|
} = props;
|
|
1353
1401
|
const [copied, setCopied] = (0, import_react8.useState)(false);
|
|
1354
1402
|
const handleCopy = () => {
|
|
@@ -1381,7 +1429,7 @@ var AssistantMessage = (props) => {
|
|
|
1381
1429
|
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: icons.activityIcon });
|
|
1382
1430
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
|
|
1383
1431
|
(message || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
1384
|
-
message && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Markdown, { content: message || "" }),
|
|
1432
|
+
message && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Markdown, { content: message || "", components: markdownTagRenderers }),
|
|
1385
1433
|
isLoading && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(LoadingIcon, {}),
|
|
1386
1434
|
message && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1387
1435
|
"div",
|
|
@@ -1454,7 +1502,8 @@ function RenderTextMessage(_a) {
|
|
|
1454
1502
|
onRegenerate,
|
|
1455
1503
|
onCopy,
|
|
1456
1504
|
onThumbsUp,
|
|
1457
|
-
onThumbsDown
|
|
1505
|
+
onThumbsDown,
|
|
1506
|
+
markdownTagRenderers
|
|
1458
1507
|
} = props;
|
|
1459
1508
|
if (message.isTextMessage()) {
|
|
1460
1509
|
if (message.role === "user") {
|
|
@@ -1480,7 +1529,8 @@ function RenderTextMessage(_a) {
|
|
|
1480
1529
|
onRegenerate: () => onRegenerate == null ? void 0 : onRegenerate(message.id),
|
|
1481
1530
|
onCopy,
|
|
1482
1531
|
onThumbsUp,
|
|
1483
|
-
onThumbsDown
|
|
1532
|
+
onThumbsDown,
|
|
1533
|
+
markdownTagRenderers
|
|
1484
1534
|
},
|
|
1485
1535
|
index
|
|
1486
1536
|
);
|
|
@@ -1791,19 +1841,23 @@ function RenderImageMessage(_a) {
|
|
|
1791
1841
|
return null;
|
|
1792
1842
|
}
|
|
1793
1843
|
|
|
1844
|
+
// src/components/chat/Chat.tsx
|
|
1845
|
+
var import_react9 = __toESM(require("react"));
|
|
1846
|
+
var import_react_core7 = require("@copilotkit/react-core");
|
|
1847
|
+
|
|
1794
1848
|
// src/components/chat/Suggestion.tsx
|
|
1795
1849
|
var import_react_core6 = require("@copilotkit/react-core");
|
|
1796
1850
|
var import_shared = require("@copilotkit/shared");
|
|
1797
1851
|
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
1798
1852
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1799
|
-
function Suggestion({ title,
|
|
1853
|
+
function Suggestion({ title, onClick, partial, className }) {
|
|
1800
1854
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1801
1855
|
"button",
|
|
1802
1856
|
{
|
|
1803
1857
|
disabled: partial,
|
|
1804
1858
|
onClick: (e) => {
|
|
1805
1859
|
e.preventDefault();
|
|
1806
|
-
onClick(
|
|
1860
|
+
onClick();
|
|
1807
1861
|
},
|
|
1808
1862
|
className: className || (partial ? "suggestion loading" : "suggestion"),
|
|
1809
1863
|
"data-test-id": "suggestion",
|
|
@@ -1882,8 +1936,6 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
|
|
|
1882
1936
|
});
|
|
1883
1937
|
|
|
1884
1938
|
// src/components/chat/Chat.tsx
|
|
1885
|
-
var import_react9 = __toESM(require("react"));
|
|
1886
|
-
var import_react_core7 = require("@copilotkit/react-core");
|
|
1887
1939
|
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
1888
1940
|
var import_shared2 = require("@copilotkit/shared");
|
|
1889
1941
|
var import_react_core8 = require("@copilotkit/react-core");
|
|
@@ -1966,8 +2018,24 @@ var ImageUploadQueue = ({
|
|
|
1966
2018
|
);
|
|
1967
2019
|
};
|
|
1968
2020
|
|
|
1969
|
-
// src/components/chat/
|
|
2021
|
+
// src/components/chat/Suggestions.tsx
|
|
1970
2022
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2023
|
+
function Suggestions({ suggestions, onSuggestionClick }) {
|
|
2024
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "suggestions", children: suggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2025
|
+
Suggestion,
|
|
2026
|
+
{
|
|
2027
|
+
title: suggestion.title,
|
|
2028
|
+
message: suggestion.message,
|
|
2029
|
+
partial: suggestion.partial,
|
|
2030
|
+
className: suggestion.className,
|
|
2031
|
+
onClick: () => onSuggestionClick(suggestion.message)
|
|
2032
|
+
},
|
|
2033
|
+
index
|
|
2034
|
+
)) });
|
|
2035
|
+
}
|
|
2036
|
+
|
|
2037
|
+
// src/components/chat/Chat.tsx
|
|
2038
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1971
2039
|
function CopilotChat({
|
|
1972
2040
|
instructions,
|
|
1973
2041
|
onSubmitMessage,
|
|
@@ -1979,12 +2047,14 @@ function CopilotChat({
|
|
|
1979
2047
|
onCopy,
|
|
1980
2048
|
onThumbsUp,
|
|
1981
2049
|
onThumbsDown,
|
|
2050
|
+
markdownTagRenderers,
|
|
1982
2051
|
Messages: Messages2 = Messages,
|
|
1983
2052
|
RenderTextMessage: RenderTextMessage2 = RenderTextMessage,
|
|
1984
2053
|
RenderActionExecutionMessage: RenderActionExecutionMessage2 = RenderActionExecutionMessage,
|
|
1985
2054
|
RenderAgentStateMessage: RenderAgentStateMessage2 = RenderAgentStateMessage,
|
|
1986
2055
|
RenderResultMessage: RenderResultMessage2 = RenderResultMessage,
|
|
1987
2056
|
RenderImageMessage: RenderImageMessage2 = RenderImageMessage,
|
|
2057
|
+
RenderSuggestionsList = Suggestions,
|
|
1988
2058
|
Input: Input2 = Input,
|
|
1989
2059
|
className,
|
|
1990
2060
|
icons,
|
|
@@ -2124,8 +2194,8 @@ function CopilotChat({
|
|
|
2124
2194
|
const removeSelectedImage = (index) => {
|
|
2125
2195
|
setSelectedImages((prev) => prev.filter((_, i) => i !== index));
|
|
2126
2196
|
};
|
|
2127
|
-
return /* @__PURE__ */ (0,
|
|
2128
|
-
/* @__PURE__ */ (0,
|
|
2197
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
2198
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2129
2199
|
Messages2,
|
|
2130
2200
|
{
|
|
2131
2201
|
AssistantMessage: AssistantMessage2,
|
|
@@ -2141,22 +2211,19 @@ function CopilotChat({
|
|
|
2141
2211
|
onCopy: handleCopy,
|
|
2142
2212
|
onThumbsUp,
|
|
2143
2213
|
onThumbsDown,
|
|
2144
|
-
|
|
2145
|
-
|
|
2214
|
+
markdownTagRenderers,
|
|
2215
|
+
children: currentSuggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2216
|
+
RenderSuggestionsList,
|
|
2146
2217
|
{
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
onClick: (message) => handleSendMessage(message)
|
|
2152
|
-
},
|
|
2153
|
-
index
|
|
2154
|
-
)) })
|
|
2218
|
+
onSuggestionClick: handleSendMessage,
|
|
2219
|
+
suggestions: currentSuggestions
|
|
2220
|
+
}
|
|
2221
|
+
)
|
|
2155
2222
|
}
|
|
2156
2223
|
),
|
|
2157
|
-
imageUploadsEnabled && /* @__PURE__ */ (0,
|
|
2158
|
-
/* @__PURE__ */ (0,
|
|
2159
|
-
/* @__PURE__ */ (0,
|
|
2224
|
+
imageUploadsEnabled && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
|
|
2225
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ImageUploadQueue, { images: selectedImages, onRemoveImage: removeSelectedImage }),
|
|
2226
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2160
2227
|
"input",
|
|
2161
2228
|
{
|
|
2162
2229
|
type: "file",
|
|
@@ -2168,7 +2235,7 @@ function CopilotChat({
|
|
|
2168
2235
|
}
|
|
2169
2236
|
)
|
|
2170
2237
|
] }),
|
|
2171
|
-
/* @__PURE__ */ (0,
|
|
2238
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2172
2239
|
Input2,
|
|
2173
2240
|
{
|
|
2174
2241
|
inProgress: isLoading,
|
|
@@ -2191,10 +2258,10 @@ function WrappedCopilotChat({
|
|
|
2191
2258
|
}) {
|
|
2192
2259
|
const chatContext = import_react9.default.useContext(ChatContext);
|
|
2193
2260
|
if (!chatContext) {
|
|
2194
|
-
return /* @__PURE__ */ (0,
|
|
2195
|
-
}, children: /* @__PURE__ */ (0,
|
|
2261
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ChatContextProvider, { icons, labels, open: true, setOpen: () => {
|
|
2262
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: `copilotKitChat ${className != null ? className : ""}`, children }) });
|
|
2196
2263
|
}
|
|
2197
|
-
return /* @__PURE__ */ (0,
|
|
2264
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_jsx_runtime19.Fragment, { children });
|
|
2198
2265
|
}
|
|
2199
2266
|
var SUGGESTIONS_DEBOUNCE_TIMEOUT = 1e3;
|
|
2200
2267
|
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|