@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.
- 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 +111 -25
- package/dist/pregel/index.d.ts +26 -1
- package/dist/pregel/index.js +112 -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
|
+
}
|
|
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:
|
|
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
|
}
|
|
@@ -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(),
|
|
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?.
|
|
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
|
}
|
package/dist/pregel/index.d.ts
CHANGED
|
@@ -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.
|
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
|
+
}
|
|
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:
|
|
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
|
}
|
|
@@ -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(),
|
|
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?.
|
|
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
|
}
|