@langchain/langgraph 0.2.57 → 0.2.58

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 +101 -25
  34. package/dist/pregel/index.d.ts +17 -1
  35. package/dist/pregel/index.js +102 -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":"AAOA,OAAO,EAAE,KAAK,EAAa,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMjD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAWzD,MAAM,UAAU,GAAoB;IAClC,IAAI,EAAE;QACJ,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,SAAS;KACf;IACD,KAAK,EAAE;QACL,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,SAAS;KACf;IACD,MAAM,EAAE;QACN,KAAK,EAAE,YAAY;QACnB,GAAG,EAAE,SAAS;KACf;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,IAAI,GAAG,CAAC,KAAoB,EAAE,IAAY,EAAU,EAAE,CAC1D,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AAEtC,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,QAA4C;IAE5C,OAAO,CAAC,GAAG,CACT;QACE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,wBAAwB,CAAC,EAAE;QACpD,kBAAkB,IAAI,qBAAqB;QAC3C,KAAK,IAAI,CAAC,SAAS,CACjB,MAAM,CAAC,WAAW,CAAC,aAAa,CAAQ,QAAQ,CAAC,CAAC,EAClD,IAAI,EACJ,CAAC,CACF,EAAE;KACJ,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,CAAC,aAAa,CACrB,QAA4C;AAC5C,8DAA8D;;IAE9D,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACtD,IAAI;YACF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5B,8DAA8D;SAC/D;QAAC,OAAO,KAAU,EAAE;YACnB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,iBAAiB,EAAE;gBACtD,iCAAiC;gBACjC,SAAS;aACV;iBAAM;gBACL,MAAM,KAAK,CAAC,CAAC,sDAAsD;aACpE;SACF;KACF;AACH,CAAC;AAED,MAAM,SAAS,CAAC,CAAC,aAAa,CAC5B,IAAY,EACZ,KAA4C;IAE5C,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,KAAK,EAAE;QACjE,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC;YAAE,SAAS;QAEjD,MAAM,UAAU,GAAG,MAAM;aACtB,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACvB,OAAO,OAAO,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;QAC3C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACL,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,EAAE;YACb,IAAI;YACJ,OAAO,EAAE;gBACP,EAAE;gBACF,IAAI;gBACJ,KAAK;gBACL,QAAQ;gBACR,UAAU;aACX;SACF,CAAC;KACH;AACH,CAAC;AAED,MAAM,SAAS,CAAC,CAAC,mBAAmB,CAIlC,IAAY,EACZ,KAAiE,EACjE,cAAgD;IAEhD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE;QAClD,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC;YAAE,SAAS;QACjD,MAAM;YACJ,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,EAAE;YACb,IAAI;YACJ,OAAO,EAAE;gBACP,EAAE;gBACF,IAAI;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE;oBAClC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;wBAClC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAClC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC;gBACjC,CAAC,CAAC;gBACF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtE;SACF,CAAC;KACH;AACH,CAAC;AAED,MAAM,SAAS,CAAC,CAAC,kBAAkB,CAIjC,IAAY,EACZ,MAAsB,EACtB,QAAqC,EACrC,cAAiC,EACjC,QAA4B,EAC5B,KAA4C,EAC5C,aAAuC,EACvC,YAAwC;IAExC,SAAS,YAAY,CAAC,MAAsB;QAY1C,iDAAiD;QACjD,MAAM,QAAQ,GAEV,EAAE,CAAC;QAEP,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI;YAAE,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACpE,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI;YAC7B,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAC9C,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI;YAC/B,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;QAEnD,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;YAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjE,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI;YAC/B,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;QACnD,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;YAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QACzD,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI;YAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/D,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI;YAAE,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAErD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC;IACpD,MAAM,UAAU,GAAmD,EAAE,CAAC;IAEtE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAAE,SAAS;QAEnD,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAc,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,QAAQ;YAAE,MAAM,GAAG,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;QAE/C,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;YACpB,YAAY,EAAE;gBACZ,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS;gBACzC,aAAa,EAAE,MAAM;aACtB;SACF,CAAC;KACH;IAED,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM;QACJ,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,EAAE;QACb,IAAI;QACJ,OAAO,EAAE;YACP,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;YAC5B,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC;YAC9C,QAAQ;YACR,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC;YACxD,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;SACpE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAsE,EACtE,aAAuC,EACvC,MAAuD;IAEvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAyB,EAAE;QAC/C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,CAC3C,EAAE,CAAC,CAAC,CAAC,CAAC;QAEP,MAAM,UAAU,GAAG,aAAa;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;QAC3C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,AAAD,EAAG,CAAC,CAAC,EAAE,EAAE;YACf,OAAO,CAAC,CAAC;QACX,CAAC,CAAgB,CAAC;QACpB,IAAI,KAAK,EAAE;YACT,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAc;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK;gBACL,UAAU;aACX,CAAC;SACH;QACD,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAc;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU;YACV,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,QAA8C,EAC9C,SAAmB;IAEnB,OAAO,CAAC,GAAG,CACT;QACE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,cAAc,CAAC,EAAE;QAClD,oCAAoC,IAAI,YAAY;QACpD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC3D,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,SAAgD;IAEhD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,OAAO,CAAC,GAAG,CACT;QACE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,EAAE;QAC7C,yBAAyB,IAAI,SAAS,MAAM,QAC1C,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACtB,YAAY;QACZ,SAAS;aACN,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CACjE,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,CAAC,CACF,EAAE,CACN;aACA,IAAI,CAAC,IAAI,CAAC;KACd,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,MAAsB,EACtB,SAAmB;IAEnB,8DAA8D;IAC9D,MAAM,SAAS,GAA0B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;QACrC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACvB,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;aACzB;YACD,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;KACF;IAED,OAAO,CAAC,GAAG,CACT;QACE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,EAAE;QAC9C,yBAAyB,IAAI,mBAC3B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MACzB,WAAW,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY;QACrE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;aACtB,GAAG,CACF,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CACf,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI;aAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAClB;aACA,IAAI,CAAC,IAAI,CAAC;KACd,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC"}
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
+ }
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
+ };
587
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
  }
@@ -1193,6 +1237,24 @@ class Pregel extends runnables_1.Runnable {
1193
1237
  managed,
1194
1238
  };
1195
1239
  }
1240
+ /**
1241
+ * Validates the input for the graph.
1242
+ * @param input - The input to validate
1243
+ * @returns The validated input
1244
+ * @internal
1245
+ */
1246
+ async _validateInput(input) {
1247
+ return input;
1248
+ }
1249
+ /**
1250
+ * Validates the configurable options for the graph.
1251
+ * @param config - The configurable options to validate
1252
+ * @returns The validated configurable options
1253
+ * @internal
1254
+ */
1255
+ async _validateConfigurable(config) {
1256
+ return config;
1257
+ }
1196
1258
  /**
1197
1259
  * Internal iterator used by stream() to generate state updates.
1198
1260
  * This method handles the core logic of graph execution and streaming.
@@ -1214,9 +1276,11 @@ class Pregel extends runnables_1.Runnable {
1214
1276
  inputConfig.configurable === undefined) {
1215
1277
  throw new Error(`Checkpointer requires one or more of the following "configurable" keys: "thread_id", "checkpoint_ns", "checkpoint_id"`);
1216
1278
  }
1279
+ const validInput = await this._validateInput(input);
1217
1280
  const { runId, ...restConfig } = inputConfig;
1218
1281
  // assign defaults
1219
1282
  const [debug, streamMode, , outputKeys, config, interruptBefore, interruptAfter, checkpointer, store, streamModeSingle,] = this._defaults(restConfig);
1283
+ config.configurable = await this._validateConfigurable(config.configurable);
1220
1284
  const stream = new stream_js_1.IterableReadableWritableStream({
1221
1285
  modes: new Set(streamMode),
1222
1286
  });
@@ -1241,7 +1305,14 @@ class Pregel extends runnables_1.Runnable {
1241
1305
  config.writer = (chunk) => stream.push([[], "custom", chunk]);
1242
1306
  }
1243
1307
  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());
1308
+ const runManager = await callbackManager?.handleChainStart(this.toJSON(), // chain
1309
+ (0, index_js_1._coerceToDict)(input, "input"), // inputs
1310
+ runId, // run_id
1311
+ undefined, // run_type
1312
+ undefined, // tags
1313
+ undefined, // metadata
1314
+ config?.runName ?? this.getName() // run_name
1315
+ );
1245
1316
  const { channelSpecs, managed } = await this.prepareSpecs(config);
1246
1317
  let loop;
1247
1318
  let loopError;
@@ -1256,7 +1327,7 @@ class Pregel extends runnables_1.Runnable {
1256
1327
  const createAndRunLoop = async () => {
1257
1328
  try {
1258
1329
  loop = await loop_js_1.PregelLoop.initialize({
1259
- input,
1330
+ input: validInput,
1260
1331
  config,
1261
1332
  checkpointer,
1262
1333
  nodes: this.nodes,
@@ -1273,7 +1344,7 @@ class Pregel extends runnables_1.Runnable {
1273
1344
  });
1274
1345
  const runner = new runner_js_1.PregelRunner({
1275
1346
  loop,
1276
- nodeFinished: config.configurable?.nodeFinished,
1347
+ nodeFinished: config.configurable?.[constants_js_1.CONFIG_KEY_NODE_FINISHED],
1277
1348
  });
1278
1349
  if (options?.subgraphs) {
1279
1350
  loop.config.configurable = {
@@ -1345,7 +1416,11 @@ class Pregel extends runnables_1.Runnable {
1345
1416
  finally {
1346
1417
  await runLoopPromise;
1347
1418
  }
1348
- await runManager?.handleChainEnd(loop?.output ?? {});
1419
+ await runManager?.handleChainEnd(loop?.output ?? {}, runId, // run_id
1420
+ undefined, // run_type
1421
+ undefined, // tags
1422
+ undefined // metadata
1423
+ );
1349
1424
  }
1350
1425
  /**
1351
1426
  * Run the graph with a single input and config.
@@ -1390,6 +1465,7 @@ class Pregel extends runnables_1.Runnable {
1390
1465
  (0, debug_js_1.printStepWrites)(step, writes, this.streamChannelsList);
1391
1466
  }
1392
1467
  },
1468
+ maxConcurrency: config.maxConcurrency,
1393
1469
  signal: config.signal,
1394
1470
  });
1395
1471
  }
@@ -310,13 +310,15 @@ export declare class Pregel<Nodes extends StrRecord<string, PregelNode>, Channel
310
310
  * @param config - Configuration for preparing the snapshot
311
311
  * @param saved - Optional saved checkpoint data
312
312
  * @param subgraphCheckpointer - Optional checkpointer for subgraphs
313
+ * @param applyPendingWrites - Whether to apply pending writes to tasks and then to channels
313
314
  * @returns A snapshot of the graph state
314
315
  * @internal
315
316
  */
316
- protected _prepareStateSnapshot({ config, saved, subgraphCheckpointer, }: {
317
+ protected _prepareStateSnapshot({ config, saved, subgraphCheckpointer, applyPendingWrites, }: {
317
318
  config: RunnableConfig;
318
319
  saved?: CheckpointTuple;
319
320
  subgraphCheckpointer?: BaseCheckpointSaver;
321
+ applyPendingWrites?: boolean;
320
322
  }): Promise<StateSnapshot>;
321
323
  /**
322
324
  * Gets the current state of the graph.
@@ -450,6 +452,20 @@ export declare class Pregel<Nodes extends StrRecord<string, PregelNode>, Channel
450
452
  channelSpecs: Record<string, BaseChannel<unknown, unknown, unknown>>;
451
453
  managed: ManagedValueMapping;
452
454
  }>;
455
+ /**
456
+ * Validates the input for the graph.
457
+ * @param input - The input to validate
458
+ * @returns The validated input
459
+ * @internal
460
+ */
461
+ protected _validateInput(input: PregelInputType): Promise<any>;
462
+ /**
463
+ * Validates the configurable options for the graph.
464
+ * @param config - The configurable options to validate
465
+ * @returns The validated configurable options
466
+ * @internal
467
+ */
468
+ protected _validateConfigurable(config: Partial<LangGraphRunnableConfig["configurable"]>): Promise<LangGraphRunnableConfig["configurable"]>;
453
469
  /**
454
470
  * Internal iterator used by stream() to generate state updates.
455
471
  * 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
+ }
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
+ };
583
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
  }
@@ -1189,6 +1233,24 @@ export class Pregel extends Runnable {
1189
1233
  managed,
1190
1234
  };
1191
1235
  }
1236
+ /**
1237
+ * Validates the input for the graph.
1238
+ * @param input - The input to validate
1239
+ * @returns The validated input
1240
+ * @internal
1241
+ */
1242
+ async _validateInput(input) {
1243
+ return input;
1244
+ }
1245
+ /**
1246
+ * Validates the configurable options for the graph.
1247
+ * @param config - The configurable options to validate
1248
+ * @returns The validated configurable options
1249
+ * @internal
1250
+ */
1251
+ async _validateConfigurable(config) {
1252
+ return config;
1253
+ }
1192
1254
  /**
1193
1255
  * Internal iterator used by stream() to generate state updates.
1194
1256
  * This method handles the core logic of graph execution and streaming.
@@ -1210,9 +1272,11 @@ export class Pregel extends Runnable {
1210
1272
  inputConfig.configurable === undefined) {
1211
1273
  throw new Error(`Checkpointer requires one or more of the following "configurable" keys: "thread_id", "checkpoint_ns", "checkpoint_id"`);
1212
1274
  }
1275
+ const validInput = await this._validateInput(input);
1213
1276
  const { runId, ...restConfig } = inputConfig;
1214
1277
  // assign defaults
1215
1278
  const [debug, streamMode, , outputKeys, config, interruptBefore, interruptAfter, checkpointer, store, streamModeSingle,] = this._defaults(restConfig);
1279
+ config.configurable = await this._validateConfigurable(config.configurable);
1216
1280
  const stream = new IterableReadableWritableStream({
1217
1281
  modes: new Set(streamMode),
1218
1282
  });
@@ -1237,7 +1301,14 @@ export class Pregel extends Runnable {
1237
1301
  config.writer = (chunk) => stream.push([[], "custom", chunk]);
1238
1302
  }
1239
1303
  const callbackManager = await getCallbackManagerForConfig(config);
1240
- const runManager = await callbackManager?.handleChainStart(this.toJSON(), _coerceToDict(input, "input"), runId, undefined, undefined, undefined, config?.runName ?? this.getName());
1304
+ const runManager = await callbackManager?.handleChainStart(this.toJSON(), // chain
1305
+ _coerceToDict(input, "input"), // inputs
1306
+ runId, // run_id
1307
+ undefined, // run_type
1308
+ undefined, // tags
1309
+ undefined, // metadata
1310
+ config?.runName ?? this.getName() // run_name
1311
+ );
1241
1312
  const { channelSpecs, managed } = await this.prepareSpecs(config);
1242
1313
  let loop;
1243
1314
  let loopError;
@@ -1252,7 +1323,7 @@ export class Pregel extends Runnable {
1252
1323
  const createAndRunLoop = async () => {
1253
1324
  try {
1254
1325
  loop = await PregelLoop.initialize({
1255
- input,
1326
+ input: validInput,
1256
1327
  config,
1257
1328
  checkpointer,
1258
1329
  nodes: this.nodes,
@@ -1269,7 +1340,7 @@ export class Pregel extends Runnable {
1269
1340
  });
1270
1341
  const runner = new PregelRunner({
1271
1342
  loop,
1272
- nodeFinished: config.configurable?.nodeFinished,
1343
+ nodeFinished: config.configurable?.[CONFIG_KEY_NODE_FINISHED],
1273
1344
  });
1274
1345
  if (options?.subgraphs) {
1275
1346
  loop.config.configurable = {
@@ -1341,7 +1412,11 @@ export class Pregel extends Runnable {
1341
1412
  finally {
1342
1413
  await runLoopPromise;
1343
1414
  }
1344
- await runManager?.handleChainEnd(loop?.output ?? {});
1415
+ await runManager?.handleChainEnd(loop?.output ?? {}, runId, // run_id
1416
+ undefined, // run_type
1417
+ undefined, // tags
1418
+ undefined // metadata
1419
+ );
1345
1420
  }
1346
1421
  /**
1347
1422
  * Run the graph with a single input and config.
@@ -1386,6 +1461,7 @@ export class Pregel extends Runnable {
1386
1461
  printStepWrites(step, writes, this.streamChannelsList);
1387
1462
  }
1388
1463
  },
1464
+ maxConcurrency: config.maxConcurrency,
1389
1465
  signal: config.signal,
1390
1466
  });
1391
1467
  }