@langchain/langgraph 1.4.18 → 1.4.20
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.
- package/dist/channels/base.cjs +43 -9
- package/dist/channels/base.cjs.map +1 -1
- package/dist/channels/base.d.cts +11 -4
- package/dist/channels/base.d.cts.map +1 -1
- package/dist/channels/base.d.ts +11 -4
- package/dist/channels/base.d.ts.map +1 -1
- package/dist/channels/base.js +42 -10
- package/dist/channels/base.js.map +1 -1
- package/dist/pregel/index.cjs +110 -60
- package/dist/pregel/index.cjs.map +1 -1
- package/dist/pregel/index.d.cts +19 -3
- package/dist/pregel/index.d.cts.map +1 -1
- package/dist/pregel/index.d.ts +19 -3
- package/dist/pregel/index.d.ts.map +1 -1
- package/dist/pregel/index.js +111 -61
- package/dist/pregel/index.js.map +1 -1
- package/dist/pregel/loop.cjs +18 -6
- package/dist/pregel/loop.cjs.map +1 -1
- package/dist/pregel/loop.js +19 -7
- package/dist/pregel/loop.js.map +1 -1
- package/package.json +9 -9
package/dist/pregel/index.d.cts
CHANGED
|
@@ -347,13 +347,27 @@ declare class Pregel<Nodes extends StrRecord<string, PregelNode>, Channels exten
|
|
|
347
347
|
* @returns AsyncGenerator yielding tuples of [name, subgraph]
|
|
348
348
|
*/
|
|
349
349
|
getSubgraphsAsync(namespace?: string, recurse?: boolean): AsyncGenerator<[string, Pregel<any, any>]>;
|
|
350
|
+
/**
|
|
351
|
+
* The checkpointer runs and state methods use: none for `checkpointer: false`,
|
|
352
|
+
* else the one a parent lends a subgraph through the config, else this
|
|
353
|
+
* graph's own.
|
|
354
|
+
*/
|
|
355
|
+
private _resolveCheckpointer;
|
|
356
|
+
private _stateCheckpointer;
|
|
357
|
+
/**
|
|
358
|
+
* A `checkpointer: true` subgraph keeps one history per thread, stored
|
|
359
|
+
* under its namespace with the task ids removed.
|
|
360
|
+
*/
|
|
361
|
+
private _ownCheckpointConfig;
|
|
362
|
+
private _subgraphForNamespace;
|
|
350
363
|
/**
|
|
351
364
|
* Prepares a state snapshot from saved checkpoint data.
|
|
352
365
|
* This is an internal method used by getState and getStateHistory.
|
|
353
366
|
*
|
|
354
367
|
* @param config - Configuration for preparing the snapshot
|
|
355
368
|
* @param saved - Optional saved checkpoint data
|
|
356
|
-
* @param
|
|
369
|
+
* @param saver - Checkpointer the caller resolved; a subgraph's own `checkpointer` is unset or `true`
|
|
370
|
+
* @param recurse - Whether to include each subgraph task's state
|
|
357
371
|
* @param applyPendingWrites - Whether to apply pending writes to tasks and then to channels
|
|
358
372
|
* @returns A snapshot of the graph state
|
|
359
373
|
* @internal
|
|
@@ -361,12 +375,14 @@ declare class Pregel<Nodes extends StrRecord<string, PregelNode>, Channels exten
|
|
|
361
375
|
protected _prepareStateSnapshot({
|
|
362
376
|
config,
|
|
363
377
|
saved,
|
|
364
|
-
|
|
378
|
+
saver,
|
|
379
|
+
recurse,
|
|
365
380
|
applyPendingWrites
|
|
366
381
|
}: {
|
|
367
382
|
config: RunnableConfig;
|
|
368
383
|
saved?: CheckpointTuple;
|
|
369
|
-
|
|
384
|
+
saver: BaseCheckpointSaver;
|
|
385
|
+
recurse?: boolean;
|
|
370
386
|
applyPendingWrites?: boolean;
|
|
371
387
|
}): Promise<StateSnapshot>;
|
|
372
388
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/pregel/index.ts"],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/pregel/index.ts"],"mappings":"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"}
|
package/dist/pregel/index.d.ts
CHANGED
|
@@ -347,13 +347,27 @@ declare class Pregel<Nodes extends StrRecord<string, PregelNode>, Channels exten
|
|
|
347
347
|
* @returns AsyncGenerator yielding tuples of [name, subgraph]
|
|
348
348
|
*/
|
|
349
349
|
getSubgraphsAsync(namespace?: string, recurse?: boolean): AsyncGenerator<[string, Pregel<any, any>]>;
|
|
350
|
+
/**
|
|
351
|
+
* The checkpointer runs and state methods use: none for `checkpointer: false`,
|
|
352
|
+
* else the one a parent lends a subgraph through the config, else this
|
|
353
|
+
* graph's own.
|
|
354
|
+
*/
|
|
355
|
+
private _resolveCheckpointer;
|
|
356
|
+
private _stateCheckpointer;
|
|
357
|
+
/**
|
|
358
|
+
* A `checkpointer: true` subgraph keeps one history per thread, stored
|
|
359
|
+
* under its namespace with the task ids removed.
|
|
360
|
+
*/
|
|
361
|
+
private _ownCheckpointConfig;
|
|
362
|
+
private _subgraphForNamespace;
|
|
350
363
|
/**
|
|
351
364
|
* Prepares a state snapshot from saved checkpoint data.
|
|
352
365
|
* This is an internal method used by getState and getStateHistory.
|
|
353
366
|
*
|
|
354
367
|
* @param config - Configuration for preparing the snapshot
|
|
355
368
|
* @param saved - Optional saved checkpoint data
|
|
356
|
-
* @param
|
|
369
|
+
* @param saver - Checkpointer the caller resolved; a subgraph's own `checkpointer` is unset or `true`
|
|
370
|
+
* @param recurse - Whether to include each subgraph task's state
|
|
357
371
|
* @param applyPendingWrites - Whether to apply pending writes to tasks and then to channels
|
|
358
372
|
* @returns A snapshot of the graph state
|
|
359
373
|
* @internal
|
|
@@ -361,12 +375,14 @@ declare class Pregel<Nodes extends StrRecord<string, PregelNode>, Channels exten
|
|
|
361
375
|
protected _prepareStateSnapshot({
|
|
362
376
|
config,
|
|
363
377
|
saved,
|
|
364
|
-
|
|
378
|
+
saver,
|
|
379
|
+
recurse,
|
|
365
380
|
applyPendingWrites
|
|
366
381
|
}: {
|
|
367
382
|
config: RunnableConfig;
|
|
368
383
|
saved?: CheckpointTuple;
|
|
369
|
-
|
|
384
|
+
saver: BaseCheckpointSaver;
|
|
385
|
+
recurse?: boolean;
|
|
370
386
|
applyPendingWrites?: boolean;
|
|
371
387
|
}): Promise<StateSnapshot>;
|
|
372
388
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/pregel/index.ts"],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/pregel/index.ts"],"mappings":"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"}
|
package/dist/pregel/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CONFIG_KEY_CHECKPOINTER, CONFIG_KEY_CHECKPOINT_NS, CONFIG_KEY_NODE_FINISHED, CONFIG_KEY_READ, CONFIG_KEY_SEND, CONFIG_KEY_STREAM, INPUT, INTERRUPT, NULL_TASK_ID, PUSH, TASKS, isInterrupted } from "../constants.js";
|
|
2
2
|
import { GraphDrained, GraphRecursionError, GraphValueError, InvalidUpdateError } from "../errors.js";
|
|
3
|
-
import { channelsFromCheckpoint, createCheckpoint, getOnlyChannels } from "../channels/base.js";
|
|
3
|
+
import { DELTA_WRITES_VERSIONED, channelsFromCheckpoint, createCheckpoint, getOnlyChannels, isDeltaChannel, isDeltaWritesVersioned } from "../channels/base.js";
|
|
4
4
|
import { ensureLangGraphConfig, getConfig, recastCheckpointNamespace } from "./utils/config.js";
|
|
5
5
|
import { gatherIterator, patchConfigurable } from "../utils.js";
|
|
6
6
|
import { ChannelWrite, PASSTHROUGH } from "./write.js";
|
|
@@ -423,17 +423,62 @@ var Pregel = class extends PartialRunnable {
|
|
|
423
423
|
yield* this.getSubgraphs(namespace, recurse);
|
|
424
424
|
}
|
|
425
425
|
/**
|
|
426
|
+
* The checkpointer runs and state methods use: none for `checkpointer: false`,
|
|
427
|
+
* else the one a parent lends a subgraph through the config, else this
|
|
428
|
+
* graph's own.
|
|
429
|
+
*/
|
|
430
|
+
_resolveCheckpointer(config) {
|
|
431
|
+
if (this.checkpointer === false) return void 0;
|
|
432
|
+
const lent = config?.configurable?.[CONFIG_KEY_CHECKPOINTER];
|
|
433
|
+
if (lent !== void 0) return lent;
|
|
434
|
+
if (this.checkpointer === true) throw new Error("checkpointer: true cannot be used for root graphs.");
|
|
435
|
+
return this.checkpointer;
|
|
436
|
+
}
|
|
437
|
+
_stateCheckpointer(config) {
|
|
438
|
+
const checkpointer = this._resolveCheckpointer(config);
|
|
439
|
+
if (typeof checkpointer !== "object" || checkpointer === null) throw new GraphValueError("No checkpointer set", { lc_error_code: "MISSING_CHECKPOINTER" });
|
|
440
|
+
return checkpointer;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* A `checkpointer: true` subgraph keeps one history per thread, stored
|
|
444
|
+
* under its namespace with the task ids removed.
|
|
445
|
+
*/
|
|
446
|
+
_ownCheckpointConfig(config) {
|
|
447
|
+
if (this.checkpointer !== true) return config;
|
|
448
|
+
const ns = config.configurable?.["checkpoint_ns"] ?? "";
|
|
449
|
+
return {
|
|
450
|
+
...config,
|
|
451
|
+
configurable: {
|
|
452
|
+
...config.configurable,
|
|
453
|
+
[CONFIG_KEY_CHECKPOINT_NS]: ns.split("|").map((part) => part.split(":")[0]).join("|")
|
|
454
|
+
}
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* The subgraph a state method's namespaced config addresses, and the config
|
|
459
|
+
* to call it with, lending it `checkpointer`. `undefined` when the config is
|
|
460
|
+
* for this graph, comes from inside a running task, or names no declared
|
|
461
|
+
* subgraph (a dynamically created one, such as a tool-call subgraph).
|
|
462
|
+
*/
|
|
463
|
+
async _subgraphForNamespace(config, checkpointer) {
|
|
464
|
+
const checkpointNamespace = config.configurable?.checkpoint_ns ?? "";
|
|
465
|
+
if (checkpointNamespace === "" || config.configurable?.["__pregel_read"] !== void 0 || config.configurable?.["__pregel_checkpointer"] !== void 0) return;
|
|
466
|
+
const recastNamespace = recastCheckpointNamespace(checkpointNamespace);
|
|
467
|
+
for await (const [name, subgraph] of this.getSubgraphsAsync(recastNamespace, true)) if (name === recastNamespace) return [subgraph, patchConfigurable(config, { [CONFIG_KEY_CHECKPOINTER]: checkpointer })];
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
426
470
|
* Prepares a state snapshot from saved checkpoint data.
|
|
427
471
|
* This is an internal method used by getState and getStateHistory.
|
|
428
472
|
*
|
|
429
473
|
* @param config - Configuration for preparing the snapshot
|
|
430
474
|
* @param saved - Optional saved checkpoint data
|
|
431
|
-
* @param
|
|
475
|
+
* @param saver - Checkpointer the caller resolved; a subgraph's own `checkpointer` is unset or `true`
|
|
476
|
+
* @param recurse - Whether to include each subgraph task's state
|
|
432
477
|
* @param applyPendingWrites - Whether to apply pending writes to tasks and then to channels
|
|
433
478
|
* @returns A snapshot of the graph state
|
|
434
479
|
* @internal
|
|
435
480
|
*/
|
|
436
|
-
async _prepareStateSnapshot({ config, saved,
|
|
481
|
+
async _prepareStateSnapshot({ config, saved, saver, recurse = false, applyPendingWrites = false }) {
|
|
437
482
|
if (saved === void 0) return {
|
|
438
483
|
values: {},
|
|
439
484
|
next: [],
|
|
@@ -441,8 +486,9 @@ var Pregel = class extends PartialRunnable {
|
|
|
441
486
|
tasks: []
|
|
442
487
|
};
|
|
443
488
|
const channels = await channelsFromCheckpoint(this.channels, saved.checkpoint, {
|
|
444
|
-
saver
|
|
445
|
-
config: saved.config ?? config
|
|
489
|
+
saver,
|
|
490
|
+
config: saved.config ?? config,
|
|
491
|
+
deltaWritesVersioned: isDeltaWritesVersioned(saved.metadata)
|
|
446
492
|
});
|
|
447
493
|
if (saved.pendingWrites?.length) {
|
|
448
494
|
const nullWrites = saved.pendingWrites.filter(([taskId, _]) => taskId === NULL_TASK_ID).map(([_, channel, value]) => [String(channel), value]);
|
|
@@ -461,10 +507,10 @@ var Pregel = class extends PartialRunnable {
|
|
|
461
507
|
const taskStates = {};
|
|
462
508
|
for (const task of nextTasks) {
|
|
463
509
|
const matchingSubgraph = subgraphs.find(([name]) => name === task.name);
|
|
464
|
-
if (!matchingSubgraph) continue;
|
|
510
|
+
if (!matchingSubgraph || matchingSubgraph[1].checkpointer === false) continue;
|
|
465
511
|
let taskNs = `${String(task.name)}:${task.id}`;
|
|
466
512
|
if (parentNamespace) taskNs = `${parentNamespace}|${taskNs}`;
|
|
467
|
-
if (
|
|
513
|
+
if (!recurse) {
|
|
468
514
|
const config = { configurable: {
|
|
469
515
|
thread_id: saved.config.configurable?.thread_id,
|
|
470
516
|
checkpoint_ns: taskNs
|
|
@@ -472,7 +518,7 @@ var Pregel = class extends PartialRunnable {
|
|
|
472
518
|
taskStates[task.id] = config;
|
|
473
519
|
} else {
|
|
474
520
|
const subgraphConfig = { configurable: {
|
|
475
|
-
[CONFIG_KEY_CHECKPOINTER]:
|
|
521
|
+
[CONFIG_KEY_CHECKPOINTER]: saver,
|
|
476
522
|
thread_id: saved.config.configurable?.thread_id,
|
|
477
523
|
checkpoint_ns: taskNs
|
|
478
524
|
} };
|
|
@@ -520,19 +566,20 @@ var Pregel = class extends PartialRunnable {
|
|
|
520
566
|
* @throws {GraphValueError} If no checkpointer is configured
|
|
521
567
|
*/
|
|
522
568
|
async getState(config, options) {
|
|
523
|
-
const checkpointer =
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
for await (const [name, subgraph] of this.getSubgraphsAsync(recastNamespace, true)) if (name === recastNamespace) return await subgraph.getState(patchConfigurable(config, { [CONFIG_KEY_CHECKPOINTER]: checkpointer }), { subgraphs: options?.subgraphs });
|
|
569
|
+
const checkpointer = this._stateCheckpointer(config);
|
|
570
|
+
const subgraph = await this._subgraphForNamespace(config, checkpointer);
|
|
571
|
+
if (subgraph !== void 0) {
|
|
572
|
+
const [pregel, subgraphConfig] = subgraph;
|
|
573
|
+
return await pregel.getState(subgraphConfig, { subgraphs: options?.subgraphs });
|
|
529
574
|
}
|
|
530
|
-
const
|
|
531
|
-
const
|
|
575
|
+
const ownConfig = this._ownCheckpointConfig(config);
|
|
576
|
+
const mergedConfig = mergeConfigs(this.config, ownConfig);
|
|
577
|
+
const saved = await checkpointer.getTuple(ownConfig);
|
|
532
578
|
return await this._prepareStateSnapshot({
|
|
533
579
|
config: mergedConfig,
|
|
534
580
|
saved,
|
|
535
|
-
|
|
581
|
+
saver: checkpointer,
|
|
582
|
+
recurse: options?.subgraphs,
|
|
536
583
|
applyPendingWrites: !config.configurable?.checkpoint_id
|
|
537
584
|
});
|
|
538
585
|
}
|
|
@@ -550,20 +597,18 @@ var Pregel = class extends PartialRunnable {
|
|
|
550
597
|
* @throws {Error} If no checkpointer is configured
|
|
551
598
|
*/
|
|
552
599
|
async *getStateHistory(config, options) {
|
|
553
|
-
const checkpointer =
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
yield* pregel.getStateHistory(patchConfigurable(config, { [CONFIG_KEY_CHECKPOINTER]: checkpointer }), options);
|
|
560
|
-
return;
|
|
561
|
-
}
|
|
600
|
+
const checkpointer = this._stateCheckpointer(config);
|
|
601
|
+
const subgraph = await this._subgraphForNamespace(config, checkpointer);
|
|
602
|
+
if (subgraph !== void 0) {
|
|
603
|
+
const [pregel, subgraphConfig] = subgraph;
|
|
604
|
+
yield* pregel.getStateHistory(subgraphConfig, options);
|
|
605
|
+
return;
|
|
562
606
|
}
|
|
563
|
-
const mergedConfig = mergeConfigs(this.config, config, { configurable: { checkpoint_ns:
|
|
607
|
+
const mergedConfig = this._ownCheckpointConfig(mergeConfigs(this.config, config, { configurable: { checkpoint_ns: config.configurable?.checkpoint_ns ?? "" } }));
|
|
564
608
|
for await (const checkpointTuple of checkpointer.list(mergedConfig, options)) yield this._prepareStateSnapshot({
|
|
565
609
|
config: checkpointTuple.config,
|
|
566
|
-
saved: checkpointTuple
|
|
610
|
+
saved: checkpointTuple,
|
|
611
|
+
saver: checkpointer
|
|
567
612
|
});
|
|
568
613
|
}
|
|
569
614
|
/**
|
|
@@ -583,18 +628,18 @@ var Pregel = class extends PartialRunnable {
|
|
|
583
628
|
* @throws {InvalidUpdateError} If the update cannot be attributed to a node or an update can be only applied in sequence.
|
|
584
629
|
*/
|
|
585
630
|
async bulkUpdateState(startConfig, supersteps) {
|
|
586
|
-
const checkpointer =
|
|
587
|
-
if (!checkpointer) throw new GraphValueError("No checkpointer set", { lc_error_code: "MISSING_CHECKPOINTER" });
|
|
631
|
+
const checkpointer = this._stateCheckpointer(startConfig);
|
|
588
632
|
if (supersteps.length === 0) throw new Error("No supersteps provided");
|
|
589
633
|
if (supersteps.some((s) => s.updates.length === 0)) throw new Error("No updates provided");
|
|
590
|
-
const
|
|
591
|
-
if (
|
|
592
|
-
const
|
|
593
|
-
|
|
594
|
-
throw new Error(`Subgraph "${recastNamespace}" not found`);
|
|
634
|
+
const subgraph = await this._subgraphForNamespace(startConfig, checkpointer);
|
|
635
|
+
if (subgraph !== void 0) {
|
|
636
|
+
const [pregel, subgraphConfig] = subgraph;
|
|
637
|
+
return await pregel.bulkUpdateState(subgraphConfig, supersteps);
|
|
595
638
|
}
|
|
639
|
+
const checkpointNamespace = startConfig.configurable?.checkpoint_ns ?? "";
|
|
640
|
+
if (checkpointNamespace !== "" && startConfig.configurable?.["__pregel_read"] === void 0 && startConfig.configurable?.["__pregel_checkpointer"] === void 0) throw new Error(`Subgraph "${recastCheckpointNamespace(checkpointNamespace)}" not found`);
|
|
596
641
|
const updateSuperStep = async (inputConfig, updates) => {
|
|
597
|
-
const config = this.config ? mergeConfigs(this.config, inputConfig) : inputConfig;
|
|
642
|
+
const config = this._ownCheckpointConfig(this.config ? mergeConfigs(this.config, inputConfig) : inputConfig);
|
|
598
643
|
const saved = await checkpointer.getTuple(config);
|
|
599
644
|
const checkpoint = saved !== void 0 ? copyCheckpoint(saved.checkpoint) : emptyCheckpoint();
|
|
600
645
|
const checkpointPreviousVersions = { ...saved?.checkpoint.channel_versions };
|
|
@@ -608,18 +653,22 @@ var Pregel = class extends PartialRunnable {
|
|
|
608
653
|
...checkpointMetadata
|
|
609
654
|
};
|
|
610
655
|
}
|
|
656
|
+
const deltaWritesVersioned = Object.values(this.channels).some(isDeltaChannel) && (saved === void 0 || isDeltaWritesVersioned(saved.metadata));
|
|
657
|
+
const versionedMetadata = deltaWritesVersioned ? { [DELTA_WRITES_VERSIONED]: true } : {};
|
|
611
658
|
const { values, asNode } = updates[0];
|
|
612
659
|
if (values == null && asNode === void 0) {
|
|
613
660
|
if (updates.length > 1) throw new InvalidUpdateError(`Cannot create empty checkpoint with multiple updates`);
|
|
614
661
|
return patchCheckpointMap(await checkpointer.put(checkpointConfig, createCheckpoint(checkpoint, void 0, step), {
|
|
615
662
|
source: "update",
|
|
616
663
|
step: step + 1,
|
|
617
|
-
parents: saved?.metadata?.parents ?? {}
|
|
664
|
+
parents: saved?.metadata?.parents ?? {},
|
|
665
|
+
...versionedMetadata
|
|
618
666
|
}, {}), saved ? saved.metadata : void 0);
|
|
619
667
|
}
|
|
620
668
|
const channels = await channelsFromCheckpoint(this.channels, checkpoint, {
|
|
621
669
|
saver: checkpointer,
|
|
622
|
-
config: saved?.config ?? checkpointConfig
|
|
670
|
+
config: saved?.config ?? checkpointConfig,
|
|
671
|
+
deltaWritesVersioned
|
|
623
672
|
});
|
|
624
673
|
if (values === null && asNode === "__end__") {
|
|
625
674
|
if (updates.length > 1) throw new InvalidUpdateError(`Cannot apply multiple updates when clearing state`);
|
|
@@ -646,11 +695,13 @@ var Pregel = class extends PartialRunnable {
|
|
|
646
695
|
}
|
|
647
696
|
_applyWrites(checkpoint, channels, Object.values(nextTasks), checkpointer.getNextVersion.bind(checkpointer), this.triggerToNodes);
|
|
648
697
|
}
|
|
698
|
+
const { [DELTA_WRITES_VERSIONED]: _carried, ...endMetadata } = checkpointMetadata;
|
|
649
699
|
return patchCheckpointMap(await checkpointer.put(checkpointConfig, createCheckpoint(checkpoint, channels, step), {
|
|
650
|
-
...
|
|
700
|
+
...endMetadata,
|
|
651
701
|
source: "update",
|
|
652
702
|
step: step + 1,
|
|
653
|
-
parents: saved?.metadata?.parents ?? {}
|
|
703
|
+
parents: saved?.metadata?.parents ?? {},
|
|
704
|
+
...versionedMetadata
|
|
654
705
|
}, getNewChannelVersions(checkpointPreviousVersions, checkpoint.channel_versions)), saved ? saved.metadata : void 0);
|
|
655
706
|
}
|
|
656
707
|
if (asNode === "__copy__") {
|
|
@@ -665,7 +716,8 @@ var Pregel = class extends PartialRunnable {
|
|
|
665
716
|
const nextConfig = await checkpointer.put(saved.parentConfig ?? patchConfigurable(saved.config, { checkpoint_id: void 0 }), nextCheckpoint, {
|
|
666
717
|
source: "fork",
|
|
667
718
|
step: step + 1,
|
|
668
|
-
parents: saved.metadata?.parents ?? {}
|
|
719
|
+
parents: saved.metadata?.parents ?? {},
|
|
720
|
+
...versionedMetadata
|
|
669
721
|
}, {});
|
|
670
722
|
if (isCopyWithUpdates(values)) {
|
|
671
723
|
const nextTasks = _prepareNextTasks(nextCheckpoint, saved.pendingWrites, this.nodes, channels, nextConfig, false, { step: step + 2 });
|
|
@@ -698,12 +750,13 @@ var Pregel = class extends PartialRunnable {
|
|
|
698
750
|
name: INPUT,
|
|
699
751
|
writes: inputWrites,
|
|
700
752
|
triggers: []
|
|
701
|
-
}], checkpointer.getNextVersion.bind(
|
|
753
|
+
}], checkpointer.getNextVersion.bind(checkpointer), this.triggerToNodes);
|
|
702
754
|
const nextStep = saved?.metadata?.step != null ? saved.metadata.step + 1 : -1;
|
|
703
755
|
const nextConfig = await checkpointer.put(checkpointConfig, createCheckpoint(checkpoint, channels, nextStep), {
|
|
704
756
|
source: "input",
|
|
705
757
|
step: nextStep,
|
|
706
|
-
parents: saved?.metadata?.parents ?? {}
|
|
758
|
+
parents: saved?.metadata?.parents ?? {},
|
|
759
|
+
...versionedMetadata
|
|
707
760
|
}, getNewChannelVersions(checkpointPreviousVersions, checkpoint.channel_versions));
|
|
708
761
|
await checkpointer.putWrites(nextConfig, inputWrites, uuid5(INPUT, checkpoint.id));
|
|
709
762
|
return patchCheckpointMap(nextConfig, saved ? saved.metadata : void 0);
|
|
@@ -715,11 +768,11 @@ var Pregel = class extends PartialRunnable {
|
|
|
715
768
|
step: (saved.metadata?.step ?? -1) + 1
|
|
716
769
|
});
|
|
717
770
|
const nullWrites = (saved.pendingWrites ?? []).filter((w) => w[0] === NULL_TASK_ID).map((w) => w.slice(1));
|
|
718
|
-
if (nullWrites.length > 0) _applyWrites(
|
|
771
|
+
if (nullWrites.length > 0) _applyWrites(checkpoint, channels, [{
|
|
719
772
|
name: INPUT,
|
|
720
773
|
writes: nullWrites,
|
|
721
774
|
triggers: []
|
|
722
|
-
}],
|
|
775
|
+
}], checkpointer.getNextVersion.bind(checkpointer), this.triggerToNodes);
|
|
723
776
|
for (const [tid, k, v] of saved.pendingWrites) {
|
|
724
777
|
if ([
|
|
725
778
|
"__error__",
|
|
@@ -731,7 +784,7 @@ var Pregel = class extends PartialRunnable {
|
|
|
731
784
|
const tasks = Object.values(nextTasks).filter((task) => {
|
|
732
785
|
return task.writes.length > 0;
|
|
733
786
|
});
|
|
734
|
-
if (tasks.length > 0) _applyWrites(checkpoint, channels, tasks,
|
|
787
|
+
if (tasks.length > 0) _applyWrites(checkpoint, channels, tasks, checkpointer.getNextVersion.bind(checkpointer), this.triggerToNodes);
|
|
735
788
|
}
|
|
736
789
|
const nonNullVersion = Object.values(checkpoint.versions_seen).map((seenVersions) => {
|
|
737
790
|
return Object.values(seenVersions);
|
|
@@ -768,7 +821,7 @@ var Pregel = class extends PartialRunnable {
|
|
|
768
821
|
});
|
|
769
822
|
}
|
|
770
823
|
const tasks = [];
|
|
771
|
-
for (const { asNode, values, taskId } of validUpdates) {
|
|
824
|
+
for (const [i, { asNode, values, taskId }] of validUpdates.entries()) {
|
|
772
825
|
if (this.nodes[asNode] === void 0) throw new InvalidUpdateError(`Node "${asNode.toString()}" does not exist`);
|
|
773
826
|
const writers = this.nodes[asNode].getWriters();
|
|
774
827
|
if (!writers.length) throw new InvalidUpdateError(`No writers found for node "${asNode.toString()}"`);
|
|
@@ -778,7 +831,7 @@ var Pregel = class extends PartialRunnable {
|
|
|
778
831
|
proc: writers.length > 1 ? RunnableSequence.from(writers, { omitSequenceTags: true }) : writers[0],
|
|
779
832
|
writes: [],
|
|
780
833
|
triggers: [INTERRUPT],
|
|
781
|
-
id: taskId ?? uuid5("__interrupt__"
|
|
834
|
+
id: taskId ?? uuid5(i === 0 ? "__interrupt__" : `__interrupt__:${i}`, checkpoint.id),
|
|
782
835
|
writers: []
|
|
783
836
|
});
|
|
784
837
|
}
|
|
@@ -796,12 +849,17 @@ var Pregel = class extends PartialRunnable {
|
|
|
796
849
|
const channelWrites = task.writes.filter((w) => w[0] !== PUSH);
|
|
797
850
|
if (saved !== void 0 && channelWrites.length > 0) await checkpointer.putWrites(checkpointConfig, channelWrites, task.id);
|
|
798
851
|
}
|
|
799
|
-
_applyWrites(checkpoint, channels, tasks, checkpointer.getNextVersion.bind(
|
|
852
|
+
_applyWrites(checkpoint, channels, tasks, checkpointer.getNextVersion.bind(checkpointer), this.triggerToNodes);
|
|
853
|
+
const channelsToSnapshot = /* @__PURE__ */ new Set();
|
|
854
|
+
if (saved === void 0) {
|
|
855
|
+
for (const [k, ch] of Object.entries(channels)) if (isDeltaChannel(ch) && checkpoint.channel_versions[k] !== void 0) channelsToSnapshot.add(k);
|
|
856
|
+
}
|
|
800
857
|
const newVersions = getNewChannelVersions(checkpointPreviousVersions, checkpoint.channel_versions);
|
|
801
|
-
const nextConfig = await checkpointer.put(checkpointConfig, createCheckpoint(checkpoint, channels, step + 1), {
|
|
858
|
+
const nextConfig = await checkpointer.put(checkpointConfig, createCheckpoint(checkpoint, channels, step + 1, { channelsToSnapshot }), {
|
|
802
859
|
source: "update",
|
|
803
860
|
step: step + 1,
|
|
804
|
-
parents: saved?.metadata?.parents ?? {}
|
|
861
|
+
parents: saved?.metadata?.parents ?? {},
|
|
862
|
+
...versionedMetadata
|
|
805
863
|
}, newVersions);
|
|
806
864
|
for (const task of tasks) {
|
|
807
865
|
const pushWrites = task.writes.filter((w) => w[0] === PUSH);
|
|
@@ -876,11 +934,7 @@ var Pregel = class extends PartialRunnable {
|
|
|
876
934
|
else defaultStreamMode = this.streamMode;
|
|
877
935
|
streamModeSingle = true;
|
|
878
936
|
}
|
|
879
|
-
|
|
880
|
-
if (this.checkpointer === false) defaultCheckpointer = void 0;
|
|
881
|
-
else if (config !== void 0 && config.configurable?.["__pregel_checkpointer"] !== void 0) defaultCheckpointer = config.configurable[CONFIG_KEY_CHECKPOINTER];
|
|
882
|
-
else if (this.checkpointer === true) throw new Error("checkpointer: true cannot be used for root graphs.");
|
|
883
|
-
else defaultCheckpointer = this.checkpointer;
|
|
937
|
+
const defaultCheckpointer = this._resolveCheckpointer(config);
|
|
884
938
|
const defaultStore = config.store ?? this.store;
|
|
885
939
|
const defaultCache = config.cache ?? this.cache;
|
|
886
940
|
if (config.durability != null && config.checkpointDuring != null) throw new Error("Cannot use both `durability` and `checkpointDuring` at the same time.");
|
|
@@ -1020,11 +1074,7 @@ var Pregel = class extends PartialRunnable {
|
|
|
1020
1074
|
if (typeof config.context !== "undefined") config.context = await this._validateContext(config.context);
|
|
1021
1075
|
else config.configurable = await this._validateContext(config.configurable);
|
|
1022
1076
|
const stream = new IterableReadableWritableStream({ modes: new Set(streamMode) });
|
|
1023
|
-
|
|
1024
|
-
config.configurable ??= {};
|
|
1025
|
-
const ns = config.configurable["checkpoint_ns"] ?? "";
|
|
1026
|
-
config.configurable[CONFIG_KEY_CHECKPOINT_NS] = ns.split("|").map((part) => part.split(":")[0]).join("|");
|
|
1027
|
-
}
|
|
1077
|
+
config.configurable = this._ownCheckpointConfig(config).configurable;
|
|
1028
1078
|
if (streamMode.includes("messages")) {
|
|
1029
1079
|
const messageStreamer = isV3 ? new StreamProtocolMessagesHandler((chunk) => stream.push(chunk)) : new StreamMessagesHandler((chunk) => stream.push(chunk));
|
|
1030
1080
|
const { callbacks } = config;
|