@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
@@ -1,281 +0,0 @@
1
- "use strict";
2
- /**
3
- * S3 offloader for large checkpoint payloads
4
- *
5
- * DynamoDB has a hard 400KB item size limit. This utility transparently
6
- * offloads payloads exceeding a configurable threshold (default: 350KB)
7
- * to S3, storing only an S3 key reference in DynamoDB.
8
- *
9
- * Requires `@aws-sdk/client-s3` as an optional peer dependency.
10
- *
11
- * @remarks
12
- * This module uses synchronous `require()` for lazy loading of the S3 SDK
13
- * to avoid making the DynamoDBSaver constructor async. This means it
14
- * requires a CommonJS-compatible environment (Node.js with CJS, or a
15
- * bundler that polyfills require). Pure ESM environments are not supported.
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.S3Offloader = void 0;
19
- const logger_1 = require("./logger");
20
- /** Default threshold: 350KB (leaves 50KB headroom below DynamoDB's 400KB limit) */
21
- const DEFAULT_THRESHOLD_BYTES = 350 * 1024;
22
- /** Default S3 key prefix for offloaded payloads */
23
- const DEFAULT_KEY_PREFIX = 'langgraph-checkpoints/';
24
- /**
25
- * Default server-side encryption. Matches S3's own default (SSE-S3, AES256) since
26
- * January 2023, but asserting it on the PutObject makes the intent explicit for
27
- * compliance reviews and protects users running against older buckets or custom
28
- * endpoints that don't inherit the modern default.
29
- */
30
- const DEFAULT_SERVER_SIDE_ENCRYPTION = 'AES256';
31
- /* eslint-disable @typescript-eslint/no-require-imports -- TODO: migrate to dynamic import() when Jest ESM support is stable */
32
- // Lazy-loaded S3 SDK — uses require() for Jest CJS compatibility.
33
- // Replace with import() when the test runner supports --experimental-vm-modules.
34
- let s3Sdk;
35
- function getS3Sdk() {
36
- if (!s3Sdk) {
37
- s3Sdk = require('@aws-sdk/client-s3');
38
- }
39
- return s3Sdk;
40
- }
41
- /**
42
- * S3 offloader for large checkpoint payloads
43
- *
44
- * Transparently uploads large payloads to S3 and returns S3 key references
45
- * for storage in DynamoDB. On read, downloads from S3 when a reference is present.
46
- *
47
- * @example
48
- * ```typescript
49
- * const offloader = new S3Offloader({
50
- * bucketName: 'my-checkpoints-bucket',
51
- * keyPrefix: 'langgraph/',
52
- * thresholdBytes: 350 * 1024,
53
- * });
54
- *
55
- * if (offloader.shouldOffload(data)) {
56
- * const key = await offloader.upload('thread/checkpoint/field.bin', data);
57
- * // Store `key` in DynamoDB instead of `data`
58
- * }
59
- * ```
60
- */
61
- class S3Offloader {
62
- s3Client;
63
- bucketName;
64
- keyPrefix;
65
- thresholdBytes;
66
- serverSideEncryption;
67
- sseKmsKeyId;
68
- clientConfig;
69
- constructor(config) {
70
- this.bucketName = config.bucketName;
71
- this.keyPrefix = config.keyPrefix ?? DEFAULT_KEY_PREFIX;
72
- this.thresholdBytes = config.thresholdBytes ?? DEFAULT_THRESHOLD_BYTES;
73
- this.serverSideEncryption = config.serverSideEncryption ?? DEFAULT_SERVER_SIDE_ENCRYPTION;
74
- this.sseKmsKeyId = config.sseKmsKeyId;
75
- this.clientConfig = config.clientConfig;
76
- }
77
- /**
78
- * Get or lazily create the S3 client on first use.
79
- * Defers S3Client construction so the constructor remains lightweight and sync.
80
- */
81
- getClient() {
82
- if (!this.s3Client) {
83
- const { S3Client } = getS3Sdk();
84
- this.s3Client = new S3Client((this.clientConfig ?? {}));
85
- }
86
- return this.s3Client;
87
- }
88
- /**
89
- * Check whether a payload should be offloaded to S3
90
- *
91
- * @param data - Serialized payload
92
- * @returns true if the payload exceeds the threshold
93
- */
94
- shouldOffload(data) {
95
- return data.length >= this.thresholdBytes;
96
- }
97
- /**
98
- * Build a fully-qualified S3 key for a checkpoint field
99
- *
100
- * @param threadId - Thread identifier
101
- * @param checkpointId - Checkpoint identifier
102
- * @param field - Field name (e.g., 'checkpoint', 'metadata', 'write-0')
103
- * @returns Fully-qualified S3 key
104
- */
105
- buildKey(threadId, checkpointId, field) {
106
- return `${this.keyPrefix}${threadId}/${checkpointId}/${field}.bin`;
107
- }
108
- /**
109
- * Upload data to S3
110
- *
111
- * @param key - S3 object key
112
- * @param data - Data to upload
113
- * @returns The S3 key that was used
114
- */
115
- async upload(key, data) {
116
- const { PutObjectCommand } = getS3Sdk();
117
- const client = this.getClient();
118
- await client.send(new PutObjectCommand({
119
- Bucket: this.bucketName,
120
- Key: key,
121
- Body: data,
122
- ContentType: 'application/octet-stream',
123
- ServerSideEncryption: this
124
- .serverSideEncryption,
125
- ...(this.sseKmsKeyId && { SSEKMSKeyId: this.sseKmsKeyId }),
126
- }));
127
- return key;
128
- }
129
- /**
130
- * Download data from S3
131
- *
132
- * @param key - S3 object key to download
133
- * @returns The downloaded data as Uint8Array
134
- * @throws Error if the download fails or body is empty
135
- */
136
- async download(key) {
137
- const { GetObjectCommand } = getS3Sdk();
138
- const client = this.getClient();
139
- const response = await client.send(new GetObjectCommand({
140
- Bucket: this.bucketName,
141
- Key: key,
142
- }));
143
- if (!response.Body) {
144
- throw new Error(`S3 object body is empty for key: ${key}`);
145
- }
146
- // Convert the readable stream to Uint8Array
147
- const byteArray = await response.Body.transformToByteArray();
148
- return new Uint8Array(byteArray);
149
- }
150
- /**
151
- * Delete a single object from S3
152
- *
153
- * @param key - S3 object key to delete
154
- */
155
- async delete(key) {
156
- const { DeleteObjectCommand } = getS3Sdk();
157
- const client = this.getClient();
158
- await client.send(new DeleteObjectCommand({
159
- Bucket: this.bucketName,
160
- Key: key,
161
- }));
162
- }
163
- /**
164
- * Batch delete multiple objects from S3
165
- *
166
- * @param keys - Array of S3 object keys to delete
167
- */
168
- async deleteBatch(keys) {
169
- if (keys.length === 0)
170
- return;
171
- const { DeleteObjectsCommand } = getS3Sdk();
172
- const client = this.getClient();
173
- // S3 DeleteObjects supports up to 1000 keys per request
174
- const batchSize = 1000;
175
- for (let i = 0; i < keys.length; i += batchSize) {
176
- const batch = keys.slice(i, i + batchSize);
177
- const response = await client.send(new DeleteObjectsCommand({
178
- Bucket: this.bucketName,
179
- Delete: {
180
- Objects: batch.map((key) => ({ Key: key })),
181
- Quiet: true,
182
- },
183
- }));
184
- // Log any failed deletions (Quiet mode still reports errors)
185
- if (response.Errors && response.Errors.length > 0) {
186
- const failedKeys = response.Errors.map((err) => `${err.Key} (${err.Code}: ${err.Message})`).join(', ');
187
- (0, logger_1.getLogger)().warn(`S3 deleteBatch: ${response.Errors.length} objects failed to delete: ${failedKeys}`);
188
- }
189
- }
190
- }
191
- /**
192
- * Get the configured key prefix (useful for logging)
193
- */
194
- getKeyPrefix() {
195
- return this.keyPrefix;
196
- }
197
- /**
198
- * Ensure an S3 lifecycle rule exists for automatic object expiration.
199
- *
200
- * This method is **idempotent**: it reads existing lifecycle rules and only
201
- * adds or updates the langgraph-specific rule. User-defined rules on the
202
- * bucket are preserved.
203
- *
204
- * @param ttlDays - Expiration in days (S3 lifecycle uses day-level precision)
205
- * @throws Error if the S3 API calls fail (callers should catch gracefully)
206
- */
207
- async ensureLifecycleRule(ttlDays) {
208
- const { GetBucketLifecycleConfigurationCommand, PutBucketLifecycleConfigurationCommand } = getS3Sdk();
209
- const client = this.getClient();
210
- const ruleId = this.buildLifecycleRuleId();
211
- // 1. Read existing lifecycle configuration
212
- let existingRules = [];
213
- try {
214
- const existing = await client.send(new GetBucketLifecycleConfigurationCommand({ Bucket: this.bucketName }));
215
- existingRules = existing.Rules ?? [];
216
- }
217
- catch (error) {
218
- // NoSuchLifecycleConfiguration means bucket has no lifecycle config — treat as empty
219
- if (error &&
220
- typeof error === 'object' &&
221
- 'name' in error &&
222
- error.name === 'NoSuchLifecycleConfiguration') {
223
- existingRules = [];
224
- }
225
- else {
226
- throw error;
227
- }
228
- }
229
- // 2. Check if a matching rule already exists (by ID)
230
- const existingRule = existingRules.find((r) => r.ID === ruleId);
231
- if (existingRule &&
232
- existingRule.Status === 'Enabled' &&
233
- existingRule.Expiration &&
234
- existingRule.Expiration.Days === ttlDays) {
235
- // Rule already exists with correct settings — nothing to do
236
- (0, logger_1.getLogger)().info(`S3 lifecycle rule '${ruleId}' already exists with ${ttlDays}-day expiration — skipping`);
237
- return;
238
- }
239
- // 3. Build the new rule
240
- const newRule = {
241
- ID: ruleId,
242
- Filter: { Prefix: this.keyPrefix },
243
- Status: 'Enabled',
244
- Expiration: { Days: ttlDays },
245
- };
246
- // 4. Merge: replace existing rule with same ID or append
247
- const mergedRules = existingRule
248
- ? existingRules.map((r) => (r.ID === ruleId ? newRule : r))
249
- : [...existingRules, newRule];
250
- // 5. Write back
251
- await client.send(new PutBucketLifecycleConfigurationCommand({
252
- Bucket: this.bucketName,
253
- LifecycleConfiguration: {
254
- Rules: mergedRules,
255
- },
256
- }));
257
- (0, logger_1.getLogger)().info(`S3 lifecycle rule '${ruleId}' configured: ${ttlDays}-day expiration on prefix '${this.keyPrefix}'`);
258
- }
259
- /**
260
- * Generate a deterministic lifecycle rule ID for idempotency.
261
- *
262
- * The ID is scoped to the configured key prefix but intentionally TTL-independent:
263
- * changing ttlDays updates the existing rule in place instead of leaving a stale
264
- * rule behind that would still expire objects at the old cadence.
265
- *
266
- * @returns Rule ID string
267
- */
268
- buildLifecycleRuleId() {
269
- // Normalize the prefix into a lifecycle-rule-safe slug, trimming the trailing slash.
270
- const slug = this.keyPrefix.replace(/\/+$/, '').replace(/[^a-zA-Z0-9-]/g, '-') || 'default';
271
- return `langgraph-ttl-${slug}`;
272
- }
273
- /**
274
- * Release underlying S3 client resources
275
- */
276
- destroy() {
277
- this.s3Client?.destroy();
278
- }
279
- }
280
- exports.S3Offloader = S3Offloader;
281
- //# sourceMappingURL=s3-offloader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"s3-offloader.js","sourceRoot":"","sources":["../../../src/shared/utils/s3-offloader.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Best-effort S3 orphan cleanup shared by checkpointer writers.
3
- *
4
- * When a DynamoDB write fails *after* payloads have already been uploaded to S3,
5
- * this helper deletes the uploaded objects so they don't linger until the
6
- * lifecycle rule sweeps them.
7
- *
8
- * Transient S3 errors (503 SlowDown, 500 InternalError, throttling, socket
9
- * blips) get bounded retries with full-jitter backoff so a single bad minute
10
- * doesn't leak objects. Persistent failures are only logged — the lifecycle
11
- * rule is the ultimate backstop and failing the caller's write *after* DDB has
12
- * already rolled back would add confusion, not safety.
13
- */
14
- import type { S3Offloader } from './s3-offloader';
15
- export declare function cleanUpS3Orphans(offloader: S3Offloader, keys: ReadonlyArray<string | undefined>, context: string): Promise<void>;
16
- //# sourceMappingURL=s3-orphans.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"s3-orphans.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/s3-orphans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAqClD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,WAAW,EACtB,IAAI,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -1,79 +0,0 @@
1
- "use strict";
2
- /**
3
- * Best-effort S3 orphan cleanup shared by checkpointer writers.
4
- *
5
- * When a DynamoDB write fails *after* payloads have already been uploaded to S3,
6
- * this helper deletes the uploaded objects so they don't linger until the
7
- * lifecycle rule sweeps them.
8
- *
9
- * Transient S3 errors (503 SlowDown, 500 InternalError, throttling, socket
10
- * blips) get bounded retries with full-jitter backoff so a single bad minute
11
- * doesn't leak objects. Persistent failures are only logged — the lifecycle
12
- * rule is the ultimate backstop and failing the caller's write *after* DDB has
13
- * already rolled back would add confusion, not safety.
14
- */
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.cleanUpS3Orphans = cleanUpS3Orphans;
17
- const logger_1 = require("./logger");
18
- const sleep_1 = require("./sleep");
19
- const ORPHAN_CLEANUP_MAX_ATTEMPTS = 3;
20
- const ORPHAN_CLEANUP_BASE_DELAY_MS = 100;
21
- const ORPHAN_CLEANUP_MAX_DELAY_MS = 2_000;
22
- /** Error codes/names that indicate an S3 request is worth re-issuing. */
23
- const RETRYABLE_S3_SIGNALS = [
24
- 'SlowDown',
25
- 'InternalError',
26
- 'ServiceUnavailable',
27
- 'RequestTimeout',
28
- 'ThrottlingException',
29
- 'ProvisionedThroughputExceededException',
30
- // Node-level network transients (also caught by @aws-sdk/client-s3 wrappers).
31
- 'ECONNRESET',
32
- 'ECONNREFUSED',
33
- 'ETIMEDOUT',
34
- 'EPIPE',
35
- 'NetworkingError',
36
- 'TimeoutError',
37
- ];
38
- function isTransientS3Error(err) {
39
- if (!err || typeof err !== 'object')
40
- return false;
41
- const signals = [];
42
- const e = err;
43
- if (typeof e.name === 'string')
44
- signals.push(e.name);
45
- if (typeof e.code === 'string')
46
- signals.push(e.code);
47
- const status = e.$metadata?.httpStatusCode;
48
- if (typeof status === 'number' && (status === 429 || (status >= 500 && status < 600))) {
49
- return true;
50
- }
51
- return RETRYABLE_S3_SIGNALS.some((s) => signals.some((sig) => sig.includes(s)));
52
- }
53
- async function cleanUpS3Orphans(offloader, keys, context) {
54
- const orphans = keys.filter((k) => typeof k === 'string' && k.length > 0);
55
- if (orphans.length === 0)
56
- return;
57
- let delay = ORPHAN_CLEANUP_BASE_DELAY_MS;
58
- let lastErr;
59
- for (let attempt = 1; attempt <= ORPHAN_CLEANUP_MAX_ATTEMPTS; attempt++) {
60
- try {
61
- await offloader.deleteBatch(orphans);
62
- return;
63
- }
64
- catch (err) {
65
- lastErr = err;
66
- if (attempt >= ORPHAN_CLEANUP_MAX_ATTEMPTS || !isTransientS3Error(err)) {
67
- break;
68
- }
69
- await (0, sleep_1.sleep)((0, sleep_1.fullJitter)(delay));
70
- delay = Math.min(delay * 2, ORPHAN_CLEANUP_MAX_DELAY_MS);
71
- }
72
- }
73
- const msg = lastErr && typeof lastErr === 'object' && 'message' in lastErr
74
- ? String(lastErr.message)
75
- : String(lastErr);
76
- (0, logger_1.getLogger)().warn(`Failed to clean up orphaned S3 objects after ${context} ` +
77
- `(${ORPHAN_CLEANUP_MAX_ATTEMPTS} attempts, lifecycle rule will sweep): ${msg}`);
78
- }
79
- //# sourceMappingURL=s3-orphans.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"s3-orphans.js","sourceRoot":"","sources":["../../../src/shared/utils/s3-orphans.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Backoff helper shared by the UnprocessedItems / UnprocessedKeys retry loops
3
- * in batch-write and BatchGetItem paths. Centralized so both call sites use
4
- * the same cap, growth, and sleep semantics.
5
- */
6
- /**
7
- * Sleep for `ms` milliseconds, optionally cancellable via an `AbortSignal`.
8
- *
9
- * If `signal` is already aborted the returned promise rejects synchronously with
10
- * the signal's abort reason. Otherwise the timer resolves on the normal path and
11
- * the abort listener is removed to avoid leaking handlers.
12
- *
13
- * The `settled` flag is a belt-and-braces guard: `{ once: true }` already
14
- * prevents the listener from firing twice, but the guard also ensures we never
15
- * resolve *and* reject (which would produce an unhandled rejection if the timer
16
- * and abort event fire in the same microtask turn).
17
- */
18
- export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
19
- /**
20
- * Exponential-backoff delay calculator. Given the *previous* delay, returns the
21
- * next delay — double it, capped at `max`. Use with {@link sleep} and
22
- * {@link fullJitter} so concurrent retriers don't synchronize.
23
- *
24
- * let delay = INITIAL_DELAY_MS;
25
- * while (keep_going) {
26
- * await sleep(fullJitter(delay));
27
- * delay = nextBackoffDelay(delay);
28
- * }
29
- */
30
- export declare function nextBackoffDelay(currentMs: number, maxMs?: number): number;
31
- /**
32
- * Apply full jitter (AWS recommended) to a backoff delay.
33
- *
34
- * Returns a uniform random value in `[0, delayMs)`. Spreading retries across the
35
- * backoff window prevents the thundering-herd pattern where every throttled
36
- * client wakes up at the same instant and re-throttles the service.
37
- * See https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
38
- */
39
- export declare function fullJitter(delayMs: number): number;
40
- /**
41
- * Starting delay for UnprocessedItems / UnprocessedKeys retry loops.
42
- */
43
- export declare const INITIAL_BACKOFF_DELAY_MS = 100;
44
- /**
45
- * Maximum delay for UnprocessedItems / UnprocessedKeys retry loops.
46
- */
47
- export declare const MAX_BACKOFF_DELAY_MS = 5000;
48
- //# sourceMappingURL=sleep.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/sleep.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBrE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAA6B,GAAG,MAAM,CAEhG;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,MAA2B,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,oBAAoB,OAAuB,CAAC"}
@@ -1,82 +0,0 @@
1
- "use strict";
2
- /**
3
- * Backoff helper shared by the UnprocessedItems / UnprocessedKeys retry loops
4
- * in batch-write and BatchGetItem paths. Centralized so both call sites use
5
- * the same cap, growth, and sleep semantics.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.MAX_BACKOFF_DELAY_MS = exports.INITIAL_BACKOFF_DELAY_MS = void 0;
9
- exports.sleep = sleep;
10
- exports.nextBackoffDelay = nextBackoffDelay;
11
- exports.fullJitter = fullJitter;
12
- const DEFAULT_INITIAL_DELAY_MS = 100;
13
- const DEFAULT_MAX_DELAY_MS = 5000;
14
- /**
15
- * Sleep for `ms` milliseconds, optionally cancellable via an `AbortSignal`.
16
- *
17
- * If `signal` is already aborted the returned promise rejects synchronously with
18
- * the signal's abort reason. Otherwise the timer resolves on the normal path and
19
- * the abort listener is removed to avoid leaking handlers.
20
- *
21
- * The `settled` flag is a belt-and-braces guard: `{ once: true }` already
22
- * prevents the listener from firing twice, but the guard also ensures we never
23
- * resolve *and* reject (which would produce an unhandled rejection if the timer
24
- * and abort event fire in the same microtask turn).
25
- */
26
- function sleep(ms, signal) {
27
- if (signal?.aborted) {
28
- return Promise.reject(signal.reason ?? new Error('Aborted'));
29
- }
30
- return new Promise((resolve, reject) => {
31
- let settled = false;
32
- const timer = setTimeout(() => {
33
- if (settled)
34
- return;
35
- settled = true;
36
- signal?.removeEventListener('abort', onAbort);
37
- resolve();
38
- }, ms);
39
- const onAbort = () => {
40
- if (settled)
41
- return;
42
- settled = true;
43
- clearTimeout(timer);
44
- reject(signal?.reason ?? new Error('Aborted'));
45
- };
46
- signal?.addEventListener('abort', onAbort, { once: true });
47
- });
48
- }
49
- /**
50
- * Exponential-backoff delay calculator. Given the *previous* delay, returns the
51
- * next delay — double it, capped at `max`. Use with {@link sleep} and
52
- * {@link fullJitter} so concurrent retriers don't synchronize.
53
- *
54
- * let delay = INITIAL_DELAY_MS;
55
- * while (keep_going) {
56
- * await sleep(fullJitter(delay));
57
- * delay = nextBackoffDelay(delay);
58
- * }
59
- */
60
- function nextBackoffDelay(currentMs, maxMs = DEFAULT_MAX_DELAY_MS) {
61
- return Math.min(currentMs * 2, maxMs);
62
- }
63
- /**
64
- * Apply full jitter (AWS recommended) to a backoff delay.
65
- *
66
- * Returns a uniform random value in `[0, delayMs)`. Spreading retries across the
67
- * backoff window prevents the thundering-herd pattern where every throttled
68
- * client wakes up at the same instant and re-throttles the service.
69
- * See https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
70
- */
71
- function fullJitter(delayMs) {
72
- return Math.random() * delayMs;
73
- }
74
- /**
75
- * Starting delay for UnprocessedItems / UnprocessedKeys retry loops.
76
- */
77
- exports.INITIAL_BACKOFF_DELAY_MS = DEFAULT_INITIAL_DELAY_MS;
78
- /**
79
- * Maximum delay for UnprocessedItems / UnprocessedKeys retry loops.
80
- */
81
- exports.MAX_BACKOFF_DELAY_MS = DEFAULT_MAX_DELAY_MS;
82
- //# sourceMappingURL=sleep.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../../src/shared/utils/sleep.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAiBH,sBAoBC;AAaD,4CAEC;AAUD,gCAEC;AA9DD,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC;;;;;;;;;;;GAWG;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,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,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,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,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,QAAgB,oBAAoB;IACtF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,UAAU,CAAC,OAAe;IACxC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;AACjC,CAAC;AAED;;GAEG;AACU,QAAA,wBAAwB,GAAG,wBAAwB,CAAC;AAEjE;;GAEG;AACU,QAAA,oBAAoB,GAAG,oBAAoB,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * TTL (Time-To-Live) utility functions
3
- * Provide centralized TTL calculation for DynamoDB items
4
- */
5
- /**
6
- * Calculate Unix timestamp for TTL expiration from seconds.
7
- *
8
- * Validates the input so callers can't silently produce absurd timestamps
9
- * (e.g. `Number.MAX_SAFE_INTEGER`) that DynamoDB would reject at write time.
10
- *
11
- * @param ttlSeconds - Number of seconds until expiration (integer > 0, ≤ 100 years)
12
- * @returns Unix timestamp in seconds for DynamoDB TTL attribute
13
- * @throws Error if ttlSeconds is not a positive finite integer within the allowed range
14
- */
15
- export declare function calculateTTLTimestampFromSeconds(ttlSeconds: number): number;
16
- /**
17
- * Calculate Unix timestamp for TTL expiration from days
18
- *
19
- * @param ttlDays - Number of days until expiration
20
- * @returns Unix timestamp in seconds for DynamoDB TTL attribute
21
- * @throws Error if ttlDays would cause overflow
22
- */
23
- export declare function calculateTTLTimestamp(ttlDays: number): number;
24
- //# sourceMappingURL=ttl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ttl.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/ttl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAW3E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D"}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- /**
3
- * TTL (Time-To-Live) utility functions
4
- * Provide centralized TTL calculation for DynamoDB items
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.calculateTTLTimestampFromSeconds = calculateTTLTimestampFromSeconds;
8
- exports.calculateTTLTimestamp = calculateTTLTimestamp;
9
- /** 100 years in seconds — comfortable upper bound for any TTL use case. */
10
- const MAX_TTL_SECONDS = 100 * 365 * 24 * 60 * 60;
11
- /**
12
- * Calculate Unix timestamp for TTL expiration from seconds.
13
- *
14
- * Validates the input so callers can't silently produce absurd timestamps
15
- * (e.g. `Number.MAX_SAFE_INTEGER`) that DynamoDB would reject at write time.
16
- *
17
- * @param ttlSeconds - Number of seconds until expiration (integer > 0, ≤ 100 years)
18
- * @returns Unix timestamp in seconds for DynamoDB TTL attribute
19
- * @throws Error if ttlSeconds is not a positive finite integer within the allowed range
20
- */
21
- function calculateTTLTimestampFromSeconds(ttlSeconds) {
22
- if (typeof ttlSeconds !== 'number' || !Number.isInteger(ttlSeconds)) {
23
- throw new Error('ttlSeconds must be an integer');
24
- }
25
- if (ttlSeconds <= 0) {
26
- throw new Error('ttlSeconds must be positive');
27
- }
28
- if (ttlSeconds > MAX_TTL_SECONDS) {
29
- throw new Error(`ttlSeconds cannot exceed ${MAX_TTL_SECONDS} (100 years)`);
30
- }
31
- return Math.floor(Date.now() / 1000) + ttlSeconds;
32
- }
33
- /**
34
- * Calculate Unix timestamp for TTL expiration from days
35
- *
36
- * @param ttlDays - Number of days until expiration
37
- * @returns Unix timestamp in seconds for DynamoDB TTL attribute
38
- * @throws Error if ttlDays would cause overflow
39
- */
40
- function calculateTTLTimestamp(ttlDays) {
41
- return calculateTTLTimestampFromSeconds(ttlDays * 24 * 60 * 60);
42
- }
43
- //# sourceMappingURL=ttl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ttl.js","sourceRoot":"","sources":["../../../src/shared/utils/ttl.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAeH,4EAWC;AASD,sDAEC;AAnCD,2EAA2E;AAC3E,MAAM,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEjD;;;;;;;;;GASG;AACH,SAAgB,gCAAgC,CAAC,UAAkB;IACjE,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,UAAU,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,eAAe,cAAc,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,OAAe;IACnD,OAAO,gCAAgC,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAClE,CAAC"}
@@ -1,11 +0,0 @@
1
- import type { Item } from '@langchain/langgraph';
2
- import type { GetOperationActionParams } from '../types';
3
- /**
4
- * Get a memory item from DynamoDB
5
- *
6
- * @param params - Parameters for the get operation
7
- * @returns The item if found, null if not found
8
- * @throws Error if the operation fails or validation fails
9
- */
10
- export declare const getOperationAction: (params: GetOperationActionParams) => Promise<Item | null>;
11
- //# sourceMappingURL=get-operation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-operation.d.ts","sourceRoot":"","sources":["../../../src/store/actions/get-operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGzD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,wBAAwB,KAC/B,OAAO,CAAC,IAAI,GAAG,IAAI,CAoCrB,CAAC"}