@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,30 +1,23 @@
1
1
  /**
2
- * Hides which options the saver and its methods accept, and how the saver is
3
- * assembled from them.
2
+ * Hides which options the saver accepts, and how the saver is assembled from
3
+ * them.
4
4
  *
5
- * The exhaustive key list of every option bag — the constructor's, `list`'s,
6
- * `getDeltaChannelHistory`'s — lives here, compiler-checked against its type,
7
- * beside the code that resolves the constructor's options into the context
8
- * every action receives.
5
+ * The exhaustive key list of the constructor's options lives here,
6
+ * compiler-checked against its type, beside the code that resolves those
7
+ * options into the context every action receives. `list`'s and
8
+ * `getDeltaChannelHistory`'s options have no list: LangGraph defines them, so
9
+ * a key it adds is ignored rather than refused (decision record 28).
9
10
  */
10
11
  import type { SerializerProtocol } from '@langchain/langgraph-checkpoint';
11
- import { type AdapterCore, type AdapterShell } from '../../shared/adapter';
12
- import type { DynamoDBSaverOptions } from '../types';
12
+ import { type AdapterCore, type AdapterShell } from '../../shared/adapter.js';
13
+ import type { DynamoDBSaverOptions } from '../types.js';
13
14
  /**
14
- * The keys of each checkpointer option bag, exhaustive in both directions:
15
- * `allKeysOf<T>` makes omitting or inventing one a compile error, so a list
16
- * cannot rot away from the type it guards. They live with the feature because
17
- * the types they are checked against do; `shared/` knows no feature.
15
+ * The keys of the saver's constructor options, exhaustive in both directions:
16
+ * `allKeysOf<T>` makes omitting or inventing one a compile error, so the list
17
+ * cannot rot away from the type it guards. It lives with the feature because
18
+ * the type it is checked against does; `shared/` knows no feature.
18
19
  */
19
20
  export declare const SAVER_KEYS: readonly string[];
20
- /** See {@link SAVER_KEYS}. */
21
- export declare const SAVER_LIST_KEYS: readonly string[];
22
- /**
23
- * See {@link SAVER_KEYS}. `DeltaChannelHistoryOptions` is pinned equal to
24
- * `BaseCheckpointSaver.getDeltaChannelHistory`'s own parameter type, the
25
- * contract that method implements, so this list is checked against it.
26
- */
27
- export declare const DELTA_CHANNEL_HISTORY_KEYS: readonly string[];
28
21
  /** Resolved collaborators shared by every checkpointer action. */
29
22
  export interface CheckpointerContext extends AdapterCore {
30
23
  serde: SerializerProtocol;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SAVER_KEYS = void 0;
4
+ exports.setUpCheckpointer = setUpCheckpointer;
5
+ const adapter_js_1 = require("../../shared/adapter.js");
6
+ const option_shape_js_1 = require("../../shared/validation/option-shape.js");
7
+ exports.SAVER_KEYS = (0, option_shape_js_1.allKeysOf)({
8
+ tableName: 'tableName',
9
+ client: 'client',
10
+ clientConfig: 'clientConfig',
11
+ createClient: 'createClient',
12
+ ttl: 'ttl',
13
+ logger: 'logger',
14
+ retry: 'retry',
15
+ indexShards: 'indexShards',
16
+ indexName: 'indexName',
17
+ readConcurrency: 'readConcurrency',
18
+ compression: 'compression',
19
+ s3: 's3',
20
+ serde: 'serde',
21
+ });
22
+ function setUpCheckpointer(options, serde) {
23
+ const shell = (0, adapter_js_1.openAdapter)(options, 'checkpointer');
24
+ return { shell, context: { ...shell.core, serde } };
25
+ }
@@ -4,16 +4,17 @@
4
4
  * `DynamoDBSaver` is the `BaseCheckpointSaver` a graph is handed: it resolves
5
5
  * its client, offloader, logger and retry policy once and delegates each
6
6
  * read and write to one action, save `getDeltaChannelHistory`, whose walk
7
- * lives in `internal/delta-history` instead. Each asynchronous method is
8
- * also the error boundary, so a raw AWS SDK error never reaches a caller
9
- * unclassified (record 13); `destroy` releases what the saver owns and is
10
- * the one synchronous exception. Actions can be split, merged or reordered
11
- * without the public surface moving.
7
+ * lives in `internal/delta-history` instead. Every method is also the error
8
+ * boundary, so a raw AWS SDK error never reaches a caller unclassified
9
+ * (record 13) — an asynchronous one through `guardPublic`/`guardPublicIterable`,
10
+ * and the synchronous `destroy`, which releases what the saver owns, through
11
+ * `guardPublicSync`. Actions can be split, merged or reordered without the
12
+ * public surface moving.
12
13
  */
13
14
  import type { RunnableConfig } from '@langchain/core/runnables';
14
15
  import { BaseCheckpointSaver, type ChannelVersions, type Checkpoint, type CheckpointListOptions, type CheckpointMetadata, type CheckpointTuple, type DeltaChannelHistory, type PendingWrite } from '@langchain/langgraph-checkpoint';
15
- import type { CancelOptions } from '../shared/options';
16
- import type { DeltaChannelHistoryOptions, DynamoDBSaverOptions } from './types';
16
+ import type { CancelOptions } from '../shared/options.js';
17
+ import type { DeltaChannelHistoryOptions, DynamoDBSaverOptions } from './types.js';
17
18
  /**
18
19
  * DynamoDB-backed LangGraph checkpoint saver. Every public method rejects only
19
20
  * with this library's error, whose `code` says what failed — an AWS failure
@@ -49,7 +50,7 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
49
50
  *
50
51
  * Returns: the tuple, or `undefined` for an unknown thread, an unknown
51
52
  * checkpoint, a config naming no thread, or a checkpoint whose payload row is
52
- * not there yet.
53
+ * gone — a thread being deleted, or an expiry sweep that reached it first.
53
54
  *
54
55
  * Throws: `VALIDATION`, before any read, naming `config` for a config that
55
56
  * is not an object, `configurable` for a `configurable` that is present and
@@ -71,7 +72,10 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
71
72
  */
72
73
  getTuple(config: RunnableConfig): Promise<CheckpointTuple | undefined>;
73
74
  /**
74
- * Stream checkpoints newest first.
75
+ * Stream checkpoints newest first — within a thread, and across threads
76
+ * through the recency index; the table scan a thread-less call falls back to
77
+ * without `indexName` yields in the table's own order, oldest first within a
78
+ * thread and threads in no particular order.
75
79
  *
76
80
  * Accepts: `config` — one namespace, every namespace of a thread when
77
81
  * `checkpoint_ns` is omitted, or every thread in the table when `thread_id`
@@ -89,15 +93,17 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
89
93
  * `config`, `configurable` or `signal` for a config of the wrong shape, as
90
94
  * {@link getTuple} does, or `thread_id`, `checkpoint_ns`, `checkpoint_id` or
91
95
  * `thread_ts` for a malformed identifier — all checked before `options`;
92
- * then `options` for options that are not an object, `options.<key>` for a
93
- * key this package does not read, `filter` for a filter that is not an
94
- * object, `limit` for a limit that is not an integer from 0 to
95
- * `MAX_PAGE_LIMIT` (10,000), and `before` for a `before` that is not an
96
+ * then `options` for options that are not an object, `filter` for a filter
97
+ * that is not an object, `limit` for a limit that is not an integer from 0 to
98
+ * 10,000, and `before` for a `before` that is not an
96
99
  * object or whose `configurable.checkpoint_id` is
97
100
  * neither absent (`undefined`, `null` or `''`) nor a well-formed checkpoint
98
101
  * id. `FORMAT_UNSUPPORTED`; `RESULT_TRUNCATED`, without a `thread_id` and
99
102
  * with `indexName`, for an index shard whose pages do not end; a classified AWS failure;
100
- * `RETRY_EXHAUSTED`; `ABORTED`.
103
+ * `RETRY_EXHAUSTED`; `ABORTED`. An option key this version does not read is
104
+ * ignored rather than refused: LangGraph defines these options and passes
105
+ * its own through (`getStateHistory`), so a key it adds must not turn a
106
+ * listing into a refusal (decision record 28).
101
107
  *
102
108
  * Guarantees: eventually consistent — a listing tolerates the replica lag
103
109
  * `getTuple` does not.
@@ -125,9 +131,10 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
125
131
  * id, `checkpoint_ns`, `checkpoint_id` or `thread_ts` for a malformed
126
132
  * identifier, `checkpoint` for a `null` or `undefined` checkpoint,
127
133
  * `checkpoint_id` for a malformed `checkpoint.id`, `payload` for a payload
128
- * too large to store inline without `s3`, or `s3Key` for an offloaded
129
- * object's key over S3's cap; `S3_OFFLOAD_FAILED` when an offloaded payload
130
- * cannot be uploaded; a classified AWS failure; `RETRY_EXHAUSTED`; `ABORTED`.
134
+ * too large to store inline without `s3`, or, once offloaded, larger than
135
+ * `s3.maxDownloadBytes`; `s3Key` for an offloaded object's key over S3's
136
+ * cap; `S3_OFFLOAD_FAILED` when an offloaded payload cannot be uploaded;
137
+ * a classified AWS failure; `RETRY_EXHAUSTED`; `ABORTED`.
131
138
  *
132
139
  * Guarantees: both rows land or neither does. Writing the same
133
140
  * `checkpoint.id` again replaces both, so a retry is safe. Each put uploads
@@ -135,28 +142,38 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
135
142
  * rows named are not deleted with them: they are left to the lifecycle rule
136
143
  * `ensureS3LifecycleRule()` provisions.
137
144
  */
138
- put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata, newVersions?: ChannelVersions): Promise<RunnableConfig>;
145
+ put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata, _newVersions?: ChannelVersions): Promise<RunnableConfig>;
139
146
  /**
140
147
  * Store a task's pending writes for the checkpoint `config` names.
141
148
  *
142
149
  * Accepts: `config` — shaped as {@link getTuple} requires, naming a
143
150
  * `thread_id` and a `checkpoint_id`, since writes attach to a checkpoint.
144
151
  * `config.signal` — aborts the writes. `writes` — an array of
145
- * `[channel, value]` arrays, one row each, written in parallel; an empty list
146
- * writes nothing. `taskId` — validated as the key segment it becomes.
152
+ * `[channel, value]` arrays, one row each: a special channel's row is
153
+ * written alongside the rest, a regular row at most 32 at a time; an empty
154
+ * list writes nothing. `taskId` — validated as the key segment it becomes.
155
+ * `taskPath` — the task's serialized path, which LangGraph 1.5 passes
156
+ * (`@langchain/langgraph-checkpoint@1.2.0`) and earlier LangGraphs do not;
157
+ * stored beside every row of the call, and the first key of the order
158
+ * `getTuple`, `list` and `getDeltaChannelHistory` read a checkpoint's
159
+ * writes back in (the reference's `writesSortKey`: path, then task id, then
160
+ * index, strings compared by code point). A row written without one sorts
161
+ * as the empty path, first.
147
162
  *
148
163
  * Returns: nothing. Losing a first-write-wins race is a normal outcome, not
149
164
  * a failure.
150
165
  *
151
- * Throws: `VALIDATION` naming `taskId` for a malformed task id; `config`,
166
+ * Throws: `VALIDATION` naming `taskId` for a malformed task id, or
167
+ * `taskPath` for a path that is not a string; `config`,
152
168
  * `configurable` or `signal` for a config of the wrong shape; `thread_id`,
153
169
  * `checkpoint_ns`, `checkpoint_id` or `thread_ts` for a malformed
154
170
  * identifier, and `checkpoint_id` when the config names none; `writes` for
155
171
  * writes that is not an array, or holds an entry that is not one; `channel`
156
172
  * for a malformed channel; `sortKey` for identifiers composing a sort key
157
173
  * over DynamoDB's cap; `payload` for a value too large to store inline
158
- * without `s3`; or `s3Key` for an offloaded object's key over S3's cap.
159
- * `S3_OFFLOAD_FAILED`; a classified AWS failure; `RETRY_EXHAUSTED`; `ABORTED`.
174
+ * without `s3`, or, once offloaded, larger than `s3.maxDownloadBytes`; or
175
+ * `s3Key` for an offloaded object's key over S3's cap. `S3_OFFLOAD_FAILED`;
176
+ * a classified AWS failure; `RETRY_EXHAUSTED`; `ABORTED`.
160
177
  *
161
178
  * Guarantees: regular writes are first-write-wins; special channels
162
179
  * (`__interrupt__`, `__resume__`, `__error__`, `__scheduled__`) overwrite,
@@ -168,11 +185,13 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
168
185
  * before the write, when a failed write cannot be verified, or in one
169
186
  * double-fault interleaving (see the README's S3 offloading notes).
170
187
  */
171
- putWrites(config: RunnableConfig, writes: PendingWrite[], taskId: string): Promise<void>;
188
+ putWrites(config: RunnableConfig, writes: PendingWrite[], taskId: string, taskPath?: string): Promise<void>;
172
189
  /**
173
190
  * Delete every checkpoint, payload and pending write of a thread.
174
191
  *
175
- * Accepts: `threadId` — validated. `options.signal` — aborts between pages.
192
+ * Accepts: `threadId` — validated. `options.signal` — ends the read or
193
+ * delete in flight and any wait between them; the deletes already
194
+ * acknowledged stay deleted.
176
195
  *
177
196
  * Returns: nothing. Deleting a thread that does not exist is not an error.
178
197
  *
@@ -207,9 +226,10 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
207
226
  * per put puts that within reach here, so an ancestor a channel still needs
208
227
  * that has expired is reported instead of dropped.
209
228
  *
210
- * Accepts: `options` — must be an object naming exactly `config` and
211
- * `channels`, the shape `BaseCheckpointSaver`'s own signature declares.
212
- * `options.channels` — the delta channels to rebuild, required; an empty
229
+ * Accepts: `options` — an object carrying `config` and `channels`, the
230
+ * shape `BaseCheckpointSaver`'s own signature declares; LangGraph calls this
231
+ * itself, so a key a later LangGraph adds is ignored rather than refused
232
+ * (decision record 28). `options.channels` — the delta channels to rebuild, required; an empty
213
233
  * array reads nothing rather than being refused, since it is a legitimate
214
234
  * "nothing to rebuild" request. `options.config` — the checkpoint to walk
215
235
  * back from, shaped as {@link getTuple} requires and checked for that shape
@@ -221,12 +241,13 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
221
241
  * stored value found.
222
242
  *
223
243
  * Throws: `VALIDATION` naming `options` for options that are not an
224
- * object, `options.<key>` for an unknown key, `config`, `configurable` or
244
+ * object, `config`, `configurable` or
225
245
  * `signal` for a config of the wrong shape, or `channels` for a value that
226
246
  * is not an array of strings, and, once a channel is named, `thread_id`,
227
247
  * `checkpoint_ns`, `checkpoint_id` or `thread_ts` for a malformed
228
248
  * identifier; `ANCESTOR_EXPIRED` when a checkpoint a channel still needs has
229
- * expired; a classified AWS failure; `RETRY_EXHAUSTED`; `ABORTED`, which a walk
249
+ * expired or is gone, or the chain of parents loops; a classified AWS
250
+ * failure; `RETRY_EXHAUSTED`; `ABORTED`, which a walk
230
251
  * cancelled as it reached an expired ancestor reports in place of
231
252
  * `ANCESTOR_EXPIRED`.
232
253
  *
@@ -243,9 +264,10 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
243
264
  * Returns: nothing. Idempotent, and a no-op for a client the caller injected
244
265
  * — that one is theirs to close.
245
266
  *
246
- * Throws: whatever a resource's own `destroy` raises — but only after every
247
- * other one has been released, so a client that fails to close never strands
248
- * the one behind it.
267
+ * Throws: the first failure a resource's own `destroy` raised, as a
268
+ * `DynamoDBLangGraphError` (`UNEXPECTED_ERROR` unless the failure was AWS's)
269
+ * with it as `cause` — raised only after every other resource has been
270
+ * released, and only by the first call: `destroy()` is idempotent.
249
271
  */
250
272
  destroy(): void;
251
273
  /**
@@ -257,14 +279,28 @@ export declare class DynamoDBSaver extends BaseCheckpointSaver {
257
279
  * match.
258
280
  *
259
281
  * Returns: nothing. Installing a rule that is already there is a no-op too,
260
- * so calling it on every deploy is safe.
282
+ * so calling it on every deploy is safe. When it writes the rules but
283
+ * cannot confirm within its polling window that a re-read shows them — S3
284
+ * documents that a lifecycle configuration can take minutes to propagate —
285
+ * it logs a `warn` and returns rather than throwing: the rules were
286
+ * written, and a later call can confirm them.
261
287
  *
262
288
  * Throws: `VALIDATION` naming `s3.keyPrefix` on a rule-id collision;
263
- * a classified AWS failure when the bucket's lifecycle cannot be read or written.
289
+ * a classified AWS failure when the bucket's lifecycle cannot be read or
290
+ * written; `CONTENTION` when every one of the five rounds this call polls
291
+ * needs a write — a competing writer replacing the configuration on every
292
+ * single re-read.
264
293
  * @remarks Needs the bucket-level `s3:GetLifecycleConfiguration` and
265
294
  * `s3:PutLifecycleConfiguration` permissions, which are broader than the
266
295
  * object-level CRUD the rest of S3 offload needs. Call it once at deployment,
267
- * not per request.
296
+ * not per request — and when several adapters or processes provision the
297
+ * same bucket, call them one at a time and run each again after a few
298
+ * minutes once every one of them has run.
299
+ *
300
+ * Lowering the `ttl` is safe for new rows at once; the rule is not. Lower
301
+ * `ttl` now, and call this again only once the old `ttl` has elapsed since,
302
+ * because until then rows written under the old value still name objects
303
+ * the shorter rule would expire. Raising the `ttl` is safe at once.
268
304
  */
269
305
  ensureS3LifecycleRule(): Promise<void>;
270
306
  }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DynamoDBSaver = void 0;
4
+ const langgraph_checkpoint_1 = require("@langchain/langgraph-checkpoint");
5
+ const boundary_js_1 = require("../shared/errors/boundary.js");
6
+ const collaborators_js_1 = require("../shared/validation/collaborators.js");
7
+ const option_shape_js_1 = require("../shared/validation/option-shape.js");
8
+ const delete_thread_js_1 = require("./actions/delete-thread.js");
9
+ const get_tuple_js_1 = require("./actions/get-tuple.js");
10
+ const list_js_1 = require("./actions/list.js");
11
+ const put_writes_js_1 = require("./actions/put-writes.js");
12
+ const put_js_1 = require("./actions/put.js");
13
+ const delta_history_js_1 = require("./internal/delta-history.js");
14
+ const parse_js_1 = require("./internal/parse.js");
15
+ const setup_js_1 = require("./internal/setup.js");
16
+ class DynamoDBSaver extends langgraph_checkpoint_1.BaseCheckpointSaver {
17
+ context;
18
+ shell;
19
+ constructor(options) {
20
+ super((0, option_shape_js_1.parseShape)(options, setup_js_1.SAVER_KEYS, 'options').serde);
21
+ const setup = (0, setup_js_1.setUpCheckpointer)(options, this.serde);
22
+ this.context = setup.context;
23
+ this.shell = setup.shell;
24
+ }
25
+ async getTuple(config) {
26
+ return (0, boundary_js_1.guardPublic)('saver.getTuple', () => (0, get_tuple_js_1.getCheckpointTuple)(this.context, config), this.context.tableName);
27
+ }
28
+ list(config, options) {
29
+ return (0, boundary_js_1.guardPublicIterable)('saver.list', (0, list_js_1.listCheckpoints)(this.context, config, options), this.context.tableName);
30
+ }
31
+ async put(config, checkpoint, metadata, _newVersions) {
32
+ return (0, boundary_js_1.guardPublic)('saver.put', () => (0, put_js_1.putCheckpoint)(this.context, config, checkpoint, metadata), this.context.tableName);
33
+ }
34
+ async putWrites(config, writes, taskId, taskPath) {
35
+ return (0, boundary_js_1.guardPublic)('saver.putWrites', () => (0, put_writes_js_1.putWrites)(this.context, config, writes, taskId, taskPath), this.context.tableName);
36
+ }
37
+ async deleteThread(threadId, options) {
38
+ return (0, boundary_js_1.guardPublic)('saver.deleteThread', () => {
39
+ (0, collaborators_js_1.assertCancelOptions)(options);
40
+ return (0, delete_thread_js_1.deleteThread)(this.context, threadId, options);
41
+ }, this.context.tableName);
42
+ }
43
+ getDeltaChannelHistory(options) {
44
+ return (0, boundary_js_1.guardPublic)('saver.getDeltaChannelHistory', () => {
45
+ const request = (0, parse_js_1.parseDeltaHistoryRequest)(options);
46
+ return (0, delta_history_js_1.deltaChannelHistory)(this.context, (c) => this.getTuple(c), request.config, request.channels);
47
+ }, this.context.tableName);
48
+ }
49
+ destroy() {
50
+ (0, boundary_js_1.guardPublicSync)('saver.destroy', () => this.shell.release(), this.context.tableName);
51
+ }
52
+ async ensureS3LifecycleRule() {
53
+ return (0, boundary_js_1.guardPublic)('saver.ensureS3LifecycleRule', () => this.shell.ensureLifecycleRule(), this.context.tableName);
54
+ }
55
+ }
56
+ exports.DynamoDBSaver = DynamoDBSaver;
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import type { RunnableConfig } from '@langchain/core/runnables';
12
12
  import type { SerializerProtocol } from '@langchain/langgraph-checkpoint';
13
- import type { BaseAdapterOptions, CodecOptions } from '../shared/options';
13
+ import type { BaseAdapterOptions, CodecOptions } from '../shared/options.js';
14
14
  /** Options for {@link DynamoDBSaver}. */
15
15
  export type DynamoDBSaverOptions = BaseAdapterOptions & CodecOptions & {
16
16
  /**
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -8,17 +8,18 @@
8
8
  * strand the others — and a `createAll` that fails partway releases what it
9
9
  * had built before its own error propagates.
10
10
  */
11
- import { DynamoDBSaver } from '../checkpointer/saver';
12
- import type { DynamoDBSaverOptions } from '../checkpointer/types';
13
- import { DynamoDBChatMessageHistory } from '../history/chat-message-history';
14
- import type { DynamoDBChatMessageHistoryOptions } from '../history/types';
15
- import { DynamoDBStore } from '../store/store';
16
- import type { DynamoDBStoreOptions } from '../store/types';
17
- import type { CreateAllOptions, CreatedAdapters, FactoryBaseOptions } from './types';
11
+ import { DynamoDBSaver } from '../checkpointer/saver.js';
12
+ import type { DynamoDBSaverOptions } from '../checkpointer/types.js';
13
+ import { DynamoDBChatMessageHistory } from '../history/chat-message-history.js';
14
+ import type { DynamoDBChatMessageHistoryOptions } from '../history/types.js';
15
+ import { DynamoDBStore } from '../store/store.js';
16
+ import type { DynamoDBStoreOptions } from '../store/types.js';
17
+ import type { CreateAllOptions, CreatedAdapters, FactoryBaseOptions } from './types.js';
18
18
  /**
19
19
  * Convenience constructors for the adapters.
20
20
  *
21
- * Individual `create*` methods each build their own client; {@link createAll}
21
+ * Individual `create*` methods each build one adapter, on the factory's `client`
22
+ * when it was given one and otherwise on a client of their own; {@link createAll}
22
23
  * builds one shared client used by all three and returns a combined `destroy`
23
24
  * that tears everything down once. Each adapter validates the options it ends
24
25
  * up with, so the same mistake is caught the same way however the adapter was
@@ -55,8 +56,8 @@ export declare class DynamoDBFactory {
55
56
  /** The base options every adapter inherits regardless of which client it uses. */
56
57
  private sharedDefaults;
57
58
  /**
58
- * The base `s3` config with the region the DynamoDB side was configured with
59
- * already filled in.
59
+ * An `s3` config with the region the DynamoDB side was configured with
60
+ * filled in, when it names none of its own.
60
61
  *
61
62
  * An adapter normally reads that region off its own `clientConfig`
62
63
  * (`offloaderConfigFor`), but the adapters {@link createAll} builds are given
@@ -66,15 +67,17 @@ export declare class DynamoDBFactory {
66
67
  * without it, a bucket reachable only through that region fails with an
67
68
  * opaque `PermanentRedirect` on the first offload, unlike the identical
68
69
  * configuration through `createStore`, which resolves its own region
69
- * directly.
70
+ * directly. It is asked of the `s3` an adapter ends up with — the base one,
71
+ * or a section's own, which replaces the base one whole — so neither is left
72
+ * without the region the other would have had.
70
73
  *
71
- * A base `s3`, or its `clientConfig`, that is not an object is handed on
74
+ * An `s3`, or its `clientConfig`, that is not an object is handed on
72
75
  * unchanged, for each adapter to refuse by its own name: reading `.region`
73
76
  * off a `null` one would throw here instead, and writing a region into a
74
77
  * malformed `clientConfig` would turn it into an object shape an adapter
75
78
  * then accepts instead of refusing.
76
79
  */
77
- private sharedS3;
80
+ private withTableRegion;
78
81
  /**
79
82
  * Per-adapter options replace the factory's client choice as a unit: a
80
83
  * `client` handed to `createSaver` also displaces the base `clientConfig`
@@ -84,14 +87,15 @@ export declare class DynamoDBFactory {
84
87
  */
85
88
  private defaultsFor;
86
89
  /**
87
- * A saver on its own client.
90
+ * A saver, on the factory's `client` when it has one and otherwise on its own.
88
91
  *
89
92
  * Accepts: `options` — the saver's own, laid over the factory's defaults. A
90
- * per-adapter value wins; see {@link defaultsFor} for how a client choice
91
- * replaces the factory's as a unit.
93
+ * per-adapter value wins, and a key given as `undefined` is not a value;
94
+ * a client choice (`client`, `clientConfig` or neither) replaces the
95
+ * factory's as a unit.
92
96
  *
93
- * Returns: the saver, which owns the client it built and releases it on
94
- * `destroy()`.
97
+ * Returns: the saver. It owns, and releases on `destroy()`, only a client it
98
+ * built itself; a `client` from the factory is never closed by it.
95
99
  *
96
100
  * Throws: `VALIDATION` for any invalid option, naming it as the saver's
97
101
  * constructor does — `options` for a value that is not an object, checked
@@ -101,7 +105,7 @@ export declare class DynamoDBFactory {
101
105
  */
102
106
  createSaver(options: DynamoDBSaverOptions): DynamoDBSaver;
103
107
  /**
104
- * A store on its own client.
108
+ * A store, on the factory's `client` when it has one and otherwise on its own.
105
109
  *
106
110
  * Accepts: as {@link createSaver}, for the store's options.
107
111
  *
@@ -111,7 +115,8 @@ export declare class DynamoDBFactory {
111
115
  */
112
116
  createStore(options: DynamoDBStoreOptions): DynamoDBStore;
113
117
  /**
114
- * A chat history on its own client.
118
+ * A chat history, on the factory's `client` when it has one and otherwise on
119
+ * its own.
115
120
  *
116
121
  * Accepts: as {@link createSaver}, for the history's options.
117
122
  *
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DynamoDBFactory = void 0;
4
+ const saver_js_1 = require("../checkpointer/saver.js");
5
+ const chat_message_history_js_1 = require("../history/chat-message-history.js");
6
+ const client_types_js_1 = require("../shared/codec/s3/client-types.js");
7
+ const client_js_1 = require("../shared/dynamodb/client.js");
8
+ const base_error_js_1 = require("../shared/errors/base-error.js");
9
+ const logger_js_1 = require("../shared/logging/logger.js");
10
+ const truncate_js_1 = require("../shared/logging/truncate.js");
11
+ const collaborators_js_1 = require("../shared/validation/collaborators.js");
12
+ const option_shape_js_1 = require("../shared/validation/option-shape.js");
13
+ const options_js_1 = require("../shared/validation/options.js");
14
+ const store_js_1 = require("../store/store.js");
15
+ const FACTORY_BASE_KEYS = (0, option_shape_js_1.allKeysOf)({
16
+ client: 'client',
17
+ clientConfig: 'clientConfig',
18
+ createClient: 'createClient',
19
+ logger: 'logger',
20
+ ttl: 'ttl',
21
+ compression: 'compression',
22
+ s3: 's3',
23
+ retry: 'retry',
24
+ });
25
+ const CREATE_ALL_KEYS = (0, option_shape_js_1.allKeysOf)({
26
+ saver: 'saver',
27
+ store: 'store',
28
+ history: 'history',
29
+ });
30
+ function release(logger, close) {
31
+ try {
32
+ close();
33
+ }
34
+ catch (error) {
35
+ logger.warn('factory.destroy: an adapter did not release its resources', {
36
+ reason: (0, truncate_js_1.truncateForLog)((0, base_error_js_1.failureLabel)(error)),
37
+ });
38
+ }
39
+ }
40
+ function overridesClient(options) {
41
+ return (options.client !== undefined ||
42
+ options.clientConfig !== undefined ||
43
+ options.createClient !== undefined);
44
+ }
45
+ function given(options) {
46
+ const kept = {};
47
+ for (const [key, value] of Object.entries(options)) {
48
+ if (value !== undefined)
49
+ kept[key] = value;
50
+ }
51
+ return kept;
52
+ }
53
+ class DynamoDBFactory {
54
+ base;
55
+ constructor(base = {}) {
56
+ this.base = base;
57
+ (0, option_shape_js_1.assertShape)(base, FACTORY_BASE_KEYS, 'options');
58
+ (0, options_js_1.assertClientChoice)(base);
59
+ if (base.logger !== undefined)
60
+ (0, collaborators_js_1.assertMembers)(base.logger, collaborators_js_1.LOGGER_MEMBERS, 'logger');
61
+ }
62
+ sharedDefaults() {
63
+ const { logger, ttl, compression, s3, retry } = this.base;
64
+ return { logger, ttl, compression, s3, retry };
65
+ }
66
+ withTableRegion(s3) {
67
+ if (!(0, option_shape_js_1.isObjectShape)(s3))
68
+ return s3;
69
+ if (s3.clientConfig !== undefined && !(0, option_shape_js_1.isObjectShape)(s3.clientConfig))
70
+ return s3;
71
+ const region = (0, client_types_js_1.s3ClientOptions)(s3.clientConfig).region ?? this.base.clientConfig?.region;
72
+ if (region === undefined)
73
+ return s3;
74
+ return { ...s3, clientConfig: { ...s3.clientConfig, region } };
75
+ }
76
+ defaultsFor(options) {
77
+ return overridesClient(options) ? this.sharedDefaults() : this.base;
78
+ }
79
+ createSaver(options) {
80
+ (0, option_shape_js_1.assertObjectShape)(options, 'options');
81
+ const own = given(options);
82
+ return new saver_js_1.DynamoDBSaver({ ...this.defaultsFor(own), ...own });
83
+ }
84
+ createStore(options) {
85
+ (0, option_shape_js_1.assertObjectShape)(options, 'options');
86
+ const own = given(options);
87
+ return new store_js_1.DynamoDBStore({ ...this.defaultsFor(own), ...own });
88
+ }
89
+ createChatMessageHistory(options) {
90
+ (0, option_shape_js_1.assertObjectShape)(options, 'options');
91
+ const own = given(options);
92
+ return new chat_message_history_js_1.DynamoDBChatMessageHistory({ ...this.defaultsFor(own), ...own });
93
+ }
94
+ createAll(options) {
95
+ (0, option_shape_js_1.assertShape)(options, CREATE_ALL_KEYS, 'options');
96
+ const { saver, store, history } = options;
97
+ for (const section of [saver, store, history]) {
98
+ if (section !== undefined)
99
+ (0, option_shape_js_1.assertObjectShape)(section, 'options');
100
+ }
101
+ const logger = (0, logger_js_1.resolveLogger)(this.base.logger);
102
+ const resolved = (0, client_js_1.resolveDynamoDBClient)(this.base);
103
+ const shared = { ...this.sharedDefaults(), client: resolved.client };
104
+ const onSharedClient = (section) => {
105
+ const options = { ...shared, ...given(section) };
106
+ return { ...options, s3: this.withTableRegion(options.s3) };
107
+ };
108
+ const built = [];
109
+ const track = (adapter) => {
110
+ built.push(adapter);
111
+ return adapter;
112
+ };
113
+ let destroyed = false;
114
+ const destroy = () => {
115
+ if (destroyed)
116
+ return;
117
+ destroyed = true;
118
+ for (const adapter of built)
119
+ release(logger, () => adapter.destroy());
120
+ release(logger, () => resolved.ddbClient?.destroy());
121
+ };
122
+ try {
123
+ const adapters = {
124
+ saver: saver && track(new saver_js_1.DynamoDBSaver(onSharedClient(saver))),
125
+ store: store && track(new store_js_1.DynamoDBStore(onSharedClient(store))),
126
+ history: history && track(new chat_message_history_js_1.DynamoDBChatMessageHistory(onSharedClient(history))),
127
+ destroy,
128
+ };
129
+ return adapters;
130
+ }
131
+ catch (error) {
132
+ destroy();
133
+ throw error;
134
+ }
135
+ }
136
+ }
137
+ exports.DynamoDBFactory = DynamoDBFactory;
@@ -7,18 +7,18 @@
7
7
  * compiler knows which adapters it got without a runtime check.
8
8
  */
9
9
  import type { DynamoDBClientConfig } from '@aws-sdk/client-dynamodb';
10
- import type { DynamoDBSaver } from '../checkpointer/saver';
11
- import type { DynamoDBSaverOptions } from '../checkpointer/types';
12
- import type { DynamoDBChatMessageHistory } from '../history/chat-message-history';
13
- import type { DynamoDBChatMessageHistoryOptions } from '../history/types';
14
- import type { CompressionConfig } from '../shared/codec/compression';
15
- import type { S3OffloadConfig } from '../shared/codec/s3/config';
16
- import type { DynamoDBDocumentLike } from '../shared/dynamodb/client';
17
- import type { RetryPolicy } from '../shared/dynamodb/retry';
18
- import type { Logger } from '../shared/logging/logger';
19
- import type { TtlOption } from '../shared/validation/ttl';
20
- import type { DynamoDBStore } from '../store/store';
21
- import type { DynamoDBStoreOptions } from '../store/types';
10
+ import type { DynamoDBSaver } from '../checkpointer/saver.js';
11
+ import type { DynamoDBSaverOptions } from '../checkpointer/types.js';
12
+ import type { DynamoDBChatMessageHistory } from '../history/chat-message-history.js';
13
+ import type { DynamoDBChatMessageHistoryOptions } from '../history/types.js';
14
+ import type { CompressionConfig } from '../shared/codec/compression.js';
15
+ import type { S3OffloadConfig } from '../shared/codec/s3/config.js';
16
+ import type { DynamoDBDocumentLike } from '../shared/dynamodb/client.js';
17
+ import type { RetryPolicy } from '../shared/dynamodb/retry.js';
18
+ import type { Logger } from '../shared/logging/logger.js';
19
+ import type { TtlOption } from '../shared/validation/ttl.js';
20
+ import type { DynamoDBStore } from '../store/store.js';
21
+ import type { DynamoDBStoreOptions } from '../store/types.js';
22
22
  /**
23
23
  * Defaults applied to every adapter the factory builds: the client (or how to
24
24
  * build one) and the cross-cutting options a team usually wants identical
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });