@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.
- package/dist/constants.cjs +98 -12
- package/dist/constants.d.ts +51 -6
- package/dist/constants.js +96 -11
- package/dist/constants.js.map +1 -1
- package/dist/graph/graph.d.ts +1 -1
- package/dist/graph/state.cjs +90 -11
- package/dist/graph/state.d.ts +23 -5
- package/dist/graph/state.js +90 -11
- package/dist/graph/state.js.map +1 -1
- package/dist/graph/zod/index.cjs +7 -0
- package/dist/graph/zod/index.d.ts +2 -0
- package/dist/graph/zod/index.js +3 -0
- package/dist/graph/zod/index.js.map +1 -0
- package/dist/graph/zod/plugin.cjs +41 -0
- package/dist/graph/zod/plugin.d.ts +15 -0
- package/dist/graph/zod/plugin.js +39 -0
- package/dist/graph/zod/plugin.js.map +1 -0
- package/dist/graph/zod/schema.cjs +79 -0
- package/dist/graph/zod/schema.d.ts +9 -0
- package/dist/graph/zod/schema.js +73 -0
- package/dist/graph/zod/schema.js.map +1 -0
- package/dist/graph/zod/state.cjs +73 -0
- package/dist/graph/zod/state.d.ts +30 -0
- package/dist/graph/zod/state.js +64 -0
- package/dist/graph/zod/state.js.map +1 -0
- package/dist/pregel/algo.cjs +26 -3
- package/dist/pregel/algo.js +27 -4
- package/dist/pregel/algo.js.map +1 -1
- package/dist/pregel/debug.cjs +2 -1
- package/dist/pregel/debug.d.ts +1 -1
- package/dist/pregel/debug.js +2 -1
- package/dist/pregel/debug.js.map +1 -1
- package/dist/pregel/index.cjs +101 -25
- package/dist/pregel/index.d.ts +17 -1
- package/dist/pregel/index.js +102 -26
- package/dist/pregel/index.js.map +1 -1
- package/dist/pregel/loop.cjs +48 -24
- package/dist/pregel/loop.d.ts +1 -0
- package/dist/pregel/loop.js +48 -24
- package/dist/pregel/loop.js.map +1 -1
- package/dist/pregel/retry.cjs +3 -1
- package/dist/pregel/retry.js +3 -1
- package/dist/pregel/retry.js.map +1 -1
- package/dist/pregel/runner.cjs +26 -17
- package/dist/pregel/runner.d.ts +4 -0
- package/dist/pregel/runner.js +26 -17
- package/dist/pregel/runner.js.map +1 -1
- package/dist/pregel/utils/index.d.ts +2 -0
- package/dist/pregel/utils/index.js.map +1 -1
- package/package.json +22 -3
- package/zod.cjs +1 -0
- package/zod.d.cts +1 -0
- package/zod.d.ts +1 -0
- package/zod.js +1 -0
package/dist/pregel/debug.js.map
CHANGED
|
@@ -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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"}
|
package/dist/pregel/index.cjs
CHANGED
|
@@ -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
|
-
//
|
|
535
|
-
const { managed } = await this.prepareSpecs(config, {
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
591
|
+
const pregel = matchingSubgraph[1];
|
|
592
|
+
taskStates[task.id] = await pregel.getState(subgraphConfig, {
|
|
571
593
|
subgraphs: true,
|
|
572
594
|
});
|
|
573
595
|
}
|
|
574
596
|
}
|
|
575
|
-
//
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
.map((
|
|
579
|
-
|
|
580
|
-
(
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
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:
|
|
634
|
+
next: nextList,
|
|
592
635
|
tasks: (0, debug_js_1.tasksWithWrites)(nextTasks, saved?.pendingWrites ?? [], taskStates),
|
|
593
|
-
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(),
|
|
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?.
|
|
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
|
}
|
package/dist/pregel/index.d.ts
CHANGED
|
@@ -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.
|
package/dist/pregel/index.js
CHANGED
|
@@ -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,
|
|
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
|
-
//
|
|
531
|
-
const { managed } = await this.prepareSpecs(config, {
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
587
|
+
const pregel = matchingSubgraph[1];
|
|
588
|
+
taskStates[task.id] = await pregel.getState(subgraphConfig, {
|
|
567
589
|
subgraphs: true,
|
|
568
590
|
});
|
|
569
591
|
}
|
|
570
592
|
}
|
|
571
|
-
//
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
.map((
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
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:
|
|
630
|
+
next: nextList,
|
|
588
631
|
tasks: tasksWithWrites(nextTasks, saved?.pendingWrites ?? [], taskStates),
|
|
589
|
-
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(),
|
|
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?.
|
|
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
|
}
|