@langchain/langgraph-checkpoint 0.1.0 → 1.0.0

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 (121) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/_virtual/rolldown_runtime.cjs +25 -0
  3. package/dist/base.cjs +74 -88
  4. package/dist/base.cjs.map +1 -0
  5. package/dist/base.d.cts +95 -0
  6. package/dist/base.d.cts.map +1 -0
  7. package/dist/base.d.ts +79 -73
  8. package/dist/base.d.ts.map +1 -0
  9. package/dist/base.js +69 -80
  10. package/dist/base.js.map +1 -1
  11. package/dist/cache/base.cjs +17 -21
  12. package/dist/cache/base.cjs.map +1 -0
  13. package/dist/cache/base.d.cts +43 -0
  14. package/dist/cache/base.d.cts.map +1 -0
  15. package/dist/cache/base.d.ts +41 -36
  16. package/dist/cache/base.d.ts.map +1 -0
  17. package/dist/cache/base.js +16 -16
  18. package/dist/cache/base.js.map +1 -1
  19. package/dist/cache/index.cjs +2 -19
  20. package/dist/cache/index.js +4 -3
  21. package/dist/cache/memory.cjs +53 -58
  22. package/dist/cache/memory.cjs.map +1 -0
  23. package/dist/cache/memory.d.cts +19 -0
  24. package/dist/cache/memory.d.cts.map +1 -0
  25. package/dist/cache/memory.d.ts +18 -13
  26. package/dist/cache/memory.d.ts.map +1 -0
  27. package/dist/cache/memory.js +52 -53
  28. package/dist/cache/memory.js.map +1 -1
  29. package/dist/id.cjs +12 -16
  30. package/dist/id.cjs.map +1 -0
  31. package/dist/id.d.cts +10 -0
  32. package/dist/id.d.cts.map +1 -0
  33. package/dist/id.d.ts +10 -2
  34. package/dist/id.d.ts.map +1 -0
  35. package/dist/id.js +10 -12
  36. package/dist/id.js.map +1 -1
  37. package/dist/index.cjs +36 -27
  38. package/dist/index.d.cts +12 -0
  39. package/dist/index.d.ts +12 -8
  40. package/dist/index.js +12 -9
  41. package/dist/memory.cjs +194 -268
  42. package/dist/memory.cjs.map +1 -0
  43. package/dist/memory.d.cts +22 -0
  44. package/dist/memory.d.cts.map +1 -0
  45. package/dist/memory.d.ts +19 -12
  46. package/dist/memory.d.ts.map +1 -0
  47. package/dist/memory.js +193 -263
  48. package/dist/memory.js.map +1 -1
  49. package/dist/serde/base.d.cts +10 -0
  50. package/dist/serde/base.d.cts.map +1 -0
  51. package/dist/serde/base.d.ts +9 -3
  52. package/dist/serde/base.d.ts.map +1 -0
  53. package/dist/serde/jsonplus.cjs +92 -141
  54. package/dist/serde/jsonplus.cjs.map +1 -0
  55. package/dist/serde/jsonplus.js +90 -136
  56. package/dist/serde/jsonplus.js.map +1 -1
  57. package/dist/serde/types.cjs +15 -9
  58. package/dist/serde/types.cjs.map +1 -0
  59. package/dist/serde/types.d.cts +55 -0
  60. package/dist/serde/types.d.cts.map +1 -0
  61. package/dist/serde/types.d.ts +53 -47
  62. package/dist/serde/types.d.ts.map +1 -0
  63. package/dist/serde/types.js +9 -5
  64. package/dist/serde/types.js.map +1 -1
  65. package/dist/serde/utils/fast-safe-stringify/index.cjs +88 -208
  66. package/dist/serde/utils/fast-safe-stringify/index.cjs.map +1 -0
  67. package/dist/serde/utils/fast-safe-stringify/index.js +87 -205
  68. package/dist/serde/utils/fast-safe-stringify/index.js.map +1 -1
  69. package/dist/store/base.cjs +200 -209
  70. package/dist/store/base.cjs.map +1 -0
  71. package/dist/store/base.d.cts +392 -0
  72. package/dist/store/base.d.cts.map +1 -0
  73. package/dist/store/base.d.ts +336 -332
  74. package/dist/store/base.d.ts.map +1 -0
  75. package/dist/store/base.js +198 -204
  76. package/dist/store/base.js.map +1 -1
  77. package/dist/store/batch.cjs +116 -147
  78. package/dist/store/batch.cjs.map +1 -0
  79. package/dist/store/batch.d.cts +49 -0
  80. package/dist/store/batch.d.cts.map +1 -0
  81. package/dist/store/batch.d.ts +48 -40
  82. package/dist/store/batch.d.ts.map +1 -0
  83. package/dist/store/batch.js +116 -143
  84. package/dist/store/batch.js.map +1 -1
  85. package/dist/store/memory.cjs +262 -363
  86. package/dist/store/memory.cjs.map +1 -0
  87. package/dist/store/memory.d.cts +64 -0
  88. package/dist/store/memory.d.cts.map +1 -0
  89. package/dist/store/memory.d.ts +30 -24
  90. package/dist/store/memory.d.ts.map +1 -0
  91. package/dist/store/memory.js +261 -358
  92. package/dist/store/memory.js.map +1 -1
  93. package/dist/store/utils.cjs +141 -249
  94. package/dist/store/utils.cjs.map +1 -0
  95. package/dist/store/utils.js +140 -245
  96. package/dist/store/utils.js.map +1 -1
  97. package/dist/types.d.cts +35 -0
  98. package/dist/types.d.cts.map +1 -0
  99. package/dist/types.d.ts +29 -28
  100. package/dist/types.d.ts.map +1 -0
  101. package/package.json +16 -18
  102. package/dist/cache/index.d.ts +0 -2
  103. package/dist/cache/index.js.map +0 -1
  104. package/dist/index.js.map +0 -1
  105. package/dist/serde/base.cjs +0 -3
  106. package/dist/serde/base.js +0 -2
  107. package/dist/serde/base.js.map +0 -1
  108. package/dist/serde/jsonplus.d.ts +0 -7
  109. package/dist/serde/utils/fast-safe-stringify/index.d.ts +0 -1
  110. package/dist/store/index.cjs +0 -20
  111. package/dist/store/index.d.ts +0 -3
  112. package/dist/store/index.js +0 -4
  113. package/dist/store/index.js.map +0 -1
  114. package/dist/store/utils.d.ts +0 -26
  115. package/dist/types.cjs +0 -3
  116. package/dist/types.js +0 -2
  117. package/dist/types.js.map +0 -1
  118. package/index.cjs +0 -1
  119. package/index.d.cts +0 -1
  120. package/index.d.ts +0 -1
  121. package/index.js +0 -1
package/dist/memory.js CHANGED
@@ -1,269 +1,199 @@
1
- import { BaseCheckpointSaver, copyCheckpoint, getCheckpointId, maxChannelVersion, WRITES_IDX_MAP, } from "./base.js";
2
1
  import { TASKS } from "./serde/types.js";
2
+ import { BaseCheckpointSaver, WRITES_IDX_MAP, copyCheckpoint, getCheckpointId, maxChannelVersion } from "./base.js";
3
+
4
+ //#region src/memory.ts
3
5
  function _generateKey(threadId, checkpointNamespace, checkpointId) {
4
- return JSON.stringify([threadId, checkpointNamespace, checkpointId]);
6
+ return JSON.stringify([
7
+ threadId,
8
+ checkpointNamespace,
9
+ checkpointId
10
+ ]);
5
11
  }
6
12
  function _parseKey(key) {
7
- const [threadId, checkpointNamespace, checkpointId] = JSON.parse(key);
8
- return { threadId, checkpointNamespace, checkpointId };
9
- }
10
- export class MemorySaver extends BaseCheckpointSaver {
11
- constructor(serde) {
12
- super(serde);
13
- // thread ID -> checkpoint namespace -> checkpoint ID -> checkpoint mapping
14
- Object.defineProperty(this, "storage", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: {}
19
- });
20
- Object.defineProperty(this, "writes", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: {}
25
- });
26
- }
27
- async _migratePendingSends(mutableCheckpoint, threadId, checkpointNs, parentCheckpointId) {
28
- const deseriablizableCheckpoint = mutableCheckpoint;
29
- const parentKey = _generateKey(threadId, checkpointNs, parentCheckpointId);
30
- const pendingSends = await Promise.all(Object.values(this.writes[parentKey] ?? {})
31
- .filter(([_taskId, channel]) => channel === TASKS)
32
- .map(async ([_taskId, _channel, writes]) => await this.serde.loadsTyped("json", writes)));
33
- deseriablizableCheckpoint.channel_values ??= {};
34
- deseriablizableCheckpoint.channel_values[TASKS] = pendingSends;
35
- deseriablizableCheckpoint.channel_versions ??= {};
36
- deseriablizableCheckpoint.channel_versions[TASKS] =
37
- Object.keys(deseriablizableCheckpoint.channel_versions).length > 0
38
- ? maxChannelVersion(...Object.values(deseriablizableCheckpoint.channel_versions))
39
- : this.getNextVersion(undefined);
40
- }
41
- async getTuple(config) {
42
- const thread_id = config.configurable?.thread_id;
43
- const checkpoint_ns = config.configurable?.checkpoint_ns ?? "";
44
- let checkpoint_id = getCheckpointId(config);
45
- if (checkpoint_id) {
46
- const saved = this.storage[thread_id]?.[checkpoint_ns]?.[checkpoint_id];
47
- if (saved !== undefined) {
48
- const [checkpoint, metadata, parentCheckpointId] = saved;
49
- const key = _generateKey(thread_id, checkpoint_ns, checkpoint_id);
50
- const deserializedCheckpoint = await this.serde.loadsTyped("json", checkpoint);
51
- if (deserializedCheckpoint.v < 4 && parentCheckpointId !== undefined) {
52
- await this._migratePendingSends(deserializedCheckpoint, thread_id, checkpoint_ns, parentCheckpointId);
53
- }
54
- const pendingWrites = await Promise.all(Object.values(this.writes[key] || {}).map(async ([taskId, channel, value]) => {
55
- return [
56
- taskId,
57
- channel,
58
- await this.serde.loadsTyped("json", value),
59
- ];
60
- }));
61
- const checkpointTuple = {
62
- config,
63
- checkpoint: deserializedCheckpoint,
64
- metadata: (await this.serde.loadsTyped("json", metadata)),
65
- pendingWrites,
66
- };
67
- if (parentCheckpointId !== undefined) {
68
- checkpointTuple.parentConfig = {
69
- configurable: {
70
- thread_id,
71
- checkpoint_ns,
72
- checkpoint_id: parentCheckpointId,
73
- },
74
- };
75
- }
76
- return checkpointTuple;
77
- }
78
- }
79
- else {
80
- const checkpoints = this.storage[thread_id]?.[checkpoint_ns];
81
- if (checkpoints !== undefined) {
82
- // eslint-disable-next-line prefer-destructuring
83
- checkpoint_id = Object.keys(checkpoints).sort((a, b) => b.localeCompare(a))[0];
84
- const saved = checkpoints[checkpoint_id];
85
- const [checkpoint, metadata, parentCheckpointId] = saved;
86
- const key = _generateKey(thread_id, checkpoint_ns, checkpoint_id);
87
- const deserializedCheckpoint = await this.serde.loadsTyped("json", checkpoint);
88
- if (deserializedCheckpoint.v < 4 && parentCheckpointId !== undefined) {
89
- await this._migratePendingSends(deserializedCheckpoint, thread_id, checkpoint_ns, parentCheckpointId);
90
- }
91
- const pendingWrites = await Promise.all(Object.values(this.writes[key] || {}).map(async ([taskId, channel, value]) => {
92
- return [
93
- taskId,
94
- channel,
95
- await this.serde.loadsTyped("json", value),
96
- ];
97
- }));
98
- const checkpointTuple = {
99
- config: {
100
- configurable: {
101
- thread_id,
102
- checkpoint_id,
103
- checkpoint_ns,
104
- },
105
- },
106
- checkpoint: deserializedCheckpoint,
107
- metadata: (await this.serde.loadsTyped("json", metadata)),
108
- pendingWrites,
109
- };
110
- if (parentCheckpointId !== undefined) {
111
- checkpointTuple.parentConfig = {
112
- configurable: {
113
- thread_id,
114
- checkpoint_ns,
115
- checkpoint_id: parentCheckpointId,
116
- },
117
- };
118
- }
119
- return checkpointTuple;
120
- }
121
- }
122
- return undefined;
123
- }
124
- async *list(config, options) {
125
- // eslint-disable-next-line prefer-const
126
- let { before, limit, filter } = options ?? {};
127
- const threadIds = config.configurable?.thread_id
128
- ? [config.configurable?.thread_id]
129
- : Object.keys(this.storage);
130
- const configCheckpointNamespace = config.configurable?.checkpoint_ns;
131
- const configCheckpointId = config.configurable?.checkpoint_id;
132
- for (const threadId of threadIds) {
133
- for (const checkpointNamespace of Object.keys(this.storage[threadId] ?? {})) {
134
- if (configCheckpointNamespace !== undefined &&
135
- checkpointNamespace !== configCheckpointNamespace) {
136
- continue;
137
- }
138
- const checkpoints = this.storage[threadId]?.[checkpointNamespace] ?? {};
139
- const sortedCheckpoints = Object.entries(checkpoints).sort((a, b) => b[0].localeCompare(a[0]));
140
- for (const [checkpointId, [checkpoint, metadataStr, parentCheckpointId],] of sortedCheckpoints) {
141
- // Filter by checkpoint ID from config
142
- if (configCheckpointId && checkpointId !== configCheckpointId) {
143
- continue;
144
- }
145
- // Filter by checkpoint ID from before config
146
- if (before &&
147
- before.configurable?.checkpoint_id &&
148
- checkpointId >= before.configurable.checkpoint_id) {
149
- continue;
150
- }
151
- // Parse metadata
152
- const metadata = (await this.serde.loadsTyped("json", metadataStr));
153
- if (filter &&
154
- !Object.entries(filter).every(([key, value]) => metadata[key] === value)) {
155
- continue;
156
- }
157
- // Limit search results
158
- if (limit !== undefined) {
159
- if (limit <= 0)
160
- break;
161
- limit -= 1;
162
- }
163
- const key = _generateKey(threadId, checkpointNamespace, checkpointId);
164
- const writes = Object.values(this.writes[key] || {});
165
- const pendingWrites = await Promise.all(writes.map(async ([taskId, channel, value]) => {
166
- return [
167
- taskId,
168
- channel,
169
- await this.serde.loadsTyped("json", value),
170
- ];
171
- }));
172
- const deserializedCheckpoint = await this.serde.loadsTyped("json", checkpoint);
173
- if (deserializedCheckpoint.v < 4 &&
174
- parentCheckpointId !== undefined) {
175
- await this._migratePendingSends(deserializedCheckpoint, threadId, checkpointNamespace, parentCheckpointId);
176
- }
177
- const checkpointTuple = {
178
- config: {
179
- configurable: {
180
- thread_id: threadId,
181
- checkpoint_ns: checkpointNamespace,
182
- checkpoint_id: checkpointId,
183
- },
184
- },
185
- checkpoint: deserializedCheckpoint,
186
- metadata,
187
- pendingWrites,
188
- };
189
- if (parentCheckpointId !== undefined) {
190
- checkpointTuple.parentConfig = {
191
- configurable: {
192
- thread_id: threadId,
193
- checkpoint_ns: checkpointNamespace,
194
- checkpoint_id: parentCheckpointId,
195
- },
196
- };
197
- }
198
- yield checkpointTuple;
199
- }
200
- }
201
- }
202
- }
203
- async put(config, checkpoint, metadata) {
204
- const preparedCheckpoint = copyCheckpoint(checkpoint);
205
- const threadId = config.configurable?.thread_id;
206
- const checkpointNamespace = config.configurable?.checkpoint_ns ?? "";
207
- if (threadId === undefined) {
208
- throw new Error(`Failed to put checkpoint. The passed RunnableConfig is missing a required "thread_id" field in its "configurable" property.`);
209
- }
210
- if (!this.storage[threadId]) {
211
- this.storage[threadId] = {};
212
- }
213
- if (!this.storage[threadId][checkpointNamespace]) {
214
- this.storage[threadId][checkpointNamespace] = {};
215
- }
216
- const [[, serializedCheckpoint], [, serializedMetadata]] = await Promise.all([
217
- this.serde.dumpsTyped(preparedCheckpoint),
218
- this.serde.dumpsTyped(metadata),
219
- ]);
220
- this.storage[threadId][checkpointNamespace][checkpoint.id] = [
221
- serializedCheckpoint,
222
- serializedMetadata,
223
- config.configurable?.checkpoint_id, // parent
224
- ];
225
- return {
226
- configurable: {
227
- thread_id: threadId,
228
- checkpoint_ns: checkpointNamespace,
229
- checkpoint_id: checkpoint.id,
230
- },
231
- };
232
- }
233
- async putWrites(config, writes, taskId) {
234
- const threadId = config.configurable?.thread_id;
235
- const checkpointNamespace = config.configurable?.checkpoint_ns;
236
- const checkpointId = config.configurable?.checkpoint_id;
237
- if (threadId === undefined) {
238
- throw new Error(`Failed to put writes. The passed RunnableConfig is missing a required "thread_id" field in its "configurable" property`);
239
- }
240
- if (checkpointId === undefined) {
241
- throw new Error(`Failed to put writes. The passed RunnableConfig is missing a required "checkpoint_id" field in its "configurable" property.`);
242
- }
243
- const outerKey = _generateKey(threadId, checkpointNamespace, checkpointId);
244
- const outerWrites_ = this.writes[outerKey];
245
- if (this.writes[outerKey] === undefined) {
246
- this.writes[outerKey] = {};
247
- }
248
- await Promise.all(writes.map(async ([channel, value], idx) => {
249
- const [, serializedValue] = await this.serde.dumpsTyped(value);
250
- const innerKey = [
251
- taskId,
252
- WRITES_IDX_MAP[channel] || idx,
253
- ];
254
- const innerKeyStr = `${innerKey[0]},${innerKey[1]}`;
255
- if (innerKey[1] >= 0 && outerWrites_ && innerKeyStr in outerWrites_) {
256
- return;
257
- }
258
- this.writes[outerKey][innerKeyStr] = [taskId, channel, serializedValue];
259
- }));
260
- }
261
- async deleteThread(threadId) {
262
- delete this.storage[threadId];
263
- for (const key of Object.keys(this.writes)) {
264
- if (_parseKey(key).threadId === threadId)
265
- delete this.writes[key];
266
- }
267
- }
13
+ const [threadId, checkpointNamespace, checkpointId] = JSON.parse(key);
14
+ return {
15
+ threadId,
16
+ checkpointNamespace,
17
+ checkpointId
18
+ };
268
19
  }
20
+ var MemorySaver = class extends BaseCheckpointSaver {
21
+ storage = {};
22
+ writes = {};
23
+ constructor(serde) {
24
+ super(serde);
25
+ }
26
+ /** @internal */
27
+ async _migratePendingSends(mutableCheckpoint, threadId, checkpointNs, parentCheckpointId) {
28
+ const deseriablizableCheckpoint = mutableCheckpoint;
29
+ const parentKey = _generateKey(threadId, checkpointNs, parentCheckpointId);
30
+ const pendingSends = await Promise.all(Object.values(this.writes[parentKey] ?? {}).filter(([_taskId, channel]) => channel === TASKS).map(async ([_taskId, _channel, writes]) => await this.serde.loadsTyped("json", writes)));
31
+ deseriablizableCheckpoint.channel_values ??= {};
32
+ deseriablizableCheckpoint.channel_values[TASKS] = pendingSends;
33
+ deseriablizableCheckpoint.channel_versions ??= {};
34
+ deseriablizableCheckpoint.channel_versions[TASKS] = Object.keys(deseriablizableCheckpoint.channel_versions).length > 0 ? maxChannelVersion(...Object.values(deseriablizableCheckpoint.channel_versions)) : this.getNextVersion(void 0);
35
+ }
36
+ async getTuple(config) {
37
+ const thread_id = config.configurable?.thread_id;
38
+ const checkpoint_ns = config.configurable?.checkpoint_ns ?? "";
39
+ let checkpoint_id = getCheckpointId(config);
40
+ if (checkpoint_id) {
41
+ const saved = this.storage[thread_id]?.[checkpoint_ns]?.[checkpoint_id];
42
+ if (saved !== void 0) {
43
+ const [checkpoint, metadata, parentCheckpointId] = saved;
44
+ const key = _generateKey(thread_id, checkpoint_ns, checkpoint_id);
45
+ const deserializedCheckpoint = await this.serde.loadsTyped("json", checkpoint);
46
+ if (deserializedCheckpoint.v < 4 && parentCheckpointId !== void 0) await this._migratePendingSends(deserializedCheckpoint, thread_id, checkpoint_ns, parentCheckpointId);
47
+ const pendingWrites = await Promise.all(Object.values(this.writes[key] || {}).map(async ([taskId, channel, value]) => {
48
+ return [
49
+ taskId,
50
+ channel,
51
+ await this.serde.loadsTyped("json", value)
52
+ ];
53
+ }));
54
+ const checkpointTuple = {
55
+ config,
56
+ checkpoint: deserializedCheckpoint,
57
+ metadata: await this.serde.loadsTyped("json", metadata),
58
+ pendingWrites
59
+ };
60
+ if (parentCheckpointId !== void 0) checkpointTuple.parentConfig = { configurable: {
61
+ thread_id,
62
+ checkpoint_ns,
63
+ checkpoint_id: parentCheckpointId
64
+ } };
65
+ return checkpointTuple;
66
+ }
67
+ } else {
68
+ const checkpoints = this.storage[thread_id]?.[checkpoint_ns];
69
+ if (checkpoints !== void 0) {
70
+ checkpoint_id = Object.keys(checkpoints).sort((a, b) => b.localeCompare(a))[0];
71
+ const saved = checkpoints[checkpoint_id];
72
+ const [checkpoint, metadata, parentCheckpointId] = saved;
73
+ const key = _generateKey(thread_id, checkpoint_ns, checkpoint_id);
74
+ const deserializedCheckpoint = await this.serde.loadsTyped("json", checkpoint);
75
+ if (deserializedCheckpoint.v < 4 && parentCheckpointId !== void 0) await this._migratePendingSends(deserializedCheckpoint, thread_id, checkpoint_ns, parentCheckpointId);
76
+ const pendingWrites = await Promise.all(Object.values(this.writes[key] || {}).map(async ([taskId, channel, value]) => {
77
+ return [
78
+ taskId,
79
+ channel,
80
+ await this.serde.loadsTyped("json", value)
81
+ ];
82
+ }));
83
+ const checkpointTuple = {
84
+ config: { configurable: {
85
+ thread_id,
86
+ checkpoint_id,
87
+ checkpoint_ns
88
+ } },
89
+ checkpoint: deserializedCheckpoint,
90
+ metadata: await this.serde.loadsTyped("json", metadata),
91
+ pendingWrites
92
+ };
93
+ if (parentCheckpointId !== void 0) checkpointTuple.parentConfig = { configurable: {
94
+ thread_id,
95
+ checkpoint_ns,
96
+ checkpoint_id: parentCheckpointId
97
+ } };
98
+ return checkpointTuple;
99
+ }
100
+ }
101
+ return void 0;
102
+ }
103
+ async *list(config, options) {
104
+ let { before, limit, filter } = options ?? {};
105
+ const threadIds = config.configurable?.thread_id ? [config.configurable?.thread_id] : Object.keys(this.storage);
106
+ const configCheckpointNamespace = config.configurable?.checkpoint_ns;
107
+ const configCheckpointId = config.configurable?.checkpoint_id;
108
+ for (const threadId of threadIds) for (const checkpointNamespace of Object.keys(this.storage[threadId] ?? {})) {
109
+ if (configCheckpointNamespace !== void 0 && checkpointNamespace !== configCheckpointNamespace) continue;
110
+ const checkpoints = this.storage[threadId]?.[checkpointNamespace] ?? {};
111
+ const sortedCheckpoints = Object.entries(checkpoints).sort((a, b) => b[0].localeCompare(a[0]));
112
+ for (const [checkpointId, [checkpoint, metadataStr, parentCheckpointId]] of sortedCheckpoints) {
113
+ if (configCheckpointId && checkpointId !== configCheckpointId) continue;
114
+ if (before && before.configurable?.checkpoint_id && checkpointId >= before.configurable.checkpoint_id) continue;
115
+ const metadata = await this.serde.loadsTyped("json", metadataStr);
116
+ if (filter && !Object.entries(filter).every(([key$1, value]) => metadata[key$1] === value)) continue;
117
+ if (limit !== void 0) {
118
+ if (limit <= 0) break;
119
+ limit -= 1;
120
+ }
121
+ const key = _generateKey(threadId, checkpointNamespace, checkpointId);
122
+ const writes = Object.values(this.writes[key] || {});
123
+ const pendingWrites = await Promise.all(writes.map(async ([taskId, channel, value]) => {
124
+ return [
125
+ taskId,
126
+ channel,
127
+ await this.serde.loadsTyped("json", value)
128
+ ];
129
+ }));
130
+ const deserializedCheckpoint = await this.serde.loadsTyped("json", checkpoint);
131
+ if (deserializedCheckpoint.v < 4 && parentCheckpointId !== void 0) await this._migratePendingSends(deserializedCheckpoint, threadId, checkpointNamespace, parentCheckpointId);
132
+ const checkpointTuple = {
133
+ config: { configurable: {
134
+ thread_id: threadId,
135
+ checkpoint_ns: checkpointNamespace,
136
+ checkpoint_id: checkpointId
137
+ } },
138
+ checkpoint: deserializedCheckpoint,
139
+ metadata,
140
+ pendingWrites
141
+ };
142
+ if (parentCheckpointId !== void 0) checkpointTuple.parentConfig = { configurable: {
143
+ thread_id: threadId,
144
+ checkpoint_ns: checkpointNamespace,
145
+ checkpoint_id: parentCheckpointId
146
+ } };
147
+ yield checkpointTuple;
148
+ }
149
+ }
150
+ }
151
+ async put(config, checkpoint, metadata) {
152
+ const preparedCheckpoint = copyCheckpoint(checkpoint);
153
+ const threadId = config.configurable?.thread_id;
154
+ const checkpointNamespace = config.configurable?.checkpoint_ns ?? "";
155
+ if (threadId === void 0) throw new Error(`Failed to put checkpoint. The passed RunnableConfig is missing a required "thread_id" field in its "configurable" property.`);
156
+ if (!this.storage[threadId]) this.storage[threadId] = {};
157
+ if (!this.storage[threadId][checkpointNamespace]) this.storage[threadId][checkpointNamespace] = {};
158
+ const [[, serializedCheckpoint], [, serializedMetadata]] = await Promise.all([this.serde.dumpsTyped(preparedCheckpoint), this.serde.dumpsTyped(metadata)]);
159
+ this.storage[threadId][checkpointNamespace][checkpoint.id] = [
160
+ serializedCheckpoint,
161
+ serializedMetadata,
162
+ config.configurable?.checkpoint_id
163
+ ];
164
+ return { configurable: {
165
+ thread_id: threadId,
166
+ checkpoint_ns: checkpointNamespace,
167
+ checkpoint_id: checkpoint.id
168
+ } };
169
+ }
170
+ async putWrites(config, writes, taskId) {
171
+ const threadId = config.configurable?.thread_id;
172
+ const checkpointNamespace = config.configurable?.checkpoint_ns;
173
+ const checkpointId = config.configurable?.checkpoint_id;
174
+ if (threadId === void 0) throw new Error(`Failed to put writes. The passed RunnableConfig is missing a required "thread_id" field in its "configurable" property`);
175
+ if (checkpointId === void 0) throw new Error(`Failed to put writes. The passed RunnableConfig is missing a required "checkpoint_id" field in its "configurable" property.`);
176
+ const outerKey = _generateKey(threadId, checkpointNamespace, checkpointId);
177
+ const outerWrites_ = this.writes[outerKey];
178
+ if (this.writes[outerKey] === void 0) this.writes[outerKey] = {};
179
+ await Promise.all(writes.map(async ([channel, value], idx) => {
180
+ const [, serializedValue] = await this.serde.dumpsTyped(value);
181
+ const innerKey = [taskId, WRITES_IDX_MAP[channel] || idx];
182
+ const innerKeyStr = `${innerKey[0]},${innerKey[1]}`;
183
+ if (innerKey[1] >= 0 && outerWrites_ && innerKeyStr in outerWrites_) return;
184
+ this.writes[outerKey][innerKeyStr] = [
185
+ taskId,
186
+ channel,
187
+ serializedValue
188
+ ];
189
+ }));
190
+ }
191
+ async deleteThread(threadId) {
192
+ delete this.storage[threadId];
193
+ for (const key of Object.keys(this.writes)) if (_parseKey(key).threadId === threadId) delete this.writes[key];
194
+ }
195
+ };
196
+
197
+ //#endregion
198
+ export { MemorySaver };
269
199
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","names":["deserializedCheckpoint: Checkpoint","pendingWrites: CheckpointPendingWrite[]","checkpointTuple: CheckpointTuple","key","preparedCheckpoint: Partial<Checkpoint>","innerKey: [string, number]"],"sources":["../src/memory.ts"],"sourcesContent":["import type { RunnableConfig } from \"@langchain/core/runnables\";\nimport {\n BaseCheckpointSaver,\n Checkpoint,\n CheckpointListOptions,\n CheckpointTuple,\n copyCheckpoint,\n getCheckpointId,\n maxChannelVersion,\n WRITES_IDX_MAP,\n} from \"./base.js\";\nimport { SerializerProtocol } from \"./serde/base.js\";\nimport {\n CheckpointMetadata,\n CheckpointPendingWrite,\n PendingWrite,\n} from \"./types.js\";\nimport { TASKS } from \"./serde/types.js\";\n\nfunction _generateKey(\n threadId: string,\n checkpointNamespace: string,\n checkpointId: string\n) {\n return JSON.stringify([threadId, checkpointNamespace, checkpointId]);\n}\n\nfunction _parseKey(key: string) {\n const [threadId, checkpointNamespace, checkpointId] = JSON.parse(key);\n return { threadId, checkpointNamespace, checkpointId };\n}\n\nexport class MemorySaver extends BaseCheckpointSaver {\n // thread ID -> checkpoint namespace -> checkpoint ID -> checkpoint mapping\n storage: Record<\n string,\n Record<string, Record<string, [Uint8Array, Uint8Array, string | undefined]>>\n > = {};\n\n writes: Record<string, Record<string, [string, string, Uint8Array]>> = {};\n\n constructor(serde?: SerializerProtocol) {\n super(serde);\n }\n\n /** @internal */\n async _migratePendingSends(\n mutableCheckpoint: Checkpoint,\n threadId: string,\n checkpointNs: string,\n parentCheckpointId: string\n ) {\n const deseriablizableCheckpoint = mutableCheckpoint;\n const parentKey = _generateKey(threadId, checkpointNs, parentCheckpointId);\n\n const pendingSends = await Promise.all(\n Object.values(this.writes[parentKey] ?? {})\n .filter(([_taskId, channel]) => channel === TASKS)\n .map(\n async ([_taskId, _channel, writes]) =>\n await this.serde.loadsTyped(\"json\", writes)\n )\n );\n\n deseriablizableCheckpoint.channel_values ??= {};\n deseriablizableCheckpoint.channel_values[TASKS] = pendingSends;\n\n deseriablizableCheckpoint.channel_versions ??= {};\n deseriablizableCheckpoint.channel_versions[TASKS] =\n Object.keys(deseriablizableCheckpoint.channel_versions).length > 0\n ? maxChannelVersion(\n ...Object.values(deseriablizableCheckpoint.channel_versions)\n )\n : this.getNextVersion(undefined);\n }\n\n async getTuple(config: RunnableConfig): Promise<CheckpointTuple | undefined> {\n const thread_id = config.configurable?.thread_id;\n const checkpoint_ns = config.configurable?.checkpoint_ns ?? \"\";\n let checkpoint_id = getCheckpointId(config);\n\n if (checkpoint_id) {\n const saved = this.storage[thread_id]?.[checkpoint_ns]?.[checkpoint_id];\n if (saved !== undefined) {\n const [checkpoint, metadata, parentCheckpointId] = saved;\n const key = _generateKey(thread_id, checkpoint_ns, checkpoint_id);\n const deserializedCheckpoint: Checkpoint = await this.serde.loadsTyped(\n \"json\",\n checkpoint\n );\n\n if (deserializedCheckpoint.v < 4 && parentCheckpointId !== undefined) {\n await this._migratePendingSends(\n deserializedCheckpoint,\n thread_id,\n checkpoint_ns,\n parentCheckpointId\n );\n }\n\n const pendingWrites: CheckpointPendingWrite[] = await Promise.all(\n Object.values(this.writes[key] || {}).map(\n async ([taskId, channel, value]) => {\n return [\n taskId,\n channel,\n await this.serde.loadsTyped(\"json\", value),\n ];\n }\n )\n );\n const checkpointTuple: CheckpointTuple = {\n config,\n checkpoint: deserializedCheckpoint,\n metadata: (await this.serde.loadsTyped(\n \"json\",\n metadata\n )) as CheckpointMetadata,\n pendingWrites,\n };\n if (parentCheckpointId !== undefined) {\n checkpointTuple.parentConfig = {\n configurable: {\n thread_id,\n checkpoint_ns,\n checkpoint_id: parentCheckpointId,\n },\n };\n }\n return checkpointTuple;\n }\n } else {\n const checkpoints = this.storage[thread_id]?.[checkpoint_ns];\n if (checkpoints !== undefined) {\n // eslint-disable-next-line prefer-destructuring\n checkpoint_id = Object.keys(checkpoints).sort((a, b) =>\n b.localeCompare(a)\n )[0];\n const saved = checkpoints[checkpoint_id];\n const [checkpoint, metadata, parentCheckpointId] = saved;\n const key = _generateKey(thread_id, checkpoint_ns, checkpoint_id);\n const deserializedCheckpoint: Checkpoint = await this.serde.loadsTyped(\n \"json\",\n checkpoint\n );\n\n if (deserializedCheckpoint.v < 4 && parentCheckpointId !== undefined) {\n await this._migratePendingSends(\n deserializedCheckpoint,\n thread_id,\n checkpoint_ns,\n parentCheckpointId\n );\n }\n\n const pendingWrites: CheckpointPendingWrite[] = await Promise.all(\n Object.values(this.writes[key] || {}).map(\n async ([taskId, channel, value]) => {\n return [\n taskId,\n channel,\n await this.serde.loadsTyped(\"json\", value),\n ];\n }\n )\n );\n const checkpointTuple: CheckpointTuple = {\n config: {\n configurable: {\n thread_id,\n checkpoint_id,\n checkpoint_ns,\n },\n },\n checkpoint: deserializedCheckpoint,\n metadata: (await this.serde.loadsTyped(\n \"json\",\n metadata\n )) as CheckpointMetadata,\n pendingWrites,\n };\n if (parentCheckpointId !== undefined) {\n checkpointTuple.parentConfig = {\n configurable: {\n thread_id,\n checkpoint_ns,\n checkpoint_id: parentCheckpointId,\n },\n };\n }\n return checkpointTuple;\n }\n }\n\n return undefined;\n }\n\n async *list(\n config: RunnableConfig,\n options?: CheckpointListOptions\n ): AsyncGenerator<CheckpointTuple> {\n // eslint-disable-next-line prefer-const\n let { before, limit, filter } = options ?? {};\n const threadIds = config.configurable?.thread_id\n ? [config.configurable?.thread_id]\n : Object.keys(this.storage);\n const configCheckpointNamespace = config.configurable?.checkpoint_ns;\n const configCheckpointId = config.configurable?.checkpoint_id;\n\n for (const threadId of threadIds) {\n for (const checkpointNamespace of Object.keys(\n this.storage[threadId] ?? {}\n )) {\n if (\n configCheckpointNamespace !== undefined &&\n checkpointNamespace !== configCheckpointNamespace\n ) {\n continue;\n }\n const checkpoints = this.storage[threadId]?.[checkpointNamespace] ?? {};\n const sortedCheckpoints = Object.entries(checkpoints).sort((a, b) =>\n b[0].localeCompare(a[0])\n );\n\n for (const [\n checkpointId,\n [checkpoint, metadataStr, parentCheckpointId],\n ] of sortedCheckpoints) {\n // Filter by checkpoint ID from config\n if (configCheckpointId && checkpointId !== configCheckpointId) {\n continue;\n }\n\n // Filter by checkpoint ID from before config\n if (\n before &&\n before.configurable?.checkpoint_id &&\n checkpointId >= before.configurable.checkpoint_id\n ) {\n continue;\n }\n\n // Parse metadata\n const metadata = (await this.serde.loadsTyped(\n \"json\",\n metadataStr\n )) as CheckpointMetadata;\n\n if (\n filter &&\n !Object.entries(filter).every(\n ([key, value]) =>\n (metadata as unknown as Record<string, unknown>)[key] === value\n )\n ) {\n continue;\n }\n\n // Limit search results\n if (limit !== undefined) {\n if (limit <= 0) break;\n limit -= 1;\n }\n\n const key = _generateKey(threadId, checkpointNamespace, checkpointId);\n const writes = Object.values(this.writes[key] || {});\n\n const pendingWrites: CheckpointPendingWrite[] = await Promise.all(\n writes.map(async ([taskId, channel, value]) => {\n return [\n taskId,\n channel,\n await this.serde.loadsTyped(\"json\", value),\n ];\n })\n );\n\n const deserializedCheckpoint = await this.serde.loadsTyped(\n \"json\",\n checkpoint\n );\n\n if (\n deserializedCheckpoint.v < 4 &&\n parentCheckpointId !== undefined\n ) {\n await this._migratePendingSends(\n deserializedCheckpoint,\n threadId,\n checkpointNamespace,\n parentCheckpointId\n );\n }\n\n const checkpointTuple: CheckpointTuple = {\n config: {\n configurable: {\n thread_id: threadId,\n checkpoint_ns: checkpointNamespace,\n checkpoint_id: checkpointId,\n },\n },\n checkpoint: deserializedCheckpoint,\n metadata,\n pendingWrites,\n };\n if (parentCheckpointId !== undefined) {\n checkpointTuple.parentConfig = {\n configurable: {\n thread_id: threadId,\n checkpoint_ns: checkpointNamespace,\n checkpoint_id: parentCheckpointId,\n },\n };\n }\n yield checkpointTuple;\n }\n }\n }\n }\n\n async put(\n config: RunnableConfig,\n checkpoint: Checkpoint,\n metadata: CheckpointMetadata\n ): Promise<RunnableConfig> {\n const preparedCheckpoint: Partial<Checkpoint> = copyCheckpoint(checkpoint);\n const threadId = config.configurable?.thread_id;\n const checkpointNamespace = config.configurable?.checkpoint_ns ?? \"\";\n if (threadId === undefined) {\n throw new Error(\n `Failed to put checkpoint. The passed RunnableConfig is missing a required \"thread_id\" field in its \"configurable\" property.`\n );\n }\n\n if (!this.storage[threadId]) {\n this.storage[threadId] = {};\n }\n if (!this.storage[threadId][checkpointNamespace]) {\n this.storage[threadId][checkpointNamespace] = {};\n }\n\n const [[, serializedCheckpoint], [, serializedMetadata]] =\n await Promise.all([\n this.serde.dumpsTyped(preparedCheckpoint),\n this.serde.dumpsTyped(metadata),\n ]);\n\n this.storage[threadId][checkpointNamespace][checkpoint.id] = [\n serializedCheckpoint,\n serializedMetadata,\n config.configurable?.checkpoint_id, // parent\n ];\n\n return {\n configurable: {\n thread_id: threadId,\n checkpoint_ns: checkpointNamespace,\n checkpoint_id: checkpoint.id,\n },\n };\n }\n\n async putWrites(\n config: RunnableConfig,\n writes: PendingWrite[],\n taskId: string\n ): Promise<void> {\n const threadId = config.configurable?.thread_id;\n const checkpointNamespace = config.configurable?.checkpoint_ns;\n const checkpointId = config.configurable?.checkpoint_id;\n if (threadId === undefined) {\n throw new Error(\n `Failed to put writes. The passed RunnableConfig is missing a required \"thread_id\" field in its \"configurable\" property`\n );\n }\n if (checkpointId === undefined) {\n throw new Error(\n `Failed to put writes. The passed RunnableConfig is missing a required \"checkpoint_id\" field in its \"configurable\" property.`\n );\n }\n const outerKey = _generateKey(threadId, checkpointNamespace, checkpointId);\n const outerWrites_ = this.writes[outerKey];\n if (this.writes[outerKey] === undefined) {\n this.writes[outerKey] = {};\n }\n\n await Promise.all(\n writes.map(async ([channel, value], idx) => {\n const [, serializedValue] = await this.serde.dumpsTyped(value);\n const innerKey: [string, number] = [\n taskId,\n WRITES_IDX_MAP[channel] || idx,\n ];\n const innerKeyStr = `${innerKey[0]},${innerKey[1]}`;\n if (innerKey[1] >= 0 && outerWrites_ && innerKeyStr in outerWrites_) {\n return;\n }\n this.writes[outerKey][innerKeyStr] = [taskId, channel, serializedValue];\n })\n );\n }\n\n async deleteThread(threadId: string): Promise<void> {\n delete this.storage[threadId];\n for (const key of Object.keys(this.writes)) {\n if (_parseKey(key).threadId === threadId) delete this.writes[key];\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ //#region src/serde/base.d.ts
2
+ interface SerializerProtocol {
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ dumpsTyped(data: any): Promise<[string, Uint8Array]>;
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ loadsTyped(type: string, data: Uint8Array | string): Promise<any>;
7
+ }
8
+ //#endregion
9
+ export { SerializerProtocol };
10
+ //# sourceMappingURL=base.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.cts","names":["SerializerProtocol","Uint8Array","Promise"],"sources":["../../src/serde/base.d.ts"],"sourcesContent":["export interface SerializerProtocol {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dumpsTyped(data: any): Promise<[string, Uint8Array]>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadsTyped(type: string, data: Uint8Array | string): Promise<any>;\n}\n"],"mappings":";UAAiBA,kBAAAA;EAAAA;EAAkB,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,EAERE,OAFQ,CAAA,CAAA,MAAA,EAESD,UAFT,CAAA,CAAA;;YAERC,CAAAA,IAAAA,EAAAA,MAAAA,EAAAA,IAAAA,EAEQD,UAFRC,GAAAA,MAAAA,CAAAA,EAE8BA,OAF9BA,CAAAA,GAAAA,CAAAA"}
@@ -1,4 +1,10 @@
1
- export interface SerializerProtocol {
2
- dumpsTyped(data: any): Promise<[string, Uint8Array]>;
3
- loadsTyped(type: string, data: Uint8Array | string): Promise<any>;
1
+ //#region src/serde/base.d.ts
2
+ interface SerializerProtocol {
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ dumpsTyped(data: any): Promise<[string, Uint8Array]>;
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ loadsTyped(type: string, data: Uint8Array | string): Promise<any>;
4
7
  }
8
+ //#endregion
9
+ export { SerializerProtocol };
10
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","names":["SerializerProtocol","Uint8Array","Promise"],"sources":["../../src/serde/base.d.ts"],"sourcesContent":["export interface SerializerProtocol {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dumpsTyped(data: any): Promise<[string, Uint8Array]>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadsTyped(type: string, data: Uint8Array | string): Promise<any>;\n}\n"],"mappings":";UAAiBA,kBAAAA;EAAAA;EAAkB,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,EAERE,OAFQ,CAAA,CAAA,MAAA,EAESD,UAFT,CAAA,CAAA;;YAERC,CAAAA,IAAAA,EAAAA,MAAAA,EAAAA,IAAAA,EAEQD,UAFRC,GAAAA,MAAAA,CAAAA,EAE8BA,OAF9BA,CAAAA,GAAAA,CAAAA"}