@farukada/aws-langgraph-dynamodb-ts 1.0.0-rc.2 → 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 (409) hide show
  1. package/README.md +390 -193
  2. package/dist/{backfill → cjs/backfill}/backfill.d.ts +15 -12
  3. package/dist/cjs/backfill/backfill.js +177 -0
  4. package/dist/{checkpointer → cjs/checkpointer}/actions/delete-thread.d.ts +1 -1
  5. package/dist/cjs/checkpointer/actions/delete-thread.js +26 -0
  6. package/dist/{checkpointer → cjs/checkpointer}/actions/get-tuple.d.ts +4 -3
  7. package/dist/cjs/checkpointer/actions/get-tuple.js +22 -0
  8. package/dist/{checkpointer → cjs/checkpointer}/actions/list.d.ts +7 -4
  9. package/dist/cjs/checkpointer/actions/list.js +70 -0
  10. package/dist/{checkpointer → cjs/checkpointer}/actions/put-writes.d.ts +8 -6
  11. package/dist/cjs/checkpointer/actions/put-writes.js +21 -0
  12. package/dist/{checkpointer → cjs/checkpointer}/actions/put.d.ts +21 -15
  13. package/dist/cjs/checkpointer/actions/put.js +79 -0
  14. package/dist/{checkpointer → cjs/checkpointer}/internal/delta-history.d.ts +38 -26
  15. package/dist/cjs/checkpointer/internal/delta-history.js +131 -0
  16. package/dist/{checkpointer → cjs/checkpointer}/internal/listing.d.ts +4 -4
  17. package/dist/cjs/checkpointer/internal/listing.js +104 -0
  18. package/dist/{checkpointer → cjs/checkpointer}/internal/parse.d.ts +51 -15
  19. package/dist/cjs/checkpointer/internal/parse.js +184 -0
  20. package/dist/{checkpointer → cjs/checkpointer}/internal/pending-writes.d.ts +64 -25
  21. package/dist/cjs/checkpointer/internal/pending-writes.js +241 -0
  22. package/dist/{checkpointer → cjs/checkpointer}/internal/read.d.ts +15 -10
  23. package/dist/cjs/checkpointer/internal/read.js +132 -0
  24. package/dist/{checkpointer → cjs/checkpointer}/internal/rows.d.ts +94 -21
  25. package/dist/cjs/checkpointer/internal/rows.js +356 -0
  26. package/dist/{checkpointer → cjs/checkpointer}/internal/setup.d.ts +13 -20
  27. package/dist/cjs/checkpointer/internal/setup.js +25 -0
  28. package/dist/{checkpointer → cjs/checkpointer}/saver.d.ts +72 -36
  29. package/dist/cjs/checkpointer/saver.js +56 -0
  30. package/dist/{checkpointer → cjs/checkpointer}/types.d.ts +1 -1
  31. package/dist/cjs/checkpointer/types.js +2 -0
  32. package/dist/{factory → cjs/factory}/factory.d.ts +25 -20
  33. package/dist/cjs/factory/factory.js +137 -0
  34. package/dist/{factory → cjs/factory}/types.d.ts +12 -12
  35. package/dist/cjs/factory/types.js +2 -0
  36. package/dist/{history → cjs/history}/actions/add-messages.d.ts +18 -10
  37. package/dist/cjs/history/actions/add-messages.js +17 -0
  38. package/dist/{history → cjs/history}/actions/clear.d.ts +1 -1
  39. package/dist/cjs/history/actions/clear.js +29 -0
  40. package/dist/{history → cjs/history}/actions/get-messages.d.ts +11 -9
  41. package/dist/cjs/history/actions/get-messages.js +58 -0
  42. package/dist/{history → cjs/history}/actions/list-sessions.d.ts +3 -3
  43. package/dist/cjs/history/actions/list-sessions.js +67 -0
  44. package/dist/{history → cjs/history}/actions/reconcile-count.d.ts +13 -9
  45. package/dist/cjs/history/actions/reconcile-count.js +8 -0
  46. package/dist/{history → cjs/history}/chat-message-history.d.ts +62 -30
  47. package/dist/cjs/history/chat-message-history.js +61 -0
  48. package/dist/{history → cjs/history}/internal/append.d.ts +64 -32
  49. package/dist/cjs/history/internal/append.js +267 -0
  50. package/dist/{history → cjs/history}/internal/message-read.d.ts +3 -3
  51. package/dist/cjs/history/internal/message-read.js +93 -0
  52. package/dist/{history → cjs/history}/internal/parse.d.ts +2 -2
  53. package/dist/cjs/history/internal/parse.js +113 -0
  54. package/dist/{history → cjs/history}/internal/rows.d.ts +11 -10
  55. package/dist/cjs/history/internal/rows.js +96 -0
  56. package/dist/{history → cjs/history}/internal/session.d.ts +41 -22
  57. package/dist/cjs/history/internal/session.js +296 -0
  58. package/dist/{history → cjs/history}/internal/setup.d.ts +2 -2
  59. package/dist/cjs/history/internal/setup.js +60 -0
  60. package/dist/{history → cjs/history}/session-adapter.d.ts +0 -6
  61. package/dist/cjs/history/session-adapter.js +38 -0
  62. package/dist/{history → cjs/history}/types.d.ts +18 -15
  63. package/dist/cjs/history/types.js +2 -0
  64. package/dist/{index.d.ts → cjs/index.d.ts} +27 -27
  65. package/dist/cjs/index.js +25 -0
  66. package/dist/cjs/package.json +1 -0
  67. package/dist/{shared → cjs/shared}/adapter.d.ts +27 -16
  68. package/dist/cjs/shared/adapter.js +70 -0
  69. package/dist/cjs/shared/clock.js +14 -0
  70. package/dist/{shared → cjs/shared}/codec/codec.d.ts +37 -20
  71. package/dist/cjs/shared/codec/codec.js +162 -0
  72. package/dist/{shared → cjs/shared}/codec/compression.d.ts +9 -4
  73. package/dist/cjs/shared/codec/compression.js +45 -0
  74. package/dist/cjs/shared/codec/json-serde.js +58 -0
  75. package/dist/{shared → cjs/shared}/codec/s3/client-types.d.ts +2 -1
  76. package/dist/cjs/shared/codec/s3/client-types.js +6 -0
  77. package/dist/{shared → cjs/shared}/codec/s3/client.d.ts +25 -7
  78. package/dist/cjs/shared/codec/s3/client.js +78 -0
  79. package/dist/{shared → cjs/shared}/codec/s3/config.d.ts +12 -7
  80. package/dist/cjs/shared/codec/s3/config.js +92 -0
  81. package/dist/{shared → cjs/shared}/codec/s3/lifecycle.d.ts +71 -17
  82. package/dist/cjs/shared/codec/s3/lifecycle.js +223 -0
  83. package/dist/{shared → cjs/shared}/codec/s3/offloader.d.ts +42 -29
  84. package/dist/cjs/shared/codec/s3/offloader.js +289 -0
  85. package/dist/cjs/shared/concurrency.js +31 -0
  86. package/dist/{shared → cjs/shared}/dynamodb/abort.d.ts +2 -2
  87. package/dist/cjs/shared/dynamodb/abort.js +16 -0
  88. package/dist/{shared → cjs/shared}/dynamodb/batch-write.d.ts +2 -2
  89. package/dist/cjs/shared/dynamodb/batch-write.js +79 -0
  90. package/dist/cjs/shared/dynamodb/cancellation.js +37 -0
  91. package/dist/{shared → cjs/shared}/dynamodb/client.d.ts +24 -22
  92. package/dist/cjs/shared/dynamodb/client.js +40 -0
  93. package/dist/{shared → cjs/shared}/dynamodb/idempotent-write.d.ts +64 -19
  94. package/dist/cjs/shared/dynamodb/idempotent-write.js +173 -0
  95. package/dist/{shared → cjs/shared}/dynamodb/paginate.d.ts +2 -2
  96. package/dist/cjs/shared/dynamodb/paginate.js +90 -0
  97. package/dist/{shared → cjs/shared}/dynamodb/partition-delete.d.ts +6 -6
  98. package/dist/cjs/shared/dynamodb/partition-delete.js +177 -0
  99. package/dist/{shared → cjs/shared}/dynamodb/recency-index.d.ts +27 -15
  100. package/dist/cjs/shared/dynamodb/recency-index.js +146 -0
  101. package/dist/{shared → cjs/shared}/dynamodb/retry.d.ts +37 -6
  102. package/dist/cjs/shared/dynamodb/retry.js +193 -0
  103. package/dist/cjs/shared/dynamodb/row-size.d.ts +33 -0
  104. package/dist/cjs/shared/dynamodb/row-size.js +30 -0
  105. package/dist/{shared → cjs/shared}/dynamodb/table-schema.d.ts +27 -18
  106. package/dist/cjs/shared/dynamodb/table-schema.js +52 -0
  107. package/dist/{shared → cjs/shared}/errors/base-error.d.ts +42 -7
  108. package/dist/cjs/shared/errors/base-error.js +73 -0
  109. package/dist/{shared → cjs/shared}/errors/boundary.d.ts +29 -14
  110. package/dist/cjs/shared/errors/boundary.js +61 -0
  111. package/dist/cjs/shared/errors/classify.d.ts +206 -0
  112. package/dist/cjs/shared/errors/classify.js +232 -0
  113. package/dist/{shared → cjs/shared}/errors/error-code.d.ts +17 -10
  114. package/dist/cjs/shared/errors/error-code.js +27 -0
  115. package/dist/{shared → cjs/shared}/errors/errors.d.ts +75 -9
  116. package/dist/cjs/shared/errors/errors.js +123 -0
  117. package/dist/cjs/shared/logging/logger.js +30 -0
  118. package/dist/{shared → cjs/shared}/logging/redaction.d.ts +8 -4
  119. package/dist/cjs/shared/logging/redaction.js +145 -0
  120. package/dist/{shared → cjs/shared}/logging/secret-patterns.d.ts +30 -7
  121. package/dist/cjs/shared/logging/secret-patterns.js +93 -0
  122. package/dist/cjs/shared/logging/truncate.js +31 -0
  123. package/dist/{shared → cjs/shared}/options.d.ts +27 -11
  124. package/dist/cjs/shared/options.js +2 -0
  125. package/dist/cjs/shared/ulid.js +83 -0
  126. package/dist/{shared → cjs/shared}/validation/collaborators.d.ts +21 -2
  127. package/dist/cjs/shared/validation/collaborators.js +79 -0
  128. package/dist/{shared → cjs/shared}/validation/option-shape.d.ts +7 -5
  129. package/dist/cjs/shared/validation/option-shape.js +31 -0
  130. package/dist/{shared → cjs/shared}/validation/options.d.ts +4 -4
  131. package/dist/cjs/shared/validation/options.js +166 -0
  132. package/dist/cjs/shared/validation/primitives.js +114 -0
  133. package/dist/{shared → cjs/shared}/validation/ttl.d.ts +26 -9
  134. package/dist/cjs/shared/validation/ttl.js +52 -0
  135. package/dist/{store → cjs/store}/actions/list-namespaces.d.ts +5 -5
  136. package/dist/cjs/store/actions/list-namespaces.js +92 -0
  137. package/dist/{store → cjs/store}/actions/put.d.ts +11 -4
  138. package/dist/cjs/store/actions/put.js +49 -0
  139. package/dist/{store → cjs/store}/actions/reconcile-vector-index.d.ts +5 -5
  140. package/dist/cjs/store/actions/reconcile-vector-index.js +13 -0
  141. package/dist/{store → cjs/store}/actions/search.d.ts +2 -2
  142. package/dist/cjs/store/actions/search.js +26 -0
  143. package/dist/cjs/store/internal/batch-plan.d.ts +56 -0
  144. package/dist/cjs/store/internal/batch-plan.js +32 -0
  145. package/dist/{store → cjs/store}/internal/filter.d.ts +3 -3
  146. package/dist/cjs/store/internal/filter.js +64 -0
  147. package/dist/cjs/store/internal/get-item.d.ts +77 -0
  148. package/dist/cjs/store/internal/get-item.js +58 -0
  149. package/dist/{store → cjs/store}/internal/item-write.d.ts +72 -32
  150. package/dist/cjs/store/internal/item-write.js +181 -0
  151. package/dist/{store → cjs/store}/internal/parse.d.ts +15 -10
  152. package/dist/cjs/store/internal/parse.js +180 -0
  153. package/dist/{store → cjs/store}/internal/rows.d.ts +38 -34
  154. package/dist/cjs/store/internal/rows.js +166 -0
  155. package/dist/{store → cjs/store}/internal/semantic-search.d.ts +2 -2
  156. package/dist/cjs/store/internal/semantic-search.js +211 -0
  157. package/dist/{store → cjs/store}/internal/setup.d.ts +10 -15
  158. package/dist/cjs/store/internal/setup.js +103 -0
  159. package/dist/{store → cjs/store}/internal/table-search.d.ts +5 -5
  160. package/dist/cjs/store/internal/table-search.js +123 -0
  161. package/dist/{store → cjs/store}/internal/vector-index.d.ts +26 -15
  162. package/dist/cjs/store/internal/vector-index.js +269 -0
  163. package/dist/{store → cjs/store}/store.d.ts +82 -39
  164. package/dist/cjs/store/store.js +97 -0
  165. package/dist/{store → cjs/store}/types.d.ts +25 -10
  166. package/dist/cjs/store/types.js +2 -0
  167. package/dist/cjs/store/vector-backend.js +4 -0
  168. package/dist/esm/backfill/backfill.d.ts +171 -0
  169. package/dist/esm/backfill/backfill.js +170 -0
  170. package/dist/{checkpointer/actions/delete-thread.js → esm/checkpointer/actions/delete-thread.d.ts} +4 -26
  171. package/dist/esm/checkpointer/actions/delete-thread.js +23 -0
  172. package/dist/{checkpointer/actions/get-tuple.js → esm/checkpointer/actions/get-tuple.d.ts} +7 -24
  173. package/dist/esm/checkpointer/actions/get-tuple.js +19 -0
  174. package/dist/esm/checkpointer/actions/list.d.ts +55 -0
  175. package/dist/esm/checkpointer/actions/list.js +67 -0
  176. package/dist/{checkpointer/actions/put-writes.js → esm/checkpointer/actions/put-writes.d.ts} +10 -37
  177. package/dist/esm/checkpointer/actions/put-writes.js +18 -0
  178. package/dist/esm/checkpointer/actions/put.d.ts +95 -0
  179. package/dist/esm/checkpointer/actions/put.js +75 -0
  180. package/dist/esm/checkpointer/internal/delta-history.d.ts +124 -0
  181. package/dist/esm/checkpointer/internal/delta-history.js +126 -0
  182. package/dist/{checkpointer/internal/listing.js → esm/checkpointer/internal/listing.d.ts} +22 -118
  183. package/dist/esm/checkpointer/internal/listing.js +95 -0
  184. package/dist/esm/checkpointer/internal/parse.d.ts +298 -0
  185. package/dist/esm/checkpointer/internal/parse.js +169 -0
  186. package/dist/esm/checkpointer/internal/pending-writes.d.ts +314 -0
  187. package/dist/esm/checkpointer/internal/pending-writes.js +229 -0
  188. package/dist/esm/checkpointer/internal/read.d.ts +135 -0
  189. package/dist/esm/checkpointer/internal/read.js +125 -0
  190. package/dist/esm/checkpointer/internal/rows.d.ts +644 -0
  191. package/dist/esm/checkpointer/internal/rows.js +323 -0
  192. package/dist/esm/checkpointer/internal/setup.d.ts +47 -0
  193. package/dist/esm/checkpointer/internal/setup.js +21 -0
  194. package/dist/{checkpointer/saver.js → esm/checkpointer/saver.d.ts} +84 -87
  195. package/dist/esm/checkpointer/saver.js +52 -0
  196. package/dist/esm/checkpointer/types.d.ts +51 -0
  197. package/dist/esm/checkpointer/types.js +1 -0
  198. package/dist/esm/factory/factory.d.ts +154 -0
  199. package/dist/esm/factory/factory.js +133 -0
  200. package/dist/esm/factory/types.d.ts +76 -0
  201. package/dist/esm/factory/types.js +1 -0
  202. package/dist/{history/actions/add-messages.js → esm/history/actions/add-messages.d.ts} +20 -26
  203. package/dist/esm/history/actions/add-messages.js +14 -0
  204. package/dist/{history/actions/clear.js → esm/history/actions/clear.d.ts} +4 -35
  205. package/dist/esm/history/actions/clear.js +26 -0
  206. package/dist/esm/history/actions/get-messages.d.ts +60 -0
  207. package/dist/esm/history/actions/get-messages.js +55 -0
  208. package/dist/esm/history/actions/list-sessions.d.ts +55 -0
  209. package/dist/esm/history/actions/list-sessions.js +64 -0
  210. package/dist/{history/actions/reconcile-count.js → esm/history/actions/reconcile-count.d.ts} +14 -16
  211. package/dist/esm/history/actions/reconcile-count.js +5 -0
  212. package/dist/{history/chat-message-history.js → esm/history/chat-message-history.d.ts} +76 -87
  213. package/dist/esm/history/chat-message-history.js +57 -0
  214. package/dist/esm/history/internal/append.d.ts +244 -0
  215. package/dist/esm/history/internal/append.js +259 -0
  216. package/dist/esm/history/internal/message-read.d.ts +84 -0
  217. package/dist/esm/history/internal/message-read.js +89 -0
  218. package/dist/esm/history/internal/parse.d.ts +153 -0
  219. package/dist/esm/history/internal/parse.js +105 -0
  220. package/dist/{history/internal/rows.js → esm/history/internal/rows.d.ts} +58 -112
  221. package/dist/esm/history/internal/rows.js +83 -0
  222. package/dist/esm/history/internal/session.d.ts +350 -0
  223. package/dist/esm/history/internal/session.js +285 -0
  224. package/dist/esm/history/internal/setup.d.ts +64 -0
  225. package/dist/esm/history/internal/setup.js +56 -0
  226. package/dist/{history/session-adapter.js → esm/history/session-adapter.d.ts} +25 -39
  227. package/dist/esm/history/session-adapter.js +34 -0
  228. package/dist/esm/history/types.d.ts +102 -0
  229. package/dist/esm/history/types.js +1 -0
  230. package/dist/esm/index.d.ts +53 -0
  231. package/dist/esm/index.js +10 -0
  232. package/dist/esm/shared/adapter.d.ts +146 -0
  233. package/dist/esm/shared/adapter.js +65 -0
  234. package/dist/{shared/clock.js → esm/shared/clock.d.ts} +3 -14
  235. package/dist/esm/shared/clock.js +9 -0
  236. package/dist/esm/shared/codec/codec.d.ts +336 -0
  237. package/dist/esm/shared/codec/codec.js +150 -0
  238. package/dist/esm/shared/codec/compression.d.ts +66 -0
  239. package/dist/esm/shared/codec/compression.js +40 -0
  240. package/dist/esm/shared/codec/json-serde.d.ts +80 -0
  241. package/dist/esm/shared/codec/json-serde.js +54 -0
  242. package/dist/esm/shared/codec/s3/client-types.d.ts +54 -0
  243. package/dist/esm/shared/codec/s3/client-types.js +3 -0
  244. package/dist/esm/shared/codec/s3/client.d.ts +63 -0
  245. package/dist/esm/shared/codec/s3/client.js +40 -0
  246. package/dist/{shared/codec/s3/config.js → esm/shared/codec/s3/config.d.ts} +45 -93
  247. package/dist/esm/shared/codec/s3/config.js +79 -0
  248. package/dist/esm/shared/codec/s3/lifecycle.d.ts +220 -0
  249. package/dist/esm/shared/codec/s3/lifecycle.js +214 -0
  250. package/dist/esm/shared/codec/s3/offloader.d.ts +428 -0
  251. package/dist/esm/shared/codec/s3/offloader.js +278 -0
  252. package/dist/{shared/concurrency.js → esm/shared/concurrency.d.ts} +2 -37
  253. package/dist/esm/shared/concurrency.js +27 -0
  254. package/dist/{shared/dynamodb/abort.js → esm/shared/dynamodb/abort.d.ts} +4 -16
  255. package/dist/esm/shared/dynamodb/abort.js +12 -0
  256. package/dist/esm/shared/dynamodb/batch-write.d.ts +86 -0
  257. package/dist/esm/shared/dynamodb/batch-write.js +74 -0
  258. package/dist/{shared/dynamodb/cancellation.js → esm/shared/dynamodb/cancellation.d.ts} +25 -53
  259. package/dist/esm/shared/dynamodb/cancellation.js +30 -0
  260. package/dist/{shared/dynamodb/client.js → esm/shared/dynamodb/client.d.ts} +74 -64
  261. package/dist/esm/shared/dynamodb/client.js +35 -0
  262. package/dist/{shared/dynamodb/idempotent-write.js → esm/shared/dynamodb/idempotent-write.d.ts} +172 -169
  263. package/dist/esm/shared/dynamodb/idempotent-write.js +153 -0
  264. package/dist/esm/shared/dynamodb/paginate.d.ts +111 -0
  265. package/dist/esm/shared/dynamodb/paginate.js +84 -0
  266. package/dist/esm/shared/dynamodb/partition-delete.d.ts +204 -0
  267. package/dist/esm/shared/dynamodb/partition-delete.js +171 -0
  268. package/dist/esm/shared/dynamodb/recency-index.d.ts +243 -0
  269. package/dist/esm/shared/dynamodb/recency-index.js +136 -0
  270. package/dist/esm/shared/dynamodb/retry.d.ts +317 -0
  271. package/dist/esm/shared/dynamodb/retry.js +180 -0
  272. package/dist/esm/shared/dynamodb/row-size.d.ts +33 -0
  273. package/dist/esm/shared/dynamodb/row-size.js +26 -0
  274. package/dist/{shared/dynamodb/table-schema.js → esm/shared/dynamodb/table-schema.d.ts} +57 -67
  275. package/dist/esm/shared/dynamodb/table-schema.js +43 -0
  276. package/dist/esm/shared/errors/base-error.d.ts +231 -0
  277. package/dist/esm/shared/errors/base-error.js +64 -0
  278. package/dist/esm/shared/errors/boundary.d.ts +86 -0
  279. package/dist/esm/shared/errors/boundary.js +54 -0
  280. package/dist/esm/shared/errors/classify.d.ts +206 -0
  281. package/dist/esm/shared/errors/classify.js +220 -0
  282. package/dist/{shared/errors/error-code.js → esm/shared/errors/error-code.d.ts} +39 -43
  283. package/dist/esm/shared/errors/error-code.js +24 -0
  284. package/dist/{shared/errors/errors.js → esm/shared/errors/errors.d.ts} +92 -98
  285. package/dist/esm/shared/errors/errors.js +110 -0
  286. package/dist/{shared/logging/logger.js → esm/shared/logging/logger.d.ts} +22 -52
  287. package/dist/esm/shared/logging/logger.js +25 -0
  288. package/dist/esm/shared/logging/redaction.d.ts +123 -0
  289. package/dist/esm/shared/logging/redaction.js +140 -0
  290. package/dist/{shared/logging/secret-patterns.js → esm/shared/logging/secret-patterns.d.ts} +46 -87
  291. package/dist/esm/shared/logging/secret-patterns.js +83 -0
  292. package/dist/{shared/logging/truncate.js → esm/shared/logging/truncate.d.ts} +6 -40
  293. package/dist/esm/shared/logging/truncate.js +25 -0
  294. package/dist/esm/shared/options.d.ts +100 -0
  295. package/dist/esm/shared/options.js +1 -0
  296. package/dist/{shared/ulid.js → esm/shared/ulid.d.ts} +4 -84
  297. package/dist/esm/shared/ulid.js +77 -0
  298. package/dist/{shared/validation/collaborators.js → esm/shared/validation/collaborators.d.ts} +37 -65
  299. package/dist/esm/shared/validation/collaborators.js +70 -0
  300. package/dist/{shared/validation/option-shape.js → esm/shared/validation/option-shape.d.ts} +14 -36
  301. package/dist/esm/shared/validation/option-shape.js +24 -0
  302. package/dist/esm/shared/validation/options.d.ts +145 -0
  303. package/dist/esm/shared/validation/options.js +156 -0
  304. package/dist/{shared/validation/primitives.js → esm/shared/validation/primitives.d.ts} +30 -125
  305. package/dist/esm/shared/validation/primitives.js +100 -0
  306. package/dist/esm/shared/validation/ttl.d.ts +94 -0
  307. package/dist/esm/shared/validation/ttl.js +46 -0
  308. package/dist/esm/store/actions/list-namespaces.d.ts +79 -0
  309. package/dist/esm/store/actions/list-namespaces.js +86 -0
  310. package/dist/esm/store/actions/put.d.ts +43 -0
  311. package/dist/esm/store/actions/put.js +46 -0
  312. package/dist/{store/actions/reconcile-vector-index.js → esm/store/actions/reconcile-vector-index.d.ts} +8 -16
  313. package/dist/esm/store/actions/reconcile-vector-index.js +10 -0
  314. package/dist/esm/store/actions/search.d.ts +38 -0
  315. package/dist/esm/store/actions/search.js +23 -0
  316. package/dist/esm/store/internal/batch-plan.d.ts +56 -0
  317. package/dist/esm/store/internal/batch-plan.js +28 -0
  318. package/dist/esm/store/internal/filter.d.ts +43 -0
  319. package/dist/esm/store/internal/filter.js +60 -0
  320. package/dist/esm/store/internal/get-item.d.ts +77 -0
  321. package/dist/esm/store/internal/get-item.js +54 -0
  322. package/dist/esm/store/internal/item-write.d.ts +270 -0
  323. package/dist/esm/store/internal/item-write.js +173 -0
  324. package/dist/esm/store/internal/parse.d.ts +230 -0
  325. package/dist/esm/store/internal/parse.js +169 -0
  326. package/dist/{store/internal/rows.js → esm/store/internal/rows.d.ts} +111 -199
  327. package/dist/esm/store/internal/rows.js +147 -0
  328. package/dist/esm/store/internal/semantic-search.d.ts +168 -0
  329. package/dist/esm/store/internal/semantic-search.js +200 -0
  330. package/dist/esm/store/internal/setup.d.ts +96 -0
  331. package/dist/esm/store/internal/setup.js +98 -0
  332. package/dist/esm/store/internal/table-search.d.ts +100 -0
  333. package/dist/esm/store/internal/table-search.js +119 -0
  334. package/dist/esm/store/internal/vector-index.d.ts +258 -0
  335. package/dist/esm/store/internal/vector-index.js +256 -0
  336. package/dist/{store/store.js → esm/store/store.d.ts} +99 -133
  337. package/dist/esm/store/store.js +93 -0
  338. package/dist/esm/store/types.d.ts +111 -0
  339. package/dist/esm/store/types.js +1 -0
  340. package/dist/esm/store/vector-backend.d.ts +104 -0
  341. package/dist/esm/store/vector-backend.js +1 -0
  342. package/package.json +50 -44
  343. package/dist/backfill/backfill.js +0 -393
  344. package/dist/checkpointer/actions/list.js +0 -142
  345. package/dist/checkpointer/actions/put.js +0 -195
  346. package/dist/checkpointer/internal/delta-history.js +0 -252
  347. package/dist/checkpointer/internal/parse.js +0 -372
  348. package/dist/checkpointer/internal/pending-writes.js +0 -588
  349. package/dist/checkpointer/internal/read.js +0 -264
  350. package/dist/checkpointer/internal/rows.js +0 -834
  351. package/dist/checkpointer/internal/setup.js +0 -72
  352. package/dist/checkpointer/types.js +0 -12
  353. package/dist/factory/factory.js +0 -266
  354. package/dist/factory/types.js +0 -10
  355. package/dist/history/actions/get-messages.js +0 -141
  356. package/dist/history/actions/list-sessions.js +0 -156
  357. package/dist/history/internal/append.js +0 -500
  358. package/dist/history/internal/message-read.js +0 -204
  359. package/dist/history/internal/parse.js +0 -252
  360. package/dist/history/internal/session.js +0 -628
  361. package/dist/history/internal/setup.js +0 -106
  362. package/dist/history/types.js +0 -12
  363. package/dist/index.js +0 -51
  364. package/dist/shared/adapter.js +0 -143
  365. package/dist/shared/codec/codec.js +0 -441
  366. package/dist/shared/codec/compression.js +0 -89
  367. package/dist/shared/codec/json-serde.js +0 -191
  368. package/dist/shared/codec/s3/client-types.js +0 -26
  369. package/dist/shared/codec/s3/client.js +0 -97
  370. package/dist/shared/codec/s3/lifecycle.js +0 -355
  371. package/dist/shared/codec/s3/offloader.js +0 -658
  372. package/dist/shared/dynamodb/batch-write.js +0 -173
  373. package/dist/shared/dynamodb/paginate.js +0 -188
  374. package/dist/shared/dynamodb/partition-delete.js +0 -340
  375. package/dist/shared/dynamodb/recency-index.js +0 -377
  376. package/dist/shared/dynamodb/retry.js +0 -463
  377. package/dist/shared/errors/base-error.js +0 -174
  378. package/dist/shared/errors/boundary.js +0 -143
  379. package/dist/shared/errors/classify.d.ts +0 -97
  380. package/dist/shared/errors/classify.js +0 -257
  381. package/dist/shared/logging/redaction.js +0 -316
  382. package/dist/shared/options.js +0 -11
  383. package/dist/shared/validation/options.js +0 -328
  384. package/dist/shared/validation/ttl.js +0 -132
  385. package/dist/store/actions/list-namespaces.js +0 -197
  386. package/dist/store/actions/put.js +0 -78
  387. package/dist/store/actions/search.js +0 -66
  388. package/dist/store/internal/batch-plan.d.ts +0 -26
  389. package/dist/store/internal/batch-plan.js +0 -109
  390. package/dist/store/internal/filter.js +0 -137
  391. package/dist/store/internal/get-item.d.ts +0 -45
  392. package/dist/store/internal/get-item.js +0 -115
  393. package/dist/store/internal/item-write.js +0 -463
  394. package/dist/store/internal/parse.js +0 -350
  395. package/dist/store/internal/semantic-search.js +0 -389
  396. package/dist/store/internal/setup.js +0 -223
  397. package/dist/store/internal/table-search.js +0 -213
  398. package/dist/store/internal/vector-index.js +0 -546
  399. package/dist/store/types.js +0 -15
  400. package/dist/store/vector-backend.js +0 -17
  401. /package/dist/{shared → cjs/shared}/clock.d.ts +0 -0
  402. /package/dist/{shared → cjs/shared}/codec/json-serde.d.ts +0 -0
  403. /package/dist/{shared → cjs/shared}/concurrency.d.ts +0 -0
  404. /package/dist/{shared → cjs/shared}/dynamodb/cancellation.d.ts +0 -0
  405. /package/dist/{shared → cjs/shared}/logging/logger.d.ts +0 -0
  406. /package/dist/{shared → cjs/shared}/logging/truncate.d.ts +0 -0
  407. /package/dist/{shared → cjs/shared}/ulid.d.ts +0 -0
  408. /package/dist/{shared → cjs/shared}/validation/primitives.d.ts +0 -0
  409. /package/dist/{store → cjs/store}/vector-backend.d.ts +0 -0
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Hides where a listing's META rows come from and which of them pass its filters.
4
3
  *
@@ -8,22 +7,12 @@
8
7
  * and a row passes only when its key fields match the scope and, when the caller
9
8
  * gave a filter, its decoded metadata equals the filter clause for clause.
10
9
  */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.listQuery = listQuery;
13
- exports.listScan = listScan;
14
- exports.passesKeyFilters = passesKeyFilters;
15
- exports.passesMetadataFilter = passesMetadataFilter;
16
- exports.metaRows = metaRows;
17
- exports.parseListedRow = parseListedRow;
18
- exports.matchesFilter = matchesFilter;
19
- const node_util_1 = require("node:util");
20
- const concurrency_1 = require("../../shared/concurrency");
21
- const paginate_1 = require("../../shared/dynamodb/paginate");
22
- const recency_index_1 = require("../../shared/dynamodb/recency-index");
23
- const retry_1 = require("../../shared/dynamodb/retry");
24
- const table_schema_1 = require("../../shared/dynamodb/table-schema");
25
- const truncate_1 = require("../../shared/logging/truncate");
26
- const rows_1 = require("./rows");
10
+ import type { QueryCommandInput, ScanCommandInput } from '@aws-sdk/lib-dynamodb';
11
+ import type { CheckpointMetadata } from '@langchain/langgraph-checkpoint';
12
+ import type { AttributeMap } from '../../shared/dynamodb/client.js';
13
+ import type { FilterValue, ListScope, ThreadId } from './parse.js';
14
+ import { type CheckpointMetaRow } from './rows.js';
15
+ import type { CheckpointerContext } from './setup.js';
27
16
  /**
28
17
  * The META query for a scope that names a thread.
29
18
  *
@@ -39,17 +28,9 @@ const rows_1 = require("./rows");
39
28
  *
40
29
  * Throws: nothing.
41
30
  */
42
- function listQuery(context, scope) {
43
- const partition = (0, rows_1.partitionKey)(scope.threadId);
44
- const limit = scope.filter === undefined ? scope.limit : undefined;
45
- if (scope.checkpointNs === undefined) {
46
- return (0, rows_1.beginsWithQuery)(context.tableName, partition, (0, rows_1.metaAnyNamespacePrefix)(), { limit });
47
- }
48
- return (0, rows_1.beginsWithQuery)(context.tableName, partition, (0, rows_1.metaSortKeyPrefix)(scope.checkpointNs), {
49
- limit,
50
- beforeSortKey: scope.before === undefined ? undefined : (0, rows_1.metaSortKey)(scope.checkpointNs, scope.before),
51
- });
52
- }
31
+ export declare function listQuery(context: CheckpointerContext, scope: ListScope & {
32
+ threadId: ThreadId;
33
+ }): QueryCommandInput;
53
34
  /**
54
35
  * The table `Scan` a thread-less `list()` runs when no recency index is
55
36
  * configured.
@@ -64,19 +45,7 @@ function listQuery(context, scope) {
64
45
  *
65
46
  * Throws: nothing.
66
47
  */
67
- function listScan(context, scope) {
68
- return {
69
- TableName: context.tableName,
70
- FilterExpression: 'begins_with(#pk, :pk) AND begins_with(#sk, :sk)',
71
- ExpressionAttributeNames: { '#pk': table_schema_1.PARTITION_KEY_ATTRIBUTE, '#sk': table_schema_1.SORT_KEY_ATTRIBUTE },
72
- ExpressionAttributeValues: {
73
- ':pk': (0, rows_1.checkpointerPartitionPrefix)(),
74
- ':sk': scope.checkpointNs === undefined
75
- ? (0, rows_1.metaAnyNamespacePrefix)()
76
- : (0, rows_1.metaSortKeyPrefix)(scope.checkpointNs),
77
- },
78
- };
79
- }
48
+ export declare function listScan(context: CheckpointerContext, scope: ListScope): ScanCommandInput;
80
49
  /**
81
50
  * Whether `meta` passes the key-level filters.
82
51
  *
@@ -97,11 +66,14 @@ function listScan(context, scope) {
97
66
  *
98
67
  * Throws: nothing.
99
68
  */
100
- function passesKeyFilters(meta, scope) {
101
- return ((scope.before === undefined || (0, table_schema_1.compareSortKeys)(meta.checkpointId, scope.before) < 0) &&
102
- (scope.checkpointNs === undefined || meta.checkpointNs === scope.checkpointNs) &&
103
- (scope.checkpointId === undefined || meta.checkpointId === scope.checkpointId));
104
- }
69
+ export declare function passesKeyFilters(meta: CheckpointMetaRow, scope: ListScope): boolean;
70
+ /** Outcome of the metadata filter: rejected, or accepted with any metadata decoded on the way. */
71
+ export type MetadataVerdict = {
72
+ pass: false;
73
+ } | {
74
+ pass: true;
75
+ metadata?: CheckpointMetadata;
76
+ };
105
77
  /**
106
78
  * Apply the optional metadata-equality filter.
107
79
  *
@@ -117,47 +89,7 @@ function passesKeyFilters(meta, scope) {
117
89
  * Throws: whatever the decode throws. Metadata that decodes to something that
118
90
  * is not an object matches no filter clause rather than failing the listing.
119
91
  */
120
- async function passesMetadataFilter(context, meta, scope) {
121
- if (!scope.filter)
122
- return { pass: true };
123
- const metadata = await (0, rows_1.readMetadata)(context, meta, meta.threadId, scope.signal);
124
- return matchesFilter(metadata, scope.filter) ? { pass: true, metadata } : { pass: false };
125
- }
126
- /**
127
- * Every checkpoint META row of the table, newest first, without a thread to
128
- * scope the read.
129
- *
130
- * From the recency index when `indexName` is set, 100 rows a page: each shard
131
- * is read one DynamoDB page at a time, and its next page whenever it has no row
132
- * buffered and the page still needs one, with at most `readConcurrency` shards
133
- * queried at once, so memory is the page being built plus at most one DynamoDB
134
- * page per shard. Without `indexName` it is a table `Scan`: read capacity for
135
- * every row evaluated, not every row returned. The index path needs
136
- * `backfillRecencyIndex` to have run, or rows written before the index are not
137
- * in it.
138
- */
139
- function threadlessRows(context, scope, now) {
140
- if (context.indexName === undefined) {
141
- return (0, paginate_1.paginateScan)({
142
- retry: (0, retry_1.retryFor)(context, scope.signal),
143
- signal: scope.signal,
144
- client: context.client,
145
- params: (0, table_schema_1.withoutExpired)(listScan(context, scope), now),
146
- maxItems: Number.POSITIVE_INFINITY,
147
- maxIterations: Number.POSITIVE_INFINITY,
148
- });
149
- }
150
- return (0, recency_index_1.iterateRecencyIndex)({
151
- client: context.client,
152
- tableName: context.tableName,
153
- indexName: context.indexName,
154
- tag: 'CHKPT',
155
- shards: context.indexShards ?? recency_index_1.DEFAULT_INDEX_SHARDS,
156
- concurrency: context.readConcurrency ?? concurrency_1.DEFAULT_READ_CONCURRENCY,
157
- retry: (0, retry_1.retryFor)(context, scope.signal),
158
- signal: scope.signal,
159
- });
160
- }
92
+ export declare function passesMetadataFilter(context: CheckpointerContext, meta: CheckpointMetaRow, scope: ListScope): Promise<MetadataVerdict>;
161
93
  /**
162
94
  * The META rows a scope covers: a partition query when the scope names a
163
95
  * thread, and {@link threadlessRows} when it does not.
@@ -178,19 +110,7 @@ function threadlessRows(context, scope, now) {
178
110
  * for a handful of rare matches over a large thread into a hard error instead
179
111
  * of the true answer.
180
112
  */
181
- function metaRows(context, scope, now) {
182
- const retry = (0, retry_1.retryFor)(context, scope.signal);
183
- const bounds = { maxItems: Number.POSITIVE_INFINITY, maxIterations: Number.POSITIVE_INFINITY };
184
- return scope.threadId === undefined
185
- ? threadlessRows(context, scope, now)
186
- : (0, paginate_1.paginateQuery)({
187
- retry,
188
- signal: scope.signal,
189
- client: context.client,
190
- params: (0, table_schema_1.withoutExpired)(listQuery(context, { ...scope, threadId: scope.threadId }), now),
191
- ...bounds,
192
- });
193
- }
113
+ export declare function metaRows(context: CheckpointerContext, scope: ListScope, now: number): AsyncGenerator<AttributeMap>;
194
114
  /**
195
115
  * Narrow a row from that stream, saying so when it is not one of ours.
196
116
  *
@@ -205,21 +125,7 @@ function metaRows(context, scope, now) {
205
125
  * Guarantees: a foreign row is skipped, never assembled. Treating one as a
206
126
  * checkpoint would surface a tuple built from another adapter's data.
207
127
  */
208
- function parseListedRow(context, raw) {
209
- const meta = (0, rows_1.parseMetaRow)(raw);
210
- if (!meta) {
211
- context.logger.warn('list: skipped a row that is not a checkpoint meta item', {
212
- sortKey: (0, truncate_1.truncateForLog)(raw.SK),
213
- });
214
- }
215
- return meta;
216
- }
217
- /** The value `metadata` holds at `key`, or undefined when it holds no such own property. */
218
- function ownValue(metadata, key) {
219
- if (metadata === null || typeof metadata !== 'object')
220
- return undefined;
221
- return Object.hasOwn(metadata, key) ? metadata[key] : undefined;
222
- }
128
+ export declare function parseListedRow(context: CheckpointerContext, raw: AttributeMap): CheckpointMetaRow | undefined;
223
129
  /**
224
130
  * Whether `metadata` satisfies every clause of `filter`.
225
131
  *
@@ -240,6 +146,4 @@ function ownValue(metadata, key) {
240
146
  * `toString` compares against nothing rather than against the prototype's
241
147
  * function — the same rule the store's filter applies.
242
148
  */
243
- function matchesFilter(metadata, filter) {
244
- return Object.entries(filter).every(([key, value]) => (0, node_util_1.isDeepStrictEqual)(ownValue(metadata, key), value));
245
- }
149
+ export declare function matchesFilter(metadata: Record<string, FilterValue>, filter: Record<string, FilterValue>): boolean;
@@ -0,0 +1,95 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ import { DEFAULT_READ_CONCURRENCY } from '../../shared/concurrency.js';
3
+ import { paginateQuery, paginateScan } from '../../shared/dynamodb/paginate.js';
4
+ import { DEFAULT_INDEX_SHARDS, iterateRecencyIndex } from '../../shared/dynamodb/recency-index.js';
5
+ import { retryFor } from '../../shared/dynamodb/retry.js';
6
+ import { compareSortKeys, PARTITION_KEY_ATTRIBUTE, SORT_KEY_ATTRIBUTE, withoutExpired, } from '../../shared/dynamodb/table-schema.js';
7
+ import { truncateForLog } from '../../shared/logging/truncate.js';
8
+ import { beginsWithQuery, checkpointerPartitionPrefix, metaAnyNamespacePrefix, metaSortKey, metaSortKeyPrefix, parseMetaRow, partitionKey, readMetadata, } from './rows.js';
9
+ export function listQuery(context, scope) {
10
+ const partition = partitionKey(scope.threadId);
11
+ const limit = scope.filter === undefined ? scope.limit : undefined;
12
+ if (scope.checkpointNs === undefined) {
13
+ return beginsWithQuery(context.tableName, partition, metaAnyNamespacePrefix(), { limit });
14
+ }
15
+ return beginsWithQuery(context.tableName, partition, metaSortKeyPrefix(scope.checkpointNs), {
16
+ limit,
17
+ beforeSortKey: scope.before === undefined ? undefined : metaSortKey(scope.checkpointNs, scope.before),
18
+ });
19
+ }
20
+ export function listScan(context, scope) {
21
+ return {
22
+ TableName: context.tableName,
23
+ FilterExpression: 'begins_with(#pk, :pk) AND begins_with(#sk, :sk)',
24
+ ExpressionAttributeNames: { '#pk': PARTITION_KEY_ATTRIBUTE, '#sk': SORT_KEY_ATTRIBUTE },
25
+ ExpressionAttributeValues: {
26
+ ':pk': checkpointerPartitionPrefix(),
27
+ ':sk': scope.checkpointNs === undefined
28
+ ? metaAnyNamespacePrefix()
29
+ : metaSortKeyPrefix(scope.checkpointNs),
30
+ },
31
+ };
32
+ }
33
+ export function passesKeyFilters(meta, scope) {
34
+ return ((scope.before === undefined || compareSortKeys(meta.checkpointId, scope.before) < 0) &&
35
+ (scope.checkpointNs === undefined || meta.checkpointNs === scope.checkpointNs) &&
36
+ (scope.checkpointId === undefined || meta.checkpointId === scope.checkpointId));
37
+ }
38
+ export async function passesMetadataFilter(context, meta, scope) {
39
+ if (!scope.filter)
40
+ return { pass: true };
41
+ const metadata = await readMetadata(context, meta, meta.threadId, scope.signal);
42
+ return matchesFilter(metadata, scope.filter) ? { pass: true, metadata } : { pass: false };
43
+ }
44
+ function threadlessRows(context, scope, now) {
45
+ if (context.indexName === undefined) {
46
+ return paginateScan({
47
+ retry: retryFor(context, scope.signal),
48
+ signal: scope.signal,
49
+ client: context.client,
50
+ params: withoutExpired(listScan(context, scope), now),
51
+ maxItems: Number.POSITIVE_INFINITY,
52
+ maxIterations: Number.POSITIVE_INFINITY,
53
+ });
54
+ }
55
+ return iterateRecencyIndex({
56
+ client: context.client,
57
+ tableName: context.tableName,
58
+ indexName: context.indexName,
59
+ tag: 'CHKPT',
60
+ shards: context.indexShards ?? DEFAULT_INDEX_SHARDS,
61
+ concurrency: context.readConcurrency ?? DEFAULT_READ_CONCURRENCY,
62
+ retry: retryFor(context, scope.signal),
63
+ signal: scope.signal,
64
+ });
65
+ }
66
+ export function metaRows(context, scope, now) {
67
+ const retry = retryFor(context, scope.signal);
68
+ const bounds = { maxItems: Number.POSITIVE_INFINITY, maxIterations: Number.POSITIVE_INFINITY };
69
+ return scope.threadId === undefined
70
+ ? threadlessRows(context, scope, now)
71
+ : paginateQuery({
72
+ retry,
73
+ signal: scope.signal,
74
+ client: context.client,
75
+ params: withoutExpired(listQuery(context, { ...scope, threadId: scope.threadId }), now),
76
+ ...bounds,
77
+ });
78
+ }
79
+ export function parseListedRow(context, raw) {
80
+ const meta = parseMetaRow(raw);
81
+ if (!meta) {
82
+ context.logger.warn('list: skipped a row that is not a checkpoint meta item', {
83
+ sortKey: truncateForLog(raw.SK),
84
+ });
85
+ }
86
+ return meta;
87
+ }
88
+ function ownValue(metadata, key) {
89
+ if (metadata === null || typeof metadata !== 'object')
90
+ return undefined;
91
+ return Object.hasOwn(metadata, key) ? metadata[key] : undefined;
92
+ }
93
+ export function matchesFilter(metadata, filter) {
94
+ return Object.entries(filter).every(([key, value]) => isDeepStrictEqual(ownValue(metadata, key), value));
95
+ }
@@ -0,0 +1,298 @@
1
+ /**
2
+ * Hides the rules a checkpointer's caller input is held to.
3
+ *
4
+ * Every config, option and identifier an action accepts is parsed here once
5
+ * into a branded type only these parsers can build (record 21), so code
6
+ * downstream asks for a `ThreadId` or a `PutWritesRequest` and never checks it
7
+ * again. Which markers mean "no id", how the legacy `thread_ts` alias
8
+ * resolves, which field a refusal names and in what order the checks run are
9
+ * all settled here and nowhere else.
10
+ */
11
+ import type { RunnableConfig } from '@langchain/core/runnables';
12
+ import type { Checkpoint, CheckpointListOptions, CheckpointMetadata, PendingWrite } from '@langchain/langgraph-checkpoint';
13
+ import { type PageLimit } from '../../shared/validation/primitives.js';
14
+ import type { DeltaChannelHistoryOptions } from '../types.js';
15
+ declare const threadIdBrand: unique symbol;
16
+ declare const checkpointNsBrand: unique symbol;
17
+ declare const checkpointIdBrand: unique symbol;
18
+ declare const taskIdBrand: unique symbol;
19
+ declare const writeChannelBrand: unique symbol;
20
+ declare const taskPathBrand: unique symbol;
21
+ /**
22
+ * A thread id checked as the partition key it becomes. {@link parseThreadId}
23
+ * is the only way to obtain one, so a function that asks for a `ThreadId`
24
+ * cannot be handed an id nobody checked, and does not check it again. The
25
+ * brand is phantom: at run time it is the caller's own string.
26
+ */
27
+ export type ThreadId = string & {
28
+ readonly [threadIdBrand]: true;
29
+ };
30
+ /** A checkpoint namespace checked as a key segment; `''` is the root. Built only by {@link parseCheckpointNs}. */
31
+ export type CheckpointNs = string & {
32
+ readonly [checkpointNsBrand]: true;
33
+ };
34
+ /** A checkpoint id checked as a key segment. Built only by {@link parseCheckpointId}. */
35
+ export type CheckpointId = string & {
36
+ readonly [checkpointIdBrand]: true;
37
+ };
38
+ /** A task id checked as a key segment. Built only by {@link parseTaskId}. */
39
+ export type TaskId = string & {
40
+ readonly [taskIdBrand]: true;
41
+ };
42
+ /** A pending write's channel checked as the key segment it becomes. Built only by {@link parseWriteChannel}. */
43
+ export type WriteChannel = string & {
44
+ readonly [writeChannelBrand]: true;
45
+ };
46
+ /** The serialized path of the task that made a write, as LangGraph 1.5 hands it to `putWrites`; see {@link parseTaskPath}. */
47
+ export type TaskPath = string & {
48
+ readonly [taskPathBrand]: true;
49
+ };
50
+ /**
51
+ * Parse a thread id.
52
+ *
53
+ * Accepts: `value` — anything; a thread id reaches the partition key, so it is
54
+ * held to every identifier rule at {@link MAX_PARTITION_ID_BYTES}.
55
+ *
56
+ * Returns: `value` as a {@link ThreadId}.
57
+ *
58
+ * Throws: `VALIDATION` naming `thread_id`.
59
+ */
60
+ export declare function parseThreadId(value: unknown): ThreadId;
61
+ /**
62
+ * Parse a checkpoint namespace.
63
+ *
64
+ * Accepts: `value` — anything; `''` is legal, because it *is* the root
65
+ * namespace, and every other identifier rule applies (see `parseKeySegment`),
66
+ * at most {@link MAX_CHECKPOINT_NS_BYTES} bytes of UTF-8.
67
+ *
68
+ * Returns: `value` as a {@link CheckpointNs}.
69
+ *
70
+ * Throws: `VALIDATION` naming `checkpoint_ns`.
71
+ */
72
+ export declare function parseCheckpointNs(value: unknown): CheckpointNs;
73
+ /**
74
+ * Parse a checkpoint id.
75
+ *
76
+ * Accepts: `value` — anything. `field` — the field the caller set:
77
+ * `checkpoint_id` by default, `thread_ts` when the id was read from that legacy
78
+ * alias, `before` for `list`'s bound, so the refusal names what the caller
79
+ * actually wrote.
80
+ *
81
+ * Returns: `value` as a {@link CheckpointId}.
82
+ *
83
+ * Throws: `VALIDATION` naming `field`.
84
+ */
85
+ export declare function parseCheckpointId(value: unknown, field?: 'checkpoint_id' | 'thread_ts' | 'before'): CheckpointId;
86
+ /**
87
+ * Parse a task id. LangGraph's own are UUIDs; the rule is stated for whatever
88
+ * else a caller passes.
89
+ *
90
+ * Accepts: `value` — anything.
91
+ *
92
+ * Returns: `value` as a {@link TaskId}.
93
+ *
94
+ * Throws: `VALIDATION` naming `taskId`.
95
+ */
96
+ export declare function parseTaskId(value: unknown): TaskId;
97
+ /**
98
+ * Parse a pending write's channel, the trailing segment of its WRITE sort key.
99
+ *
100
+ * Accepts: `value` — anything; LangGraph's own channel names never contain the
101
+ * reserved separator. The cap is {@link MAX_WRITE_CHANNEL_BYTES}, wider than
102
+ * the other segments' because a fan-in's channel is named after every source
103
+ * node; the composed sort key is checked against DynamoDB's cap separately.
104
+ *
105
+ * Returns: `value` as a {@link WriteChannel}.
106
+ *
107
+ * Throws: `VALIDATION` naming `channel`.
108
+ */
109
+ export declare function parseWriteChannel(value: unknown): WriteChannel;
110
+ /**
111
+ * Parse the task path a `putWrites` call carries.
112
+ *
113
+ * LangGraph 1.5 (`@langchain/langgraph-checkpoint@1.2.0`) hands `putWrites`
114
+ * the serialized path of the task that made the writes — `~pull, <node>`,
115
+ * `~push, 0000000003, …` — as a fourth argument, and reads a checkpoint's
116
+ * writes back ordered by it first (`writesSortKey`: path, then task id, then
117
+ * index). It is stored as given and never keyed on, so it has no byte cap
118
+ * and no separator rule: it leads a sort, not a sort key.
119
+ *
120
+ * Accepts: `value` — a string, the empty string included (a write made by
121
+ * no task); `undefined` for a call that carries none, which every LangGraph
122
+ * before 1.5 makes.
123
+ *
124
+ * Returns: `value` as a {@link TaskPath}, or `undefined` when none was given.
125
+ *
126
+ * Throws: `VALIDATION` naming `taskPath` for any other value.
127
+ */
128
+ export declare function parseTaskPath(value: unknown): TaskPath | undefined;
129
+ /** The root namespace, which a config that names none addresses. */
130
+ export declare const ROOT_NAMESPACE: CheckpointNs;
131
+ /** A thread, a namespace in it, and possibly one checkpoint — "the newest" when unset. */
132
+ export interface ThreadAddress {
133
+ readonly threadId: ThreadId;
134
+ readonly checkpointNs: CheckpointNs;
135
+ readonly checkpointId: CheckpointId | undefined;
136
+ }
137
+ /** A thread address that names one checkpoint. */
138
+ export interface CheckpointAddress extends ThreadAddress {
139
+ readonly checkpointId: CheckpointId;
140
+ }
141
+ /** What a config names, parsed. A read accepts a config that names no thread. */
142
+ export interface ParsedConfig {
143
+ readonly threadId: ThreadId | undefined;
144
+ /** `undefined` only when the config names no `checkpoint_ns` at all; `null` reads as the root, named. */
145
+ readonly checkpointNs: CheckpointNs | undefined;
146
+ readonly checkpointId: CheckpointId | undefined;
147
+ readonly signal: AbortSignal | undefined;
148
+ }
149
+ /** A config that names a thread, with its namespace defaulted to the root. */
150
+ export interface ThreadConfig {
151
+ readonly address: ThreadAddress;
152
+ readonly signal: AbortSignal | undefined;
153
+ }
154
+ /**
155
+ * Parse a config a read accepts, naming a thread or not.
156
+ *
157
+ * Accepts: `config` — an object; `configurable` absent or an object; `signal`
158
+ * absent or `AbortSignal`-shaped. A config naming no thread is legal: the
159
+ * identifiers it does give are still parsed, as the reference saver does
160
+ * (`@langchain/langgraph-checkpoint@1.1.5` `dist/memory.js:86-92`).
161
+ *
162
+ * Returns: the thread, the namespace as given (`undefined` when not named), the
163
+ * checkpoint id (`undefined` for "the newest"), and the signal.
164
+ *
165
+ * Throws: `VALIDATION` naming `config`, `configurable` or `signal` for a config
166
+ * of the wrong shape, then `thread_id`, `checkpoint_ns`, `checkpoint_id` or
167
+ * `thread_ts`, in that order.
168
+ */
169
+ export declare function parseConfig(config: RunnableConfig): ParsedConfig;
170
+ /**
171
+ * Parse a config a write needs: one that names a thread.
172
+ *
173
+ * Accepts: `config` — as {@link parseConfig}, with `thread_id` required.
174
+ *
175
+ * Returns: the address, its namespace defaulted to {@link ROOT_NAMESPACE}, and
176
+ * the signal.
177
+ *
178
+ * Throws: as {@link parseConfig}; a missing `thread_id` is refused naming
179
+ * `thread_id`, before the namespace is read.
180
+ */
181
+ export declare function parseThreadConfig(config: RunnableConfig): ThreadConfig;
182
+ /** Everything one `put` stores, parsed. */
183
+ export interface PutRequest {
184
+ /** The new checkpoint's own address: its `checkpointId` is `checkpoint.id`. */
185
+ readonly address: CheckpointAddress;
186
+ /** The checkpoint the config named, which the new one continues. */
187
+ readonly parentCheckpointId: CheckpointId | undefined;
188
+ readonly checkpoint: Checkpoint;
189
+ readonly metadata: CheckpointMetadata;
190
+ readonly signal: AbortSignal | undefined;
191
+ }
192
+ /**
193
+ * Parse the arguments of `put`.
194
+ *
195
+ * Accepts: `config` — as {@link parseThreadConfig}; its checkpoint id becomes
196
+ * the parent. `checkpoint` — must be present; its `id` is parsed as the key
197
+ * segment it becomes. `metadata` — stored as given.
198
+ *
199
+ * Returns: the request every later step of the put reads.
200
+ *
201
+ * Throws: as {@link parseThreadConfig}; then `VALIDATION` naming `checkpoint`
202
+ * for a `null` or `undefined` checkpoint, or `checkpoint_id` for a malformed
203
+ * `checkpoint.id`.
204
+ */
205
+ export declare function parsePutRequest(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata): PutRequest;
206
+ /** Everything one `putWrites` stores, parsed. */
207
+ export interface PutWritesRequest {
208
+ readonly address: CheckpointAddress;
209
+ readonly taskId: TaskId;
210
+ /** The task's serialized path, when the call carried one; see {@link parseTaskPath}. */
211
+ readonly taskPath: TaskPath | undefined;
212
+ /** A copy of the caller's writes, each reduced to its channel and value. */
213
+ readonly writes: PendingWrite<WriteChannel>[];
214
+ readonly signal: AbortSignal | undefined;
215
+ }
216
+ /**
217
+ * Parse the arguments of `putWrites`.
218
+ *
219
+ * Accepts: `config` — as {@link parseThreadConfig}, and it must name a
220
+ * checkpoint, since writes attach to one. `writes` — an array of
221
+ * `[channel, value]` arrays; the value, and any element past the second, are
222
+ * unconstrained, as upstream's type places no rule on them. `taskId` — parsed
223
+ * as the key segment it becomes. `taskPath` — as {@link parseTaskPath}; absent
224
+ * from a LangGraph before 1.5.
225
+ *
226
+ * Returns: the request, with a fresh array of fresh tuples, so a caller
227
+ * changing its own array while the call awaits changes nothing that was
228
+ * checked.
229
+ *
230
+ * Throws: `VALIDATION`, before anything is encoded or uploaded, in this order:
231
+ * `taskId`; `taskPath`; as {@link parseThreadConfig}; `checkpoint_id` when the config names
232
+ * none; `writes` for a non-array or an entry that is not one; `channel` for any
233
+ * malformed channel; `sortKey` for any write whose composed key passes the cap.
234
+ */
235
+ export declare function parsePutWritesRequest(config: RunnableConfig, writes: PendingWrite[], taskId: string, taskPath?: string): PutWritesRequest;
236
+ /** A JSON-comparable value used in metadata filters. */
237
+ export type FilterValue = string | number | boolean | null | FilterValue[] | {
238
+ [key: string]: FilterValue;
239
+ };
240
+ /** What one `list()` call covers, parsed once from its config and options. */
241
+ export interface ListScope {
242
+ /** Undefined when the caller gave no `thread_id`: every thread in the table is listed. */
243
+ readonly threadId: ThreadId | undefined;
244
+ /** Undefined when the caller gave no `checkpoint_ns`: every namespace of the thread is listed. */
245
+ readonly checkpointNs: CheckpointNs | undefined;
246
+ readonly checkpointId: CheckpointId | undefined;
247
+ readonly before: CheckpointId | undefined;
248
+ readonly filter: Record<string, FilterValue> | undefined;
249
+ readonly limit: PageLimit | undefined;
250
+ readonly signal: AbortSignal | undefined;
251
+ }
252
+ /**
253
+ * Parse the arguments of `list`.
254
+ *
255
+ * Accepts: `config` — as {@link parseConfig}; `thread_id` omitted lists every
256
+ * thread and `checkpoint_ns` omitted every namespace, as the reference savers
257
+ * do. `options.limit` — an integer from 0 to the page ceiling; `0` asks for
258
+ * nothing, and a negative value is refused rather than read as zero, since it
259
+ * can only be a page size whose computation went wrong. `options.before` — an
260
+ * object naming, at most, a `checkpoint_id`. `options.filter` — metadata
261
+ * equality clauses; an object when given.
262
+ *
263
+ * Returns: the scope every later step of the listing reads instead of the raw
264
+ * config.
265
+ *
266
+ * Throws: `VALIDATION`, config first: as {@link parseConfig}; then `options`
267
+ * for options that are not an object, `filter`, `limit`, `before`. A key
268
+ * `CheckpointListOptions` does not declare is ignored rather than refused:
269
+ * LangGraph defines these options and passes its own straight through
270
+ * (`getStateHistory` hands them to `list`), so a key a later LangGraph adds
271
+ * must not turn the call into a refusal (decision record 28).
272
+ */
273
+ export declare function parseListScope(config: RunnableConfig, options?: CheckpointListOptions): ListScope;
274
+ /** The arguments of `getDeltaChannelHistory`, their shape checked. */
275
+ export interface DeltaHistoryRequest {
276
+ readonly config: RunnableConfig;
277
+ readonly channels: string[];
278
+ }
279
+ /**
280
+ * Parse the options of `getDeltaChannelHistory` — their shape only. The
281
+ * config's identifiers are parsed by the `getTuple` each hop of the walk calls,
282
+ * and only once a channel is named: an empty `channels` reads nothing, so it
283
+ * refuses nothing either.
284
+ *
285
+ * Accepts: `options` — an object carrying `config` and `channels`; any other
286
+ * key is ignored, since LangGraph defines this object and calls the method
287
+ * itself, so a key a later LangGraph adds must not refuse the call (decision
288
+ * record 28). `options.config` — shaped as {@link parseConfig} requires.
289
+ * `options.channels` — an array of strings; an empty one is a legitimate
290
+ * request.
291
+ *
292
+ * Returns: the config as given and a copy of the channels.
293
+ *
294
+ * Throws: `VALIDATION` naming `options`, `config`, `configurable`, `signal` or
295
+ * `channels`.
296
+ */
297
+ export declare function parseDeltaHistoryRequest(options: DeltaChannelHistoryOptions): DeltaHistoryRequest;
298
+ export {};