@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.
Files changed (178) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/{chunk-KENCH7RN.mjs → chunk-B5IFB5YJ.mjs} +1 -1
  3. package/dist/chunk-B5IFB5YJ.mjs.map +1 -0
  4. package/dist/chunk-DBKRAOH7.mjs +34 -0
  5. package/dist/chunk-DBKRAOH7.mjs.map +1 -0
  6. package/dist/{chunk-4HUXYD3B.mjs → chunk-DTRPPNSA.mjs} +2 -2
  7. package/dist/{chunk-YTXEWDNC.mjs → chunk-E6MQUIZW.mjs} +15 -4
  8. package/dist/chunk-E6MQUIZW.mjs.map +1 -0
  9. package/dist/{chunk-L3GZ7TXC.mjs → chunk-GCKKSSBU.mjs} +21 -24
  10. package/dist/chunk-GCKKSSBU.mjs.map +1 -0
  11. package/dist/{chunk-KN2GCKBE.mjs → chunk-GJ3MFNBX.mjs} +6 -6
  12. package/dist/{chunk-32MUWKL3.mjs → chunk-JHUTTP5C.mjs} +21 -17
  13. package/dist/chunk-JHUTTP5C.mjs.map +1 -0
  14. package/dist/{chunk-HKTWKCPS.mjs → chunk-LXCD3K7B.mjs} +127 -92
  15. package/dist/chunk-LXCD3K7B.mjs.map +1 -0
  16. package/dist/{chunk-S5MBUNGN.mjs → chunk-O72ZB5V3.mjs} +4 -4
  17. package/dist/chunk-O72ZB5V3.mjs.map +1 -0
  18. package/dist/{chunk-QGSPTXOV.mjs → chunk-O7KTFUAN.mjs} +2 -2
  19. package/dist/chunk-O7KTFUAN.mjs.map +1 -0
  20. package/dist/chunk-Q2467VHZ.mjs +30 -0
  21. package/dist/chunk-Q2467VHZ.mjs.map +1 -0
  22. package/dist/{chunk-H3EM63WS.mjs → chunk-VLNT34X3.mjs} +2 -2
  23. package/dist/chunk-VVL6JFCJ.mjs +16 -0
  24. package/dist/chunk-VVL6JFCJ.mjs.map +1 -0
  25. package/dist/chunk-WHDNKXMP.mjs +135 -0
  26. package/dist/chunk-WHDNKXMP.mjs.map +1 -0
  27. package/dist/{chunk-ALIBUJML.mjs → chunk-WPVTPQ7X.mjs} +2 -2
  28. package/dist/components/chat/Button.d.ts +1 -1
  29. package/dist/components/chat/Chat.d.ts +119 -28
  30. package/dist/components/chat/Chat.js +298 -658
  31. package/dist/components/chat/Chat.js.map +1 -1
  32. package/dist/components/chat/Chat.mjs +12 -15
  33. package/dist/components/chat/CodeBlock.js.map +1 -1
  34. package/dist/components/chat/CodeBlock.mjs +1 -1
  35. package/dist/components/chat/Header.d.ts +1 -1
  36. package/dist/components/chat/Input.d.ts +1 -1
  37. package/dist/components/chat/Input.js +3 -3
  38. package/dist/components/chat/Input.js.map +1 -1
  39. package/dist/components/chat/Input.mjs +2 -2
  40. package/dist/components/chat/Markdown.js +13 -2
  41. package/dist/components/chat/Markdown.js.map +1 -1
  42. package/dist/components/chat/Markdown.mjs +2 -2
  43. package/dist/components/chat/Messages.d.ts +3 -3
  44. package/dist/components/chat/Messages.js +40 -116
  45. package/dist/components/chat/Messages.js.map +1 -1
  46. package/dist/components/chat/Messages.mjs +1 -1
  47. package/dist/components/chat/Modal.d.ts +7 -2
  48. package/dist/components/chat/Modal.js +308 -668
  49. package/dist/components/chat/Modal.js.map +1 -1
  50. package/dist/components/chat/Modal.mjs +13 -16
  51. package/dist/components/chat/Popup.d.ts +7 -2
  52. package/dist/components/chat/Popup.js +310 -670
  53. package/dist/components/chat/Popup.js.map +1 -1
  54. package/dist/components/chat/Popup.mjs +14 -17
  55. package/dist/components/chat/Sidebar.d.ts +7 -2
  56. package/dist/components/chat/Sidebar.js +312 -672
  57. package/dist/components/chat/Sidebar.js.map +1 -1
  58. package/dist/components/chat/Sidebar.mjs +14 -17
  59. package/dist/components/chat/Suggestion.d.ts +2 -9
  60. package/dist/components/chat/Suggestion.js +6 -96
  61. package/dist/components/chat/Suggestion.js.map +1 -1
  62. package/dist/components/chat/Suggestion.mjs +3 -5
  63. package/dist/components/chat/Suggestions.d.ts +1 -1
  64. package/dist/components/chat/Suggestions.js +4 -3
  65. package/dist/components/chat/Suggestions.js.map +1 -1
  66. package/dist/components/chat/Suggestions.mjs +2 -2
  67. package/dist/components/chat/Window.d.ts +1 -1
  68. package/dist/components/chat/index.d.ts +8 -3
  69. package/dist/components/chat/index.js +316 -676
  70. package/dist/components/chat/index.js.map +1 -1
  71. package/dist/components/chat/index.mjs +18 -21
  72. package/dist/components/chat/messages/AssistantMessage.d.ts +1 -1
  73. package/dist/components/chat/messages/AssistantMessage.js +32 -24
  74. package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
  75. package/dist/components/chat/messages/AssistantMessage.mjs +3 -3
  76. package/dist/components/chat/messages/ImageRenderer.d.ts +12 -0
  77. package/dist/components/chat/messages/ImageRenderer.js +58 -0
  78. package/dist/components/chat/messages/ImageRenderer.js.map +1 -0
  79. package/dist/components/chat/messages/ImageRenderer.mjs +8 -0
  80. package/dist/components/chat/messages/RenderMessage.d.ts +9 -0
  81. package/dist/components/chat/messages/{RenderTextMessage.js → RenderMessage.js} +92 -47
  82. package/dist/components/chat/messages/RenderMessage.js.map +1 -0
  83. package/dist/components/chat/messages/RenderMessage.mjs +16 -0
  84. package/dist/components/chat/messages/UserMessage.d.ts +1 -1
  85. package/dist/components/chat/messages/UserMessage.js +7 -1
  86. package/dist/components/chat/messages/UserMessage.js.map +1 -1
  87. package/dist/components/chat/messages/UserMessage.mjs +1 -1
  88. package/dist/components/chat/props.d.ts +32 -27
  89. package/dist/components/chat/props.js.map +1 -1
  90. package/dist/components/index.d.ts +8 -3
  91. package/dist/components/index.js +316 -676
  92. package/dist/components/index.js.map +1 -1
  93. package/dist/components/index.mjs +18 -21
  94. package/dist/hooks/use-push-to-talk.d.ts +1 -1
  95. package/dist/hooks/use-push-to-talk.js +3 -3
  96. package/dist/hooks/use-push-to-talk.js.map +1 -1
  97. package/dist/hooks/use-push-to-talk.mjs +1 -1
  98. package/dist/index.css +59 -3
  99. package/dist/index.css.map +1 -1
  100. package/dist/index.d.ts +8 -3
  101. package/dist/index.js +322 -682
  102. package/dist/index.js.map +1 -1
  103. package/dist/index.mjs +18 -21
  104. package/dist/types/css.d.ts +3 -0
  105. package/dist/types/css.js.map +1 -1
  106. package/package.json +4 -4
  107. package/src/components/chat/Chat.tsx +193 -105
  108. package/src/components/chat/CodeBlock.tsx +1 -1
  109. package/src/components/chat/Markdown.tsx +12 -2
  110. package/src/components/chat/Messages.tsx +43 -122
  111. package/src/components/chat/Suggestion.tsx +5 -108
  112. package/src/components/chat/Suggestions.tsx +0 -1
  113. package/src/components/chat/index.tsx +1 -1
  114. package/src/components/chat/messages/AssistantMessage.tsx +15 -23
  115. package/src/components/chat/messages/ImageRenderer.tsx +37 -0
  116. package/src/components/chat/messages/{RenderTextMessage.tsx → RenderMessage.tsx} +10 -9
  117. package/src/components/chat/messages/UserMessage.tsx +16 -5
  118. package/src/components/chat/props.ts +36 -28
  119. package/src/css/colors.css +10 -0
  120. package/src/css/markdown.css +8 -0
  121. package/src/css/messages.css +54 -5
  122. package/src/css/suggestions.css +1 -1
  123. package/src/hooks/use-push-to-talk.tsx +6 -5
  124. package/src/styles.css +1 -1
  125. package/src/types/css.ts +3 -0
  126. package/dist/chunk-2II3Q27P.mjs +0 -112
  127. package/dist/chunk-2II3Q27P.mjs.map +0 -1
  128. package/dist/chunk-32MUWKL3.mjs.map +0 -1
  129. package/dist/chunk-53CVDVS5.mjs +0 -127
  130. package/dist/chunk-53CVDVS5.mjs.map +0 -1
  131. package/dist/chunk-B3D7U7TJ.mjs +0 -211
  132. package/dist/chunk-B3D7U7TJ.mjs.map +0 -1
  133. package/dist/chunk-C7OB63U5.mjs +0 -36
  134. package/dist/chunk-C7OB63U5.mjs.map +0 -1
  135. package/dist/chunk-HKTWKCPS.mjs.map +0 -1
  136. package/dist/chunk-HWMFMBJC.mjs +0 -10
  137. package/dist/chunk-HWMFMBJC.mjs.map +0 -1
  138. package/dist/chunk-IMBPSLL4.mjs +0 -104
  139. package/dist/chunk-IMBPSLL4.mjs.map +0 -1
  140. package/dist/chunk-KENCH7RN.mjs.map +0 -1
  141. package/dist/chunk-L3GZ7TXC.mjs.map +0 -1
  142. package/dist/chunk-QGSPTXOV.mjs.map +0 -1
  143. package/dist/chunk-S5MBUNGN.mjs.map +0 -1
  144. package/dist/chunk-ULDQXCED.mjs +0 -78
  145. package/dist/chunk-ULDQXCED.mjs.map +0 -1
  146. package/dist/chunk-YTXEWDNC.mjs.map +0 -1
  147. package/dist/components/chat/messages/RenderActionExecutionMessage.d.ts +0 -9
  148. package/dist/components/chat/messages/RenderActionExecutionMessage.js +0 -869
  149. package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +0 -1
  150. package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +0 -14
  151. package/dist/components/chat/messages/RenderAgentStateMessage.d.ts +0 -9
  152. package/dist/components/chat/messages/RenderAgentStateMessage.js +0 -854
  153. package/dist/components/chat/messages/RenderAgentStateMessage.js.map +0 -1
  154. package/dist/components/chat/messages/RenderAgentStateMessage.mjs +0 -14
  155. package/dist/components/chat/messages/RenderImageMessage.d.ts +0 -9
  156. package/dist/components/chat/messages/RenderImageMessage.js +0 -823
  157. package/dist/components/chat/messages/RenderImageMessage.js.map +0 -1
  158. package/dist/components/chat/messages/RenderImageMessage.mjs +0 -15
  159. package/dist/components/chat/messages/RenderImageMessage.mjs.map +0 -1
  160. package/dist/components/chat/messages/RenderResultMessage.d.ts +0 -9
  161. package/dist/components/chat/messages/RenderResultMessage.js +0 -778
  162. package/dist/components/chat/messages/RenderResultMessage.js.map +0 -1
  163. package/dist/components/chat/messages/RenderResultMessage.mjs +0 -14
  164. package/dist/components/chat/messages/RenderResultMessage.mjs.map +0 -1
  165. package/dist/components/chat/messages/RenderTextMessage.d.ts +0 -9
  166. package/dist/components/chat/messages/RenderTextMessage.js.map +0 -1
  167. package/dist/components/chat/messages/RenderTextMessage.mjs +0 -15
  168. package/dist/components/chat/messages/RenderTextMessage.mjs.map +0 -1
  169. package/src/components/chat/messages/RenderActionExecutionMessage.tsx +0 -127
  170. package/src/components/chat/messages/RenderAgentStateMessage.tsx +0 -116
  171. package/src/components/chat/messages/RenderImageMessage.tsx +0 -64
  172. package/src/components/chat/messages/RenderResultMessage.tsx +0 -26
  173. /package/dist/{chunk-4HUXYD3B.mjs.map → chunk-DTRPPNSA.mjs.map} +0 -0
  174. /package/dist/{chunk-KN2GCKBE.mjs.map → chunk-GJ3MFNBX.mjs.map} +0 -0
  175. /package/dist/{chunk-H3EM63WS.mjs.map → chunk-VLNT34X3.mjs.map} +0 -0
  176. /package/dist/{chunk-ALIBUJML.mjs.map → chunk-WPVTPQ7X.mjs.map} +0 -0
  177. /package/dist/components/chat/messages/{RenderActionExecutionMessage.mjs.map → ImageRenderer.mjs.map} +0 -0
  178. /package/dist/components/chat/messages/{RenderAgentStateMessage.mjs.map → RenderMessage.mjs.map} +0 -0
@@ -1,6 +1,7 @@
1
- import { Message, TextMessage } from "@copilotkit/runtime-client-gql";
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
- RenderTextMessage: React.ComponentType<RenderMessageProps>;
35
- RenderActionExecutionMessage: React.ComponentType<RenderMessageProps>;
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: TextMessage) => void;
51
+ onThumbsUp?: (message: Message) => void;
54
52
 
55
53
  /**
56
54
  * Callback function for thumbs down feedback
57
55
  */
58
- onThumbsDown?: (message: TextMessage) => void;
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?: string;
73
- rawData: any;
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?: string;
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: TextMessage) => void;
109
+ onThumbsUp?: (message: Message) => void;
125
110
 
126
111
  /**
127
112
  * Callback function for thumbs down feedback
128
113
  */
129
- onThumbsDown?: (message: TextMessage) => void;
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: TextMessage) => void;
151
+ onThumbsUp?: (message: Message) => void;
161
152
 
162
153
  /**
163
154
  * Callback function for thumbs down feedback
164
155
  */
165
- onThumbsDown?: (message: TextMessage) => void;
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
+ }
@@ -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 */
@@ -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
+ }
@@ -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: 0 auto 8px auto;
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: 90%;
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
+ }
@@ -40,4 +40,4 @@
40
40
 
41
41
  .copilotKitMessages footer .suggestions button svg {
42
42
  margin-right: 6px;
43
- }
43
+ }
@@ -1,5 +1,6 @@
1
1
  import { useCopilotContext, useCopilotMessagesContext } from "@copilotkit/react-core";
2
- import { Message, TextMessage } from "@copilotkit/runtime-client-gql";
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 messagesAfterLast = context.messages
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
@@ -11,4 +11,4 @@
11
11
  @import "./css/suggestions.css";
12
12
  @import "./css/panel.css";
13
13
  @import "./css/console.css";
14
- @import "./css/crew.css";
14
+ @import "./css/crew.css";
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;
@@ -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"]}
@@ -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"]}