@copilotkit/runtime-client-gql 0.0.0-main-20260220223427 → 0.0.0-main-20260402184302

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 (32) hide show
  1. package/CHANGELOG.md +267 -3
  2. package/dist/client/conversion.cjs +6 -1
  3. package/dist/client/conversion.cjs.map +1 -1
  4. package/dist/client/conversion.mjs +6 -1
  5. package/dist/client/conversion.mjs.map +1 -1
  6. package/dist/index.umd.js +13 -4
  7. package/dist/index.umd.js.map +1 -1
  8. package/dist/message-conversion/agui-to-gql.cjs +6 -2
  9. package/dist/message-conversion/agui-to-gql.cjs.map +1 -1
  10. package/dist/message-conversion/agui-to-gql.d.cts +1 -1
  11. package/dist/message-conversion/agui-to-gql.d.cts.map +1 -1
  12. package/dist/message-conversion/agui-to-gql.d.mts +1 -1
  13. package/dist/message-conversion/agui-to-gql.d.mts.map +1 -1
  14. package/dist/message-conversion/agui-to-gql.mjs +6 -2
  15. package/dist/message-conversion/agui-to-gql.mjs.map +1 -1
  16. package/dist/message-conversion/gql-to-agui.cjs.map +1 -1
  17. package/dist/message-conversion/gql-to-agui.d.cts +1 -1
  18. package/dist/message-conversion/gql-to-agui.d.mts +1 -1
  19. package/dist/message-conversion/gql-to-agui.mjs.map +1 -1
  20. package/dist/package.cjs +1 -1
  21. package/dist/package.mjs +1 -1
  22. package/package.json +27 -28
  23. package/project.json +4 -0
  24. package/src/client/__tests__/conversion.test.ts +64 -0
  25. package/src/client/conversion.ts +13 -1
  26. package/src/message-conversion/agui-to-gql.test.ts +20 -1
  27. package/src/message-conversion/agui-to-gql.ts +15 -5
  28. package/src/message-conversion/gql-to-agui.ts +1 -1
  29. package/src/message-conversion/roundtrip-conversion.test.ts +1 -1
  30. package/tsconfig.json +1 -1
  31. package/tsdown.config.ts +0 -2
  32. package/vitest.config.mjs +1 -0
package/CHANGELOG.md CHANGED
@@ -1,12 +1,263 @@
1
1
  # @copilotkit/runtime-client-gql
2
2
 
3
- ## 0.0.0-main-20260220223427
3
+ ## 0.0.0-main-20260402184302
4
+
5
+ ### Minor Changes
6
+
7
+ - 1ceb963: refactor: consolidate V1/V2 packages into flat @copilotkit/\* structure
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [1ceb963]
12
+ - @copilotkit/shared@0.0.0-main-20260402184302
13
+
14
+ ## 1.55.0-next.8
15
+
16
+ ### Patch Changes
17
+
18
+ - @copilotkit/shared@1.55.0-next.8
19
+
20
+ ## 1.55.0-next.7
21
+
22
+ ### Minor Changes
23
+
24
+ - 1ceb963: refactor: consolidate V1/V2 packages into flat @copilotkit/\* structure
25
+
26
+ ### Patch Changes
27
+
28
+ - Updated dependencies [1ceb963]
29
+ - @copilotkit/shared@1.55.0-next.7
30
+
31
+ ## 1.54.1-next.6
32
+
33
+ ### Patch Changes
34
+
35
+ - @copilotkit/shared@1.54.1-next.6
36
+
37
+ ## 1.54.1-next.5
38
+
39
+ ### Patch Changes
40
+
41
+ - @copilotkit/shared@1.54.1-next.5
42
+
43
+ ## 1.54.1-next.4
44
+
45
+ ### Patch Changes
46
+
47
+ - @copilotkit/shared@1.54.1-next.4
48
+
49
+ ## 1.54.1-next.3
50
+
51
+ ### Patch Changes
52
+
53
+ - @copilotkit/shared@1.54.1-next.3
54
+
55
+ ## 1.54.1-next.2
56
+
57
+ ### Patch Changes
58
+
59
+ - @copilotkit/shared@1.54.1-next.2
60
+
61
+ ## 1.54.1-next.1
62
+
63
+ ### Patch Changes
64
+
65
+ - @copilotkit/shared@1.54.1-next.1
66
+
67
+ ## 1.54.1-next.0
4
68
 
5
69
  ### Patch Changes
6
70
 
71
+ - @copilotkit/shared@1.54.1-next.0
72
+
73
+ ## 1.54.0
74
+
75
+ ### Patch Changes
76
+
77
+ - @copilotkit/shared@1.54.0
78
+
79
+ ## 1.54.0-next.9
80
+
81
+ ### Patch Changes
82
+
83
+ - @copilotkit/shared@1.54.0-next.9
84
+
85
+ ## 1.54.0-next.8
86
+
87
+ ### Patch Changes
88
+
89
+ - @copilotkit/shared@1.54.0-next.8
90
+
91
+ ## 1.54.0-next.7
92
+
93
+ ### Patch Changes
94
+
95
+ - @copilotkit/shared@1.54.0-next.7
96
+
97
+ ## 1.54.0-next.6
98
+
99
+ ### Patch Changes
100
+
101
+ - @copilotkit/shared@1.54.0-next.6
102
+
103
+ ## 1.54.0-next.5
104
+
105
+ ### Patch Changes
106
+
107
+ - @copilotkit/shared@1.54.0-next.5
108
+
109
+ ## 1.54.0-next.4
110
+
111
+ ### Patch Changes
112
+
113
+ - @copilotkit/shared@1.54.0-next.4
114
+
115
+ ## 1.54.0-next.3
116
+
117
+ ### Patch Changes
118
+
119
+ - @copilotkit/shared@1.54.0-next.3
120
+
121
+ ## 1.53.1-next.2
122
+
123
+ ### Patch Changes
124
+
125
+ - @copilotkit/shared@1.53.1-next.2
126
+
127
+ ## 1.53.1-next.1
128
+
129
+ ### Patch Changes
130
+
131
+ - @copilotkit/shared@1.53.1-next.1
132
+
133
+ ## 1.53.1-next.0
134
+
135
+ ### Patch Changes
136
+
137
+ - @copilotkit/shared@1.53.1-next.0
138
+
139
+ ## 1.53.0
140
+
141
+ ### Patch Changes
142
+
143
+ - Updated dependencies [1510f64]
144
+ - Updated dependencies [bf1fc6f]
145
+ - @copilotkit/shared@1.53.0
146
+
147
+ ## 1.53.0-next.6
148
+
149
+ ### Patch Changes
150
+
151
+ - @copilotkit/shared@1.53.0-next.6
152
+
153
+ ## 1.53.0-next.5
154
+
155
+ ### Patch Changes
156
+
157
+ - @copilotkit/shared@1.53.0-next.5
158
+
159
+ ## 1.52.2-next.4
160
+
161
+ ### Patch Changes
162
+
163
+ - @copilotkit/shared@1.52.2-next.4
164
+
165
+ ## 1.52.2-next.3
166
+
167
+ ### Patch Changes
168
+
169
+ - Updated dependencies [1510f64]
170
+ - @copilotkit/shared@1.52.2-next.3
171
+
172
+ ## 1.52.2-next.2
173
+
174
+ ### Patch Changes
175
+
176
+ - Updated dependencies [8e0f94f]
177
+ - @copilotkit/runtime@1.52.2-next.2
178
+ - @copilotkit/shared@1.52.2-next.2
179
+
180
+ ## 1.52.2-next.1
181
+
182
+ ### Patch Changes
183
+
184
+ - Updated dependencies [d1f7aba]
185
+ - Updated dependencies [bf1fc6f]
186
+ - @copilotkit/runtime@1.52.2-next.1
187
+ - @copilotkit/shared@1.52.2-next.1
188
+
189
+ ## 1.52.2-next.0
190
+
191
+ ### Patch Changes
192
+
193
+ - @copilotkit/runtime@1.52.2-next.0
194
+ - @copilotkit/shared@1.52.2-next.0
195
+
196
+ ## 1.52.1
197
+
198
+ ### Patch Changes
199
+
200
+ - @copilotkit/runtime@1.52.1
201
+ - @copilotkit/shared@1.52.1
202
+
203
+ ## 1.52.1-next.1
204
+
205
+ ### Patch Changes
206
+
207
+ - @copilotkit/runtime@1.52.1-next.1
208
+ - @copilotkit/shared@1.52.1-next.1
209
+
210
+ ## 1.52.1-next.0
211
+
212
+ ### Patch Changes
213
+
214
+ - @copilotkit/runtime@1.52.1-next.0
215
+ - @copilotkit/shared@1.52.1-next.0
216
+
217
+ ## 1.52.0
218
+
219
+ ### Patch Changes
220
+
221
+ - Updated dependencies [6dd6c84]
7
222
  - Updated dependencies [ef0f539]
8
- - @copilotkit/runtime@0.0.0-main-20260220223427
9
- - @copilotkit/shared@0.0.0-main-20260220223427
223
+ - @copilotkit/runtime@1.52.0
224
+ - @copilotkit/shared@1.52.0
225
+
226
+ ## 1.52.0-next.8
227
+
228
+ ### Patch Changes
229
+
230
+ - @copilotkit/runtime@1.52.0-next.8
231
+ - @copilotkit/shared@1.52.0-next.8
232
+
233
+ ## 1.52.0-next.7
234
+
235
+ ### Patch Changes
236
+
237
+ - @copilotkit/runtime@1.52.0-next.7
238
+ - @copilotkit/shared@1.52.0-next.7
239
+
240
+ ## 1.52.0-next.6
241
+
242
+ ### Patch Changes
243
+
244
+ - @copilotkit/runtime@1.52.0-next.6
245
+ - @copilotkit/shared@1.52.0-next.6
246
+
247
+ ## 1.52.0-next.5
248
+
249
+ ### Patch Changes
250
+
251
+ - Updated dependencies [6dd6c84]
252
+ - @copilotkit/runtime@1.52.0-next.5
253
+ - @copilotkit/shared@1.52.0-next.5
254
+
255
+ ## 1.51.5-next.4
256
+
257
+ ### Patch Changes
258
+
259
+ - @copilotkit/runtime@1.51.5-next.4
260
+ - @copilotkit/shared@1.51.5-next.4
10
261
 
11
262
  ## 1.51.5-next.3
12
263
 
@@ -712,6 +963,7 @@
712
963
  - 7bf9dfa: - fix: address issue where catch-all tool renders don't work
713
964
 
714
965
  Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
966
+
715
967
  - @copilotkit/shared@1.10.1
716
968
 
717
969
  ## 1.10.1-next.2
@@ -727,6 +979,7 @@
727
979
  - 76e2603: - fix: make tool call results be structured in generativeUI
728
980
 
729
981
  Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
982
+
730
983
  - @copilotkit/shared@1.10.1-next.1
731
984
 
732
985
  ## 1.10.1-next.0
@@ -736,6 +989,7 @@
736
989
  - 7bf9dfa: - fix: address issue where catch-all tool renders don't work
737
990
 
738
991
  Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
992
+
739
993
  - @copilotkit/shared@1.10.1-next.0
740
994
 
741
995
  ## 1.10.0
@@ -748,12 +1002,14 @@
748
1002
  agentic runtimes we acquired tech-debt that, with this PR, is being alleviated.
749
1003
 
750
1004
  As such, the following features have been updated to be completely functional with Headless UI.
1005
+
751
1006
  - Generative UI
752
1007
  - Suggestions
753
1008
  - Agentic Generative UI
754
1009
  - Interrupts
755
1010
 
756
1011
  In addition, a variety of QOL changes have been made.
1012
+
757
1013
  - New AG-UI based message types
758
1014
  - Inline code rendering is fixed
759
1015
 
@@ -856,12 +1112,14 @@
856
1112
  agentic runtimes we acquired tech-debt that, with this PR, is being alleviated.
857
1113
 
858
1114
  As such, the following features have been updated to be completely functional with Headless UI.
1115
+
859
1116
  - Generative UI
860
1117
  - Suggestions
861
1118
  - Agentic Generative UI
862
1119
  - Interrupts
863
1120
 
864
1121
  In addition, a variety of QOL changes have been made.
1122
+
865
1123
  - New AG-UI based message types
866
1124
  - Inline code rendering is fixed
867
1125
 
@@ -1838,6 +2096,7 @@
1838
2096
  - 0dc0f43: - fix(runtime-client-gql): call controller.close() after suppressing abort errors
1839
2097
 
1840
2098
  Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
2099
+
1841
2100
  - @copilotkit/shared@1.5.15-next.5
1842
2101
 
1843
2102
  ## 1.5.15-next.4
@@ -2269,6 +2528,7 @@
2269
2528
  - e16d95e: New prerelease
2270
2529
  - 1721cbd: Add convertActionsToDynamicStructuredTools to sdk-js
2271
2530
  - CopilotKit Core:
2531
+
2272
2532
  - Improved error messages and overall logs
2273
2533
  - `useCopilotAction.renderAndAwait` renamed to `.renderAndAwaitForResponse` (backwards compatible, will be deprecated in the future)
2274
2534
  - Improved scrolling behavior. It is now possible to scroll up during LLM response generation
@@ -2276,6 +2536,7 @@
2276
2536
  - Updated interfaces for better developer ergonomics
2277
2537
 
2278
2538
  CoAgents:
2539
+
2279
2540
  - Renamed `remoteActions` to `remoteEndpoints` (backwards compatible, will be deprecated in the future)
2280
2541
  - Support for LangGraph Platform in Remote Endpoints
2281
2542
  - LangGraph JS Support for CoAgents (locally via `langgraph dev`, `langgraph up` or deployed to LangGraph Platform)
@@ -2283,6 +2544,7 @@
2283
2544
  - Enhanced state management and message handling
2284
2545
 
2285
2546
  CopilotKid Back-end SDK:
2547
+
2286
2548
  - Released a whole-new `@copilotkit/sdk-js` for building agents with LangGraph JS Support
2287
2549
 
2288
2550
  - 8d0144f: bump
@@ -2649,6 +2911,7 @@ CopilotKid Back-end SDK:
2649
2911
  ### Patch Changes
2650
2912
 
2651
2913
  - inject minified css in bundle
2914
+
2652
2915
  - removes the need to import `styles.css` manually
2653
2916
  - empty `styles.css` included in the build for backwards compatibility
2654
2917
  - uses tsup's `injectStyles` with `postcss` to bundle and minify the CSS, then inject it as a style tag
@@ -2799,6 +3062,7 @@ CopilotKid Back-end SDK:
2799
3062
  ### Major Changes
2800
3063
 
2801
3064
  - b6a4b6eb: V1.0 Release Candidate
3065
+
2802
3066
  - A robust new protocol between the frontend and the Copilot Runtime
2803
3067
  - Support for Copilot Cloud
2804
3068
  - Generative UI
@@ -179,7 +179,12 @@ function loadMessagesFromJsonRepresentation(json) {
179
179
  function getPartialArguments(args) {
180
180
  try {
181
181
  if (!args.length) return {};
182
- return JSON.parse((0, untruncate_json.default)(args.join("")));
182
+ const parsed = JSON.parse((0, untruncate_json.default)(args.join("")));
183
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
184
+ console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`);
185
+ return {};
186
+ }
187
+ return parsed;
183
188
  } catch (e) {
184
189
  return {};
185
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conversion.cjs","names":["TextMessage","MessageStatusCode","ActionExecutionMessage","ResultMessage","AgentStateMessage","ImageMessage"],"sources":["../../src/client/conversion.ts"],"sourcesContent":["import {\n GenerateCopilotResponseMutation,\n MessageInput,\n MessageStatusCode,\n} from \"../graphql/@generated/graphql\";\nimport {\n ActionExecutionMessage,\n AgentStateMessage,\n Message,\n ResultMessage,\n TextMessage,\n ImageMessage,\n} from \"./types\";\n\nimport untruncateJson from \"untruncate-json\";\nimport { parseJson } from \"@copilotkit/shared\";\n\nexport function filterAgentStateMessages(messages: Message[]): Message[] {\n return messages.filter((message) => !message.isAgentStateMessage());\n}\n\nexport function convertMessagesToGqlInput(messages: Message[]): MessageInput[] {\n return messages.map((message) => {\n if (message.isTextMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n textMessage: {\n content: message.content,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n actionExecutionMessage: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isResultMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n resultMessage: {\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n },\n };\n } else if (message.isAgentStateMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n agentStateMessage: {\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: JSON.stringify(message.state),\n },\n };\n } else if (message.isImageMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n imageMessage: {\n format: message.format,\n bytes: message.bytes,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else {\n throw new Error(\"Unknown message type\");\n }\n });\n}\n\nexport function filterAdjacentAgentStateMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] {\n const filteredMessages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] =\n [];\n\n messages.forEach((message, i) => {\n // keep all other message types\n if (message.__typename !== \"AgentStateMessageOutput\") {\n filteredMessages.push(message);\n } else {\n const prevAgentStateMessageIndex = filteredMessages.findIndex(\n // TODO: also check runId\n (m) =>\n m.__typename === \"AgentStateMessageOutput\" &&\n m.agentName === message.agentName,\n );\n if (prevAgentStateMessageIndex === -1) {\n filteredMessages.push(message);\n } else {\n filteredMessages[prevAgentStateMessageIndex] = message;\n }\n }\n });\n\n return filteredMessages;\n}\n\nexport function convertGqlOutputToMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): Message[] {\n return messages.map((message) => {\n if (message.__typename === \"TextMessageOutput\") {\n return new TextMessage({\n id: message.id,\n role: message.role,\n content: message.content.join(\"\"),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ActionExecutionMessageOutput\") {\n return new ActionExecutionMessage({\n id: message.id,\n name: message.name,\n arguments: getPartialArguments(message.arguments),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ResultMessageOutput\") {\n return new ResultMessage({\n id: message.id,\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"AgentStateMessageOutput\") {\n return new AgentStateMessage({\n id: message.id,\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: parseJson(message.state, {}),\n createdAt: new Date(),\n });\n } else if (message.__typename === \"ImageMessageOutput\") {\n return new ImageMessage({\n id: message.id,\n format: message.format,\n bytes: message.bytes,\n role: message.role,\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n }\n\n throw new Error(\"Unknown message type\");\n });\n}\n\nexport function loadMessagesFromJsonRepresentation(json: any[]): Message[] {\n const result: Message[] = [];\n for (const item of json) {\n if (\"content\" in item) {\n result.push(\n new TextMessage({\n id: item.id,\n role: item.role,\n content: item.content,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"arguments\" in item) {\n result.push(\n new ActionExecutionMessage({\n id: item.id,\n name: item.name,\n arguments: item.arguments,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"result\" in item) {\n result.push(\n new ResultMessage({\n id: item.id,\n result: item.result,\n actionExecutionId: item.actionExecutionId,\n actionName: item.actionName,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"state\" in item) {\n result.push(\n new AgentStateMessage({\n id: item.id,\n threadId: item.threadId,\n role: item.role,\n agentName: item.agentName,\n nodeName: item.nodeName,\n runId: item.runId,\n active: item.active,\n running: item.running,\n state: item.state,\n createdAt: item.createdAt || new Date(),\n }),\n );\n } else if (\"format\" in item && \"bytes\" in item) {\n result.push(\n new ImageMessage({\n id: item.id,\n format: item.format,\n bytes: item.bytes,\n role: item.role,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n }\n }\n return result;\n}\n\nfunction getPartialArguments(args: string[]) {\n try {\n if (!args.length) return {};\n\n return JSON.parse(untruncateJson(args.join(\"\")));\n } catch (e) {\n return {};\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"conversion.cjs","names":["TextMessage","MessageStatusCode","ActionExecutionMessage","ResultMessage","AgentStateMessage","ImageMessage"],"sources":["../../src/client/conversion.ts"],"sourcesContent":["import {\n GenerateCopilotResponseMutation,\n MessageInput,\n MessageStatusCode,\n} from \"../graphql/@generated/graphql\";\nimport {\n ActionExecutionMessage,\n AgentStateMessage,\n Message,\n ResultMessage,\n TextMessage,\n ImageMessage,\n} from \"./types\";\n\nimport untruncateJson from \"untruncate-json\";\nimport { parseJson } from \"@copilotkit/shared\";\n\nexport function filterAgentStateMessages(messages: Message[]): Message[] {\n return messages.filter((message) => !message.isAgentStateMessage());\n}\n\nexport function convertMessagesToGqlInput(messages: Message[]): MessageInput[] {\n return messages.map((message) => {\n if (message.isTextMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n textMessage: {\n content: message.content,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n actionExecutionMessage: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isResultMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n resultMessage: {\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n },\n };\n } else if (message.isAgentStateMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n agentStateMessage: {\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: JSON.stringify(message.state),\n },\n };\n } else if (message.isImageMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n imageMessage: {\n format: message.format,\n bytes: message.bytes,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else {\n throw new Error(\"Unknown message type\");\n }\n });\n}\n\nexport function filterAdjacentAgentStateMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] {\n const filteredMessages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] =\n [];\n\n messages.forEach((message, i) => {\n // keep all other message types\n if (message.__typename !== \"AgentStateMessageOutput\") {\n filteredMessages.push(message);\n } else {\n const prevAgentStateMessageIndex = filteredMessages.findIndex(\n // TODO: also check runId\n (m) =>\n m.__typename === \"AgentStateMessageOutput\" &&\n m.agentName === message.agentName,\n );\n if (prevAgentStateMessageIndex === -1) {\n filteredMessages.push(message);\n } else {\n filteredMessages[prevAgentStateMessageIndex] = message;\n }\n }\n });\n\n return filteredMessages;\n}\n\nexport function convertGqlOutputToMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): Message[] {\n return messages.map((message) => {\n if (message.__typename === \"TextMessageOutput\") {\n return new TextMessage({\n id: message.id,\n role: message.role,\n content: message.content.join(\"\"),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ActionExecutionMessageOutput\") {\n return new ActionExecutionMessage({\n id: message.id,\n name: message.name,\n arguments: getPartialArguments(message.arguments),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ResultMessageOutput\") {\n return new ResultMessage({\n id: message.id,\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"AgentStateMessageOutput\") {\n return new AgentStateMessage({\n id: message.id,\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: parseJson(message.state, {}),\n createdAt: new Date(),\n });\n } else if (message.__typename === \"ImageMessageOutput\") {\n return new ImageMessage({\n id: message.id,\n format: message.format,\n bytes: message.bytes,\n role: message.role,\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n }\n\n throw new Error(\"Unknown message type\");\n });\n}\n\nexport function loadMessagesFromJsonRepresentation(json: any[]): Message[] {\n const result: Message[] = [];\n for (const item of json) {\n if (\"content\" in item) {\n result.push(\n new TextMessage({\n id: item.id,\n role: item.role,\n content: item.content,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"arguments\" in item) {\n result.push(\n new ActionExecutionMessage({\n id: item.id,\n name: item.name,\n arguments: item.arguments,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"result\" in item) {\n result.push(\n new ResultMessage({\n id: item.id,\n result: item.result,\n actionExecutionId: item.actionExecutionId,\n actionName: item.actionName,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"state\" in item) {\n result.push(\n new AgentStateMessage({\n id: item.id,\n threadId: item.threadId,\n role: item.role,\n agentName: item.agentName,\n nodeName: item.nodeName,\n runId: item.runId,\n active: item.active,\n running: item.running,\n state: item.state,\n createdAt: item.createdAt || new Date(),\n }),\n );\n } else if (\"format\" in item && \"bytes\" in item) {\n result.push(\n new ImageMessage({\n id: item.id,\n format: item.format,\n bytes: item.bytes,\n role: item.role,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n }\n }\n return result;\n}\n\nfunction getPartialArguments(args: string[]) {\n try {\n if (!args.length) return {};\n\n const parsed = JSON.parse(untruncateJson(args.join(\"\")));\n if (\n typeof parsed !== \"object\" ||\n parsed === null ||\n Array.isArray(parsed)\n ) {\n console.warn(\n `[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`,\n );\n return {};\n }\n return parsed;\n } catch (e) {\n // Incomplete JSON is expected during streaming — no warning needed\n return {};\n }\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,yBAAyB,UAAgC;AACvE,QAAO,SAAS,QAAQ,YAAY,CAAC,QAAQ,qBAAqB,CAAC;;AAGrE,SAAgB,0BAA0B,UAAqC;AAC7E,QAAO,SAAS,KAAK,YAAY;AAC/B,MAAI,QAAQ,eAAe,CACzB,QAAO;GACL,IAAI,QAAQ;GACZ,WAAW,QAAQ;GACnB,aAAa;IACX,SAAS,QAAQ;IACjB,MAAM,QAAQ;IACd,iBAAiB,QAAQ;IAC1B;GACF;WACQ,QAAQ,0BAA0B,CAC3C,QAAO;GACL,IAAI,QAAQ;GACZ,WAAW,QAAQ;GACnB,wBAAwB;IACtB,MAAM,QAAQ;IACd,WAAW,KAAK,UAAU,QAAQ,UAAU;IAC5C,iBAAiB,QAAQ;IAC1B;GACF;WACQ,QAAQ,iBAAiB,CAClC,QAAO;GACL,IAAI,QAAQ;GACZ,WAAW,QAAQ;GACnB,eAAe;IACb,QAAQ,QAAQ;IAChB,mBAAmB,QAAQ;IAC3B,YAAY,QAAQ;IACrB;GACF;WACQ,QAAQ,qBAAqB,CACtC,QAAO;GACL,IAAI,QAAQ;GACZ,WAAW,QAAQ;GACnB,mBAAmB;IACjB,UAAU,QAAQ;IAClB,MAAM,QAAQ;IACd,WAAW,QAAQ;IACnB,UAAU,QAAQ;IAClB,OAAO,QAAQ;IACf,QAAQ,QAAQ;IAChB,SAAS,QAAQ;IACjB,OAAO,KAAK,UAAU,QAAQ,MAAM;IACrC;GACF;WACQ,QAAQ,gBAAgB,CACjC,QAAO;GACL,IAAI,QAAQ;GACZ,WAAW,QAAQ;GACnB,cAAc;IACZ,QAAQ,QAAQ;IAChB,OAAO,QAAQ;IACf,MAAM,QAAQ;IACd,iBAAiB,QAAQ;IAC1B;GACF;MAED,OAAM,IAAI,MAAM,uBAAuB;GAEzC;;AAGJ,SAAgB,iCACd,UACwE;CACxE,MAAM,mBACJ,EAAE;AAEJ,UAAS,SAAS,SAAS,MAAM;AAE/B,MAAI,QAAQ,eAAe,0BACzB,kBAAiB,KAAK,QAAQ;OACzB;GACL,MAAM,6BAA6B,iBAAiB,WAEjD,MACC,EAAE,eAAe,6BACjB,EAAE,cAAc,QAAQ,UAC3B;AACD,OAAI,+BAA+B,GACjC,kBAAiB,KAAK,QAAQ;OAE9B,kBAAiB,8BAA8B;;GAGnD;AAEF,QAAO;;AAGT,SAAgB,2BACd,UACW;AACX,QAAO,SAAS,KAAK,YAAY;AAC/B,MAAI,QAAQ,eAAe,oBACzB,QAAO,IAAIA,0BAAY;GACrB,IAAI,QAAQ;GACZ,MAAM,QAAQ;GACd,SAAS,QAAQ,QAAQ,KAAK,GAAG;GACjC,iBAAiB,QAAQ;GACzB,2BAAW,IAAI,MAAM;GACrB,QAAQ,QAAQ,UAAU,EAAE,MAAMC,kCAAkB,SAAS;GAC9D,CAAC;WACO,QAAQ,eAAe,+BAChC,QAAO,IAAIC,qCAAuB;GAChC,IAAI,QAAQ;GACZ,MAAM,QAAQ;GACd,WAAW,oBAAoB,QAAQ,UAAU;GACjD,iBAAiB,QAAQ;GACzB,2BAAW,IAAI,MAAM;GACrB,QAAQ,QAAQ,UAAU,EAAE,MAAMD,kCAAkB,SAAS;GAC9D,CAAC;WACO,QAAQ,eAAe,sBAChC,QAAO,IAAIE,4BAAc;GACvB,IAAI,QAAQ;GACZ,QAAQ,QAAQ;GAChB,mBAAmB,QAAQ;GAC3B,YAAY,QAAQ;GACpB,2BAAW,IAAI,MAAM;GACrB,QAAQ,QAAQ,UAAU,EAAE,MAAMF,kCAAkB,SAAS;GAC9D,CAAC;WACO,QAAQ,eAAe,0BAChC,QAAO,IAAIG,gCAAkB;GAC3B,IAAI,QAAQ;GACZ,UAAU,QAAQ;GAClB,MAAM,QAAQ;GACd,WAAW,QAAQ;GACnB,UAAU,QAAQ;GAClB,OAAO,QAAQ;GACf,QAAQ,QAAQ;GAChB,SAAS,QAAQ;GACjB,yCAAiB,QAAQ,OAAO,EAAE,CAAC;GACnC,2BAAW,IAAI,MAAM;GACtB,CAAC;WACO,QAAQ,eAAe,qBAChC,QAAO,IAAIC,2BAAa;GACtB,IAAI,QAAQ;GACZ,QAAQ,QAAQ;GAChB,OAAO,QAAQ;GACf,MAAM,QAAQ;GACd,iBAAiB,QAAQ;GACzB,2BAAW,IAAI,MAAM;GACrB,QAAQ,QAAQ,UAAU,EAAE,MAAMJ,kCAAkB,SAAS;GAC9D,CAAC;AAGJ,QAAM,IAAI,MAAM,uBAAuB;GACvC;;AAGJ,SAAgB,mCAAmC,MAAwB;CACzE,MAAM,SAAoB,EAAE;AAC5B,MAAK,MAAM,QAAQ,KACjB,KAAI,aAAa,KACf,QAAO,KACL,IAAID,0BAAY;EACd,IAAI,KAAK;EACT,MAAM,KAAK;EACX,SAAS,KAAK;EACd,iBAAiB,KAAK;EACtB,WAAW,KAAK,6BAAa,IAAI,MAAM;EACvC,QAAQ,KAAK,UAAU,EAAE,MAAMC,kCAAkB,SAAS;EAC3D,CAAC,CACH;UACQ,eAAe,KACxB,QAAO,KACL,IAAIC,qCAAuB;EACzB,IAAI,KAAK;EACT,MAAM,KAAK;EACX,WAAW,KAAK;EAChB,iBAAiB,KAAK;EACtB,WAAW,KAAK,6BAAa,IAAI,MAAM;EACvC,QAAQ,KAAK,UAAU,EAAE,MAAMD,kCAAkB,SAAS;EAC3D,CAAC,CACH;UACQ,YAAY,KACrB,QAAO,KACL,IAAIE,4BAAc;EAChB,IAAI,KAAK;EACT,QAAQ,KAAK;EACb,mBAAmB,KAAK;EACxB,YAAY,KAAK;EACjB,WAAW,KAAK,6BAAa,IAAI,MAAM;EACvC,QAAQ,KAAK,UAAU,EAAE,MAAMF,kCAAkB,SAAS;EAC3D,CAAC,CACH;UACQ,WAAW,KACpB,QAAO,KACL,IAAIG,gCAAkB;EACpB,IAAI,KAAK;EACT,UAAU,KAAK;EACf,MAAM,KAAK;EACX,WAAW,KAAK;EAChB,UAAU,KAAK;EACf,OAAO,KAAK;EACZ,QAAQ,KAAK;EACb,SAAS,KAAK;EACd,OAAO,KAAK;EACZ,WAAW,KAAK,6BAAa,IAAI,MAAM;EACxC,CAAC,CACH;UACQ,YAAY,QAAQ,WAAW,KACxC,QAAO,KACL,IAAIC,2BAAa;EACf,IAAI,KAAK;EACT,QAAQ,KAAK;EACb,OAAO,KAAK;EACZ,MAAM,KAAK;EACX,iBAAiB,KAAK;EACtB,WAAW,KAAK,6BAAa,IAAI,MAAM;EACvC,QAAQ,KAAK,UAAU,EAAE,MAAMJ,kCAAkB,SAAS;EAC3D,CAAC,CACH;AAGL,QAAO;;AAGT,SAAS,oBAAoB,MAAgB;AAC3C,KAAI;AACF,MAAI,CAAC,KAAK,OAAQ,QAAO,EAAE;EAE3B,MAAM,SAAS,KAAK,mCAAqB,KAAK,KAAK,GAAG,CAAC,CAAC;AACxD,MACE,OAAO,WAAW,YAClB,WAAW,QACX,MAAM,QAAQ,OAAO,EACrB;AACA,WAAQ,KACN,qDAAqD,OAAO,OAAO,iCACpE;AACD,UAAO,EAAE;;AAEX,SAAO;UACA,GAAG;AAEV,SAAO,EAAE"}
@@ -177,7 +177,12 @@ function loadMessagesFromJsonRepresentation(json) {
177
177
  function getPartialArguments(args) {
178
178
  try {
179
179
  if (!args.length) return {};
180
- return JSON.parse(untruncateJson(args.join("")));
180
+ const parsed = JSON.parse(untruncateJson(args.join("")));
181
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
182
+ console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`);
183
+ return {};
184
+ }
185
+ return parsed;
181
186
  } catch (e) {
182
187
  return {};
183
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conversion.mjs","names":[],"sources":["../../src/client/conversion.ts"],"sourcesContent":["import {\n GenerateCopilotResponseMutation,\n MessageInput,\n MessageStatusCode,\n} from \"../graphql/@generated/graphql\";\nimport {\n ActionExecutionMessage,\n AgentStateMessage,\n Message,\n ResultMessage,\n TextMessage,\n ImageMessage,\n} from \"./types\";\n\nimport untruncateJson from \"untruncate-json\";\nimport { parseJson } from \"@copilotkit/shared\";\n\nexport function filterAgentStateMessages(messages: Message[]): Message[] {\n return messages.filter((message) => !message.isAgentStateMessage());\n}\n\nexport function convertMessagesToGqlInput(messages: Message[]): MessageInput[] {\n return messages.map((message) => {\n if (message.isTextMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n textMessage: {\n content: message.content,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n actionExecutionMessage: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isResultMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n resultMessage: {\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n },\n };\n } else if (message.isAgentStateMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n agentStateMessage: {\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: JSON.stringify(message.state),\n },\n };\n } else if (message.isImageMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n imageMessage: {\n format: message.format,\n bytes: message.bytes,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else {\n throw new Error(\"Unknown message type\");\n }\n });\n}\n\nexport function filterAdjacentAgentStateMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] {\n const filteredMessages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] =\n [];\n\n messages.forEach((message, i) => {\n // keep all other message types\n if (message.__typename !== \"AgentStateMessageOutput\") {\n filteredMessages.push(message);\n } else {\n const prevAgentStateMessageIndex = filteredMessages.findIndex(\n // TODO: also check runId\n (m) =>\n m.__typename === \"AgentStateMessageOutput\" &&\n m.agentName === message.agentName,\n );\n if (prevAgentStateMessageIndex === -1) {\n filteredMessages.push(message);\n } else {\n filteredMessages[prevAgentStateMessageIndex] = message;\n }\n }\n });\n\n return filteredMessages;\n}\n\nexport function convertGqlOutputToMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): Message[] {\n return messages.map((message) => {\n if (message.__typename === \"TextMessageOutput\") {\n return new TextMessage({\n id: message.id,\n role: message.role,\n content: message.content.join(\"\"),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ActionExecutionMessageOutput\") {\n return new ActionExecutionMessage({\n id: message.id,\n name: message.name,\n arguments: getPartialArguments(message.arguments),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ResultMessageOutput\") {\n return new ResultMessage({\n id: message.id,\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"AgentStateMessageOutput\") {\n return new AgentStateMessage({\n id: message.id,\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: parseJson(message.state, {}),\n createdAt: new Date(),\n });\n } else if (message.__typename === \"ImageMessageOutput\") {\n return new ImageMessage({\n id: message.id,\n format: message.format,\n bytes: message.bytes,\n role: message.role,\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n }\n\n throw new Error(\"Unknown message type\");\n });\n}\n\nexport function loadMessagesFromJsonRepresentation(json: any[]): Message[] {\n const result: Message[] = [];\n for (const item of json) {\n if (\"content\" in item) {\n result.push(\n new TextMessage({\n id: item.id,\n role: item.role,\n content: item.content,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"arguments\" in item) {\n result.push(\n new ActionExecutionMessage({\n id: item.id,\n name: item.name,\n arguments: item.arguments,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"result\" in item) {\n result.push(\n new ResultMessage({\n id: item.id,\n result: item.result,\n actionExecutionId: item.actionExecutionId,\n actionName: item.actionName,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"state\" in item) {\n result.push(\n new AgentStateMessage({\n id: item.id,\n threadId: item.threadId,\n role: item.role,\n agentName: item.agentName,\n nodeName: item.nodeName,\n runId: item.runId,\n active: item.active,\n running: item.running,\n state: item.state,\n createdAt: item.createdAt || new Date(),\n }),\n );\n } else if (\"format\" in item && \"bytes\" in item) {\n result.push(\n new ImageMessage({\n id: item.id,\n format: item.format,\n bytes: item.bytes,\n role: item.role,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n }\n }\n return result;\n}\n\nfunction getPartialArguments(args: string[]) {\n try {\n if (!args.length) return {};\n\n return JSON.parse(untruncateJson(args.join(\"\")));\n } catch (e) {\n return {};\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"conversion.mjs","names":[],"sources":["../../src/client/conversion.ts"],"sourcesContent":["import {\n GenerateCopilotResponseMutation,\n MessageInput,\n MessageStatusCode,\n} from \"../graphql/@generated/graphql\";\nimport {\n ActionExecutionMessage,\n AgentStateMessage,\n Message,\n ResultMessage,\n TextMessage,\n ImageMessage,\n} from \"./types\";\n\nimport untruncateJson from \"untruncate-json\";\nimport { parseJson } from \"@copilotkit/shared\";\n\nexport function filterAgentStateMessages(messages: Message[]): Message[] {\n return messages.filter((message) => !message.isAgentStateMessage());\n}\n\nexport function convertMessagesToGqlInput(messages: Message[]): MessageInput[] {\n return messages.map((message) => {\n if (message.isTextMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n textMessage: {\n content: message.content,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n actionExecutionMessage: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isResultMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n resultMessage: {\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n },\n };\n } else if (message.isAgentStateMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n agentStateMessage: {\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: JSON.stringify(message.state),\n },\n };\n } else if (message.isImageMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n imageMessage: {\n format: message.format,\n bytes: message.bytes,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else {\n throw new Error(\"Unknown message type\");\n }\n });\n}\n\nexport function filterAdjacentAgentStateMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] {\n const filteredMessages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] =\n [];\n\n messages.forEach((message, i) => {\n // keep all other message types\n if (message.__typename !== \"AgentStateMessageOutput\") {\n filteredMessages.push(message);\n } else {\n const prevAgentStateMessageIndex = filteredMessages.findIndex(\n // TODO: also check runId\n (m) =>\n m.__typename === \"AgentStateMessageOutput\" &&\n m.agentName === message.agentName,\n );\n if (prevAgentStateMessageIndex === -1) {\n filteredMessages.push(message);\n } else {\n filteredMessages[prevAgentStateMessageIndex] = message;\n }\n }\n });\n\n return filteredMessages;\n}\n\nexport function convertGqlOutputToMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): Message[] {\n return messages.map((message) => {\n if (message.__typename === \"TextMessageOutput\") {\n return new TextMessage({\n id: message.id,\n role: message.role,\n content: message.content.join(\"\"),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ActionExecutionMessageOutput\") {\n return new ActionExecutionMessage({\n id: message.id,\n name: message.name,\n arguments: getPartialArguments(message.arguments),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ResultMessageOutput\") {\n return new ResultMessage({\n id: message.id,\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"AgentStateMessageOutput\") {\n return new AgentStateMessage({\n id: message.id,\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: parseJson(message.state, {}),\n createdAt: new Date(),\n });\n } else if (message.__typename === \"ImageMessageOutput\") {\n return new ImageMessage({\n id: message.id,\n format: message.format,\n bytes: message.bytes,\n role: message.role,\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n }\n\n throw new Error(\"Unknown message type\");\n });\n}\n\nexport function loadMessagesFromJsonRepresentation(json: any[]): Message[] {\n const result: Message[] = [];\n for (const item of json) {\n if (\"content\" in item) {\n result.push(\n new TextMessage({\n id: item.id,\n role: item.role,\n content: item.content,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"arguments\" in item) {\n result.push(\n new ActionExecutionMessage({\n id: item.id,\n name: item.name,\n arguments: item.arguments,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"result\" in item) {\n result.push(\n new ResultMessage({\n id: item.id,\n result: item.result,\n actionExecutionId: item.actionExecutionId,\n actionName: item.actionName,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"state\" in item) {\n result.push(\n new AgentStateMessage({\n id: item.id,\n threadId: item.threadId,\n role: item.role,\n agentName: item.agentName,\n nodeName: item.nodeName,\n runId: item.runId,\n active: item.active,\n running: item.running,\n state: item.state,\n createdAt: item.createdAt || new Date(),\n }),\n );\n } else if (\"format\" in item && \"bytes\" in item) {\n result.push(\n new ImageMessage({\n id: item.id,\n format: item.format,\n bytes: item.bytes,\n role: item.role,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n }\n }\n return result;\n}\n\nfunction getPartialArguments(args: string[]) {\n try {\n if (!args.length) return {};\n\n const parsed = JSON.parse(untruncateJson(args.join(\"\")));\n if (\n typeof parsed !== \"object\" ||\n parsed === null ||\n Array.isArray(parsed)\n ) {\n console.warn(\n `[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`,\n );\n return {};\n }\n return parsed;\n } catch (e) {\n // Incomplete JSON is expected during streaming — no warning needed\n return {};\n }\n}\n"],"mappings":"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"}
package/dist/index.umd.js CHANGED
@@ -34,7 +34,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
34
34
  untruncate_json = __toESM(untruncate_json);
35
35
 
36
36
  //#region package.json
37
- var version = "1.51.5-next.3";
37
+ var version = "1.55.0-next.8";
38
38
 
39
39
  //#endregion
40
40
  //#region src/graphql/@generated/graphql.ts
@@ -1719,7 +1719,12 @@ untruncate_json = __toESM(untruncate_json);
1719
1719
  function getPartialArguments(args) {
1720
1720
  try {
1721
1721
  if (!args.length) return {};
1722
- return JSON.parse((0, untruncate_json.default)(args.join("")));
1722
+ const parsed = JSON.parse((0, untruncate_json.default)(args.join("")));
1723
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
1724
+ console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`);
1725
+ return {};
1726
+ }
1727
+ return parsed;
1723
1728
  } catch (e) {
1724
1729
  return {};
1725
1730
  }
@@ -1811,12 +1816,16 @@ untruncate_json = __toESM(untruncate_json);
1811
1816
  if (typeof toolCall.function.arguments === "string") try {
1812
1817
  argumentsObj = JSON.parse(toolCall.function.arguments);
1813
1818
  } catch (error) {
1814
- console.warn(`Failed to parse tool call arguments for ${toolCall.function.name}:`, error);
1819
+ console.warn(`[CopilotKit] Failed to parse tool arguments, falling back to empty object`);
1815
1820
  argumentsObj = {};
1816
1821
  }
1817
1822
  else if (typeof toolCall.function.arguments === "object" && toolCall.function.arguments !== null) argumentsObj = toolCall.function.arguments;
1818
1823
  else {
1819
- console.warn(`Invalid tool call arguments type for ${toolCall.function.name}:`, typeof toolCall.function.arguments);
1824
+ console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof toolCall.function.arguments}), falling back to empty object`);
1825
+ argumentsObj = {};
1826
+ }
1827
+ if (typeof argumentsObj !== "object" || argumentsObj === null || Array.isArray(argumentsObj)) {
1828
+ console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof argumentsObj}), falling back to empty object`);
1820
1829
  argumentsObj = {};
1821
1830
  }
1822
1831
  return new ActionExecutionMessage({