@copilotkit/runtime 1.2.1 → 1.2.2-feat-runtime-remote-actions.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/__snapshots__/schema/schema.graphql +41 -0
  3. package/dist/{chunk-YMUS43FR.mjs → chunk-2N45GS3P.mjs} +2 -2
  4. package/dist/{chunk-URMISMK2.mjs → chunk-73NMP3DI.mjs} +2 -2
  5. package/dist/{chunk-736EEICU.mjs → chunk-BJ2LVHWA.mjs} +3 -3
  6. package/dist/{chunk-DMO6FA25.mjs → chunk-T6O5FSTK.mjs} +2 -2
  7. package/dist/{chunk-GEIBJJQ4.mjs → chunk-TBZGOJJX.mjs} +14 -2
  8. package/dist/chunk-TBZGOJJX.mjs.map +1 -0
  9. package/dist/{chunk-DYF5MUAH.mjs → chunk-X5QBBMCJ.mjs} +2 -2
  10. package/dist/{chunk-Q5ZTE7WH.mjs → chunk-XROLDARH.mjs} +786 -158
  11. package/dist/chunk-XROLDARH.mjs.map +1 -0
  12. package/dist/chunk-ZNZGATLW.mjs +260 -0
  13. package/dist/chunk-ZNZGATLW.mjs.map +1 -0
  14. package/dist/{shared-c5362338.d.ts → copilot-runtime-d427e991.d.ts} +65 -38
  15. package/dist/graphql/types/converted/index.d.ts +1 -1
  16. package/dist/graphql/types/converted/index.js +13 -0
  17. package/dist/graphql/types/converted/index.js.map +1 -1
  18. package/dist/graphql/types/converted/index.mjs +3 -1
  19. package/dist/{index-aa091e3c.d.ts → index-0476e4f7.d.ts} +24 -2
  20. package/dist/{index-13aa818e.d.ts → index-079752b9.d.ts} +1 -1
  21. package/dist/index.d.ts +7 -7
  22. package/dist/index.js +982 -245
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.mjs +8 -8
  25. package/dist/{langserve-a54438c6.d.ts → langserve-d6073a3b.d.ts} +24 -11
  26. package/dist/lib/index.d.ts +7 -7
  27. package/dist/lib/index.js +982 -245
  28. package/dist/lib/index.js.map +1 -1
  29. package/dist/lib/index.mjs +8 -8
  30. package/dist/lib/integrations/index.d.ts +6 -6
  31. package/dist/lib/integrations/index.js +437 -182
  32. package/dist/lib/integrations/index.js.map +1 -1
  33. package/dist/lib/integrations/index.mjs +6 -6
  34. package/dist/lib/integrations/nest/index.d.ts +5 -5
  35. package/dist/lib/integrations/nest/index.js +437 -182
  36. package/dist/lib/integrations/nest/index.js.map +1 -1
  37. package/dist/lib/integrations/nest/index.mjs +4 -4
  38. package/dist/lib/integrations/node-express/index.d.ts +5 -5
  39. package/dist/lib/integrations/node-express/index.js +437 -182
  40. package/dist/lib/integrations/node-express/index.js.map +1 -1
  41. package/dist/lib/integrations/node-express/index.mjs +4 -4
  42. package/dist/lib/integrations/node-http/index.d.ts +5 -5
  43. package/dist/lib/integrations/node-http/index.js +437 -182
  44. package/dist/lib/integrations/node-http/index.js.map +1 -1
  45. package/dist/lib/integrations/node-http/index.mjs +3 -3
  46. package/dist/service-adapters/index.d.ts +3 -3
  47. package/dist/service-adapters/index.js.map +1 -1
  48. package/dist/service-adapters/index.mjs +3 -3
  49. package/package.json +7 -5
  50. package/src/agents/langgraph/event-source.ts +222 -0
  51. package/src/agents/langgraph/events.ts +309 -0
  52. package/src/graphql/inputs/agent-session.input.ts +13 -0
  53. package/src/graphql/inputs/agent-state.input.ts +10 -0
  54. package/src/graphql/inputs/generate-copilot-response.input.ts +11 -0
  55. package/src/graphql/inputs/message.input.ts +30 -0
  56. package/src/graphql/resolvers/copilot.resolver.ts +56 -12
  57. package/src/graphql/types/converted/index.ts +15 -0
  58. package/src/graphql/types/copilot-response.type.ts +29 -0
  59. package/src/graphql/types/enums.ts +1 -0
  60. package/src/lib/index.ts +1 -1
  61. package/src/lib/integrations/shared.ts +1 -1
  62. package/src/lib/runtime/copilot-runtime.ts +360 -0
  63. package/src/lib/runtime/remote-actions.ts +241 -0
  64. package/src/service-adapters/conversion.ts +16 -0
  65. package/src/service-adapters/events.ts +101 -19
  66. package/dist/chunk-GEIBJJQ4.mjs.map +0 -1
  67. package/dist/chunk-PB24CCIJ.mjs +0 -158
  68. package/dist/chunk-PB24CCIJ.mjs.map +0 -1
  69. package/dist/chunk-Q5ZTE7WH.mjs.map +0 -1
  70. package/src/lib/copilot-runtime.ts +0 -231
  71. /package/dist/{chunk-YMUS43FR.mjs.map → chunk-2N45GS3P.mjs.map} +0 -0
  72. /package/dist/{chunk-URMISMK2.mjs.map → chunk-73NMP3DI.mjs.map} +0 -0
  73. /package/dist/{chunk-736EEICU.mjs.map → chunk-BJ2LVHWA.mjs.map} +0 -0
  74. /package/dist/{chunk-DMO6FA25.mjs.map → chunk-T6O5FSTK.mjs.map} +0 -0
  75. /package/dist/{chunk-DYF5MUAH.mjs.map → chunk-X5QBBMCJ.mjs.map} +0 -0
@@ -0,0 +1,222 @@
1
+ import { ReplaySubject, scan, mergeMap } from "rxjs";
2
+ import { LangGraphEvent, LangGraphEventTypes } from "./events";
3
+ import { RuntimeEvent, RuntimeEventTypes } from "../../service-adapters/events";
4
+
5
+ interface LangGraphEventWithState {
6
+ event: LangGraphEvent | null;
7
+ toolCallName: string | null;
8
+ toolCallId: string | null;
9
+ prevToolCallId: string | null;
10
+ messageId: string | null;
11
+ prevMessageId: string | null;
12
+ }
13
+
14
+ export class RemoteLangGraphEventSource {
15
+ private eventStream$ = new ReplaySubject<LangGraphEvent>();
16
+
17
+ async streamResponse(response: Response) {
18
+ const reader = response.body!.getReader();
19
+ const decoder = new TextDecoder();
20
+ let buffer = [];
21
+ const eventStream$ = this.eventStream$;
22
+
23
+ function flushBuffer() {
24
+ const currentBuffer = buffer.join("");
25
+ if (currentBuffer.trim().length === 0) {
26
+ return;
27
+ }
28
+ const parts = currentBuffer.split("\n");
29
+ if (parts.length === 0) {
30
+ return;
31
+ }
32
+
33
+ const lastPartIsComplete = currentBuffer.endsWith("\n");
34
+
35
+ // truncate buffer
36
+ buffer = [];
37
+
38
+ if (!lastPartIsComplete) {
39
+ // put back the last part
40
+ buffer.push(parts.pop());
41
+ }
42
+
43
+ parts
44
+ .map((part) => part.trim())
45
+ .filter((part) => part != "")
46
+ .forEach((part) => {
47
+ eventStream$.next(JSON.parse(part));
48
+ });
49
+ }
50
+
51
+ while (true) {
52
+ const { done, value } = await reader.read();
53
+
54
+ if (!done) {
55
+ buffer.push(decoder.decode(value, { stream: true }));
56
+ }
57
+
58
+ flushBuffer();
59
+
60
+ if (done) {
61
+ break;
62
+ }
63
+ }
64
+ eventStream$.complete();
65
+ }
66
+
67
+ processLangGraphEvents() {
68
+ return this.eventStream$.pipe(
69
+ scan(
70
+ (acc, event) => {
71
+ if (event.event === LangGraphEventTypes.OnChatModelStream) {
72
+ if (event.data?.chunk?.kwargs?.tool_call_chunks) {
73
+ acc.prevToolCallId = acc.toolCallId;
74
+ acc.toolCallId = event.data.chunk.kwargs?.id;
75
+ if (event.data.chunk.kwargs.tool_call_chunks[0]?.name) {
76
+ acc.toolCallName = event.data.chunk.kwargs.tool_call_chunks[0].name;
77
+ }
78
+ }
79
+ acc.prevMessageId = acc.messageId;
80
+ acc.messageId = event.data?.chunk?.kwargs?.id;
81
+ } else {
82
+ acc.prevToolCallId = acc.toolCallId;
83
+ acc.toolCallId = null;
84
+ acc.prevMessageId = acc.messageId;
85
+ acc.messageId = null;
86
+ acc.toolCallName = null;
87
+ }
88
+
89
+ acc.event = event;
90
+ return acc;
91
+ },
92
+ {
93
+ event: null,
94
+ toolCallId: null,
95
+ prevToolCallId: null,
96
+ messageId: null,
97
+ toolCallName: null,
98
+ prevMessageId: null,
99
+ } as LangGraphEventWithState,
100
+ ),
101
+ mergeMap((eventWithState): RuntimeEvent[] => {
102
+ const events: RuntimeEvent[] = [];
103
+
104
+ let shouldEmitMessages = false;
105
+ let shouldEmitToolCalls = false;
106
+
107
+ if (eventWithState.event.event == LangGraphEventTypes.OnChatModelStream) {
108
+ if (eventWithState.event.tags?.includes("copilotkit:emit-tool-calls")) {
109
+ shouldEmitToolCalls = true;
110
+ }
111
+ if (eventWithState.event.tags?.includes("copilotkit:emit-messages")) {
112
+ shouldEmitMessages = true;
113
+ }
114
+ }
115
+
116
+ // Tool call ended: emit ActionExecutionEnd
117
+ if (
118
+ eventWithState.prevToolCallId !== null &&
119
+ eventWithState.prevToolCallId !== eventWithState.toolCallId &&
120
+ shouldEmitToolCalls
121
+ ) {
122
+ events.push({
123
+ type: RuntimeEventTypes.ActionExecutionEnd,
124
+ });
125
+ }
126
+
127
+ // Message ended: emit TextMessageEnd
128
+ if (
129
+ eventWithState.prevMessageId !== null &&
130
+ eventWithState.prevMessageId !== eventWithState.messageId &&
131
+ shouldEmitMessages
132
+ ) {
133
+ events.push({
134
+ type: RuntimeEventTypes.TextMessageEnd,
135
+ });
136
+ }
137
+
138
+ switch (eventWithState.event!.event) {
139
+ case LangGraphEventTypes.OnCopilotKitStateSync:
140
+ events.push({
141
+ type: RuntimeEventTypes.AgentStateMessage,
142
+ threadId: eventWithState.event.thread_id,
143
+ role: eventWithState.event.role,
144
+ agentName: eventWithState.event.agent_name,
145
+ nodeName: eventWithState.event.node_name,
146
+ runId: eventWithState.event.run_id,
147
+ active: eventWithState.event.active,
148
+ state: JSON.stringify(eventWithState.event.state),
149
+ running: eventWithState.event.running,
150
+ });
151
+ break;
152
+ case LangGraphEventTypes.OnToolEnd:
153
+ // TODO-AGENTS: emit ActionExecutionResult when needed
154
+ // Need a special tool node for that?
155
+
156
+ // const result = eventWithState.event.data?.output?.kwargs?.content?.[0];
157
+ // const toolCallId = eventWithState.event.data?.output?.kwargs?.tool_call_id;
158
+ // const toolCallName = eventWithState.event.data?.output?.kwargs?.name;
159
+ // if (result && toolCallId && toolCallName) {
160
+ // events.push({
161
+ // type: RuntimeEventTypes.ActionExecutionResult,
162
+ // actionExecutionId: toolCallId,
163
+ // actionName: toolCallName,
164
+ // result,
165
+ // });
166
+ // }
167
+ break;
168
+ case LangGraphEventTypes.OnChatModelStream:
169
+ if (
170
+ eventWithState.toolCallId !== null &&
171
+ eventWithState.prevToolCallId !== eventWithState.toolCallId
172
+ ) {
173
+ if (shouldEmitToolCalls) {
174
+ events.push({
175
+ type: RuntimeEventTypes.ActionExecutionStart,
176
+ actionExecutionId: eventWithState.toolCallId,
177
+ actionName: eventWithState.toolCallName,
178
+ scope: "client",
179
+ });
180
+ }
181
+ }
182
+ // Message started: emit TextMessageStart
183
+ else if (
184
+ eventWithState.messageId !== null &&
185
+ eventWithState.prevMessageId !== eventWithState.messageId
186
+ ) {
187
+ if (shouldEmitMessages) {
188
+ events.push({
189
+ type: RuntimeEventTypes.TextMessageStart,
190
+ messageId: eventWithState.messageId,
191
+ });
192
+ }
193
+ }
194
+
195
+ const args = eventWithState.event.data?.chunk?.kwargs?.tool_call_chunks?.[0]?.args;
196
+ const content = eventWithState.event.data?.chunk?.kwargs?.content;
197
+
198
+ // Tool call args: emit ActionExecutionArgs
199
+ if (args) {
200
+ if (shouldEmitToolCalls) {
201
+ events.push({
202
+ type: RuntimeEventTypes.ActionExecutionArgs,
203
+ args,
204
+ });
205
+ }
206
+ }
207
+ // Message content: emit TextMessageContent
208
+ else if (eventWithState.messageId !== null && content) {
209
+ if (shouldEmitMessages) {
210
+ events.push({
211
+ type: RuntimeEventTypes.TextMessageContent,
212
+ content,
213
+ });
214
+ }
215
+ }
216
+ break;
217
+ }
218
+ return events;
219
+ }),
220
+ );
221
+ }
222
+ }
@@ -0,0 +1,309 @@
1
+ export enum LangGraphEventTypes {
2
+ OnChainStart = "on_chain_start",
3
+ OnChainStream = "on_chain_stream",
4
+ OnChainEnd = "on_chain_end",
5
+ OnChatModelStart = "on_chat_model_start",
6
+ OnChatModelStream = "on_chat_model_stream",
7
+ OnChatModelEnd = "on_chat_model_end",
8
+ OnToolStart = "on_tool_start",
9
+ OnToolEnd = "on_tool_end",
10
+ OnCopilotKitStateSync = "on_copilotkit_state_sync",
11
+ }
12
+
13
+ type LangGraphOnCopilotKitStateSyncEvent = {
14
+ event: LangGraphEventTypes.OnCopilotKitStateSync;
15
+ thread_id: string;
16
+ agent_name: string;
17
+ node_name: string;
18
+ run_id: string;
19
+ active: boolean;
20
+ role: string;
21
+ state: any;
22
+ running: boolean;
23
+ };
24
+
25
+ type LangGraphOnChainStartEvent = {
26
+ event: LangGraphEventTypes.OnChainStart;
27
+ run_id: string;
28
+ name: string;
29
+ tags: string[];
30
+ metadata: { thread_id: string };
31
+ data: {
32
+ input: any;
33
+ };
34
+ parent_ids: string[];
35
+ };
36
+
37
+ type LangGraphOnChainEndEvent = {
38
+ event: LangGraphEventTypes.OnChainEnd;
39
+ name: string;
40
+ run_id: string;
41
+ tags: string[];
42
+ metadata: {
43
+ thread_id: string;
44
+ langgraph_step: number;
45
+ langgraph_node: string;
46
+ langgraph_triggers: string[];
47
+ langgraph_task_idx: number;
48
+ thread_ts: string;
49
+ };
50
+ data: {
51
+ input: any;
52
+ output: any;
53
+ };
54
+ parent_ids: string[];
55
+ };
56
+
57
+ type LangGraphOnChatModelStartEvent = {
58
+ event: LangGraphEventTypes.OnChatModelStart;
59
+ name: string;
60
+ run_id: string;
61
+ tags: string[];
62
+ metadata: {
63
+ thread_id: string;
64
+ langgraph_step: number;
65
+ langgraph_node: string;
66
+ langgraph_triggers: string[];
67
+ langgraph_task_idx: number;
68
+ thread_ts: string;
69
+ ls_provider: string;
70
+ ls_model_name: string;
71
+ ls_model_type: string;
72
+ ls_temperature: number;
73
+ };
74
+ data: {
75
+ input: {
76
+ messages: {
77
+ lc: number;
78
+ type: string;
79
+ id: string[];
80
+ kwargs: {
81
+ content: string;
82
+ type: string;
83
+ id: string;
84
+ };
85
+ }[][];
86
+ };
87
+ };
88
+ parent_ids: string[];
89
+ };
90
+
91
+ type LangGraphOnChatModelStreamEvent = {
92
+ event: LangGraphEventTypes.OnChatModelStream;
93
+ name: string;
94
+ run_id: string;
95
+ tags: string[];
96
+ metadata: {
97
+ thread_id: string;
98
+ langgraph_step: number;
99
+ langgraph_node: string;
100
+ langgraph_triggers: string[];
101
+ langgraph_task_idx: number;
102
+ thread_ts: string;
103
+ ls_provider: string;
104
+ ls_model_name: string;
105
+ ls_model_type: string;
106
+ ls_temperature: number;
107
+ };
108
+ data: {
109
+ chunk: {
110
+ lc: number;
111
+ type: string;
112
+ id: string[];
113
+ kwargs: {
114
+ content: string;
115
+ additional_kwargs: {
116
+ tool_calls: {
117
+ index: number;
118
+ id: string;
119
+ function: { arguments: string; name: string };
120
+ type: string;
121
+ }[];
122
+ };
123
+ type: string;
124
+ id: string;
125
+ tool_calls: { name: string; args: {}; id: string; type: string }[];
126
+ tool_call_chunks: {
127
+ name: string;
128
+ args: string;
129
+ id: string;
130
+ index: number;
131
+ type: string;
132
+ }[];
133
+ invalid_tool_calls: any[];
134
+ };
135
+ };
136
+ };
137
+ parent_ids: string[];
138
+ };
139
+
140
+ type LangGraphOnChatModelEndEvent = {
141
+ event: LangGraphEventTypes.OnChatModelEnd;
142
+ name: string;
143
+ run_id: string;
144
+ tags: string[];
145
+ metadata: {
146
+ thread_id: string;
147
+ langgraph_step: number;
148
+ langgraph_node: string;
149
+ langgraph_triggers: string[];
150
+ langgraph_task_idx: number;
151
+ thread_ts: string;
152
+ ls_provider: string;
153
+ ls_model_name: string;
154
+ ls_model_type: string;
155
+ ls_temperature: number;
156
+ };
157
+ data: {
158
+ input: any;
159
+ output: {
160
+ generations: {
161
+ text: string;
162
+ generation_info: {
163
+ finish_reason: string;
164
+ model_name: string;
165
+ system_fingerprint: string;
166
+ };
167
+ type: string;
168
+ message: {
169
+ lc: number;
170
+ type: string;
171
+ id: string[];
172
+ kwargs: {
173
+ content: string;
174
+ additional_kwargs: {
175
+ tool_calls: {
176
+ index: number;
177
+ id: string;
178
+ function: { arguments: string; name: string };
179
+ type: string;
180
+ }[];
181
+ };
182
+ response_metadata: {
183
+ finish_reason: string;
184
+ model_name: string;
185
+ system_fingerprint: string;
186
+ };
187
+ type: string;
188
+ id: string;
189
+ tool_calls: { name: string; args: { query: string }; id: string; type: string }[];
190
+ invalid_tool_calls: any[];
191
+ };
192
+ };
193
+ }[][];
194
+ llm_output: any;
195
+ run: any;
196
+ };
197
+ };
198
+ parent_ids: string[];
199
+ };
200
+
201
+ type LangGraphOnChainStreamEvent = {
202
+ event: LangGraphEventTypes.OnChainStream;
203
+ name: string;
204
+ run_id: string;
205
+ tags: string[];
206
+ metadata: {
207
+ thread_id: string;
208
+ langgraph_step?: number;
209
+ langgraph_node?: string;
210
+ langgraph_triggers?: string[];
211
+ langgraph_task_idx?: number;
212
+ thread_ts?: string;
213
+ };
214
+ data: {
215
+ chunk: {
216
+ messages: {
217
+ lc: number;
218
+ type: string;
219
+ id: string[];
220
+ kwargs: {
221
+ content: string;
222
+ additional_kwargs?: {
223
+ tool_calls?: {
224
+ index: number;
225
+ id: string;
226
+ function: { arguments: string; name: string };
227
+ type: string;
228
+ }[];
229
+ };
230
+ response_metadata?: {
231
+ finish_reason: string;
232
+ model_name: string;
233
+ system_fingerprint: string;
234
+ };
235
+ type: string;
236
+ id: string;
237
+ tool_calls?: { name: string; args: { query: string }; id: string; type: string }[];
238
+ invalid_tool_calls?: any[];
239
+ };
240
+ }[];
241
+ };
242
+ };
243
+ parent_ids: string[];
244
+ };
245
+
246
+ type LangGraphOnToolStartEvent = {
247
+ event: LangGraphEventTypes.OnToolStart;
248
+ name: string;
249
+ run_id: string;
250
+ tags: string[];
251
+ metadata: {
252
+ thread_id: string;
253
+ langgraph_step: number;
254
+ langgraph_node: string;
255
+ langgraph_triggers: string[];
256
+ langgraph_task_idx: number;
257
+ thread_ts: string;
258
+ };
259
+ data: {
260
+ input: {
261
+ query: string;
262
+ };
263
+ };
264
+ parent_ids: string[];
265
+ };
266
+
267
+ type LangGraphOnToolEndEvent = {
268
+ event: LangGraphEventTypes.OnToolEnd;
269
+ name: string;
270
+ run_id: string;
271
+ tags: string[];
272
+ metadata: {
273
+ thread_id: string;
274
+ langgraph_step: number;
275
+ langgraph_node: string;
276
+ langgraph_triggers: string[];
277
+ langgraph_task_idx: number;
278
+ thread_ts: string;
279
+ };
280
+ data: {
281
+ input: {
282
+ query: string;
283
+ };
284
+ output: {
285
+ lc: number;
286
+ type: string;
287
+ id: string[];
288
+ kwargs: {
289
+ content: string[];
290
+ type: string;
291
+ name: string;
292
+ tool_call_id: string;
293
+ status: string;
294
+ };
295
+ };
296
+ };
297
+ parent_ids: string[];
298
+ };
299
+
300
+ export type LangGraphEvent =
301
+ | LangGraphOnChainStartEvent
302
+ | LangGraphOnChainStreamEvent
303
+ | LangGraphOnChainEndEvent
304
+ | LangGraphOnChatModelStartEvent
305
+ | LangGraphOnChatModelStreamEvent
306
+ | LangGraphOnChatModelEndEvent
307
+ | LangGraphOnToolStartEvent
308
+ | LangGraphOnToolEndEvent
309
+ | LangGraphOnCopilotKitStateSyncEvent;
@@ -0,0 +1,13 @@
1
+ import { Field, InputType } from "type-graphql";
2
+
3
+ @InputType()
4
+ export class AgentSessionInput {
5
+ @Field(() => String)
6
+ agentName: string;
7
+
8
+ @Field(() => String, { nullable: true })
9
+ threadId?: string;
10
+
11
+ @Field(() => String, { nullable: true })
12
+ nodeName?: string;
13
+ }
@@ -0,0 +1,10 @@
1
+ import { Field, InputType } from "type-graphql";
2
+
3
+ @InputType()
4
+ export class AgentStateInput {
5
+ @Field(() => String)
6
+ agentName: string;
7
+
8
+ @Field(() => String)
9
+ state: string;
10
+ }
@@ -4,6 +4,8 @@ import { FrontendInput } from "./frontend.input";
4
4
  import { CloudInput } from "./cloud.input";
5
5
  import { CopilotRequestType } from "../types/enums";
6
6
  import { ForwardedParametersInput } from "./forwarded-parameters.input";
7
+ import { AgentSessionInput } from "./agent-session.input";
8
+ import { AgentStateInput } from "./agent-state.input";
7
9
 
8
10
  @InputType()
9
11
  export class GenerateCopilotResponseMetadataInput {
@@ -33,4 +35,13 @@ export class GenerateCopilotResponseInput {
33
35
 
34
36
  @Field(() => ForwardedParametersInput, { nullable: true })
35
37
  forwardedParameters?: ForwardedParametersInput;
38
+
39
+ @Field(() => AgentSessionInput, { nullable: true })
40
+ agentSession?: AgentSessionInput;
41
+
42
+ @Field(() => AgentStateInput, { nullable: true })
43
+ agentState?: AgentStateInput;
44
+
45
+ @Field(() => [AgentStateInput], { nullable: true })
46
+ agentStates?: AgentStateInput[];
36
47
  }
@@ -14,6 +14,9 @@ export class MessageInput extends BaseMessage {
14
14
 
15
15
  @Field(() => ResultMessageInput, { nullable: true })
16
16
  resultMessage?: ResultMessageInput;
17
+
18
+ @Field(() => AgentStateMessageInput, { nullable: true })
19
+ agentStateMessage?: AgentStateMessageInput;
17
20
  }
18
21
 
19
22
  @InputType()
@@ -48,3 +51,30 @@ export class ResultMessageInput {
48
51
  @Field(() => String)
49
52
  result: string;
50
53
  }
54
+
55
+ @InputType()
56
+ export class AgentStateMessageInput {
57
+ @Field(() => String)
58
+ threadId: string;
59
+
60
+ @Field(() => String)
61
+ agentName: string;
62
+
63
+ @Field(() => MessageRole)
64
+ role: MessageRole;
65
+
66
+ @Field(() => String)
67
+ state: string;
68
+
69
+ @Field(() => Boolean)
70
+ running: boolean;
71
+
72
+ @Field(() => String)
73
+ nodeName: string;
74
+
75
+ @Field(() => String)
76
+ runId: string;
77
+
78
+ @Field(() => Boolean)
79
+ active: boolean;
80
+ }