@copilotkit/react-ui 1.3.7-fix-chat-interactions-rerenders.0 → 1.3.8-fix-memoize-chat-ui-context.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 (114) hide show
  1. package/CHANGELOG.md +15 -5
  2. package/dist/{chunk-LGS6B47Q.mjs → chunk-3KBQXU44.mjs} +10 -10
  3. package/dist/{chunk-XSUSSWDS.mjs → chunk-3XAXY2Z3.mjs} +2 -2
  4. package/dist/{chunk-FUCEBN2P.mjs → chunk-47OPG5FM.mjs} +9 -9
  5. package/dist/{chunk-CTPEKUNX.mjs → chunk-4FIGRRFS.mjs} +5 -7
  6. package/dist/chunk-4FIGRRFS.mjs.map +1 -0
  7. package/dist/{chunk-YH2STM73.mjs → chunk-6BL5C56L.mjs} +4 -4
  8. package/dist/chunk-6BL5C56L.mjs.map +1 -0
  9. package/dist/{chunk-GOTHQ665.mjs → chunk-6INMITFA.mjs} +3 -4
  10. package/dist/chunk-6INMITFA.mjs.map +1 -0
  11. package/dist/{chunk-BJPGMY3I.mjs → chunk-CBBFRI3Q.mjs} +19 -8
  12. package/dist/{chunk-BJPGMY3I.mjs.map → chunk-CBBFRI3Q.mjs.map} +1 -1
  13. package/dist/{chunk-GDNJRSD4.mjs → chunk-CPMIEVKK.mjs} +9 -11
  14. package/dist/chunk-CPMIEVKK.mjs.map +1 -0
  15. package/dist/{chunk-HBZPOT37.mjs → chunk-JTINVYPK.mjs} +3 -3
  16. package/dist/{chunk-CPWFYV3U.mjs → chunk-KCAVDFB6.mjs} +2 -2
  17. package/dist/{chunk-YOH25I6N.mjs → chunk-RQNJNK2W.mjs} +2 -2
  18. package/dist/{chunk-QI3OM75G.mjs → chunk-RS6UPR5N.mjs} +2 -2
  19. package/dist/{chunk-5DT3MDBZ.mjs → chunk-S5MBUNGN.mjs} +2 -3
  20. package/dist/{chunk-5DT3MDBZ.mjs.map → chunk-S5MBUNGN.mjs.map} +1 -1
  21. package/dist/{chunk-PJNNEX4L.mjs → chunk-SWADR6EH.mjs} +2 -2
  22. package/dist/{chunk-FLV3J3VX.mjs → chunk-VEC45H6Q.mjs} +2 -2
  23. package/dist/{chunk-MA5B5ELM.mjs → chunk-WYMTXCQU.mjs} +3 -4
  24. package/dist/chunk-WYMTXCQU.mjs.map +1 -0
  25. package/dist/{chunk-FO7Z5LAL.mjs → chunk-YAGE7RCE.mjs} +2 -2
  26. package/dist/{chunk-RF3KLUPD.mjs → chunk-ZABXREBH.mjs} +3 -4
  27. package/dist/chunk-ZABXREBH.mjs.map +1 -0
  28. package/dist/components/chat/Button.js.map +1 -1
  29. package/dist/components/chat/Button.mjs +2 -2
  30. package/dist/components/chat/Chat.js +39 -36
  31. package/dist/components/chat/Chat.js.map +1 -1
  32. package/dist/components/chat/Chat.mjs +12 -12
  33. package/dist/components/chat/ChatContext.js +17 -6
  34. package/dist/components/chat/ChatContext.js.map +1 -1
  35. package/dist/components/chat/ChatContext.mjs +1 -1
  36. package/dist/components/chat/Header.js.map +1 -1
  37. package/dist/components/chat/Header.mjs +2 -2
  38. package/dist/components/chat/Input.js +1 -2
  39. package/dist/components/chat/Input.js.map +1 -1
  40. package/dist/components/chat/Input.mjs +3 -3
  41. package/dist/components/chat/Messages.js +6 -6
  42. package/dist/components/chat/Messages.js.map +1 -1
  43. package/dist/components/chat/Messages.mjs +2 -2
  44. package/dist/components/chat/Modal.js +39 -36
  45. package/dist/components/chat/Modal.js.map +1 -1
  46. package/dist/components/chat/Modal.mjs +16 -16
  47. package/dist/components/chat/Popup.js +39 -36
  48. package/dist/components/chat/Popup.js.map +1 -1
  49. package/dist/components/chat/Popup.mjs +17 -17
  50. package/dist/components/chat/Response.js.map +1 -1
  51. package/dist/components/chat/Response.mjs +2 -2
  52. package/dist/components/chat/Sidebar.js +39 -36
  53. package/dist/components/chat/Sidebar.js.map +1 -1
  54. package/dist/components/chat/Sidebar.mjs +17 -17
  55. package/dist/components/chat/Window.js.map +1 -1
  56. package/dist/components/chat/Window.mjs +2 -2
  57. package/dist/components/chat/index.js +39 -36
  58. package/dist/components/chat/index.js.map +1 -1
  59. package/dist/components/chat/index.mjs +18 -18
  60. package/dist/components/chat/messages/RenderActionExecutionMessage.js +1 -1
  61. package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +1 -1
  62. package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +2 -2
  63. package/dist/components/chat/messages/RenderAgentStateMessage.js +1 -2
  64. package/dist/components/chat/messages/RenderAgentStateMessage.js.map +1 -1
  65. package/dist/components/chat/messages/RenderAgentStateMessage.mjs +2 -2
  66. package/dist/components/chat/messages/RenderResultMessage.js +1 -2
  67. package/dist/components/chat/messages/RenderResultMessage.js.map +1 -1
  68. package/dist/components/chat/messages/RenderResultMessage.mjs +2 -2
  69. package/dist/components/chat/messages/RenderTextMessage.js +1 -2
  70. package/dist/components/chat/messages/RenderTextMessage.js.map +1 -1
  71. package/dist/components/chat/messages/RenderTextMessage.mjs +2 -2
  72. package/dist/components/dev-console/console.js +4 -6
  73. package/dist/components/dev-console/console.js.map +1 -1
  74. package/dist/components/dev-console/console.mjs +2 -2
  75. package/dist/components/dev-console/index.js +4 -6
  76. package/dist/components/dev-console/index.js.map +1 -1
  77. package/dist/components/dev-console/index.mjs +2 -2
  78. package/dist/components/dev-console/utils.js +4 -6
  79. package/dist/components/dev-console/utils.js.map +1 -1
  80. package/dist/components/dev-console/utils.mjs +1 -1
  81. package/dist/components/index.js +39 -36
  82. package/dist/components/index.js.map +1 -1
  83. package/dist/components/index.mjs +18 -18
  84. package/dist/hooks/use-push-to-talk.js +1 -2
  85. package/dist/hooks/use-push-to-talk.js.map +1 -1
  86. package/dist/hooks/use-push-to-talk.mjs +1 -1
  87. package/dist/index.js +39 -36
  88. package/dist/index.js.map +1 -1
  89. package/dist/index.mjs +18 -18
  90. package/package.json +8 -8
  91. package/src/components/chat/ChatContext.tsx +21 -8
  92. package/src/components/chat/Messages.tsx +6 -6
  93. package/src/components/chat/messages/RenderActionExecutionMessage.tsx +1 -1
  94. package/src/components/chat/messages/RenderAgentStateMessage.tsx +1 -1
  95. package/src/components/chat/messages/RenderResultMessage.tsx +1 -1
  96. package/src/components/chat/messages/RenderTextMessage.tsx +1 -1
  97. package/src/components/dev-console/utils.ts +4 -4
  98. package/src/hooks/use-push-to-talk.tsx +1 -1
  99. package/dist/chunk-CTPEKUNX.mjs.map +0 -1
  100. package/dist/chunk-GDNJRSD4.mjs.map +0 -1
  101. package/dist/chunk-GOTHQ665.mjs.map +0 -1
  102. package/dist/chunk-MA5B5ELM.mjs.map +0 -1
  103. package/dist/chunk-RF3KLUPD.mjs.map +0 -1
  104. package/dist/chunk-YH2STM73.mjs.map +0 -1
  105. /package/dist/{chunk-LGS6B47Q.mjs.map → chunk-3KBQXU44.mjs.map} +0 -0
  106. /package/dist/{chunk-XSUSSWDS.mjs.map → chunk-3XAXY2Z3.mjs.map} +0 -0
  107. /package/dist/{chunk-FUCEBN2P.mjs.map → chunk-47OPG5FM.mjs.map} +0 -0
  108. /package/dist/{chunk-HBZPOT37.mjs.map → chunk-JTINVYPK.mjs.map} +0 -0
  109. /package/dist/{chunk-CPWFYV3U.mjs.map → chunk-KCAVDFB6.mjs.map} +0 -0
  110. /package/dist/{chunk-YOH25I6N.mjs.map → chunk-RQNJNK2W.mjs.map} +0 -0
  111. /package/dist/{chunk-QI3OM75G.mjs.map → chunk-RS6UPR5N.mjs.map} +0 -0
  112. /package/dist/{chunk-PJNNEX4L.mjs.map → chunk-SWADR6EH.mjs.map} +0 -0
  113. /package/dist/{chunk-FLV3J3VX.mjs.map → chunk-VEC45H6Q.mjs.map} +0 -0
  114. /package/dist/{chunk-FO7Z5LAL.mjs.map → chunk-YAGE7RCE.mjs.map} +0 -0
package/dist/index.mjs CHANGED
@@ -4,35 +4,35 @@ import "./chunk-JD7BAH7U.mjs";
4
4
  import "./chunk-MRFF7GSQ.mjs";
5
5
  import {
6
6
  CopilotSidebar
7
- } from "./chunk-CPWFYV3U.mjs";
7
+ } from "./chunk-KCAVDFB6.mjs";
8
8
  import "./chunk-WB3YULQ4.mjs";
9
9
  import {
10
10
  CopilotPopup
11
- } from "./chunk-PJNNEX4L.mjs";
12
- import "./chunk-FUCEBN2P.mjs";
13
- import "./chunk-FO7Z5LAL.mjs";
14
- import "./chunk-FLV3J3VX.mjs";
15
- import "./chunk-YOH25I6N.mjs";
11
+ } from "./chunk-SWADR6EH.mjs";
12
+ import "./chunk-47OPG5FM.mjs";
13
+ import "./chunk-YAGE7RCE.mjs";
14
+ import "./chunk-VEC45H6Q.mjs";
15
+ import "./chunk-RQNJNK2W.mjs";
16
16
  import {
17
17
  CopilotChat
18
- } from "./chunk-LGS6B47Q.mjs";
18
+ } from "./chunk-3KBQXU44.mjs";
19
19
  import "./chunk-V7W6IM2V.mjs";
20
- import "./chunk-YH2STM73.mjs";
21
- import "./chunk-RF3KLUPD.mjs";
22
- import "./chunk-GOTHQ665.mjs";
23
- import "./chunk-MA5B5ELM.mjs";
20
+ import "./chunk-6BL5C56L.mjs";
21
+ import "./chunk-ZABXREBH.mjs";
22
+ import "./chunk-6INMITFA.mjs";
23
+ import "./chunk-WYMTXCQU.mjs";
24
24
  import "./chunk-KFQYJ5R5.mjs";
25
- import "./chunk-QI3OM75G.mjs";
26
- import "./chunk-CTPEKUNX.mjs";
25
+ import "./chunk-RS6UPR5N.mjs";
26
+ import "./chunk-4FIGRRFS.mjs";
27
27
  import "./chunk-OTPAZXVR.mjs";
28
- import "./chunk-HBZPOT37.mjs";
28
+ import "./chunk-JTINVYPK.mjs";
29
29
  import "./chunk-YQFVRDNC.mjs";
30
30
  import "./chunk-YQ3D5IQV.mjs";
31
- import "./chunk-GDNJRSD4.mjs";
32
- import "./chunk-XSUSSWDS.mjs";
31
+ import "./chunk-CPMIEVKK.mjs";
32
+ import "./chunk-3XAXY2Z3.mjs";
33
33
  import {
34
34
  useChatContext
35
- } from "./chunk-BJPGMY3I.mjs";
35
+ } from "./chunk-CBBFRI3Q.mjs";
36
36
  import "./chunk-UPTB2MVO.mjs";
37
37
  import "./chunk-FZC7X5PK.mjs";
38
38
  import "./chunk-IU3WTXLQ.mjs";
@@ -41,7 +41,7 @@ import {
41
41
  useCopilotChatSuggestions
42
42
  } from "./chunk-Z2UZSN3K.mjs";
43
43
  import "./chunk-54JAUBUJ.mjs";
44
- import "./chunk-5DT3MDBZ.mjs";
44
+ import "./chunk-S5MBUNGN.mjs";
45
45
  import "./chunk-MRXNTQOX.mjs";
46
46
  export {
47
47
  CopilotChat,
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "publishConfig": {
10
10
  "access": "public"
11
11
  },
12
- "version": "1.3.7-fix-chat-interactions-rerenders.0",
12
+ "version": "1.3.8-fix-memoize-chat-ui-context.0",
13
13
  "sideEffects": [
14
14
  "**/*.css"
15
15
  ],
@@ -26,7 +26,7 @@
26
26
  "types": "./dist/index.d.ts",
27
27
  "license": "MIT",
28
28
  "peerDependencies": {
29
- "react": "^18.2.0"
29
+ "react": "^18 || ^19 || ^19.0.0-rc"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/jest": "^29.5.4",
@@ -40,9 +40,9 @@
40
40
  "ts-jest": "^29.1.1",
41
41
  "tsup": "^6.7.0",
42
42
  "typescript": "^5.2.3",
43
- "eslint-config-custom": "1.3.7-fix-chat-interactions-rerenders.0",
44
- "tailwind-config": "1.3.7-fix-chat-interactions-rerenders.0",
45
- "tsconfig": "1.3.7-fix-chat-interactions-rerenders.0"
43
+ "eslint-config-custom": "1.3.8-fix-memoize-chat-ui-context.0",
44
+ "tailwind-config": "1.3.8-fix-memoize-chat-ui-context.0",
45
+ "tsconfig": "1.3.8-fix-memoize-chat-ui-context.0"
46
46
  },
47
47
  "dependencies": {
48
48
  "@headlessui/react": "^2.1.3",
@@ -50,9 +50,9 @@
50
50
  "react-syntax-highlighter": "^15.5.0",
51
51
  "remark-gfm": "^3.0.1",
52
52
  "remark-math": "^5.1.1",
53
- "@copilotkit/react-core": "1.3.7-fix-chat-interactions-rerenders.0",
54
- "@copilotkit/runtime-client-gql": "1.3.7-fix-chat-interactions-rerenders.0",
55
- "@copilotkit/shared": "1.3.7-fix-chat-interactions-rerenders.0"
53
+ "@copilotkit/react-core": "1.3.8-fix-memoize-chat-ui-context.0",
54
+ "@copilotkit/runtime-client-gql": "1.3.8-fix-memoize-chat-ui-context.0",
55
+ "@copilotkit/shared": "1.3.8-fix-memoize-chat-ui-context.0"
56
56
  },
57
57
  "keywords": [
58
58
  "copilotkit",
@@ -141,8 +141,8 @@ export const ChatContextProvider = ({
141
141
  open,
142
142
  setOpen,
143
143
  }: ChatContextProps) => {
144
- const context = {
145
- labels: {
144
+ const memoizedLabels = useMemo(
145
+ () => ({
146
146
  ...{
147
147
  initial: "",
148
148
  title: "CopilotKit",
@@ -152,9 +152,12 @@ export const ChatContextProvider = ({
152
152
  regenerateResponse: "Regenerate response",
153
153
  },
154
154
  ...labels,
155
- },
155
+ }),
156
+ [labels],
157
+ );
156
158
 
157
- icons: {
159
+ const memoizedIcons = useMemo(
160
+ () => ({
158
161
  ...{
159
162
  openIcon: DefaultIcons.OpenIcon,
160
163
  closeIcon: DefaultIcons.CloseIcon,
@@ -167,9 +170,19 @@ export const ChatContextProvider = ({
167
170
  pushToTalkIcon: DefaultIcons.PushToTalkIcon,
168
171
  },
169
172
  ...icons,
170
- },
171
- open,
172
- setOpen,
173
- };
173
+ }),
174
+ [icons],
175
+ );
176
+
177
+ const context = useMemo(
178
+ () => ({
179
+ labels: memoizedLabels,
180
+ icons: memoizedIcons,
181
+ open,
182
+ setOpen,
183
+ }),
184
+ [memoizedLabels, memoizedIcons, open, setOpen],
185
+ );
186
+
174
187
  return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;
175
188
  };
@@ -29,10 +29,10 @@ export const Messages = ({
29
29
  const actionResults: Record<string, string> = {};
30
30
 
31
31
  for (let i = 0; i < messages.length; i++) {
32
- if (messages[i] instanceof ActionExecutionMessage) {
32
+ if (messages[i].isActionExecutionMessage()) {
33
33
  const id = messages[i].id;
34
34
  const resultMessage: ResultMessage | undefined = messages.find(
35
- (message) => message instanceof ResultMessage && message.actionExecutionId === id,
35
+ (message) => message.isResultMessage() && message.actionExecutionId === id,
36
36
  ) as ResultMessage | undefined;
37
37
 
38
38
  if (resultMessage) {
@@ -60,7 +60,7 @@ export const Messages = ({
60
60
  {messages.map((message, index) => {
61
61
  const isCurrentMessage = index === messages.length - 1;
62
62
 
63
- if (message instanceof TextMessage) {
63
+ if (message.isTextMessage()) {
64
64
  return (
65
65
  <RenderTextMessage
66
66
  key={index}
@@ -70,7 +70,7 @@ export const Messages = ({
70
70
  isCurrentMessage={isCurrentMessage}
71
71
  />
72
72
  );
73
- } else if (message instanceof ActionExecutionMessage) {
73
+ } else if (message.isActionExecutionMessage()) {
74
74
  return (
75
75
  <RenderActionExecutionMessage
76
76
  key={index}
@@ -81,7 +81,7 @@ export const Messages = ({
81
81
  actionResult={actionResults[message.id]}
82
82
  />
83
83
  );
84
- } else if (message instanceof AgentStateMessage) {
84
+ } else if (message.isAgentStateMessage()) {
85
85
  return (
86
86
  <RenderAgentStateMessage
87
87
  key={index}
@@ -91,7 +91,7 @@ export const Messages = ({
91
91
  isCurrentMessage={isCurrentMessage}
92
92
  />
93
93
  );
94
- } else if (message instanceof ResultMessage) {
94
+ } else if (message.isResultMessage()) {
95
95
  return (
96
96
  <RenderResultMessage
97
97
  key={index}
@@ -8,7 +8,7 @@ export function RenderActionExecutionMessage(props: RenderMessageProps) {
8
8
  const { chatComponentsCache } = useCopilotContext();
9
9
  const { icons } = useChatContext();
10
10
 
11
- if (message instanceof ActionExecutionMessage) {
11
+ if (message.isActionExecutionMessage()) {
12
12
  if (chatComponentsCache.current !== null && chatComponentsCache.current.actions[message.name]) {
13
13
  const render = chatComponentsCache.current.actions[message.name];
14
14
  // render a static string
@@ -8,7 +8,7 @@ export function RenderAgentStateMessage(props: RenderMessageProps) {
8
8
  const { chatComponentsCache } = useCopilotContext();
9
9
  const { icons } = useChatContext();
10
10
 
11
- if (message instanceof AgentStateMessage) {
11
+ if (message.isAgentStateMessage()) {
12
12
  let render: string | CoagentInChatRenderFunction | undefined;
13
13
 
14
14
  if (chatComponentsCache.current !== null) {
@@ -5,7 +5,7 @@ import { useChatContext } from "../ChatContext";
5
5
  export function RenderResultMessage(props: RenderMessageProps) {
6
6
  const { message, inProgress, index, isCurrentMessage } = props;
7
7
  const { icons } = useChatContext();
8
- if (message instanceof ResultMessage && inProgress && isCurrentMessage) {
8
+ if (message.isResultMessage() && inProgress && isCurrentMessage) {
9
9
  return (
10
10
  <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>
11
11
  {icons.spinnerIcon}
@@ -6,7 +6,7 @@ import { useChatContext } from "../ChatContext";
6
6
  export function RenderTextMessage(props: RenderMessageProps) {
7
7
  const { message, inProgress, index, isCurrentMessage } = props;
8
8
  const { icons } = useChatContext();
9
- if (message instanceof TextMessage) {
9
+ if (message.isTextMessage()) {
10
10
  if (message.role === "user") {
11
11
  return (
12
12
  <div key={index} className="copilotKitMessage copilotKitUserMessage">
@@ -120,7 +120,7 @@ export function logMessages(context: CopilotMessagesContextParams) {
120
120
  }
121
121
 
122
122
  const tableData = context.messages.map((message) => {
123
- if (message instanceof TextMessage) {
123
+ if (message.isTextMessage()) {
124
124
  return {
125
125
  id: message.id,
126
126
  type: "TextMessage",
@@ -129,7 +129,7 @@ export function logMessages(context: CopilotMessagesContextParams) {
129
129
  scope: undefined,
130
130
  content: message.content,
131
131
  };
132
- } else if (message instanceof ActionExecutionMessage) {
132
+ } else if (message.isActionExecutionMessage()) {
133
133
  return {
134
134
  id: message.id,
135
135
  type: "ActionExecutionMessage",
@@ -138,7 +138,7 @@ export function logMessages(context: CopilotMessagesContextParams) {
138
138
  scope: message.scope,
139
139
  content: message.arguments,
140
140
  };
141
- } else if (message instanceof ResultMessage) {
141
+ } else if (message.isResultMessage()) {
142
142
  return {
143
143
  id: message.id,
144
144
  type: "ResultMessage",
@@ -147,7 +147,7 @@ export function logMessages(context: CopilotMessagesContextParams) {
147
147
  scope: message.actionExecutionId,
148
148
  content: message.result,
149
149
  };
150
- } else if (message instanceof AgentStateMessage) {
150
+ } else if (message.isAgentStateMessage()) {
151
151
  return {
152
152
  id: message.id,
153
153
  type: `AgentStateMessage (running: ${message.running})`,
@@ -152,7 +152,7 @@ export const usePushToTalk = ({
152
152
  const messagesAfterLast = context.messages
153
153
  .slice(lastMessageIndex + 1)
154
154
  .filter(
155
- (message) => message instanceof TextMessage && message.role === "assistant",
155
+ (message) => message.isTextMessage() && message.role === "assistant",
156
156
  ) as TextMessage[];
157
157
 
158
158
  const text = messagesAfterLast.map((message) => message.content).join("\n");
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/dev-console/utils.ts"],"sourcesContent":["import {\n CopilotContextParams,\n CopilotMessagesContextParams,\n defaultCopilotContextCategories,\n} from \"@copilotkit/react-core\";\nimport { CopilotKitVersion } from \"./types\";\nimport { ActionExecutionMessage, ResultMessage, TextMessage } from \"@copilotkit/runtime-client-gql\";\nimport { AgentStateMessage } from \"@copilotkit/runtime-client-gql\";\n\nexport function shouldShowDevConsole(showDevConsole: boolean | \"auto\"): boolean {\n if (typeof showDevConsole === \"boolean\") {\n return showDevConsole;\n }\n return (\n getHostname() === \"localhost\" ||\n getHostname() === \"127.0.0.1\" ||\n getHostname() === \"0.0.0.0\" ||\n getHostname() === \"::1\"\n );\n}\n\nfunction getHostname(): string {\n if (typeof window !== \"undefined\" && window.location) {\n return window.location.hostname;\n }\n return \"\";\n}\n\nexport async function getPublishedCopilotKitVersion(\n current: string,\n forceCheck: boolean = false,\n): Promise<CopilotKitVersion> {\n const LOCAL_STORAGE_KEY = \"__copilotkit_version_check__\";\n const serializedVersion = localStorage.getItem(LOCAL_STORAGE_KEY);\n if (serializedVersion && !forceCheck) {\n try {\n const parsedVersion: CopilotKitVersion = JSON.parse(serializedVersion);\n const oneHour = 60 * 60 * 1000;\n const now = new Date().getTime();\n\n if (\n parsedVersion.current === current &&\n now - new Date(parsedVersion.lastChecked).getTime() < oneHour\n ) {\n return parsedVersion;\n }\n } catch (error) {\n console.error(\"Failed to parse CopilotKitVersion from localStorage\", error);\n }\n }\n\n try {\n const response = await fetch(\"https://api.cloud.stagingcopilotkit.ai/check-for-updates\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n packages: [\n {\n packageName: \"@copilotkit/shared\",\n packageVersion: current,\n },\n ],\n }),\n });\n\n const data = await response.json();\n\n const version: CopilotKitVersion = {\n current,\n lastChecked: new Date().getTime(),\n latest: data.packages[0].latestVersion,\n severity: data.packages[0].severity,\n advisory: data.packages[0].advisory || null,\n };\n\n localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(version));\n return version;\n } catch (error) {\n console.error(\"Failed to check for updates\", error);\n throw error;\n }\n}\n\nexport function logReadables(context: CopilotContextParams) {\n console.log(\"%cCurrent Readables:\", \"font-size: 16px; font-weight: bold;\");\n\n const readables = context.getContextString([], defaultCopilotContextCategories).trim();\n if (readables.length === 0) {\n console.log(\"No readables found\");\n return;\n }\n console.log(readables);\n}\n\nexport function logActions(context: CopilotContextParams) {\n console.log(\"%cCurrent Actions:\", \"font-size: 16px; font-weight: bold;\");\n\n if (Object.values(context.actions).length === 0) {\n console.log(\"No actions found\");\n return;\n }\n for (const action of Object.values(context.actions)) {\n console.group(action.name);\n console.log(\"name\", action.name);\n console.log(\"description\", action.description);\n console.log(\"parameters\", action.parameters);\n\n console.groupEnd();\n }\n}\n\nexport function logMessages(context: CopilotMessagesContextParams) {\n console.log(\"%cCurrent Messages:\", \"font-size: 16px; font-weight: bold;\");\n\n if (context.messages.length === 0) {\n console.log(\"No messages found\");\n return;\n }\n\n const tableData = context.messages.map((message) => {\n if (message instanceof TextMessage) {\n return {\n id: message.id,\n type: \"TextMessage\",\n role: message.role,\n name: undefined,\n scope: undefined,\n content: message.content,\n };\n } else if (message instanceof ActionExecutionMessage) {\n return {\n id: message.id,\n type: \"ActionExecutionMessage\",\n role: undefined,\n name: message.name,\n scope: message.scope,\n content: message.arguments,\n };\n } else if (message instanceof ResultMessage) {\n return {\n id: message.id,\n type: \"ResultMessage\",\n role: undefined,\n name: message.actionName,\n scope: message.actionExecutionId,\n content: message.result,\n };\n } else if (message instanceof AgentStateMessage) {\n return {\n id: message.id,\n type: `AgentStateMessage (running: ${message.running})`,\n role: message.role,\n name: undefined,\n scope: message.threadId,\n content: message.state,\n };\n }\n });\n console.table(tableData);\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
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 {\n ActionExecutionMessage,\n Message,\n ResultMessage,\n TextMessage,\n Role,\n AgentStateMessage,\n} from \"@copilotkit/runtime-client-gql\";\n\nexport const Messages = ({\n messages,\n inProgress,\n children,\n RenderTextMessage,\n RenderActionExecutionMessage,\n RenderAgentStateMessage,\n RenderResultMessage,\n}: MessagesProps) => {\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 actionResults: 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 actionResults[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) {\n return (\n <RenderTextMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n />\n );\n } else if (message instanceof ActionExecutionMessage) {\n return (\n <RenderActionExecutionMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n actionResult={actionResults[message.id]}\n />\n );\n } else if (message instanceof AgentStateMessage) {\n return (\n <RenderAgentStateMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n />\n );\n } else if (message instanceof ResultMessage) {\n return (\n <RenderResultMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n />\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":";;;;;AAAA,OAAO,SAAS,WAAW,eAAe;AAG1C;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAgDH,SAMQ,KANR;AA9CG,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAqB;AACnB,QAAM,UAAU,eAAe;AAC/B,QAAM,kBAAkB;AAAA,IACtB,MAAM,oBAAoB,QAAQ,OAAO,OAAO;AAAA,IAChD,CAAC,QAAQ,OAAO,OAAO;AAAA,EACzB;AACA,aAAW,CAAC,GAAG,iBAAiB,GAAG,QAAQ;AAE3C,QAAM,gBAAwC,CAAC;AAE/C,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,QAAI,SAAS,CAAC,aAAa,wBAAwB;AACjD,YAAM,KAAK,SAAS,CAAC,EAAE;AACvB,YAAM,gBAA2C,SAAS;AAAA,QACxD,CAAC,YAAY,mBAAmB,iBAAiB,QAAQ,sBAAsB;AAAA,MACjF;AAEA,UAAI,eAAe;AACjB,sBAAc,EAAE,IAAI,cAAc,aAAa,cAAc,UAAU,EAAE;AAAA,MAC3E;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM,OAAuB,IAAI;AAExD,QAAM,iBAAiB,MAAM;AAC3B,QAAI,eAAe,SAAS;AAC1B,qBAAe,QAAQ,eAAe;AAAA,QACpC,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAEA,YAAU,MAAM;AACd,mBAAe;AAAA,EACjB,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,qBAAC,SAAI,WAAU,sBACZ;AAAA,aAAS,IAAI,CAAC,SAAS,UAAU;AAChC,YAAM,mBAAmB,UAAU,SAAS,SAAS;AAErD,UAAI,mBAAmB,aAAa;AAClC,eACE;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UAJK;AAAA,QAKP;AAAA,MAEJ,WAAW,mBAAmB,wBAAwB;AACpD,eACE;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,cAAc,cAAc,QAAQ,EAAE;AAAA;AAAA,UALjC;AAAA,QAMP;AAAA,MAEJ,WAAW,mBAAmB,mBAAmB;AAC/C,eACE;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UAJK;AAAA,QAKP;AAAA,MAEJ,WAAW,mBAAmB,eAAe;AAC3C,eACE;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UAJK;AAAA,QAKP;AAAA,MAEJ;AAAA,IACF,CAAC;AAAA,IACD,oBAAC,YAAO,KAAK,gBAAiB,UAAS;AAAA,KACzC;AAEJ;AAEA,SAAS,oBAAoB,SAAwC;AACnE,MAAI,eAAyB,CAAC;AAC9B,MAAI,SAAS;AACX,QAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,mBAAa,KAAK,GAAG,OAAO;AAAA,IAC9B,OAAO;AACL,mBAAa,KAAK,OAAO;AAAA,IAC3B;AAAA,EACF;AAEA,SAAO,aAAa;AAAA,IAClB,CAAC,YACC,IAAI,YAAY;AAAA,MACd,MAAM,KAAK;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AAAA,EACL;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat/messages/RenderResultMessage.tsx"],"sourcesContent":["import { ResultMessage } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { useChatContext } from \"../ChatContext\";\n\nexport function RenderResultMessage(props: RenderMessageProps) {\n const { message, inProgress, index, isCurrentMessage } = props;\n const { icons } = useChatContext();\n if (message instanceof ResultMessage && inProgress && isCurrentMessage) {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {icons.spinnerIcon}\n </div>\n );\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,qBAAqB;AASxB;AALC,SAAS,oBAAoB,OAA2B;AAC7D,QAAM,EAAE,SAAS,YAAY,OAAO,iBAAiB,IAAI;AACzD,QAAM,EAAE,MAAM,IAAI,eAAe;AACjC,MAAI,mBAAmB,iBAAiB,cAAc,kBAAkB;AACtE,WACE,oBAAC,SAAgB,WAAW,gDACzB,gBAAM,eADC,KAEV;AAAA,EAEJ;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat/messages/RenderTextMessage.tsx"],"sourcesContent":["import { TextMessage } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { Markdown } from \"../Markdown\";\nimport { useChatContext } from \"../ChatContext\";\n\nexport function RenderTextMessage(props: RenderMessageProps) {\n const { message, inProgress, index, isCurrentMessage } = props;\n const { icons } = useChatContext();\n if (message instanceof TextMessage) {\n if (message.role === \"user\") {\n return (\n <div key={index} className=\"copilotKitMessage copilotKitUserMessage\">\n {message.content}\n </div>\n );\n } else if (message.role == \"assistant\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && !message.content ? (\n icons.spinnerIcon\n ) : (\n <Markdown content={message.content} />\n )}\n </div>\n );\n }\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,mBAAmB;AAWpB;AAND,SAAS,kBAAkB,OAA2B;AAC3D,QAAM,EAAE,SAAS,YAAY,OAAO,iBAAiB,IAAI;AACzD,QAAM,EAAE,MAAM,IAAI,eAAe;AACjC,MAAI,mBAAmB,aAAa;AAClC,QAAI,QAAQ,SAAS,QAAQ;AAC3B,aACE,oBAAC,SAAgB,WAAU,2CACxB,kBAAQ,WADD,KAEV;AAAA,IAEJ,WAAW,QAAQ,QAAQ,aAAa;AACtC,aACE,oBAAC,SAAgB,WAAW,gDACzB,8BAAoB,cAAc,CAAC,QAAQ,UAC1C,MAAM,cAEN,oBAAC,YAAS,SAAS,QAAQ,SAAS,KAJ9B,KAMV;AAAA,IAEJ;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat/messages/RenderAgentStateMessage.tsx"],"sourcesContent":["import { AgentStateMessage } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { useChatContext } from \"../ChatContext\";\nimport { CoagentInChatRenderFunction, useCopilotContext } from \"@copilotkit/react-core\";\n\nexport function RenderAgentStateMessage(props: RenderMessageProps) {\n const { message, inProgress, index, isCurrentMessage } = props;\n const { chatComponentsCache } = useCopilotContext();\n const { icons } = useChatContext();\n\n if (message instanceof AgentStateMessage) {\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 <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {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 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 <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {icons.spinnerIcon}\n </div>\n );\n } else if (!toRender) {\n return null;\n }\n\n if (typeof toRender === \"string\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && 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 {icons.spinnerIcon}\n </div>\n );\n }\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,yBAAyB;AAGlC,SAAsC,yBAAyB;AAuBnD,SACsB,KADtB;AArBL,SAAS,wBAAwB,OAA2B;AACjE,QAAM,EAAE,SAAS,YAAY,OAAO,iBAAiB,IAAI;AACzD,QAAM,EAAE,oBAAoB,IAAI,kBAAkB;AAClD,QAAM,EAAE,MAAM,IAAI,eAAe;AAEjC,MAAI,mBAAmB,mBAAmB;AACxC,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,qBAAC,SAAgB,WAAW,gDACzB;AAAA,kBAAM;AAAA,YAAY;AAAA,YAAC,oBAAC,UAAK,WAAU,mBAAmB,kBAAO;AAAA,eADtD,KAEV;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,oBAAC,SAAgB,WAAW,gDACzB,gBAAM,eADC,KAEV;AAAA,QAEJ,WAAW,CAAC,UAAU;AACpB,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,aAAa,UAAU;AAChC,iBACE,qBAAC,SAAgB,WAAW,gDACzB;AAAA,gCAAoB,cAAc,MAAM;AAAA,YAAY;AAAA,YAAE;AAAA,eAD/C,KAEV;AAAA,QAEJ,OAAO;AACL,iBACE,oBAAC,SAAgB,WAAU,oCACxB,sBADO,KAEV;AAAA,QAEJ;AAAA,MACF;AAAA,IACF,WAES,CAAC,cAAc,CAAC,kBAAkB;AAEzC,aAAO;AAAA,IACT,OAAO;AAEL,aACE,oBAAC,SAAgB,WAAW,gDACzB,gBAAM,eADC,KAEV;AAAA,IAEJ;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat/messages/RenderActionExecutionMessage.tsx"],"sourcesContent":["import { ActionExecutionMessage, MessageStatusCode } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { useChatContext } from \"../ChatContext\";\nimport { RenderFunctionStatus, useCopilotContext } from \"@copilotkit/react-core\";\n\nexport function RenderActionExecutionMessage(props: RenderMessageProps) {\n const { message, inProgress, index, isCurrentMessage, actionResult } = props;\n const { chatComponentsCache } = useCopilotContext();\n const { icons } = useChatContext();\n\n if (message instanceof ActionExecutionMessage) {\n if (chatComponentsCache.current !== null && chatComponentsCache.current.actions[message.name]) {\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 {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 (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,\n args,\n result: actionResult,\n });\n // No result and complete: stay silent\n if (!toRender && status === \"complete\") {\n return null;\n }\n if (typeof toRender === \"string\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && icons.spinnerIcon} {toRender}\n </div>\n );\n } else {\n return (\n <div key={index} className=\"copilotKitCustomAssistantMessage\">\n {toRender}\n </div>\n );\n }\n } catch (e) {\n console.error(`Error executing render function for action ${message.name}: ${e}`);\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && icons.spinnerIcon}\n <b>❌ Error executing render: {message.name}</b>\n <br />\n {e instanceof Error ? e.message : String(e)}\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 {icons.spinnerIcon}\n </div>\n );\n }\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,wBAAwB,yBAAyB;AAG1D,SAA+B,yBAAyB;AAe5C,SACsB,KADtB;AAbL,SAAS,6BAA6B,OAA2B;AACtE,QAAM,EAAE,SAAS,YAAY,OAAO,kBAAkB,aAAa,IAAI;AACvE,QAAM,EAAE,oBAAoB,IAAI,kBAAkB;AAClD,QAAM,EAAE,MAAM,IAAI,eAAe;AAEjC,MAAI,mBAAmB,wBAAwB;AAC7C,QAAI,oBAAoB,YAAY,QAAQ,oBAAoB,QAAQ,QAAQ,QAAQ,IAAI,GAAG;AAC7F,YAAM,SAAS,oBAAoB,QAAQ,QAAQ,QAAQ,IAAI;AAE/D,UAAI,OAAO,WAAW,UAAU;AAE9B,YAAI,oBAAoB,YAAY;AAClC,iBACE,qBAAC,SAAgB,WAAW,gDACzB;AAAA,kBAAM;AAAA,YAAY;AAAA,YAAC,oBAAC,UAAK,WAAU,mBAAmB,kBAAO;AAAA,eADtD,KAEV;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,YACA;AAAA,YACA,QAAQ;AAAA,UACV,CAAC;AAED,cAAI,CAAC,YAAY,WAAW,YAAY;AACtC,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,aAAa,UAAU;AAChC,mBACE,qBAAC,SAAgB,WAAW,gDACzB;AAAA,kCAAoB,cAAc,MAAM;AAAA,cAAY;AAAA,cAAE;AAAA,iBAD/C,KAEV;AAAA,UAEJ,OAAO;AACL,mBACE,oBAAC,SAAgB,WAAU,oCACxB,sBADO,KAEV;AAAA,UAEJ;AAAA,QACF,SAAS,GAAP;AACA,kBAAQ,MAAM,8CAA8C,QAAQ,SAAS,GAAG;AAChF,iBACE,qBAAC,SAAgB,WAAW,gDACzB;AAAA,gCAAoB,cAAc,MAAM;AAAA,YACzC,qBAAC,OAAE;AAAA;AAAA,cAA2B,QAAQ;AAAA,eAAK;AAAA,YAC3C,oBAAC,QAAG;AAAA,YACH,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,eAJlC,KAKV;AAAA,QAEJ;AAAA,MACF;AAAA,IACF,WAES,CAAC,cAAc,CAAC,kBAAkB;AAEzC,aAAO;AAAA,IACT,OAAO;AAEL,aACE,oBAAC,SAAgB,WAAW,gDACzB,gBAAM,eADC,KAEV;AAAA,IAEJ;AAAA,EACF;AACF;","names":[]}