@langchain/langgraph 0.2.57 → 0.2.59

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 (54) hide show
  1. package/dist/constants.cjs +98 -12
  2. package/dist/constants.d.ts +51 -6
  3. package/dist/constants.js +96 -11
  4. package/dist/constants.js.map +1 -1
  5. package/dist/graph/graph.d.ts +1 -1
  6. package/dist/graph/state.cjs +90 -11
  7. package/dist/graph/state.d.ts +23 -5
  8. package/dist/graph/state.js +90 -11
  9. package/dist/graph/state.js.map +1 -1
  10. package/dist/graph/zod/index.cjs +7 -0
  11. package/dist/graph/zod/index.d.ts +2 -0
  12. package/dist/graph/zod/index.js +3 -0
  13. package/dist/graph/zod/index.js.map +1 -0
  14. package/dist/graph/zod/plugin.cjs +41 -0
  15. package/dist/graph/zod/plugin.d.ts +15 -0
  16. package/dist/graph/zod/plugin.js +39 -0
  17. package/dist/graph/zod/plugin.js.map +1 -0
  18. package/dist/graph/zod/schema.cjs +79 -0
  19. package/dist/graph/zod/schema.d.ts +9 -0
  20. package/dist/graph/zod/schema.js +73 -0
  21. package/dist/graph/zod/schema.js.map +1 -0
  22. package/dist/graph/zod/state.cjs +73 -0
  23. package/dist/graph/zod/state.d.ts +30 -0
  24. package/dist/graph/zod/state.js +64 -0
  25. package/dist/graph/zod/state.js.map +1 -0
  26. package/dist/pregel/algo.cjs +26 -3
  27. package/dist/pregel/algo.js +27 -4
  28. package/dist/pregel/algo.js.map +1 -1
  29. package/dist/pregel/debug.cjs +2 -1
  30. package/dist/pregel/debug.d.ts +1 -1
  31. package/dist/pregel/debug.js +2 -1
  32. package/dist/pregel/debug.js.map +1 -1
  33. package/dist/pregel/index.cjs +111 -25
  34. package/dist/pregel/index.d.ts +26 -1
  35. package/dist/pregel/index.js +112 -26
  36. package/dist/pregel/index.js.map +1 -1
  37. package/dist/pregel/loop.cjs +48 -24
  38. package/dist/pregel/loop.d.ts +1 -0
  39. package/dist/pregel/loop.js +48 -24
  40. package/dist/pregel/loop.js.map +1 -1
  41. package/dist/pregel/retry.cjs +3 -1
  42. package/dist/pregel/retry.js +3 -1
  43. package/dist/pregel/retry.js.map +1 -1
  44. package/dist/pregel/runner.cjs +26 -17
  45. package/dist/pregel/runner.d.ts +4 -0
  46. package/dist/pregel/runner.js +26 -17
  47. package/dist/pregel/runner.js.map +1 -1
  48. package/dist/pregel/utils/index.d.ts +2 -0
  49. package/dist/pregel/utils/index.js.map +1 -1
  50. package/package.json +22 -3
  51. package/zod.cjs +1 -0
  52. package/zod.d.cts +1 -0
  53. package/zod.d.ts +1 -0
  54. package/zod.js +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/pregel/debug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/pregel/debug.ts"],"names":[],"mappings":"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"}
@@ -519,10 +519,11 @@ class Pregel extends runnables_1.Runnable {
519
519
  * @param config - Configuration for preparing the snapshot
520
520
  * @param saved - Optional saved checkpoint data
521
521
  * @param subgraphCheckpointer - Optional checkpointer for subgraphs
522
+ * @param applyPendingWrites - Whether to apply pending writes to tasks and then to channels
522
523
  * @returns A snapshot of the graph state
523
524
  * @internal
524
525
  */
525
- async _prepareStateSnapshot({ config, saved, subgraphCheckpointer, }) {
526
+ async _prepareStateSnapshot({ config, saved, subgraphCheckpointer, applyPendingWrites = false, }) {
526
527
  if (saved === undefined) {
527
528
  return {
528
529
  values: {},
@@ -531,20 +532,40 @@ class Pregel extends runnables_1.Runnable {
531
532
  tasks: [],
532
533
  };
533
534
  }
534
- // Pass `skipManaged: true` as managed values should not be returned in get state calls.
535
- const { managed } = await this.prepareSpecs(config, { skipManaged: true });
535
+ // Create all channels
536
+ const { managed } = await this.prepareSpecs(config, {
537
+ skipManaged: true,
538
+ });
536
539
  const channels = (0, base_js_1.emptyChannels)(this.channels, saved.checkpoint);
537
- const nextTasks = Object.values((0, algo_js_1._prepareNextTasks)(saved.checkpoint, saved.pendingWrites, this.nodes, channels, managed, saved.config, false, { step: (saved.metadata?.step ?? -1) + 1 }));
540
+ // Apply null writes first (from NULL_TASK_ID)
541
+ if (saved.pendingWrites?.length) {
542
+ const nullWrites = saved.pendingWrites
543
+ .filter(([taskId, _]) => taskId === constants_js_1.NULL_TASK_ID)
544
+ .map(([_, channel, value]) => [String(channel), value]);
545
+ if (nullWrites.length > 0) {
546
+ (0, algo_js_1._applyWrites)(saved.checkpoint, channels, [
547
+ {
548
+ name: constants_js_1.INPUT,
549
+ writes: nullWrites,
550
+ triggers: [],
551
+ },
552
+ ]);
553
+ }
554
+ }
555
+ // Prepare next tasks
556
+ const nextTasks = Object.values((0, algo_js_1._prepareNextTasks)(saved.checkpoint, saved.pendingWrites, this.nodes, channels, managed, saved.config, true, { step: (saved.metadata?.step ?? -1) + 1, store: this.store }));
557
+ // Find subgraphs
538
558
  const subgraphs = await (0, utils_js_1.gatherIterator)(this.getSubgraphsAsync());
539
559
  const parentNamespace = saved.config.configurable?.checkpoint_ns ?? "";
540
560
  const taskStates = {};
561
+ // Prepare task states for subgraphs
541
562
  for (const task of nextTasks) {
542
563
  const matchingSubgraph = subgraphs.find(([name]) => name === task.name);
543
564
  if (!matchingSubgraph) {
544
565
  continue;
545
566
  }
546
567
  // assemble checkpoint_ns for this task
547
- let taskNs = `${task.name}${constants_js_1.CHECKPOINT_NAMESPACE_END}${task.id}`;
568
+ let taskNs = `${String(task.name)}${constants_js_1.CHECKPOINT_NAMESPACE_END}${task.id}`;
548
569
  if (parentNamespace) {
549
570
  taskNs = `${parentNamespace}${constants_js_1.CHECKPOINT_NAMESPACE_SEPARATOR}${taskNs}`;
550
571
  }
@@ -560,37 +581,59 @@ class Pregel extends runnables_1.Runnable {
560
581
  }
561
582
  else {
562
583
  // get the state of the subgraph
563
- const config = {
584
+ const subgraphConfig = {
564
585
  configurable: {
565
586
  [constants_js_1.CONFIG_KEY_CHECKPOINTER]: subgraphCheckpointer,
566
587
  thread_id: saved.config.configurable?.thread_id,
567
588
  checkpoint_ns: taskNs,
568
589
  },
569
590
  };
570
- taskStates[task.id] = await matchingSubgraph[1].getState(config, {
591
+ const pregel = matchingSubgraph[1];
592
+ taskStates[task.id] = await pregel.getState(subgraphConfig, {
571
593
  subgraphs: true,
572
594
  });
573
595
  }
574
596
  }
575
- // apply pending writes
576
- const nullWrites = (saved.pendingWrites ?? [])
577
- .filter((w) => w[0] === constants_js_1.NULL_TASK_ID)
578
- .map((w) => w.slice(1));
579
- if (nullWrites.length > 0) {
580
- (0, algo_js_1._applyWrites)(saved.checkpoint, channels, [
581
- {
582
- name: constants_js_1.INPUT,
583
- writes: nullWrites,
584
- triggers: [],
585
- },
586
- ]);
597
+ // Apply pending writes to tasks and then to channels if applyPendingWrites is true
598
+ if (applyPendingWrites && saved.pendingWrites?.length) {
599
+ // Map task IDs to task objects for easy lookup
600
+ const nextTaskById = Object.fromEntries(nextTasks.map((task) => [task.id, task]));
601
+ // Apply pending writes to the appropriate tasks
602
+ for (const [taskId, channel, value] of saved.pendingWrites) {
603
+ // Skip special channels and tasks not in nextTasks
604
+ if ([constants_js_1.ERROR, constants_js_1.INTERRUPT, langgraph_checkpoint_1.SCHEDULED].includes(channel)) {
605
+ continue;
606
+ }
607
+ if (!(taskId in nextTaskById)) {
608
+ continue;
609
+ }
610
+ // Add the write to the task
611
+ nextTaskById[taskId].writes.push([String(channel), value]);
612
+ }
613
+ // Apply writes from tasks that have writes
614
+ const tasksWithWrites = nextTasks.filter((task) => task.writes.length > 0);
615
+ if (tasksWithWrites.length > 0) {
616
+ (0, algo_js_1._applyWrites)(saved.checkpoint, channels, tasksWithWrites);
617
+ }
587
618
  }
619
+ // Preserve thread_id from the config in metadata
620
+ let metadata = saved?.metadata;
621
+ if (metadata && saved?.config?.configurable?.thread_id) {
622
+ metadata = {
623
+ ...metadata,
624
+ thread_id: saved.config.configurable.thread_id,
625
+ };
626
+ }
627
+ // Filter next tasks - only include tasks without writes
628
+ const nextList = nextTasks
629
+ .filter((task) => task.writes.length === 0)
630
+ .map((task) => task.name);
588
631
  // assemble the state snapshot
589
632
  return {
590
633
  values: (0, io_js_1.readChannels)(channels, this.streamChannelsAsIs),
591
- next: nextTasks.map((task) => task.name),
634
+ next: nextList,
592
635
  tasks: (0, debug_js_1.tasksWithWrites)(nextTasks, saved?.pendingWrites ?? [], taskStates),
593
- metadata: saved.metadata,
636
+ metadata,
594
637
  config: (0, index_js_1.patchCheckpointMap)(saved.config, saved.metadata),
595
638
  createdAt: saved.checkpoint.ts,
596
639
  parentConfig: saved.parentConfig,
@@ -630,6 +673,7 @@ class Pregel extends runnables_1.Runnable {
630
673
  config: mergedConfig,
631
674
  saved,
632
675
  subgraphCheckpointer: options?.subgraphs ? checkpointer : undefined,
676
+ applyPendingWrites: !config.configurable?.checkpoint_id,
633
677
  });
634
678
  return snapshot;
635
679
  }
@@ -1138,6 +1182,16 @@ class Pregel extends runnables_1.Runnable {
1138
1182
  };
1139
1183
  return super.stream(input, config);
1140
1184
  }
1185
+ streamEvents(input, options, streamOptions) {
1186
+ // Similar to `stream`, we need to pass the `config.callbacks` here,
1187
+ // otherwise the user-provided callback will get lost in `ensureLangGraphConfig`.
1188
+ const config = {
1189
+ recursionLimit: this.config?.recursionLimit,
1190
+ callbacks: this.config?.callbacks,
1191
+ ...options,
1192
+ };
1193
+ return super.streamEvents(input, config, streamOptions);
1194
+ }
1141
1195
  /**
1142
1196
  * Prepares channel specifications and managed values for graph execution.
1143
1197
  * This is an internal method used to set up the graph's communication channels
@@ -1193,6 +1247,24 @@ class Pregel extends runnables_1.Runnable {
1193
1247
  managed,
1194
1248
  };
1195
1249
  }
1250
+ /**
1251
+ * Validates the input for the graph.
1252
+ * @param input - The input to validate
1253
+ * @returns The validated input
1254
+ * @internal
1255
+ */
1256
+ async _validateInput(input) {
1257
+ return input;
1258
+ }
1259
+ /**
1260
+ * Validates the configurable options for the graph.
1261
+ * @param config - The configurable options to validate
1262
+ * @returns The validated configurable options
1263
+ * @internal
1264
+ */
1265
+ async _validateConfigurable(config) {
1266
+ return config;
1267
+ }
1196
1268
  /**
1197
1269
  * Internal iterator used by stream() to generate state updates.
1198
1270
  * This method handles the core logic of graph execution and streaming.
@@ -1214,9 +1286,11 @@ class Pregel extends runnables_1.Runnable {
1214
1286
  inputConfig.configurable === undefined) {
1215
1287
  throw new Error(`Checkpointer requires one or more of the following "configurable" keys: "thread_id", "checkpoint_ns", "checkpoint_id"`);
1216
1288
  }
1289
+ const validInput = await this._validateInput(input);
1217
1290
  const { runId, ...restConfig } = inputConfig;
1218
1291
  // assign defaults
1219
1292
  const [debug, streamMode, , outputKeys, config, interruptBefore, interruptAfter, checkpointer, store, streamModeSingle,] = this._defaults(restConfig);
1293
+ config.configurable = await this._validateConfigurable(config.configurable);
1220
1294
  const stream = new stream_js_1.IterableReadableWritableStream({
1221
1295
  modes: new Set(streamMode),
1222
1296
  });
@@ -1241,7 +1315,14 @@ class Pregel extends runnables_1.Runnable {
1241
1315
  config.writer = (chunk) => stream.push([[], "custom", chunk]);
1242
1316
  }
1243
1317
  const callbackManager = await (0, runnables_1.getCallbackManagerForConfig)(config);
1244
- const runManager = await callbackManager?.handleChainStart(this.toJSON(), (0, index_js_1._coerceToDict)(input, "input"), runId, undefined, undefined, undefined, config?.runName ?? this.getName());
1318
+ const runManager = await callbackManager?.handleChainStart(this.toJSON(), // chain
1319
+ (0, index_js_1._coerceToDict)(input, "input"), // inputs
1320
+ runId, // run_id
1321
+ undefined, // run_type
1322
+ undefined, // tags
1323
+ undefined, // metadata
1324
+ config?.runName ?? this.getName() // run_name
1325
+ );
1245
1326
  const { channelSpecs, managed } = await this.prepareSpecs(config);
1246
1327
  let loop;
1247
1328
  let loopError;
@@ -1256,7 +1337,7 @@ class Pregel extends runnables_1.Runnable {
1256
1337
  const createAndRunLoop = async () => {
1257
1338
  try {
1258
1339
  loop = await loop_js_1.PregelLoop.initialize({
1259
- input,
1340
+ input: validInput,
1260
1341
  config,
1261
1342
  checkpointer,
1262
1343
  nodes: this.nodes,
@@ -1273,7 +1354,7 @@ class Pregel extends runnables_1.Runnable {
1273
1354
  });
1274
1355
  const runner = new runner_js_1.PregelRunner({
1275
1356
  loop,
1276
- nodeFinished: config.configurable?.nodeFinished,
1357
+ nodeFinished: config.configurable?.[constants_js_1.CONFIG_KEY_NODE_FINISHED],
1277
1358
  });
1278
1359
  if (options?.subgraphs) {
1279
1360
  loop.config.configurable = {
@@ -1345,7 +1426,11 @@ class Pregel extends runnables_1.Runnable {
1345
1426
  finally {
1346
1427
  await runLoopPromise;
1347
1428
  }
1348
- await runManager?.handleChainEnd(loop?.output ?? {});
1429
+ await runManager?.handleChainEnd(loop?.output ?? {}, runId, // run_id
1430
+ undefined, // run_type
1431
+ undefined, // tags
1432
+ undefined // metadata
1433
+ );
1349
1434
  }
1350
1435
  /**
1351
1436
  * Run the graph with a single input and config.
@@ -1390,6 +1475,7 @@ class Pregel extends runnables_1.Runnable {
1390
1475
  (0, debug_js_1.printStepWrites)(step, writes, this.streamChannelsList);
1391
1476
  }
1392
1477
  },
1478
+ maxConcurrency: config.maxConcurrency,
1393
1479
  signal: config.signal,
1394
1480
  });
1395
1481
  }
@@ -1,6 +1,7 @@
1
1
  import { Runnable, RunnableConfig, RunnableFunc } from "@langchain/core/runnables";
2
2
  import { IterableReadableStream } from "@langchain/core/utils/stream";
3
3
  import { All, BaseCheckpointSaver, BaseStore, CheckpointListOptions, CheckpointTuple } from "@langchain/langgraph-checkpoint";
4
+ import type { StreamEvent } from "@langchain/core/tracers/log_stream";
4
5
  import { BaseChannel } from "../channels/base.js";
5
6
  import { PregelNode } from "./read.js";
6
7
  import { ChannelWrite } from "./write.js";
@@ -11,6 +12,7 @@ import { RetryPolicy } from "./utils/index.js";
11
12
  import { ManagedValueMapping, type ManagedValueSpec } from "../managed/base.js";
12
13
  import { LangGraphRunnableConfig } from "./runnable_types.js";
13
14
  type WriteValue = Runnable | RunnableFunc<unknown, unknown> | unknown;
15
+ type StreamEventsOptions = Parameters<Runnable["streamEvents"]>[2];
14
16
  /**
15
17
  * Utility class for working with channels in the Pregel system.
16
18
  * Provides static methods for subscribing to channels and writing to them.
@@ -310,13 +312,15 @@ export declare class Pregel<Nodes extends StrRecord<string, PregelNode>, Channel
310
312
  * @param config - Configuration for preparing the snapshot
311
313
  * @param saved - Optional saved checkpoint data
312
314
  * @param subgraphCheckpointer - Optional checkpointer for subgraphs
315
+ * @param applyPendingWrites - Whether to apply pending writes to tasks and then to channels
313
316
  * @returns A snapshot of the graph state
314
317
  * @internal
315
318
  */
316
- protected _prepareStateSnapshot({ config, saved, subgraphCheckpointer, }: {
319
+ protected _prepareStateSnapshot({ config, saved, subgraphCheckpointer, applyPendingWrites, }: {
317
320
  config: RunnableConfig;
318
321
  saved?: CheckpointTuple;
319
322
  subgraphCheckpointer?: BaseCheckpointSaver;
323
+ applyPendingWrites?: boolean;
320
324
  }): Promise<StateSnapshot>;
321
325
  /**
322
326
  * Gets the current state of the graph.
@@ -433,6 +437,13 @@ export declare class Pregel<Nodes extends StrRecord<string, PregelNode>, Channel
433
437
  * @returns An async iterable stream of graph state updates
434
438
  */
435
439
  stream(input: InputType | Command | null, options?: Partial<PregelOptions<Nodes, Channels, ConfigurableFieldType>>): Promise<IterableReadableStream<PregelOutputType>>;
440
+ streamEvents(input: InputType | Command | null, options: Partial<PregelOptions<Nodes, Channels, ConfigurableFieldType>> & {
441
+ version: "v1" | "v2";
442
+ }, streamOptions?: StreamEventsOptions): IterableReadableStream<StreamEvent>;
443
+ streamEvents(input: InputType | Command | null, options: Partial<PregelOptions<Nodes, Channels, ConfigurableFieldType>> & {
444
+ version: "v1" | "v2";
445
+ encoding: "text/event-stream";
446
+ }, streamOptions?: StreamEventsOptions): IterableReadableStream<Uint8Array>;
436
447
  /**
437
448
  * Prepares channel specifications and managed values for graph execution.
438
449
  * This is an internal method used to set up the graph's communication channels
@@ -450,6 +461,20 @@ export declare class Pregel<Nodes extends StrRecord<string, PregelNode>, Channel
450
461
  channelSpecs: Record<string, BaseChannel<unknown, unknown, unknown>>;
451
462
  managed: ManagedValueMapping;
452
463
  }>;
464
+ /**
465
+ * Validates the input for the graph.
466
+ * @param input - The input to validate
467
+ * @returns The validated input
468
+ * @internal
469
+ */
470
+ protected _validateInput(input: PregelInputType): Promise<any>;
471
+ /**
472
+ * Validates the configurable options for the graph.
473
+ * @param config - The configurable options to validate
474
+ * @returns The validated configurable options
475
+ * @internal
476
+ */
477
+ protected _validateConfigurable(config: Partial<LangGraphRunnableConfig["configurable"]>): Promise<LangGraphRunnableConfig["configurable"]>;
453
478
  /**
454
479
  * Internal iterator used by stream() to generate state updates.
455
480
  * This method handles the core logic of graph execution and streaming.
@@ -7,7 +7,7 @@ import { validateGraph, validateKeys } from "./validate.js";
7
7
  import { mapInput, readChannels } from "./io.js";
8
8
  import { printStepCheckpoint, printStepTasks, printStepWrites, tasksWithWrites, } from "./debug.js";
9
9
  import { ChannelWrite, PASSTHROUGH } from "./write.js";
10
- import { CONFIG_KEY_CHECKPOINTER, CONFIG_KEY_READ, CONFIG_KEY_SEND, ERROR, INTERRUPT, CHECKPOINT_NAMESPACE_SEPARATOR, CHECKPOINT_NAMESPACE_END, CONFIG_KEY_STREAM, CONFIG_KEY_TASK_ID, NULL_TASK_ID, INPUT, COPY, END, PUSH, } from "../constants.js";
10
+ import { CONFIG_KEY_CHECKPOINTER, CONFIG_KEY_READ, CONFIG_KEY_SEND, CONFIG_KEY_TASK_ID, ERROR, INPUT, INTERRUPT, PUSH, CHECKPOINT_NAMESPACE_SEPARATOR, CHECKPOINT_NAMESPACE_END, CONFIG_KEY_STREAM, NULL_TASK_ID, COPY, END, CONFIG_KEY_NODE_FINISHED, } from "../constants.js";
11
11
  import { GraphRecursionError, GraphValueError, InvalidUpdateError, } from "../errors.js";
12
12
  import { _prepareNextTasks, _localRead, _applyWrites, } from "./algo.js";
13
13
  import { _coerceToDict, getNewChannelVersions, patchCheckpointMap, } from "./utils/index.js";
@@ -515,10 +515,11 @@ export class Pregel extends Runnable {
515
515
  * @param config - Configuration for preparing the snapshot
516
516
  * @param saved - Optional saved checkpoint data
517
517
  * @param subgraphCheckpointer - Optional checkpointer for subgraphs
518
+ * @param applyPendingWrites - Whether to apply pending writes to tasks and then to channels
518
519
  * @returns A snapshot of the graph state
519
520
  * @internal
520
521
  */
521
- async _prepareStateSnapshot({ config, saved, subgraphCheckpointer, }) {
522
+ async _prepareStateSnapshot({ config, saved, subgraphCheckpointer, applyPendingWrites = false, }) {
522
523
  if (saved === undefined) {
523
524
  return {
524
525
  values: {},
@@ -527,20 +528,40 @@ export class Pregel extends Runnable {
527
528
  tasks: [],
528
529
  };
529
530
  }
530
- // Pass `skipManaged: true` as managed values should not be returned in get state calls.
531
- const { managed } = await this.prepareSpecs(config, { skipManaged: true });
531
+ // Create all channels
532
+ const { managed } = await this.prepareSpecs(config, {
533
+ skipManaged: true,
534
+ });
532
535
  const channels = emptyChannels(this.channels, saved.checkpoint);
533
- const nextTasks = Object.values(_prepareNextTasks(saved.checkpoint, saved.pendingWrites, this.nodes, channels, managed, saved.config, false, { step: (saved.metadata?.step ?? -1) + 1 }));
536
+ // Apply null writes first (from NULL_TASK_ID)
537
+ if (saved.pendingWrites?.length) {
538
+ const nullWrites = saved.pendingWrites
539
+ .filter(([taskId, _]) => taskId === NULL_TASK_ID)
540
+ .map(([_, channel, value]) => [String(channel), value]);
541
+ if (nullWrites.length > 0) {
542
+ _applyWrites(saved.checkpoint, channels, [
543
+ {
544
+ name: INPUT,
545
+ writes: nullWrites,
546
+ triggers: [],
547
+ },
548
+ ]);
549
+ }
550
+ }
551
+ // Prepare next tasks
552
+ const nextTasks = Object.values(_prepareNextTasks(saved.checkpoint, saved.pendingWrites, this.nodes, channels, managed, saved.config, true, { step: (saved.metadata?.step ?? -1) + 1, store: this.store }));
553
+ // Find subgraphs
534
554
  const subgraphs = await gatherIterator(this.getSubgraphsAsync());
535
555
  const parentNamespace = saved.config.configurable?.checkpoint_ns ?? "";
536
556
  const taskStates = {};
557
+ // Prepare task states for subgraphs
537
558
  for (const task of nextTasks) {
538
559
  const matchingSubgraph = subgraphs.find(([name]) => name === task.name);
539
560
  if (!matchingSubgraph) {
540
561
  continue;
541
562
  }
542
563
  // assemble checkpoint_ns for this task
543
- let taskNs = `${task.name}${CHECKPOINT_NAMESPACE_END}${task.id}`;
564
+ let taskNs = `${String(task.name)}${CHECKPOINT_NAMESPACE_END}${task.id}`;
544
565
  if (parentNamespace) {
545
566
  taskNs = `${parentNamespace}${CHECKPOINT_NAMESPACE_SEPARATOR}${taskNs}`;
546
567
  }
@@ -556,37 +577,59 @@ export class Pregel extends Runnable {
556
577
  }
557
578
  else {
558
579
  // get the state of the subgraph
559
- const config = {
580
+ const subgraphConfig = {
560
581
  configurable: {
561
582
  [CONFIG_KEY_CHECKPOINTER]: subgraphCheckpointer,
562
583
  thread_id: saved.config.configurable?.thread_id,
563
584
  checkpoint_ns: taskNs,
564
585
  },
565
586
  };
566
- taskStates[task.id] = await matchingSubgraph[1].getState(config, {
587
+ const pregel = matchingSubgraph[1];
588
+ taskStates[task.id] = await pregel.getState(subgraphConfig, {
567
589
  subgraphs: true,
568
590
  });
569
591
  }
570
592
  }
571
- // apply pending writes
572
- const nullWrites = (saved.pendingWrites ?? [])
573
- .filter((w) => w[0] === NULL_TASK_ID)
574
- .map((w) => w.slice(1));
575
- if (nullWrites.length > 0) {
576
- _applyWrites(saved.checkpoint, channels, [
577
- {
578
- name: INPUT,
579
- writes: nullWrites,
580
- triggers: [],
581
- },
582
- ]);
593
+ // Apply pending writes to tasks and then to channels if applyPendingWrites is true
594
+ if (applyPendingWrites && saved.pendingWrites?.length) {
595
+ // Map task IDs to task objects for easy lookup
596
+ const nextTaskById = Object.fromEntries(nextTasks.map((task) => [task.id, task]));
597
+ // Apply pending writes to the appropriate tasks
598
+ for (const [taskId, channel, value] of saved.pendingWrites) {
599
+ // Skip special channels and tasks not in nextTasks
600
+ if ([ERROR, INTERRUPT, SCHEDULED].includes(channel)) {
601
+ continue;
602
+ }
603
+ if (!(taskId in nextTaskById)) {
604
+ continue;
605
+ }
606
+ // Add the write to the task
607
+ nextTaskById[taskId].writes.push([String(channel), value]);
608
+ }
609
+ // Apply writes from tasks that have writes
610
+ const tasksWithWrites = nextTasks.filter((task) => task.writes.length > 0);
611
+ if (tasksWithWrites.length > 0) {
612
+ _applyWrites(saved.checkpoint, channels, tasksWithWrites);
613
+ }
583
614
  }
615
+ // Preserve thread_id from the config in metadata
616
+ let metadata = saved?.metadata;
617
+ if (metadata && saved?.config?.configurable?.thread_id) {
618
+ metadata = {
619
+ ...metadata,
620
+ thread_id: saved.config.configurable.thread_id,
621
+ };
622
+ }
623
+ // Filter next tasks - only include tasks without writes
624
+ const nextList = nextTasks
625
+ .filter((task) => task.writes.length === 0)
626
+ .map((task) => task.name);
584
627
  // assemble the state snapshot
585
628
  return {
586
629
  values: readChannels(channels, this.streamChannelsAsIs),
587
- next: nextTasks.map((task) => task.name),
630
+ next: nextList,
588
631
  tasks: tasksWithWrites(nextTasks, saved?.pendingWrites ?? [], taskStates),
589
- metadata: saved.metadata,
632
+ metadata,
590
633
  config: patchCheckpointMap(saved.config, saved.metadata),
591
634
  createdAt: saved.checkpoint.ts,
592
635
  parentConfig: saved.parentConfig,
@@ -626,6 +669,7 @@ export class Pregel extends Runnable {
626
669
  config: mergedConfig,
627
670
  saved,
628
671
  subgraphCheckpointer: options?.subgraphs ? checkpointer : undefined,
672
+ applyPendingWrites: !config.configurable?.checkpoint_id,
629
673
  });
630
674
  return snapshot;
631
675
  }
@@ -1134,6 +1178,16 @@ export class Pregel extends Runnable {
1134
1178
  };
1135
1179
  return super.stream(input, config);
1136
1180
  }
1181
+ streamEvents(input, options, streamOptions) {
1182
+ // Similar to `stream`, we need to pass the `config.callbacks` here,
1183
+ // otherwise the user-provided callback will get lost in `ensureLangGraphConfig`.
1184
+ const config = {
1185
+ recursionLimit: this.config?.recursionLimit,
1186
+ callbacks: this.config?.callbacks,
1187
+ ...options,
1188
+ };
1189
+ return super.streamEvents(input, config, streamOptions);
1190
+ }
1137
1191
  /**
1138
1192
  * Prepares channel specifications and managed values for graph execution.
1139
1193
  * This is an internal method used to set up the graph's communication channels
@@ -1189,6 +1243,24 @@ export class Pregel extends Runnable {
1189
1243
  managed,
1190
1244
  };
1191
1245
  }
1246
+ /**
1247
+ * Validates the input for the graph.
1248
+ * @param input - The input to validate
1249
+ * @returns The validated input
1250
+ * @internal
1251
+ */
1252
+ async _validateInput(input) {
1253
+ return input;
1254
+ }
1255
+ /**
1256
+ * Validates the configurable options for the graph.
1257
+ * @param config - The configurable options to validate
1258
+ * @returns The validated configurable options
1259
+ * @internal
1260
+ */
1261
+ async _validateConfigurable(config) {
1262
+ return config;
1263
+ }
1192
1264
  /**
1193
1265
  * Internal iterator used by stream() to generate state updates.
1194
1266
  * This method handles the core logic of graph execution and streaming.
@@ -1210,9 +1282,11 @@ export class Pregel extends Runnable {
1210
1282
  inputConfig.configurable === undefined) {
1211
1283
  throw new Error(`Checkpointer requires one or more of the following "configurable" keys: "thread_id", "checkpoint_ns", "checkpoint_id"`);
1212
1284
  }
1285
+ const validInput = await this._validateInput(input);
1213
1286
  const { runId, ...restConfig } = inputConfig;
1214
1287
  // assign defaults
1215
1288
  const [debug, streamMode, , outputKeys, config, interruptBefore, interruptAfter, checkpointer, store, streamModeSingle,] = this._defaults(restConfig);
1289
+ config.configurable = await this._validateConfigurable(config.configurable);
1216
1290
  const stream = new IterableReadableWritableStream({
1217
1291
  modes: new Set(streamMode),
1218
1292
  });
@@ -1237,7 +1311,14 @@ export class Pregel extends Runnable {
1237
1311
  config.writer = (chunk) => stream.push([[], "custom", chunk]);
1238
1312
  }
1239
1313
  const callbackManager = await getCallbackManagerForConfig(config);
1240
- const runManager = await callbackManager?.handleChainStart(this.toJSON(), _coerceToDict(input, "input"), runId, undefined, undefined, undefined, config?.runName ?? this.getName());
1314
+ const runManager = await callbackManager?.handleChainStart(this.toJSON(), // chain
1315
+ _coerceToDict(input, "input"), // inputs
1316
+ runId, // run_id
1317
+ undefined, // run_type
1318
+ undefined, // tags
1319
+ undefined, // metadata
1320
+ config?.runName ?? this.getName() // run_name
1321
+ );
1241
1322
  const { channelSpecs, managed } = await this.prepareSpecs(config);
1242
1323
  let loop;
1243
1324
  let loopError;
@@ -1252,7 +1333,7 @@ export class Pregel extends Runnable {
1252
1333
  const createAndRunLoop = async () => {
1253
1334
  try {
1254
1335
  loop = await PregelLoop.initialize({
1255
- input,
1336
+ input: validInput,
1256
1337
  config,
1257
1338
  checkpointer,
1258
1339
  nodes: this.nodes,
@@ -1269,7 +1350,7 @@ export class Pregel extends Runnable {
1269
1350
  });
1270
1351
  const runner = new PregelRunner({
1271
1352
  loop,
1272
- nodeFinished: config.configurable?.nodeFinished,
1353
+ nodeFinished: config.configurable?.[CONFIG_KEY_NODE_FINISHED],
1273
1354
  });
1274
1355
  if (options?.subgraphs) {
1275
1356
  loop.config.configurable = {
@@ -1341,7 +1422,11 @@ export class Pregel extends Runnable {
1341
1422
  finally {
1342
1423
  await runLoopPromise;
1343
1424
  }
1344
- await runManager?.handleChainEnd(loop?.output ?? {});
1425
+ await runManager?.handleChainEnd(loop?.output ?? {}, runId, // run_id
1426
+ undefined, // run_type
1427
+ undefined, // tags
1428
+ undefined // metadata
1429
+ );
1345
1430
  }
1346
1431
  /**
1347
1432
  * Run the graph with a single input and config.
@@ -1386,6 +1471,7 @@ export class Pregel extends Runnable {
1386
1471
  printStepWrites(step, writes, this.streamChannelsList);
1387
1472
  }
1388
1473
  },
1474
+ maxConcurrency: config.maxConcurrency,
1389
1475
  signal: config.signal,
1390
1476
  });
1391
1477
  }