@langchain/langgraph 0.3.5 → 0.3.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.
Files changed (66) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/channels/base.cjs +2 -2
  3. package/dist/channels/base.d.ts +3 -1
  4. package/dist/channels/base.js +2 -2
  5. package/dist/channels/base.js.map +1 -1
  6. package/dist/constants.cjs +3 -1
  7. package/dist/constants.d.ts +3 -0
  8. package/dist/constants.js +2 -0
  9. package/dist/constants.js.map +1 -1
  10. package/dist/errors.cjs +1 -6
  11. package/dist/errors.js +1 -6
  12. package/dist/errors.js.map +1 -1
  13. package/dist/graph/state.d.ts +1 -1
  14. package/dist/hash.cjs +333 -0
  15. package/dist/hash.d.ts +2 -0
  16. package/dist/hash.js +329 -0
  17. package/dist/hash.js.map +1 -0
  18. package/dist/interrupt.cjs +11 -1
  19. package/dist/interrupt.js +13 -3
  20. package/dist/interrupt.js.map +1 -1
  21. package/dist/prebuilt/react_agent_executor.cjs +78 -12
  22. package/dist/prebuilt/react_agent_executor.d.ts +4 -3
  23. package/dist/prebuilt/react_agent_executor.js +77 -12
  24. package/dist/prebuilt/react_agent_executor.js.map +1 -1
  25. package/dist/pregel/algo.cjs +29 -14
  26. package/dist/pregel/algo.js +30 -15
  27. package/dist/pregel/algo.js.map +1 -1
  28. package/dist/pregel/debug.cjs +18 -42
  29. package/dist/pregel/debug.d.ts +18 -33
  30. package/dist/pregel/debug.js +18 -42
  31. package/dist/pregel/debug.js.map +1 -1
  32. package/dist/pregel/index.cjs +77 -23
  33. package/dist/pregel/index.d.ts +7 -2
  34. package/dist/pregel/index.js +78 -24
  35. package/dist/pregel/index.js.map +1 -1
  36. package/dist/pregel/loop.cjs +157 -43
  37. package/dist/pregel/loop.d.ts +7 -1
  38. package/dist/pregel/loop.js +158 -44
  39. package/dist/pregel/loop.js.map +1 -1
  40. package/dist/pregel/messages.cjs +3 -0
  41. package/dist/pregel/messages.d.ts +1 -1
  42. package/dist/pregel/messages.js +3 -0
  43. package/dist/pregel/messages.js.map +1 -1
  44. package/dist/pregel/messages.test.cjs +18 -0
  45. package/dist/pregel/messages.test.js +18 -0
  46. package/dist/pregel/messages.test.js.map +1 -1
  47. package/dist/pregel/remote.cjs +2 -0
  48. package/dist/pregel/remote.d.ts +1 -0
  49. package/dist/pregel/remote.js +2 -0
  50. package/dist/pregel/remote.js.map +1 -1
  51. package/dist/pregel/retry.cjs +4 -0
  52. package/dist/pregel/retry.js +4 -0
  53. package/dist/pregel/retry.js.map +1 -1
  54. package/dist/pregel/types.d.ts +49 -4
  55. package/dist/pregel/types.js.map +1 -1
  56. package/dist/pregel/utils/config.cjs +2 -1
  57. package/dist/pregel/utils/config.js +2 -1
  58. package/dist/pregel/utils/config.js.map +1 -1
  59. package/dist/pregel/validate.cjs +1 -1
  60. package/dist/pregel/validate.js +1 -1
  61. package/dist/pregel/validate.js.map +1 -1
  62. package/dist/pregel/validate.test.cjs +1 -1
  63. package/dist/pregel/validate.test.js +1 -1
  64. package/dist/pregel/validate.test.js.map +1 -1
  65. package/dist/utils.js.map +1 -1
  66. package/package.json +6 -5
package/dist/hash.js ADDED
@@ -0,0 +1,329 @@
1
+ /* Converted from https://github.com/i404788/xxh3-ts
2
+
3
+ BSD 2-Clause License
4
+
5
+ Copyright (c) 2019, i404788
6
+ All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright notice, this
12
+ list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright notice,
15
+ this list of conditions and the following disclaimer in the documentation
16
+ and/or other materials provided with the distribution.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+ */
29
+ const n = (n) => BigInt(n);
30
+ const view = (data, offset = 0) => new DataView(data.buffer, data.byteOffset + offset, data.byteLength - offset);
31
+ const PRIME32_1 = n("0x9E3779B1"); // 0b10011110001101110111100110110001
32
+ const PRIME32_2 = n("0x85EBCA77"); // 0b10000101111010111100101001110111
33
+ const PRIME32_3 = n("0xC2B2AE3D"); // 0b11000010101100101010111000111101
34
+ const PRIME64_1 = n("0x9E3779B185EBCA87"); // 0b1001111000110111011110011011000110000101111010111100101010000111
35
+ const PRIME64_2 = n("0xC2B2AE3D27D4EB4F"); // 0b1100001010110010101011100011110100100111110101001110101101001111
36
+ const PRIME64_3 = n("0x165667B19E3779F9"); // 0b0001011001010110011001111011000110011110001101110111100111111001
37
+ const PRIME64_4 = n("0x85EBCA77C2B2AE63"); // 0b1000010111101011110010100111011111000010101100101010111001100011
38
+ const PRIME64_5 = n("0x27D4EB2F165667C5"); // 0b0010011111010100111010110010111100010110010101100110011111000101
39
+ const PRIME_MX1 = n("0x165667919E3779F9"); // 0b0001011001010110011001111001000110011110001101110111100111111001
40
+ const PRIME_MX2 = n("0x9FB21C651E98DF25"); // 0b1001111110110010000111000110010100011110100110001101111100100101
41
+ const hexToUint8Array = (hex) => {
42
+ const strLen = hex.length;
43
+ if (strLen % 2 !== 0) {
44
+ throw new Error("String should have an even number of characters");
45
+ }
46
+ const maxLength = strLen / 2;
47
+ const bytes = new Uint8Array(maxLength);
48
+ let read = 0;
49
+ let write = 0;
50
+ while (write < maxLength) {
51
+ const slice = hex.slice(read, (read += 2));
52
+ bytes[write] = Number.parseInt(slice, 16);
53
+ write += 1;
54
+ }
55
+ return view(bytes);
56
+ };
57
+ const kkey = hexToUint8Array("b8fe6c3923a44bbe7c01812cf721ad1cded46de9839097db7240a4a4b7b3671fcb79e64eccc0e578825ad07dccff7221b8084674f743248ee03590e6813a264c3c2852bb91c300cb88d0658b1b532ea371644897a20df94e3819ef46a9deacd8a8fa763fe39c343ff9dcbbc7c70b4f1d8a51e04bcdb45931c89f7ec9d9787364eac5ac8334d3ebc3c581a0fffa1363eb170ddd51b7f0da49d316552629d4689e2b16be587d47a1fc8ff8b8d17ad031ce45cb3a8f95160428afd7fbcabb4b407e");
58
+ const mask128 = (n(1) << n(128)) - n(1);
59
+ const mask64 = (n(1) << n(64)) - n(1);
60
+ const mask32 = (n(1) << n(32)) - n(1);
61
+ const STRIPE_LEN = 64;
62
+ const ACC_NB = STRIPE_LEN / 8;
63
+ const _U64 = 8;
64
+ const _U32 = 4;
65
+ function assert(a) {
66
+ if (!a)
67
+ throw new Error("Assert failed");
68
+ }
69
+ function bswap64(a) {
70
+ const scratchbuf = new DataView(new ArrayBuffer(8));
71
+ scratchbuf.setBigUint64(0, a, true);
72
+ return scratchbuf.getBigUint64(0, false);
73
+ }
74
+ function bswap32(input) {
75
+ let a = input;
76
+ a = ((a & n(0x0000ffff)) << n(16)) | ((a & n(0xffff0000)) >> n(16));
77
+ a = ((a & n(0x00ff00ff)) << n(8)) | ((a & n(0xff00ff00)) >> n(8));
78
+ return a; // 32-bit
79
+ }
80
+ function XXH_mult32to64(a, b) {
81
+ return ((a & mask32) * (b & mask32)) & mask64;
82
+ }
83
+ function rotl32(a, b) {
84
+ return ((a << b) | (a >> (n(32) - b))) & mask32;
85
+ }
86
+ function XXH3_accumulate_512(acc, dataView, keyView) {
87
+ for (let i = 0; i < ACC_NB; i += 1) {
88
+ const data_val = dataView.getBigUint64(i * 8, true);
89
+ const data_key = data_val ^ keyView.getBigUint64(i * 8, true);
90
+ acc[i ^ 1] += data_val;
91
+ acc[i] += XXH_mult32to64(data_key, data_key >> n(32));
92
+ }
93
+ return acc;
94
+ }
95
+ function XXH3_accumulate(acc, dataView, keyView, nbStripes) {
96
+ for (let n = 0; n < nbStripes; n += 1) {
97
+ XXH3_accumulate_512(acc, view(dataView, n * STRIPE_LEN), view(keyView, n * 8));
98
+ }
99
+ return acc;
100
+ }
101
+ function XXH3_scrambleAcc(acc, key) {
102
+ for (let i = 0; i < ACC_NB; i += 1) {
103
+ const key64 = key.getBigUint64(i * 8, true);
104
+ let acc64 = acc[i];
105
+ acc64 = xorshift64(acc64, n(47));
106
+ acc64 ^= key64;
107
+ acc64 *= PRIME32_1;
108
+ acc[i] = acc64 & mask64;
109
+ }
110
+ return acc;
111
+ }
112
+ function XXH3_mix2Accs(acc, key) {
113
+ return XXH3_mul128_fold64(acc[0] ^ key.getBigUint64(0, true), acc[1] ^ key.getBigUint64(_U64, true));
114
+ }
115
+ function XXH3_mergeAccs(acc, key, start) {
116
+ let result64 = start;
117
+ result64 += XXH3_mix2Accs(acc.slice(0), view(key, 0 * _U32));
118
+ result64 += XXH3_mix2Accs(acc.slice(2), view(key, 4 * _U32));
119
+ result64 += XXH3_mix2Accs(acc.slice(4), view(key, 8 * _U32));
120
+ result64 += XXH3_mix2Accs(acc.slice(6), view(key, 12 * _U32));
121
+ return XXH3_avalanche(result64 & mask64);
122
+ }
123
+ function XXH3_hashLong(input, data, secret, f_acc, f_scramble) {
124
+ let acc = input;
125
+ const nbStripesPerBlock = Math.floor((secret.byteLength - STRIPE_LEN) / 8);
126
+ const block_len = STRIPE_LEN * nbStripesPerBlock;
127
+ const nb_blocks = Math.floor((data.byteLength - 1) / block_len);
128
+ for (let n = 0; n < nb_blocks; n += 1) {
129
+ acc = XXH3_accumulate(acc, view(data, n * block_len), secret, nbStripesPerBlock);
130
+ acc = f_scramble(acc, view(secret, secret.byteLength - STRIPE_LEN));
131
+ }
132
+ {
133
+ // Partial block
134
+ const nbStripes = Math.floor((data.byteLength - 1 - block_len * nb_blocks) / STRIPE_LEN);
135
+ acc = XXH3_accumulate(acc, view(data, nb_blocks * block_len), secret, nbStripes);
136
+ // Last Stripe
137
+ acc = f_acc(acc, view(data, data.byteLength - STRIPE_LEN), view(secret, secret.byteLength - STRIPE_LEN - 7));
138
+ }
139
+ return acc;
140
+ }
141
+ function XXH3_hashLong_128b(data, secret) {
142
+ let acc = new BigUint64Array([
143
+ PRIME32_3,
144
+ PRIME64_1,
145
+ PRIME64_2,
146
+ PRIME64_3,
147
+ PRIME64_4,
148
+ PRIME32_2,
149
+ PRIME64_5,
150
+ PRIME32_1,
151
+ ]);
152
+ assert(data.byteLength > 128);
153
+ acc = XXH3_hashLong(acc, data, secret, XXH3_accumulate_512, XXH3_scrambleAcc);
154
+ /* converge into final hash */
155
+ assert(acc.length * 8 === 64);
156
+ {
157
+ const low64 = XXH3_mergeAccs(acc, view(secret, 11), (n(data.byteLength) * PRIME64_1) & mask64);
158
+ const high64 = XXH3_mergeAccs(acc, view(secret, secret.byteLength - STRIPE_LEN - 11), ~(n(data.byteLength) * PRIME64_2) & mask64);
159
+ return (high64 << n(64)) | low64;
160
+ }
161
+ }
162
+ function XXH3_mul128_fold64(a, b) {
163
+ const lll = (a * b) & mask128;
164
+ return (lll & mask64) ^ (lll >> n(64));
165
+ }
166
+ function XXH3_mix16B(dataView, keyView, seed) {
167
+ return XXH3_mul128_fold64((dataView.getBigUint64(0, true) ^ (keyView.getBigUint64(0, true) + seed)) &
168
+ mask64, (dataView.getBigUint64(8, true) ^ (keyView.getBigUint64(8, true) - seed)) &
169
+ mask64);
170
+ }
171
+ function XXH3_mix32B(acc, data1, data2, key, seed) {
172
+ let accl = acc & mask64;
173
+ let acch = (acc >> n(64)) & mask64;
174
+ accl += XXH3_mix16B(data1, key, seed);
175
+ accl ^= data2.getBigUint64(0, true) + data2.getBigUint64(8, true);
176
+ accl &= mask64;
177
+ acch += XXH3_mix16B(data2, view(key, 16), seed);
178
+ acch ^= data1.getBigUint64(0, true) + data1.getBigUint64(8, true);
179
+ acch &= mask64;
180
+ return (acch << n(64)) | accl;
181
+ }
182
+ function XXH3_avalanche(input) {
183
+ let h64 = input;
184
+ h64 ^= h64 >> n(37);
185
+ h64 *= PRIME_MX1;
186
+ h64 &= mask64;
187
+ h64 ^= h64 >> n(32);
188
+ return h64;
189
+ }
190
+ function XXH3_avalanche64(input) {
191
+ let h64 = input;
192
+ h64 ^= h64 >> n(33);
193
+ h64 *= PRIME64_2;
194
+ h64 &= mask64; // 64-bit
195
+ h64 ^= h64 >> n(29);
196
+ h64 *= PRIME64_3;
197
+ h64 &= mask64;
198
+ h64 ^= h64 >> n(32);
199
+ return h64;
200
+ }
201
+ function XXH3_len_1to3_128b(data, key32, seed) {
202
+ const len = data.byteLength;
203
+ assert(len > 0 && len <= 3);
204
+ const combined = n(data.getUint8(len - 1)) |
205
+ n(len << 8) |
206
+ n(data.getUint8(0) << 16) |
207
+ n(data.getUint8(len >> 1) << 24);
208
+ const blow = (n(key32.getUint32(0, true)) ^ n(key32.getUint32(4, true))) + seed;
209
+ const low = (combined ^ blow) & mask64;
210
+ const bhigh = (n(key32.getUint32(8, true)) ^ n(key32.getUint32(12, true))) - seed;
211
+ const high = (rotl32(bswap32(combined), n(13)) ^ bhigh) & mask64;
212
+ return ((XXH3_avalanche64(high) & mask64) << n(64)) | XXH3_avalanche64(low);
213
+ }
214
+ function xorshift64(b, shift) {
215
+ return b ^ (b >> shift);
216
+ }
217
+ function XXH3_len_4to8_128b(data, key32, seed) {
218
+ const len = data.byteLength;
219
+ assert(len >= 4 && len <= 8);
220
+ {
221
+ const l1 = data.getUint32(0, true);
222
+ const l2 = data.getUint32(len - 4, true);
223
+ const l64 = n(l1) | (n(l2) << n(32));
224
+ const bitflip = ((key32.getBigUint64(16, true) ^ key32.getBigUint64(24, true)) + seed) &
225
+ mask64;
226
+ const keyed = l64 ^ bitflip;
227
+ let m128 = (keyed * (PRIME64_1 + (n(len) << n(2)))) & mask128;
228
+ m128 += (m128 & mask64) << n(65);
229
+ m128 &= mask128;
230
+ m128 ^= m128 >> n(67);
231
+ return (xorshift64((xorshift64(m128 & mask64, n(35)) * PRIME_MX2) & mask64, n(28)) |
232
+ (XXH3_avalanche(m128 >> n(64)) << n(64)));
233
+ }
234
+ }
235
+ function XXH3_len_9to16_128b(data, key64, seed) {
236
+ const len = data.byteLength;
237
+ assert(len >= 9 && len <= 16);
238
+ {
239
+ const bitflipl = ((key64.getBigUint64(32, true) ^ key64.getBigUint64(40, true)) + seed) &
240
+ mask64;
241
+ const bitfliph = ((key64.getBigUint64(48, true) ^ key64.getBigUint64(56, true)) - seed) &
242
+ mask64;
243
+ const ll1 = data.getBigUint64(0, true);
244
+ let ll2 = data.getBigUint64(len - 8, true);
245
+ let m128 = (ll1 ^ ll2 ^ bitflipl) * PRIME64_1;
246
+ const m128_l = (m128 & mask64) + (n(len - 1) << n(54));
247
+ m128 = (m128 & (mask128 ^ mask64)) | m128_l; // eqv. to adding only to lower 64b
248
+ ll2 ^= bitfliph;
249
+ m128 += (ll2 + (ll2 & mask32) * (PRIME32_2 - n(1))) << n(64);
250
+ m128 &= mask128;
251
+ m128 ^= bswap64(m128 >> n(64));
252
+ let h128 = (m128 & mask64) * PRIME64_2;
253
+ h128 += ((m128 >> n(64)) * PRIME64_2) << n(64);
254
+ h128 &= mask128;
255
+ return (XXH3_avalanche(h128 & mask64) | (XXH3_avalanche(h128 >> n(64)) << n(64)));
256
+ }
257
+ }
258
+ function XXH3_len_0to16_128b(data, seed) {
259
+ const len = data.byteLength;
260
+ assert(len <= 16);
261
+ if (len > 8)
262
+ return XXH3_len_9to16_128b(data, kkey, seed);
263
+ if (len >= 4)
264
+ return XXH3_len_4to8_128b(data, kkey, seed);
265
+ if (len > 0)
266
+ return XXH3_len_1to3_128b(data, kkey, seed);
267
+ return (XXH3_avalanche64(seed ^ kkey.getBigUint64(64, true) ^ kkey.getBigUint64(72, true)) |
268
+ (XXH3_avalanche64(seed ^ kkey.getBigUint64(80, true) ^ kkey.getBigUint64(88, true)) <<
269
+ n(64)));
270
+ }
271
+ function inv64(x) {
272
+ // NOTE: `AND` fixes signedness (but because of 2's complement we need to re-add 1)
273
+ return (~x + n(1)) & mask64;
274
+ }
275
+ function XXH3_len_17to128_128b(data, secret, seed) {
276
+ let acc = (n(data.byteLength) * PRIME64_1) & mask64;
277
+ let i = n(data.byteLength - 1) / n(32);
278
+ while (i >= 0) {
279
+ const ni = Number(i);
280
+ acc = XXH3_mix32B(acc, view(data, 16 * ni), view(data, data.byteLength - 16 * (ni + 1)), view(secret, 32 * ni), seed);
281
+ i -= n(1);
282
+ }
283
+ let h128l = (acc + (acc >> n(64))) & mask64;
284
+ h128l = XXH3_avalanche(h128l);
285
+ let h128h = (acc & mask64) * PRIME64_1 +
286
+ (acc >> n(64)) * PRIME64_4 +
287
+ ((n(data.byteLength) - seed) & mask64) * PRIME64_2;
288
+ h128h &= mask64;
289
+ h128h = inv64(XXH3_avalanche(h128h));
290
+ return h128l | (h128h << n(64));
291
+ }
292
+ function XXH3_len_129to240_128b(data, secret, seed) {
293
+ let acc = (n(data.byteLength) * PRIME64_1) & mask64;
294
+ for (let i = 32; i < 160; i += 32) {
295
+ acc = XXH3_mix32B(acc, view(data, i - 32), view(data, i - 16), view(secret, i - 32), seed);
296
+ }
297
+ acc = XXH3_avalanche(acc & mask64) | (XXH3_avalanche(acc >> n(64)) << n(64));
298
+ for (let i = 160; i <= data.byteLength; i += 32) {
299
+ acc = XXH3_mix32B(acc, view(data, i - 32), view(data, i - 16), view(secret, 3 + i - 160), seed);
300
+ }
301
+ acc = XXH3_mix32B(acc, view(data, data.byteLength - 16), view(data, data.byteLength - 32), view(secret, 136 - 17 - 16), inv64(seed));
302
+ let h128l = (acc + (acc >> n(64))) & mask64;
303
+ h128l = XXH3_avalanche(h128l);
304
+ let h128h = (acc & mask64) * PRIME64_1 +
305
+ (acc >> n(64)) * PRIME64_4 +
306
+ ((n(data.byteLength) - seed) & mask64) * PRIME64_2;
307
+ h128h &= mask64;
308
+ h128h = inv64(XXH3_avalanche(h128h));
309
+ return h128l | (h128h << n(64));
310
+ }
311
+ // 16 byte min input
312
+ export function XXH3(input, seed = n(0)) {
313
+ const encoder = new TextEncoder();
314
+ const data = view(typeof input === "string" ? encoder.encode(input) : input);
315
+ const len = data.byteLength;
316
+ const hexDigest = (data) => data.toString(16).padStart(32, "0");
317
+ if (len <= 16)
318
+ return hexDigest(XXH3_len_0to16_128b(data, seed));
319
+ if (len <= 128)
320
+ return hexDigest(XXH3_len_17to128_128b(data, kkey, seed));
321
+ if (len <= 240)
322
+ return hexDigest(XXH3_len_129to240_128b(data, kkey, seed));
323
+ return hexDigest(XXH3_hashLong_128b(data, kkey));
324
+ }
325
+ export function isXXH3(value) {
326
+ // Check if the given string matches the format of XXH3 (128 bit hex digest).
327
+ return /^[0-9a-f]{32}$/.test(value);
328
+ }
329
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ exports.interrupt = interrupt;
4
4
  const singletons_1 = require("@langchain/core/singletons");
5
5
  const errors_js_1 = require("./errors.cjs");
6
6
  const constants_js_1 = require("./constants.cjs");
7
+ const hash_js_1 = require("./hash.cjs");
7
8
  /**
8
9
  * Interrupts the execution of a graph node.
9
10
  * This function can be used to pause execution of a node, and return the value of the `resume`
@@ -57,6 +58,9 @@ function interrupt(value) {
57
58
  if (!conf) {
58
59
  throw new Error("No configurable found in config");
59
60
  }
61
+ const checkpointer = conf[constants_js_1.CONFIG_KEY_CHECKPOINTER];
62
+ if (!checkpointer)
63
+ throw new errors_js_1.GraphValueError("No checkpointer set");
60
64
  // Track interrupt index
61
65
  const scratchpad = conf[constants_js_1.CONFIG_KEY_SCRATCHPAD];
62
66
  scratchpad.interruptCounter += 1;
@@ -79,12 +83,18 @@ function interrupt(value) {
79
83
  return v;
80
84
  }
81
85
  // No resume value found
86
+ const ns = conf[constants_js_1.CONFIG_KEY_CHECKPOINT_NS]?.split(constants_js_1.CHECKPOINT_NAMESPACE_SEPARATOR);
82
87
  throw new errors_js_1.GraphInterrupt([
83
88
  {
84
89
  value,
85
90
  when: "during",
86
91
  resumable: true,
87
- ns: conf[constants_js_1.CONFIG_KEY_CHECKPOINT_NS]?.split(constants_js_1.CHECKPOINT_NAMESPACE_SEPARATOR),
92
+ ns,
93
+ get interrupt_id() {
94
+ if (ns == null)
95
+ return undefined;
96
+ return (0, hash_js_1.XXH3)(ns.join(constants_js_1.CHECKPOINT_NAMESPACE_SEPARATOR));
97
+ },
88
98
  },
89
99
  ]);
90
100
  }
package/dist/interrupt.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { AsyncLocalStorageProviderSingleton } from "@langchain/core/singletons";
2
- import { GraphInterrupt } from "./errors.js";
3
- import { CONFIG_KEY_CHECKPOINT_NS, CONFIG_KEY_SCRATCHPAD, CONFIG_KEY_SEND, CHECKPOINT_NAMESPACE_SEPARATOR, RESUME, } from "./constants.js";
2
+ import { GraphInterrupt, GraphValueError } from "./errors.js";
3
+ import { CONFIG_KEY_CHECKPOINT_NS, CONFIG_KEY_SCRATCHPAD, CONFIG_KEY_SEND, CONFIG_KEY_CHECKPOINTER, CHECKPOINT_NAMESPACE_SEPARATOR, RESUME, } from "./constants.js";
4
+ import { XXH3 } from "./hash.js";
4
5
  /**
5
6
  * Interrupts the execution of a graph node.
6
7
  * This function can be used to pause execution of a node, and return the value of the `resume`
@@ -54,6 +55,9 @@ export function interrupt(value) {
54
55
  if (!conf) {
55
56
  throw new Error("No configurable found in config");
56
57
  }
58
+ const checkpointer = conf[CONFIG_KEY_CHECKPOINTER];
59
+ if (!checkpointer)
60
+ throw new GraphValueError("No checkpointer set");
57
61
  // Track interrupt index
58
62
  const scratchpad = conf[CONFIG_KEY_SCRATCHPAD];
59
63
  scratchpad.interruptCounter += 1;
@@ -76,12 +80,18 @@ export function interrupt(value) {
76
80
  return v;
77
81
  }
78
82
  // No resume value found
83
+ const ns = conf[CONFIG_KEY_CHECKPOINT_NS]?.split(CHECKPOINT_NAMESPACE_SEPARATOR);
79
84
  throw new GraphInterrupt([
80
85
  {
81
86
  value,
82
87
  when: "during",
83
88
  resumable: true,
84
- ns: conf[CONFIG_KEY_CHECKPOINT_NS]?.split(CHECKPOINT_NAMESPACE_SEPARATOR),
89
+ ns,
90
+ get interrupt_id() {
91
+ if (ns == null)
92
+ return undefined;
93
+ return XXH3(ns.join(CHECKPOINT_NAMESPACE_SEPARATOR));
94
+ },
85
95
  },
86
96
  ]);
87
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interrupt.js","sourceRoot":"","sources":["../src/interrupt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,4BAA4B,CAAC;AAGhF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,8BAA8B,EAC9B,MAAM,GACP,MAAM,gBAAgB,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAuB,KAAQ;IACtD,MAAM,MAAM,GACV,kCAAkC,CAAC,iBAAiB,EAAE,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAAqB,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjE,UAAU,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAExC,8BAA8B;IAC9B,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnE,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAM,CAAC;IACrC,CAAC;IAED,4BAA4B;IAC5B,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,2BAA2B,UAAU,CAAC,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CACjE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;QACzC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAiB,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAM,CAAC;IAChB,CAAC;IAED,wBAAwB;IACxB,MAAM,IAAI,cAAc,CAAC;QACvB;YACE,KAAK;YACL,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,wBAAwB,CAAC,EAAE,KAAK,CAAC,8BAA8B,CAAC;SAC1E;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"interrupt.js","sourceRoot":"","sources":["../src/interrupt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,4BAA4B,CAAC;AAMhF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC9B,MAAM,GACP,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAuB,KAAQ;IACtD,MAAM,MAAM,GACV,kCAAkC,CAAC,iBAAiB,EAAE,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,YAAY,GAAwB,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACxE,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAEpE,wBAAwB;IACxB,MAAM,UAAU,GAAqB,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjE,UAAU,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAExC,8BAA8B;IAC9B,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnE,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAM,CAAC;IACrC,CAAC;IAED,4BAA4B;IAC5B,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,2BAA2B,UAAU,CAAC,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CACjE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;QACzC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAiB,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAM,CAAC;IAChB,CAAC;IAED,wBAAwB;IACxB,MAAM,EAAE,GAAyB,IAAI,CAAC,wBAAwB,CAAC,EAAE,KAAK,CACpE,8BAA8B,CAC/B,CAAC;IACF,MAAM,IAAI,cAAc,CAAC;QACvB;YACE,KAAK;YACL,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,EAAE;YACF,IAAI,YAAY;gBACd,IAAI,EAAE,IAAI,IAAI;oBAAE,OAAO,SAAS,CAAC;gBACjC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACvD,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createReactAgentAnnotation = void 0;
4
4
  exports._shouldBindTools = _shouldBindTools;
5
+ exports._bindTools = _bindTools;
5
6
  exports._getModel = _getModel;
6
7
  exports.createReactAgent = createReactAgent;
7
8
  const messages_1 = require("@langchain/core/messages");
@@ -85,6 +86,11 @@ function _isConfigurableModel(model) {
85
86
  "_model" in model &&
86
87
  typeof model._model === "function");
87
88
  }
89
+ function _isChatModelWithBindTools(llm) {
90
+ if (!_isBaseChatModel(llm))
91
+ return false;
92
+ return "bindTools" in llm && typeof llm.bindTools === "function";
93
+ }
88
94
  async function _shouldBindTools(llm, tools) {
89
95
  // If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
90
96
  let model = llm;
@@ -101,17 +107,32 @@ async function _shouldBindTools(llm, tools) {
101
107
  if (!runnables_1.RunnableBinding.isRunnableBinding(model)) {
102
108
  return true;
103
109
  }
104
- // If no tools in kwargs, we should bind tools
105
- if (!model.kwargs ||
106
- typeof model.kwargs !== "object" ||
107
- !("tools" in model.kwargs)) {
108
- return true;
109
- }
110
- let boundTools = model.kwargs.tools;
110
+ let boundTools = (() => {
111
+ // check if model.kwargs contain the tools key
112
+ if (model.kwargs != null &&
113
+ typeof model.kwargs === "object" &&
114
+ "tools" in model.kwargs &&
115
+ Array.isArray(model.kwargs.tools)) {
116
+ return (model.kwargs.tools ?? null);
117
+ }
118
+ // Some models can bind the tools via `withConfig()` instead of `bind()`
119
+ if (model.config != null &&
120
+ typeof model.config === "object" &&
121
+ "tools" in model.config &&
122
+ Array.isArray(model.config.tools)) {
123
+ return (model.config.tools ?? null);
124
+ }
125
+ return null;
126
+ })();
111
127
  // google-style
112
- if (boundTools.length === 1 && "functionDeclarations" in boundTools[0]) {
128
+ if (boundTools != null &&
129
+ boundTools.length === 1 &&
130
+ "functionDeclarations" in boundTools[0]) {
113
131
  boundTools = boundTools[0].functionDeclarations;
114
132
  }
133
+ // If no tools in kwargs, we should bind tools
134
+ if (boundTools == null)
135
+ return true;
115
136
  // Check if tools count matches
116
137
  if (tools.length !== boundTools.length) {
117
138
  throw new Error("Number of tools in the model.bindTools() and tools passed to createReactAgent must match");
@@ -147,6 +168,54 @@ async function _shouldBindTools(llm, tools) {
147
168
  }
148
169
  return false;
149
170
  }
171
+ const _simpleBindTools = (llm, toolClasses) => {
172
+ if (_isChatModelWithBindTools(llm)) {
173
+ return llm.bindTools(toolClasses);
174
+ }
175
+ if (runnables_1.RunnableBinding.isRunnableBinding(llm) &&
176
+ _isChatModelWithBindTools(llm.bound)) {
177
+ const newBound = llm.bound.bindTools(toolClasses);
178
+ if (runnables_1.RunnableBinding.isRunnableBinding(newBound)) {
179
+ return new runnables_1.RunnableBinding({
180
+ bound: newBound.bound,
181
+ config: { ...llm.config, ...newBound.config },
182
+ kwargs: { ...llm.kwargs, ...newBound.kwargs },
183
+ configFactories: newBound.configFactories ?? llm.configFactories,
184
+ });
185
+ }
186
+ return new runnables_1.RunnableBinding({
187
+ bound: newBound,
188
+ config: llm.config,
189
+ kwargs: llm.kwargs,
190
+ configFactories: llm.configFactories,
191
+ });
192
+ }
193
+ return null;
194
+ };
195
+ async function _bindTools(llm, toolClasses) {
196
+ const model = _simpleBindTools(llm, toolClasses);
197
+ if (model)
198
+ return model;
199
+ if (_isConfigurableModel(llm)) {
200
+ const model = _simpleBindTools(await llm._model(), toolClasses);
201
+ if (model)
202
+ return model;
203
+ }
204
+ if (runnables_1.RunnableSequence.isRunnableSequence(llm)) {
205
+ const modelStep = llm.steps.findIndex((step) => runnables_1.RunnableBinding.isRunnableBinding(step) ||
206
+ _isBaseChatModel(step) ||
207
+ _isConfigurableModel(step));
208
+ if (modelStep >= 0) {
209
+ const model = _simpleBindTools(llm.steps[modelStep], toolClasses);
210
+ if (model) {
211
+ const nextSteps = llm.steps.slice();
212
+ nextSteps.splice(modelStep, 1, model);
213
+ return runnables_1.RunnableSequence.from(nextSteps);
214
+ }
215
+ }
216
+ }
217
+ throw new Error(`llm ${llm} must define bindTools method.`);
218
+ }
150
219
  async function _getModel(llm) {
151
220
  // If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
152
221
  let model = llm;
@@ -243,10 +312,7 @@ function createReactAgent(params) {
243
312
  }
244
313
  let modelWithTools;
245
314
  if (await _shouldBindTools(llm, toolClasses)) {
246
- if (!("bindTools" in llm) || typeof llm.bindTools !== "function") {
247
- throw new Error(`llm ${llm} must define bindTools method.`);
248
- }
249
- modelWithTools = llm.bindTools(toolClasses);
315
+ modelWithTools = await _bindTools(llm, toolClasses);
250
316
  }
251
317
  else {
252
318
  modelWithTools = llm;
@@ -1,7 +1,7 @@
1
1
  import { BaseChatModel } from "@langchain/core/language_models/chat_models";
2
2
  import { LanguageModelLike } from "@langchain/core/language_models/base";
3
3
  import { BaseMessage, BaseMessageLike, SystemMessage } from "@langchain/core/messages";
4
- import { Runnable, RunnableToolLike, type RunnableLike } from "@langchain/core/runnables";
4
+ import { Runnable, RunnableToolLike, RunnableSequence, RunnableBinding, type RunnableLike } from "@langchain/core/runnables";
5
5
  import { DynamicTool, StructuredToolInterface } from "@langchain/core/tools";
6
6
  import { InteropZodType } from "@langchain/core/utils/types";
7
7
  import { All, BaseCheckpointSaver, BaseStore } from "@langchain/langgraph-checkpoint";
@@ -27,6 +27,7 @@ interface ConfigurableModelInterface {
27
27
  _model: () => Promise<BaseChatModel>;
28
28
  }
29
29
  export declare function _shouldBindTools(llm: LanguageModelLike, tools: (ClientTool | ServerTool)[]): Promise<boolean>;
30
+ export declare function _bindTools(llm: LanguageModelLike, toolClasses: (ClientTool | ServerTool)[]): Promise<RunnableSequence<any, any> | Runnable<import("@langchain/core/language_models/base").BaseLanguageModelInput, import("@langchain/core/messages").AIMessageChunk, import("@langchain/core/language_models/chat_models").BaseChatModelCallOptions> | RunnableBinding<any, any, any>>;
30
31
  export declare function _getModel(llm: LanguageModelLike | ConfigurableModelInterface): Promise<BaseChatModel>;
31
32
  export type Prompt = SystemMessage | string | ((state: typeof MessagesAnnotation.State, config: LangGraphRunnableConfig) => BaseMessageLike[]) | ((state: typeof MessagesAnnotation.State, config: LangGraphRunnableConfig) => Promise<BaseMessageLike[]>) | Runnable;
32
33
  /** @deprecated Use Prompt instead. */
@@ -75,9 +76,9 @@ export type CreateReactAgentParams<A extends AnnotationRoot<any> = AnnotationRoo
75
76
  prompt?: Prompt;
76
77
  stateSchema?: A;
77
78
  /** An optional checkpoint saver to persist the agent's state. */
78
- checkpointSaver?: BaseCheckpointSaver;
79
+ checkpointSaver?: BaseCheckpointSaver | boolean;
79
80
  /** An optional checkpoint saver to persist the agent's state. Alias of "checkpointSaver". */
80
- checkpointer?: BaseCheckpointSaver;
81
+ checkpointer?: BaseCheckpointSaver | boolean;
81
82
  /** An optional list of node names to interrupt before running. */
82
83
  interruptBefore?: N[] | All;
83
84
  /** An optional list of node names to interrupt after running. */