@copilotkit/react-ui 1.1.1-feat-runtime-remote-actions.2 → 1.1.1-feat-runtime-remote-actions.4

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 (42) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/{chunk-AAX6U6YB.mjs → chunk-4II7NDKP.mjs} +9 -9
  3. package/dist/{chunk-I4QG2ZZU.mjs → chunk-DAHXB2SW.mjs} +4 -4
  4. package/dist/{chunk-MEVD4R3Q.mjs → chunk-G3RCRTQZ.mjs} +2 -2
  5. package/dist/{chunk-4V6JWNFZ.mjs → chunk-JU7KYJD4.mjs} +10 -10
  6. package/dist/{chunk-3K4EOAP3.mjs → chunk-LKY2XFK5.mjs} +2 -2
  7. package/dist/{chunk-2C5JDPHV.mjs → chunk-PDU5NXDS.mjs} +54 -10
  8. package/dist/chunk-PDU5NXDS.mjs.map +1 -0
  9. package/dist/components/chat/Chat.js +55 -11
  10. package/dist/components/chat/Chat.js.map +1 -1
  11. package/dist/components/chat/Chat.mjs +9 -9
  12. package/dist/components/chat/Messages.js +53 -9
  13. package/dist/components/chat/Messages.js.map +1 -1
  14. package/dist/components/chat/Messages.mjs +2 -2
  15. package/dist/components/chat/Modal.js +55 -11
  16. package/dist/components/chat/Modal.js.map +1 -1
  17. package/dist/components/chat/Modal.mjs +11 -11
  18. package/dist/components/chat/Popup.js +55 -11
  19. package/dist/components/chat/Popup.js.map +1 -1
  20. package/dist/components/chat/Popup.mjs +12 -12
  21. package/dist/components/chat/Sidebar.js +55 -11
  22. package/dist/components/chat/Sidebar.js.map +1 -1
  23. package/dist/components/chat/Sidebar.mjs +12 -12
  24. package/dist/components/chat/index.js +55 -11
  25. package/dist/components/chat/index.js.map +1 -1
  26. package/dist/components/chat/index.mjs +15 -15
  27. package/dist/components/dev-console/console.mjs +2 -2
  28. package/dist/components/dev-console/index.mjs +2 -2
  29. package/dist/components/index.js +55 -11
  30. package/dist/components/index.js.map +1 -1
  31. package/dist/components/index.mjs +15 -15
  32. package/dist/index.js +55 -11
  33. package/dist/index.js.map +1 -1
  34. package/dist/index.mjs +15 -15
  35. package/package.json +7 -7
  36. package/src/components/chat/Messages.tsx +70 -8
  37. package/dist/chunk-2C5JDPHV.mjs.map +0 -1
  38. /package/dist/{chunk-AAX6U6YB.mjs.map → chunk-4II7NDKP.mjs.map} +0 -0
  39. /package/dist/{chunk-I4QG2ZZU.mjs.map → chunk-DAHXB2SW.mjs.map} +0 -0
  40. /package/dist/{chunk-MEVD4R3Q.mjs.map → chunk-G3RCRTQZ.mjs.map} +0 -0
  41. /package/dist/{chunk-4V6JWNFZ.mjs.map → chunk-JU7KYJD4.mjs.map} +0 -0
  42. /package/dist/{chunk-3K4EOAP3.mjs.map → chunk-LKY2XFK5.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # ui
2
2
 
3
+ ## 1.1.1-feat-runtime-remote-actions.4
4
+
5
+ ### Patch Changes
6
+
7
+ - Show agent state in the chat window
8
+ - Updated dependencies
9
+ - @copilotkit/runtime-client-gql@1.1.1-feat-runtime-remote-actions.4
10
+ - @copilotkit/react-core@1.1.1-feat-runtime-remote-actions.4
11
+ - @copilotkit/shared@1.1.1-feat-runtime-remote-actions.4
12
+
13
+ ## 1.1.1-feat-runtime-remote-actions.3
14
+
15
+ ### Patch Changes
16
+
17
+ - stream intermediate state
18
+ - Updated dependencies
19
+ - @copilotkit/runtime-client-gql@1.1.1-feat-runtime-remote-actions.3
20
+ - @copilotkit/react-core@1.1.1-feat-runtime-remote-actions.3
21
+ - @copilotkit/shared@1.1.1-feat-runtime-remote-actions.3
22
+
3
23
  ## 1.1.1-feat-runtime-remote-actions.2
4
24
 
5
25
  ### Patch Changes
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  Window
3
3
  } from "./chunk-LLOSOTAT.mjs";
4
- import {
5
- Header
6
- } from "./chunk-SE6DAYSX.mjs";
7
4
  import {
8
5
  Button
9
6
  } from "./chunk-UC3Y7MWX.mjs";
10
7
  import {
11
8
  CopilotChat
12
- } from "./chunk-4V6JWNFZ.mjs";
13
- import {
14
- Input
15
- } from "./chunk-U6J5DGOE.mjs";
9
+ } from "./chunk-JU7KYJD4.mjs";
16
10
  import {
17
11
  Messages
18
- } from "./chunk-2C5JDPHV.mjs";
12
+ } from "./chunk-PDU5NXDS.mjs";
19
13
  import {
20
14
  ResponseButton
21
15
  } from "./chunk-XSUSSWDS.mjs";
16
+ import {
17
+ Header
18
+ } from "./chunk-SE6DAYSX.mjs";
19
+ import {
20
+ Input
21
+ } from "./chunk-U6J5DGOE.mjs";
22
22
  import {
23
23
  ChatContextProvider
24
24
  } from "./chunk-BJPGMY3I.mjs";
@@ -90,4 +90,4 @@ var CopilotModal = ({
90
90
  export {
91
91
  CopilotModal
92
92
  };
93
- //# sourceMappingURL=chunk-AAX6U6YB.mjs.map
93
+ //# sourceMappingURL=chunk-4II7NDKP.mjs.map
@@ -5,6 +5,9 @@ import {
5
5
  logReadables,
6
6
  shouldShowDevConsole
7
7
  } from "./chunk-H7TM5JE6.mjs";
8
+ import {
9
+ SmallSpinnerIcon
10
+ } from "./chunk-FZC7X5PK.mjs";
8
11
  import {
9
12
  CheckIcon,
10
13
  ChevronDownIcon,
@@ -12,9 +15,6 @@ import {
12
15
  ExclamationMarkIcon,
13
16
  ExclamationMarkTriangleIcon
14
17
  } from "./chunk-OTPAZXVR.mjs";
15
- import {
16
- SmallSpinnerIcon
17
- } from "./chunk-FZC7X5PK.mjs";
18
18
 
19
19
  // src/components/dev-console/console.tsx
20
20
  import { useCopilotContext } from "@copilotkit/react-core";
@@ -217,4 +217,4 @@ export {
217
217
  CopilotDevConsole,
218
218
  DebugMenuButton
219
219
  };
220
- //# sourceMappingURL=chunk-I4QG2ZZU.mjs.map
220
+ //# sourceMappingURL=chunk-DAHXB2SW.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CopilotModal
3
- } from "./chunk-AAX6U6YB.mjs";
3
+ } from "./chunk-4II7NDKP.mjs";
4
4
  import {
5
5
  __spreadProps,
6
6
  __spreadValues
@@ -27,4 +27,4 @@ function CopilotSidebar(props) {
27
27
  export {
28
28
  CopilotSidebar
29
29
  };
30
- //# sourceMappingURL=chunk-MEVD4R3Q.mjs.map
30
+ //# sourceMappingURL=chunk-G3RCRTQZ.mjs.map
@@ -1,23 +1,23 @@
1
+ import {
2
+ Messages
3
+ } from "./chunk-PDU5NXDS.mjs";
4
+ import {
5
+ ResponseButton
6
+ } from "./chunk-XSUSSWDS.mjs";
1
7
  import {
2
8
  Suggestion,
3
9
  reloadSuggestions
4
10
  } from "./chunk-WCPLXRZX.mjs";
5
- import {
6
- CopilotDevConsole
7
- } from "./chunk-I4QG2ZZU.mjs";
8
11
  import {
9
12
  Input
10
13
  } from "./chunk-U6J5DGOE.mjs";
11
- import {
12
- Messages
13
- } from "./chunk-2C5JDPHV.mjs";
14
- import {
15
- ResponseButton
16
- } from "./chunk-XSUSSWDS.mjs";
17
14
  import {
18
15
  ChatContext,
19
16
  ChatContextProvider
20
17
  } from "./chunk-BJPGMY3I.mjs";
18
+ import {
19
+ CopilotDevConsole
20
+ } from "./chunk-DAHXB2SW.mjs";
21
21
  import {
22
22
  __async
23
23
  } from "./chunk-MRXNTQOX.mjs";
@@ -164,4 +164,4 @@ export {
164
164
  WrappedCopilotChat,
165
165
  useCopilotChatLogic
166
166
  };
167
- //# sourceMappingURL=chunk-4V6JWNFZ.mjs.map
167
+ //# sourceMappingURL=chunk-JU7KYJD4.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CopilotModal
3
- } from "./chunk-AAX6U6YB.mjs";
3
+ } from "./chunk-4II7NDKP.mjs";
4
4
  import {
5
5
  __spreadProps,
6
6
  __spreadValues
@@ -18,4 +18,4 @@ function CopilotPopup(props) {
18
18
  export {
19
19
  CopilotPopup
20
20
  };
21
- //# sourceMappingURL=chunk-3K4EOAP3.mjs.map
21
+ //# sourceMappingURL=chunk-LKY2XFK5.mjs.map
@@ -18,7 +18,7 @@ import {
18
18
  } from "@copilotkit/runtime-client-gql";
19
19
  import { jsx, jsxs } from "react/jsx-runtime";
20
20
  var Messages = ({ messages, inProgress, children }) => {
21
- const { chatComponentsCache } = useCopilotContext();
21
+ const { chatComponentsCache, chatUI } = useCopilotContext();
22
22
  const context = useChatContext();
23
23
  const initialMessages = useMemo(
24
24
  () => makeInitialMessages(context.labels.initial),
@@ -56,8 +56,8 @@ var Messages = ({ messages, inProgress, children }) => {
56
56
  } else if (message instanceof TextMessage && message.role == "assistant") {
57
57
  return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: isCurrentMessage && inProgress && !message.content ? context.icons.spinnerIcon : /* @__PURE__ */ jsx(Markdown, { content: message.content }) }, index);
58
58
  } else if (message instanceof ActionExecutionMessage) {
59
- if (chatComponentsCache.current !== null && chatComponentsCache.current[message.name]) {
60
- const render = chatComponentsCache.current[message.name];
59
+ if (chatComponentsCache.current !== null && chatComponentsCache.current.actions[message.name]) {
60
+ const render = chatComponentsCache.current.actions[message.name];
61
61
  if (typeof render === "string") {
62
62
  if (isCurrentMessage && inProgress) {
63
63
  return /* @__PURE__ */ jsxs("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
@@ -70,18 +70,18 @@ var Messages = ({ messages, inProgress, children }) => {
70
70
  }
71
71
  } else {
72
72
  const args = message.arguments;
73
- let status = "inProgress";
73
+ let status2 = "inProgress";
74
74
  if (functionResults[message.id] !== void 0) {
75
- status = "complete";
75
+ status2 = "complete";
76
76
  } else if (message.status.code !== MessageStatusCode.Pending) {
77
- status = "executing";
77
+ status2 = "executing";
78
78
  }
79
79
  const toRender = render({
80
- status,
80
+ status: status2,
81
81
  args,
82
82
  result: functionResults[message.id]
83
83
  });
84
- if (!toRender && status === "complete") {
84
+ if (!toRender && status2 === "complete") {
85
85
  return null;
86
86
  }
87
87
  if (typeof toRender === "string") {
@@ -99,7 +99,51 @@ var Messages = ({ messages, inProgress, children }) => {
99
99
  } else {
100
100
  return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
101
101
  }
102
- } else if ((message instanceof AgentStateMessage || message instanceof ResultMessage) && inProgress && isCurrentMessage) {
102
+ } else if (message instanceof AgentStateMessage) {
103
+ let currentChatUI = chatUI.find(
104
+ (ui) => ui.agentName === message.agentName && ui.nodeName === message.nodeName
105
+ );
106
+ if (!currentChatUI) {
107
+ currentChatUI = chatUI.find(
108
+ (ui) => ui.agentName === message.agentName && ui.nodeName === void 0
109
+ );
110
+ }
111
+ if (!currentChatUI) {
112
+ if (inProgress && isCurrentMessage) {
113
+ return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
114
+ } else {
115
+ return null;
116
+ }
117
+ }
118
+ if (typeof currentChatUI.render === "string") {
119
+ if (isCurrentMessage && inProgress) {
120
+ return /* @__PURE__ */ jsxs("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
121
+ context.icons.spinnerIcon,
122
+ " ",
123
+ /* @__PURE__ */ jsx("span", { className: "inProgressLabel", children: currentChatUI.render })
124
+ ] }, index);
125
+ } else {
126
+ return null;
127
+ }
128
+ }
129
+ const toRender = currentChatUI.render({
130
+ state: message.state,
131
+ agentName: message.agentName,
132
+ nodeName: message.nodeName
133
+ });
134
+ if (!toRender && status === "complete") {
135
+ return null;
136
+ }
137
+ if (typeof toRender === "string") {
138
+ return /* @__PURE__ */ jsxs("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
139
+ isCurrentMessage && inProgress && context.icons.spinnerIcon,
140
+ " ",
141
+ toRender
142
+ ] }, index);
143
+ } else {
144
+ return /* @__PURE__ */ jsx("div", { className: "copilotKitCustomAssistantMessage", children: toRender }, index);
145
+ }
146
+ } else if (message instanceof ResultMessage && inProgress && isCurrentMessage) {
103
147
  return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
104
148
  }
105
149
  }),
@@ -126,4 +170,4 @@ function makeInitialMessages(initial) {
126
170
  export {
127
171
  Messages
128
172
  };
129
- //# sourceMappingURL=chunk-2C5JDPHV.mjs.map
173
+ //# sourceMappingURL=chunk-PDU5NXDS.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Messages.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Markdown } from \"./Markdown\";\nimport { RenderFunctionStatus, useCopilotContext } from \"@copilotkit/react-core\";\nimport {\n MessageStatusCode,\n ActionExecutionMessage,\n Message,\n ResultMessage,\n TextMessage,\n Role,\n AgentStateMessage,\n} from \"@copilotkit/runtime-client-gql\";\n\nexport const Messages = ({ messages, inProgress, children }: MessagesProps) => {\n const { chatComponentsCache, chatUI } = useCopilotContext();\n\n const context = useChatContext();\n const initialMessages = useMemo(\n () => makeInitialMessages(context.labels.initial),\n [context.labels.initial],\n );\n messages = [...initialMessages, ...messages];\n\n const functionResults: Record<string, string> = {};\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i] instanceof ActionExecutionMessage) {\n const id = messages[i].id;\n const resultMessage: ResultMessage | undefined = messages.find(\n (message) => message instanceof ResultMessage && message.actionExecutionId === id,\n ) as ResultMessage | undefined;\n\n if (resultMessage) {\n functionResults[id] = ResultMessage.decodeResult(resultMessage.result || \"\");\n }\n }\n }\n\n const messagesEndRef = React.useRef<HTMLDivElement>(null);\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n messagesEndRef.current.scrollIntoView({\n behavior: \"auto\",\n });\n }\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [messages]);\n\n return (\n <div className=\"copilotKitMessages\">\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n\n if (message instanceof TextMessage && message.role === \"user\") {\n return (\n <div key={index} className=\"copilotKitMessage copilotKitUserMessage\">\n {message.content}\n </div>\n );\n } else if (message instanceof TextMessage && message.role == \"assistant\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && !message.content ? (\n context.icons.spinnerIcon\n ) : (\n <Markdown content={message.content} />\n )}\n </div>\n );\n } else if (message instanceof ActionExecutionMessage) {\n if (\n chatComponentsCache.current !== null &&\n chatComponentsCache.current.actions[message.name]\n ) {\n const render = chatComponentsCache.current.actions[message.name];\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 <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon} <span className=\"inProgressLabel\">{render}</span>\n </div>\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 (functionResults[message.id] !== undefined) {\n status = \"complete\";\n } else if (message.status.code !== MessageStatusCode.Pending) {\n status = \"executing\";\n }\n\n const toRender = render({\n status: status as any,\n args,\n result: functionResults[message.id],\n });\n\n // No result and complete: stay silent\n if (!toRender && status === \"complete\") {\n return null;\n }\n\n if (typeof toRender === \"string\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && context.icons.spinnerIcon} {toRender}\n </div>\n );\n } else {\n return (\n <div key={index} className=\"copilotKitCustomAssistantMessage\">\n {toRender}\n </div>\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 <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon}\n </div>\n );\n }\n } else if (message instanceof AgentStateMessage) {\n let currentChatUI = chatUI.find(\n (ui) => ui.agentName === message.agentName && ui.nodeName === message.nodeName,\n );\n\n if (!currentChatUI) {\n currentChatUI = chatUI.find(\n (ui) => ui.agentName === message.agentName && ui.nodeName === undefined,\n );\n }\n\n if (!currentChatUI) {\n if (inProgress && isCurrentMessage) {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon}\n </div>\n );\n } else {\n return null;\n }\n }\n\n if (typeof currentChatUI.render === \"string\") {\n // when render is static, we show it only when in progress\n if (isCurrentMessage && inProgress) {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon}{\" \"}\n <span className=\"inProgressLabel\">{currentChatUI.render}</span>\n </div>\n );\n }\n // Done - silent by default to avoid a series of \"done\" messages\n else {\n return null;\n }\n }\n\n const toRender = currentChatUI.render({\n state: message.state,\n agentName: message.agentName,\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 (typeof toRender === \"string\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && context.icons.spinnerIcon} {toRender}\n </div>\n );\n } else {\n return (\n <div key={index} className=\"copilotKitCustomAssistantMessage\">\n {toRender}\n </div>\n );\n }\n } else if (message instanceof ResultMessage && inProgress && isCurrentMessage) {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon}\n </div>\n );\n }\n })}\n <footer ref={messagesEndRef}>{children}</footer>\n </div>\n );\n};\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = [];\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial);\n } else {\n initialArray.push(initial);\n }\n }\n\n return initialArray.map(\n (message) =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n }),\n );\n}\n"],"mappings":"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","names":["status"]}
@@ -852,7 +852,7 @@ var import_react_core = require("@copilotkit/react-core");
852
852
  var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
853
853
  var import_jsx_runtime5 = require("react/jsx-runtime");
854
854
  var Messages = ({ messages, inProgress, children }) => {
855
- const { chatComponentsCache } = (0, import_react_core.useCopilotContext)();
855
+ const { chatComponentsCache, chatUI } = (0, import_react_core.useCopilotContext)();
856
856
  const context = useChatContext();
857
857
  const initialMessages = (0, import_react4.useMemo)(
858
858
  () => makeInitialMessages(context.labels.initial),
@@ -890,8 +890,8 @@ var Messages = ({ messages, inProgress, children }) => {
890
890
  } else if (message instanceof import_runtime_client_gql.TextMessage && message.role == "assistant") {
891
891
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: isCurrentMessage && inProgress && !message.content ? context.icons.spinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Markdown, { content: message.content }) }, index);
892
892
  } else if (message instanceof import_runtime_client_gql.ActionExecutionMessage) {
893
- if (chatComponentsCache.current !== null && chatComponentsCache.current[message.name]) {
894
- const render = chatComponentsCache.current[message.name];
893
+ if (chatComponentsCache.current !== null && chatComponentsCache.current.actions[message.name]) {
894
+ const render = chatComponentsCache.current.actions[message.name];
895
895
  if (typeof render === "string") {
896
896
  if (isCurrentMessage && inProgress) {
897
897
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
@@ -904,18 +904,18 @@ var Messages = ({ messages, inProgress, children }) => {
904
904
  }
905
905
  } else {
906
906
  const args = message.arguments;
907
- let status = "inProgress";
907
+ let status2 = "inProgress";
908
908
  if (functionResults[message.id] !== void 0) {
909
- status = "complete";
909
+ status2 = "complete";
910
910
  } else if (message.status.code !== import_runtime_client_gql.MessageStatusCode.Pending) {
911
- status = "executing";
911
+ status2 = "executing";
912
912
  }
913
913
  const toRender = render({
914
- status,
914
+ status: status2,
915
915
  args,
916
916
  result: functionResults[message.id]
917
917
  });
918
- if (!toRender && status === "complete") {
918
+ if (!toRender && status2 === "complete") {
919
919
  return null;
920
920
  }
921
921
  if (typeof toRender === "string") {
@@ -933,7 +933,51 @@ var Messages = ({ messages, inProgress, children }) => {
933
933
  } else {
934
934
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
935
935
  }
936
- } else if ((message instanceof import_runtime_client_gql.AgentStateMessage || message instanceof import_runtime_client_gql.ResultMessage) && inProgress && isCurrentMessage) {
936
+ } else if (message instanceof import_runtime_client_gql.AgentStateMessage) {
937
+ let currentChatUI = chatUI.find(
938
+ (ui) => ui.agentName === message.agentName && ui.nodeName === message.nodeName
939
+ );
940
+ if (!currentChatUI) {
941
+ currentChatUI = chatUI.find(
942
+ (ui) => ui.agentName === message.agentName && ui.nodeName === void 0
943
+ );
944
+ }
945
+ if (!currentChatUI) {
946
+ if (inProgress && isCurrentMessage) {
947
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
948
+ } else {
949
+ return null;
950
+ }
951
+ }
952
+ if (typeof currentChatUI.render === "string") {
953
+ if (isCurrentMessage && inProgress) {
954
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
955
+ context.icons.spinnerIcon,
956
+ " ",
957
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "inProgressLabel", children: currentChatUI.render })
958
+ ] }, index);
959
+ } else {
960
+ return null;
961
+ }
962
+ }
963
+ const toRender = currentChatUI.render({
964
+ state: message.state,
965
+ agentName: message.agentName,
966
+ nodeName: message.nodeName
967
+ });
968
+ if (!toRender && status === "complete") {
969
+ return null;
970
+ }
971
+ if (typeof toRender === "string") {
972
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
973
+ isCurrentMessage && inProgress && context.icons.spinnerIcon,
974
+ " ",
975
+ toRender
976
+ ] }, index);
977
+ } else {
978
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "copilotKitCustomAssistantMessage", children: toRender }, index);
979
+ }
980
+ } else if (message instanceof import_runtime_client_gql.ResultMessage && inProgress && isCurrentMessage) {
937
981
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
938
982
  }
939
983
  }),
@@ -1253,7 +1297,7 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
1253
1297
  readable: true
1254
1298
  },
1255
1299
  abortSignal: abortController == null ? void 0 : abortController.signal,
1256
- stream: ({ status, args }) => {
1300
+ stream: ({ status: status2, args }) => {
1257
1301
  const suggestions = args.suggestions || [];
1258
1302
  const newSuggestions = [];
1259
1303
  for (let i = 0; i < suggestions.length; i++) {
@@ -1261,7 +1305,7 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
1261
1305
  break;
1262
1306
  }
1263
1307
  const { title, message } = suggestions[i];
1264
- const partial = i == suggestions.length - 1 && status !== "complete";
1308
+ const partial = i == suggestions.length - 1 && status2 !== "complete";
1265
1309
  newSuggestions.push({
1266
1310
  title,
1267
1311
  message,