@copilotkit/react-ui 1.9.3-next.4 → 1.10.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- 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-L3GZ7TXC.mjs → chunk-GCKKSSBU.mjs} +21 -24
- package/dist/chunk-GCKKSSBU.mjs.map +1 -0
- package/dist/{chunk-KN2GCKBE.mjs → chunk-GJ3MFNBX.mjs} +6 -6
- package/dist/{chunk-32MUWKL3.mjs → chunk-JHUTTP5C.mjs} +21 -17
- package/dist/chunk-JHUTTP5C.mjs.map +1 -0
- package/dist/{chunk-HKTWKCPS.mjs → chunk-LXCD3K7B.mjs} +127 -92
- package/dist/chunk-LXCD3K7B.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-Q2467VHZ.mjs +30 -0
- package/dist/chunk-Q2467VHZ.mjs.map +1 -0
- package/dist/{chunk-H3EM63WS.mjs → chunk-VLNT34X3.mjs} +2 -2
- 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/{chunk-ALIBUJML.mjs → chunk-WPVTPQ7X.mjs} +2 -2
- 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/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 +13 -16
- 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 +14 -17
- 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 +14 -17
- 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 +18 -21
- 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/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 +18 -21
- 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 +18 -21
- 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 +193 -105
- 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/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-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-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-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/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-4HUXYD3B.mjs.map → chunk-DTRPPNSA.mjs.map} +0 -0
- /package/dist/{chunk-KN2GCKBE.mjs.map → chunk-GJ3MFNBX.mjs.map} +0 -0
- /package/dist/{chunk-H3EM63WS.mjs.map → chunk-VLNT34X3.mjs.map} +0 -0
- /package/dist/{chunk-ALIBUJML.mjs.map → chunk-WPVTPQ7X.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
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Message,
|
|
1
|
+
import { AIMessage, Message, UserMessage } from "@copilotkit/shared";
|
|
2
2
|
import { CopilotChatSuggestion } from "../../types/suggestions";
|
|
3
3
|
import { ReactNode } from "react";
|
|
4
|
+
import { ImageData } from "@copilotkit/shared";
|
|
4
5
|
|
|
5
6
|
export interface ButtonProps {}
|
|
6
7
|
|
|
@@ -31,11 +32,8 @@ export interface MessagesProps {
|
|
|
31
32
|
children?: React.ReactNode;
|
|
32
33
|
AssistantMessage: React.ComponentType<AssistantMessageProps>;
|
|
33
34
|
UserMessage: React.ComponentType<UserMessageProps>;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
RenderAgentStateMessage: React.ComponentType<RenderMessageProps>;
|
|
37
|
-
RenderResultMessage: React.ComponentType<RenderMessageProps>;
|
|
38
|
-
RenderImageMessage: React.ComponentType<RenderMessageProps>;
|
|
35
|
+
RenderMessage: React.ComponentType<RenderMessageProps>;
|
|
36
|
+
ImageRenderer: React.ComponentType<ImageRendererProps>;
|
|
39
37
|
|
|
40
38
|
/**
|
|
41
39
|
* Callback function to regenerate the assistant's response
|
|
@@ -50,12 +48,12 @@ export interface MessagesProps {
|
|
|
50
48
|
/**
|
|
51
49
|
* Callback function for thumbs up feedback
|
|
52
50
|
*/
|
|
53
|
-
onThumbsUp?: (message:
|
|
51
|
+
onThumbsUp?: (message: Message) => void;
|
|
54
52
|
|
|
55
53
|
/**
|
|
56
54
|
* Callback function for thumbs down feedback
|
|
57
55
|
*/
|
|
58
|
-
onThumbsDown?: (message:
|
|
56
|
+
onThumbsDown?: (message: Message) => void;
|
|
59
57
|
|
|
60
58
|
/**
|
|
61
59
|
* A list of markdown components to render in assistant message.
|
|
@@ -69,9 +67,8 @@ export interface Renderer {
|
|
|
69
67
|
}
|
|
70
68
|
|
|
71
69
|
export interface UserMessageProps {
|
|
72
|
-
message?:
|
|
73
|
-
|
|
74
|
-
subComponent?: React.JSX.Element;
|
|
70
|
+
message?: UserMessage;
|
|
71
|
+
ImageRenderer: React.ComponentType<ImageRendererProps>;
|
|
75
72
|
}
|
|
76
73
|
|
|
77
74
|
export interface AssistantMessageProps {
|
|
@@ -79,25 +76,13 @@ export interface AssistantMessageProps {
|
|
|
79
76
|
* The message content from the assistant
|
|
80
77
|
*/
|
|
81
78
|
|
|
82
|
-
message?:
|
|
79
|
+
message?: AIMessage;
|
|
83
80
|
|
|
84
81
|
/**
|
|
85
82
|
* Indicates if this is the last message
|
|
86
83
|
*/
|
|
87
84
|
isCurrentMessage?: boolean;
|
|
88
85
|
|
|
89
|
-
/**
|
|
90
|
-
* The raw data from the assistant's response
|
|
91
|
-
*/
|
|
92
|
-
rawData: any;
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* A component that was decided to render by the LLM.
|
|
96
|
-
* When working with useCopilotActions and useCoAgentStateRender, this will be
|
|
97
|
-
* the render component that was specified.
|
|
98
|
-
*/
|
|
99
|
-
subComponent?: React.JSX.Element;
|
|
100
|
-
|
|
101
86
|
/**
|
|
102
87
|
* Whether a response is loading, this is when the LLM is thinking of a response but hasn't finished yet.
|
|
103
88
|
*/
|
|
@@ -121,18 +106,23 @@ export interface AssistantMessageProps {
|
|
|
121
106
|
/**
|
|
122
107
|
* Callback function for thumbs up feedback
|
|
123
108
|
*/
|
|
124
|
-
onThumbsUp?: (message:
|
|
109
|
+
onThumbsUp?: (message: Message) => void;
|
|
125
110
|
|
|
126
111
|
/**
|
|
127
112
|
* Callback function for thumbs down feedback
|
|
128
113
|
*/
|
|
129
|
-
onThumbsDown?: (message:
|
|
114
|
+
onThumbsDown?: (message: Message) => void;
|
|
130
115
|
|
|
131
116
|
/**
|
|
132
117
|
* A list of markdown components to render in assistant message.
|
|
133
118
|
* Useful when you want to render custom elements in the message (e.g a reference tag element)
|
|
134
119
|
*/
|
|
135
120
|
markdownTagRenderers?: ComponentsMap;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* A custom image rendering component to use instead of the default.
|
|
124
|
+
*/
|
|
125
|
+
ImageRenderer?: React.ComponentType<ImageRendererProps>;
|
|
136
126
|
}
|
|
137
127
|
|
|
138
128
|
export interface RenderMessageProps {
|
|
@@ -143,6 +133,7 @@ export interface RenderMessageProps {
|
|
|
143
133
|
actionResult?: string;
|
|
144
134
|
AssistantMessage?: React.ComponentType<AssistantMessageProps>;
|
|
145
135
|
UserMessage?: React.ComponentType<UserMessageProps>;
|
|
136
|
+
ImageRenderer?: React.ComponentType<ImageRendererProps>;
|
|
146
137
|
|
|
147
138
|
/**
|
|
148
139
|
* Callback function to regenerate the assistant's response
|
|
@@ -157,12 +148,12 @@ export interface RenderMessageProps {
|
|
|
157
148
|
/**
|
|
158
149
|
* Callback function for thumbs up feedback
|
|
159
150
|
*/
|
|
160
|
-
onThumbsUp?: (message:
|
|
151
|
+
onThumbsUp?: (message: Message) => void;
|
|
161
152
|
|
|
162
153
|
/**
|
|
163
154
|
* Callback function for thumbs down feedback
|
|
164
155
|
*/
|
|
165
|
-
onThumbsDown?: (message:
|
|
156
|
+
onThumbsDown?: (message: Message) => void;
|
|
166
157
|
|
|
167
158
|
/**
|
|
168
159
|
* A list of markdown components to render in assistant message.
|
|
@@ -184,3 +175,20 @@ export interface RenderSuggestionsListProps {
|
|
|
184
175
|
suggestions: CopilotChatSuggestion[];
|
|
185
176
|
onSuggestionClick: (message: string) => void;
|
|
186
177
|
}
|
|
178
|
+
|
|
179
|
+
export interface ImageRendererProps {
|
|
180
|
+
/**
|
|
181
|
+
* The image data containing format and bytes
|
|
182
|
+
*/
|
|
183
|
+
image: ImageData;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Optional content to display alongside the image
|
|
187
|
+
*/
|
|
188
|
+
content?: string;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Additional CSS class name for styling
|
|
192
|
+
*/
|
|
193
|
+
className?: string;
|
|
194
|
+
}
|
package/src/css/colors.css
CHANGED
|
@@ -23,6 +23,11 @@ WHEN MAKING ANY CHANGE, MAKE SURE TO INCLUDE IT IN ALL DUPLICATIONS.
|
|
|
23
23
|
/* Muted color for disabled/inactive states */
|
|
24
24
|
--copilot-kit-muted-color: rgb(200 200 200);
|
|
25
25
|
|
|
26
|
+
/* Error colors */
|
|
27
|
+
--copilot-kit-error-background: #fef2f2;
|
|
28
|
+
--copilot-kit-error-border: #fecaca;
|
|
29
|
+
--copilot-kit-error-text: #dc2626;
|
|
30
|
+
|
|
26
31
|
/* Shadow tokens */
|
|
27
32
|
/* Small shadow for subtle elevation */
|
|
28
33
|
--copilot-kit-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
@@ -59,6 +64,11 @@ body[style*="color-scheme: dark"] :root {
|
|
|
59
64
|
/* Muted color for disabled/inactive states */
|
|
60
65
|
--copilot-kit-muted-color: rgb(45, 45, 45);
|
|
61
66
|
|
|
67
|
+
/* Error colors */
|
|
68
|
+
--copilot-kit-error-background: #7f1d1d;
|
|
69
|
+
--copilot-kit-error-border: #dc2626;
|
|
70
|
+
--copilot-kit-error-text: #fca5a5;
|
|
71
|
+
|
|
62
72
|
/* Small shadow for subtle elevation */
|
|
63
73
|
--copilot-kit-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
|
|
64
74
|
/* Medium shadow for cards */
|
package/src/css/markdown.css
CHANGED
|
@@ -140,3 +140,11 @@ li.copilotKitMarkdownElement {
|
|
|
140
140
|
.copilotKitCodeBlockToolbarButton:hover {
|
|
141
141
|
background-color: rgb(55, 55, 58);
|
|
142
142
|
}
|
|
143
|
+
|
|
144
|
+
.copilotKitInlineCode {
|
|
145
|
+
background-color: var(--copilot-kit-input-background-color);
|
|
146
|
+
border: 1px solid var(--copilot-kit-separator-color);
|
|
147
|
+
border-radius: 0.375rem;
|
|
148
|
+
padding: 0.05rem 0.4rem;
|
|
149
|
+
font-size: 15px;
|
|
150
|
+
}
|
package/src/css/messages.css
CHANGED
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.copilotKitMessagesContainer {
|
|
12
|
-
/*overflow-y: scroll;*/
|
|
13
|
-
/*flex: 1;*/
|
|
14
12
|
padding: 1rem 24px;
|
|
15
13
|
display: flex;
|
|
16
14
|
flex-direction: column;
|
|
@@ -18,11 +16,11 @@
|
|
|
18
16
|
|
|
19
17
|
.copilotKitMessagesFooter {
|
|
20
18
|
display: flex;
|
|
21
|
-
padding: 0;
|
|
22
|
-
margin:
|
|
19
|
+
padding: 0.5rem 0.75rem;
|
|
20
|
+
margin: 8px auto 0 auto;
|
|
23
21
|
justify-content: flex-start;
|
|
24
22
|
flex-direction: column;
|
|
25
|
-
width:
|
|
23
|
+
width: 97%;
|
|
26
24
|
}
|
|
27
25
|
|
|
28
26
|
.copilotKitMessages::-webkit-scrollbar {
|
|
@@ -183,3 +181,54 @@
|
|
|
183
181
|
background-color: var(--copilot-kit-primary-color);
|
|
184
182
|
animation: copilotKitActivityDotAnimation 1.4s infinite ease-in-out both;
|
|
185
183
|
}
|
|
184
|
+
|
|
185
|
+
/* Image Rendering Styles */
|
|
186
|
+
.copilotKitImageRendering {
|
|
187
|
+
display: flex;
|
|
188
|
+
flex-direction: column;
|
|
189
|
+
gap: 8px;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.copilotKitImageRenderingImage {
|
|
193
|
+
max-width: 100%;
|
|
194
|
+
height: auto;
|
|
195
|
+
border-radius: 8px;
|
|
196
|
+
box-shadow: var(--copilot-kit-shadow-sm);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.copilotKitImageRenderingContent {
|
|
200
|
+
margin-top: 8px;
|
|
201
|
+
padding: 0 16px;
|
|
202
|
+
font-size: 0.875rem;
|
|
203
|
+
line-height: 1.5;
|
|
204
|
+
color: var(--copilot-kit-secondary-contrast-color);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* Image Error State Styles */
|
|
208
|
+
.copilotKitImageRenderingError {
|
|
209
|
+
display: flex;
|
|
210
|
+
flex-direction: column;
|
|
211
|
+
gap: 8px;
|
|
212
|
+
padding: 12px;
|
|
213
|
+
border: 1px solid var(--copilot-kit-separator-color);
|
|
214
|
+
border-radius: 8px;
|
|
215
|
+
background-color: var(--copilot-kit-input-background-color);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.copilotKitImageRenderingErrorMessage {
|
|
219
|
+
display: flex;
|
|
220
|
+
align-items: center;
|
|
221
|
+
gap: 8px;
|
|
222
|
+
padding: 8px 12px;
|
|
223
|
+
background-color: var(--copilot-kit-error-background);
|
|
224
|
+
border: 1px solid var(--copilot-kit-error-border);
|
|
225
|
+
border-radius: 6px;
|
|
226
|
+
color: var(--copilot-kit-error-text);
|
|
227
|
+
font-size: 0.875rem;
|
|
228
|
+
font-weight: 500;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.copilotKitImageRenderingErrorMessage::before {
|
|
232
|
+
content: "⚠️";
|
|
233
|
+
font-size: 1rem;
|
|
234
|
+
}
|
package/src/css/suggestions.css
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useCopilotContext, useCopilotMessagesContext } from "@copilotkit/react-core";
|
|
2
|
-
import {
|
|
2
|
+
import { gqlToAGUI } from "@copilotkit/runtime-client-gql";
|
|
3
|
+
import { Message } from "@copilotkit/shared";
|
|
3
4
|
import { MutableRefObject, useEffect, useRef, useState } from "react";
|
|
4
5
|
|
|
5
6
|
export const checkMicrophonePermission = async () => {
|
|
@@ -149,11 +150,11 @@ export const usePushToTalk = ({
|
|
|
149
150
|
(message) => message.id === startReadingFromMessageId,
|
|
150
151
|
);
|
|
151
152
|
|
|
152
|
-
const
|
|
153
|
+
const aguiMessages = gqlToAGUI(context.messages);
|
|
154
|
+
|
|
155
|
+
const messagesAfterLast = aguiMessages
|
|
153
156
|
.slice(lastMessageIndex + 1)
|
|
154
|
-
.filter(
|
|
155
|
-
(message) => message.isTextMessage() && message.role === "assistant",
|
|
156
|
-
) as TextMessage[];
|
|
157
|
+
.filter((message) => message.role === "assistant");
|
|
157
158
|
|
|
158
159
|
const text = messagesAfterLast.map((message) => message.content).join("\n");
|
|
159
160
|
playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl!, audioContextRef.current!);
|
package/src/styles.css
CHANGED
package/src/types/css.ts
CHANGED
|
@@ -10,6 +10,9 @@ export interface CopilotKitCSSProperties extends CSSProperties {
|
|
|
10
10
|
"--copilot-kit-secondary-contrast-color"?: string;
|
|
11
11
|
"--copilot-kit-separator-color"?: string;
|
|
12
12
|
"--copilot-kit-muted-color"?: string;
|
|
13
|
+
"--copilot-kit-error-background"?: string;
|
|
14
|
+
"--copilot-kit-error-border"?: string;
|
|
15
|
+
"--copilot-kit-error-text"?: string;
|
|
13
16
|
"--copilot-kit-shadow-sm"?: string;
|
|
14
17
|
"--copilot-kit-shadow-md"?: string;
|
|
15
18
|
"--copilot-kit-shadow-lg"?: string;
|
package/dist/chunk-2II3Q27P.mjs
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AssistantMessage
|
|
3
|
-
} from "./chunk-L3GZ7TXC.mjs";
|
|
4
|
-
import {
|
|
5
|
-
__objRest
|
|
6
|
-
} from "./chunk-MRXNTQOX.mjs";
|
|
7
|
-
|
|
8
|
-
// src/components/chat/messages/RenderAgentStateMessage.tsx
|
|
9
|
-
import { useCopilotContext } from "@copilotkit/react-core";
|
|
10
|
-
import { jsx } from "react/jsx-runtime";
|
|
11
|
-
function RenderAgentStateMessage(_a) {
|
|
12
|
-
var _b = _a, {
|
|
13
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
14
|
-
} = _b, props = __objRest(_b, [
|
|
15
|
-
"AssistantMessage"
|
|
16
|
-
]);
|
|
17
|
-
const { chatComponentsCache } = useCopilotContext();
|
|
18
|
-
const { message, inProgress, index, isCurrentMessage } = props;
|
|
19
|
-
if (message.isAgentStateMessage()) {
|
|
20
|
-
let render;
|
|
21
|
-
if (chatComponentsCache.current !== null) {
|
|
22
|
-
render = chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-${message.nodeName}`] || chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-global`];
|
|
23
|
-
}
|
|
24
|
-
if (render) {
|
|
25
|
-
if (typeof render === "string") {
|
|
26
|
-
if (isCurrentMessage && inProgress) {
|
|
27
|
-
return /* @__PURE__ */ jsx(
|
|
28
|
-
AssistantMessage2,
|
|
29
|
-
{
|
|
30
|
-
rawData: message,
|
|
31
|
-
message: render,
|
|
32
|
-
"data-message-role": "assistant",
|
|
33
|
-
isLoading: true,
|
|
34
|
-
isGenerating: true
|
|
35
|
-
},
|
|
36
|
-
index
|
|
37
|
-
);
|
|
38
|
-
} else {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
} else {
|
|
42
|
-
const state = message.state;
|
|
43
|
-
let status = message.active ? "inProgress" : "complete";
|
|
44
|
-
const toRender = render({
|
|
45
|
-
status,
|
|
46
|
-
state,
|
|
47
|
-
nodeName: message.nodeName
|
|
48
|
-
});
|
|
49
|
-
if (!toRender && status === "complete") {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
if (!toRender && isCurrentMessage && inProgress) {
|
|
53
|
-
return /* @__PURE__ */ jsx(
|
|
54
|
-
AssistantMessage2,
|
|
55
|
-
{
|
|
56
|
-
"data-message-role": "assistant",
|
|
57
|
-
rawData: message,
|
|
58
|
-
isLoading: true,
|
|
59
|
-
isGenerating: true
|
|
60
|
-
},
|
|
61
|
-
index
|
|
62
|
-
);
|
|
63
|
-
} else if (!toRender) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
if (typeof toRender === "string") {
|
|
67
|
-
return /* @__PURE__ */ jsx(
|
|
68
|
-
AssistantMessage2,
|
|
69
|
-
{
|
|
70
|
-
rawData: message,
|
|
71
|
-
message: toRender,
|
|
72
|
-
isLoading: true,
|
|
73
|
-
isGenerating: true,
|
|
74
|
-
"data-message-role": "assistant"
|
|
75
|
-
},
|
|
76
|
-
index
|
|
77
|
-
);
|
|
78
|
-
} else {
|
|
79
|
-
return /* @__PURE__ */ jsx(
|
|
80
|
-
AssistantMessage2,
|
|
81
|
-
{
|
|
82
|
-
rawData: message,
|
|
83
|
-
"data-message-role": "agent-state-render",
|
|
84
|
-
isLoading: false,
|
|
85
|
-
isGenerating: false,
|
|
86
|
-
subComponent: toRender
|
|
87
|
-
},
|
|
88
|
-
index
|
|
89
|
-
);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
} else if (!inProgress || !isCurrentMessage) {
|
|
93
|
-
return null;
|
|
94
|
-
} else {
|
|
95
|
-
return /* @__PURE__ */ jsx(
|
|
96
|
-
AssistantMessage2,
|
|
97
|
-
{
|
|
98
|
-
rawData: message,
|
|
99
|
-
isLoading: true,
|
|
100
|
-
isGenerating: true,
|
|
101
|
-
"data-message-role": "assistant"
|
|
102
|
-
},
|
|
103
|
-
index
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export {
|
|
110
|
-
RenderAgentStateMessage
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=chunk-2II3Q27P.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/chat/messages/RenderAgentStateMessage.tsx"],"sourcesContent":["import { RenderMessageProps } from \"../props\";\nimport { CoagentInChatRenderFunction, useCopilotContext } from \"@copilotkit/react-core\";\nimport { AssistantMessage as DefaultAssistantMessage } from \"./AssistantMessage\";\n\nexport function RenderAgentStateMessage({\n AssistantMessage = DefaultAssistantMessage,\n ...props\n}: RenderMessageProps) {\n const { chatComponentsCache } = useCopilotContext();\n const { message, inProgress, index, isCurrentMessage } = props;\n\n if (message.isAgentStateMessage()) {\n let render: string | CoagentInChatRenderFunction | undefined;\n\n if (chatComponentsCache.current !== null) {\n render =\n chatComponentsCache.current.coAgentStateRenders[\n `${message.agentName}-${message.nodeName}`\n ] || chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-global`];\n }\n\n if (render) {\n // render a static string\n if (typeof render === \"string\") {\n // when render is static, we show it only when in progress\n if (isCurrentMessage && inProgress) {\n return (\n <AssistantMessage\n rawData={message}\n message={render}\n data-message-role=\"assistant\"\n key={index}\n isLoading={true}\n isGenerating={true}\n />\n );\n }\n // Done - silent by default to avoid a series of \"done\" messages\n else {\n return null;\n }\n }\n // render is a function\n else {\n const state = message.state;\n\n let status = message.active ? \"inProgress\" : \"complete\";\n\n const toRender = render({\n status: status as any,\n state,\n nodeName: message.nodeName,\n });\n\n // No result and complete: stay silent\n if (!toRender && status === \"complete\") {\n return null;\n }\n\n if (!toRender && isCurrentMessage && inProgress) {\n return (\n <AssistantMessage\n data-message-role=\"assistant\"\n key={index}\n rawData={message}\n isLoading={true}\n isGenerating={true}\n />\n );\n } else if (!toRender) {\n return null;\n }\n\n if (typeof toRender === \"string\") {\n return (\n <AssistantMessage\n rawData={message}\n message={toRender}\n isLoading={true}\n isGenerating={true}\n data-message-role=\"assistant\"\n key={index}\n />\n );\n } else {\n return (\n <AssistantMessage\n rawData={message}\n data-message-role=\"agent-state-render\"\n key={index}\n isLoading={false}\n isGenerating={false}\n subComponent={toRender}\n />\n );\n }\n }\n }\n // No render function found- show the default message\n else if (!inProgress || !isCurrentMessage) {\n // Done - silent by default to avoid a series of \"done\" messages\n return null;\n } else {\n // In progress\n return (\n <AssistantMessage\n rawData={message}\n isLoading={true}\n isGenerating={true}\n data-message-role=\"assistant\"\n key={index}\n />\n );\n }\n }\n}\n"],"mappings":";;;;;;;;AACA,SAAsC,yBAAyB;AA0BnD;AAvBL,SAAS,wBAAwB,IAGjB;AAHiB,eACtC;AAAA,sBAAAA,oBAAmB;AAAA,EALrB,IAIwC,IAEnC,kBAFmC,IAEnC;AAAA,IADH;AAAA;AAGA,QAAM,EAAE,oBAAoB,IAAI,kBAAkB;AAClD,QAAM,EAAE,SAAS,YAAY,OAAO,iBAAiB,IAAI;AAEzD,MAAI,QAAQ,oBAAoB,GAAG;AACjC,QAAI;AAEJ,QAAI,oBAAoB,YAAY,MAAM;AACxC,eACE,oBAAoB,QAAQ,oBAC1B,GAAG,QAAQ,aAAa,QAAQ,UAClC,KAAK,oBAAoB,QAAQ,oBAAoB,GAAG,QAAQ,kBAAkB;AAAA,IACtF;AAEA,QAAI,QAAQ;AAEV,UAAI,OAAO,WAAW,UAAU;AAE9B,YAAI,oBAAoB,YAAY;AAClC,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,SAAS;AAAA,cACT,qBAAkB;AAAA,cAElB,WAAW;AAAA,cACX,cAAc;AAAA;AAAA,YAFT;AAAA,UAGP;AAAA,QAEJ,OAEK;AACH,iBAAO;AAAA,QACT;AAAA,MACF,OAEK;AACH,cAAM,QAAQ,QAAQ;AAEtB,YAAI,SAAS,QAAQ,SAAS,eAAe;AAE7C,cAAM,WAAW,OAAO;AAAA,UACtB;AAAA,UACA;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB,CAAC;AAGD,YAAI,CAAC,YAAY,WAAW,YAAY;AACtC,iBAAO;AAAA,QACT;AAEA,YAAI,CAAC,YAAY,oBAAoB,YAAY;AAC/C,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,qBAAkB;AAAA,cAElB,SAAS;AAAA,cACT,WAAW;AAAA,cACX,cAAc;AAAA;AAAA,YAHT;AAAA,UAIP;AAAA,QAEJ,WAAW,CAAC,UAAU;AACpB,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,aAAa,UAAU;AAChC,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,SAAS;AAAA,cACT,WAAW;AAAA,cACX,cAAc;AAAA,cACd,qBAAkB;AAAA;AAAA,YACb;AAAA,UACP;AAAA,QAEJ,OAAO;AACL,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,qBAAkB;AAAA,cAElB,WAAW;AAAA,cACX,cAAc;AAAA,cACd,cAAc;AAAA;AAAA,YAHT;AAAA,UAIP;AAAA,QAEJ;AAAA,MACF;AAAA,IACF,WAES,CAAC,cAAc,CAAC,kBAAkB;AAEzC,aAAO;AAAA,IACT,OAAO;AAEL,aACE;AAAA,QAACA;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACT,WAAW;AAAA,UACX,cAAc;AAAA,UACd,qBAAkB;AAAA;AAAA,QACb;AAAA,MACP;AAAA,IAEJ;AAAA,EACF;AACF;","names":["AssistantMessage"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/chat/messages/RenderTextMessage.tsx"],"sourcesContent":["import { RenderMessageProps } from \"../props\";\nimport { UserMessage as DefaultUserMessage } from \"./UserMessage\";\nimport { AssistantMessage as DefaultAssistantMessage } from \"./AssistantMessage\";\n\nexport function RenderTextMessage({\n UserMessage = DefaultUserMessage,\n AssistantMessage = DefaultAssistantMessage,\n ...props\n}: RenderMessageProps) {\n const {\n message,\n inProgress,\n index,\n isCurrentMessage,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n markdownTagRenderers,\n } = props;\n\n if (message.isTextMessage()) {\n if (message.role === \"user\") {\n return (\n <UserMessage\n key={index}\n data-message-role=\"user\"\n message={message.content}\n rawData={message}\n />\n );\n } else if (message.role == \"assistant\") {\n return (\n <AssistantMessage\n key={index}\n data-message-role=\"assistant\"\n message={message.content}\n rawData={message}\n isLoading={inProgress && isCurrentMessage && !message.content}\n isGenerating={inProgress && isCurrentMessage && !!message.content}\n isCurrentMessage={isCurrentMessage}\n onRegenerate={() => onRegenerate?.(message.id)}\n onCopy={onCopy}\n onThumbsUp={onThumbsUp}\n onThumbsDown={onThumbsDown}\n markdownTagRenderers={markdownTagRenderers}\n />\n );\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAwBQ;AApBD,SAAS,kBAAkB,IAIX;AAJW,eAChC;AAAA,iBAAAA,eAAc;AAAA,IACd,kBAAAC,oBAAmB;AAAA,EANrB,IAIkC,IAG7B,kBAH6B,IAG7B;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,MAAI,QAAQ,cAAc,GAAG;AAC3B,QAAI,QAAQ,SAAS,QAAQ;AAC3B,aACE;AAAA,QAACD;AAAA,QAAA;AAAA,UAEC,qBAAkB;AAAA,UAClB,SAAS,QAAQ;AAAA,UACjB,SAAS;AAAA;AAAA,QAHJ;AAAA,MAIP;AAAA,IAEJ,WAAW,QAAQ,QAAQ,aAAa;AACtC,aACE;AAAA,QAACC;AAAA,QAAA;AAAA,UAEC,qBAAkB;AAAA,UAClB,SAAS,QAAQ;AAAA,UACjB,SAAS;AAAA,UACT,WAAW,cAAc,oBAAoB,CAAC,QAAQ;AAAA,UACtD,cAAc,cAAc,oBAAoB,CAAC,CAAC,QAAQ;AAAA,UAC1D;AAAA,UACA,cAAc,MAAM,6CAAe,QAAQ;AAAA,UAC3C;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,QAXK;AAAA,MAYP;AAAA,IAEJ;AAAA,EACF;AACF;","names":["UserMessage","AssistantMessage"]}
|
package/dist/chunk-53CVDVS5.mjs
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AssistantMessage
|
|
3
|
-
} from "./chunk-L3GZ7TXC.mjs";
|
|
4
|
-
import {
|
|
5
|
-
__objRest
|
|
6
|
-
} from "./chunk-MRXNTQOX.mjs";
|
|
7
|
-
|
|
8
|
-
// src/components/chat/messages/RenderActionExecutionMessage.tsx
|
|
9
|
-
import { MessageStatusCode } from "@copilotkit/runtime-client-gql";
|
|
10
|
-
import { useCopilotContext } from "@copilotkit/react-core";
|
|
11
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
-
function RenderActionExecutionMessage(_a) {
|
|
13
|
-
var _b = _a, {
|
|
14
|
-
AssistantMessage: AssistantMessage2 = AssistantMessage
|
|
15
|
-
} = _b, props = __objRest(_b, [
|
|
16
|
-
"AssistantMessage"
|
|
17
|
-
]);
|
|
18
|
-
const { chatComponentsCache } = useCopilotContext();
|
|
19
|
-
const { message, inProgress, index, isCurrentMessage, actionResult } = props;
|
|
20
|
-
if (message.isActionExecutionMessage()) {
|
|
21
|
-
if (chatComponentsCache.current !== null && (chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"])) {
|
|
22
|
-
const render = chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"];
|
|
23
|
-
if (typeof render === "string") {
|
|
24
|
-
if (isCurrentMessage && inProgress) {
|
|
25
|
-
return /* @__PURE__ */ jsx(
|
|
26
|
-
AssistantMessage2,
|
|
27
|
-
{
|
|
28
|
-
rawData: message,
|
|
29
|
-
"data-message-role": "assistant",
|
|
30
|
-
isLoading: false,
|
|
31
|
-
isGenerating: true,
|
|
32
|
-
message: render
|
|
33
|
-
},
|
|
34
|
-
index
|
|
35
|
-
);
|
|
36
|
-
} else {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
} else {
|
|
40
|
-
const args = message.arguments;
|
|
41
|
-
let status = "inProgress";
|
|
42
|
-
if (actionResult !== void 0) {
|
|
43
|
-
status = "complete";
|
|
44
|
-
} else if (message.status.code !== MessageStatusCode.Pending) {
|
|
45
|
-
status = "executing";
|
|
46
|
-
}
|
|
47
|
-
try {
|
|
48
|
-
const toRender = render({
|
|
49
|
-
status,
|
|
50
|
-
// Cast to any as RenderFunctionStatus is a union that can be complex to narrow here
|
|
51
|
-
args,
|
|
52
|
-
result: actionResult,
|
|
53
|
-
name: message.name,
|
|
54
|
-
messageId: message.id
|
|
55
|
-
// Pass messageId for HITL action correlation
|
|
56
|
-
});
|
|
57
|
-
if (!toRender && status === "complete") {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
if (typeof toRender === "string") {
|
|
61
|
-
return /* @__PURE__ */ jsx(
|
|
62
|
-
AssistantMessage2,
|
|
63
|
-
{
|
|
64
|
-
rawData: message,
|
|
65
|
-
"data-message-role": "assistant",
|
|
66
|
-
isLoading: false,
|
|
67
|
-
isGenerating: false,
|
|
68
|
-
message: toRender
|
|
69
|
-
},
|
|
70
|
-
index
|
|
71
|
-
);
|
|
72
|
-
} else {
|
|
73
|
-
return /* @__PURE__ */ jsx(
|
|
74
|
-
AssistantMessage2,
|
|
75
|
-
{
|
|
76
|
-
rawData: message,
|
|
77
|
-
"data-message-role": "action-render",
|
|
78
|
-
isLoading: false,
|
|
79
|
-
isGenerating: false,
|
|
80
|
-
subComponent: toRender
|
|
81
|
-
},
|
|
82
|
-
index
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
} catch (e) {
|
|
86
|
-
console.error(`Error executing render function for action ${message.name}: ${e}`);
|
|
87
|
-
return /* @__PURE__ */ jsx(
|
|
88
|
-
AssistantMessage2,
|
|
89
|
-
{
|
|
90
|
-
rawData: message,
|
|
91
|
-
"data-message-role": "assistant",
|
|
92
|
-
isLoading: false,
|
|
93
|
-
isGenerating: false,
|
|
94
|
-
subComponent: /* @__PURE__ */ jsxs("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
95
|
-
/* @__PURE__ */ jsxs("b", { children: [
|
|
96
|
-
"\u274C Error executing render function for action ",
|
|
97
|
-
message.name,
|
|
98
|
-
":"
|
|
99
|
-
] }),
|
|
100
|
-
/* @__PURE__ */ jsx("pre", { children: e instanceof Error ? e.message : String(e) })
|
|
101
|
-
] })
|
|
102
|
-
},
|
|
103
|
-
index
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
} else if (!inProgress || !isCurrentMessage) {
|
|
108
|
-
return null;
|
|
109
|
-
} else {
|
|
110
|
-
return /* @__PURE__ */ jsx(
|
|
111
|
-
AssistantMessage2,
|
|
112
|
-
{
|
|
113
|
-
rawData: message,
|
|
114
|
-
"data-message-role": "assistant",
|
|
115
|
-
isLoading: true,
|
|
116
|
-
isGenerating: true
|
|
117
|
-
},
|
|
118
|
-
index
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
export {
|
|
125
|
-
RenderActionExecutionMessage
|
|
126
|
-
};
|
|
127
|
-
//# sourceMappingURL=chunk-53CVDVS5.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/chat/messages/RenderActionExecutionMessage.tsx"],"sourcesContent":["import { MessageStatusCode } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { RenderFunctionStatus, useCopilotContext } from \"@copilotkit/react-core\";\nimport { AssistantMessage as DefaultAssistantMessage } from \"./AssistantMessage\";\n\nexport function RenderActionExecutionMessage({\n AssistantMessage = DefaultAssistantMessage,\n ...props\n}: RenderMessageProps) {\n const { chatComponentsCache } = useCopilotContext();\n const { message, inProgress, index, isCurrentMessage, actionResult } = props;\n\n if (message.isActionExecutionMessage()) {\n if (\n chatComponentsCache.current !== null &&\n (chatComponentsCache.current.actions[message.name] ||\n chatComponentsCache.current.actions[\"*\"])\n ) {\n const render =\n chatComponentsCache.current.actions[message.name] ||\n chatComponentsCache.current.actions[\"*\"];\n // render a static string\n if (typeof render === \"string\") {\n // when render is static, we show it only when in progress\n if (isCurrentMessage && inProgress) {\n return (\n <AssistantMessage\n rawData={message}\n key={index}\n data-message-role=\"assistant\"\n isLoading={false}\n isGenerating={true}\n message={render}\n />\n );\n }\n // Done - silent by default to avoid a series of \"done\" messages\n else {\n return null;\n }\n }\n // render is a function\n else {\n const args = message.arguments;\n\n let status: RenderFunctionStatus = \"inProgress\";\n\n if (actionResult !== undefined) {\n status = \"complete\";\n } else if (message.status.code !== MessageStatusCode.Pending) {\n status = \"executing\";\n }\n\n try {\n const toRender = render({\n status: status as any, // Cast to any as RenderFunctionStatus is a union that can be complex to narrow here\n args,\n result: actionResult,\n name: message.name,\n messageId: message.id, // Pass messageId for HITL action correlation\n } as any);\n // No result and complete: stay silent\n if (!toRender && status === \"complete\") {\n return null;\n }\n if (typeof toRender === \"string\") {\n return (\n <AssistantMessage\n rawData={message}\n data-message-role=\"assistant\"\n key={index}\n isLoading={false}\n isGenerating={false}\n message={toRender}\n />\n );\n } else {\n return (\n <AssistantMessage\n rawData={message}\n data-message-role=\"action-render\"\n key={index}\n isLoading={false}\n isGenerating={false}\n subComponent={toRender}\n />\n );\n }\n } catch (e) {\n // It's useful to log this error for developers to debug their custom render functions\n console.error(`Error executing render function for action ${message.name}: ${e}`);\n return (\n <AssistantMessage\n rawData={message}\n data-message-role=\"assistant\"\n key={index}\n isLoading={false}\n isGenerating={false}\n subComponent={\n <div className=\"copilotKitMessage copilotKitAssistantMessage\">\n <b>❌ Error executing render function for action {message.name}:</b>\n <pre>{e instanceof Error ? e.message : String(e)}</pre>\n </div>\n }\n />\n );\n }\n }\n }\n // No render function found- show the default message\n else if (!inProgress || !isCurrentMessage) {\n // Done - silent by default to avoid a series of \"done\" messages\n return null;\n } else {\n // In progress\n return (\n <AssistantMessage\n rawData={message}\n key={index}\n data-message-role=\"assistant\"\n isLoading={true}\n isGenerating={true}\n />\n );\n }\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,yBAAyB;AAElC,SAA+B,yBAAyB;AAwB5C,cA0EM,YA1EN;AArBL,SAAS,6BAA6B,IAGtB;AAHsB,eAC3C;AAAA,sBAAAA,oBAAmB;AAAA,EANrB,IAK6C,IAExC,kBAFwC,IAExC;AAAA,IADH;AAAA;AAGA,QAAM,EAAE,oBAAoB,IAAI,kBAAkB;AAClD,QAAM,EAAE,SAAS,YAAY,OAAO,kBAAkB,aAAa,IAAI;AAEvE,MAAI,QAAQ,yBAAyB,GAAG;AACtC,QACE,oBAAoB,YAAY,SAC/B,oBAAoB,QAAQ,QAAQ,QAAQ,IAAI,KAC/C,oBAAoB,QAAQ,QAAQ,GAAG,IACzC;AACA,YAAM,SACJ,oBAAoB,QAAQ,QAAQ,QAAQ,IAAI,KAChD,oBAAoB,QAAQ,QAAQ,GAAG;AAEzC,UAAI,OAAO,WAAW,UAAU;AAE9B,YAAI,oBAAoB,YAAY;AAClC,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cAET,qBAAkB;AAAA,cAClB,WAAW;AAAA,cACX,cAAc;AAAA,cACd,SAAS;AAAA;AAAA,YAJJ;AAAA,UAKP;AAAA,QAEJ,OAEK;AACH,iBAAO;AAAA,QACT;AAAA,MACF,OAEK;AACH,cAAM,OAAO,QAAQ;AAErB,YAAI,SAA+B;AAEnC,YAAI,iBAAiB,QAAW;AAC9B,mBAAS;AAAA,QACX,WAAW,QAAQ,OAAO,SAAS,kBAAkB,SAAS;AAC5D,mBAAS;AAAA,QACX;AAEA,YAAI;AACF,gBAAM,WAAW,OAAO;AAAA,YACtB;AAAA;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,YACR,MAAM,QAAQ;AAAA,YACd,WAAW,QAAQ;AAAA;AAAA,UACrB,CAAQ;AAER,cAAI,CAAC,YAAY,WAAW,YAAY;AACtC,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,aAAa,UAAU;AAChC,mBACE;AAAA,cAACA;AAAA,cAAA;AAAA,gBACC,SAAS;AAAA,gBACT,qBAAkB;AAAA,gBAElB,WAAW;AAAA,gBACX,cAAc;AAAA,gBACd,SAAS;AAAA;AAAA,cAHJ;AAAA,YAIP;AAAA,UAEJ,OAAO;AACL,mBACE;AAAA,cAACA;AAAA,cAAA;AAAA,gBACC,SAAS;AAAA,gBACT,qBAAkB;AAAA,gBAElB,WAAW;AAAA,gBACX,cAAc;AAAA,gBACd,cAAc;AAAA;AAAA,cAHT;AAAA,YAIP;AAAA,UAEJ;AAAA,QACF,SAAS,GAAP;AAEA,kBAAQ,MAAM,8CAA8C,QAAQ,SAAS,GAAG;AAChF,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,qBAAkB;AAAA,cAElB,WAAW;AAAA,cACX,cAAc;AAAA,cACd,cACE,qBAAC,SAAI,WAAU,gDACb;AAAA,qCAAC,OAAE;AAAA;AAAA,kBAA8C,QAAQ;AAAA,kBAAK;AAAA,mBAAC;AAAA,gBAC/D,oBAAC,SAAK,uBAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,GAAE;AAAA,iBACnD;AAAA;AAAA,YAPG;AAAA,UASP;AAAA,QAEJ;AAAA,MACF;AAAA,IACF,WAES,CAAC,cAAc,CAAC,kBAAkB;AAEzC,aAAO;AAAA,IACT,OAAO;AAEL,aACE;AAAA,QAACA;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,UAET,qBAAkB;AAAA,UAClB,WAAW;AAAA,UACX,cAAc;AAAA;AAAA,QAHT;AAAA,MAIP;AAAA,IAEJ;AAAA,EACF;AACF;","names":["AssistantMessage"]}
|