@langchain/langgraph-checkpoint 0.1.1 → 1.0.1

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 (120) hide show
  1. package/dist/base.cjs +73 -88
  2. package/dist/base.cjs.map +1 -0
  3. package/dist/base.d.cts +94 -0
  4. package/dist/base.d.cts.map +1 -0
  5. package/dist/base.d.ts +78 -73
  6. package/dist/base.d.ts.map +1 -0
  7. package/dist/base.js +68 -80
  8. package/dist/base.js.map +1 -1
  9. package/dist/cache/base.cjs +16 -21
  10. package/dist/cache/base.cjs.map +1 -0
  11. package/dist/cache/base.d.cts +43 -0
  12. package/dist/cache/base.d.cts.map +1 -0
  13. package/dist/cache/base.d.ts +41 -36
  14. package/dist/cache/base.d.ts.map +1 -0
  15. package/dist/cache/base.js +15 -16
  16. package/dist/cache/base.js.map +1 -1
  17. package/dist/cache/index.cjs +2 -19
  18. package/dist/cache/index.js +3 -3
  19. package/dist/cache/memory.cjs +50 -58
  20. package/dist/cache/memory.cjs.map +1 -0
  21. package/dist/cache/memory.d.cts +19 -0
  22. package/dist/cache/memory.d.cts.map +1 -0
  23. package/dist/cache/memory.d.ts +18 -13
  24. package/dist/cache/memory.d.ts.map +1 -0
  25. package/dist/cache/memory.js +49 -53
  26. package/dist/cache/memory.js.map +1 -1
  27. package/dist/id.cjs +10 -16
  28. package/dist/id.cjs.map +1 -0
  29. package/dist/id.d.cts +6 -0
  30. package/dist/id.d.cts.map +1 -0
  31. package/dist/id.d.ts +6 -2
  32. package/dist/id.d.ts.map +1 -0
  33. package/dist/id.js +9 -12
  34. package/dist/id.js.map +1 -1
  35. package/dist/index.cjs +36 -27
  36. package/dist/index.d.cts +12 -0
  37. package/dist/index.d.ts +12 -8
  38. package/dist/index.js +11 -9
  39. package/dist/memory.cjs +191 -268
  40. package/dist/memory.cjs.map +1 -0
  41. package/dist/memory.d.cts +21 -0
  42. package/dist/memory.d.cts.map +1 -0
  43. package/dist/memory.d.ts +18 -12
  44. package/dist/memory.d.ts.map +1 -0
  45. package/dist/memory.js +190 -263
  46. package/dist/memory.js.map +1 -1
  47. package/dist/serde/base.d.cts +8 -0
  48. package/dist/serde/base.d.cts.map +1 -0
  49. package/dist/serde/base.d.ts +7 -3
  50. package/dist/serde/base.d.ts.map +1 -0
  51. package/dist/serde/jsonplus.cjs +90 -141
  52. package/dist/serde/jsonplus.cjs.map +1 -0
  53. package/dist/serde/jsonplus.js +89 -136
  54. package/dist/serde/jsonplus.js.map +1 -1
  55. package/dist/serde/types.cjs +14 -9
  56. package/dist/serde/types.cjs.map +1 -0
  57. package/dist/serde/types.d.cts +52 -0
  58. package/dist/serde/types.d.cts.map +1 -0
  59. package/dist/serde/types.d.ts +50 -47
  60. package/dist/serde/types.d.ts.map +1 -0
  61. package/dist/serde/types.js +9 -5
  62. package/dist/serde/types.js.map +1 -1
  63. package/dist/serde/utils/fast-safe-stringify/index.cjs +87 -208
  64. package/dist/serde/utils/fast-safe-stringify/index.cjs.map +1 -0
  65. package/dist/serde/utils/fast-safe-stringify/index.js +87 -205
  66. package/dist/serde/utils/fast-safe-stringify/index.js.map +1 -1
  67. package/dist/store/base.cjs +199 -209
  68. package/dist/store/base.cjs.map +1 -0
  69. package/dist/store/base.d.cts +391 -0
  70. package/dist/store/base.d.cts.map +1 -0
  71. package/dist/store/base.d.ts +335 -332
  72. package/dist/store/base.d.ts.map +1 -0
  73. package/dist/store/base.js +198 -204
  74. package/dist/store/base.js.map +1 -1
  75. package/dist/store/batch.cjs +114 -147
  76. package/dist/store/batch.cjs.map +1 -0
  77. package/dist/store/batch.d.cts +46 -0
  78. package/dist/store/batch.d.cts.map +1 -0
  79. package/dist/store/batch.d.ts +45 -40
  80. package/dist/store/batch.d.ts.map +1 -0
  81. package/dist/store/batch.js +114 -143
  82. package/dist/store/batch.js.map +1 -1
  83. package/dist/store/memory.cjs +256 -363
  84. package/dist/store/memory.cjs.map +1 -0
  85. package/dist/store/memory.d.cts +62 -0
  86. package/dist/store/memory.d.cts.map +1 -0
  87. package/dist/store/memory.d.ts +28 -24
  88. package/dist/store/memory.d.ts.map +1 -0
  89. package/dist/store/memory.js +255 -358
  90. package/dist/store/memory.js.map +1 -1
  91. package/dist/store/utils.cjs +137 -249
  92. package/dist/store/utils.cjs.map +1 -0
  93. package/dist/store/utils.js +137 -245
  94. package/dist/store/utils.js.map +1 -1
  95. package/dist/types.d.cts +35 -0
  96. package/dist/types.d.cts.map +1 -0
  97. package/dist/types.d.ts +29 -28
  98. package/dist/types.d.ts.map +1 -0
  99. package/package.json +33 -34
  100. package/CHANGELOG.md +0 -19
  101. package/dist/cache/index.d.ts +0 -2
  102. package/dist/cache/index.js.map +0 -1
  103. package/dist/index.js.map +0 -1
  104. package/dist/serde/base.cjs +0 -3
  105. package/dist/serde/base.js +0 -2
  106. package/dist/serde/base.js.map +0 -1
  107. package/dist/serde/jsonplus.d.ts +0 -7
  108. package/dist/serde/utils/fast-safe-stringify/index.d.ts +0 -1
  109. package/dist/store/index.cjs +0 -20
  110. package/dist/store/index.d.ts +0 -3
  111. package/dist/store/index.js +0 -4
  112. package/dist/store/index.js.map +0 -1
  113. package/dist/store/utils.d.ts +0 -26
  114. package/dist/types.cjs +0 -3
  115. package/dist/types.js +0 -2
  116. package/dist/types.js.map +0 -1
  117. package/index.cjs +0 -1
  118. package/index.d.cts +0 -1
  119. package/index.d.ts +0 -1
  120. package/index.js +0 -1
package/dist/base.cjs CHANGED
@@ -1,104 +1,89 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WRITES_IDX_MAP = exports.BaseCheckpointSaver = void 0;
4
- exports.deepCopy = deepCopy;
5
- exports.emptyCheckpoint = emptyCheckpoint;
6
- exports.copyCheckpoint = copyCheckpoint;
7
- exports.compareChannelVersions = compareChannelVersions;
8
- exports.maxChannelVersion = maxChannelVersion;
9
- exports.getCheckpointId = getCheckpointId;
10
- const id_js_1 = require("./id.cjs");
11
- const types_js_1 = require("./serde/types.cjs");
12
- const jsonplus_js_1 = require("./serde/jsonplus.cjs");
1
+ const require_id = require("./id.cjs");
2
+ const require_types = require("./serde/types.cjs");
3
+ const require_jsonplus = require("./serde/jsonplus.cjs");
4
+ //#region src/base.ts
13
5
  function deepCopy(obj) {
14
- if (typeof obj !== "object" || obj === null) {
15
- return obj;
16
- }
17
- const newObj = Array.isArray(obj) ? [] : {};
18
- for (const key in obj) {
19
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
20
- newObj[key] = deepCopy(obj[key]);
21
- }
22
- }
23
- return newObj;
6
+ if (typeof obj !== "object" || obj === null) return obj;
7
+ const newObj = Array.isArray(obj) ? [] : {};
8
+ for (const key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = deepCopy(obj[key]);
9
+ return newObj;
24
10
  }
25
11
  /** @hidden */
26
12
  function emptyCheckpoint() {
27
- return {
28
- v: 4,
29
- id: (0, id_js_1.uuid6)(-2),
30
- ts: new Date().toISOString(),
31
- channel_values: {},
32
- channel_versions: {},
33
- versions_seen: {},
34
- };
13
+ return {
14
+ v: 4,
15
+ id: require_id.uuid6(-2),
16
+ ts: (/* @__PURE__ */ new Date()).toISOString(),
17
+ channel_values: {},
18
+ channel_versions: {},
19
+ versions_seen: {}
20
+ };
35
21
  }
36
22
  /** @hidden */
37
23
  function copyCheckpoint(checkpoint) {
38
- return {
39
- v: checkpoint.v,
40
- id: checkpoint.id,
41
- ts: checkpoint.ts,
42
- channel_values: { ...checkpoint.channel_values },
43
- channel_versions: { ...checkpoint.channel_versions },
44
- versions_seen: deepCopy(checkpoint.versions_seen),
45
- };
24
+ return {
25
+ v: checkpoint.v,
26
+ id: checkpoint.id,
27
+ ts: checkpoint.ts,
28
+ channel_values: { ...checkpoint.channel_values },
29
+ channel_versions: { ...checkpoint.channel_versions },
30
+ versions_seen: deepCopy(checkpoint.versions_seen)
31
+ };
46
32
  }
47
- class BaseCheckpointSaver {
48
- constructor(serde) {
49
- Object.defineProperty(this, "serde", {
50
- enumerable: true,
51
- configurable: true,
52
- writable: true,
53
- value: new jsonplus_js_1.JsonPlusSerializer()
54
- });
55
- this.serde = serde || this.serde;
56
- }
57
- async get(config) {
58
- const value = await this.getTuple(config);
59
- return value ? value.checkpoint : undefined;
60
- }
61
- /**
62
- * Generate the next version ID for a channel.
63
- *
64
- * Default is to use integer versions, incrementing by 1. If you override, you can use str/int/float versions,
65
- * as long as they are monotonically increasing.
66
- */
67
- getNextVersion(current) {
68
- if (typeof current === "string") {
69
- throw new Error("Please override this method to use string versions.");
70
- }
71
- return (current !== undefined && typeof current === "number" ? current + 1 : 1);
72
- }
73
- }
74
- exports.BaseCheckpointSaver = BaseCheckpointSaver;
33
+ var BaseCheckpointSaver = class {
34
+ serde = new require_jsonplus.JsonPlusSerializer();
35
+ constructor(serde) {
36
+ this.serde = serde || this.serde;
37
+ }
38
+ async get(config) {
39
+ const value = await this.getTuple(config);
40
+ return value ? value.checkpoint : void 0;
41
+ }
42
+ /**
43
+ * Generate the next version ID for a channel.
44
+ *
45
+ * Default is to use integer versions, incrementing by 1. If you override, you can use str/int/float versions,
46
+ * as long as they are monotonically increasing.
47
+ */
48
+ getNextVersion(current) {
49
+ if (typeof current === "string") throw new Error("Please override this method to use string versions.");
50
+ return current !== void 0 && typeof current === "number" ? current + 1 : 1;
51
+ }
52
+ };
75
53
  function compareChannelVersions(a, b) {
76
- if (typeof a === "number" && typeof b === "number") {
77
- return Math.sign(a - b);
78
- }
79
- return String(a).localeCompare(String(b));
54
+ if (typeof a === "number" && typeof b === "number") return Math.sign(a - b);
55
+ return String(a).localeCompare(String(b));
80
56
  }
81
57
  function maxChannelVersion(...versions) {
82
- return versions.reduce((max, version, idx) => {
83
- if (idx === 0)
84
- return version;
85
- return compareChannelVersions(max, version) >= 0 ? max : version;
86
- });
58
+ return versions.reduce((max, version, idx) => {
59
+ if (idx === 0) return version;
60
+ return compareChannelVersions(max, version) >= 0 ? max : version;
61
+ });
87
62
  }
88
63
  /**
89
- * Mapping from error type to error index.
90
- * Regular writes just map to their index in the list of writes being saved.
91
- * Special writes (e.g. errors) map to negative indices, to avoid those writes from
92
- * conflicting with regular writes.
93
- * Each Checkpointer implementation should use this mapping in put_writes.
94
- */
95
- exports.WRITES_IDX_MAP = {
96
- [types_js_1.ERROR]: -1,
97
- [types_js_1.SCHEDULED]: -2,
98
- [types_js_1.INTERRUPT]: -3,
99
- [types_js_1.RESUME]: -4,
64
+ * Mapping from error type to error index.
65
+ * Regular writes just map to their index in the list of writes being saved.
66
+ * Special writes (e.g. errors) map to negative indices, to avoid those writes from
67
+ * conflicting with regular writes.
68
+ * Each Checkpointer implementation should use this mapping in put_writes.
69
+ */
70
+ const WRITES_IDX_MAP = {
71
+ [require_types.ERROR]: -1,
72
+ [require_types.SCHEDULED]: -2,
73
+ [require_types.INTERRUPT]: -3,
74
+ [require_types.RESUME]: -4
100
75
  };
101
76
  function getCheckpointId(config) {
102
- return (config.configurable?.checkpoint_id || config.configurable?.thread_ts || "");
77
+ return config.configurable?.checkpoint_id || config.configurable?.thread_ts || "";
103
78
  }
104
- //# sourceMappingURL=base.js.map
79
+ //#endregion
80
+ exports.BaseCheckpointSaver = BaseCheckpointSaver;
81
+ exports.WRITES_IDX_MAP = WRITES_IDX_MAP;
82
+ exports.compareChannelVersions = compareChannelVersions;
83
+ exports.copyCheckpoint = copyCheckpoint;
84
+ exports.deepCopy = deepCopy;
85
+ exports.emptyCheckpoint = emptyCheckpoint;
86
+ exports.getCheckpointId = getCheckpointId;
87
+ exports.maxChannelVersion = maxChannelVersion;
88
+
89
+ //# sourceMappingURL=base.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.cjs","names":["uuid6","JsonPlusSerializer","ERROR","SCHEDULED","INTERRUPT","RESUME"],"sources":["../src/base.ts"],"sourcesContent":["import type { RunnableConfig } from \"@langchain/core/runnables\";\nimport { SerializerProtocol } from \"./serde/base.js\";\nimport { uuid6 } from \"./id.js\";\nimport type {\n PendingWrite,\n CheckpointPendingWrite,\n CheckpointMetadata,\n} from \"./types.js\";\nimport { ERROR, INTERRUPT, RESUME, SCHEDULED } from \"./serde/types.js\";\nimport { JsonPlusSerializer } from \"./serde/jsonplus.js\";\n\n/** @inline */\ntype ChannelVersion = number | string;\n\nexport type ChannelVersions = Record<string, ChannelVersion>;\n\nexport interface Checkpoint<\n N extends string = string,\n C extends string = string\n> {\n /**\n * The version of the checkpoint format. Currently 4\n */\n v: number;\n /**\n * Checkpoint ID {uuid6}\n */\n id: string;\n /**\n * Timestamp {new Date().toISOString()}\n */\n ts: string;\n /**\n * @default {}\n */\n channel_values: Record<C, unknown>;\n /**\n * @default {}\n */\n channel_versions: Record<C, ChannelVersion>;\n /**\n * @default {}\n */\n versions_seen: Record<N, Record<C, ChannelVersion>>;\n}\n\nexport interface ReadonlyCheckpoint extends Readonly<Checkpoint> {\n readonly channel_values: Readonly<Record<string, unknown>>;\n readonly channel_versions: Readonly<Record<string, ChannelVersion>>;\n readonly versions_seen: Readonly<\n Record<string, Readonly<Record<string, ChannelVersion>>>\n >;\n}\n\nexport function deepCopy<T>(obj: T): T {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n\n const newObj = Array.isArray(obj) ? [] : {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n (newObj as Record<PropertyKey, unknown>)[key] = deepCopy(\n (obj as Record<string, unknown>)[key]\n );\n }\n }\n\n return newObj as T;\n}\n\n/** @hidden */\nexport function emptyCheckpoint(): Checkpoint {\n return {\n v: 4,\n id: uuid6(-2),\n ts: new Date().toISOString(),\n channel_values: {},\n channel_versions: {},\n versions_seen: {},\n };\n}\n\n/** @hidden */\nexport function copyCheckpoint(checkpoint: ReadonlyCheckpoint): Checkpoint {\n return {\n v: checkpoint.v,\n id: checkpoint.id,\n ts: checkpoint.ts,\n channel_values: { ...checkpoint.channel_values },\n channel_versions: { ...checkpoint.channel_versions },\n versions_seen: deepCopy(checkpoint.versions_seen),\n };\n}\n\nexport interface CheckpointTuple {\n config: RunnableConfig;\n checkpoint: Checkpoint;\n metadata?: CheckpointMetadata;\n parentConfig?: RunnableConfig;\n pendingWrites?: CheckpointPendingWrite[];\n}\n\nexport type CheckpointListOptions = {\n limit?: number;\n before?: RunnableConfig;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filter?: Record<string, any>;\n};\n\nexport abstract class BaseCheckpointSaver<V extends string | number = number> {\n serde: SerializerProtocol = new JsonPlusSerializer();\n\n constructor(serde?: SerializerProtocol) {\n this.serde = serde || this.serde;\n }\n\n async get(config: RunnableConfig): Promise<Checkpoint | undefined> {\n const value = await this.getTuple(config);\n return value ? value.checkpoint : undefined;\n }\n\n abstract getTuple(\n config: RunnableConfig\n ): Promise<CheckpointTuple | undefined>;\n\n abstract list(\n config: RunnableConfig,\n options?: CheckpointListOptions\n ): AsyncGenerator<CheckpointTuple>;\n\n abstract put(\n config: RunnableConfig,\n checkpoint: Checkpoint,\n metadata: CheckpointMetadata,\n newVersions: ChannelVersions\n ): Promise<RunnableConfig>;\n\n /**\n * Store intermediate writes linked to a checkpoint.\n */\n abstract putWrites(\n config: RunnableConfig,\n writes: PendingWrite[],\n taskId: string\n ): Promise<void>;\n\n /**\n * Delete all checkpoints and writes associated with a specific thread ID.\n * @param threadId The thread ID whose checkpoints should be deleted.\n */\n abstract deleteThread(threadId: string): Promise<void>;\n\n /**\n * Generate the next version ID for a channel.\n *\n * Default is to use integer versions, incrementing by 1. If you override, you can use str/int/float versions,\n * as long as they are monotonically increasing.\n */\n getNextVersion(current: V | undefined): V {\n if (typeof current === \"string\") {\n throw new Error(\"Please override this method to use string versions.\");\n }\n return (\n current !== undefined && typeof current === \"number\" ? current + 1 : 1\n ) as V;\n }\n}\n\nexport function compareChannelVersions(\n a: ChannelVersion,\n b: ChannelVersion\n): number {\n if (typeof a === \"number\" && typeof b === \"number\") {\n return Math.sign(a - b);\n }\n\n return String(a).localeCompare(String(b));\n}\n\nexport function maxChannelVersion(\n ...versions: ChannelVersion[]\n): ChannelVersion {\n return versions.reduce((max, version, idx) => {\n if (idx === 0) return version;\n return compareChannelVersions(max, version) >= 0 ? max : version;\n });\n}\n\n/**\n * Mapping from error type to error index.\n * Regular writes just map to their index in the list of writes being saved.\n * Special writes (e.g. errors) map to negative indices, to avoid those writes from\n * conflicting with regular writes.\n * Each Checkpointer implementation should use this mapping in put_writes.\n */\nexport const WRITES_IDX_MAP: Record<string, number> = {\n [ERROR]: -1,\n [SCHEDULED]: -2,\n [INTERRUPT]: -3,\n [RESUME]: -4,\n};\n\nexport function getCheckpointId(config: RunnableConfig): string {\n return (\n config.configurable?.checkpoint_id || config.configurable?.thread_ts || \"\"\n );\n}\n"],"mappings":";;;;AAsDA,SAAgB,SAAY,KAAW;AACrC,KAAI,OAAO,QAAQ,YAAY,QAAQ,KACrC,QAAO;CAGT,MAAM,SAAS,MAAM,QAAQ,IAAI,GAAG,EAAE,GAAG,EAAE;AAE3C,MAAK,MAAM,OAAO,IAChB,KAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI,CAC/C,QAAwC,OAAO,SAC7C,IAAgC,KAClC;AAIL,QAAO;;;AAIT,SAAgB,kBAA8B;AAC5C,QAAO;EACL,GAAG;EACH,IAAIA,WAAAA,MAAM,GAAG;EACb,qBAAI,IAAI,MAAM,EAAC,aAAa;EAC5B,gBAAgB,EAAE;EAClB,kBAAkB,EAAE;EACpB,eAAe,EAAE;EAClB;;;AAIH,SAAgB,eAAe,YAA4C;AACzE,QAAO;EACL,GAAG,WAAW;EACd,IAAI,WAAW;EACf,IAAI,WAAW;EACf,gBAAgB,EAAE,GAAG,WAAW,gBAAgB;EAChD,kBAAkB,EAAE,GAAG,WAAW,kBAAkB;EACpD,eAAe,SAAS,WAAW,cAAc;EAClD;;AAkBH,IAAsB,sBAAtB,MAA8E;CAC5E,QAA4B,IAAIC,iBAAAA,oBAAoB;CAEpD,YAAY,OAA4B;AACtC,OAAK,QAAQ,SAAS,KAAK;;CAG7B,MAAM,IAAI,QAAyD;EACjE,MAAM,QAAQ,MAAM,KAAK,SAAS,OAAO;AACzC,SAAO,QAAQ,MAAM,aAAa,KAAA;;;;;;;;CAwCpC,eAAe,SAA2B;AACxC,MAAI,OAAO,YAAY,SACrB,OAAM,IAAI,MAAM,sDAAsD;AAExE,SACE,YAAY,KAAA,KAAa,OAAO,YAAY,WAAW,UAAU,IAAI;;;AAK3E,SAAgB,uBACd,GACA,GACQ;AACR,KAAI,OAAO,MAAM,YAAY,OAAO,MAAM,SACxC,QAAO,KAAK,KAAK,IAAI,EAAE;AAGzB,QAAO,OAAO,EAAE,CAAC,cAAc,OAAO,EAAE,CAAC;;AAG3C,SAAgB,kBACd,GAAG,UACa;AAChB,QAAO,SAAS,QAAQ,KAAK,SAAS,QAAQ;AAC5C,MAAI,QAAQ,EAAG,QAAO;AACtB,SAAO,uBAAuB,KAAK,QAAQ,IAAI,IAAI,MAAM;GACzD;;;;;;;;;AAUJ,MAAa,iBAAyC;EACnDC,cAAAA,QAAQ;EACRC,cAAAA,YAAY;EACZC,cAAAA,YAAY;EACZC,cAAAA,SAAS;CACX;AAED,SAAgB,gBAAgB,QAAgC;AAC9D,QACE,OAAO,cAAc,iBAAiB,OAAO,cAAc,aAAa"}
@@ -0,0 +1,94 @@
1
+ import { SerializerProtocol } from "./serde/base.cjs";
2
+ import { CheckpointMetadata, CheckpointPendingWrite, PendingWrite } from "./types.cjs";
3
+ import { RunnableConfig } from "@langchain/core/runnables";
4
+
5
+ //#region src/base.d.ts
6
+ /** @inline */
7
+ type ChannelVersion = number | string;
8
+ type ChannelVersions = Record<string, ChannelVersion>;
9
+ interface Checkpoint<N extends string = string, C extends string = string> {
10
+ /**
11
+ * The version of the checkpoint format. Currently 4
12
+ */
13
+ v: number;
14
+ /**
15
+ * Checkpoint ID {uuid6}
16
+ */
17
+ id: string;
18
+ /**
19
+ * Timestamp {new Date().toISOString()}
20
+ */
21
+ ts: string;
22
+ /**
23
+ * @default {}
24
+ */
25
+ channel_values: Record<C, unknown>;
26
+ /**
27
+ * @default {}
28
+ */
29
+ channel_versions: Record<C, ChannelVersion>;
30
+ /**
31
+ * @default {}
32
+ */
33
+ versions_seen: Record<N, Record<C, ChannelVersion>>;
34
+ }
35
+ interface ReadonlyCheckpoint extends Readonly<Checkpoint> {
36
+ readonly channel_values: Readonly<Record<string, unknown>>;
37
+ readonly channel_versions: Readonly<Record<string, ChannelVersion>>;
38
+ readonly versions_seen: Readonly<Record<string, Readonly<Record<string, ChannelVersion>>>>;
39
+ }
40
+ declare function deepCopy<T>(obj: T): T;
41
+ /** @hidden */
42
+ declare function emptyCheckpoint(): Checkpoint;
43
+ /** @hidden */
44
+ declare function copyCheckpoint(checkpoint: ReadonlyCheckpoint): Checkpoint;
45
+ interface CheckpointTuple {
46
+ config: RunnableConfig;
47
+ checkpoint: Checkpoint;
48
+ metadata?: CheckpointMetadata;
49
+ parentConfig?: RunnableConfig;
50
+ pendingWrites?: CheckpointPendingWrite[];
51
+ }
52
+ type CheckpointListOptions = {
53
+ limit?: number;
54
+ before?: RunnableConfig;
55
+ filter?: Record<string, any>;
56
+ };
57
+ declare abstract class BaseCheckpointSaver<V extends string | number = number> {
58
+ serde: SerializerProtocol;
59
+ constructor(serde?: SerializerProtocol);
60
+ get(config: RunnableConfig): Promise<Checkpoint | undefined>;
61
+ abstract getTuple(config: RunnableConfig): Promise<CheckpointTuple | undefined>;
62
+ abstract list(config: RunnableConfig, options?: CheckpointListOptions): AsyncGenerator<CheckpointTuple>;
63
+ abstract put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata, newVersions: ChannelVersions): Promise<RunnableConfig>;
64
+ /**
65
+ * Store intermediate writes linked to a checkpoint.
66
+ */
67
+ abstract putWrites(config: RunnableConfig, writes: PendingWrite[], taskId: string): Promise<void>;
68
+ /**
69
+ * Delete all checkpoints and writes associated with a specific thread ID.
70
+ * @param threadId The thread ID whose checkpoints should be deleted.
71
+ */
72
+ abstract deleteThread(threadId: string): Promise<void>;
73
+ /**
74
+ * Generate the next version ID for a channel.
75
+ *
76
+ * Default is to use integer versions, incrementing by 1. If you override, you can use str/int/float versions,
77
+ * as long as they are monotonically increasing.
78
+ */
79
+ getNextVersion(current: V | undefined): V;
80
+ }
81
+ declare function compareChannelVersions(a: ChannelVersion, b: ChannelVersion): number;
82
+ declare function maxChannelVersion(...versions: ChannelVersion[]): ChannelVersion;
83
+ /**
84
+ * Mapping from error type to error index.
85
+ * Regular writes just map to their index in the list of writes being saved.
86
+ * Special writes (e.g. errors) map to negative indices, to avoid those writes from
87
+ * conflicting with regular writes.
88
+ * Each Checkpointer implementation should use this mapping in put_writes.
89
+ */
90
+ declare const WRITES_IDX_MAP: Record<string, number>;
91
+ declare function getCheckpointId(config: RunnableConfig): string;
92
+ //#endregion
93
+ export { BaseCheckpointSaver, ChannelVersions, Checkpoint, CheckpointListOptions, CheckpointTuple, ReadonlyCheckpoint, WRITES_IDX_MAP, compareChannelVersions, copyCheckpoint, deepCopy, emptyCheckpoint, getCheckpointId, maxChannelVersion };
94
+ //# sourceMappingURL=base.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.cts","names":[],"sources":["../src/base.ts"],"mappings":";;;;;;KAYK,cAAA;AAAA,KAEO,eAAA,GAAkB,MAAA,SAAe,cAAA;AAAA,UAE5B,UAAA;;;;EAOf,CAAA;EATyB;;;EAazB,EAAA;EAXe;;;EAef,EAAA;EAIgB;;;EAAhB,cAAA,EAAgB,MAAA,CAAO,CAAA;EAQD;;;EAJtB,gBAAA,EAAkB,MAAA,CAAO,CAAA,EAAG,cAAA;EAIb;;;EAAf,aAAA,EAAe,MAAA,CAAO,CAAA,EAAG,MAAA,CAAO,CAAA,EAAG,cAAA;AAAA;AAAA,UAGpB,kBAAA,SAA2B,QAAA,CAAS,UAAA;EAAA,SAC1C,cAAA,EAAgB,QAAA,CAAS,MAAA;EAAA,SACzB,gBAAA,EAAkB,QAAA,CAAS,MAAA,SAAe,cAAA;EAAA,SAC1C,aAAA,EAAe,QAAA,CACtB,MAAA,SAAe,QAAA,CAAS,MAAA,SAAe,cAAA;AAAA;AAAA,iBAI3B,QAAA,GAAA,CAAY,GAAA,EAAK,CAAA,GAAI,CAAA;;iBAmBrB,eAAA,CAAA,GAAmB,UAAA;;iBAYnB,cAAA,CAAe,UAAA,EAAY,kBAAA,GAAqB,UAAA;AAAA,UAW/C,eAAA;EACf,MAAA,EAAQ,cAAA;EACR,UAAA,EAAY,UAAA;EACZ,QAAA,GAAW,kBAAA;EACX,YAAA,GAAe,cAAA;EACf,aAAA,GAAgB,sBAAA;AAAA;AAAA,KAGN,qBAAA;EACV,KAAA;EACA,MAAA,GAAS,cAAA;EAET,MAAA,GAAS,MAAA;AAAA;AAAA,uBAGW,mBAAA;EACpB,KAAA,EAAO,kBAAA;EAEP,WAAA,CAAY,KAAA,GAAQ,kBAAA;EAId,GAAA,CAAI,MAAA,EAAQ,cAAA,GAAiB,OAAA,CAAQ,UAAA;EAAA,SAKlC,QAAA,CACP,MAAA,EAAQ,cAAA,GACP,OAAA,CAAQ,eAAA;EAAA,SAEF,IAAA,CACP,MAAA,EAAQ,cAAA,EACR,OAAA,GAAU,qBAAA,GACT,cAAA,CAAe,eAAA;EAAA,SAET,GAAA,CACP,MAAA,EAAQ,cAAA,EACR,UAAA,EAAY,UAAA,EACZ,QAAA,EAAU,kBAAA,EACV,WAAA,EAAa,eAAA,GACZ,OAAA,CAAQ,cAAA;EAvFM;;;EAAA,SA4FR,SAAA,CACP,MAAA,EAAQ,cAAA,EACR,MAAA,EAAQ,YAAA,IACR,MAAA,WACC,OAAA;EApG+C;;;;EAAA,SA0GzC,YAAA,CAAa,QAAA,WAAmB,OAAA;EAzGhB;;;;;;EAiHzB,cAAA,CAAe,OAAA,EAAS,CAAA,eAAgB,CAAA;AAAA;AAAA,iBAU1B,sBAAA,CACd,CAAA,EAAG,cAAA,EACH,CAAA,EAAG,cAAA;AAAA,iBASW,iBAAA,CAAA,GACX,QAAA,EAAU,cAAA,KACZ,cAAA;;;;;AAjIH;;;cA+Ia,cAAA,EAAgB,MAAA;AAAA,iBAOb,eAAA,CAAgB,MAAA,EAAQ,cAAA"}
package/dist/base.d.ts CHANGED
@@ -1,82 +1,85 @@
1
- import type { RunnableConfig } from "@langchain/core/runnables";
2
1
  import { SerializerProtocol } from "./serde/base.js";
3
- import type { PendingWrite, CheckpointPendingWrite, CheckpointMetadata } from "./types.js";
2
+ import { CheckpointMetadata, CheckpointPendingWrite, PendingWrite } from "./types.js";
3
+ import { RunnableConfig } from "@langchain/core/runnables";
4
+
5
+ //#region src/base.d.ts
6
+ /** @inline */
4
7
  type ChannelVersion = number | string;
5
- export type ChannelVersions = Record<string, ChannelVersion>;
6
- export interface Checkpoint<N extends string = string, C extends string = string> {
7
- /**
8
- * The version of the checkpoint format. Currently 4
9
- */
10
- v: number;
11
- /**
12
- * Checkpoint ID {uuid6}
13
- */
14
- id: string;
15
- /**
16
- * Timestamp {new Date().toISOString()}
17
- */
18
- ts: string;
19
- /**
20
- * @default {}
21
- */
22
- channel_values: Record<C, unknown>;
23
- /**
24
- * @default {}
25
- */
26
- channel_versions: Record<C, ChannelVersion>;
27
- /**
28
- * @default {}
29
- */
30
- versions_seen: Record<N, Record<C, ChannelVersion>>;
8
+ type ChannelVersions = Record<string, ChannelVersion>;
9
+ interface Checkpoint<N extends string = string, C extends string = string> {
10
+ /**
11
+ * The version of the checkpoint format. Currently 4
12
+ */
13
+ v: number;
14
+ /**
15
+ * Checkpoint ID {uuid6}
16
+ */
17
+ id: string;
18
+ /**
19
+ * Timestamp {new Date().toISOString()}
20
+ */
21
+ ts: string;
22
+ /**
23
+ * @default {}
24
+ */
25
+ channel_values: Record<C, unknown>;
26
+ /**
27
+ * @default {}
28
+ */
29
+ channel_versions: Record<C, ChannelVersion>;
30
+ /**
31
+ * @default {}
32
+ */
33
+ versions_seen: Record<N, Record<C, ChannelVersion>>;
31
34
  }
32
- export interface ReadonlyCheckpoint extends Readonly<Checkpoint> {
33
- readonly channel_values: Readonly<Record<string, unknown>>;
34
- readonly channel_versions: Readonly<Record<string, ChannelVersion>>;
35
- readonly versions_seen: Readonly<Record<string, Readonly<Record<string, ChannelVersion>>>>;
35
+ interface ReadonlyCheckpoint extends Readonly<Checkpoint> {
36
+ readonly channel_values: Readonly<Record<string, unknown>>;
37
+ readonly channel_versions: Readonly<Record<string, ChannelVersion>>;
38
+ readonly versions_seen: Readonly<Record<string, Readonly<Record<string, ChannelVersion>>>>;
36
39
  }
37
- export declare function deepCopy<T>(obj: T): T;
40
+ declare function deepCopy<T>(obj: T): T;
38
41
  /** @hidden */
39
- export declare function emptyCheckpoint(): Checkpoint;
42
+ declare function emptyCheckpoint(): Checkpoint;
40
43
  /** @hidden */
41
- export declare function copyCheckpoint(checkpoint: ReadonlyCheckpoint): Checkpoint;
42
- export interface CheckpointTuple {
43
- config: RunnableConfig;
44
- checkpoint: Checkpoint;
45
- metadata?: CheckpointMetadata;
46
- parentConfig?: RunnableConfig;
47
- pendingWrites?: CheckpointPendingWrite[];
44
+ declare function copyCheckpoint(checkpoint: ReadonlyCheckpoint): Checkpoint;
45
+ interface CheckpointTuple {
46
+ config: RunnableConfig;
47
+ checkpoint: Checkpoint;
48
+ metadata?: CheckpointMetadata;
49
+ parentConfig?: RunnableConfig;
50
+ pendingWrites?: CheckpointPendingWrite[];
48
51
  }
49
- export type CheckpointListOptions = {
50
- limit?: number;
51
- before?: RunnableConfig;
52
- filter?: Record<string, any>;
52
+ type CheckpointListOptions = {
53
+ limit?: number;
54
+ before?: RunnableConfig;
55
+ filter?: Record<string, any>;
53
56
  };
54
- export declare abstract class BaseCheckpointSaver<V extends string | number = number> {
55
- serde: SerializerProtocol;
56
- constructor(serde?: SerializerProtocol);
57
- get(config: RunnableConfig): Promise<Checkpoint | undefined>;
58
- abstract getTuple(config: RunnableConfig): Promise<CheckpointTuple | undefined>;
59
- abstract list(config: RunnableConfig, options?: CheckpointListOptions): AsyncGenerator<CheckpointTuple>;
60
- abstract put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata, newVersions: ChannelVersions): Promise<RunnableConfig>;
61
- /**
62
- * Store intermediate writes linked to a checkpoint.
63
- */
64
- abstract putWrites(config: RunnableConfig, writes: PendingWrite[], taskId: string): Promise<void>;
65
- /**
66
- * Delete all checkpoints and writes associated with a specific thread ID.
67
- * @param threadId The thread ID whose checkpoints should be deleted.
68
- */
69
- abstract deleteThread(threadId: string): Promise<void>;
70
- /**
71
- * Generate the next version ID for a channel.
72
- *
73
- * Default is to use integer versions, incrementing by 1. If you override, you can use str/int/float versions,
74
- * as long as they are monotonically increasing.
75
- */
76
- getNextVersion(current: V | undefined): V;
57
+ declare abstract class BaseCheckpointSaver<V extends string | number = number> {
58
+ serde: SerializerProtocol;
59
+ constructor(serde?: SerializerProtocol);
60
+ get(config: RunnableConfig): Promise<Checkpoint | undefined>;
61
+ abstract getTuple(config: RunnableConfig): Promise<CheckpointTuple | undefined>;
62
+ abstract list(config: RunnableConfig, options?: CheckpointListOptions): AsyncGenerator<CheckpointTuple>;
63
+ abstract put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata, newVersions: ChannelVersions): Promise<RunnableConfig>;
64
+ /**
65
+ * Store intermediate writes linked to a checkpoint.
66
+ */
67
+ abstract putWrites(config: RunnableConfig, writes: PendingWrite[], taskId: string): Promise<void>;
68
+ /**
69
+ * Delete all checkpoints and writes associated with a specific thread ID.
70
+ * @param threadId The thread ID whose checkpoints should be deleted.
71
+ */
72
+ abstract deleteThread(threadId: string): Promise<void>;
73
+ /**
74
+ * Generate the next version ID for a channel.
75
+ *
76
+ * Default is to use integer versions, incrementing by 1. If you override, you can use str/int/float versions,
77
+ * as long as they are monotonically increasing.
78
+ */
79
+ getNextVersion(current: V | undefined): V;
77
80
  }
78
- export declare function compareChannelVersions(a: ChannelVersion, b: ChannelVersion): number;
79
- export declare function maxChannelVersion(...versions: ChannelVersion[]): ChannelVersion;
81
+ declare function compareChannelVersions(a: ChannelVersion, b: ChannelVersion): number;
82
+ declare function maxChannelVersion(...versions: ChannelVersion[]): ChannelVersion;
80
83
  /**
81
84
  * Mapping from error type to error index.
82
85
  * Regular writes just map to their index in the list of writes being saved.
@@ -84,6 +87,8 @@ export declare function maxChannelVersion(...versions: ChannelVersion[]): Channe
84
87
  * conflicting with regular writes.
85
88
  * Each Checkpointer implementation should use this mapping in put_writes.
86
89
  */
87
- export declare const WRITES_IDX_MAP: Record<string, number>;
88
- export declare function getCheckpointId(config: RunnableConfig): string;
89
- export {};
90
+ declare const WRITES_IDX_MAP: Record<string, number>;
91
+ declare function getCheckpointId(config: RunnableConfig): string;
92
+ //#endregion
93
+ export { BaseCheckpointSaver, ChannelVersions, Checkpoint, CheckpointListOptions, CheckpointTuple, ReadonlyCheckpoint, WRITES_IDX_MAP, compareChannelVersions, copyCheckpoint, deepCopy, emptyCheckpoint, getCheckpointId, maxChannelVersion };
94
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","names":[],"sources":["../src/base.ts"],"mappings":";;;;;;KAYK,cAAA;AAAA,KAEO,eAAA,GAAkB,MAAA,SAAe,cAAA;AAAA,UAE5B,UAAA;;;;EAOf,CAAA;EATyB;;;EAazB,EAAA;EAXe;;;EAef,EAAA;EAIgB;;;EAAhB,cAAA,EAAgB,MAAA,CAAO,CAAA;EAQD;;;EAJtB,gBAAA,EAAkB,MAAA,CAAO,CAAA,EAAG,cAAA;EAIb;;;EAAf,aAAA,EAAe,MAAA,CAAO,CAAA,EAAG,MAAA,CAAO,CAAA,EAAG,cAAA;AAAA;AAAA,UAGpB,kBAAA,SAA2B,QAAA,CAAS,UAAA;EAAA,SAC1C,cAAA,EAAgB,QAAA,CAAS,MAAA;EAAA,SACzB,gBAAA,EAAkB,QAAA,CAAS,MAAA,SAAe,cAAA;EAAA,SAC1C,aAAA,EAAe,QAAA,CACtB,MAAA,SAAe,QAAA,CAAS,MAAA,SAAe,cAAA;AAAA;AAAA,iBAI3B,QAAA,GAAA,CAAY,GAAA,EAAK,CAAA,GAAI,CAAA;;iBAmBrB,eAAA,CAAA,GAAmB,UAAA;;iBAYnB,cAAA,CAAe,UAAA,EAAY,kBAAA,GAAqB,UAAA;AAAA,UAW/C,eAAA;EACf,MAAA,EAAQ,cAAA;EACR,UAAA,EAAY,UAAA;EACZ,QAAA,GAAW,kBAAA;EACX,YAAA,GAAe,cAAA;EACf,aAAA,GAAgB,sBAAA;AAAA;AAAA,KAGN,qBAAA;EACV,KAAA;EACA,MAAA,GAAS,cAAA;EAET,MAAA,GAAS,MAAA;AAAA;AAAA,uBAGW,mBAAA;EACpB,KAAA,EAAO,kBAAA;EAEP,WAAA,CAAY,KAAA,GAAQ,kBAAA;EAId,GAAA,CAAI,MAAA,EAAQ,cAAA,GAAiB,OAAA,CAAQ,UAAA;EAAA,SAKlC,QAAA,CACP,MAAA,EAAQ,cAAA,GACP,OAAA,CAAQ,eAAA;EAAA,SAEF,IAAA,CACP,MAAA,EAAQ,cAAA,EACR,OAAA,GAAU,qBAAA,GACT,cAAA,CAAe,eAAA;EAAA,SAET,GAAA,CACP,MAAA,EAAQ,cAAA,EACR,UAAA,EAAY,UAAA,EACZ,QAAA,EAAU,kBAAA,EACV,WAAA,EAAa,eAAA,GACZ,OAAA,CAAQ,cAAA;EAvFM;;;EAAA,SA4FR,SAAA,CACP,MAAA,EAAQ,cAAA,EACR,MAAA,EAAQ,YAAA,IACR,MAAA,WACC,OAAA;EApG+C;;;;EAAA,SA0GzC,YAAA,CAAa,QAAA,WAAmB,OAAA;EAzGhB;;;;;;EAiHzB,cAAA,CAAe,OAAA,EAAS,CAAA,eAAgB,CAAA;AAAA;AAAA,iBAU1B,sBAAA,CACd,CAAA,EAAG,cAAA,EACH,CAAA,EAAG,cAAA;AAAA,iBASW,iBAAA,CAAA,GACX,QAAA,EAAU,cAAA,KACZ,cAAA;;;;;AAjIH;;;cA+Ia,cAAA,EAAgB,MAAA;AAAA,iBAOb,eAAA,CAAgB,MAAA,EAAQ,cAAA"}
package/dist/base.js CHANGED
@@ -1,94 +1,82 @@
1
1
  import { uuid6 } from "./id.js";
2
2
  import { ERROR, INTERRUPT, RESUME, SCHEDULED } from "./serde/types.js";
3
3
  import { JsonPlusSerializer } from "./serde/jsonplus.js";
4
- export function deepCopy(obj) {
5
- if (typeof obj !== "object" || obj === null) {
6
- return obj;
7
- }
8
- const newObj = Array.isArray(obj) ? [] : {};
9
- for (const key in obj) {
10
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
11
- newObj[key] = deepCopy(obj[key]);
12
- }
13
- }
14
- return newObj;
4
+ //#region src/base.ts
5
+ function deepCopy(obj) {
6
+ if (typeof obj !== "object" || obj === null) return obj;
7
+ const newObj = Array.isArray(obj) ? [] : {};
8
+ for (const key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = deepCopy(obj[key]);
9
+ return newObj;
15
10
  }
16
11
  /** @hidden */
17
- export function emptyCheckpoint() {
18
- return {
19
- v: 4,
20
- id: uuid6(-2),
21
- ts: new Date().toISOString(),
22
- channel_values: {},
23
- channel_versions: {},
24
- versions_seen: {},
25
- };
12
+ function emptyCheckpoint() {
13
+ return {
14
+ v: 4,
15
+ id: uuid6(-2),
16
+ ts: (/* @__PURE__ */ new Date()).toISOString(),
17
+ channel_values: {},
18
+ channel_versions: {},
19
+ versions_seen: {}
20
+ };
26
21
  }
27
22
  /** @hidden */
28
- export function copyCheckpoint(checkpoint) {
29
- return {
30
- v: checkpoint.v,
31
- id: checkpoint.id,
32
- ts: checkpoint.ts,
33
- channel_values: { ...checkpoint.channel_values },
34
- channel_versions: { ...checkpoint.channel_versions },
35
- versions_seen: deepCopy(checkpoint.versions_seen),
36
- };
23
+ function copyCheckpoint(checkpoint) {
24
+ return {
25
+ v: checkpoint.v,
26
+ id: checkpoint.id,
27
+ ts: checkpoint.ts,
28
+ channel_values: { ...checkpoint.channel_values },
29
+ channel_versions: { ...checkpoint.channel_versions },
30
+ versions_seen: deepCopy(checkpoint.versions_seen)
31
+ };
37
32
  }
38
- export class BaseCheckpointSaver {
39
- constructor(serde) {
40
- Object.defineProperty(this, "serde", {
41
- enumerable: true,
42
- configurable: true,
43
- writable: true,
44
- value: new JsonPlusSerializer()
45
- });
46
- this.serde = serde || this.serde;
47
- }
48
- async get(config) {
49
- const value = await this.getTuple(config);
50
- return value ? value.checkpoint : undefined;
51
- }
52
- /**
53
- * Generate the next version ID for a channel.
54
- *
55
- * Default is to use integer versions, incrementing by 1. If you override, you can use str/int/float versions,
56
- * as long as they are monotonically increasing.
57
- */
58
- getNextVersion(current) {
59
- if (typeof current === "string") {
60
- throw new Error("Please override this method to use string versions.");
61
- }
62
- return (current !== undefined && typeof current === "number" ? current + 1 : 1);
63
- }
64
- }
65
- export function compareChannelVersions(a, b) {
66
- if (typeof a === "number" && typeof b === "number") {
67
- return Math.sign(a - b);
68
- }
69
- return String(a).localeCompare(String(b));
33
+ var BaseCheckpointSaver = class {
34
+ serde = new JsonPlusSerializer();
35
+ constructor(serde) {
36
+ this.serde = serde || this.serde;
37
+ }
38
+ async get(config) {
39
+ const value = await this.getTuple(config);
40
+ return value ? value.checkpoint : void 0;
41
+ }
42
+ /**
43
+ * Generate the next version ID for a channel.
44
+ *
45
+ * Default is to use integer versions, incrementing by 1. If you override, you can use str/int/float versions,
46
+ * as long as they are monotonically increasing.
47
+ */
48
+ getNextVersion(current) {
49
+ if (typeof current === "string") throw new Error("Please override this method to use string versions.");
50
+ return current !== void 0 && typeof current === "number" ? current + 1 : 1;
51
+ }
52
+ };
53
+ function compareChannelVersions(a, b) {
54
+ if (typeof a === "number" && typeof b === "number") return Math.sign(a - b);
55
+ return String(a).localeCompare(String(b));
70
56
  }
71
- export function maxChannelVersion(...versions) {
72
- return versions.reduce((max, version, idx) => {
73
- if (idx === 0)
74
- return version;
75
- return compareChannelVersions(max, version) >= 0 ? max : version;
76
- });
57
+ function maxChannelVersion(...versions) {
58
+ return versions.reduce((max, version, idx) => {
59
+ if (idx === 0) return version;
60
+ return compareChannelVersions(max, version) >= 0 ? max : version;
61
+ });
77
62
  }
78
63
  /**
79
- * Mapping from error type to error index.
80
- * Regular writes just map to their index in the list of writes being saved.
81
- * Special writes (e.g. errors) map to negative indices, to avoid those writes from
82
- * conflicting with regular writes.
83
- * Each Checkpointer implementation should use this mapping in put_writes.
84
- */
85
- export const WRITES_IDX_MAP = {
86
- [ERROR]: -1,
87
- [SCHEDULED]: -2,
88
- [INTERRUPT]: -3,
89
- [RESUME]: -4,
64
+ * Mapping from error type to error index.
65
+ * Regular writes just map to their index in the list of writes being saved.
66
+ * Special writes (e.g. errors) map to negative indices, to avoid those writes from
67
+ * conflicting with regular writes.
68
+ * Each Checkpointer implementation should use this mapping in put_writes.
69
+ */
70
+ const WRITES_IDX_MAP = {
71
+ [ERROR]: -1,
72
+ [SCHEDULED]: -2,
73
+ [INTERRUPT]: -3,
74
+ [RESUME]: -4
90
75
  };
91
- export function getCheckpointId(config) {
92
- return (config.configurable?.checkpoint_id || config.configurable?.thread_ts || "");
76
+ function getCheckpointId(config) {
77
+ return config.configurable?.checkpoint_id || config.configurable?.thread_ts || "";
93
78
  }
79
+ //#endregion
80
+ export { BaseCheckpointSaver, WRITES_IDX_MAP, compareChannelVersions, copyCheckpoint, deepCopy, emptyCheckpoint, getCheckpointId, maxChannelVersion };
81
+
94
82
  //# sourceMappingURL=base.js.map