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

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 (47) hide show
  1. package/CHANGELOG.md +268 -3
  2. package/dist/client/CopilotRuntimeClient.d.ts +44 -0
  3. package/dist/client/CopilotRuntimeClient.d.ts.map +1 -0
  4. package/dist/client/conversion.cjs +6 -1
  5. package/dist/client/conversion.cjs.map +1 -1
  6. package/dist/client/conversion.d.ts +12 -0
  7. package/dist/client/conversion.d.ts.map +1 -0
  8. package/dist/client/conversion.mjs +6 -1
  9. package/dist/client/conversion.mjs.map +1 -1
  10. package/dist/client/index.d.ts +5 -0
  11. package/dist/client/types.d.ts +76 -0
  12. package/dist/client/types.d.ts.map +1 -0
  13. package/dist/graphql/@generated/graphql.d.ts +642 -0
  14. package/dist/graphql/@generated/graphql.d.ts.map +1 -0
  15. package/dist/index.d.ts +9 -0
  16. package/dist/index.umd.js +13 -4
  17. package/dist/index.umd.js.map +1 -1
  18. package/dist/message-conversion/agui-to-gql.cjs +6 -2
  19. package/dist/message-conversion/agui-to-gql.cjs.map +1 -1
  20. package/dist/message-conversion/agui-to-gql.d.cts +1 -1
  21. package/dist/message-conversion/agui-to-gql.d.cts.map +1 -1
  22. package/dist/message-conversion/agui-to-gql.d.mts +1 -1
  23. package/dist/message-conversion/agui-to-gql.d.mts.map +1 -1
  24. package/dist/message-conversion/agui-to-gql.d.ts +14 -0
  25. package/dist/message-conversion/agui-to-gql.d.ts.map +1 -0
  26. package/dist/message-conversion/agui-to-gql.mjs +6 -2
  27. package/dist/message-conversion/agui-to-gql.mjs.map +1 -1
  28. package/dist/message-conversion/gql-to-agui.cjs.map +1 -1
  29. package/dist/message-conversion/gql-to-agui.d.cts +1 -1
  30. package/dist/message-conversion/gql-to-agui.d.mts +1 -1
  31. package/dist/message-conversion/gql-to-agui.d.ts +13 -0
  32. package/dist/message-conversion/gql-to-agui.d.ts.map +1 -0
  33. package/dist/message-conversion/gql-to-agui.mjs.map +1 -1
  34. package/dist/message-conversion/index.d.ts +2 -0
  35. package/dist/package.cjs +1 -1
  36. package/dist/package.mjs +1 -1
  37. package/package.json +28 -29
  38. package/project.json +4 -0
  39. package/src/client/__tests__/conversion.test.ts +64 -0
  40. package/src/client/conversion.ts +13 -1
  41. package/src/message-conversion/agui-to-gql.test.ts +20 -1
  42. package/src/message-conversion/agui-to-gql.ts +15 -5
  43. package/src/message-conversion/gql-to-agui.ts +1 -1
  44. package/src/message-conversion/roundtrip-conversion.test.ts +1 -1
  45. package/tsconfig.json +1 -1
  46. package/tsdown.config.ts +0 -2
  47. package/vitest.config.mjs +1 -0
package/CHANGELOG.md CHANGED
@@ -1,12 +1,264 @@
1
1
  # @copilotkit/runtime-client-gql
2
2
 
3
- ## 0.0.0-main-20260220223427
3
+ ## 0.0.0-main-20260403195251
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
+ - Updated dependencies [52a9322]
13
+ - @copilotkit/shared@0.0.0-main-20260403195251
14
+
15
+ ## 1.55.0-next.8
16
+
17
+ ### Patch Changes
18
+
19
+ - @copilotkit/shared@1.55.0-next.8
20
+
21
+ ## 1.55.0-next.7
22
+
23
+ ### Minor Changes
24
+
25
+ - 1ceb963: refactor: consolidate V1/V2 packages into flat @copilotkit/\* structure
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies [1ceb963]
30
+ - @copilotkit/shared@1.55.0-next.7
31
+
32
+ ## 1.54.1-next.6
33
+
34
+ ### Patch Changes
35
+
36
+ - @copilotkit/shared@1.54.1-next.6
37
+
38
+ ## 1.54.1-next.5
39
+
40
+ ### Patch Changes
41
+
42
+ - @copilotkit/shared@1.54.1-next.5
43
+
44
+ ## 1.54.1-next.4
45
+
46
+ ### Patch Changes
47
+
48
+ - @copilotkit/shared@1.54.1-next.4
49
+
50
+ ## 1.54.1-next.3
51
+
52
+ ### Patch Changes
53
+
54
+ - @copilotkit/shared@1.54.1-next.3
55
+
56
+ ## 1.54.1-next.2
57
+
58
+ ### Patch Changes
59
+
60
+ - @copilotkit/shared@1.54.1-next.2
61
+
62
+ ## 1.54.1-next.1
63
+
64
+ ### Patch Changes
65
+
66
+ - @copilotkit/shared@1.54.1-next.1
67
+
68
+ ## 1.54.1-next.0
4
69
 
5
70
  ### Patch Changes
6
71
 
72
+ - @copilotkit/shared@1.54.1-next.0
73
+
74
+ ## 1.54.0
75
+
76
+ ### Patch Changes
77
+
78
+ - @copilotkit/shared@1.54.0
79
+
80
+ ## 1.54.0-next.9
81
+
82
+ ### Patch Changes
83
+
84
+ - @copilotkit/shared@1.54.0-next.9
85
+
86
+ ## 1.54.0-next.8
87
+
88
+ ### Patch Changes
89
+
90
+ - @copilotkit/shared@1.54.0-next.8
91
+
92
+ ## 1.54.0-next.7
93
+
94
+ ### Patch Changes
95
+
96
+ - @copilotkit/shared@1.54.0-next.7
97
+
98
+ ## 1.54.0-next.6
99
+
100
+ ### Patch Changes
101
+
102
+ - @copilotkit/shared@1.54.0-next.6
103
+
104
+ ## 1.54.0-next.5
105
+
106
+ ### Patch Changes
107
+
108
+ - @copilotkit/shared@1.54.0-next.5
109
+
110
+ ## 1.54.0-next.4
111
+
112
+ ### Patch Changes
113
+
114
+ - @copilotkit/shared@1.54.0-next.4
115
+
116
+ ## 1.54.0-next.3
117
+
118
+ ### Patch Changes
119
+
120
+ - @copilotkit/shared@1.54.0-next.3
121
+
122
+ ## 1.53.1-next.2
123
+
124
+ ### Patch Changes
125
+
126
+ - @copilotkit/shared@1.53.1-next.2
127
+
128
+ ## 1.53.1-next.1
129
+
130
+ ### Patch Changes
131
+
132
+ - @copilotkit/shared@1.53.1-next.1
133
+
134
+ ## 1.53.1-next.0
135
+
136
+ ### Patch Changes
137
+
138
+ - @copilotkit/shared@1.53.1-next.0
139
+
140
+ ## 1.53.0
141
+
142
+ ### Patch Changes
143
+
144
+ - Updated dependencies [1510f64]
145
+ - Updated dependencies [bf1fc6f]
146
+ - @copilotkit/shared@1.53.0
147
+
148
+ ## 1.53.0-next.6
149
+
150
+ ### Patch Changes
151
+
152
+ - @copilotkit/shared@1.53.0-next.6
153
+
154
+ ## 1.53.0-next.5
155
+
156
+ ### Patch Changes
157
+
158
+ - @copilotkit/shared@1.53.0-next.5
159
+
160
+ ## 1.52.2-next.4
161
+
162
+ ### Patch Changes
163
+
164
+ - @copilotkit/shared@1.52.2-next.4
165
+
166
+ ## 1.52.2-next.3
167
+
168
+ ### Patch Changes
169
+
170
+ - Updated dependencies [1510f64]
171
+ - @copilotkit/shared@1.52.2-next.3
172
+
173
+ ## 1.52.2-next.2
174
+
175
+ ### Patch Changes
176
+
177
+ - Updated dependencies [8e0f94f]
178
+ - @copilotkit/runtime@1.52.2-next.2
179
+ - @copilotkit/shared@1.52.2-next.2
180
+
181
+ ## 1.52.2-next.1
182
+
183
+ ### Patch Changes
184
+
185
+ - Updated dependencies [d1f7aba]
186
+ - Updated dependencies [bf1fc6f]
187
+ - @copilotkit/runtime@1.52.2-next.1
188
+ - @copilotkit/shared@1.52.2-next.1
189
+
190
+ ## 1.52.2-next.0
191
+
192
+ ### Patch Changes
193
+
194
+ - @copilotkit/runtime@1.52.2-next.0
195
+ - @copilotkit/shared@1.52.2-next.0
196
+
197
+ ## 1.52.1
198
+
199
+ ### Patch Changes
200
+
201
+ - @copilotkit/runtime@1.52.1
202
+ - @copilotkit/shared@1.52.1
203
+
204
+ ## 1.52.1-next.1
205
+
206
+ ### Patch Changes
207
+
208
+ - @copilotkit/runtime@1.52.1-next.1
209
+ - @copilotkit/shared@1.52.1-next.1
210
+
211
+ ## 1.52.1-next.0
212
+
213
+ ### Patch Changes
214
+
215
+ - @copilotkit/runtime@1.52.1-next.0
216
+ - @copilotkit/shared@1.52.1-next.0
217
+
218
+ ## 1.52.0
219
+
220
+ ### Patch Changes
221
+
222
+ - Updated dependencies [6dd6c84]
7
223
  - Updated dependencies [ef0f539]
8
- - @copilotkit/runtime@0.0.0-main-20260220223427
9
- - @copilotkit/shared@0.0.0-main-20260220223427
224
+ - @copilotkit/runtime@1.52.0
225
+ - @copilotkit/shared@1.52.0
226
+
227
+ ## 1.52.0-next.8
228
+
229
+ ### Patch Changes
230
+
231
+ - @copilotkit/runtime@1.52.0-next.8
232
+ - @copilotkit/shared@1.52.0-next.8
233
+
234
+ ## 1.52.0-next.7
235
+
236
+ ### Patch Changes
237
+
238
+ - @copilotkit/runtime@1.52.0-next.7
239
+ - @copilotkit/shared@1.52.0-next.7
240
+
241
+ ## 1.52.0-next.6
242
+
243
+ ### Patch Changes
244
+
245
+ - @copilotkit/runtime@1.52.0-next.6
246
+ - @copilotkit/shared@1.52.0-next.6
247
+
248
+ ## 1.52.0-next.5
249
+
250
+ ### Patch Changes
251
+
252
+ - Updated dependencies [6dd6c84]
253
+ - @copilotkit/runtime@1.52.0-next.5
254
+ - @copilotkit/shared@1.52.0-next.5
255
+
256
+ ## 1.51.5-next.4
257
+
258
+ ### Patch Changes
259
+
260
+ - @copilotkit/runtime@1.51.5-next.4
261
+ - @copilotkit/shared@1.51.5-next.4
10
262
 
11
263
  ## 1.51.5-next.3
12
264
 
@@ -712,6 +964,7 @@
712
964
  - 7bf9dfa: - fix: address issue where catch-all tool renders don't work
713
965
 
714
966
  Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
967
+
715
968
  - @copilotkit/shared@1.10.1
716
969
 
717
970
  ## 1.10.1-next.2
@@ -727,6 +980,7 @@
727
980
  - 76e2603: - fix: make tool call results be structured in generativeUI
728
981
 
729
982
  Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
983
+
730
984
  - @copilotkit/shared@1.10.1-next.1
731
985
 
732
986
  ## 1.10.1-next.0
@@ -736,6 +990,7 @@
736
990
  - 7bf9dfa: - fix: address issue where catch-all tool renders don't work
737
991
 
738
992
  Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
993
+
739
994
  - @copilotkit/shared@1.10.1-next.0
740
995
 
741
996
  ## 1.10.0
@@ -748,12 +1003,14 @@
748
1003
  agentic runtimes we acquired tech-debt that, with this PR, is being alleviated.
749
1004
 
750
1005
  As such, the following features have been updated to be completely functional with Headless UI.
1006
+
751
1007
  - Generative UI
752
1008
  - Suggestions
753
1009
  - Agentic Generative UI
754
1010
  - Interrupts
755
1011
 
756
1012
  In addition, a variety of QOL changes have been made.
1013
+
757
1014
  - New AG-UI based message types
758
1015
  - Inline code rendering is fixed
759
1016
 
@@ -856,12 +1113,14 @@
856
1113
  agentic runtimes we acquired tech-debt that, with this PR, is being alleviated.
857
1114
 
858
1115
  As such, the following features have been updated to be completely functional with Headless UI.
1116
+
859
1117
  - Generative UI
860
1118
  - Suggestions
861
1119
  - Agentic Generative UI
862
1120
  - Interrupts
863
1121
 
864
1122
  In addition, a variety of QOL changes have been made.
1123
+
865
1124
  - New AG-UI based message types
866
1125
  - Inline code rendering is fixed
867
1126
 
@@ -1838,6 +2097,7 @@
1838
2097
  - 0dc0f43: - fix(runtime-client-gql): call controller.close() after suppressing abort errors
1839
2098
 
1840
2099
  Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
2100
+
1841
2101
  - @copilotkit/shared@1.5.15-next.5
1842
2102
 
1843
2103
  ## 1.5.15-next.4
@@ -2269,6 +2529,7 @@
2269
2529
  - e16d95e: New prerelease
2270
2530
  - 1721cbd: Add convertActionsToDynamicStructuredTools to sdk-js
2271
2531
  - CopilotKit Core:
2532
+
2272
2533
  - Improved error messages and overall logs
2273
2534
  - `useCopilotAction.renderAndAwait` renamed to `.renderAndAwaitForResponse` (backwards compatible, will be deprecated in the future)
2274
2535
  - Improved scrolling behavior. It is now possible to scroll up during LLM response generation
@@ -2276,6 +2537,7 @@
2276
2537
  - Updated interfaces for better developer ergonomics
2277
2538
 
2278
2539
  CoAgents:
2540
+
2279
2541
  - Renamed `remoteActions` to `remoteEndpoints` (backwards compatible, will be deprecated in the future)
2280
2542
  - Support for LangGraph Platform in Remote Endpoints
2281
2543
  - LangGraph JS Support for CoAgents (locally via `langgraph dev`, `langgraph up` or deployed to LangGraph Platform)
@@ -2283,6 +2545,7 @@
2283
2545
  - Enhanced state management and message handling
2284
2546
 
2285
2547
  CopilotKid Back-end SDK:
2548
+
2286
2549
  - Released a whole-new `@copilotkit/sdk-js` for building agents with LangGraph JS Support
2287
2550
 
2288
2551
  - 8d0144f: bump
@@ -2649,6 +2912,7 @@ CopilotKid Back-end SDK:
2649
2912
  ### Patch Changes
2650
2913
 
2651
2914
  - inject minified css in bundle
2915
+
2652
2916
  - removes the need to import `styles.css` manually
2653
2917
  - empty `styles.css` included in the build for backwards compatibility
2654
2918
  - uses tsup's `injectStyles` with `postcss` to bundle and minify the CSS, then inject it as a style tag
@@ -2799,6 +3063,7 @@ CopilotKid Back-end SDK:
2799
3063
  ### Major Changes
2800
3064
 
2801
3065
  - b6a4b6eb: V1.0 Release Candidate
3066
+
2802
3067
  - A robust new protocol between the frontend and the Copilot Runtime
2803
3068
  - Support for Copilot Cloud
2804
3069
  - Generative UI
@@ -0,0 +1,44 @@
1
+ import { AvailableAgentsQuery, Exact, GenerateCopilotResponseInput, GenerateCopilotResponseMutation, GenerateCopilotResponseMutationVariables, InputMaybe, LoadAgentStateQuery, Scalars } from "../graphql/@generated/graphql.cjs";
2
+ import * as urql from "urql";
3
+ import { OperationResult, OperationResultSource } from "urql";
4
+ import { Client } from "@urql/core";
5
+
6
+ //#region src/client/CopilotRuntimeClient.d.ts
7
+ interface CopilotRuntimeClientOptions {
8
+ url: string;
9
+ publicApiKey?: string;
10
+ headers?: Record<string, string>;
11
+ credentials?: RequestCredentials;
12
+ handleGQLErrors?: (error: Error) => void;
13
+ handleGQLWarning?: (warning: string) => void;
14
+ }
15
+ declare class CopilotRuntimeClient {
16
+ client: Client;
17
+ handleGQLErrors?: (error: Error) => void;
18
+ handleGQLWarning?: (warning: string) => void;
19
+ constructor(options: CopilotRuntimeClientOptions);
20
+ generateCopilotResponse({
21
+ data,
22
+ properties,
23
+ signal
24
+ }: {
25
+ data: GenerateCopilotResponseMutationVariables["data"];
26
+ properties?: GenerateCopilotResponseMutationVariables["properties"];
27
+ signal?: AbortSignal;
28
+ }): OperationResultSource<OperationResult<GenerateCopilotResponseMutation, Exact<{
29
+ data: GenerateCopilotResponseInput;
30
+ properties?: InputMaybe<Scalars["JSONObject"]["input"]>;
31
+ }>>>;
32
+ asStream<S, T>(source: OperationResultSource<OperationResult<S, {
33
+ data: T;
34
+ }>>): ReadableStream<S>;
35
+ availableAgents(): OperationResultSource<OperationResult<AvailableAgentsQuery, urql.AnyVariables>>;
36
+ loadAgentState(data: {
37
+ threadId: string;
38
+ agentName: string;
39
+ }): OperationResultSource<OperationResult<LoadAgentStateQuery, urql.AnyVariables>>;
40
+ static removeGraphQLTypename(data: any): any;
41
+ }
42
+ //#endregion
43
+ export { CopilotRuntimeClient, CopilotRuntimeClientOptions };
44
+ //# sourceMappingURL=CopilotRuntimeClient.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopilotRuntimeClient.d.cts","names":[],"sources":["../../src/client/CopilotRuntimeClient.ts"],"mappings":";;;;;;UAsEiB,2BAAA;EACf,GAAA;EACA,YAAA;EACA,OAAA,GAAU,MAAA;EACV,WAAA,GAAc,kBAAA;EACd,eAAA,IAAmB,KAAA,EAAO,KAAA;EAC1B,gBAAA,IAAoB,OAAA;AAAA;AAAA,cAGT,oBAAA;EACX,MAAA,EAAQ,MAAA;EACD,eAAA,IAAmB,KAAA,EAAO,KAAA;EAC1B,gBAAA,IAAoB,OAAA;cAEf,OAAA,EAAS,2BAAA;EA2BrB,uBAAA,CAAA;IACE,IAAA;IACA,UAAA;IACA;EAAA;IAEA,IAAA,EAAM,wCAAA;IACN,UAAA,GAAa,wCAAA;IACb,MAAA,GAAS,WAAA;EAAA,IACV,qBAAA,CAAA,eAAA,CAAA,+BAAA;UAAA,4BAAA;iBAgHujM,UAAA;;EAlGjjM,QAAA,MAAA,CACL,MAAA,EAAQ,qBAAA,CAAsB,eAAA,CAAgB,CAAA;IAAK,IAAA,EAAM,CAAA;EAAA,MAAK,cAAA,CAAA,CAAA;EAqDhE,eAAA,CAAA,GAAe,qBAAA,CAAA,eAAA,CAAA,oBAAA,EAAA,IAAA,CAAA,YAAA;EASf,cAAA,CAAe,IAAA;IAAQ,QAAA;IAAkB,SAAA;EAAA,IAAmB,qBAAA,CAAA,eAAA,CAAA,mBAAA,EAAA,IAAA,CAAA,YAAA;EAAA,OAqBrD,qBAAA,CAAsB,IAAA;AAAA"}
@@ -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":"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"}
@@ -0,0 +1,12 @@
1
+ import { GenerateCopilotResponseMutation, MessageInput } from "../graphql/@generated/graphql.cjs";
2
+ import { Message } from "./types.cjs";
3
+
4
+ //#region src/client/conversion.d.ts
5
+ declare function filterAgentStateMessages(messages: Message[]): Message[];
6
+ declare function convertMessagesToGqlInput(messages: Message[]): MessageInput[];
7
+ declare function filterAdjacentAgentStateMessages(messages: GenerateCopilotResponseMutation["generateCopilotResponse"]["messages"]): GenerateCopilotResponseMutation["generateCopilotResponse"]["messages"];
8
+ declare function convertGqlOutputToMessages(messages: GenerateCopilotResponseMutation["generateCopilotResponse"]["messages"]): Message[];
9
+ declare function loadMessagesFromJsonRepresentation(json: any[]): Message[];
10
+ //#endregion
11
+ export { convertGqlOutputToMessages, convertMessagesToGqlInput, filterAdjacentAgentStateMessages, filterAgentStateMessages, loadMessagesFromJsonRepresentation };
12
+ //# sourceMappingURL=conversion.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.d.cts","names":[],"sources":["../../src/client/conversion.ts"],"mappings":";;;;iBAiBgB,wBAAA,CAAyB,QAAA,EAAU,OAAA,KAAY,OAAA;AAAA,iBAI/C,yBAAA,CAA0B,QAAA,EAAU,OAAA,KAAY,YAAA;AAAA,iBAgEhD,gCAAA,CACd,QAAA,EAAU,+BAAA,0CACT,+BAAA;AAAA,iBA0Ba,0BAAA,CACd,QAAA,EAAU,+BAAA,0CACT,OAAA;AAAA,iBA0Da,kCAAA,CAAmC,IAAA,UAAc,OAAA"}
@@ -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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"}
@@ -0,0 +1,5 @@
1
+ import { CopilotRuntimeClient, CopilotRuntimeClientOptions } from "./CopilotRuntimeClient.cjs";
2
+ import { ActionExecutionMessage, AgentStateMessage, ImageMessage, LangGraphInterruptEvent, Message, MetaEvent, ResultMessage, Role, TextMessage, langGraphInterruptEvent } from "./types.cjs";
3
+ import { convertGqlOutputToMessages, convertMessagesToGqlInput, filterAdjacentAgentStateMessages, filterAgentStateMessages, loadMessagesFromJsonRepresentation } from "./conversion.cjs";
4
+ import { GraphQLError } from "graphql";
5
+ export { type GraphQLError };
@@ -0,0 +1,76 @@
1
+ import { ActionExecutionMessageInput, AgentStateMessageInput, BaseMessageOutput, CopilotKitLangGraphInterruptEvent as CopilotKitLangGraphInterruptEvent$1, ImageMessageInput, LangGraphInterruptEvent as LangGraphInterruptEvent$1, MessageRole, MessageStatus, ResultMessageInput, TextMessageInput } from "../graphql/@generated/graphql.cjs";
2
+
3
+ //#region src/client/types.d.ts
4
+ type MessageType = "TextMessage" | "ActionExecutionMessage" | "ResultMessage" | "AgentStateMessage" | "ImageMessage";
5
+ declare class Message {
6
+ type: MessageType;
7
+ id: BaseMessageOutput["id"];
8
+ createdAt: BaseMessageOutput["createdAt"];
9
+ status: MessageStatus;
10
+ constructor(props: any);
11
+ isTextMessage(): this is TextMessage;
12
+ isActionExecutionMessage(): this is ActionExecutionMessage;
13
+ isResultMessage(): this is ResultMessage;
14
+ isAgentStateMessage(): this is AgentStateMessage;
15
+ isImageMessage(): this is ImageMessage;
16
+ }
17
+ declare const Role: typeof MessageRole;
18
+ type MessageConstructorOptions = Partial<Message>;
19
+ type TextMessageConstructorOptions = MessageConstructorOptions & TextMessageInput;
20
+ declare class TextMessage extends Message implements TextMessageConstructorOptions {
21
+ content: TextMessageInput["content"];
22
+ parentMessageId: TextMessageInput["parentMessageId"];
23
+ role: TextMessageInput["role"];
24
+ type: "TextMessage";
25
+ constructor(props: TextMessageConstructorOptions);
26
+ }
27
+ type ActionExecutionMessageConstructorOptions = MessageConstructorOptions & Omit<ActionExecutionMessageInput, "arguments"> & {
28
+ arguments: Record<string, any>;
29
+ };
30
+ declare class ActionExecutionMessage extends Message implements Omit<ActionExecutionMessageInput, "arguments" | "scope"> {
31
+ name: ActionExecutionMessageInput["name"];
32
+ arguments: Record<string, any>;
33
+ parentMessageId: ActionExecutionMessageInput["parentMessageId"];
34
+ constructor(props: ActionExecutionMessageConstructorOptions);
35
+ }
36
+ type ResultMessageConstructorOptions = MessageConstructorOptions & ResultMessageInput;
37
+ declare class ResultMessage extends Message implements ResultMessageConstructorOptions {
38
+ actionExecutionId: ResultMessageInput["actionExecutionId"];
39
+ actionName: ResultMessageInput["actionName"];
40
+ result: ResultMessageInput["result"];
41
+ constructor(props: ResultMessageConstructorOptions);
42
+ static decodeResult(result: string): any;
43
+ static encodeResult(result: any): string;
44
+ }
45
+ declare class AgentStateMessage extends Message implements Omit<AgentStateMessageInput, "state"> {
46
+ agentName: AgentStateMessageInput["agentName"];
47
+ state: any;
48
+ running: AgentStateMessageInput["running"];
49
+ threadId: AgentStateMessageInput["threadId"];
50
+ role: AgentStateMessageInput["role"];
51
+ nodeName: AgentStateMessageInput["nodeName"];
52
+ runId: AgentStateMessageInput["runId"];
53
+ active: AgentStateMessageInput["active"];
54
+ constructor(props: any);
55
+ }
56
+ type ImageMessageConstructorOptions = MessageConstructorOptions & ImageMessageInput;
57
+ declare class ImageMessage extends Message implements ImageMessageConstructorOptions {
58
+ format: ImageMessageInput["format"];
59
+ bytes: ImageMessageInput["bytes"];
60
+ role: ImageMessageInput["role"];
61
+ parentMessageId: ImageMessageInput["parentMessageId"];
62
+ constructor(props: ImageMessageConstructorOptions);
63
+ }
64
+ declare function langGraphInterruptEvent(eventProps: Omit<LangGraphInterruptEvent, "name" | "type" | "__typename">): LangGraphInterruptEvent;
65
+ type LangGraphInterruptEvent<TValue extends any = any> = LangGraphInterruptEvent$1 & {
66
+ value: TValue;
67
+ };
68
+ type CopilotKitLangGraphInterruptEvent<TValue extends any = any> = CopilotKitLangGraphInterruptEvent$1 & {
69
+ data: CopilotKitLangGraphInterruptEvent$1["data"] & {
70
+ value: TValue;
71
+ };
72
+ };
73
+ type MetaEvent = LangGraphInterruptEvent | CopilotKitLangGraphInterruptEvent;
74
+ //#endregion
75
+ export { ActionExecutionMessage, AgentStateMessage, ImageMessage, LangGraphInterruptEvent, Message, MetaEvent, ResultMessage, Role, TextMessage, langGraphInterruptEvent };
76
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../src/client/types.ts"],"mappings":";;;KAiBK,WAAA;AAAA,cAOQ,OAAA;EACX,IAAA,EAAM,WAAA;EACN,EAAA,EAAI,iBAAA;EACJ,SAAA,EAAW,iBAAA;EACX,MAAA,EAAQ,aAAA;cAEI,KAAA;EAOZ,aAAA,CAAA,WAAyB,WAAA;EAIzB,wBAAA,CAAA,WAAoC,sBAAA;EAIpC,eAAA,CAAA,WAA2B,aAAA;EAI3B,mBAAA,CAAA,WAA+B,iBAAA;EAI/B,cAAA,CAAA,WAA0B,YAAA;AAAA;AAAA,cAMf,IAAA,SAAI,WAAA;AAAA,KAGZ,yBAAA,GAA4B,OAAA,CAAQ,OAAA;AAAA,KAEpC,6BAAA,GAAgC,yBAAA,GACnC,gBAAA;AAAA,cAEW,WAAA,SACH,OAAA,YACG,6BAAA;EAEX,OAAA,EAAS,gBAAA;EACT,eAAA,EAAiB,gBAAA;EACjB,IAAA,EAAM,gBAAA;EACN,IAAA;cAEY,KAAA,EAAO,6BAAA;AAAA;AAAA,KAMhB,wCAAA,GAA2C,yBAAA,GAC9C,IAAA,CAAK,2BAAA;EACH,SAAA,EAAW,MAAA;AAAA;AAAA,cAGF,sBAAA,SACH,OAAA,YACG,IAAA,CAAK,2BAAA;EAEhB,IAAA,EAAM,2BAAA;EACN,SAAA,EAAW,MAAA;EACX,eAAA,EAAiB,2BAAA;cACL,KAAA,EAAO,wCAAA;AAAA;AAAA,KAMhB,+BAAA,GAAkC,yBAAA,GACrC,kBAAA;AAAA,cAEW,aAAA,SACH,OAAA,YACG,+BAAA;EAEX,iBAAA,EAAmB,kBAAA;EACnB,UAAA,EAAY,kBAAA;EACZ,MAAA,EAAQ,kBAAA;cAEI,KAAA,EAAO,+BAAA;EAAA,OAKZ,YAAA,CAAa,MAAA;EAAA,OAIb,YAAA,CAAa,MAAA;AAAA;AAAA,cAWT,iBAAA,SACH,OAAA,YACG,IAAA,CAAK,sBAAA;EAEhB,SAAA,EAAW,sBAAA;EACX,KAAA;EACA,OAAA,EAAS,sBAAA;EACT,QAAA,EAAU,sBAAA;EACV,IAAA,EAAM,sBAAA;EACN,QAAA,EAAU,sBAAA;EACV,KAAA,EAAO,sBAAA;EACP,MAAA,EAAQ,sBAAA;cAEI,KAAA;AAAA;AAAA,KAMT,8BAAA,GAAiC,yBAAA,GACpC,iBAAA;AAAA,cAEW,YAAA,SACH,OAAA,YACG,8BAAA;EAEX,MAAA,EAAQ,iBAAA;EACR,KAAA,EAAO,iBAAA;EACP,IAAA,EAAM,iBAAA;EACN,eAAA,EAAiB,iBAAA;cAEL,KAAA,EAAO,8BAAA;AAAA;AAAA,iBAML,uBAAA,CACd,UAAA,EAAY,IAAA,CAAK,uBAAA,oCAChB,uBAAA;AAAA,KAQS,uBAAA,6BACV,yBAAA;EACE,KAAA,EAAO,MAAA;AAAA;AAAA,KAGN,iCAAA,6BACH,mCAAA;EACE,IAAA,EAAM,mCAAA;IAAiD,KAAA,EAAO,MAAA;EAAA;AAAA;AAAA,KAGtD,SAAA,GACR,uBAAA,GACA,iCAAA"}