@copilotkit/runtime 1.4.6 → 1.4.8-coagents-v0-3.1

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 (73) hide show
  1. package/CHANGELOG.md +69 -5
  2. package/__snapshots__/schema/schema.graphql +7 -9
  3. package/dist/{chunk-OKQVDDJ2.mjs → chunk-2PK2SFRB.mjs} +220 -57
  4. package/dist/chunk-2PK2SFRB.mjs.map +1 -0
  5. package/dist/{chunk-37LZS4PV.mjs → chunk-BACNNHHI.mjs} +2 -2
  6. package/dist/{chunk-55FONM7Y.mjs → chunk-FVYNRYIB.mjs} +420 -296
  7. package/dist/chunk-FVYNRYIB.mjs.map +1 -0
  8. package/dist/{chunk-6KZNQI7Z.mjs → chunk-MQJNZYAH.mjs} +2 -2
  9. package/dist/{chunk-B74M7FXG.mjs → chunk-RFF5IIZJ.mjs} +3 -2
  10. package/dist/chunk-RFF5IIZJ.mjs.map +1 -0
  11. package/dist/{chunk-XA3KCJ6P.mjs → chunk-YFG3Q3YH.mjs} +2 -2
  12. package/dist/{copilot-runtime-12e7ac40.d.ts → copilot-runtime-b15b683d.d.ts} +2 -2
  13. package/dist/graphql/types/converted/index.d.ts +1 -1
  14. package/dist/graphql/types/converted/index.js +2 -1
  15. package/dist/graphql/types/converted/index.js.map +1 -1
  16. package/dist/graphql/types/converted/index.mjs +1 -1
  17. package/dist/{groq-adapter-24abe931.d.ts → groq-adapter-50aa9621.d.ts} +1 -1
  18. package/dist/{index-10b1c870.d.ts → index-ff3fbc33.d.ts} +7 -8
  19. package/dist/index.d.ts +4 -4
  20. package/dist/index.js +725 -437
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.mjs +6 -6
  23. package/dist/{langserve-f021ab9c.d.ts → langserve-8ec29cba.d.ts} +51 -12
  24. package/dist/lib/index.d.ts +4 -4
  25. package/dist/lib/index.js +703 -431
  26. package/dist/lib/index.js.map +1 -1
  27. package/dist/lib/index.mjs +6 -6
  28. package/dist/lib/integrations/index.d.ts +4 -4
  29. package/dist/lib/integrations/index.js +71 -30
  30. package/dist/lib/integrations/index.js.map +1 -1
  31. package/dist/lib/integrations/index.mjs +6 -6
  32. package/dist/lib/integrations/nest/index.d.ts +3 -3
  33. package/dist/lib/integrations/nest/index.js +71 -30
  34. package/dist/lib/integrations/nest/index.js.map +1 -1
  35. package/dist/lib/integrations/nest/index.mjs +4 -4
  36. package/dist/lib/integrations/node-express/index.d.ts +3 -3
  37. package/dist/lib/integrations/node-express/index.js +71 -30
  38. package/dist/lib/integrations/node-express/index.js.map +1 -1
  39. package/dist/lib/integrations/node-express/index.mjs +4 -4
  40. package/dist/lib/integrations/node-http/index.d.ts +3 -3
  41. package/dist/lib/integrations/node-http/index.js +71 -30
  42. package/dist/lib/integrations/node-http/index.js.map +1 -1
  43. package/dist/lib/integrations/node-http/index.mjs +3 -3
  44. package/dist/service-adapters/index.d.ts +4 -4
  45. package/dist/service-adapters/index.js +219 -56
  46. package/dist/service-adapters/index.js.map +1 -1
  47. package/dist/service-adapters/index.mjs +1 -1
  48. package/package.json +2 -2
  49. package/src/agents/langgraph/event-source.ts +140 -148
  50. package/src/agents/langgraph/events.ts +1 -1
  51. package/src/graphql/inputs/message.input.ts +15 -3
  52. package/src/graphql/resolvers/copilot.resolver.ts +32 -6
  53. package/src/graphql/types/converted/index.ts +4 -3
  54. package/src/graphql/types/copilot-response.type.ts +12 -3
  55. package/src/graphql/types/enums.ts +0 -11
  56. package/src/lib/runtime/remote-action-constructors.ts +4 -2
  57. package/src/lib/runtime/remote-actions.ts +1 -0
  58. package/src/lib/runtime/remote-lg-action.ts +161 -140
  59. package/src/service-adapters/anthropic/anthropic-adapter.ts +16 -6
  60. package/src/service-adapters/conversion.ts +2 -1
  61. package/src/service-adapters/events.ts +111 -52
  62. package/src/service-adapters/experimental/ollama/ollama-adapter.ts +7 -3
  63. package/src/service-adapters/groq/groq-adapter.ts +23 -8
  64. package/src/service-adapters/langchain/utils.ts +49 -31
  65. package/src/service-adapters/openai/openai-adapter.ts +22 -9
  66. package/src/service-adapters/openai/openai-assistant-adapter.ts +22 -8
  67. package/src/service-adapters/unify/unify-adapter.ts +28 -11
  68. package/dist/chunk-55FONM7Y.mjs.map +0 -1
  69. package/dist/chunk-B74M7FXG.mjs.map +0 -1
  70. package/dist/chunk-OKQVDDJ2.mjs.map +0 -1
  71. /package/dist/{chunk-37LZS4PV.mjs.map → chunk-BACNNHHI.mjs.map} +0 -0
  72. /package/dist/{chunk-6KZNQI7Z.mjs.map → chunk-MQJNZYAH.mjs.map} +0 -0
  73. /package/dist/{chunk-XA3KCJ6P.mjs.map → chunk-YFG3Q3YH.mjs.map} +0 -0
@@ -40,6 +40,7 @@ export function constructLGCRemoteAction({
40
40
  actionInputsWithoutAgents,
41
41
  threadId,
42
42
  nodeName,
43
+ additionalMessages = [],
43
44
  }: LangGraphAgentHandlerParams): Promise<Observable<RuntimeEvent>> => {
44
45
  logger.debug({ actionName: agent.name }, "Executing LangGraph Platform agent");
45
46
 
@@ -66,7 +67,7 @@ export function constructLGCRemoteAction({
66
67
  agent,
67
68
  threadId,
68
69
  nodeName,
69
- messages,
70
+ messages: [...messages, ...additionalMessages],
70
71
  state,
71
72
  properties: graphqlContext.properties,
72
73
  actions: actionInputsWithoutAgents.map((action) => ({
@@ -168,6 +169,7 @@ export function constructRemoteActions({
168
169
  actionInputsWithoutAgents,
169
170
  threadId,
170
171
  nodeName,
172
+ additionalMessages = [],
171
173
  }: LangGraphAgentHandlerParams): Promise<Observable<RuntimeEvent>> => {
172
174
  logger.debug({ actionName: agent.name }, "Executing remote agent");
173
175
 
@@ -193,7 +195,7 @@ export function constructRemoteActions({
193
195
  name,
194
196
  threadId,
195
197
  nodeName,
196
- messages,
198
+ messages: [...messages, ...additionalMessages],
197
199
  state,
198
200
  properties: graphqlContext.properties,
199
201
  actions: actionInputsWithoutAgents.map((action) => ({
@@ -53,6 +53,7 @@ export type LangGraphAgentHandlerParams = {
53
53
  actionInputsWithoutAgents: ActionInput[];
54
54
  threadId?: string;
55
55
  nodeName?: string;
56
+ additionalMessages?: Message[];
56
57
  };
57
58
 
58
59
  export type LangGraphAgentAction = Action<any> & {
@@ -5,7 +5,7 @@ import { Logger } from "pino";
5
5
  import { ActionInput } from "../../graphql/inputs/action.input";
6
6
  import { LangGraphPlatformAgent, LangGraphPlatformEndpoint } from "./remote-actions";
7
7
  import { CopilotRequestContextProperties } from "../integrations";
8
- import { Message, MessageType } from "../../graphql/types/converted";
8
+ import { ActionExecutionMessage, Message, MessageType } from "../../graphql/types/converted";
9
9
  import { MessageRole } from "../../graphql/types/enums";
10
10
  import { CustomEventNames, LangGraphEventTypes } from "../../agents/langgraph/events";
11
11
  import telemetry from "../telemetry-client";
@@ -112,7 +112,7 @@ async function streamEvents(controller: ReadableStreamDefaultController, args: E
112
112
  const mode = wasInitiatedWithExistingThread && nodeName != "__end__" ? "continue" : "start";
113
113
  let formattedMessages = [];
114
114
  try {
115
- formattedMessages = formatMessages(messages);
115
+ formattedMessages = copilotkitMessagesToLangChain(messages);
116
116
  } catch (e) {
117
117
  logger.error(e, `Error event thrown: ${e.message}`);
118
118
  }
@@ -319,6 +319,7 @@ async function streamEvents(controller: ReadableStreamDefaultController, args: E
319
319
  state: state.values,
320
320
  running: !shouldExit,
321
321
  active: false,
322
+ includeMessages: true,
322
323
  }),
323
324
  );
324
325
 
@@ -341,6 +342,7 @@ function getStateSyncEvent({
341
342
  state,
342
343
  running,
343
344
  active,
345
+ includeMessages = false,
344
346
  }: {
345
347
  threadId: string;
346
348
  runId: string;
@@ -349,13 +351,21 @@ function getStateSyncEvent({
349
351
  state: State;
350
352
  running: boolean;
351
353
  active: boolean;
354
+ includeMessages?: boolean;
352
355
  }): string {
353
- const stateWithoutMessages = Object.keys(state).reduce((acc, key) => {
354
- if (key !== "messages") {
355
- acc[key] = state[key];
356
- }
357
- return acc;
358
- }, {} as State);
356
+ if (!includeMessages) {
357
+ state = Object.keys(state).reduce((acc, key) => {
358
+ if (key !== "messages") {
359
+ acc[key] = state[key];
360
+ }
361
+ return acc;
362
+ }, {} as State);
363
+ } else {
364
+ state = {
365
+ ...state,
366
+ messages: langchainMessagesToCopilotKit(state.messages || []),
367
+ };
368
+ }
359
369
 
360
370
  return (
361
371
  JSON.stringify({
@@ -365,7 +375,7 @@ function getStateSyncEvent({
365
375
  agent_name: agentName,
366
376
  node_name: nodeName,
367
377
  active: active,
368
- state: stateWithoutMessages,
378
+ state: state,
369
379
  running: running,
370
380
  role: "assistant",
371
381
  }) + "\n"
@@ -460,179 +470,190 @@ function langGraphDefaultMergeState(
460
470
  }
461
471
 
462
472
  // merge with existing messages
463
- const mergedMessages: LangGraphPlatformMessage[] = state.messages || [];
464
- const existingMessageIds = new Set(mergedMessages.map((message) => message.id));
465
- const existingToolCallResults = new Set<string>();
473
+ const existingMessages: LangGraphPlatformMessage[] = state.messages || [];
474
+ const existingMessageIds = new Set(existingMessages.map((message) => message.id));
475
+ const newMessages = messages.filter((message) => !existingMessageIds.has(message.id));
476
+
477
+ return {
478
+ ...state,
479
+ messages: newMessages,
480
+ copilotkit: {
481
+ actions,
482
+ },
483
+ };
484
+ }
466
485
 
467
- for (const message of mergedMessages) {
468
- if ("tool_call_id" in message) {
469
- existingToolCallResults.add(message.tool_call_id);
486
+ function langchainMessagesToCopilotKit(messages: any[]): any[] {
487
+ const result: any[] = [];
488
+ const tool_call_names: Record<string, string> = {};
489
+
490
+ // First pass: gather all tool call names from AI messages
491
+ for (const message of messages) {
492
+ if (message.type === "ai") {
493
+ for (const tool_call of message.tool_calls) {
494
+ tool_call_names[tool_call.id] = tool_call.name;
495
+ }
470
496
  }
471
497
  }
472
498
 
473
499
  for (const message of messages) {
474
- // filter tool calls to activate the agent itself
475
- if (
476
- "tool_calls" in message &&
477
- message.tool_calls.length > 0 &&
478
- message.tool_calls[0].name === agentName
479
- ) {
480
- continue;
500
+ let content: any = message.content;
501
+ if (content instanceof Array) {
502
+ content = content[0];
481
503
  }
482
-
483
- // filter results from activating the agent
484
- if ("name" in message && message.name === agentName) {
485
- continue;
504
+ if (content instanceof Object) {
505
+ content = content.text;
486
506
  }
487
507
 
488
- if (!existingMessageIds.has(message.id)) {
489
- // skip duplicate tool call results
490
- if ("tool_call_id" in message && existingToolCallResults.has(message.tool_call_id)) {
491
- console.warn("Warning: Duplicate tool call result, skipping:", message.tool_call_id);
492
- continue;
493
- }
494
-
495
- mergedMessages.push(message);
496
- } else {
497
- // Replace the message with the existing one
498
- for (let i = 0; i < mergedMessages.length; i++) {
499
- if (mergedMessages[i].id === message.id && message.role === "assistant") {
500
- if (
501
- ("tool_calls" in mergedMessages[i] || "additional_kwargs" in mergedMessages[i]) &&
502
- mergedMessages[i].content
503
- ) {
504
- // @ts-expect-error -- message did not have a tool call, now it will
505
- message.tool_calls = mergedMessages[i]["tool_calls"];
506
- message.additional_kwargs = mergedMessages[i].additional_kwargs;
507
- }
508
- mergedMessages[i] = message;
508
+ if (message.type === "human") {
509
+ result.push({
510
+ role: "user",
511
+ content: content,
512
+ id: message.id,
513
+ });
514
+ } else if (message.type === "system") {
515
+ result.push({
516
+ role: "system",
517
+ content: content,
518
+ id: message.id,
519
+ });
520
+ } else if (message.type === "ai") {
521
+ if (message.tool_calls && message.tool_calls.length > 0) {
522
+ for (const tool_call of message.tool_calls) {
523
+ result.push({
524
+ id: tool_call.id,
525
+ name: tool_call.name,
526
+ arguments: tool_call.args,
527
+ parentMessageId: message.id,
528
+ });
509
529
  }
530
+ } else {
531
+ result.push({
532
+ role: "assistant",
533
+ content: content,
534
+ id: message.id,
535
+ parentMessageId: message.id,
536
+ });
510
537
  }
538
+ } else if (message.type === "tool") {
539
+ const actionName = tool_call_names[message.tool_call_id] || message.name || "";
540
+ result.push({
541
+ actionExecutionId: message.tool_call_id,
542
+ actionName: actionName,
543
+ result: content,
544
+ id: message.id,
545
+ });
511
546
  }
512
547
  }
513
-
514
- // fix wrong tool call ids
515
- for (let i = 0; i < mergedMessages.length - 1; i++) {
516
- const currentMessage = mergedMessages[i];
517
- const nextMessage = mergedMessages[i + 1];
518
-
519
- if (
520
- "tool_calls" in currentMessage &&
521
- currentMessage.tool_calls.length > 0 &&
522
- "tool_call_id" in nextMessage
523
- ) {
524
- nextMessage.tool_call_id = currentMessage.tool_calls[0].id;
548
+ const resultsDict: Record<string, any> = {};
549
+ for (const msg of result) {
550
+ if (msg.actionExecutionId) {
551
+ resultsDict[msg.actionExecutionId] = msg;
525
552
  }
526
553
  }
527
554
 
528
- // try to auto-correct and log alignment issues
529
- const correctedMessages: LangGraphPlatformMessage[] = [];
555
+ const reorderedResult: Message[] = [];
530
556
 
531
- for (let i = 0; i < mergedMessages.length; i++) {
532
- const currentMessage = mergedMessages[i];
533
- const nextMessage = mergedMessages[i + 1] || null;
534
- const prevMessage = mergedMessages[i - 1] || null;
557
+ for (const msg of result) {
558
+ // If it's not a tool result, just append it
559
+ if (!("actionExecutionId" in msg)) {
560
+ reorderedResult.push(msg);
561
+ }
535
562
 
536
- if ("tool_calls" in currentMessage && currentMessage.tool_calls.length > 0) {
537
- if (!nextMessage) {
538
- console.warn(
539
- "No next message to auto-correct tool call, skipping:",
540
- currentMessage.tool_calls[0].id,
541
- );
542
- continue;
563
+ // If the message has arguments (i.e., is a tool call invocation),
564
+ // append the corresponding result right after it
565
+ if ("arguments" in msg) {
566
+ const msgId = msg.id;
567
+ if (msgId in resultsDict) {
568
+ reorderedResult.push(resultsDict[msgId]);
569
+ } else {
570
+ console.warn("Tool call result message not found for id:", msgId);
543
571
  }
572
+ }
573
+ }
544
574
 
545
- if (
546
- !("tool_call_id" in nextMessage) ||
547
- nextMessage.tool_call_id !== currentMessage.tool_calls[0].id
548
- ) {
549
- const toolMessage = mergedMessages.find(
550
- (m) => "tool_call_id" in m && m.tool_call_id === currentMessage.tool_calls[0].id,
551
- );
575
+ return reorderedResult;
576
+ }
552
577
 
553
- if (toolMessage) {
554
- console.warn(
555
- "Auto-corrected tool call alignment issue:",
556
- currentMessage.tool_calls[0].id,
557
- );
558
- correctedMessages.push(currentMessage, toolMessage);
559
- continue;
560
- } else {
561
- console.warn(
562
- "No corresponding tool call result found for tool call, skipping:",
563
- currentMessage.tool_calls[0].id,
564
- );
565
- continue;
566
- }
567
- }
578
+ function copilotkitMessagesToLangChain(messages: Message[]): LangGraphPlatformMessage[] {
579
+ const result: LangGraphPlatformMessage[] = [];
580
+ const processedActionExecutions = new Set<string>();
568
581
 
569
- correctedMessages.push(currentMessage);
582
+ for (const message of messages) {
583
+ // Handle TextMessage
584
+ if (message.isTextMessage()) {
585
+ if (message.role === "user") {
586
+ // Human message
587
+ result.push({
588
+ ...message,
589
+ role: MessageRole.user,
590
+ });
591
+ } else if (message.role === "system") {
592
+ // System message
593
+ result.push({
594
+ ...message,
595
+ role: MessageRole.system,
596
+ });
597
+ } else if (message.role === "assistant") {
598
+ // Assistant message
599
+ result.push({
600
+ ...message,
601
+ role: MessageRole.assistant,
602
+ });
603
+ }
570
604
  continue;
571
605
  }
572
606
 
573
- if ("tool_call_id" in currentMessage) {
574
- if (!prevMessage || !("tool_calls" in prevMessage)) {
575
- console.warn("No previous tool call, skipping tool call result:", currentMessage.id);
576
- continue;
577
- }
607
+ // Handle ActionExecutionMessage (multiple tool calls per parentMessageId)
608
+ if (message.isActionExecutionMessage()) {
609
+ const messageId = message.parentMessageId ?? message.id;
578
610
 
579
- if (prevMessage.tool_calls && prevMessage.tool_calls[0].id !== currentMessage.tool_call_id) {
580
- console.warn("Tool call id is incorrect, skipping tool call result:", currentMessage.id);
611
+ // If we've already processed this action execution group, skip
612
+ if (processedActionExecutions.has(messageId)) {
581
613
  continue;
582
614
  }
583
615
 
584
- correctedMessages.push(currentMessage);
585
- continue;
586
- }
616
+ processedActionExecutions.add(messageId);
587
617
 
588
- correctedMessages.push(currentMessage);
589
- }
618
+ // Gather all tool calls related to this messageId
619
+ const relatedActionExecutions = messages.filter(
620
+ (m) =>
621
+ m.isActionExecutionMessage() &&
622
+ ((m.parentMessageId && m.parentMessageId === messageId) || m.id === messageId),
623
+ ) as ActionExecutionMessage[];
590
624
 
591
- return {
592
- ...state,
593
- messages: correctedMessages,
594
- copilotkit: {
595
- actions,
596
- },
597
- };
598
- }
625
+ const tool_calls: ToolCall[] = relatedActionExecutions.map((m) => ({
626
+ name: m.name,
627
+ args: m.arguments,
628
+ id: m.id,
629
+ }));
599
630
 
600
- function formatMessages(messages: Message[]): LangGraphPlatformMessage[] {
601
- return messages.map((message) => {
602
- if (message.isTextMessage() && message.role === "assistant") {
603
- return message;
604
- }
605
- if (message.isTextMessage() && message.role === "system") {
606
- return message;
607
- }
608
- if (message.isTextMessage() && message.role === "user") {
609
- return message;
610
- }
611
- if (message.isActionExecutionMessage()) {
612
- const toolCall: ToolCall = {
613
- name: message.name,
614
- args: message.arguments,
615
- id: message.id,
616
- };
617
- return {
618
- type: message.type,
631
+ result.push({
632
+ id: messageId,
633
+ type: "ActionExecutionMessage",
619
634
  content: "",
620
- tool_calls: [toolCall],
635
+ tool_calls: tool_calls,
621
636
  role: MessageRole.assistant,
622
- id: message.id,
623
- } satisfies LangGraphPlatformActionExecutionMessage;
637
+ } satisfies LangGraphPlatformActionExecutionMessage);
638
+
639
+ continue;
624
640
  }
641
+
642
+ // Handle ResultMessage
625
643
  if (message.isResultMessage()) {
626
- return {
644
+ result.push({
627
645
  type: message.type,
628
646
  content: message.result,
629
647
  id: message.id,
630
648
  tool_call_id: message.actionExecutionId,
631
649
  name: message.actionName,
632
650
  role: MessageRole.tool,
633
- } satisfies LangGraphPlatformResultMessage;
651
+ } satisfies LangGraphPlatformResultMessage);
652
+ continue;
634
653
  }
635
654
 
636
655
  throw new Error(`Unknown message type ${message.type}`);
637
- });
656
+ }
657
+
658
+ return result;
638
659
  }
@@ -120,7 +120,11 @@ export class AnthropicAdapter implements CopilotServiceAdapter {
120
120
  mode = "message";
121
121
  } else if (chunk.content_block.type === "tool_use") {
122
122
  currentToolCallId = chunk.content_block.id;
123
- eventStream$.sendActionExecutionStart(currentToolCallId, chunk.content_block.name);
123
+ eventStream$.sendActionExecutionStart({
124
+ actionExecutionId: currentToolCallId,
125
+ actionName: chunk.content_block.name,
126
+ parentMessageId: currentMessageId,
127
+ });
124
128
  mode = "function";
125
129
  }
126
130
  } else if (chunk.type === "content_block_delta") {
@@ -128,21 +132,27 @@ export class AnthropicAdapter implements CopilotServiceAdapter {
128
132
  const text = filterThinkingTextBuffer.onTextChunk(chunk.delta.text);
129
133
  if (text.length > 0) {
130
134
  if (!didOutputText) {
131
- eventStream$.sendTextMessageStart(currentMessageId);
135
+ eventStream$.sendTextMessageStart({ messageId: currentMessageId });
132
136
  didOutputText = true;
133
137
  }
134
- eventStream$.sendTextMessageContent(text);
138
+ eventStream$.sendTextMessageContent({
139
+ messageId: currentMessageId,
140
+ content: text,
141
+ });
135
142
  }
136
143
  } else if (chunk.delta.type === "input_json_delta") {
137
- eventStream$.sendActionExecutionArgs(chunk.delta.partial_json);
144
+ eventStream$.sendActionExecutionArgs({
145
+ actionExecutionId: currentToolCallId,
146
+ args: chunk.delta.partial_json,
147
+ });
138
148
  }
139
149
  } else if (chunk.type === "content_block_stop") {
140
150
  if (mode === "message") {
141
151
  if (didOutputText) {
142
- eventStream$.sendTextMessageEnd();
152
+ eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
143
153
  }
144
154
  } else if (mode === "function") {
145
- eventStream$.sendActionExecutionEnd();
155
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
146
156
  }
147
157
  }
148
158
  }
@@ -19,6 +19,7 @@ export function convertGqlInputToMessages(inputMessages: MessageInput[]): Messag
19
19
  createdAt: message.createdAt,
20
20
  role: message.textMessage.role,
21
21
  content: message.textMessage.content,
22
+ parentMessageId: message.textMessage.parentMessageId,
22
23
  }),
23
24
  );
24
25
  } else if (message.actionExecutionMessage) {
@@ -28,7 +29,7 @@ export function convertGqlInputToMessages(inputMessages: MessageInput[]): Messag
28
29
  createdAt: message.createdAt,
29
30
  name: message.actionExecutionMessage.name,
30
31
  arguments: JSON.parse(message.actionExecutionMessage.arguments),
31
- scope: message.actionExecutionMessage.scope,
32
+ parentMessageId: message.actionExecutionMessage.parentMessageId,
32
33
  }),
33
34
  );
34
35
  } else if (message.resultMessage) {