@farukada/aws-langgraph-dynamodb-ts 0.2.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/README.md +224 -512
  2. package/dist/checkpointer/actions/delete-thread.d.ts +7 -6
  3. package/dist/checkpointer/actions/delete-thread.d.ts.map +1 -1
  4. package/dist/checkpointer/actions/delete-thread.js +47 -152
  5. package/dist/checkpointer/actions/delete-thread.js.map +1 -1
  6. package/dist/checkpointer/actions/get-tuple.d.ts +6 -14
  7. package/dist/checkpointer/actions/get-tuple.d.ts.map +1 -1
  8. package/dist/checkpointer/actions/get-tuple.js +13 -166
  9. package/dist/checkpointer/actions/get-tuple.js.map +1 -1
  10. package/dist/checkpointer/actions/list.d.ts +10 -0
  11. package/dist/checkpointer/actions/list.d.ts.map +1 -0
  12. package/dist/checkpointer/actions/list.js +51 -0
  13. package/dist/checkpointer/actions/list.js.map +1 -0
  14. package/dist/checkpointer/actions/put-writes.d.ts +6 -6
  15. package/dist/checkpointer/actions/put-writes.d.ts.map +1 -1
  16. package/dist/checkpointer/actions/put-writes.js +26 -75
  17. package/dist/checkpointer/actions/put-writes.js.map +1 -1
  18. package/dist/checkpointer/actions/put.d.ts +6 -11
  19. package/dist/checkpointer/actions/put.d.ts.map +1 -1
  20. package/dist/checkpointer/actions/put.js +29 -161
  21. package/dist/checkpointer/actions/put.js.map +1 -1
  22. package/dist/checkpointer/internal/assemble.d.ts +10 -0
  23. package/dist/checkpointer/internal/assemble.d.ts.map +1 -0
  24. package/dist/checkpointer/internal/assemble.js +37 -0
  25. package/dist/checkpointer/internal/assemble.js.map +1 -0
  26. package/dist/checkpointer/internal/configurable.d.ts +13 -0
  27. package/dist/checkpointer/internal/configurable.d.ts.map +1 -0
  28. package/dist/checkpointer/internal/configurable.js +23 -0
  29. package/dist/checkpointer/internal/configurable.js.map +1 -0
  30. package/dist/checkpointer/internal/fetch.d.ts +10 -0
  31. package/dist/checkpointer/internal/fetch.d.ts.map +1 -0
  32. package/dist/checkpointer/internal/fetch.js +46 -0
  33. package/dist/checkpointer/internal/fetch.js.map +1 -0
  34. package/dist/checkpointer/internal/filter-match.d.ts +12 -0
  35. package/dist/checkpointer/internal/filter-match.d.ts.map +1 -0
  36. package/dist/checkpointer/internal/filter-match.js +14 -0
  37. package/dist/checkpointer/internal/filter-match.js.map +1 -0
  38. package/dist/checkpointer/internal/item-reader.d.ts +10 -0
  39. package/dist/checkpointer/internal/item-reader.d.ts.map +1 -0
  40. package/dist/checkpointer/internal/item-reader.js +26 -0
  41. package/dist/checkpointer/internal/item-reader.js.map +1 -0
  42. package/dist/checkpointer/internal/item-writer.d.ts +14 -0
  43. package/dist/checkpointer/internal/item-writer.d.ts.map +1 -0
  44. package/dist/checkpointer/internal/item-writer.js +68 -0
  45. package/dist/checkpointer/internal/item-writer.js.map +1 -0
  46. package/dist/checkpointer/internal/keys.d.ts +15 -0
  47. package/dist/checkpointer/internal/keys.d.ts.map +1 -0
  48. package/dist/checkpointer/internal/keys.js +52 -0
  49. package/dist/checkpointer/internal/keys.js.map +1 -0
  50. package/dist/checkpointer/internal/query.d.ts +16 -0
  51. package/dist/checkpointer/internal/query.d.ts.map +1 -0
  52. package/dist/checkpointer/internal/query.js +33 -0
  53. package/dist/checkpointer/internal/query.js.map +1 -0
  54. package/dist/checkpointer/internal/setup.d.ts +31 -0
  55. package/dist/checkpointer/internal/setup.d.ts.map +1 -0
  56. package/dist/checkpointer/internal/setup.js +29 -0
  57. package/dist/checkpointer/internal/setup.js.map +1 -0
  58. package/dist/checkpointer/internal/validation.d.ts +9 -0
  59. package/dist/checkpointer/internal/validation.d.ts.map +1 -0
  60. package/dist/checkpointer/internal/validation.js +28 -0
  61. package/dist/checkpointer/internal/validation.js.map +1 -0
  62. package/dist/checkpointer/saver.d.ts +21 -0
  63. package/dist/checkpointer/saver.d.ts.map +1 -0
  64. package/dist/checkpointer/saver.js +49 -0
  65. package/dist/checkpointer/saver.js.map +1 -0
  66. package/dist/checkpointer/types.d.ts +43 -0
  67. package/dist/checkpointer/types.d.ts.map +1 -0
  68. package/dist/{store/types/index.js → checkpointer/types.js} +1 -1
  69. package/dist/checkpointer/types.js.map +1 -0
  70. package/dist/factory/factory.d.ts +41 -0
  71. package/dist/factory/factory.d.ts.map +1 -0
  72. package/dist/factory/factory.js +49 -0
  73. package/dist/factory/factory.js.map +1 -0
  74. package/dist/history/actions/add-messages.d.ts +12 -7
  75. package/dist/history/actions/add-messages.d.ts.map +1 -1
  76. package/dist/history/actions/add-messages.js +50 -48
  77. package/dist/history/actions/add-messages.js.map +1 -1
  78. package/dist/history/actions/clear.d.ts +5 -11
  79. package/dist/history/actions/clear.d.ts.map +1 -1
  80. package/dist/history/actions/clear.js +28 -62
  81. package/dist/history/actions/clear.js.map +1 -1
  82. package/dist/history/actions/get-messages.d.ts +6 -13
  83. package/dist/history/actions/get-messages.d.ts.map +1 -1
  84. package/dist/history/actions/get-messages.js +23 -59
  85. package/dist/history/actions/get-messages.js.map +1 -1
  86. package/dist/history/actions/list-sessions.d.ts +6 -22
  87. package/dist/history/actions/list-sessions.d.ts.map +1 -1
  88. package/dist/history/actions/list-sessions.js +26 -69
  89. package/dist/history/actions/list-sessions.js.map +1 -1
  90. package/dist/history/actions/reconcile-count.d.ts +10 -0
  91. package/dist/history/actions/reconcile-count.d.ts.map +1 -0
  92. package/dist/history/actions/reconcile-count.js +39 -0
  93. package/dist/history/actions/reconcile-count.js.map +1 -0
  94. package/dist/history/chat-message-history.d.ts +36 -0
  95. package/dist/history/chat-message-history.d.ts.map +1 -0
  96. package/dist/history/chat-message-history.js +67 -0
  97. package/dist/history/chat-message-history.js.map +1 -0
  98. package/dist/history/internal/append-saga.d.ts +17 -0
  99. package/dist/history/internal/append-saga.d.ts.map +1 -0
  100. package/dist/history/internal/append-saga.js +94 -0
  101. package/dist/history/internal/append-saga.js.map +1 -0
  102. package/dist/history/internal/item-mapper.d.ts +12 -0
  103. package/dist/history/internal/item-mapper.d.ts.map +1 -0
  104. package/dist/history/internal/item-mapper.js +33 -0
  105. package/dist/history/internal/item-mapper.js.map +1 -0
  106. package/dist/history/internal/keys.d.ts +9 -0
  107. package/dist/history/internal/keys.d.ts.map +1 -0
  108. package/dist/history/internal/keys.js +22 -0
  109. package/dist/history/internal/keys.js.map +1 -0
  110. package/dist/history/internal/message-chunker.d.ts +14 -0
  111. package/dist/history/internal/message-chunker.d.ts.map +1 -0
  112. package/dist/history/internal/message-chunker.js +60 -0
  113. package/dist/history/internal/message-chunker.js.map +1 -0
  114. package/dist/history/internal/message-transaction.d.ts +17 -0
  115. package/dist/history/internal/message-transaction.d.ts.map +1 -0
  116. package/dist/history/internal/message-transaction.js +27 -0
  117. package/dist/history/internal/message-transaction.js.map +1 -0
  118. package/dist/history/internal/query.d.ts +6 -0
  119. package/dist/history/internal/query.d.ts.map +1 -0
  120. package/dist/history/internal/query.js +28 -0
  121. package/dist/history/internal/query.js.map +1 -0
  122. package/dist/history/internal/session-update.d.ts +20 -0
  123. package/dist/history/internal/session-update.d.ts.map +1 -0
  124. package/dist/history/internal/session-update.js +46 -0
  125. package/dist/history/internal/session-update.js.map +1 -0
  126. package/dist/history/internal/setup.d.ts +28 -0
  127. package/dist/history/internal/setup.d.ts.map +1 -0
  128. package/dist/history/internal/setup.js +27 -0
  129. package/dist/history/internal/setup.js.map +1 -0
  130. package/dist/history/internal/title-generator.d.ts +7 -0
  131. package/dist/history/internal/title-generator.d.ts.map +1 -0
  132. package/dist/history/internal/title-generator.js +16 -0
  133. package/dist/history/internal/title-generator.js.map +1 -0
  134. package/dist/history/internal/ttl-anchor.d.ts +12 -0
  135. package/dist/history/internal/ttl-anchor.d.ts.map +1 -0
  136. package/dist/history/internal/ttl-anchor.js +26 -0
  137. package/dist/history/internal/ttl-anchor.js.map +1 -0
  138. package/dist/history/session-adapter.d.ts +10 -26
  139. package/dist/history/session-adapter.d.ts.map +1 -1
  140. package/dist/history/session-adapter.js +15 -57
  141. package/dist/history/session-adapter.js.map +1 -1
  142. package/dist/history/types.d.ts +36 -0
  143. package/dist/history/types.d.ts.map +1 -0
  144. package/dist/history/types.js +3 -0
  145. package/dist/history/types.js.map +1 -0
  146. package/dist/index.d.ts +18 -10
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +24 -16
  149. package/dist/index.js.map +1 -1
  150. package/dist/shared/clock.d.ts +3 -0
  151. package/dist/shared/clock.d.ts.map +1 -0
  152. package/dist/shared/clock.js +8 -0
  153. package/dist/shared/clock.js.map +1 -0
  154. package/dist/shared/codec/codec.d.ts +44 -0
  155. package/dist/shared/codec/codec.d.ts.map +1 -0
  156. package/dist/shared/codec/codec.js +44 -0
  157. package/dist/shared/codec/codec.js.map +1 -0
  158. package/dist/shared/codec/compression.d.ts +25 -0
  159. package/dist/shared/codec/compression.d.ts.map +1 -0
  160. package/dist/shared/codec/compression.js +49 -0
  161. package/dist/shared/codec/compression.js.map +1 -0
  162. package/dist/shared/codec/descriptor-keys.d.ts +4 -0
  163. package/dist/shared/codec/descriptor-keys.d.ts.map +1 -0
  164. package/dist/shared/codec/descriptor-keys.js +14 -0
  165. package/dist/shared/codec/descriptor-keys.js.map +1 -0
  166. package/dist/shared/codec/json-serde.d.ts +8 -0
  167. package/dist/shared/codec/json-serde.d.ts.map +1 -0
  168. package/dist/shared/codec/json-serde.js +18 -0
  169. package/dist/shared/codec/json-serde.js.map +1 -0
  170. package/dist/shared/codec/s3/client.d.ts +6 -0
  171. package/dist/shared/codec/s3/client.d.ts.map +1 -0
  172. package/dist/shared/codec/s3/client.js +18 -0
  173. package/dist/shared/codec/s3/client.js.map +1 -0
  174. package/dist/shared/codec/s3/config.d.ts +16 -0
  175. package/dist/shared/codec/s3/config.d.ts.map +1 -0
  176. package/dist/shared/codec/s3/config.js +14 -0
  177. package/dist/shared/codec/s3/config.js.map +1 -0
  178. package/dist/shared/codec/s3/delete.d.ts +8 -0
  179. package/dist/shared/codec/s3/delete.d.ts.map +1 -0
  180. package/dist/shared/codec/s3/delete.js +29 -0
  181. package/dist/shared/codec/s3/delete.js.map +1 -0
  182. package/dist/shared/codec/s3/lifecycle.d.ts +8 -0
  183. package/dist/shared/codec/s3/lifecycle.d.ts.map +1 -0
  184. package/dist/shared/codec/s3/lifecycle.js +47 -0
  185. package/dist/shared/codec/s3/lifecycle.js.map +1 -0
  186. package/dist/shared/codec/s3/offloader.d.ts +33 -0
  187. package/dist/shared/codec/s3/offloader.d.ts.map +1 -0
  188. package/dist/shared/codec/s3/offloader.js +80 -0
  189. package/dist/shared/codec/s3/offloader.js.map +1 -0
  190. package/dist/shared/codec/s3/orphans.d.ts +16 -0
  191. package/dist/shared/codec/s3/orphans.d.ts.map +1 -0
  192. package/dist/shared/codec/s3/orphans.js +73 -0
  193. package/dist/shared/codec/s3/orphans.js.map +1 -0
  194. package/dist/shared/codec/s3/read-write.d.ts +14 -0
  195. package/dist/shared/codec/s3/read-write.d.ts.map +1 -0
  196. package/dist/shared/codec/s3/read-write.js +42 -0
  197. package/dist/shared/codec/s3/read-write.js.map +1 -0
  198. package/dist/shared/constants.d.ts +37 -0
  199. package/dist/shared/constants.d.ts.map +1 -0
  200. package/dist/shared/constants.js +40 -0
  201. package/dist/shared/constants.js.map +1 -0
  202. package/dist/shared/dynamodb/backoff.d.ts +15 -0
  203. package/dist/shared/dynamodb/backoff.d.ts.map +1 -0
  204. package/dist/shared/dynamodb/backoff.js +48 -0
  205. package/dist/shared/dynamodb/backoff.js.map +1 -0
  206. package/dist/shared/dynamodb/batch-write.d.ts +10 -0
  207. package/dist/shared/dynamodb/batch-write.d.ts.map +1 -0
  208. package/dist/shared/dynamodb/batch-write.js +17 -0
  209. package/dist/shared/dynamodb/batch-write.js.map +1 -0
  210. package/dist/shared/dynamodb/client.d.ts +21 -0
  211. package/dist/shared/dynamodb/client.d.ts.map +1 -0
  212. package/dist/shared/dynamodb/client.js +19 -0
  213. package/dist/shared/dynamodb/client.js.map +1 -0
  214. package/dist/shared/dynamodb/drain-unprocessed.d.ts +15 -0
  215. package/dist/shared/dynamodb/drain-unprocessed.d.ts.map +1 -0
  216. package/dist/shared/dynamodb/drain-unprocessed.js +35 -0
  217. package/dist/shared/dynamodb/drain-unprocessed.js.map +1 -0
  218. package/dist/shared/dynamodb/paginate-core.d.ts +22 -0
  219. package/dist/shared/dynamodb/paginate-core.d.ts.map +1 -0
  220. package/dist/shared/dynamodb/paginate-core.js +52 -0
  221. package/dist/shared/dynamodb/paginate-core.js.map +1 -0
  222. package/dist/shared/dynamodb/paginate.d.ts +15 -0
  223. package/dist/shared/dynamodb/paginate.d.ts.map +1 -0
  224. package/dist/shared/dynamodb/paginate.js +20 -0
  225. package/dist/shared/dynamodb/paginate.js.map +1 -0
  226. package/dist/shared/dynamodb/retry-classifier.d.ts +9 -0
  227. package/dist/shared/dynamodb/retry-classifier.d.ts.map +1 -0
  228. package/dist/shared/dynamodb/retry-classifier.js +75 -0
  229. package/dist/shared/dynamodb/retry-classifier.js.map +1 -0
  230. package/dist/shared/dynamodb/retry.d.ts +18 -0
  231. package/dist/shared/dynamodb/retry.d.ts.map +1 -0
  232. package/dist/shared/dynamodb/retry.js +53 -0
  233. package/dist/shared/dynamodb/retry.js.map +1 -0
  234. package/dist/shared/dynamodb/scan.d.ts +15 -0
  235. package/dist/shared/dynamodb/scan.d.ts.map +1 -0
  236. package/dist/shared/dynamodb/scan.js +20 -0
  237. package/dist/shared/dynamodb/scan.js.map +1 -0
  238. package/dist/shared/dynamodb/types.d.ts +24 -0
  239. package/dist/shared/dynamodb/types.d.ts.map +1 -0
  240. package/dist/shared/dynamodb/types.js +3 -0
  241. package/dist/shared/dynamodb/types.js.map +1 -0
  242. package/dist/shared/errors/base-error.d.ts +22 -0
  243. package/dist/shared/errors/base-error.d.ts.map +1 -0
  244. package/dist/shared/errors/base-error.js +28 -0
  245. package/dist/shared/errors/base-error.js.map +1 -0
  246. package/dist/shared/errors/error-code.d.ts +13 -0
  247. package/dist/shared/errors/error-code.d.ts.map +1 -0
  248. package/dist/shared/errors/error-code.js +17 -0
  249. package/dist/shared/errors/error-code.js.map +1 -0
  250. package/dist/shared/errors/errors.d.ts +47 -0
  251. package/dist/shared/errors/errors.d.ts.map +1 -0
  252. package/dist/shared/errors/errors.js +82 -0
  253. package/dist/shared/errors/errors.js.map +1 -0
  254. package/dist/shared/errors/wrap-error.d.ts +16 -0
  255. package/dist/shared/errors/wrap-error.d.ts.map +1 -0
  256. package/dist/shared/errors/wrap-error.js +30 -0
  257. package/dist/shared/errors/wrap-error.js.map +1 -0
  258. package/dist/shared/logging/logger.d.ts +14 -0
  259. package/dist/shared/logging/logger.d.ts.map +1 -0
  260. package/dist/shared/logging/logger.js +16 -0
  261. package/dist/shared/logging/logger.js.map +1 -0
  262. package/dist/shared/logging/redaction.d.ts +19 -0
  263. package/dist/shared/logging/redaction.d.ts.map +1 -0
  264. package/dist/shared/logging/redaction.js +67 -0
  265. package/dist/shared/logging/redaction.js.map +1 -0
  266. package/dist/shared/options.d.ts +32 -0
  267. package/dist/shared/options.d.ts.map +1 -0
  268. package/dist/shared/options.js +3 -0
  269. package/dist/shared/options.js.map +1 -0
  270. package/dist/shared/ulid.d.ts +10 -0
  271. package/dist/shared/ulid.d.ts.map +1 -0
  272. package/dist/shared/ulid.js +65 -0
  273. package/dist/shared/ulid.js.map +1 -0
  274. package/dist/shared/validation/primitives.d.ts +17 -0
  275. package/dist/shared/validation/primitives.d.ts.map +1 -0
  276. package/dist/shared/validation/primitives.js +71 -0
  277. package/dist/shared/validation/primitives.js.map +1 -0
  278. package/dist/shared/validation/ttl.d.ts +16 -0
  279. package/dist/shared/validation/ttl.d.ts.map +1 -0
  280. package/dist/shared/validation/ttl.js +26 -0
  281. package/dist/shared/validation/ttl.js.map +1 -0
  282. package/dist/store/actions/get.d.ts +5 -0
  283. package/dist/store/actions/get.d.ts.map +1 -0
  284. package/dist/store/actions/get.js +21 -0
  285. package/dist/store/actions/get.js.map +1 -0
  286. package/dist/store/actions/list-namespaces.d.ts +9 -0
  287. package/dist/store/actions/list-namespaces.d.ts.map +1 -0
  288. package/dist/store/actions/list-namespaces.js +46 -0
  289. package/dist/store/actions/list-namespaces.js.map +1 -0
  290. package/dist/store/actions/put.d.ts +11 -0
  291. package/dist/store/actions/put.d.ts.map +1 -0
  292. package/dist/store/actions/put.js +81 -0
  293. package/dist/store/actions/put.js.map +1 -0
  294. package/dist/store/actions/reconcile-vector-index.d.ts +17 -0
  295. package/dist/store/actions/reconcile-vector-index.d.ts.map +1 -0
  296. package/dist/store/actions/reconcile-vector-index.js +27 -0
  297. package/dist/store/actions/reconcile-vector-index.js.map +1 -0
  298. package/dist/store/actions/search.d.ts +10 -0
  299. package/dist/store/actions/search.d.ts.map +1 -0
  300. package/dist/store/actions/search.js +72 -0
  301. package/dist/store/actions/search.js.map +1 -0
  302. package/dist/store/internal/filter.d.ts +10 -0
  303. package/dist/store/internal/filter.d.ts.map +1 -0
  304. package/dist/store/internal/filter.js +37 -0
  305. package/dist/store/internal/filter.js.map +1 -0
  306. package/dist/store/internal/index-reconcile.d.ts +22 -0
  307. package/dist/store/internal/index-reconcile.d.ts.map +1 -0
  308. package/dist/store/internal/index-reconcile.js +68 -0
  309. package/dist/store/internal/index-reconcile.js.map +1 -0
  310. package/dist/store/internal/index-sync.d.ts +11 -0
  311. package/dist/store/internal/index-sync.d.ts.map +1 -0
  312. package/dist/store/internal/index-sync.js +26 -0
  313. package/dist/store/internal/index-sync.js.map +1 -0
  314. package/dist/store/internal/item-mapper.d.ts +23 -0
  315. package/dist/store/internal/item-mapper.d.ts.map +1 -0
  316. package/dist/store/internal/item-mapper.js +51 -0
  317. package/dist/store/internal/item-mapper.js.map +1 -0
  318. package/dist/store/internal/keys.d.ts +18 -0
  319. package/dist/store/internal/keys.d.ts.map +1 -0
  320. package/dist/store/internal/keys.js +36 -0
  321. package/dist/store/internal/keys.js.map +1 -0
  322. package/dist/store/internal/namespace-match.d.ts +12 -0
  323. package/dist/store/internal/namespace-match.d.ts.map +1 -0
  324. package/dist/store/internal/namespace-match.js +41 -0
  325. package/dist/store/internal/namespace-match.js.map +1 -0
  326. package/dist/store/internal/query.d.ts +6 -0
  327. package/dist/store/internal/query.d.ts.map +1 -0
  328. package/dist/store/internal/query.js +32 -0
  329. package/dist/store/internal/query.js.map +1 -0
  330. package/dist/store/internal/ranker.d.ts +13 -0
  331. package/dist/store/internal/ranker.d.ts.map +1 -0
  332. package/dist/store/internal/ranker.js +29 -0
  333. package/dist/store/internal/ranker.js.map +1 -0
  334. package/dist/store/internal/semantic-search.d.ts +13 -0
  335. package/dist/store/internal/semantic-search.d.ts.map +1 -0
  336. package/dist/store/internal/semantic-search.js +47 -0
  337. package/dist/store/internal/semantic-search.js.map +1 -0
  338. package/dist/store/internal/setup.d.ts +31 -0
  339. package/dist/store/internal/setup.d.ts.map +1 -0
  340. package/dist/store/internal/setup.js +29 -0
  341. package/dist/store/internal/setup.js.map +1 -0
  342. package/dist/store/internal/validation.d.ts +7 -0
  343. package/dist/store/internal/validation.d.ts.map +1 -0
  344. package/dist/store/internal/validation.js +26 -0
  345. package/dist/store/internal/validation.js.map +1 -0
  346. package/dist/store/store.d.ts +24 -0
  347. package/dist/store/store.d.ts.map +1 -0
  348. package/dist/store/store.js +58 -0
  349. package/dist/store/store.js.map +1 -0
  350. package/dist/store/types.d.ts +28 -0
  351. package/dist/store/types.d.ts.map +1 -0
  352. package/dist/store/types.js +3 -0
  353. package/dist/store/types.js.map +1 -0
  354. package/dist/store/vector-backend.d.ts +27 -0
  355. package/dist/store/vector-backend.d.ts.map +1 -0
  356. package/dist/store/vector-backend.js +3 -0
  357. package/dist/store/vector-backend.js.map +1 -0
  358. package/package.json +21 -22
  359. package/dist/checkpointer/actions/index.d.ts +0 -5
  360. package/dist/checkpointer/actions/index.d.ts.map +0 -1
  361. package/dist/checkpointer/actions/index.js +0 -21
  362. package/dist/checkpointer/actions/index.js.map +0 -1
  363. package/dist/checkpointer/actions/validate-configurable.d.ts +0 -10
  364. package/dist/checkpointer/actions/validate-configurable.d.ts.map +0 -1
  365. package/dist/checkpointer/actions/validate-configurable.js +0 -39
  366. package/dist/checkpointer/actions/validate-configurable.js.map +0 -1
  367. package/dist/checkpointer/actions/writer.d.ts +0 -52
  368. package/dist/checkpointer/actions/writer.d.ts.map +0 -1
  369. package/dist/checkpointer/actions/writer.js +0 -109
  370. package/dist/checkpointer/actions/writer.js.map +0 -1
  371. package/dist/checkpointer/index.d.ts +0 -118
  372. package/dist/checkpointer/index.d.ts.map +0 -1
  373. package/dist/checkpointer/index.js +0 -393
  374. package/dist/checkpointer/index.js.map +0 -1
  375. package/dist/checkpointer/types/index.d.ts +0 -232
  376. package/dist/checkpointer/types/index.d.ts.map +0 -1
  377. package/dist/checkpointer/types/index.js +0 -13
  378. package/dist/checkpointer/types/index.js.map +0 -1
  379. package/dist/checkpointer/utils/deserialization.d.ts +0 -20
  380. package/dist/checkpointer/utils/deserialization.d.ts.map +0 -1
  381. package/dist/checkpointer/utils/deserialization.js +0 -81
  382. package/dist/checkpointer/utils/deserialization.js.map +0 -1
  383. package/dist/checkpointer/utils/index.d.ts +0 -7
  384. package/dist/checkpointer/utils/index.d.ts.map +0 -1
  385. package/dist/checkpointer/utils/index.js +0 -27
  386. package/dist/checkpointer/utils/index.js.map +0 -1
  387. package/dist/checkpointer/utils/validation.d.ts +0 -48
  388. package/dist/checkpointer/utils/validation.d.ts.map +0 -1
  389. package/dist/checkpointer/utils/validation.js +0 -235
  390. package/dist/checkpointer/utils/validation.js.map +0 -1
  391. package/dist/factory.d.ts +0 -153
  392. package/dist/factory.d.ts.map +0 -1
  393. package/dist/factory.js +0 -206
  394. package/dist/factory.js.map +0 -1
  395. package/dist/history/actions/add-message.d.ts +0 -10
  396. package/dist/history/actions/add-message.d.ts.map +0 -1
  397. package/dist/history/actions/add-message.js +0 -24
  398. package/dist/history/actions/add-message.js.map +0 -1
  399. package/dist/history/actions/index.d.ts +0 -9
  400. package/dist/history/actions/index.d.ts.map +0 -1
  401. package/dist/history/actions/index.js +0 -17
  402. package/dist/history/actions/index.js.map +0 -1
  403. package/dist/history/index.d.ts +0 -118
  404. package/dist/history/index.d.ts.map +0 -1
  405. package/dist/history/index.js +0 -179
  406. package/dist/history/index.js.map +0 -1
  407. package/dist/history/types/index.d.ts +0 -184
  408. package/dist/history/types/index.d.ts.map +0 -1
  409. package/dist/history/types/index.js +0 -7
  410. package/dist/history/types/index.js.map +0 -1
  411. package/dist/history/utils/index.d.ts +0 -9
  412. package/dist/history/utils/index.d.ts.map +0 -1
  413. package/dist/history/utils/index.js +0 -27
  414. package/dist/history/utils/index.js.map +0 -1
  415. package/dist/history/utils/optimistic-retry.d.ts +0 -31
  416. package/dist/history/utils/optimistic-retry.d.ts.map +0 -1
  417. package/dist/history/utils/optimistic-retry.js +0 -74
  418. package/dist/history/utils/optimistic-retry.js.map +0 -1
  419. package/dist/history/utils/title-generator.d.ts +0 -12
  420. package/dist/history/utils/title-generator.d.ts.map +0 -1
  421. package/dist/history/utils/title-generator.js +0 -57
  422. package/dist/history/utils/title-generator.js.map +0 -1
  423. package/dist/history/utils/update-expression-builder.d.ts +0 -55
  424. package/dist/history/utils/update-expression-builder.d.ts.map +0 -1
  425. package/dist/history/utils/update-expression-builder.js +0 -112
  426. package/dist/history/utils/update-expression-builder.js.map +0 -1
  427. package/dist/history/utils/validation.d.ts +0 -68
  428. package/dist/history/utils/validation.d.ts.map +0 -1
  429. package/dist/history/utils/validation.js +0 -213
  430. package/dist/history/utils/validation.js.map +0 -1
  431. package/dist/shared/index.d.ts +0 -5
  432. package/dist/shared/index.d.ts.map +0 -1
  433. package/dist/shared/index.js +0 -21
  434. package/dist/shared/index.js.map +0 -1
  435. package/dist/shared/utils/batch-write.d.ts +0 -74
  436. package/dist/shared/utils/batch-write.d.ts.map +0 -1
  437. package/dist/shared/utils/batch-write.js +0 -110
  438. package/dist/shared/utils/batch-write.js.map +0 -1
  439. package/dist/shared/utils/client-factory.d.ts +0 -25
  440. package/dist/shared/utils/client-factory.d.ts.map +0 -1
  441. package/dist/shared/utils/client-factory.js +0 -23
  442. package/dist/shared/utils/client-factory.js.map +0 -1
  443. package/dist/shared/utils/compressor.d.ts +0 -66
  444. package/dist/shared/utils/compressor.d.ts.map +0 -1
  445. package/dist/shared/utils/compressor.js +0 -133
  446. package/dist/shared/utils/compressor.js.map +0 -1
  447. package/dist/shared/utils/constants.d.ts +0 -13
  448. package/dist/shared/utils/constants.d.ts.map +0 -1
  449. package/dist/shared/utils/constants.js +0 -35
  450. package/dist/shared/utils/constants.js.map +0 -1
  451. package/dist/shared/utils/index.d.ts +0 -14
  452. package/dist/shared/utils/index.d.ts.map +0 -1
  453. package/dist/shared/utils/index.js +0 -30
  454. package/dist/shared/utils/index.js.map +0 -1
  455. package/dist/shared/utils/logger.d.ts +0 -75
  456. package/dist/shared/utils/logger.d.ts.map +0 -1
  457. package/dist/shared/utils/logger.js +0 -148
  458. package/dist/shared/utils/logger.js.map +0 -1
  459. package/dist/shared/utils/retry.d.ts +0 -26
  460. package/dist/shared/utils/retry.d.ts.map +0 -1
  461. package/dist/shared/utils/retry.js +0 -169
  462. package/dist/shared/utils/retry.js.map +0 -1
  463. package/dist/shared/utils/s3-offloader.d.ts +0 -153
  464. package/dist/shared/utils/s3-offloader.d.ts.map +0 -1
  465. package/dist/shared/utils/s3-offloader.js +0 -281
  466. package/dist/shared/utils/s3-offloader.js.map +0 -1
  467. package/dist/shared/utils/s3-orphans.d.ts +0 -16
  468. package/dist/shared/utils/s3-orphans.d.ts.map +0 -1
  469. package/dist/shared/utils/s3-orphans.js +0 -79
  470. package/dist/shared/utils/s3-orphans.js.map +0 -1
  471. package/dist/shared/utils/sleep.d.ts +0 -48
  472. package/dist/shared/utils/sleep.d.ts.map +0 -1
  473. package/dist/shared/utils/sleep.js +0 -82
  474. package/dist/shared/utils/sleep.js.map +0 -1
  475. package/dist/shared/utils/ttl.d.ts +0 -24
  476. package/dist/shared/utils/ttl.d.ts.map +0 -1
  477. package/dist/shared/utils/ttl.js +0 -43
  478. package/dist/shared/utils/ttl.js.map +0 -1
  479. package/dist/store/actions/get-operation.d.ts +0 -11
  480. package/dist/store/actions/get-operation.d.ts.map +0 -1
  481. package/dist/store/actions/get-operation.js +0 -42
  482. package/dist/store/actions/get-operation.js.map +0 -1
  483. package/dist/store/actions/index.d.ts +0 -5
  484. package/dist/store/actions/index.d.ts.map +0 -1
  485. package/dist/store/actions/index.js +0 -21
  486. package/dist/store/actions/index.js.map +0 -1
  487. package/dist/store/actions/list-namespaces-operation.d.ts +0 -10
  488. package/dist/store/actions/list-namespaces-operation.d.ts.map +0 -1
  489. package/dist/store/actions/list-namespaces-operation.js +0 -227
  490. package/dist/store/actions/list-namespaces-operation.js.map +0 -1
  491. package/dist/store/actions/put-operation.d.ts +0 -9
  492. package/dist/store/actions/put-operation.d.ts.map +0 -1
  493. package/dist/store/actions/put-operation.js +0 -107
  494. package/dist/store/actions/put-operation.js.map +0 -1
  495. package/dist/store/actions/search-operation.d.ts +0 -17
  496. package/dist/store/actions/search-operation.d.ts.map +0 -1
  497. package/dist/store/actions/search-operation.js +0 -203
  498. package/dist/store/actions/search-operation.js.map +0 -1
  499. package/dist/store/index.d.ts +0 -82
  500. package/dist/store/index.d.ts.map +0 -1
  501. package/dist/store/index.js +0 -172
  502. package/dist/store/index.js.map +0 -1
  503. package/dist/store/types/index.d.ts +0 -131
  504. package/dist/store/types/index.d.ts.map +0 -1
  505. package/dist/store/types/index.js.map +0 -1
  506. package/dist/store/utils/filter.d.ts +0 -16
  507. package/dist/store/utils/filter.d.ts.map +0 -1
  508. package/dist/store/utils/filter.js +0 -133
  509. package/dist/store/utils/filter.js.map +0 -1
  510. package/dist/store/utils/index.d.ts +0 -7
  511. package/dist/store/utils/index.d.ts.map +0 -1
  512. package/dist/store/utils/index.js +0 -27
  513. package/dist/store/utils/index.js.map +0 -1
  514. package/dist/store/utils/validation.d.ts +0 -61
  515. package/dist/store/utils/validation.d.ts.map +0 -1
  516. package/dist/store/utils/validation.js +0 -260
  517. package/dist/store/utils/validation.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ import type { S3Client } from '@aws-sdk/client-s3';
2
+ /** Parameters for {@link uploadObject}. */
3
+ export interface UploadParams {
4
+ bucket: string;
5
+ key: string;
6
+ data: Uint8Array;
7
+ serverSideEncryption?: string;
8
+ sseKmsKeyId?: string;
9
+ }
10
+ /** Upload `data` to S3, wrapping failures as `S3_OFFLOAD_FAILED`. */
11
+ export declare function uploadObject(client: S3Client, params: UploadParams): Promise<void>;
12
+ /** Download an object's bytes, wrapping failures/empty bodies as `S3_OFFLOAD_FAILED`. */
13
+ export declare function downloadObject(client: S3Client, bucket: string, key: string): Promise<Uint8Array>;
14
+ //# sourceMappingURL=read-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-write.d.ts","sourceRoot":"","sources":["../../../../src/shared/codec/s3/read-write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAwB,MAAM,oBAAoB,CAAC;AAMzE,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qEAAqE;AACrE,wBAAsB,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBxF;AAED,yFAAyF;AACzF,wBAAsB,cAAc,CAClC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,CAWrB"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uploadObject = uploadObject;
4
+ exports.downloadObject = downloadObject;
5
+ const error_code_1 = require("../../errors/error-code");
6
+ const wrap_error_1 = require("../../errors/wrap-error");
7
+ const client_1 = require("./client");
8
+ /** Upload `data` to S3, wrapping failures as `S3_OFFLOAD_FAILED`. */
9
+ async function uploadObject(client, params) {
10
+ const { PutObjectCommand } = await (0, client_1.loadS3Sdk)();
11
+ try {
12
+ await client.send(new PutObjectCommand({
13
+ Bucket: params.bucket,
14
+ Key: params.key,
15
+ Body: params.data,
16
+ ContentType: 'application/octet-stream',
17
+ ServerSideEncryption: params.serverSideEncryption,
18
+ ...(params.sseKmsKeyId ? { SSEKMSKeyId: params.sseKmsKeyId } : {}),
19
+ }));
20
+ }
21
+ catch (error) {
22
+ throw (0, wrap_error_1.wrapError)(error, error_code_1.ErrorCode.S3_OFFLOAD_FAILED, {
23
+ operation: 'upload',
24
+ key: params.key,
25
+ });
26
+ }
27
+ }
28
+ /** Download an object's bytes, wrapping failures/empty bodies as `S3_OFFLOAD_FAILED`. */
29
+ async function downloadObject(client, bucket, key) {
30
+ const { GetObjectCommand } = await (0, client_1.loadS3Sdk)();
31
+ try {
32
+ const response = await client.send(new GetObjectCommand({ Bucket: bucket, Key: key }));
33
+ if (!response.Body) {
34
+ throw new Error(`S3 object body is empty for key: ${key}`);
35
+ }
36
+ return new Uint8Array(await response.Body.transformToByteArray());
37
+ }
38
+ catch (error) {
39
+ throw (0, wrap_error_1.wrapError)(error, error_code_1.ErrorCode.S3_OFFLOAD_FAILED, { operation: 'download', key });
40
+ }
41
+ }
42
+ //# sourceMappingURL=read-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-write.js","sourceRoot":"","sources":["../../../../src/shared/codec/s3/read-write.ts"],"names":[],"mappings":";;AAgBA,oCAmBC;AAGD,wCAeC;AAnDD,wDAAoD;AACpD,wDAAoD;AACpD,qCAAqC;AAWrC,qEAAqE;AAC9D,KAAK,UAAU,YAAY,CAAC,MAAgB,EAAE,MAAoB;IACvE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAA,kBAAS,GAAE,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,gBAAgB,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,0BAA0B;YACvC,oBAAoB,EAAE,MAAM,CAAC,oBAAwD;YACrF,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,sBAAS,EAAC,KAAc,EAAE,sBAAS,CAAC,iBAAiB,EAAE;YAC3D,SAAS,EAAE,QAAQ;YACnB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,yFAAyF;AAClF,KAAK,UAAU,cAAc,CAClC,MAAgB,EAChB,MAAc,EACd,GAAW;IAEX,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAA,kBAAS,GAAE,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,sBAAS,EAAC,KAAc,EAAE,sBAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC"}
@@ -0,0 +1,37 @@
1
+ /** Maximum TTL expressed in days (5 years). */
2
+ export declare const MAX_TTL_DAYS: number;
3
+ /** Maximum TTL expressed in seconds (100 years). */
4
+ export declare const MAX_TTL_SECONDS: number;
5
+ /** Hard cap on query-pagination loop iterations (runaway-loop guard). */
6
+ export declare const MAX_LOOP_ITERATIONS = 1000;
7
+ /** Hard cap on items collected into memory across a paginated query. */
8
+ export declare const MAX_TOTAL_ITEMS_IN_MEMORY = 10000;
9
+ /** DynamoDB BatchWriteItem maximum requests per call. */
10
+ export declare const BATCH_WRITE_MAX = 25;
11
+ /** DynamoDB BatchGetItem maximum keys per call. */
12
+ export declare const BATCH_GET_MAX = 100;
13
+ /** Maximum retries draining UnprocessedItems / UnprocessedKeys. */
14
+ export declare const MAX_UNPROCESSED_RETRIES = 10;
15
+ /** Starting delay for UnprocessedItems / UnprocessedKeys backoff loops. */
16
+ export declare const INITIAL_BACKOFF_DELAY_MS = 100;
17
+ /** Maximum backoff delay for retry loops. */
18
+ export declare const MAX_BACKOFF_DELAY_MS = 5000;
19
+ /** S3 DeleteObjects maximum keys per request. */
20
+ export declare const S3_DELETE_BATCH_MAX = 1000;
21
+ /** Default payload size that triggers S3 offload (350 KB; 50 KB under the DDB 400 KB cap). */
22
+ export declare const DEFAULT_S3_THRESHOLD_BYTES: number;
23
+ /** Default S3 key prefix for offloaded payloads. */
24
+ export declare const DEFAULT_S3_KEY_PREFIX = "langgraph-checkpoints/";
25
+ /** Default S3 server-side encryption algorithm. */
26
+ export declare const DEFAULT_S3_SSE = "AES256";
27
+ /** Default minimum payload size before gzip compression is attempted. */
28
+ export declare const DEFAULT_COMPRESSION_MIN_BYTES = 1024;
29
+ /** Default gzip compression level (balanced speed/ratio). */
30
+ export declare const DEFAULT_COMPRESSION_LEVEL = 6;
31
+ /** Default gzip-bomb guard: maximum decompressed output (50 MiB). */
32
+ export declare const DEFAULT_MAX_DECOMPRESSED_BYTES: number;
33
+ /** Default maximum attempts for transient-error retries. */
34
+ export declare const DEFAULT_RETRY_MAX_ATTEMPTS = 5;
35
+ /** Default cap on candidates the in-DB semantic ranker will score. */
36
+ export declare const DEFAULT_MAX_SEARCH_CANDIDATES = 1000;
37
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,eAAO,MAAM,YAAY,QAAU,CAAC;AAEpC,oDAAoD;AACpD,eAAO,MAAM,eAAe,QAA2B,CAAC;AAExD,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,wEAAwE;AACxE,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C,yDAAyD;AACzD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,mDAAmD;AACnD,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,6CAA6C;AAC7C,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,iDAAiD;AACjD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,8FAA8F;AAC9F,eAAO,MAAM,0BAA0B,QAAa,CAAC;AAErD,oDAAoD;AACpD,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAE9D,mDAAmD;AACnD,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,yEAAyE;AACzE,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD,6DAA6D;AAC7D,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,qEAAqE;AACrE,eAAO,MAAM,8BAA8B,QAAmB,CAAC;AAE/D,4DAA4D;AAC5D,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,sEAAsE;AACtE,eAAO,MAAM,6BAA6B,OAAO,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_MAX_SEARCH_CANDIDATES = exports.DEFAULT_RETRY_MAX_ATTEMPTS = exports.DEFAULT_MAX_DECOMPRESSED_BYTES = exports.DEFAULT_COMPRESSION_LEVEL = exports.DEFAULT_COMPRESSION_MIN_BYTES = exports.DEFAULT_S3_SSE = exports.DEFAULT_S3_KEY_PREFIX = exports.DEFAULT_S3_THRESHOLD_BYTES = exports.S3_DELETE_BATCH_MAX = exports.MAX_BACKOFF_DELAY_MS = exports.INITIAL_BACKOFF_DELAY_MS = exports.MAX_UNPROCESSED_RETRIES = exports.BATCH_GET_MAX = exports.BATCH_WRITE_MAX = exports.MAX_TOTAL_ITEMS_IN_MEMORY = exports.MAX_LOOP_ITERATIONS = exports.MAX_TTL_SECONDS = exports.MAX_TTL_DAYS = void 0;
4
+ /** Maximum TTL expressed in days (5 years). */
5
+ exports.MAX_TTL_DAYS = 365 * 5;
6
+ /** Maximum TTL expressed in seconds (100 years). */
7
+ exports.MAX_TTL_SECONDS = 100 * 365 * 24 * 60 * 60;
8
+ /** Hard cap on query-pagination loop iterations (runaway-loop guard). */
9
+ exports.MAX_LOOP_ITERATIONS = 1000;
10
+ /** Hard cap on items collected into memory across a paginated query. */
11
+ exports.MAX_TOTAL_ITEMS_IN_MEMORY = 10000;
12
+ /** DynamoDB BatchWriteItem maximum requests per call. */
13
+ exports.BATCH_WRITE_MAX = 25;
14
+ /** DynamoDB BatchGetItem maximum keys per call. */
15
+ exports.BATCH_GET_MAX = 100;
16
+ /** Maximum retries draining UnprocessedItems / UnprocessedKeys. */
17
+ exports.MAX_UNPROCESSED_RETRIES = 10;
18
+ /** Starting delay for UnprocessedItems / UnprocessedKeys backoff loops. */
19
+ exports.INITIAL_BACKOFF_DELAY_MS = 100;
20
+ /** Maximum backoff delay for retry loops. */
21
+ exports.MAX_BACKOFF_DELAY_MS = 5000;
22
+ /** S3 DeleteObjects maximum keys per request. */
23
+ exports.S3_DELETE_BATCH_MAX = 1000;
24
+ /** Default payload size that triggers S3 offload (350 KB; 50 KB under the DDB 400 KB cap). */
25
+ exports.DEFAULT_S3_THRESHOLD_BYTES = 350 * 1024;
26
+ /** Default S3 key prefix for offloaded payloads. */
27
+ exports.DEFAULT_S3_KEY_PREFIX = 'langgraph-checkpoints/';
28
+ /** Default S3 server-side encryption algorithm. */
29
+ exports.DEFAULT_S3_SSE = 'AES256';
30
+ /** Default minimum payload size before gzip compression is attempted. */
31
+ exports.DEFAULT_COMPRESSION_MIN_BYTES = 1024;
32
+ /** Default gzip compression level (balanced speed/ratio). */
33
+ exports.DEFAULT_COMPRESSION_LEVEL = 6;
34
+ /** Default gzip-bomb guard: maximum decompressed output (50 MiB). */
35
+ exports.DEFAULT_MAX_DECOMPRESSED_BYTES = 50 * 1024 * 1024;
36
+ /** Default maximum attempts for transient-error retries. */
37
+ exports.DEFAULT_RETRY_MAX_ATTEMPTS = 5;
38
+ /** Default cap on candidates the in-DB semantic ranker will score. */
39
+ exports.DEFAULT_MAX_SEARCH_CANDIDATES = 1000;
40
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAClC,QAAA,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC;AAEpC,oDAAoD;AACvC,QAAA,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAExD,yEAAyE;AAC5D,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAExC,wEAAwE;AAC3D,QAAA,yBAAyB,GAAG,KAAK,CAAC;AAE/C,yDAAyD;AAC5C,QAAA,eAAe,GAAG,EAAE,CAAC;AAElC,mDAAmD;AACtC,QAAA,aAAa,GAAG,GAAG,CAAC;AAEjC,mEAAmE;AACtD,QAAA,uBAAuB,GAAG,EAAE,CAAC;AAE1C,2EAA2E;AAC9D,QAAA,wBAAwB,GAAG,GAAG,CAAC;AAE5C,6CAA6C;AAChC,QAAA,oBAAoB,GAAG,IAAI,CAAC;AAEzC,iDAAiD;AACpC,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAExC,8FAA8F;AACjF,QAAA,0BAA0B,GAAG,GAAG,GAAG,IAAI,CAAC;AAErD,oDAAoD;AACvC,QAAA,qBAAqB,GAAG,wBAAwB,CAAC;AAE9D,mDAAmD;AACtC,QAAA,cAAc,GAAG,QAAQ,CAAC;AAEvC,yEAAyE;AAC5D,QAAA,6BAA6B,GAAG,IAAI,CAAC;AAElD,6DAA6D;AAChD,QAAA,yBAAyB,GAAG,CAAC,CAAC;AAE3C,qEAAqE;AACxD,QAAA,8BAA8B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/D,4DAA4D;AAC/C,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAE5C,sEAAsE;AACzD,QAAA,6BAA6B,GAAG,IAAI,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Sleep for `ms` milliseconds, cancellable via `signal`. If `signal` is already
3
+ * aborted the promise rejects synchronously with the abort reason (or an
4
+ * {@link AbortError}); otherwise the timer resolves and the listener is removed.
5
+ */
6
+ export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
7
+ /** Next exponential-backoff delay: double `currentMs`, capped at `maxMs`. */
8
+ export declare function nextBackoffDelay(currentMs: number, maxMs?: number): number;
9
+ /**
10
+ * Apply AWS-recommended full jitter: a uniform random value in `[0, delayMs)`.
11
+ *
12
+ * @param rng - RNG seam returning `[0, 1)`. Defaults to `Math.random`.
13
+ */
14
+ export declare function fullJitter(delayMs: number, rng?: () => number): number;
15
+ //# sourceMappingURL=backoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backoff.d.ts","sourceRoot":"","sources":["../../../src/shared/dynamodb/backoff.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBrE;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAA6B,GAAG,MAAM,CAEhG;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,MAAoB,GAAG,MAAM,CAEnF"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sleep = sleep;
4
+ exports.nextBackoffDelay = nextBackoffDelay;
5
+ exports.fullJitter = fullJitter;
6
+ const constants_1 = require("../constants");
7
+ const errors_1 = require("../errors/errors");
8
+ /**
9
+ * Sleep for `ms` milliseconds, cancellable via `signal`. If `signal` is already
10
+ * aborted the promise rejects synchronously with the abort reason (or an
11
+ * {@link AbortError}); otherwise the timer resolves and the listener is removed.
12
+ */
13
+ function sleep(ms, signal) {
14
+ if (signal?.aborted) {
15
+ return Promise.reject(signal.reason ?? new errors_1.AbortError());
16
+ }
17
+ return new Promise((resolve, reject) => {
18
+ let settled = false;
19
+ const onAbort = () => {
20
+ if (settled)
21
+ return;
22
+ settled = true;
23
+ clearTimeout(timer);
24
+ reject(signal?.reason ?? new errors_1.AbortError());
25
+ };
26
+ const timer = setTimeout(() => {
27
+ if (settled)
28
+ return;
29
+ settled = true;
30
+ signal?.removeEventListener('abort', onAbort);
31
+ resolve();
32
+ }, ms);
33
+ signal?.addEventListener('abort', onAbort, { once: true });
34
+ });
35
+ }
36
+ /** Next exponential-backoff delay: double `currentMs`, capped at `maxMs`. */
37
+ function nextBackoffDelay(currentMs, maxMs = constants_1.MAX_BACKOFF_DELAY_MS) {
38
+ return Math.min(currentMs * 2, maxMs);
39
+ }
40
+ /**
41
+ * Apply AWS-recommended full jitter: a uniform random value in `[0, delayMs)`.
42
+ *
43
+ * @param rng - RNG seam returning `[0, 1)`. Defaults to `Math.random`.
44
+ */
45
+ function fullJitter(delayMs, rng = Math.random) {
46
+ return rng() * delayMs;
47
+ }
48
+ //# sourceMappingURL=backoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backoff.js","sourceRoot":"","sources":["../../../src/shared/dynamodb/backoff.ts"],"names":[],"mappings":";;AAQA,sBAoBC;AAGD,4CAEC;AAOD,gCAEC;AA1CD,4CAAoD;AACpD,6CAA8C;AAE9C;;;;GAIG;AACH,SAAgB,KAAK,CAAC,EAAU,EAAE,MAAoB;IACpD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,mBAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,mBAAU,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6EAA6E;AAC7E,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,QAAgB,gCAAoB;IACtF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,OAAe,EAAE,MAAoB,IAAI,CAAC,MAAM;IACzE,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;AACzB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
2
+ import { DrainOptions } from './drain-unprocessed';
3
+ import type { WriteRequest } from './types';
4
+ /**
5
+ * Write an arbitrary number of requests, chunked into batches of 25 (the
6
+ * BatchWriteItem limit). Each batch drains its UnprocessedItems independently.
7
+ * Partial-success applies across batches — see {@link BatchWriteIncompleteError}.
8
+ */
9
+ export declare function batchWriteAll(client: DynamoDBDocument, tableName: string, requests: WriteRequest[], options?: DrainOptions): Promise<void>;
10
+ //# sourceMappingURL=batch-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-write.d.ts","sourceRoot":"","sources":["../../../src/shared/dynamodb/batch-write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,YAAY,EAA0B,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAKf"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.batchWriteAll = batchWriteAll;
4
+ const constants_1 = require("../constants");
5
+ const drain_unprocessed_1 = require("./drain-unprocessed");
6
+ /**
7
+ * Write an arbitrary number of requests, chunked into batches of 25 (the
8
+ * BatchWriteItem limit). Each batch drains its UnprocessedItems independently.
9
+ * Partial-success applies across batches — see {@link BatchWriteIncompleteError}.
10
+ */
11
+ async function batchWriteAll(client, tableName, requests, options = {}) {
12
+ for (let offset = 0; offset < requests.length; offset += constants_1.BATCH_WRITE_MAX) {
13
+ const chunk = requests.slice(offset, offset + constants_1.BATCH_WRITE_MAX);
14
+ await (0, drain_unprocessed_1.drainUnprocessedWrites)(client, tableName, chunk, options);
15
+ }
16
+ }
17
+ //# sourceMappingURL=batch-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-write.js","sourceRoot":"","sources":["../../../src/shared/dynamodb/batch-write.ts"],"names":[],"mappings":";;AAWA,sCAUC;AAnBD,4CAA+C;AAC/C,2DAA2E;AAG3E;;;;GAIG;AACI,KAAK,UAAU,aAAa,CACjC,MAAwB,EACxB,SAAiB,EACjB,QAAwB,EACxB,UAAwB,EAAE;IAE1B,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,2BAAe,EAAE,CAAC;QACzE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,2BAAe,CAAC,CAAC;QAC/D,MAAM,IAAA,0CAAsB,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { DynamoDBClient, type DynamoDBClientConfig } from '@aws-sdk/client-dynamodb';
2
+ import { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
3
+ /** A resolved DynamoDB client plus its ownership flag. */
4
+ export interface ResolvedDynamoDBClient {
5
+ ddbClient: DynamoDBClient | undefined;
6
+ client: DynamoDBDocument;
7
+ ownsClient: boolean;
8
+ }
9
+ /** Options for {@link resolveDynamoDBClient}. */
10
+ export interface ResolveClientOptions {
11
+ client?: DynamoDBDocument;
12
+ clientConfig?: DynamoDBClientConfig;
13
+ createClient?: (config: DynamoDBClientConfig) => DynamoDBClient;
14
+ }
15
+ /**
16
+ * Resolve the DocumentClient for an adapter. An injected `client` is used as-is
17
+ * and not owned; otherwise a client is built from `clientConfig` (via the
18
+ * `createClient` seam) and owned, so the adapter destroys it on `destroy()`.
19
+ */
20
+ export declare function resolveDynamoDBClient(options: ResolveClientOptions): ResolvedDynamoDBClient;
21
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/shared/dynamodb/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,0DAA0D;AAC1D,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,cAAc,GAAG,SAAS,CAAC;IACtC,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,cAAc,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,sBAAsB,CAO3F"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveDynamoDBClient = resolveDynamoDBClient;
4
+ const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
5
+ const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
6
+ /**
7
+ * Resolve the DocumentClient for an adapter. An injected `client` is used as-is
8
+ * and not owned; otherwise a client is built from `clientConfig` (via the
9
+ * `createClient` seam) and owned, so the adapter destroys it on `destroy()`.
10
+ */
11
+ function resolveDynamoDBClient(options) {
12
+ if (options.client) {
13
+ return { ddbClient: undefined, client: options.client, ownsClient: false };
14
+ }
15
+ const createClient = options.createClient ?? ((config) => new client_dynamodb_1.DynamoDBClient(config));
16
+ const ddbClient = createClient(options.clientConfig ?? {});
17
+ return { ddbClient, client: lib_dynamodb_1.DynamoDBDocument.from(ddbClient), ownsClient: true };
18
+ }
19
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/shared/dynamodb/client.ts"],"names":[],"mappings":";;AAsBA,sDAOC;AA7BD,8DAAqF;AACrF,wDAAyD;AAgBzD;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,OAA6B;IACjE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC7E,CAAC;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,gCAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,+BAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACnF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
2
+ import type { WriteRequest } from './types';
3
+ /** Backoff/abort options shared by the drain helpers. */
4
+ export interface DrainOptions {
5
+ signal?: AbortSignal;
6
+ rng?: () => number;
7
+ maxRetries?: number;
8
+ }
9
+ /**
10
+ * Submit `requests` via BatchWriteItem and re-submit UnprocessedItems with
11
+ * full-jitter backoff until the batch drains. Throws
12
+ * {@link BatchWriteIncompleteError} if it cannot drain within the retry budget.
13
+ */
14
+ export declare function drainUnprocessedWrites(client: DynamoDBDocument, tableName: string, requests: WriteRequest[], options?: DrainOptions): Promise<void>;
15
+ //# sourceMappingURL=drain-unprocessed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drain-unprocessed.d.ts","sourceRoot":"","sources":["../../../src/shared/dynamodb/drain-unprocessed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAsBf"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.drainUnprocessedWrites = drainUnprocessedWrites;
4
+ const constants_1 = require("../constants");
5
+ const errors_1 = require("../errors/errors");
6
+ const backoff_1 = require("./backoff");
7
+ const retry_1 = require("./retry");
8
+ /**
9
+ * Submit `requests` via BatchWriteItem and re-submit UnprocessedItems with
10
+ * full-jitter backoff until the batch drains. Throws
11
+ * {@link BatchWriteIncompleteError} if it cannot drain within the retry budget.
12
+ */
13
+ async function drainUnprocessedWrites(client, tableName, requests, options = {}) {
14
+ if (requests.length === 0)
15
+ return;
16
+ const maxRetries = options.maxRetries ?? constants_1.MAX_UNPROCESSED_RETRIES;
17
+ const initialCount = requests.length;
18
+ let pending = requests;
19
+ let delay = constants_1.INITIAL_BACKOFF_DELAY_MS;
20
+ let retries = 0;
21
+ while (pending.length > 0) {
22
+ const result = await (0, retry_1.withDynamoDBRetry)(() => client.batchWrite({ RequestItems: { [tableName]: pending } }), { signal: options.signal });
23
+ const leftover = result.UnprocessedItems?.[tableName] ?? [];
24
+ if (leftover.length === 0)
25
+ return;
26
+ retries += 1;
27
+ if (retries > maxRetries) {
28
+ throw new errors_1.BatchWriteIncompleteError(initialCount - leftover.length, leftover, maxRetries);
29
+ }
30
+ await (0, backoff_1.sleep)((0, backoff_1.fullJitter)(delay, options.rng), options.signal);
31
+ delay = (0, backoff_1.nextBackoffDelay)(delay);
32
+ pending = leftover;
33
+ }
34
+ }
35
+ //# sourceMappingURL=drain-unprocessed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drain-unprocessed.js","sourceRoot":"","sources":["../../../src/shared/dynamodb/drain-unprocessed.ts"],"names":[],"mappings":";;AAoBA,wDA2BC;AA7CD,4CAAiF;AACjF,6CAA6D;AAC7D,uCAAgE;AAChE,mCAA4C;AAU5C;;;;GAIG;AACI,KAAK,UAAU,sBAAsB,CAC1C,MAAwB,EACxB,SAAiB,EACjB,QAAwB,EACxB,UAAwB,EAAE;IAE1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,mCAAuB,CAAC;IACjE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;IACrC,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,IAAI,KAAK,GAAG,oCAAwB,CAAC;IACrC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAiB,EACpC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EACnE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC3B,CAAC;QACF,MAAM,QAAQ,GAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAgC,IAAI,EAAE,CAAC;QAC5F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAClC,OAAO,IAAI,CAAC,CAAC;QACb,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;YACzB,MAAM,IAAI,kCAAyB,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,IAAA,eAAK,EAAC,IAAA,oBAAU,EAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,KAAK,GAAG,IAAA,0BAAgB,EAAC,KAAK,CAAC,CAAC;QAChC,OAAO,GAAG,QAAQ,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { DocItem } from './types';
2
+ /** One page of results plus the key to resume from (undefined when exhausted). */
3
+ export interface PageResult {
4
+ items: DocItem[];
5
+ lastKey: DocItem | undefined;
6
+ }
7
+ /** Options shared by the paginators built on {@link paginatePages}. */
8
+ export interface PaginateCoreOptions {
9
+ signal?: AbortSignal;
10
+ maxItems?: number;
11
+ maxIterations?: number;
12
+ }
13
+ /**
14
+ * Drive a paged DynamoDB read to completion, yielding each item. Continues past
15
+ * empty pages, honors the abort signal before each fetch, and enforces iteration
16
+ * + in-memory item caps. `fetchPage` performs one page read. When a cap is hit
17
+ * while more data remains, throws {@link ResultTruncatedError} rather than
18
+ * silently returning a partial result; pass `Infinity` caps to read to true
19
+ * completion (e.g. for deletes).
20
+ */
21
+ export declare function paginatePages(fetchPage: (startKey: DocItem | undefined) => Promise<PageResult>, options?: PaginateCoreOptions): AsyncGenerator<DocItem>;
22
+ //# sourceMappingURL=paginate-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginate-core.d.ts","sourceRoot":"","sources":["../../../src/shared/dynamodb/paginate-core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA4BD;;;;;;;GAOG;AACH,wBAAuB,aAAa,CAClC,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,EACjE,OAAO,GAAE,mBAAwB,GAChC,cAAc,CAAC,OAAO,CAAC,CAazB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.paginatePages = paginatePages;
4
+ const constants_1 = require("../constants");
5
+ const errors_1 = require("../errors/errors");
6
+ /** True when stopping at `index` of `page` would leave unyielded data behind. */
7
+ function moreDataRemains(page, index) {
8
+ return index < page.items.length - 1 || page.lastKey !== undefined;
9
+ }
10
+ /**
11
+ * Yield one page's items, counting toward the shared `state.yielded` budget.
12
+ * Returns `true` when the in-memory cap is reached (caller stops); throws
13
+ * {@link ResultTruncatedError} if stopping would leave unyielded data behind.
14
+ */
15
+ async function* yieldPageItems(page, state, maxItems) {
16
+ for (let index = 0; index < page.items.length; index++) {
17
+ yield page.items[index];
18
+ state.yielded += 1;
19
+ if (state.yielded >= maxItems) {
20
+ if (moreDataRemains(page, index))
21
+ throw new errors_1.ResultTruncatedError('maxItems', maxItems);
22
+ return true;
23
+ }
24
+ }
25
+ return false;
26
+ }
27
+ /**
28
+ * Drive a paged DynamoDB read to completion, yielding each item. Continues past
29
+ * empty pages, honors the abort signal before each fetch, and enforces iteration
30
+ * + in-memory item caps. `fetchPage` performs one page read. When a cap is hit
31
+ * while more data remains, throws {@link ResultTruncatedError} rather than
32
+ * silently returning a partial result; pass `Infinity` caps to read to true
33
+ * completion (e.g. for deletes).
34
+ */
35
+ async function* paginatePages(fetchPage, options = {}) {
36
+ const maxItems = options.maxItems ?? constants_1.MAX_TOTAL_ITEMS_IN_MEMORY;
37
+ const maxIterations = options.maxIterations ?? constants_1.MAX_LOOP_ITERATIONS;
38
+ const state = { yielded: 0 };
39
+ let startKey;
40
+ for (let iteration = 0; iteration < maxIterations; iteration++) {
41
+ if (options.signal?.aborted)
42
+ throw new errors_1.AbortError();
43
+ const page = await fetchPage(startKey);
44
+ if (yield* yieldPageItems(page, state, maxItems))
45
+ return;
46
+ startKey = page.lastKey;
47
+ if (startKey === undefined)
48
+ return;
49
+ }
50
+ throw new errors_1.ResultTruncatedError('maxIterations', maxIterations);
51
+ }
52
+ //# sourceMappingURL=paginate-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginate-core.js","sourceRoot":"","sources":["../../../src/shared/dynamodb/paginate-core.ts"],"names":[],"mappings":";;AAmDA,sCAgBC;AAnED,4CAA8E;AAC9E,6CAAoE;AAgBpE,iFAAiF;AACjF,SAAS,eAAe,CAAC,IAAgB,EAAE,KAAa;IACtD,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,KAAK,SAAS,CAAC,CAAC,cAAc,CAC5B,IAAgB,EAChB,KAA0B,EAC1B,QAAgB;IAEhB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;gBAAE,MAAM,IAAI,6BAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACvF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,SAAS,CAAC,CAAC,aAAa,CAClC,SAAiE,EACjE,UAA+B,EAAE;IAEjC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,qCAAyB,CAAC;IAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,+BAAmB,CAAC;IACnE,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC7B,IAAI,QAA6B,CAAC;IAClC,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC;QAC/D,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,mBAAU,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO;QACzD,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO;IACrC,CAAC;IACD,MAAM,IAAI,6BAAoB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { DynamoDBDocument, QueryCommandInput } from '@aws-sdk/lib-dynamodb';
2
+ import { type PaginateCoreOptions } from './paginate-core';
3
+ import type { DocItem } from './types';
4
+ /** Options for {@link paginateQuery}. */
5
+ export interface PaginateOptions extends PaginateCoreOptions {
6
+ client: DynamoDBDocument;
7
+ params: QueryCommandInput;
8
+ }
9
+ /**
10
+ * Drive a DynamoDB Query across all pages, yielding each item. Follows
11
+ * `LastEvaluatedKey`, honors the abort signal, wraps each page in
12
+ * {@link withDynamoDBRetry}, and enforces runaway guards via the shared core.
13
+ */
14
+ export declare function paginateQuery(options: PaginateOptions): AsyncGenerator<DocItem>;
15
+ //# sourceMappingURL=paginate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginate.d.ts","sourceRoot":"","sources":["../../../src/shared/dynamodb/paginate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,KAAK,mBAAmB,EAAiB,MAAM,iBAAiB,CAAC;AAE1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,yCAAyC;AACzC,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,CAW/E"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.paginateQuery = paginateQuery;
4
+ const paginate_core_1 = require("./paginate-core");
5
+ const retry_1 = require("./retry");
6
+ /**
7
+ * Drive a DynamoDB Query across all pages, yielding each item. Follows
8
+ * `LastEvaluatedKey`, honors the abort signal, wraps each page in
9
+ * {@link withDynamoDBRetry}, and enforces runaway guards via the shared core.
10
+ */
11
+ function paginateQuery(options) {
12
+ return (0, paginate_core_1.paginatePages)(async (startKey) => {
13
+ const page = await (0, retry_1.withDynamoDBRetry)(() => options.client.query({ ...options.params, ExclusiveStartKey: startKey }), { signal: options.signal });
14
+ return {
15
+ items: page.Items ?? [],
16
+ lastKey: page.LastEvaluatedKey,
17
+ };
18
+ }, options);
19
+ }
20
+ //# sourceMappingURL=paginate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginate.js","sourceRoot":"","sources":["../../../src/shared/dynamodb/paginate.ts"],"names":[],"mappings":";;AAiBA,sCAWC;AA1BD,mDAA0E;AAC1E,mCAA4C;AAS5C;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAAwB;IACpD,OAAO,IAAA,6BAAa,EAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAiB,EAClC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,EAC9E,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC3B,CAAC;QACF,OAAO;YACL,KAAK,EAAG,IAAI,CAAC,KAA+B,IAAI,EAAE;YAClD,OAAO,EAAE,IAAI,CAAC,gBAAuC;SACtD,CAAC;IACJ,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Default retryable transient signals. TransactionCanceledException is
3
+ * intentionally absent (its reasons include permanent failures);
4
+ * TransactionConflictException (transient row contention) IS retryable.
5
+ */
6
+ export declare const DEFAULT_RETRYABLE_ERRORS: readonly string[];
7
+ /** True when `error` (or any cause in its chain) matches a retryable signal. */
8
+ export declare function isRetryableError(error: Error, retryableErrors: readonly string[]): boolean;
9
+ //# sourceMappingURL=retry-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-classifier.d.ts","sourceRoot":"","sources":["../../../src/shared/dynamodb/retry-classifier.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAcrD,CAAC;AAwDF,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAK1F"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_RETRYABLE_ERRORS = void 0;
4
+ exports.isRetryableError = isRetryableError;
5
+ const MAX_CAUSE_DEPTH = 32;
6
+ /**
7
+ * Default retryable transient signals. TransactionCanceledException is
8
+ * intentionally absent (its reasons include permanent failures);
9
+ * TransactionConflictException (transient row contention) IS retryable.
10
+ */
11
+ exports.DEFAULT_RETRYABLE_ERRORS = [
12
+ 'ProvisionedThroughputExceededException',
13
+ 'ThrottlingException',
14
+ 'RequestLimitExceeded',
15
+ 'InternalServerError',
16
+ 'ServiceUnavailable',
17
+ 'TransactionConflictException',
18
+ 'ECONNRESET',
19
+ 'ECONNREFUSED',
20
+ 'ETIMEDOUT',
21
+ 'EPIPE',
22
+ 'EAI_AGAIN',
23
+ 'NetworkingError',
24
+ 'TimeoutError',
25
+ ];
26
+ /**
27
+ * Cancellation reason codes (from a `TransactionCanceledException`'s
28
+ * `CancellationReasons`) that are transient and safe to retry. `None` marks an
29
+ * item that was not the cause and is ignored.
30
+ */
31
+ const TRANSIENT_CANCELLATION_REASONS = [
32
+ 'None',
33
+ 'TransactionConflict',
34
+ 'ThrottlingError',
35
+ 'ProvisionedThroughputExceeded',
36
+ ];
37
+ /**
38
+ * When `error` is a transaction cancellation carrying reasons, return whether
39
+ * every reason is transient; otherwise undefined so normal signal matching
40
+ * applies. A bare cancellation with no reasons is treated as non-retryable.
41
+ */
42
+ function transactionCancellationRetryable(error) {
43
+ const reasons = error.CancellationReasons;
44
+ if (!reasons)
45
+ return undefined;
46
+ return reasons.every((reason) => reason.Code === undefined || TRANSIENT_CANCELLATION_REASONS.includes(reason.Code));
47
+ }
48
+ function collectSignals(error) {
49
+ const seen = new WeakSet();
50
+ const signals = [];
51
+ const walk = (node, depth) => {
52
+ if (depth > MAX_CAUSE_DEPTH || node === null || typeof node !== 'object' || seen.has(node)) {
53
+ return;
54
+ }
55
+ seen.add(node);
56
+ const fields = node;
57
+ for (const value of [fields.name, fields.code, fields.errno, fields.syscall]) {
58
+ if (typeof value === 'string')
59
+ signals.push(value);
60
+ }
61
+ if (fields.cause)
62
+ walk(fields.cause, depth + 1);
63
+ };
64
+ walk(error, 0);
65
+ return signals;
66
+ }
67
+ /** True when `error` (or any cause in its chain) matches a retryable signal. */
68
+ function isRetryableError(error, retryableErrors) {
69
+ const cancellation = transactionCancellationRetryable(error);
70
+ if (cancellation !== undefined)
71
+ return cancellation;
72
+ const signals = collectSignals(error);
73
+ return signals.some((signal) => retryableErrors.some((retryable) => signal.includes(retryable)));
74
+ }
75
+ //# sourceMappingURL=retry-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-classifier.js","sourceRoot":"","sources":["../../../src/shared/dynamodb/retry-classifier.ts"],"names":[],"mappings":";;;AA8EA,4CAKC;AAnFD,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;GAIG;AACU,QAAA,wBAAwB,GAAsB;IACzD,wCAAwC;IACxC,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,oBAAoB;IACpB,8BAA8B;IAC9B,YAAY;IACZ,cAAc;IACd,WAAW;IACX,OAAO;IACP,WAAW;IACX,iBAAiB;IACjB,cAAc;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,8BAA8B,GAAsB;IACxD,MAAM;IACN,qBAAqB;IACrB,iBAAiB;IACjB,+BAA+B;CAChC,CAAC;AAOF;;;;GAIG;AACH,SAAS,gCAAgC,CAAC,KAAY;IACpD,MAAM,OAAO,GAAI,KAAwD,CAAC,mBAAmB,CAAC;IAC9F,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO,CAAC,KAAK,CAClB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,8BAA8B,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAY;IAClC,MAAM,IAAI,GAAG,IAAI,OAAO,EAAU,CAAC;IACnC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,IAAW,EAAE,KAAa,EAAQ,EAAE;QAChD,IAAI,KAAK,GAAG,eAAe,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,IAMd,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7E,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACf,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,SAAgB,gBAAgB,CAAC,KAAY,EAAE,eAAkC;IAC/E,MAAM,YAAY,GAAG,gCAAgC,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IACpD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnG,CAAC"}