@langchain/langgraph 1.1.0 → 1.1.2
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/errors.d.cts.map +1 -1
- package/dist/graph/annotation.cjs +3 -0
- package/dist/graph/annotation.cjs.map +1 -1
- package/dist/graph/annotation.d.cts +1 -0
- package/dist/graph/annotation.d.cts.map +1 -1
- package/dist/graph/annotation.d.ts +1 -0
- package/dist/graph/annotation.d.ts.map +1 -1
- package/dist/graph/annotation.js +3 -0
- package/dist/graph/annotation.js.map +1 -1
- package/dist/graph/graph.cjs +3 -3
- package/dist/graph/graph.cjs.map +1 -1
- package/dist/graph/graph.js +3 -3
- package/dist/graph/graph.js.map +1 -1
- package/dist/graph/message.d.cts +2 -2
- package/dist/graph/message.d.cts.map +1 -1
- package/dist/graph/message.d.ts +2 -2
- package/dist/graph/message.d.ts.map +1 -1
- package/dist/graph/messages_annotation.d.cts +5 -5
- package/dist/graph/messages_annotation.d.cts.map +1 -1
- package/dist/graph/messages_annotation.d.ts +5 -5
- package/dist/graph/messages_annotation.d.ts.map +1 -1
- package/dist/graph/state.cjs +98 -78
- package/dist/graph/state.cjs.map +1 -1
- package/dist/graph/state.d.cts +68 -35
- package/dist/graph/state.d.cts.map +1 -1
- package/dist/graph/state.d.ts +68 -35
- package/dist/graph/state.d.ts.map +1 -1
- package/dist/graph/state.js +99 -79
- package/dist/graph/state.js.map +1 -1
- package/dist/graph/types.cjs +41 -0
- package/dist/graph/types.cjs.map +1 -0
- package/dist/graph/types.d.cts +247 -18
- package/dist/graph/types.d.cts.map +1 -1
- package/dist/graph/types.d.ts +247 -18
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/graph/types.js +40 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/graph/zod/meta.cjs +4 -4
- package/dist/graph/zod/meta.cjs.map +1 -1
- package/dist/graph/zod/meta.js +4 -4
- package/dist/graph/zod/meta.js.map +1 -1
- package/dist/graph/zod/zod-registry.d.cts.map +1 -1
- package/dist/graph/zod/zod-registry.d.ts.map +1 -1
- package/dist/hash.cjs +1 -1
- package/dist/hash.cjs.map +1 -1
- package/dist/hash.js +1 -1
- package/dist/hash.js.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/prebuilt/agent_executor.d.cts +5 -5
- package/dist/prebuilt/agent_executor.d.cts.map +1 -1
- package/dist/prebuilt/agent_executor.d.ts +5 -5
- package/dist/prebuilt/agent_executor.d.ts.map +1 -1
- package/dist/prebuilt/react_agent_executor.cjs +12 -12
- package/dist/prebuilt/react_agent_executor.cjs.map +1 -1
- package/dist/prebuilt/react_agent_executor.d.cts +3 -3
- package/dist/prebuilt/react_agent_executor.d.cts.map +1 -1
- package/dist/prebuilt/react_agent_executor.d.ts +3 -3
- package/dist/prebuilt/react_agent_executor.d.ts.map +1 -1
- package/dist/prebuilt/react_agent_executor.js +12 -12
- package/dist/prebuilt/react_agent_executor.js.map +1 -1
- package/dist/prebuilt/tool_node.cjs +1 -1
- package/dist/prebuilt/tool_node.cjs.map +1 -1
- package/dist/prebuilt/tool_node.js +1 -1
- package/dist/prebuilt/tool_node.js.map +1 -1
- package/dist/pregel/debug.cjs +9 -9
- package/dist/pregel/debug.cjs.map +1 -1
- package/dist/pregel/debug.js +9 -9
- package/dist/pregel/debug.js.map +1 -1
- package/dist/pregel/index.cjs +44 -44
- package/dist/pregel/index.cjs.map +1 -1
- package/dist/pregel/index.js +44 -44
- package/dist/pregel/index.js.map +1 -1
- package/dist/pregel/loop.cjs +1 -1
- package/dist/pregel/loop.cjs.map +1 -1
- package/dist/pregel/loop.js +1 -1
- package/dist/pregel/loop.js.map +1 -1
- package/dist/pregel/utils/subgraph.cjs +2 -2
- package/dist/pregel/utils/subgraph.cjs.map +1 -1
- package/dist/pregel/utils/subgraph.js +2 -2
- package/dist/pregel/utils/subgraph.js.map +1 -1
- package/dist/state/schema.cjs +8 -9
- package/dist/state/schema.cjs.map +1 -1
- package/dist/state/schema.d.cts +18 -22
- package/dist/state/schema.d.cts.map +1 -1
- package/dist/state/schema.d.ts +18 -22
- package/dist/state/schema.d.ts.map +1 -1
- package/dist/state/schema.js +8 -9
- package/dist/state/schema.js.map +1 -1
- package/dist/state/values/reduced.cjs.map +1 -1
- package/dist/state/values/reduced.d.cts +1 -1
- package/dist/state/values/reduced.d.cts.map +1 -1
- package/dist/state/values/reduced.d.ts +1 -1
- package/dist/state/values/reduced.d.ts.map +1 -1
- package/dist/state/values/reduced.js.map +1 -1
- package/dist/state/values/untracked.cjs.map +1 -1
- package/dist/state/values/untracked.d.cts +4 -0
- package/dist/state/values/untracked.d.cts.map +1 -1
- package/dist/state/values/untracked.d.ts +4 -0
- package/dist/state/values/untracked.d.ts.map +1 -1
- package/dist/state/values/untracked.js.map +1 -1
- package/dist/web.d.cts +3 -3
- package/dist/web.d.ts +3 -3
- package/package.json +6 -6
package/dist/pregel/index.cjs
CHANGED
|
@@ -448,11 +448,11 @@ var Pregel = class extends PartialRunnable {
|
|
|
448
448
|
let taskNs = `${String(task.name)}${require_constants.CHECKPOINT_NAMESPACE_END}${task.id}`;
|
|
449
449
|
if (parentNamespace) taskNs = `${parentNamespace}${require_constants.CHECKPOINT_NAMESPACE_SEPARATOR}${taskNs}`;
|
|
450
450
|
if (subgraphCheckpointer === void 0) {
|
|
451
|
-
const config
|
|
451
|
+
const config = { configurable: {
|
|
452
452
|
thread_id: saved.config.configurable?.thread_id,
|
|
453
453
|
checkpoint_ns: taskNs
|
|
454
454
|
} };
|
|
455
|
-
taskStates[task.id] = config
|
|
455
|
+
taskStates[task.id] = config;
|
|
456
456
|
} else {
|
|
457
457
|
const subgraphConfig = { configurable: {
|
|
458
458
|
[require_constants.CONFIG_KEY_CHECKPOINTER]: subgraphCheckpointer,
|
|
@@ -474,8 +474,8 @@ var Pregel = class extends PartialRunnable {
|
|
|
474
474
|
if (!(taskId in nextTaskById)) continue;
|
|
475
475
|
nextTaskById[taskId].writes.push([String(channel), value]);
|
|
476
476
|
}
|
|
477
|
-
const tasksWithWrites
|
|
478
|
-
if (tasksWithWrites
|
|
477
|
+
const tasksWithWrites = nextTasks.filter((task) => task.writes.length > 0);
|
|
478
|
+
if (tasksWithWrites.length > 0) require_algo._applyWrites(saved.checkpoint, channels, tasksWithWrites, void 0, this.triggerToNodes);
|
|
479
479
|
}
|
|
480
480
|
let metadata = saved?.metadata;
|
|
481
481
|
if (metadata && saved?.config?.configurable?.thread_id) metadata = {
|
|
@@ -638,39 +638,39 @@ var Pregel = class extends PartialRunnable {
|
|
|
638
638
|
if (asNode === require_constants.COPY) {
|
|
639
639
|
if (updates.length > 1) throw new require_errors.InvalidUpdateError(`Cannot copy checkpoint with multiple updates`);
|
|
640
640
|
if (saved == null) throw new require_errors.InvalidUpdateError(`Cannot copy a non-existent checkpoint`);
|
|
641
|
-
const isCopyWithUpdates = (values
|
|
642
|
-
if (!Array.isArray(values
|
|
643
|
-
if (values
|
|
644
|
-
return values
|
|
641
|
+
const isCopyWithUpdates = (values) => {
|
|
642
|
+
if (!Array.isArray(values)) return false;
|
|
643
|
+
if (values.length === 0) return false;
|
|
644
|
+
return values.every((v) => Array.isArray(v) && v.length === 2);
|
|
645
645
|
};
|
|
646
646
|
const nextCheckpoint = require_base.createCheckpoint(checkpoint, void 0, step);
|
|
647
|
-
const nextConfig
|
|
647
|
+
const nextConfig = await checkpointer.put(saved.parentConfig ?? require_utils.patchConfigurable(saved.config, { checkpoint_id: void 0 }), nextCheckpoint, {
|
|
648
648
|
source: "fork",
|
|
649
649
|
step: step + 1,
|
|
650
650
|
parents: saved.metadata?.parents ?? {}
|
|
651
651
|
}, {});
|
|
652
652
|
if (isCopyWithUpdates(values)) {
|
|
653
|
-
const nextTasks = require_algo._prepareNextTasks(nextCheckpoint, saved.pendingWrites, this.nodes, channels, nextConfig
|
|
653
|
+
const nextTasks = require_algo._prepareNextTasks(nextCheckpoint, saved.pendingWrites, this.nodes, channels, nextConfig, false, { step: step + 2 });
|
|
654
654
|
const tasksGroupBy = Object.values(nextTasks).reduce((acc, { name, id }) => {
|
|
655
655
|
acc[name] ??= [];
|
|
656
656
|
acc[name].push({ id });
|
|
657
657
|
return acc;
|
|
658
658
|
}, {});
|
|
659
659
|
const userGroupBy = values.reduce((acc, item) => {
|
|
660
|
-
const [values
|
|
661
|
-
acc[asNode
|
|
662
|
-
const targetIdx = acc[asNode
|
|
663
|
-
const taskId = tasksGroupBy[asNode
|
|
664
|
-
acc[asNode
|
|
665
|
-
values
|
|
666
|
-
asNode
|
|
660
|
+
const [values, asNode] = item;
|
|
661
|
+
acc[asNode] ??= [];
|
|
662
|
+
const targetIdx = acc[asNode].length;
|
|
663
|
+
const taskId = tasksGroupBy[asNode]?.[targetIdx]?.id;
|
|
664
|
+
acc[asNode].push({
|
|
665
|
+
values,
|
|
666
|
+
asNode,
|
|
667
667
|
taskId
|
|
668
668
|
});
|
|
669
669
|
return acc;
|
|
670
670
|
}, {});
|
|
671
|
-
return updateSuperStep(require_index.patchCheckpointMap(nextConfig
|
|
671
|
+
return updateSuperStep(require_index.patchCheckpointMap(nextConfig, saved.metadata), Object.values(userGroupBy).flat());
|
|
672
672
|
}
|
|
673
|
-
return require_index.patchCheckpointMap(nextConfig
|
|
673
|
+
return require_index.patchCheckpointMap(nextConfig, saved.metadata);
|
|
674
674
|
}
|
|
675
675
|
if (asNode === require_constants.INPUT) {
|
|
676
676
|
if (updates.length > 1) throw new require_errors.InvalidUpdateError(`Cannot apply multiple updates when updating as input`);
|
|
@@ -682,13 +682,13 @@ var Pregel = class extends PartialRunnable {
|
|
|
682
682
|
triggers: []
|
|
683
683
|
}], checkpointer.getNextVersion.bind(this.checkpointer), this.triggerToNodes);
|
|
684
684
|
const nextStep = saved?.metadata?.step != null ? saved.metadata.step + 1 : -1;
|
|
685
|
-
const nextConfig
|
|
685
|
+
const nextConfig = await checkpointer.put(checkpointConfig, require_base.createCheckpoint(checkpoint, channels, nextStep), {
|
|
686
686
|
source: "input",
|
|
687
687
|
step: nextStep,
|
|
688
688
|
parents: saved?.metadata?.parents ?? {}
|
|
689
689
|
}, require_index.getNewChannelVersions(checkpointPreviousVersions, checkpoint.channel_versions));
|
|
690
|
-
await checkpointer.putWrites(nextConfig
|
|
691
|
-
return require_index.patchCheckpointMap(nextConfig
|
|
690
|
+
await checkpointer.putWrites(nextConfig, inputWrites, (0, _langchain_langgraph_checkpoint.uuid5)(require_constants.INPUT, checkpoint.id));
|
|
691
|
+
return require_index.patchCheckpointMap(nextConfig, saved ? saved.metadata : void 0);
|
|
692
692
|
}
|
|
693
693
|
if (config.configurable?.checkpoint_id === void 0 && saved?.pendingWrites !== void 0 && saved.pendingWrites.length > 0) {
|
|
694
694
|
const nextTasks = require_algo._prepareNextTasks(checkpoint, saved.pendingWrites, this.nodes, channels, saved.config, true, {
|
|
@@ -710,53 +710,53 @@ var Pregel = class extends PartialRunnable {
|
|
|
710
710
|
].includes(k) || nextTasks[tid] === void 0) continue;
|
|
711
711
|
nextTasks[tid].writes.push([k, v]);
|
|
712
712
|
}
|
|
713
|
-
const tasks
|
|
713
|
+
const tasks = Object.values(nextTasks).filter((task) => {
|
|
714
714
|
return task.writes.length > 0;
|
|
715
715
|
});
|
|
716
|
-
if (tasks
|
|
716
|
+
if (tasks.length > 0) require_algo._applyWrites(checkpoint, channels, tasks, void 0, this.triggerToNodes);
|
|
717
717
|
}
|
|
718
718
|
const nonNullVersion = Object.values(checkpoint.versions_seen).map((seenVersions) => {
|
|
719
719
|
return Object.values(seenVersions);
|
|
720
720
|
}).flat().find((v) => !!v);
|
|
721
721
|
const validUpdates = [];
|
|
722
722
|
if (updates.length === 1) {
|
|
723
|
-
let { values
|
|
724
|
-
if (asNode
|
|
725
|
-
else if (asNode
|
|
726
|
-
if (typeof this.inputChannels === "string" && this.nodes[this.inputChannels] !== void 0) asNode
|
|
727
|
-
} else if (asNode
|
|
723
|
+
let { values, asNode, taskId } = updates[0];
|
|
724
|
+
if (asNode === void 0 && Object.keys(this.nodes).length === 1) [asNode] = Object.keys(this.nodes);
|
|
725
|
+
else if (asNode === void 0 && nonNullVersion === void 0) {
|
|
726
|
+
if (typeof this.inputChannels === "string" && this.nodes[this.inputChannels] !== void 0) asNode = this.inputChannels;
|
|
727
|
+
} else if (asNode === void 0) {
|
|
728
728
|
const lastSeenByNode = Object.entries(checkpoint.versions_seen).map(([n, seen]) => {
|
|
729
729
|
return Object.values(seen).map((v) => {
|
|
730
730
|
return [v, n];
|
|
731
731
|
});
|
|
732
732
|
}).flat().filter(([_, v]) => v !== require_constants.INTERRUPT).sort(([aNumber], [bNumber]) => (0, _langchain_langgraph_checkpoint.compareChannelVersions)(aNumber, bNumber));
|
|
733
733
|
if (lastSeenByNode) {
|
|
734
|
-
if (lastSeenByNode.length === 1) asNode
|
|
735
|
-
else if (lastSeenByNode[lastSeenByNode.length - 1][0] !== lastSeenByNode[lastSeenByNode.length - 2][0]) asNode
|
|
734
|
+
if (lastSeenByNode.length === 1) asNode = lastSeenByNode[0][1];
|
|
735
|
+
else if (lastSeenByNode[lastSeenByNode.length - 1][0] !== lastSeenByNode[lastSeenByNode.length - 2][0]) asNode = lastSeenByNode[lastSeenByNode.length - 1][1];
|
|
736
736
|
}
|
|
737
737
|
}
|
|
738
|
-
if (asNode
|
|
738
|
+
if (asNode === void 0) throw new require_errors.InvalidUpdateError(`Ambiguous update, specify "asNode"`);
|
|
739
739
|
validUpdates.push({
|
|
740
|
-
values
|
|
741
|
-
asNode
|
|
740
|
+
values,
|
|
741
|
+
asNode,
|
|
742
742
|
taskId
|
|
743
743
|
});
|
|
744
|
-
} else for (const { asNode
|
|
745
|
-
if (asNode
|
|
744
|
+
} else for (const { asNode, values, taskId } of updates) {
|
|
745
|
+
if (asNode == null) throw new require_errors.InvalidUpdateError(`"asNode" is required when applying multiple updates`);
|
|
746
746
|
validUpdates.push({
|
|
747
|
-
values
|
|
748
|
-
asNode
|
|
747
|
+
values,
|
|
748
|
+
asNode,
|
|
749
749
|
taskId
|
|
750
750
|
});
|
|
751
751
|
}
|
|
752
752
|
const tasks = [];
|
|
753
|
-
for (const { asNode
|
|
754
|
-
if (this.nodes[asNode
|
|
755
|
-
const writers = this.nodes[asNode
|
|
756
|
-
if (!writers.length) throw new require_errors.InvalidUpdateError(`No writers found for node "${asNode
|
|
753
|
+
for (const { asNode, values, taskId } of validUpdates) {
|
|
754
|
+
if (this.nodes[asNode] === void 0) throw new require_errors.InvalidUpdateError(`Node "${asNode.toString()}" does not exist`);
|
|
755
|
+
const writers = this.nodes[asNode].getWriters();
|
|
756
|
+
if (!writers.length) throw new require_errors.InvalidUpdateError(`No writers found for node "${asNode.toString()}"`);
|
|
757
757
|
tasks.push({
|
|
758
|
-
name: asNode
|
|
759
|
-
input: values
|
|
758
|
+
name: asNode,
|
|
759
|
+
input: values,
|
|
760
760
|
proc: writers.length > 1 ? _langchain_core_runnables.RunnableSequence.from(writers, { omitSequenceTags: true }) : writers[0],
|
|
761
761
|
writes: [],
|
|
762
762
|
triggers: [require_constants.INTERRUPT],
|