@copilotkit/runtime 1.4.0-pre-1-4-0.0 → 1.4.0-pre-1-4-0.11

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 (55) hide show
  1. package/CHANGELOG.md +96 -3
  2. package/__snapshots__/schema/schema.graphql +1 -0
  3. package/dist/{chunk-3SXVSM2J.mjs → chunk-3DNY5YTL.mjs} +2 -2
  4. package/dist/{chunk-5DFP5VJV.mjs → chunk-677K33J7.mjs} +2 -2
  5. package/dist/{chunk-VGYN7TGZ.mjs → chunk-BNQDVBQH.mjs} +1 -1
  6. package/dist/chunk-BNQDVBQH.mjs.map +1 -0
  7. package/dist/{chunk-KDT43TMW.mjs → chunk-FL67XJAX.mjs} +3 -3
  8. package/dist/{chunk-KDT43TMW.mjs.map → chunk-FL67XJAX.mjs.map} +1 -1
  9. package/dist/{chunk-SBNW3ABC.mjs → chunk-V2YEM4Z5.mjs} +2 -2
  10. package/dist/{chunk-5LEQEQFA.mjs → chunk-VBGS6IWV.mjs} +108 -142
  11. package/dist/chunk-VBGS6IWV.mjs.map +1 -0
  12. package/dist/{copilot-runtime-68acb673.d.ts → copilot-runtime-8d3f40c7.d.ts} +3 -3
  13. package/dist/graphql/types/converted/index.d.ts +1 -1
  14. package/dist/{groq-adapter-c30654bd.d.ts → groq-adapter-dbfba3eb.d.ts} +34 -1
  15. package/dist/{index-439dfa2a.d.ts → index-83ee522f.d.ts} +2 -1
  16. package/dist/index.d.ts +4 -4
  17. package/dist/index.js +107 -141
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +6 -6
  20. package/dist/{langserve-0d844922.d.ts → langserve-f00629d2.d.ts} +1 -1
  21. package/dist/lib/index.d.ts +4 -4
  22. package/dist/lib/index.js +107 -141
  23. package/dist/lib/index.js.map +1 -1
  24. package/dist/lib/index.mjs +6 -6
  25. package/dist/lib/integrations/index.d.ts +4 -4
  26. package/dist/lib/integrations/index.js +2 -1
  27. package/dist/lib/integrations/index.js.map +1 -1
  28. package/dist/lib/integrations/index.mjs +4 -4
  29. package/dist/lib/integrations/nest/index.d.ts +3 -3
  30. package/dist/lib/integrations/nest/index.js +2 -1
  31. package/dist/lib/integrations/nest/index.js.map +1 -1
  32. package/dist/lib/integrations/nest/index.mjs +2 -2
  33. package/dist/lib/integrations/node-express/index.d.ts +3 -3
  34. package/dist/lib/integrations/node-express/index.js +2 -1
  35. package/dist/lib/integrations/node-express/index.js.map +1 -1
  36. package/dist/lib/integrations/node-express/index.mjs +2 -2
  37. package/dist/lib/integrations/node-http/index.d.ts +3 -3
  38. package/dist/lib/integrations/node-http/index.js +2 -1
  39. package/dist/lib/integrations/node-http/index.js.map +1 -1
  40. package/dist/lib/integrations/node-http/index.mjs +1 -1
  41. package/dist/service-adapters/index.d.ts +4 -4
  42. package/dist/service-adapters/index.js.map +1 -1
  43. package/dist/service-adapters/index.mjs +1 -1
  44. package/package.json +4 -4
  45. package/src/agents/langgraph/events.ts +1 -0
  46. package/src/graphql/types/enums.ts +1 -0
  47. package/src/lib/runtime/copilot-runtime.ts +2 -2
  48. package/src/lib/runtime/remote-lg-cloud-action.ts +137 -160
  49. package/src/service-adapters/openai/openai-adapter.ts +33 -0
  50. package/src/service-adapters/openai/utils.ts +13 -9
  51. package/dist/chunk-5LEQEQFA.mjs.map +0 -1
  52. package/dist/chunk-VGYN7TGZ.mjs.map +0 -1
  53. /package/dist/{chunk-3SXVSM2J.mjs.map → chunk-3DNY5YTL.mjs.map} +0 -0
  54. /package/dist/{chunk-5DFP5VJV.mjs.map → chunk-677K33J7.mjs.map} +0 -0
  55. /package/dist/{chunk-SBNW3ABC.mjs.map → chunk-V2YEM4Z5.mjs.map} +0 -0
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  copilotKitEndpoint,
4
4
  flattenToolCallsNoDuplicates,
5
5
  langGraphCloudEndpoint
6
- } from "./chunk-KDT43TMW.mjs";
6
+ } from "./chunk-FL67XJAX.mjs";
7
7
  import {
8
8
  AnthropicAdapter,
9
9
  GoogleGenerativeAIAdapter,
@@ -13,24 +13,24 @@ import {
13
13
  OpenAIAssistantAdapter,
14
14
  RemoteChain,
15
15
  UnifyAdapter
16
- } from "./chunk-VGYN7TGZ.mjs";
16
+ } from "./chunk-BNQDVBQH.mjs";
17
17
  import {
18
18
  config,
19
19
  copilotRuntimeNextJSAppRouterEndpoint,
20
20
  copilotRuntimeNextJSPagesRouterEndpoint
21
- } from "./chunk-3SXVSM2J.mjs";
21
+ } from "./chunk-3DNY5YTL.mjs";
22
22
  import {
23
23
  copilotRuntimeNestEndpoint
24
- } from "./chunk-5DFP5VJV.mjs";
24
+ } from "./chunk-677K33J7.mjs";
25
25
  import {
26
26
  copilotRuntimeNodeExpressEndpoint
27
- } from "./chunk-SBNW3ABC.mjs";
27
+ } from "./chunk-V2YEM4Z5.mjs";
28
28
  import {
29
29
  buildSchema,
30
30
  copilotRuntimeNodeHttpEndpoint,
31
31
  createContext,
32
32
  getCommonConfig
33
- } from "./chunk-5LEQEQFA.mjs";
33
+ } from "./chunk-VBGS6IWV.mjs";
34
34
  import "./chunk-MXXPWWBF.mjs";
35
35
  import {
36
36
  GuardrailsValidationFailureResponse,
@@ -1,4 +1,4 @@
1
- import { a as Message } from './index-439dfa2a.js';
1
+ import { a as Message } from './index-83ee522f.js';
2
2
  import * as rxjs from 'rxjs';
3
3
  import { Subject, ReplaySubject } from 'rxjs';
4
4
  import { Action, Parameter } from '@copilotkit/shared';
@@ -1,12 +1,12 @@
1
- export { h as CommonConfig, b as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, d as CreateCopilotRuntimeServerOptions, G as GraphQLContext, g as buildSchema, c as copilotKitEndpoint, e as createContext, f as flattenToolCallsNoDuplicates, i as getCommonConfig, l as langGraphCloudEndpoint } from '../copilot-runtime-68acb673.js';
2
- export { G as GoogleGenerativeAIAdapter, f as GroqAdapter, e as GroqAdapterParams, L as LangChainAdapter, a as OpenAIAdapter, O as OpenAIAdapterParams, c as OpenAIAssistantAdapter, b as OpenAIAssistantAdapterParams, d as UnifyAdapter, U as UnifyAdapterParams } from '../groq-adapter-c30654bd.js';
1
+ export { h as CommonConfig, b as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, d as CreateCopilotRuntimeServerOptions, G as GraphQLContext, g as buildSchema, c as copilotKitEndpoint, e as createContext, f as flattenToolCallsNoDuplicates, i as getCommonConfig, l as langGraphCloudEndpoint } from '../copilot-runtime-8d3f40c7.js';
2
+ export { G as GoogleGenerativeAIAdapter, f as GroqAdapter, e as GroqAdapterParams, L as LangChainAdapter, a as OpenAIAdapter, O as OpenAIAdapterParams, c as OpenAIAssistantAdapter, b as OpenAIAssistantAdapterParams, d as UnifyAdapter, U as UnifyAdapterParams } from '../groq-adapter-dbfba3eb.js';
3
3
  export { CopilotRuntimeServerInstance, config, copilotRuntimeNextJSAppRouterEndpoint, copilotRuntimeNextJSPagesRouterEndpoint } from './integrations/index.js';
4
4
  export { copilotRuntimeNodeHttpEndpoint } from './integrations/node-http/index.js';
5
5
  export { copilotRuntimeNodeExpressEndpoint } from './integrations/node-express/index.js';
6
6
  export { copilotRuntimeNestEndpoint } from './integrations/nest/index.js';
7
7
  import '@copilotkit/shared';
8
- import '../langserve-0d844922.js';
9
- import '../index-439dfa2a.js';
8
+ import '../langserve-f00629d2.js';
9
+ import '../index-83ee522f.js';
10
10
  import '../graphql/types/base/index.js';
11
11
  import 'rxjs';
12
12
  import 'graphql';
package/dist/lib/index.js CHANGED
@@ -44,7 +44,7 @@ var require_package = __commonJS({
44
44
  publishConfig: {
45
45
  access: "public"
46
46
  },
47
- version: "1.4.0-pre-1-4-0.0",
47
+ version: "1.4.0-pre-1-4-0.11",
48
48
  sideEffects: false,
49
49
  main: "./dist/index.js",
50
50
  module: "./dist/index.mjs",
@@ -1091,6 +1091,7 @@ var CustomEventNames;
1091
1091
  CustomEventNames2["CopilotKitManuallyEmitMessage"] = "copilotkit_manually_emit_message";
1092
1092
  CustomEventNames2["CopilotKitManuallyEmitToolCall"] = "copilotkit_manually_emit_tool_call";
1093
1093
  CustomEventNames2["CopilotKitManuallyEmitIntermediateState"] = "copilotkit_manually_emit_intermediate_state";
1094
+ CustomEventNames2["CopilotKitExit"] = "copilotkit_exit";
1094
1095
  })(CustomEventNames || (CustomEventNames = {}));
1095
1096
 
1096
1097
  // src/agents/langgraph/event-source.ts
@@ -1310,6 +1311,7 @@ var MessageRole;
1310
1311
  MessageRole2["user"] = "user";
1311
1312
  MessageRole2["assistant"] = "assistant";
1312
1313
  MessageRole2["system"] = "system";
1314
+ MessageRole2["tool"] = "tool";
1313
1315
  })(MessageRole || (MessageRole = {}));
1314
1316
  var ActionExecutionScope;
1315
1317
  (function(ActionExecutionScope2) {
@@ -1384,7 +1386,13 @@ async function streamEvents(controller, args) {
1384
1386
  const agentStateValues = agentState.values;
1385
1387
  state.messages = agentStateValues.messages;
1386
1388
  const mode = wasInitiatedWithExistingThread && nodeName != "__end__" ? "continue" : "start";
1387
- state = langGraphDefaultMergeState(state, formatMessages(messages), actions, name);
1389
+ let formattedMessages = [];
1390
+ try {
1391
+ formattedMessages = formatMessages(messages);
1392
+ } catch (e) {
1393
+ logger2.error(e, `Error event thrown: ${e.message}`);
1394
+ }
1395
+ state = langGraphDefaultMergeState(state, formattedMessages, actions, name);
1388
1396
  if (mode === "continue") {
1389
1397
  await client.threads.updateState(threadId, {
1390
1398
  values: state,
@@ -1407,7 +1415,7 @@ async function streamEvents(controller, args) {
1407
1415
  let streamingStateExtractor = new StreamingStateExtractor([]);
1408
1416
  let prevNodeName = null;
1409
1417
  let emitIntermediateStateUntilEnd = null;
1410
- let shouldExit = null;
1418
+ let shouldExit = false;
1411
1419
  let externalRunId = null;
1412
1420
  const streamResponse2 = client.runs.stream(threadId, assistantId, {
1413
1421
  input: streamInput,
@@ -1418,125 +1426,104 @@ async function streamEvents(controller, args) {
1418
1426
  });
1419
1427
  const emit = /* @__PURE__ */ __name((message) => controller.enqueue(new TextEncoder().encode(message)), "emit");
1420
1428
  let latestStateValues = {};
1421
- for await (const chunk of streamResponse2) {
1422
- if (![
1423
- "events",
1424
- "values",
1425
- "error"
1426
- ].includes(chunk.event))
1427
- continue;
1428
- if (chunk.event === "error") {
1429
- logger2.error(chunk, `Error event thrown: ${chunk.data.message}`);
1430
- throw new Error(`Error event thrown: ${chunk.data.message}`);
1431
- }
1432
- if (chunk.event === "values") {
1433
- latestStateValues = chunk.data;
1434
- continue;
1435
- }
1436
- const event = chunk.data;
1437
- const currentNodeName = event.name;
1438
- const eventType = event.event;
1439
- const runId = event.metadata.run_id;
1440
- externalRunId = runId;
1441
- const metadata = event.metadata;
1442
- shouldExit = shouldExit != null ? shouldExit : metadata["copilotkit:exit"];
1443
- const emitIntermediateState = metadata["copilotkit:emit-intermediate-state"];
1444
- const forceEmitIntermediateState = metadata["copilotkit:force-emit-intermediate-state"];
1445
- const manuallyEmitMessage = metadata["copilotkit:manually-emit-messages"];
1446
- const manuallyEmitToolCall = metadata["copilotkit:manually-emit-tool-calls"];
1447
- if (graphInfo["nodes"].some((node) => node.id === currentNodeName)) {
1448
- nodeName = currentNodeName;
1449
- }
1450
- if (!nodeName) {
1451
- continue;
1452
- }
1453
- if (forceEmitIntermediateState) {
1454
- if (eventType === "on_chain_end") {
1455
- state = event.data.output;
1429
+ let updatedState = state;
1430
+ try {
1431
+ for await (const chunk of streamResponse2) {
1432
+ if (![
1433
+ "events",
1434
+ "values",
1435
+ "error"
1436
+ ].includes(chunk.event))
1437
+ continue;
1438
+ if (chunk.event === "error") {
1439
+ logger2.error(chunk, `Error event thrown: ${chunk.data.message}`);
1440
+ throw new Error(`Error event thrown: ${chunk.data.message}`);
1441
+ }
1442
+ if (chunk.event === "values") {
1443
+ latestStateValues = chunk.data;
1444
+ continue;
1445
+ }
1446
+ const event = chunk.data;
1447
+ const currentNodeName = event.name;
1448
+ const eventType = event.event;
1449
+ const runId = event.metadata.run_id;
1450
+ externalRunId = runId;
1451
+ const metadata = event.metadata;
1452
+ shouldExit = shouldExit || eventType === LangGraphEventTypes.OnCustomEvent && event.name === CustomEventNames.CopilotKitExit;
1453
+ const emitIntermediateState = metadata["copilotkit:emit-intermediate-state"];
1454
+ const manuallyEmitIntermediateState = eventType === LangGraphEventTypes.OnCustomEvent && event.name === CustomEventNames.CopilotKitManuallyEmitIntermediateState;
1455
+ if (graphInfo["nodes"].some((node) => node.id === currentNodeName)) {
1456
+ nodeName = currentNodeName;
1457
+ if (eventType === LangGraphEventTypes.OnChainStart || eventType === LangGraphEventTypes.OnChainEnd) {
1458
+ updatedState = latestStateValues;
1459
+ }
1460
+ }
1461
+ if (!nodeName) {
1462
+ continue;
1463
+ }
1464
+ if (manuallyEmitIntermediateState) {
1465
+ updatedState = event.data;
1456
1466
  emit(getStateSyncEvent({
1457
1467
  threadId,
1458
1468
  runId,
1459
1469
  agentName: agent.name,
1460
1470
  nodeName,
1461
- state: event.data.output,
1471
+ state: updatedState,
1462
1472
  running: true,
1463
1473
  active: true
1464
1474
  }));
1475
+ continue;
1465
1476
  }
1466
- continue;
1467
- }
1468
- if (manuallyEmitMessage) {
1469
- if (eventType === "on_chain_end") {
1470
- state = event.data.output;
1471
- emit(JSON.stringify({
1472
- event: "on_copilotkit_emit_message",
1473
- message: event.data.output,
1474
- messageId: (0, import_node_crypto.randomUUID)(),
1475
- role: MessageRole.assistant
1476
- }) + "\n");
1477
+ if (emitIntermediateState && emitIntermediateStateUntilEnd == null) {
1478
+ emitIntermediateStateUntilEnd = nodeName;
1477
1479
  }
1478
- continue;
1479
- }
1480
- if (manuallyEmitToolCall) {
1481
- if (eventType === "on_chain_end") {
1482
- state = event.data.output;
1483
- emit(JSON.stringify({
1484
- event: "on_copilotkit_emit_tool_call",
1485
- name: event.data.output.name,
1486
- args: event.data.output.args,
1487
- id: event.data.output.id
1488
- }) + "\n");
1480
+ if (emitIntermediateState && eventType === LangGraphEventTypes.OnChatModelStart) {
1481
+ streamingStateExtractor = new StreamingStateExtractor(emitIntermediateState);
1489
1482
  }
1490
- continue;
1491
- }
1492
- if (emitIntermediateState && emitIntermediateStateUntilEnd == null) {
1493
- emitIntermediateStateUntilEnd = nodeName;
1494
- }
1495
- if (emitIntermediateState && eventType === "on_chat_model_start") {
1496
- streamingStateExtractor = new StreamingStateExtractor(emitIntermediateState);
1497
- }
1498
- let updatedState = latestStateValues;
1499
- if (emitIntermediateState && eventType === "on_chat_model_stream") {
1500
- streamingStateExtractor.bufferToolCalls(event);
1501
- }
1502
- if (emitIntermediateStateUntilEnd !== null) {
1503
- updatedState = {
1504
- ...updatedState,
1505
- ...streamingStateExtractor.extractState()
1506
- };
1507
- }
1508
- if (!emitIntermediateState && currentNodeName === emitIntermediateStateUntilEnd && eventType === "on_chain_end") {
1509
- emitIntermediateStateUntilEnd = null;
1510
- }
1511
- const exitingNode = nodeName === currentNodeName && eventType === "on_chain_end";
1512
- if (JSON.stringify(updatedState) !== JSON.stringify(state) || prevNodeName != nodeName || exitingNode) {
1513
- state = updatedState;
1514
- prevNodeName = nodeName;
1515
- emit(getStateSyncEvent({
1516
- threadId,
1517
- runId,
1518
- agentName: agent.name,
1519
- nodeName,
1520
- state,
1521
- running: true,
1522
- active: !exitingNode
1523
- }));
1483
+ if (emitIntermediateState && eventType === LangGraphEventTypes.OnChatModelStream) {
1484
+ streamingStateExtractor.bufferToolCalls(event);
1485
+ }
1486
+ if (emitIntermediateStateUntilEnd !== null) {
1487
+ updatedState = {
1488
+ ...updatedState,
1489
+ ...streamingStateExtractor.extractState()
1490
+ };
1491
+ }
1492
+ if (!emitIntermediateState && currentNodeName === emitIntermediateStateUntilEnd && eventType === LangGraphEventTypes.OnChainEnd) {
1493
+ emitIntermediateStateUntilEnd = null;
1494
+ }
1495
+ const exitingNode = nodeName === currentNodeName && eventType === LangGraphEventTypes.OnChainEnd;
1496
+ if (JSON.stringify(updatedState) !== JSON.stringify(state) || prevNodeName != nodeName || exitingNode) {
1497
+ state = updatedState;
1498
+ prevNodeName = nodeName;
1499
+ emit(getStateSyncEvent({
1500
+ threadId,
1501
+ runId,
1502
+ agentName: agent.name,
1503
+ nodeName,
1504
+ state,
1505
+ running: true,
1506
+ active: !exitingNode
1507
+ }));
1508
+ }
1509
+ emit(JSON.stringify(event) + "\n");
1524
1510
  }
1525
- emit(JSON.stringify(event) + "\n");
1511
+ state = await client.threads.getState(threadId);
1512
+ const isEndNode = state.next.length === 0;
1513
+ nodeName = Object.keys(state.metadata.writes)[0];
1514
+ emit(getStateSyncEvent({
1515
+ threadId,
1516
+ runId: externalRunId,
1517
+ agentName: agent.name,
1518
+ nodeName: isEndNode ? "__end__" : nodeName,
1519
+ state: state.values,
1520
+ running: !shouldExit,
1521
+ active: false
1522
+ }));
1523
+ return Promise.resolve();
1524
+ } catch (e) {
1525
+ return Promise.resolve();
1526
1526
  }
1527
- state = await client.threads.getState(threadId);
1528
- const isEndNode = state.next.length === 0;
1529
- nodeName = Object.keys(state.metadata.writes)[0];
1530
- emit(getStateSyncEvent({
1531
- threadId,
1532
- runId: externalRunId,
1533
- agentName: agent.name,
1534
- nodeName: isEndNode ? "__end__" : nodeName,
1535
- state: state.values,
1536
- running: !shouldExit,
1537
- active: false
1538
- }));
1539
- return Promise.resolve();
1540
1527
  }
1541
1528
  __name(streamEvents, "streamEvents");
1542
1529
  function getStateSyncEvent({ threadId, runId, agentName, nodeName, state, running, active }) {
@@ -1547,7 +1534,7 @@ function getStateSyncEvent({ threadId, runId, agentName, nodeName, state, runnin
1547
1534
  return acc;
1548
1535
  }, {});
1549
1536
  return JSON.stringify({
1550
- event: "on_copilotkit_state_sync",
1537
+ event: LangGraphEventTypes.OnCopilotKitStateSync,
1551
1538
  thread_id: threadId,
1552
1539
  run_id: runId,
1553
1540
  agent_name: agentName,
@@ -1573,10 +1560,10 @@ var StreamingStateExtractor = /* @__PURE__ */ __name(class StreamingStateExtract
1573
1560
  bufferToolCalls(event) {
1574
1561
  if (event.data.chunk.tool_call_chunks.length > 0) {
1575
1562
  const chunk = event.data.chunk.tool_call_chunks[0];
1576
- if (chunk.name !== null) {
1563
+ if (chunk.name !== null && chunk.name !== void 0) {
1577
1564
  this.currentToolCall = chunk.name;
1578
1565
  this.toolCallBuffer[this.currentToolCall] = chunk.args;
1579
- } else if (this.currentToolCall !== null) {
1566
+ } else if (this.currentToolCall !== null && this.currentToolCall !== void 0) {
1580
1567
  this.toolCallBuffer[this.currentToolCall] += chunk.args;
1581
1568
  }
1582
1569
  }
@@ -1652,12 +1639,10 @@ function langGraphDefaultMergeState(state, messages, actions, agentName) {
1652
1639
  mergedMessages.push(message);
1653
1640
  } else {
1654
1641
  for (let i = 0; i < mergedMessages.length; i++) {
1655
- if (mergedMessages[i].id === message.id) {
1656
- if ("tool_calls" in message) {
1657
- if (("tool_calls" in mergedMessages[i] || "additional_kwargs" in mergedMessages[i]) && mergedMessages[i].content) {
1658
- message.tool_calls = mergedMessages[i]["tool_calls"];
1659
- message.additional_kwargs = mergedMessages[i].additional_kwargs;
1660
- }
1642
+ if (mergedMessages[i].id === message.id && message.role === "assistant") {
1643
+ if (("tool_calls" in mergedMessages[i] || "additional_kwargs" in mergedMessages[i]) && mergedMessages[i].content) {
1644
+ message.tool_calls = mergedMessages[i]["tool_calls"];
1645
+ message.additional_kwargs = mergedMessages[i].additional_kwargs;
1661
1646
  }
1662
1647
  mergedMessages[i] = message;
1663
1648
  }
@@ -1709,34 +1694,15 @@ function langGraphDefaultMergeState(state, messages, actions, agentName) {
1709
1694
  }
1710
1695
  correctedMessages.push(currentMessage);
1711
1696
  }
1712
- return deepMerge(state, {
1697
+ return {
1698
+ ...state,
1713
1699
  messages: correctedMessages,
1714
1700
  copilotkit: {
1715
1701
  actions
1716
1702
  }
1717
- });
1718
- }
1719
- __name(langGraphDefaultMergeState, "langGraphDefaultMergeState");
1720
- function deepMerge(obj1, obj2) {
1721
- let result = {
1722
- ...obj1
1723
1703
  };
1724
- for (let key in obj2) {
1725
- if (typeof obj2[key] === "object" && !Array.isArray(obj2[key])) {
1726
- if (obj1[key]) {
1727
- result[key] = deepMerge(obj1[key], obj2[key]);
1728
- } else {
1729
- result[key] = {
1730
- ...obj2[key]
1731
- };
1732
- }
1733
- } else {
1734
- result[key] = obj2[key];
1735
- }
1736
- }
1737
- return result;
1738
1704
  }
1739
- __name(deepMerge, "deepMerge");
1705
+ __name(langGraphDefaultMergeState, "langGraphDefaultMergeState");
1740
1706
  function formatMessages(messages) {
1741
1707
  return messages.map((message) => {
1742
1708
  if (message.isTextMessage() && message.role === "assistant") {
@@ -1771,7 +1737,7 @@ function formatMessages(messages) {
1771
1737
  id: message.id,
1772
1738
  tool_call_id: message.actionExecutionId,
1773
1739
  name: message.actionName,
1774
- role: MessageRole.assistant
1740
+ role: MessageRole.tool
1775
1741
  };
1776
1742
  }
1777
1743
  throw new Error(`Unknown message type ${message.type}`);