@langchain/langgraph 0.4.5 → 0.4.7
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/CHANGELOG.md +20 -0
- package/dist/channels/base.cjs +33 -7
- package/dist/channels/base.d.ts +1 -0
- package/dist/channels/base.js +33 -8
- package/dist/channels/base.js.map +1 -1
- package/dist/graph/zod/meta.d.ts +0 -1
- package/dist/graph/zod/meta.js.map +1 -1
- package/dist/graph/zod/zod-registry.d.ts +10 -2
- package/dist/graph/zod/zod-registry.js.map +1 -1
- package/dist/pregel/algo.cjs +59 -49
- package/dist/pregel/algo.js +60 -50
- package/dist/pregel/algo.js.map +1 -1
- package/dist/pregel/debug.cjs +25 -3
- package/dist/pregel/debug.d.ts +1 -1
- package/dist/pregel/debug.js +25 -3
- package/dist/pregel/debug.js.map +1 -1
- package/dist/pregel/index.cjs +2 -6
- package/dist/pregel/index.d.ts +1 -1
- package/dist/pregel/index.js +3 -7
- package/dist/pregel/index.js.map +1 -1
- package/dist/pregel/loop.cjs +16 -2
- package/dist/pregel/loop.js +17 -3
- package/dist/pregel/loop.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @langchain/langgraph
|
|
2
2
|
|
|
3
|
+
## 0.4.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 60e9258: fix(langgraph): task result from stream mode debug / tasks should match format from getStateHistory / getState
|
|
8
|
+
- 07a5b2f: fix(langgraph): avoid accepting incorrect keys in withLangGraph
|
|
9
|
+
- Updated dependencies [b5f14d0]
|
|
10
|
+
- @langchain/langgraph-sdk@0.0.111
|
|
11
|
+
|
|
12
|
+
## 0.4.6
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 5f1db81: fix(langgraph): `withConfig` should accept `context`
|
|
17
|
+
- c53ca47: Avoid iterating on channels if no managed values are present
|
|
18
|
+
- a3707fb: fix(langgraph): allow `updateState` after resuming from an interrupt
|
|
19
|
+
- Updated dependencies [e8b4540]
|
|
20
|
+
- Updated dependencies [9c57526]
|
|
21
|
+
- @langchain/langgraph-sdk@0.0.109
|
|
22
|
+
|
|
3
23
|
## 0.4.5
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/dist/channels/base.cjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BaseChannel = void 0;
|
|
4
4
|
exports.isBaseChannel = isBaseChannel;
|
|
5
|
+
exports.getOnlyChannels = getOnlyChannels;
|
|
5
6
|
exports.emptyChannels = emptyChannels;
|
|
6
7
|
exports.createCheckpoint = createCheckpoint;
|
|
7
8
|
const langgraph_checkpoint_1 = require("@langchain/langgraph-checkpoint");
|
|
@@ -70,15 +71,32 @@ class BaseChannel {
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
exports.BaseChannel = BaseChannel;
|
|
74
|
+
const IS_ONLY_BASE_CHANNEL = Symbol.for("LG_IS_ONLY_BASE_CHANNEL");
|
|
75
|
+
function getOnlyChannels(channels) {
|
|
76
|
+
// @ts-expect-error - we know it's a record of base channels
|
|
77
|
+
if (channels[IS_ONLY_BASE_CHANNEL] === true)
|
|
78
|
+
return channels;
|
|
79
|
+
const newChannels = {};
|
|
80
|
+
for (const k in channels) {
|
|
81
|
+
if (!Object.prototype.hasOwnProperty.call(channels, k))
|
|
82
|
+
continue;
|
|
83
|
+
const value = channels[k];
|
|
84
|
+
if (isBaseChannel(value))
|
|
85
|
+
newChannels[k] = value;
|
|
86
|
+
}
|
|
87
|
+
Object.assign(newChannels, { [IS_ONLY_BASE_CHANNEL]: true });
|
|
88
|
+
return newChannels;
|
|
89
|
+
}
|
|
73
90
|
function emptyChannels(channels, checkpoint) {
|
|
74
|
-
const filteredChannels =
|
|
91
|
+
const filteredChannels = getOnlyChannels(channels);
|
|
75
92
|
const newChannels = {};
|
|
76
93
|
for (const k in filteredChannels) {
|
|
77
|
-
if (Object.prototype.hasOwnProperty.call(filteredChannels, k))
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
94
|
+
if (!Object.prototype.hasOwnProperty.call(filteredChannels, k))
|
|
95
|
+
continue;
|
|
96
|
+
const channelValue = checkpoint.channel_values[k];
|
|
97
|
+
newChannels[k] = filteredChannels[k].fromCheckpoint(channelValue);
|
|
81
98
|
}
|
|
99
|
+
Object.assign(newChannels, { [IS_ONLY_BASE_CHANNEL]: true });
|
|
82
100
|
return newChannels;
|
|
83
101
|
}
|
|
84
102
|
function createCheckpoint(checkpoint, channels, step, options) {
|
|
@@ -89,7 +107,9 @@ function createCheckpoint(checkpoint, channels, step, options) {
|
|
|
89
107
|
}
|
|
90
108
|
else {
|
|
91
109
|
values = {};
|
|
92
|
-
for (const k
|
|
110
|
+
for (const k in channels) {
|
|
111
|
+
if (!Object.prototype.hasOwnProperty.call(channels, k))
|
|
112
|
+
continue;
|
|
93
113
|
try {
|
|
94
114
|
values[k] = channels[k].checkpoint();
|
|
95
115
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -104,13 +124,19 @@ function createCheckpoint(checkpoint, channels, step, options) {
|
|
|
104
124
|
}
|
|
105
125
|
}
|
|
106
126
|
}
|
|
127
|
+
const newVersionsSeen = {};
|
|
128
|
+
for (const k in checkpoint.versions_seen) {
|
|
129
|
+
if (!Object.prototype.hasOwnProperty.call(checkpoint.versions_seen, k))
|
|
130
|
+
continue;
|
|
131
|
+
newVersionsSeen[k] = { ...checkpoint.versions_seen[k] };
|
|
132
|
+
}
|
|
107
133
|
return {
|
|
108
134
|
v: 4,
|
|
109
135
|
id: options?.id ?? (0, langgraph_checkpoint_1.uuid6)(step),
|
|
110
136
|
ts: new Date().toISOString(),
|
|
111
137
|
channel_values: values,
|
|
112
138
|
channel_versions: { ...checkpoint.channel_versions },
|
|
113
|
-
versions_seen:
|
|
139
|
+
versions_seen: newVersionsSeen,
|
|
114
140
|
};
|
|
115
141
|
}
|
|
116
142
|
//# sourceMappingURL=base.js.map
|
package/dist/channels/base.d.ts
CHANGED
|
@@ -68,6 +68,7 @@ export declare abstract class BaseChannel<ValueType = unknown, UpdateType = unkn
|
|
|
68
68
|
*/
|
|
69
69
|
isAvailable(): boolean;
|
|
70
70
|
}
|
|
71
|
+
export declare function getOnlyChannels(channels: Record<string, BaseChannel>): Record<string, BaseChannel>;
|
|
71
72
|
export declare function emptyChannels<Cc extends Record<string, BaseChannel>>(channels: Cc, checkpoint: ReadonlyCheckpoint): Cc;
|
|
72
73
|
export declare function createCheckpoint<ValueType>(checkpoint: ReadonlyCheckpoint, channels: Record<string, BaseChannel<ValueType>> | undefined, step: number, options?: {
|
|
73
74
|
id?: string;
|
package/dist/channels/base.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { uuid6, } from "@langchain/langgraph-checkpoint";
|
|
2
2
|
import { EmptyChannelError } from "../errors.js";
|
|
3
3
|
export function isBaseChannel(obj) {
|
|
4
4
|
return obj != null && obj.lg_is_channel === true;
|
|
@@ -63,15 +63,32 @@ export class BaseChannel {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
+
const IS_ONLY_BASE_CHANNEL = Symbol.for("LG_IS_ONLY_BASE_CHANNEL");
|
|
67
|
+
export function getOnlyChannels(channels) {
|
|
68
|
+
// @ts-expect-error - we know it's a record of base channels
|
|
69
|
+
if (channels[IS_ONLY_BASE_CHANNEL] === true)
|
|
70
|
+
return channels;
|
|
71
|
+
const newChannels = {};
|
|
72
|
+
for (const k in channels) {
|
|
73
|
+
if (!Object.prototype.hasOwnProperty.call(channels, k))
|
|
74
|
+
continue;
|
|
75
|
+
const value = channels[k];
|
|
76
|
+
if (isBaseChannel(value))
|
|
77
|
+
newChannels[k] = value;
|
|
78
|
+
}
|
|
79
|
+
Object.assign(newChannels, { [IS_ONLY_BASE_CHANNEL]: true });
|
|
80
|
+
return newChannels;
|
|
81
|
+
}
|
|
66
82
|
export function emptyChannels(channels, checkpoint) {
|
|
67
|
-
const filteredChannels =
|
|
83
|
+
const filteredChannels = getOnlyChannels(channels);
|
|
68
84
|
const newChannels = {};
|
|
69
85
|
for (const k in filteredChannels) {
|
|
70
|
-
if (Object.prototype.hasOwnProperty.call(filteredChannels, k))
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
86
|
+
if (!Object.prototype.hasOwnProperty.call(filteredChannels, k))
|
|
87
|
+
continue;
|
|
88
|
+
const channelValue = checkpoint.channel_values[k];
|
|
89
|
+
newChannels[k] = filteredChannels[k].fromCheckpoint(channelValue);
|
|
74
90
|
}
|
|
91
|
+
Object.assign(newChannels, { [IS_ONLY_BASE_CHANNEL]: true });
|
|
75
92
|
return newChannels;
|
|
76
93
|
}
|
|
77
94
|
export function createCheckpoint(checkpoint, channels, step, options) {
|
|
@@ -82,7 +99,9 @@ export function createCheckpoint(checkpoint, channels, step, options) {
|
|
|
82
99
|
}
|
|
83
100
|
else {
|
|
84
101
|
values = {};
|
|
85
|
-
for (const k
|
|
102
|
+
for (const k in channels) {
|
|
103
|
+
if (!Object.prototype.hasOwnProperty.call(channels, k))
|
|
104
|
+
continue;
|
|
86
105
|
try {
|
|
87
106
|
values[k] = channels[k].checkpoint();
|
|
88
107
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -97,13 +116,19 @@ export function createCheckpoint(checkpoint, channels, step, options) {
|
|
|
97
116
|
}
|
|
98
117
|
}
|
|
99
118
|
}
|
|
119
|
+
const newVersionsSeen = {};
|
|
120
|
+
for (const k in checkpoint.versions_seen) {
|
|
121
|
+
if (!Object.prototype.hasOwnProperty.call(checkpoint.versions_seen, k))
|
|
122
|
+
continue;
|
|
123
|
+
newVersionsSeen[k] = { ...checkpoint.versions_seen[k] };
|
|
124
|
+
}
|
|
100
125
|
return {
|
|
101
126
|
v: 4,
|
|
102
127
|
id: options?.id ?? uuid6(step),
|
|
103
128
|
ts: new Date().toISOString(),
|
|
104
129
|
channel_values: values,
|
|
105
130
|
channel_versions: { ...checkpoint.channel_versions },
|
|
106
|
-
versions_seen:
|
|
131
|
+
versions_seen: newVersionsSeen,
|
|
107
132
|
};
|
|
108
133
|
}
|
|
109
134
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/channels/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/channels/base.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/zod/meta.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/graph/zod/meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EAEvB,aAAa,EACb,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/graph/zod/meta.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,9 @@ import { type ReducedZodChannel, type SchemaMeta, type SchemaMetaRegistry } from
|
|
|
12
12
|
* @template Meta - The type of metadata associated with each schema.
|
|
13
13
|
* @template Schema - The Zod schema type.
|
|
14
14
|
*/
|
|
15
|
-
export declare class LanggraphZodMetaRegistry<Meta extends SchemaMeta = SchemaMeta, Schema extends $ZodType = $ZodType> extends $ZodRegistry<Meta
|
|
15
|
+
export declare class LanggraphZodMetaRegistry<Meta extends SchemaMeta = SchemaMeta, Schema extends $ZodType = $ZodType> extends $ZodRegistry<Meta & {
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
}, Schema> {
|
|
16
18
|
protected parent: SchemaMetaRegistry;
|
|
17
19
|
/**
|
|
18
20
|
* Creates a new LanggraphZodMetaRegistry instance.
|
|
@@ -20,7 +22,13 @@ export declare class LanggraphZodMetaRegistry<Meta extends SchemaMeta = SchemaMe
|
|
|
20
22
|
* @param parent - The base SchemaMetaRegistry to use for metadata storage.
|
|
21
23
|
*/
|
|
22
24
|
constructor(parent: SchemaMetaRegistry);
|
|
23
|
-
add<S extends Schema>(schema: S, ..._meta: undefined extends Meta
|
|
25
|
+
add<S extends Schema>(schema: S, ..._meta: undefined extends Meta & {
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
} ? [$replace<Meta & {
|
|
28
|
+
[key: string]: unknown;
|
|
29
|
+
}, S>?] : [$replace<Meta & {
|
|
30
|
+
[key: string]: unknown;
|
|
31
|
+
}, S>]): this;
|
|
24
32
|
}
|
|
25
33
|
declare module "zod/v4" {
|
|
26
34
|
interface ZodType<out Output = unknown, out Input = unknown, out Internals extends core.$ZodTypeInternals<Output, Input> = core.$ZodTypeInternals<Output, Input>> extends core.$ZodType<Output, Input, Internals> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-registry.js","sourceRoot":"","sources":["../../../src/graph/zod/zod-registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAY,YAAY,EAAY,MAAM,aAAa,CAAC;AAC/D,OAAO,EAIL,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;GAUG;AACH,MAAM,OAAO,wBAGX,SAAQ,
|
|
1
|
+
{"version":3,"file":"zod-registry.js","sourceRoot":"","sources":["../../../src/graph/zod/zod-registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAY,YAAY,EAAY,MAAM,aAAa,CAAC;AAC/D,OAAO,EAIL,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;GAUG;AACH,MAAM,OAAO,wBAGX,SAAQ,YAAuD;IAC/D;;;;OAIG;IACH,YAAsB,MAA0B;QAC9C,KAAK,EAAE,CAAC;QADE;;;;mBAAU,MAAM;WAAoB;QAE9C,4CAA4C;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAGvB,CAAC;IACJ,CAAC;IAED,GAAG,CACD,MAAS,EACT,GAAG,KAEiD;QAEpD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;YACrC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,kBAAkB,IAAI,IAAI,EAAE,CAAC;gBAC/B,6CAA6C;gBAC7C,SAAS,CAAC,OAAO,GAAG,kBAAkB,CAAC;YACzC,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;IACrC,CAAC;CACF;AAoDD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,wBAAwB,CAAC,kBAAkB,CAAC,CAAC"}
|
package/dist/pregel/algo.cjs
CHANGED
|
@@ -22,20 +22,33 @@ const increment = (current) => {
|
|
|
22
22
|
return current !== undefined ? current + 1 : 1;
|
|
23
23
|
};
|
|
24
24
|
exports.increment = increment;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
// Avoids unnecessary double iteration
|
|
26
|
+
function maxChannelMapVersion(channelVersions) {
|
|
27
|
+
let maxVersion;
|
|
28
|
+
for (const chan in channelVersions) {
|
|
29
|
+
if (!Object.prototype.hasOwnProperty.call(channelVersions, chan))
|
|
30
|
+
continue;
|
|
31
|
+
if (maxVersion == null) {
|
|
32
|
+
maxVersion = channelVersions[chan];
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
maxVersion = (0, langgraph_checkpoint_1.maxChannelVersion)(maxVersion, channelVersions[chan]);
|
|
36
|
+
}
|
|
34
37
|
}
|
|
38
|
+
return maxVersion;
|
|
39
|
+
}
|
|
40
|
+
function shouldInterrupt(checkpoint, interruptNodes, tasks) {
|
|
41
|
+
const nullVersion = (0, index_js_1.getNullChannelVersion)(checkpoint.channel_versions);
|
|
35
42
|
const seen = checkpoint.versions_seen[constants_js_1.INTERRUPT] ?? {};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
let anyChannelUpdated = false;
|
|
44
|
+
for (const chan in checkpoint.channel_versions) {
|
|
45
|
+
if (!Object.prototype.hasOwnProperty.call(checkpoint.channel_versions, chan))
|
|
46
|
+
continue;
|
|
47
|
+
if (checkpoint.channel_versions[chan] > (seen[chan] ?? nullVersion)) {
|
|
48
|
+
anyChannelUpdated = true;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
39
52
|
const anyTriggeredNodeInInterruptNodes = tasks.some((task) => interruptNodes === "*"
|
|
40
53
|
? !task.config?.tags?.includes(constants_js_1.TAG_HIDDEN)
|
|
41
54
|
: interruptNodes.includes(task.name));
|
|
@@ -115,7 +128,7 @@ getNextVersion, triggerToNodes) {
|
|
|
115
128
|
// so we don't do anything other than update the channels written to
|
|
116
129
|
const bumpStep = tasks.some((task) => task.triggers.length > 0);
|
|
117
130
|
// Filter out non instances of BaseChannel
|
|
118
|
-
const onlyChannels =
|
|
131
|
+
const onlyChannels = (0, base_js_1.getOnlyChannels)(channels);
|
|
119
132
|
// Update seen versions
|
|
120
133
|
for (const task of tasks) {
|
|
121
134
|
checkpoint.versions_seen[task.name] ??= {};
|
|
@@ -127,10 +140,7 @@ getNextVersion, triggerToNodes) {
|
|
|
127
140
|
}
|
|
128
141
|
}
|
|
129
142
|
// Find the highest version of all channels
|
|
130
|
-
let maxVersion;
|
|
131
|
-
if (Object.keys(checkpoint.channel_versions).length > 0) {
|
|
132
|
-
maxVersion = (0, langgraph_checkpoint_1.maxChannelVersion)(...Object.values(checkpoint.channel_versions));
|
|
133
|
-
}
|
|
143
|
+
let maxVersion = maxChannelMapVersion(checkpoint.channel_versions);
|
|
134
144
|
// Consume all channels that were read
|
|
135
145
|
const channelsToConsume = new Set(tasks
|
|
136
146
|
.flatMap((task) => task.triggers)
|
|
@@ -156,18 +166,15 @@ getNextVersion, triggerToNodes) {
|
|
|
156
166
|
}
|
|
157
167
|
}
|
|
158
168
|
// Find the highest version of all channels
|
|
159
|
-
|
|
160
|
-
maxVersion = undefined;
|
|
161
|
-
if (Object.keys(checkpoint.channel_versions).length > 0) {
|
|
162
|
-
maxVersion = (0, langgraph_checkpoint_1.maxChannelVersion)(...Object.values(checkpoint.channel_versions));
|
|
163
|
-
}
|
|
169
|
+
maxVersion = maxChannelMapVersion(checkpoint.channel_versions);
|
|
164
170
|
const updatedChannels = new Set();
|
|
165
171
|
// Apply writes to channels
|
|
166
172
|
for (const [chan, vals] of Object.entries(pendingWritesByChannel)) {
|
|
167
173
|
if (chan in onlyChannels) {
|
|
174
|
+
const channel = onlyChannels[chan];
|
|
168
175
|
let updated;
|
|
169
176
|
try {
|
|
170
|
-
updated =
|
|
177
|
+
updated = channel.update(vals);
|
|
171
178
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
172
179
|
}
|
|
173
180
|
catch (e) {
|
|
@@ -183,23 +190,24 @@ getNextVersion, triggerToNodes) {
|
|
|
183
190
|
if (updated && getNextVersion !== undefined) {
|
|
184
191
|
checkpoint.channel_versions[chan] = getNextVersion(maxVersion);
|
|
185
192
|
// unavailable channels can't trigger tasks, so don't add them
|
|
186
|
-
if (
|
|
193
|
+
if (channel.isAvailable())
|
|
187
194
|
updatedChannels.add(chan);
|
|
188
|
-
}
|
|
189
195
|
}
|
|
190
196
|
}
|
|
191
197
|
}
|
|
192
198
|
// Channels that weren't updated in this step are notified of a new step
|
|
193
199
|
if (bumpStep) {
|
|
194
|
-
for (const chan
|
|
195
|
-
if (
|
|
196
|
-
|
|
200
|
+
for (const chan in onlyChannels) {
|
|
201
|
+
if (!Object.prototype.hasOwnProperty.call(onlyChannels, chan))
|
|
202
|
+
continue;
|
|
203
|
+
const channel = onlyChannels[chan];
|
|
204
|
+
if (channel.isAvailable() && !updatedChannels.has(chan)) {
|
|
205
|
+
const updated = channel.update([]);
|
|
197
206
|
if (updated && getNextVersion !== undefined) {
|
|
198
207
|
checkpoint.channel_versions[chan] = getNextVersion(maxVersion);
|
|
199
208
|
// unavailable channels can't trigger tasks, so don't add them
|
|
200
|
-
if (
|
|
209
|
+
if (channel.isAvailable())
|
|
201
210
|
updatedChannels.add(chan);
|
|
202
|
-
}
|
|
203
211
|
}
|
|
204
212
|
}
|
|
205
213
|
}
|
|
@@ -207,13 +215,15 @@ getNextVersion, triggerToNodes) {
|
|
|
207
215
|
// If this is (tentatively) the last superstep, notify all channels of finish
|
|
208
216
|
if (bumpStep &&
|
|
209
217
|
!Object.keys(triggerToNodes ?? {}).some((channel) => updatedChannels.has(channel))) {
|
|
210
|
-
for (const chan
|
|
211
|
-
if (
|
|
218
|
+
for (const chan in onlyChannels) {
|
|
219
|
+
if (!Object.prototype.hasOwnProperty.call(onlyChannels, chan))
|
|
220
|
+
continue;
|
|
221
|
+
const channel = onlyChannels[chan];
|
|
222
|
+
if (channel.finish() && getNextVersion !== undefined) {
|
|
212
223
|
checkpoint.channel_versions[chan] = getNextVersion(maxVersion);
|
|
213
224
|
// unavailable channels can't trigger tasks, so don't add them
|
|
214
|
-
if (
|
|
225
|
+
if (channel.isAvailable())
|
|
215
226
|
updatedChannels.add(chan);
|
|
216
|
-
}
|
|
217
227
|
}
|
|
218
228
|
}
|
|
219
229
|
}
|
|
@@ -238,7 +248,9 @@ function _prepareNextTasks(checkpoint, pendingWrites, processes, channels, confi
|
|
|
238
248
|
}
|
|
239
249
|
// Check if any processes should be run in next step
|
|
240
250
|
// If so, prepare the values to be passed to them
|
|
241
|
-
for (const name
|
|
251
|
+
for (const name in processes) {
|
|
252
|
+
if (!Object.prototype.hasOwnProperty.call(processes, name))
|
|
253
|
+
continue;
|
|
242
254
|
const task = _prepareSingleTask([constants_js_1.PULL, name], checkpoint, pendingWrites, processes, channels, config, forExecution, extra);
|
|
243
255
|
if (task !== undefined) {
|
|
244
256
|
tasks[task.id] = task;
|
|
@@ -488,17 +500,15 @@ function _prepareSingleTask(taskPath, checkpoint, pendingWrites, processes, chan
|
|
|
488
500
|
return undefined;
|
|
489
501
|
}
|
|
490
502
|
const seen = checkpoint.versions_seen[name] ?? {};
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
return (
|
|
496
|
-
(
|
|
497
|
-
|
|
498
|
-
})
|
|
499
|
-
.sort();
|
|
503
|
+
// Find the first trigger that is available and has a new version
|
|
504
|
+
const trigger = proc.triggers.find((chan) => {
|
|
505
|
+
if (!channels[chan].isAvailable())
|
|
506
|
+
return false;
|
|
507
|
+
return ((checkpoint.channel_versions[chan] ?? nullVersion) >
|
|
508
|
+
(seen[chan] ?? nullVersion));
|
|
509
|
+
});
|
|
500
510
|
// If any of the channels read by this process were updated
|
|
501
|
-
if (
|
|
511
|
+
if (trigger !== undefined) {
|
|
502
512
|
const val = _procInput(proc, channels, forExecution);
|
|
503
513
|
if (val === undefined) {
|
|
504
514
|
return undefined;
|
|
@@ -511,13 +521,13 @@ function _prepareSingleTask(taskPath, checkpoint, pendingWrites, processes, chan
|
|
|
511
521
|
step.toString(),
|
|
512
522
|
name,
|
|
513
523
|
constants_js_1.PULL,
|
|
514
|
-
|
|
524
|
+
[trigger],
|
|
515
525
|
]), checkpoint.id);
|
|
516
526
|
const taskCheckpointNamespace = `${checkpointNamespace}${constants_js_1.CHECKPOINT_NAMESPACE_END}${taskId}`;
|
|
517
527
|
let metadata = {
|
|
518
528
|
langgraph_step: step,
|
|
519
529
|
langgraph_node: name,
|
|
520
|
-
langgraph_triggers:
|
|
530
|
+
langgraph_triggers: [trigger],
|
|
521
531
|
langgraph_path: taskPath,
|
|
522
532
|
langgraph_checkpoint_ns: taskCheckpointNamespace,
|
|
523
533
|
};
|
|
@@ -550,7 +560,7 @@ function _prepareSingleTask(taskPath, checkpoint, pendingWrites, processes, chan
|
|
|
550
560
|
[constants_js_1.CONFIG_KEY_READ]: (select_, fresh_ = false) => _localRead(checkpoint, channels, {
|
|
551
561
|
name,
|
|
552
562
|
writes: writes,
|
|
553
|
-
triggers,
|
|
563
|
+
triggers: [trigger],
|
|
554
564
|
path: taskPath,
|
|
555
565
|
}, select_, fresh_),
|
|
556
566
|
[constants_js_1.CONFIG_KEY_CHECKPOINTER]: checkpointer ?? configurable[constants_js_1.CONFIG_KEY_CHECKPOINTER],
|
|
@@ -570,7 +580,7 @@ function _prepareSingleTask(taskPath, checkpoint, pendingWrites, processes, chan
|
|
|
570
580
|
checkpoint_ns: taskCheckpointNamespace,
|
|
571
581
|
},
|
|
572
582
|
}),
|
|
573
|
-
triggers,
|
|
583
|
+
triggers: [trigger],
|
|
574
584
|
retry_policy: proc.retryPolicy,
|
|
575
585
|
cache_key: proc.cachePolicy
|
|
576
586
|
? {
|