@copilotkit/react-ui 1.9.3 → 1.10.0-next.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.
- package/CHANGELOG.md +38 -0
- package/dist/{chunk-GVKA7RQQ.mjs → chunk-7CAK2CNK.mjs} +2 -2
- package/dist/{chunk-KN2GCKBE.mjs → chunk-7RNOT3GM.mjs} +9 -9
- package/dist/{chunk-KENCH7RN.mjs → chunk-B5IFB5YJ.mjs} +1 -1
- package/dist/chunk-B5IFB5YJ.mjs.map +1 -0
- package/dist/chunk-DBKRAOH7.mjs +34 -0
- package/dist/chunk-DBKRAOH7.mjs.map +1 -0
- package/dist/{chunk-4HUXYD3B.mjs → chunk-DTRPPNSA.mjs} +2 -2
- package/dist/{chunk-YTXEWDNC.mjs → chunk-E6MQUIZW.mjs} +15 -4
- package/dist/chunk-E6MQUIZW.mjs.map +1 -0
- package/dist/{chunk-Z4XPPVZT.mjs → chunk-EYRKZDP5.mjs} +1 -1
- package/dist/chunk-EYRKZDP5.mjs.map +1 -0
- package/dist/{chunk-SGFUVPDB.mjs → chunk-FOSKS7AI.mjs} +4 -4
- package/dist/{chunk-L3GZ7TXC.mjs → chunk-GCKKSSBU.mjs} +21 -24
- package/dist/chunk-GCKKSSBU.mjs.map +1 -0
- package/dist/{chunk-S5MBUNGN.mjs → chunk-O72ZB5V3.mjs} +4 -4
- package/dist/chunk-O72ZB5V3.mjs.map +1 -0
- package/dist/{chunk-QGSPTXOV.mjs → chunk-O7KTFUAN.mjs} +2 -2
- package/dist/chunk-O7KTFUAN.mjs.map +1 -0
- package/dist/{chunk-HKTWKCPS.mjs → chunk-O7PYQO73.mjs} +127 -92
- package/dist/chunk-O7PYQO73.mjs.map +1 -0
- package/dist/{chunk-32MUWKL3.mjs → chunk-OQM7D3Z3.mjs} +22 -18
- package/dist/chunk-OQM7D3Z3.mjs.map +1 -0
- package/dist/chunk-Q2467VHZ.mjs +30 -0
- package/dist/chunk-Q2467VHZ.mjs.map +1 -0
- package/dist/{chunk-ALIBUJML.mjs → chunk-QELAC6XJ.mjs} +2 -2
- package/dist/chunk-QELAC6XJ.mjs.map +1 -0
- package/dist/{chunk-H3EM63WS.mjs → chunk-TCIZDWPC.mjs} +2 -2
- package/dist/chunk-TCIZDWPC.mjs.map +1 -0
- package/dist/chunk-VVL6JFCJ.mjs +16 -0
- package/dist/chunk-VVL6JFCJ.mjs.map +1 -0
- package/dist/chunk-WHDNKXMP.mjs +135 -0
- package/dist/chunk-WHDNKXMP.mjs.map +1 -0
- package/dist/components/chat/Button.d.ts +1 -1
- package/dist/components/chat/Chat.d.ts +119 -28
- package/dist/components/chat/Chat.js +298 -658
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +12 -15
- package/dist/components/chat/CodeBlock.js.map +1 -1
- package/dist/components/chat/CodeBlock.mjs +1 -1
- package/dist/components/chat/Header.d.ts +1 -1
- package/dist/components/chat/Header.mjs +4 -4
- package/dist/components/chat/Input.d.ts +1 -1
- package/dist/components/chat/Input.js +3 -3
- package/dist/components/chat/Input.js.map +1 -1
- package/dist/components/chat/Input.mjs +2 -2
- package/dist/components/chat/Markdown.js +13 -2
- package/dist/components/chat/Markdown.js.map +1 -1
- package/dist/components/chat/Markdown.mjs +2 -2
- package/dist/components/chat/Messages.d.ts +3 -3
- package/dist/components/chat/Messages.js +40 -116
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +1 -1
- package/dist/components/chat/Modal.d.ts +7 -2
- package/dist/components/chat/Modal.js +308 -668
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +17 -20
- package/dist/components/chat/Popup.d.ts +7 -2
- package/dist/components/chat/Popup.js +310 -670
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +18 -21
- package/dist/components/chat/Sidebar.d.ts +7 -2
- package/dist/components/chat/Sidebar.js +312 -672
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +18 -21
- package/dist/components/chat/Suggestion.d.ts +2 -9
- package/dist/components/chat/Suggestion.js +6 -96
- package/dist/components/chat/Suggestion.js.map +1 -1
- package/dist/components/chat/Suggestion.mjs +3 -5
- package/dist/components/chat/Suggestions.d.ts +1 -1
- package/dist/components/chat/Suggestions.js +4 -3
- package/dist/components/chat/Suggestions.js.map +1 -1
- package/dist/components/chat/Suggestions.mjs +2 -2
- package/dist/components/chat/Window.d.ts +1 -1
- package/dist/components/chat/index.d.ts +8 -3
- package/dist/components/chat/index.js +316 -676
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +22 -25
- package/dist/components/chat/messages/AssistantMessage.d.ts +1 -1
- package/dist/components/chat/messages/AssistantMessage.js +32 -24
- package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
- package/dist/components/chat/messages/AssistantMessage.mjs +3 -3
- package/dist/components/chat/messages/ImageRenderer.d.ts +12 -0
- package/dist/components/chat/messages/ImageRenderer.js +58 -0
- package/dist/components/chat/messages/ImageRenderer.js.map +1 -0
- package/dist/components/chat/messages/ImageRenderer.mjs +8 -0
- package/dist/components/chat/messages/RenderMessage.d.ts +9 -0
- package/dist/components/chat/messages/{RenderTextMessage.js → RenderMessage.js} +92 -47
- package/dist/components/chat/messages/RenderMessage.js.map +1 -0
- package/dist/components/chat/messages/RenderMessage.mjs +16 -0
- package/dist/components/chat/messages/UserMessage.d.ts +1 -1
- package/dist/components/chat/messages/UserMessage.js +7 -1
- package/dist/components/chat/messages/UserMessage.js.map +1 -1
- package/dist/components/chat/messages/UserMessage.mjs +1 -1
- package/dist/components/chat/props.d.ts +32 -27
- package/dist/components/chat/props.js.map +1 -1
- package/dist/components/dev-console/console.mjs +3 -3
- package/dist/components/dev-console/index.mjs +4 -4
- package/dist/components/index.d.ts +8 -3
- package/dist/components/index.js +316 -676
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +23 -26
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/hooks/use-copilot-chat-suggestions.d.ts +1 -1
- package/dist/hooks/use-copilot-chat-suggestions.js.map +1 -1
- package/dist/hooks/use-copilot-chat-suggestions.mjs +1 -1
- package/dist/hooks/use-push-to-talk.d.ts +1 -1
- package/dist/hooks/use-push-to-talk.js +3 -3
- package/dist/hooks/use-push-to-talk.js.map +1 -1
- package/dist/hooks/use-push-to-talk.mjs +1 -1
- package/dist/index.css +59 -3
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.js +322 -682
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -27
- package/dist/types/css.d.ts +3 -0
- package/dist/types/css.js.map +1 -1
- package/package.json +4 -4
- package/src/components/chat/Chat.tsx +194 -106
- package/src/components/chat/CodeBlock.tsx +1 -1
- package/src/components/chat/Markdown.tsx +12 -2
- package/src/components/chat/Messages.tsx +43 -122
- package/src/components/chat/Popup.tsx +1 -1
- package/src/components/chat/Sidebar.tsx +1 -1
- package/src/components/chat/Suggestion.tsx +5 -108
- package/src/components/chat/Suggestions.tsx +0 -1
- package/src/components/chat/index.tsx +1 -1
- package/src/components/chat/messages/AssistantMessage.tsx +15 -23
- package/src/components/chat/messages/ImageRenderer.tsx +37 -0
- package/src/components/chat/messages/{RenderTextMessage.tsx → RenderMessage.tsx} +10 -9
- package/src/components/chat/messages/UserMessage.tsx +16 -5
- package/src/components/chat/props.ts +36 -28
- package/src/css/colors.css +10 -0
- package/src/css/markdown.css +8 -0
- package/src/css/messages.css +54 -5
- package/src/css/suggestions.css +1 -1
- package/src/hooks/use-copilot-chat-suggestions.tsx +1 -1
- package/src/hooks/use-push-to-talk.tsx +6 -5
- package/src/styles.css +1 -1
- package/src/types/css.ts +3 -0
- package/dist/chunk-2II3Q27P.mjs +0 -112
- package/dist/chunk-2II3Q27P.mjs.map +0 -1
- package/dist/chunk-32MUWKL3.mjs.map +0 -1
- package/dist/chunk-53CVDVS5.mjs +0 -127
- package/dist/chunk-53CVDVS5.mjs.map +0 -1
- package/dist/chunk-ALIBUJML.mjs.map +0 -1
- package/dist/chunk-B3D7U7TJ.mjs +0 -211
- package/dist/chunk-B3D7U7TJ.mjs.map +0 -1
- package/dist/chunk-C7OB63U5.mjs +0 -36
- package/dist/chunk-C7OB63U5.mjs.map +0 -1
- package/dist/chunk-H3EM63WS.mjs.map +0 -1
- package/dist/chunk-HKTWKCPS.mjs.map +0 -1
- package/dist/chunk-HWMFMBJC.mjs +0 -10
- package/dist/chunk-HWMFMBJC.mjs.map +0 -1
- package/dist/chunk-IMBPSLL4.mjs +0 -104
- package/dist/chunk-IMBPSLL4.mjs.map +0 -1
- package/dist/chunk-KENCH7RN.mjs.map +0 -1
- package/dist/chunk-L3GZ7TXC.mjs.map +0 -1
- package/dist/chunk-QGSPTXOV.mjs.map +0 -1
- package/dist/chunk-S5MBUNGN.mjs.map +0 -1
- package/dist/chunk-ULDQXCED.mjs +0 -78
- package/dist/chunk-ULDQXCED.mjs.map +0 -1
- package/dist/chunk-YTXEWDNC.mjs.map +0 -1
- package/dist/chunk-Z4XPPVZT.mjs.map +0 -1
- package/dist/components/chat/messages/RenderActionExecutionMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderActionExecutionMessage.js +0 -869
- package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +0 -14
- package/dist/components/chat/messages/RenderAgentStateMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderAgentStateMessage.js +0 -854
- package/dist/components/chat/messages/RenderAgentStateMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderAgentStateMessage.mjs +0 -14
- package/dist/components/chat/messages/RenderImageMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderImageMessage.js +0 -823
- package/dist/components/chat/messages/RenderImageMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderImageMessage.mjs +0 -15
- package/dist/components/chat/messages/RenderImageMessage.mjs.map +0 -1
- package/dist/components/chat/messages/RenderResultMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderResultMessage.js +0 -778
- package/dist/components/chat/messages/RenderResultMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderResultMessage.mjs +0 -14
- package/dist/components/chat/messages/RenderResultMessage.mjs.map +0 -1
- package/dist/components/chat/messages/RenderTextMessage.d.ts +0 -9
- package/dist/components/chat/messages/RenderTextMessage.js.map +0 -1
- package/dist/components/chat/messages/RenderTextMessage.mjs +0 -15
- package/dist/components/chat/messages/RenderTextMessage.mjs.map +0 -1
- package/src/components/chat/messages/RenderActionExecutionMessage.tsx +0 -127
- package/src/components/chat/messages/RenderAgentStateMessage.tsx +0 -116
- package/src/components/chat/messages/RenderImageMessage.tsx +0 -64
- package/src/components/chat/messages/RenderResultMessage.tsx +0 -26
- /package/dist/{chunk-GVKA7RQQ.mjs.map → chunk-7CAK2CNK.mjs.map} +0 -0
- /package/dist/{chunk-KN2GCKBE.mjs.map → chunk-7RNOT3GM.mjs.map} +0 -0
- /package/dist/{chunk-4HUXYD3B.mjs.map → chunk-DTRPPNSA.mjs.map} +0 -0
- /package/dist/{chunk-SGFUVPDB.mjs.map → chunk-FOSKS7AI.mjs.map} +0 -0
- /package/dist/components/chat/messages/{RenderActionExecutionMessage.mjs.map → ImageRenderer.mjs.map} +0 -0
- /package/dist/components/chat/messages/{RenderAgentStateMessage.mjs.map → RenderMessage.mjs.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat/messages/UserMessage.tsx"],"sourcesContent":["import { UserMessageProps } from \"../props\";\n\nexport const UserMessage = (props: UserMessageProps) => {\n const { message, ImageRenderer } = props;\n const isImageMessage = message && \"image\" in message && message.image;\n\n // Image message\n if (isImageMessage) {\n const imageMessage = message;\n\n return (\n <div className=\"copilotKitMessage copilotKitUserMessage\">\n <ImageRenderer image={imageMessage.image!} content={imageMessage.content} />\n </div>\n );\n }\n\n // Regular text message\n return <div className=\"copilotKitMessage copilotKitUserMessage\">{message?.content}</div>;\n};\n"],"mappings":";AAYQ;AAVD,IAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,EAAE,SAAS,cAAc,IAAI;AACnC,QAAM,iBAAiB,WAAW,WAAW,WAAW,QAAQ;AAGhE,MAAI,gBAAgB;AAClB,UAAM,eAAe;AAErB,WACE,oBAAC,SAAI,WAAU,2CACb,8BAAC,iBAAc,OAAO,aAAa,OAAQ,SAAS,aAAa,SAAS,GAC5E;AAAA,EAEJ;AAGA,SAAO,oBAAC,SAAI,WAAU,2CAA2C,6CAAS,SAAQ;AACpF;","names":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useChatContext
|
|
3
|
+
} from "./chunk-IEMQ2SQW.mjs";
|
|
4
|
+
|
|
5
|
+
// src/components/chat/Messages.tsx
|
|
6
|
+
import { useEffect, useMemo, useRef } from "react";
|
|
7
|
+
import { useCopilotChat } from "@copilotkit/react-core";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
var Messages = ({
|
|
10
|
+
inProgress,
|
|
11
|
+
children,
|
|
12
|
+
RenderMessage,
|
|
13
|
+
AssistantMessage,
|
|
14
|
+
UserMessage,
|
|
15
|
+
onRegenerate,
|
|
16
|
+
onCopy,
|
|
17
|
+
onThumbsUp,
|
|
18
|
+
onThumbsDown,
|
|
19
|
+
markdownTagRenderers
|
|
20
|
+
}) => {
|
|
21
|
+
const { labels } = useChatContext();
|
|
22
|
+
const { visibleMessages, interrupt } = useCopilotChat();
|
|
23
|
+
const initialMessages = useMemo(() => makeInitialMessages(labels.initial), [labels.initial]);
|
|
24
|
+
const messages = [...initialMessages, ...visibleMessages];
|
|
25
|
+
const { messagesContainerRef, messagesEndRef } = useScrollToBottom(messages);
|
|
26
|
+
return /* @__PURE__ */ jsxs("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
27
|
+
/* @__PURE__ */ jsxs("div", { className: "copilotKitMessagesContainer", children: [
|
|
28
|
+
messages.map((message, index) => {
|
|
29
|
+
const isCurrentMessage = index === messages.length - 1;
|
|
30
|
+
return /* @__PURE__ */ jsx(
|
|
31
|
+
RenderMessage,
|
|
32
|
+
{
|
|
33
|
+
message,
|
|
34
|
+
inProgress,
|
|
35
|
+
index,
|
|
36
|
+
isCurrentMessage,
|
|
37
|
+
AssistantMessage,
|
|
38
|
+
UserMessage,
|
|
39
|
+
onRegenerate,
|
|
40
|
+
onCopy,
|
|
41
|
+
onThumbsUp,
|
|
42
|
+
onThumbsDown,
|
|
43
|
+
markdownTagRenderers
|
|
44
|
+
},
|
|
45
|
+
index
|
|
46
|
+
);
|
|
47
|
+
}),
|
|
48
|
+
interrupt
|
|
49
|
+
] }),
|
|
50
|
+
/* @__PURE__ */ jsx("footer", { className: "copilotKitMessagesFooter", ref: messagesEndRef, children })
|
|
51
|
+
] });
|
|
52
|
+
};
|
|
53
|
+
function makeInitialMessages(initial) {
|
|
54
|
+
if (!initial)
|
|
55
|
+
return [];
|
|
56
|
+
if (Array.isArray(initial)) {
|
|
57
|
+
return initial.map((message) => {
|
|
58
|
+
return {
|
|
59
|
+
id: message,
|
|
60
|
+
role: "assistant",
|
|
61
|
+
content: message
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return [
|
|
66
|
+
{
|
|
67
|
+
id: initial,
|
|
68
|
+
role: "system",
|
|
69
|
+
content: initial
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
function useScrollToBottom(messages) {
|
|
74
|
+
const messagesEndRef = useRef(null);
|
|
75
|
+
const messagesContainerRef = useRef(null);
|
|
76
|
+
const isProgrammaticScrollRef = useRef(false);
|
|
77
|
+
const isUserScrollUpRef = useRef(false);
|
|
78
|
+
const scrollToBottom = () => {
|
|
79
|
+
if (messagesContainerRef.current && messagesEndRef.current) {
|
|
80
|
+
isProgrammaticScrollRef.current = true;
|
|
81
|
+
messagesContainerRef.current.scrollTop = messagesContainerRef.current.scrollHeight;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
const handleScroll = () => {
|
|
85
|
+
if (isProgrammaticScrollRef.current) {
|
|
86
|
+
isProgrammaticScrollRef.current = false;
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (messagesContainerRef.current) {
|
|
90
|
+
const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;
|
|
91
|
+
isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
const container = messagesContainerRef.current;
|
|
96
|
+
if (container) {
|
|
97
|
+
container.addEventListener("scroll", handleScroll);
|
|
98
|
+
}
|
|
99
|
+
return () => {
|
|
100
|
+
if (container) {
|
|
101
|
+
container.removeEventListener("scroll", handleScroll);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}, []);
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
const container = messagesContainerRef.current;
|
|
107
|
+
if (!container) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const mutationObserver = new MutationObserver(() => {
|
|
111
|
+
if (!isUserScrollUpRef.current) {
|
|
112
|
+
scrollToBottom();
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
mutationObserver.observe(container, {
|
|
116
|
+
childList: true,
|
|
117
|
+
subtree: true,
|
|
118
|
+
characterData: true
|
|
119
|
+
});
|
|
120
|
+
return () => {
|
|
121
|
+
mutationObserver.disconnect();
|
|
122
|
+
};
|
|
123
|
+
}, []);
|
|
124
|
+
useEffect(() => {
|
|
125
|
+
isUserScrollUpRef.current = false;
|
|
126
|
+
scrollToBottom();
|
|
127
|
+
}, [messages.filter((m) => m.role === "user").length]);
|
|
128
|
+
return { messagesEndRef, messagesContainerRef };
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export {
|
|
132
|
+
Messages,
|
|
133
|
+
useScrollToBottom
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=chunk-WHDNKXMP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat/Messages.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Message, Role } from \"@copilotkit/shared\";\nimport { useCopilotChat } from \"@copilotkit/react-core\";\n\nexport const Messages = ({\n inProgress,\n children,\n RenderMessage,\n AssistantMessage,\n UserMessage,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n markdownTagRenderers,\n}: MessagesProps) => {\n const { labels } = useChatContext();\n const { visibleMessages, interrupt } = useCopilotChat();\n const initialMessages = useMemo(() => makeInitialMessages(labels.initial), [labels.initial]);\n const messages = [...initialMessages, ...visibleMessages];\n const { messagesContainerRef, messagesEndRef } = useScrollToBottom(messages);\n\n return (\n <div className=\"copilotKitMessages\" ref={messagesContainerRef}>\n <div className=\"copilotKitMessagesContainer\">\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n return (\n <RenderMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n onRegenerate={onRegenerate}\n onCopy={onCopy}\n onThumbsUp={onThumbsUp}\n onThumbsDown={onThumbsDown}\n markdownTagRenderers={markdownTagRenderers}\n />\n );\n })}\n {interrupt}\n </div>\n <footer className=\"copilotKitMessagesFooter\" ref={messagesEndRef}>\n {children}\n </footer>\n </div>\n );\n};\n\nfunction makeInitialMessages(initial: string | string[] | undefined): Message[] {\n if (!initial) return [];\n\n if (Array.isArray(initial)) {\n return initial.map((message) => {\n return {\n id: message,\n role: \"assistant\",\n content: message,\n };\n });\n }\n\n return [\n {\n id: initial,\n role: \"system\",\n content: initial,\n },\n ];\n}\n\nexport function useScrollToBottom(messages: Message[]) {\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 (messagesContainerRef.current && messagesEndRef.current) {\n isProgrammaticScrollRef.current = true;\n messagesContainerRef.current.scrollTop = messagesContainerRef.current.scrollHeight;\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.role === \"user\").length]);\n\n return { messagesEndRef, messagesContainerRef };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,11 +1,26 @@
|
|
|
1
|
+
import * as _copilotkit_react_core_dist_types_coagent_state from '@copilotkit/react-core/dist/types/coagent-state';
|
|
2
|
+
import * as _copilotkit_react_core_dist_hooks_use_tree from '@copilotkit/react-core/dist/hooks/use-tree';
|
|
3
|
+
import * as _copilotkit_shared from '@copilotkit/shared';
|
|
4
|
+
import { Message } from '@copilotkit/shared';
|
|
5
|
+
import * as _copilotkit_react_core_dist_copilot_context_bd88d30d from '@copilotkit/react-core/dist/copilot-context-bd88d30d';
|
|
6
|
+
import * as _copilotkit_react_core_dist_types_coagent_action from '@copilotkit/react-core/dist/types/coagent-action';
|
|
7
|
+
import * as _copilotkit_react_core from '@copilotkit/react-core';
|
|
8
|
+
import { SuggestionItem, SystemMessageFunction, HintFunction } from '@copilotkit/react-core';
|
|
9
|
+
import * as _copilotkit_runtime_client_gql from '@copilotkit/runtime-client-gql';
|
|
1
10
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
11
|
import { CopilotChatIcons, CopilotChatLabels } from './ChatContext.js';
|
|
3
12
|
import React__default from 'react';
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import { TextMessage, Message } from '@copilotkit/runtime-client-gql';
|
|
7
|
-
import { ComponentsMap, AssistantMessageProps, UserMessageProps, MessagesProps, RenderMessageProps, RenderSuggestionsListProps, InputProps } from './props.js';
|
|
13
|
+
import { ComponentsMap, AssistantMessageProps, UserMessageProps, MessagesProps, RenderMessageProps, RenderSuggestionsListProps, InputProps, ImageRendererProps } from './props.js';
|
|
14
|
+
import '../../types/suggestions.js';
|
|
8
15
|
|
|
16
|
+
/**
|
|
17
|
+
* The type of suggestions to use in the chat.
|
|
18
|
+
*
|
|
19
|
+
* `auto` - Suggestions are generated automatically.
|
|
20
|
+
* `manual` - Suggestions are controlled programmatically.
|
|
21
|
+
* `SuggestionItem[]` - Static suggestions array.
|
|
22
|
+
*/
|
|
23
|
+
type ChatSuggestions = "auto" | "manual" | SuggestionItem[];
|
|
9
24
|
/**
|
|
10
25
|
* Props for CopilotChat component.
|
|
11
26
|
*/
|
|
@@ -19,6 +34,24 @@ interface CopilotChatProps {
|
|
|
19
34
|
* user's needs or the application's requirements.
|
|
20
35
|
*/
|
|
21
36
|
instructions?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Controls the behavior of suggestions in the chat interface.
|
|
39
|
+
*
|
|
40
|
+
* `auto` (default) - Suggestions are generated automatically:
|
|
41
|
+
* - When the chat is first opened (empty state)
|
|
42
|
+
* - After each message exchange completes
|
|
43
|
+
* - Uses configuration from `useCopilotChatSuggestions` hooks
|
|
44
|
+
*
|
|
45
|
+
* `manual` - Suggestions are controlled programmatically:
|
|
46
|
+
* - Use `setSuggestions()` to set custom suggestions
|
|
47
|
+
* - Use `generateSuggestions()` to trigger AI generation
|
|
48
|
+
* - Access via `useCopilotChat` hook
|
|
49
|
+
*
|
|
50
|
+
* `SuggestionItem[]` - Static suggestions array:
|
|
51
|
+
* - Always shows the same suggestions
|
|
52
|
+
* - No AI generation involved
|
|
53
|
+
*/
|
|
54
|
+
suggestions?: ChatSuggestions;
|
|
22
55
|
/**
|
|
23
56
|
* A callback that gets called when the in progress state changes.
|
|
24
57
|
*/
|
|
@@ -46,11 +79,11 @@ interface CopilotChatProps {
|
|
|
46
79
|
/**
|
|
47
80
|
* A callback function for thumbs up feedback
|
|
48
81
|
*/
|
|
49
|
-
onThumbsUp?: (message:
|
|
82
|
+
onThumbsUp?: (message: Message) => void;
|
|
50
83
|
/**
|
|
51
84
|
* A callback function for thumbs down feedback
|
|
52
85
|
*/
|
|
53
|
-
onThumbsDown?: (message:
|
|
86
|
+
onThumbsDown?: (message: Message) => void;
|
|
54
87
|
/**
|
|
55
88
|
* A list of markdown components to render in assistant message.
|
|
56
89
|
* Useful when you want to render custom elements in the message (e.g a reference tag element)
|
|
@@ -93,25 +126,14 @@ interface CopilotChatProps {
|
|
|
93
126
|
*/
|
|
94
127
|
Messages?: React__default.ComponentType<MessagesProps>;
|
|
95
128
|
/**
|
|
96
|
-
* A custom
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
*
|
|
101
|
-
|
|
102
|
-
RenderActionExecutionMessage?: React__default.ComponentType<RenderMessageProps>;
|
|
103
|
-
/**
|
|
104
|
-
* A custom RenderAgentStateMessage component to use instead of the default.
|
|
129
|
+
* A custom RenderMessage component to use instead of the default.
|
|
130
|
+
*
|
|
131
|
+
* **Warning**: This is a break-glass solution to allow for custom
|
|
132
|
+
* rendering of messages. You are most likely looking to swap out
|
|
133
|
+
* the AssistantMessage and UserMessage components instead which
|
|
134
|
+
* are also props.
|
|
105
135
|
*/
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* A custom RenderResultMessage component to use instead of the default.
|
|
109
|
-
*/
|
|
110
|
-
RenderResultMessage?: React__default.ComponentType<RenderMessageProps>;
|
|
111
|
-
/**
|
|
112
|
-
* A custom RenderImageMessage component to use instead of the default.
|
|
113
|
-
*/
|
|
114
|
-
RenderImageMessage?: React__default.ComponentType<RenderMessageProps>;
|
|
136
|
+
RenderMessage?: React__default.ComponentType<RenderMessageProps>;
|
|
115
137
|
/**
|
|
116
138
|
* A custom suggestions list component to use instead of the default.
|
|
117
139
|
*/
|
|
@@ -120,6 +142,10 @@ interface CopilotChatProps {
|
|
|
120
142
|
* A custom Input component to use instead of the default.
|
|
121
143
|
*/
|
|
122
144
|
Input?: React__default.ComponentType<InputProps>;
|
|
145
|
+
/**
|
|
146
|
+
* A custom image rendering component to use instead of the default.
|
|
147
|
+
*/
|
|
148
|
+
ImageRenderer?: React__default.ComponentType<ImageRendererProps>;
|
|
123
149
|
/**
|
|
124
150
|
* A class name to apply to the root element.
|
|
125
151
|
*/
|
|
@@ -176,23 +202,88 @@ type ImageUpload = {
|
|
|
176
202
|
contentType: string;
|
|
177
203
|
bytes: string;
|
|
178
204
|
};
|
|
179
|
-
declare function CopilotChat({ instructions, onSubmitMessage, makeSystemMessage, onInProgress, onStopGeneration, onReloadMessages, onRegenerate, onCopy, onThumbsUp, onThumbsDown, markdownTagRenderers, Messages,
|
|
205
|
+
declare function CopilotChat({ instructions, suggestions, onSubmitMessage, makeSystemMessage, onInProgress, onStopGeneration, onReloadMessages, onRegenerate, onCopy, onThumbsUp, onThumbsDown, markdownTagRenderers, Messages, RenderMessage, RenderSuggestionsList, Input, className, icons, labels, AssistantMessage, UserMessage, ImageRenderer, imageUploadsEnabled, inputFileAccept, hideStopButton, }: CopilotChatProps): react_jsx_runtime.JSX.Element;
|
|
180
206
|
declare function WrappedCopilotChat({ children, icons, labels, className, }: {
|
|
181
207
|
children: React__default.ReactNode;
|
|
182
208
|
icons?: CopilotChatIcons;
|
|
183
209
|
labels?: CopilotChatLabels;
|
|
184
210
|
className?: string;
|
|
185
211
|
}): react_jsx_runtime.JSX.Element;
|
|
186
|
-
declare const useCopilotChatLogic: (makeSystemMessage?: SystemMessageFunction, onInProgress?: (isLoading: boolean) => void, onSubmitMessage?: (messageContent: string) => Promise<void> | void, onStopGeneration?: OnStopGeneration, onReloadMessages?: OnReloadMessages) => {
|
|
212
|
+
declare const useCopilotChatLogic: (chatSuggestions: ChatSuggestions, makeSystemMessage?: SystemMessageFunction, onInProgress?: (isLoading: boolean) => void, onSubmitMessage?: (messageContent: string) => Promise<void> | void, onStopGeneration?: OnStopGeneration, onReloadMessages?: OnReloadMessages) => {
|
|
213
|
+
messages: Message[];
|
|
187
214
|
visibleMessages: Message[];
|
|
188
215
|
isLoading: boolean;
|
|
189
|
-
|
|
216
|
+
suggestions: SuggestionItem[];
|
|
190
217
|
sendMessage: (messageContent: string, imagesToUse?: Array<{
|
|
191
218
|
contentType: string;
|
|
192
219
|
bytes: string;
|
|
193
220
|
}>) => Promise<Message>;
|
|
194
221
|
stopGeneration: () => void;
|
|
195
222
|
reloadMessages: (messageId: string) => void;
|
|
223
|
+
resetSuggestions: () => void;
|
|
224
|
+
context: {
|
|
225
|
+
messages: _copilotkit_runtime_client_gql.Message[];
|
|
226
|
+
setMessages: React__default.Dispatch<React__default.SetStateAction<_copilotkit_runtime_client_gql.Message[]>>;
|
|
227
|
+
actions: Record<string, _copilotkit_react_core.FrontendAction<any>>;
|
|
228
|
+
setAction: (id: string, action: _copilotkit_react_core.FrontendAction<any>) => void;
|
|
229
|
+
removeAction: (id: string) => void;
|
|
230
|
+
coAgentStateRenders: Record<string, _copilotkit_react_core_dist_types_coagent_action.CoAgentStateRender<any>>;
|
|
231
|
+
setCoAgentStateRender: (id: string, stateRender: _copilotkit_react_core_dist_types_coagent_action.CoAgentStateRender<any>) => void;
|
|
232
|
+
removeCoAgentStateRender: (id: string) => void;
|
|
233
|
+
chatComponentsCache: React__default.RefObject<_copilotkit_react_core_dist_copilot_context_bd88d30d.j>;
|
|
234
|
+
getFunctionCallHandler: (customEntryPoints?: Record<string, _copilotkit_react_core.FrontendAction<any>>) => _copilotkit_shared.FunctionCallHandler;
|
|
235
|
+
addContext: (context: string, parentId?: string, categories?: string[]) => _copilotkit_react_core_dist_hooks_use_tree.TreeNodeId;
|
|
236
|
+
removeContext: (id: _copilotkit_react_core_dist_hooks_use_tree.TreeNodeId) => void;
|
|
237
|
+
getAllContext: () => _copilotkit_react_core.Tree;
|
|
238
|
+
getContextString: (documents: _copilotkit_react_core.DocumentPointer[], categories: string[]) => string;
|
|
239
|
+
addDocumentContext: (documentPointer: _copilotkit_react_core.DocumentPointer, categories?: string[]) => _copilotkit_react_core_dist_hooks_use_tree.TreeNodeId;
|
|
240
|
+
removeDocumentContext: (documentId: string) => void;
|
|
241
|
+
getDocumentsContext: (categories: string[]) => _copilotkit_react_core.DocumentPointer[];
|
|
242
|
+
isLoading: boolean;
|
|
243
|
+
setIsLoading: React__default.Dispatch<React__default.SetStateAction<boolean>>;
|
|
244
|
+
chatSuggestionConfiguration: {
|
|
245
|
+
[key: string]: _copilotkit_react_core.CopilotChatSuggestionConfiguration;
|
|
246
|
+
};
|
|
247
|
+
addChatSuggestionConfiguration: (id: string, suggestion: _copilotkit_react_core.CopilotChatSuggestionConfiguration) => void;
|
|
248
|
+
removeChatSuggestionConfiguration: (id: string) => void;
|
|
249
|
+
chatInstructions: string;
|
|
250
|
+
setChatInstructions: React__default.Dispatch<React__default.SetStateAction<string>>;
|
|
251
|
+
additionalInstructions?: string[];
|
|
252
|
+
setAdditionalInstructions: React__default.Dispatch<React__default.SetStateAction<string[]>>;
|
|
253
|
+
copilotApiConfig: _copilotkit_react_core.CopilotApiConfig;
|
|
254
|
+
showDevConsole: boolean;
|
|
255
|
+
coagentStates: Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>;
|
|
256
|
+
setCoagentStates: React__default.Dispatch<React__default.SetStateAction<Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>>>;
|
|
257
|
+
coagentStatesRef: React__default.RefObject<Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>>;
|
|
258
|
+
setCoagentStatesWithRef: (value: Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState> | ((prev: Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>) => Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>)) => void;
|
|
259
|
+
agentSession: _copilotkit_react_core_dist_copilot_context_bd88d30d.A | null;
|
|
260
|
+
setAgentSession: React__default.Dispatch<React__default.SetStateAction<_copilotkit_react_core_dist_copilot_context_bd88d30d.A | null>>;
|
|
261
|
+
agentLock: string | null;
|
|
262
|
+
threadId: string;
|
|
263
|
+
setThreadId: React__default.Dispatch<React__default.SetStateAction<string>>;
|
|
264
|
+
runId: string | null;
|
|
265
|
+
setRunId: React__default.Dispatch<React__default.SetStateAction<string | null>>;
|
|
266
|
+
chatAbortControllerRef: React__default.MutableRefObject<AbortController | null>;
|
|
267
|
+
runtimeClient: _copilotkit_runtime_client_gql.CopilotRuntimeClient;
|
|
268
|
+
forwardedParameters?: Partial<Pick<_copilotkit_runtime_client_gql.ForwardedParametersInput, "temperature">>;
|
|
269
|
+
availableAgents: _copilotkit_runtime_client_gql.Agent[];
|
|
270
|
+
authStates_c?: Record<_copilotkit_react_core_dist_copilot_context_bd88d30d.k, _copilotkit_react_core_dist_copilot_context_bd88d30d.f>;
|
|
271
|
+
setAuthStates_c?: React__default.Dispatch<React__default.SetStateAction<Record<_copilotkit_react_core_dist_copilot_context_bd88d30d.k, _copilotkit_react_core_dist_copilot_context_bd88d30d.f>>>;
|
|
272
|
+
authConfig_c?: {
|
|
273
|
+
SignInComponent: React__default.ComponentType<{
|
|
274
|
+
onSignInComplete: (authState: _copilotkit_react_core_dist_copilot_context_bd88d30d.f) => void;
|
|
275
|
+
}>;
|
|
276
|
+
};
|
|
277
|
+
extensions: _copilotkit_runtime_client_gql.ExtensionsInput;
|
|
278
|
+
setExtensions: React__default.Dispatch<React__default.SetStateAction<_copilotkit_runtime_client_gql.ExtensionsInput>>;
|
|
279
|
+
langGraphInterruptAction: _copilotkit_react_core_dist_copilot_context_bd88d30d.L | null;
|
|
280
|
+
setLangGraphInterruptAction: _copilotkit_react_core_dist_copilot_context_bd88d30d.d;
|
|
281
|
+
removeLangGraphInterruptAction: () => void;
|
|
282
|
+
onError?: _copilotkit_shared.CopilotErrorHandler;
|
|
283
|
+
suggestions: SuggestionItem[];
|
|
284
|
+
setSuggestions: React__default.Dispatch<React__default.SetStateAction<SuggestionItem[]>>;
|
|
285
|
+
};
|
|
286
|
+
actions: Record<string, _copilotkit_react_core.FrontendAction<any>>;
|
|
196
287
|
};
|
|
197
288
|
|
|
198
|
-
export { CopilotChat, CopilotChatProps, ImageUpload, OnReloadMessages, OnReloadMessagesArguments, OnStopGeneration, WrappedCopilotChat, useCopilotChatLogic };
|
|
289
|
+
export { ChatSuggestions, CopilotChat, CopilotChatProps, ImageUpload, OnReloadMessages, OnReloadMessagesArguments, OnStopGeneration, WrappedCopilotChat, useCopilotChatLogic };
|