@farukada/aws-langgraph-dynamodb-ts 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/README.md +390 -193
  2. package/dist/{backfill → cjs/backfill}/backfill.d.ts +15 -12
  3. package/dist/cjs/backfill/backfill.js +177 -0
  4. package/dist/{checkpointer → cjs/checkpointer}/actions/delete-thread.d.ts +1 -1
  5. package/dist/cjs/checkpointer/actions/delete-thread.js +26 -0
  6. package/dist/{checkpointer → cjs/checkpointer}/actions/get-tuple.d.ts +4 -3
  7. package/dist/cjs/checkpointer/actions/get-tuple.js +22 -0
  8. package/dist/{checkpointer → cjs/checkpointer}/actions/list.d.ts +7 -4
  9. package/dist/cjs/checkpointer/actions/list.js +70 -0
  10. package/dist/{checkpointer → cjs/checkpointer}/actions/put-writes.d.ts +8 -6
  11. package/dist/cjs/checkpointer/actions/put-writes.js +21 -0
  12. package/dist/{checkpointer → cjs/checkpointer}/actions/put.d.ts +21 -15
  13. package/dist/cjs/checkpointer/actions/put.js +79 -0
  14. package/dist/{checkpointer → cjs/checkpointer}/internal/delta-history.d.ts +38 -26
  15. package/dist/cjs/checkpointer/internal/delta-history.js +131 -0
  16. package/dist/{checkpointer → cjs/checkpointer}/internal/listing.d.ts +4 -4
  17. package/dist/cjs/checkpointer/internal/listing.js +104 -0
  18. package/dist/{checkpointer → cjs/checkpointer}/internal/parse.d.ts +51 -15
  19. package/dist/cjs/checkpointer/internal/parse.js +184 -0
  20. package/dist/{checkpointer → cjs/checkpointer}/internal/pending-writes.d.ts +64 -25
  21. package/dist/cjs/checkpointer/internal/pending-writes.js +241 -0
  22. package/dist/{checkpointer → cjs/checkpointer}/internal/read.d.ts +15 -10
  23. package/dist/cjs/checkpointer/internal/read.js +132 -0
  24. package/dist/{checkpointer → cjs/checkpointer}/internal/rows.d.ts +94 -21
  25. package/dist/cjs/checkpointer/internal/rows.js +356 -0
  26. package/dist/{checkpointer → cjs/checkpointer}/internal/setup.d.ts +13 -20
  27. package/dist/cjs/checkpointer/internal/setup.js +25 -0
  28. package/dist/{checkpointer → cjs/checkpointer}/saver.d.ts +72 -36
  29. package/dist/cjs/checkpointer/saver.js +56 -0
  30. package/dist/{checkpointer → cjs/checkpointer}/types.d.ts +1 -1
  31. package/dist/cjs/checkpointer/types.js +2 -0
  32. package/dist/{factory → cjs/factory}/factory.d.ts +25 -20
  33. package/dist/cjs/factory/factory.js +137 -0
  34. package/dist/{factory → cjs/factory}/types.d.ts +12 -12
  35. package/dist/cjs/factory/types.js +2 -0
  36. package/dist/{history → cjs/history}/actions/add-messages.d.ts +18 -10
  37. package/dist/cjs/history/actions/add-messages.js +17 -0
  38. package/dist/{history → cjs/history}/actions/clear.d.ts +1 -1
  39. package/dist/cjs/history/actions/clear.js +29 -0
  40. package/dist/{history → cjs/history}/actions/get-messages.d.ts +11 -9
  41. package/dist/cjs/history/actions/get-messages.js +58 -0
  42. package/dist/{history → cjs/history}/actions/list-sessions.d.ts +3 -3
  43. package/dist/cjs/history/actions/list-sessions.js +67 -0
  44. package/dist/{history → cjs/history}/actions/reconcile-count.d.ts +13 -9
  45. package/dist/cjs/history/actions/reconcile-count.js +8 -0
  46. package/dist/{history → cjs/history}/chat-message-history.d.ts +62 -30
  47. package/dist/cjs/history/chat-message-history.js +61 -0
  48. package/dist/{history → cjs/history}/internal/append.d.ts +64 -32
  49. package/dist/cjs/history/internal/append.js +267 -0
  50. package/dist/{history → cjs/history}/internal/message-read.d.ts +3 -3
  51. package/dist/cjs/history/internal/message-read.js +93 -0
  52. package/dist/{history → cjs/history}/internal/parse.d.ts +2 -2
  53. package/dist/cjs/history/internal/parse.js +113 -0
  54. package/dist/{history → cjs/history}/internal/rows.d.ts +11 -10
  55. package/dist/cjs/history/internal/rows.js +96 -0
  56. package/dist/{history → cjs/history}/internal/session.d.ts +41 -22
  57. package/dist/cjs/history/internal/session.js +296 -0
  58. package/dist/{history → cjs/history}/internal/setup.d.ts +2 -2
  59. package/dist/cjs/history/internal/setup.js +60 -0
  60. package/dist/{history → cjs/history}/session-adapter.d.ts +0 -6
  61. package/dist/cjs/history/session-adapter.js +38 -0
  62. package/dist/{history → cjs/history}/types.d.ts +18 -15
  63. package/dist/cjs/history/types.js +2 -0
  64. package/dist/{index.d.ts → cjs/index.d.ts} +27 -27
  65. package/dist/cjs/index.js +25 -0
  66. package/dist/cjs/package.json +1 -0
  67. package/dist/{shared → cjs/shared}/adapter.d.ts +27 -16
  68. package/dist/cjs/shared/adapter.js +70 -0
  69. package/dist/cjs/shared/clock.js +14 -0
  70. package/dist/{shared → cjs/shared}/codec/codec.d.ts +37 -20
  71. package/dist/cjs/shared/codec/codec.js +162 -0
  72. package/dist/{shared → cjs/shared}/codec/compression.d.ts +9 -4
  73. package/dist/cjs/shared/codec/compression.js +45 -0
  74. package/dist/cjs/shared/codec/json-serde.js +58 -0
  75. package/dist/{shared → cjs/shared}/codec/s3/client-types.d.ts +2 -1
  76. package/dist/cjs/shared/codec/s3/client-types.js +6 -0
  77. package/dist/{shared → cjs/shared}/codec/s3/client.d.ts +25 -7
  78. package/dist/cjs/shared/codec/s3/client.js +78 -0
  79. package/dist/{shared → cjs/shared}/codec/s3/config.d.ts +12 -7
  80. package/dist/cjs/shared/codec/s3/config.js +92 -0
  81. package/dist/{shared → cjs/shared}/codec/s3/lifecycle.d.ts +71 -17
  82. package/dist/cjs/shared/codec/s3/lifecycle.js +223 -0
  83. package/dist/{shared → cjs/shared}/codec/s3/offloader.d.ts +42 -29
  84. package/dist/cjs/shared/codec/s3/offloader.js +289 -0
  85. package/dist/cjs/shared/concurrency.js +31 -0
  86. package/dist/{shared → cjs/shared}/dynamodb/abort.d.ts +2 -2
  87. package/dist/cjs/shared/dynamodb/abort.js +16 -0
  88. package/dist/{shared → cjs/shared}/dynamodb/batch-write.d.ts +2 -2
  89. package/dist/cjs/shared/dynamodb/batch-write.js +79 -0
  90. package/dist/cjs/shared/dynamodb/cancellation.js +37 -0
  91. package/dist/{shared → cjs/shared}/dynamodb/client.d.ts +24 -22
  92. package/dist/cjs/shared/dynamodb/client.js +40 -0
  93. package/dist/{shared → cjs/shared}/dynamodb/idempotent-write.d.ts +64 -19
  94. package/dist/cjs/shared/dynamodb/idempotent-write.js +173 -0
  95. package/dist/{shared → cjs/shared}/dynamodb/paginate.d.ts +2 -2
  96. package/dist/cjs/shared/dynamodb/paginate.js +90 -0
  97. package/dist/{shared → cjs/shared}/dynamodb/partition-delete.d.ts +6 -6
  98. package/dist/cjs/shared/dynamodb/partition-delete.js +177 -0
  99. package/dist/{shared → cjs/shared}/dynamodb/recency-index.d.ts +27 -15
  100. package/dist/cjs/shared/dynamodb/recency-index.js +146 -0
  101. package/dist/{shared → cjs/shared}/dynamodb/retry.d.ts +37 -6
  102. package/dist/cjs/shared/dynamodb/retry.js +193 -0
  103. package/dist/cjs/shared/dynamodb/row-size.d.ts +33 -0
  104. package/dist/cjs/shared/dynamodb/row-size.js +30 -0
  105. package/dist/{shared → cjs/shared}/dynamodb/table-schema.d.ts +27 -18
  106. package/dist/cjs/shared/dynamodb/table-schema.js +52 -0
  107. package/dist/{shared → cjs/shared}/errors/base-error.d.ts +42 -7
  108. package/dist/cjs/shared/errors/base-error.js +73 -0
  109. package/dist/{shared → cjs/shared}/errors/boundary.d.ts +29 -14
  110. package/dist/cjs/shared/errors/boundary.js +61 -0
  111. package/dist/cjs/shared/errors/classify.d.ts +206 -0
  112. package/dist/cjs/shared/errors/classify.js +232 -0
  113. package/dist/{shared → cjs/shared}/errors/error-code.d.ts +17 -10
  114. package/dist/cjs/shared/errors/error-code.js +27 -0
  115. package/dist/{shared → cjs/shared}/errors/errors.d.ts +75 -9
  116. package/dist/cjs/shared/errors/errors.js +123 -0
  117. package/dist/cjs/shared/logging/logger.js +30 -0
  118. package/dist/{shared → cjs/shared}/logging/redaction.d.ts +8 -4
  119. package/dist/cjs/shared/logging/redaction.js +145 -0
  120. package/dist/{shared → cjs/shared}/logging/secret-patterns.d.ts +30 -7
  121. package/dist/cjs/shared/logging/secret-patterns.js +93 -0
  122. package/dist/cjs/shared/logging/truncate.js +31 -0
  123. package/dist/{shared → cjs/shared}/options.d.ts +27 -11
  124. package/dist/cjs/shared/options.js +2 -0
  125. package/dist/cjs/shared/ulid.js +83 -0
  126. package/dist/{shared → cjs/shared}/validation/collaborators.d.ts +21 -2
  127. package/dist/cjs/shared/validation/collaborators.js +79 -0
  128. package/dist/{shared → cjs/shared}/validation/option-shape.d.ts +7 -5
  129. package/dist/cjs/shared/validation/option-shape.js +31 -0
  130. package/dist/{shared → cjs/shared}/validation/options.d.ts +4 -4
  131. package/dist/cjs/shared/validation/options.js +166 -0
  132. package/dist/cjs/shared/validation/primitives.js +114 -0
  133. package/dist/{shared → cjs/shared}/validation/ttl.d.ts +26 -9
  134. package/dist/cjs/shared/validation/ttl.js +52 -0
  135. package/dist/{store → cjs/store}/actions/list-namespaces.d.ts +5 -5
  136. package/dist/cjs/store/actions/list-namespaces.js +92 -0
  137. package/dist/{store → cjs/store}/actions/put.d.ts +11 -4
  138. package/dist/cjs/store/actions/put.js +49 -0
  139. package/dist/{store → cjs/store}/actions/reconcile-vector-index.d.ts +5 -5
  140. package/dist/cjs/store/actions/reconcile-vector-index.js +13 -0
  141. package/dist/{store → cjs/store}/actions/search.d.ts +2 -2
  142. package/dist/cjs/store/actions/search.js +26 -0
  143. package/dist/cjs/store/internal/batch-plan.d.ts +56 -0
  144. package/dist/cjs/store/internal/batch-plan.js +32 -0
  145. package/dist/{store → cjs/store}/internal/filter.d.ts +3 -3
  146. package/dist/cjs/store/internal/filter.js +64 -0
  147. package/dist/cjs/store/internal/get-item.d.ts +77 -0
  148. package/dist/cjs/store/internal/get-item.js +58 -0
  149. package/dist/{store → cjs/store}/internal/item-write.d.ts +72 -32
  150. package/dist/cjs/store/internal/item-write.js +181 -0
  151. package/dist/{store → cjs/store}/internal/parse.d.ts +15 -10
  152. package/dist/cjs/store/internal/parse.js +180 -0
  153. package/dist/{store → cjs/store}/internal/rows.d.ts +38 -34
  154. package/dist/cjs/store/internal/rows.js +166 -0
  155. package/dist/{store → cjs/store}/internal/semantic-search.d.ts +2 -2
  156. package/dist/cjs/store/internal/semantic-search.js +211 -0
  157. package/dist/{store → cjs/store}/internal/setup.d.ts +10 -15
  158. package/dist/cjs/store/internal/setup.js +103 -0
  159. package/dist/{store → cjs/store}/internal/table-search.d.ts +5 -5
  160. package/dist/cjs/store/internal/table-search.js +123 -0
  161. package/dist/{store → cjs/store}/internal/vector-index.d.ts +26 -15
  162. package/dist/cjs/store/internal/vector-index.js +269 -0
  163. package/dist/{store → cjs/store}/store.d.ts +82 -39
  164. package/dist/cjs/store/store.js +97 -0
  165. package/dist/{store → cjs/store}/types.d.ts +25 -10
  166. package/dist/cjs/store/types.js +2 -0
  167. package/dist/cjs/store/vector-backend.js +4 -0
  168. package/dist/esm/backfill/backfill.d.ts +171 -0
  169. package/dist/esm/backfill/backfill.js +170 -0
  170. package/dist/{checkpointer/actions/delete-thread.js → esm/checkpointer/actions/delete-thread.d.ts} +4 -26
  171. package/dist/esm/checkpointer/actions/delete-thread.js +23 -0
  172. package/dist/{checkpointer/actions/get-tuple.js → esm/checkpointer/actions/get-tuple.d.ts} +7 -24
  173. package/dist/esm/checkpointer/actions/get-tuple.js +19 -0
  174. package/dist/esm/checkpointer/actions/list.d.ts +55 -0
  175. package/dist/esm/checkpointer/actions/list.js +67 -0
  176. package/dist/{checkpointer/actions/put-writes.js → esm/checkpointer/actions/put-writes.d.ts} +10 -37
  177. package/dist/esm/checkpointer/actions/put-writes.js +18 -0
  178. package/dist/esm/checkpointer/actions/put.d.ts +95 -0
  179. package/dist/esm/checkpointer/actions/put.js +75 -0
  180. package/dist/esm/checkpointer/internal/delta-history.d.ts +124 -0
  181. package/dist/esm/checkpointer/internal/delta-history.js +126 -0
  182. package/dist/{checkpointer/internal/listing.js → esm/checkpointer/internal/listing.d.ts} +22 -118
  183. package/dist/esm/checkpointer/internal/listing.js +95 -0
  184. package/dist/esm/checkpointer/internal/parse.d.ts +298 -0
  185. package/dist/esm/checkpointer/internal/parse.js +169 -0
  186. package/dist/esm/checkpointer/internal/pending-writes.d.ts +314 -0
  187. package/dist/esm/checkpointer/internal/pending-writes.js +229 -0
  188. package/dist/esm/checkpointer/internal/read.d.ts +135 -0
  189. package/dist/esm/checkpointer/internal/read.js +125 -0
  190. package/dist/esm/checkpointer/internal/rows.d.ts +644 -0
  191. package/dist/esm/checkpointer/internal/rows.js +323 -0
  192. package/dist/esm/checkpointer/internal/setup.d.ts +47 -0
  193. package/dist/esm/checkpointer/internal/setup.js +21 -0
  194. package/dist/{checkpointer/saver.js → esm/checkpointer/saver.d.ts} +84 -87
  195. package/dist/esm/checkpointer/saver.js +52 -0
  196. package/dist/esm/checkpointer/types.d.ts +51 -0
  197. package/dist/esm/checkpointer/types.js +1 -0
  198. package/dist/esm/factory/factory.d.ts +154 -0
  199. package/dist/esm/factory/factory.js +133 -0
  200. package/dist/esm/factory/types.d.ts +76 -0
  201. package/dist/esm/factory/types.js +1 -0
  202. package/dist/{history/actions/add-messages.js → esm/history/actions/add-messages.d.ts} +20 -26
  203. package/dist/esm/history/actions/add-messages.js +14 -0
  204. package/dist/{history/actions/clear.js → esm/history/actions/clear.d.ts} +4 -35
  205. package/dist/esm/history/actions/clear.js +26 -0
  206. package/dist/esm/history/actions/get-messages.d.ts +60 -0
  207. package/dist/esm/history/actions/get-messages.js +55 -0
  208. package/dist/esm/history/actions/list-sessions.d.ts +55 -0
  209. package/dist/esm/history/actions/list-sessions.js +64 -0
  210. package/dist/{history/actions/reconcile-count.js → esm/history/actions/reconcile-count.d.ts} +14 -16
  211. package/dist/esm/history/actions/reconcile-count.js +5 -0
  212. package/dist/{history/chat-message-history.js → esm/history/chat-message-history.d.ts} +76 -87
  213. package/dist/esm/history/chat-message-history.js +57 -0
  214. package/dist/esm/history/internal/append.d.ts +244 -0
  215. package/dist/esm/history/internal/append.js +259 -0
  216. package/dist/esm/history/internal/message-read.d.ts +84 -0
  217. package/dist/esm/history/internal/message-read.js +89 -0
  218. package/dist/esm/history/internal/parse.d.ts +153 -0
  219. package/dist/esm/history/internal/parse.js +105 -0
  220. package/dist/{history/internal/rows.js → esm/history/internal/rows.d.ts} +58 -112
  221. package/dist/esm/history/internal/rows.js +83 -0
  222. package/dist/esm/history/internal/session.d.ts +350 -0
  223. package/dist/esm/history/internal/session.js +285 -0
  224. package/dist/esm/history/internal/setup.d.ts +64 -0
  225. package/dist/esm/history/internal/setup.js +56 -0
  226. package/dist/{history/session-adapter.js → esm/history/session-adapter.d.ts} +25 -39
  227. package/dist/esm/history/session-adapter.js +34 -0
  228. package/dist/esm/history/types.d.ts +102 -0
  229. package/dist/esm/history/types.js +1 -0
  230. package/dist/esm/index.d.ts +53 -0
  231. package/dist/esm/index.js +10 -0
  232. package/dist/esm/shared/adapter.d.ts +146 -0
  233. package/dist/esm/shared/adapter.js +65 -0
  234. package/dist/{shared/clock.js → esm/shared/clock.d.ts} +3 -14
  235. package/dist/esm/shared/clock.js +9 -0
  236. package/dist/esm/shared/codec/codec.d.ts +336 -0
  237. package/dist/esm/shared/codec/codec.js +150 -0
  238. package/dist/esm/shared/codec/compression.d.ts +66 -0
  239. package/dist/esm/shared/codec/compression.js +40 -0
  240. package/dist/esm/shared/codec/json-serde.d.ts +80 -0
  241. package/dist/esm/shared/codec/json-serde.js +54 -0
  242. package/dist/esm/shared/codec/s3/client-types.d.ts +54 -0
  243. package/dist/esm/shared/codec/s3/client-types.js +3 -0
  244. package/dist/esm/shared/codec/s3/client.d.ts +63 -0
  245. package/dist/esm/shared/codec/s3/client.js +40 -0
  246. package/dist/{shared/codec/s3/config.js → esm/shared/codec/s3/config.d.ts} +45 -93
  247. package/dist/esm/shared/codec/s3/config.js +79 -0
  248. package/dist/esm/shared/codec/s3/lifecycle.d.ts +220 -0
  249. package/dist/esm/shared/codec/s3/lifecycle.js +214 -0
  250. package/dist/esm/shared/codec/s3/offloader.d.ts +428 -0
  251. package/dist/esm/shared/codec/s3/offloader.js +278 -0
  252. package/dist/{shared/concurrency.js → esm/shared/concurrency.d.ts} +2 -37
  253. package/dist/esm/shared/concurrency.js +27 -0
  254. package/dist/{shared/dynamodb/abort.js → esm/shared/dynamodb/abort.d.ts} +4 -16
  255. package/dist/esm/shared/dynamodb/abort.js +12 -0
  256. package/dist/esm/shared/dynamodb/batch-write.d.ts +86 -0
  257. package/dist/esm/shared/dynamodb/batch-write.js +74 -0
  258. package/dist/{shared/dynamodb/cancellation.js → esm/shared/dynamodb/cancellation.d.ts} +25 -53
  259. package/dist/esm/shared/dynamodb/cancellation.js +30 -0
  260. package/dist/{shared/dynamodb/client.js → esm/shared/dynamodb/client.d.ts} +74 -64
  261. package/dist/esm/shared/dynamodb/client.js +35 -0
  262. package/dist/{shared/dynamodb/idempotent-write.js → esm/shared/dynamodb/idempotent-write.d.ts} +172 -169
  263. package/dist/esm/shared/dynamodb/idempotent-write.js +153 -0
  264. package/dist/esm/shared/dynamodb/paginate.d.ts +111 -0
  265. package/dist/esm/shared/dynamodb/paginate.js +84 -0
  266. package/dist/esm/shared/dynamodb/partition-delete.d.ts +204 -0
  267. package/dist/esm/shared/dynamodb/partition-delete.js +171 -0
  268. package/dist/esm/shared/dynamodb/recency-index.d.ts +243 -0
  269. package/dist/esm/shared/dynamodb/recency-index.js +136 -0
  270. package/dist/esm/shared/dynamodb/retry.d.ts +317 -0
  271. package/dist/esm/shared/dynamodb/retry.js +180 -0
  272. package/dist/esm/shared/dynamodb/row-size.d.ts +33 -0
  273. package/dist/esm/shared/dynamodb/row-size.js +26 -0
  274. package/dist/{shared/dynamodb/table-schema.js → esm/shared/dynamodb/table-schema.d.ts} +57 -67
  275. package/dist/esm/shared/dynamodb/table-schema.js +43 -0
  276. package/dist/esm/shared/errors/base-error.d.ts +231 -0
  277. package/dist/esm/shared/errors/base-error.js +64 -0
  278. package/dist/esm/shared/errors/boundary.d.ts +86 -0
  279. package/dist/esm/shared/errors/boundary.js +54 -0
  280. package/dist/esm/shared/errors/classify.d.ts +206 -0
  281. package/dist/esm/shared/errors/classify.js +220 -0
  282. package/dist/{shared/errors/error-code.js → esm/shared/errors/error-code.d.ts} +39 -43
  283. package/dist/esm/shared/errors/error-code.js +24 -0
  284. package/dist/{shared/errors/errors.js → esm/shared/errors/errors.d.ts} +92 -98
  285. package/dist/esm/shared/errors/errors.js +110 -0
  286. package/dist/{shared/logging/logger.js → esm/shared/logging/logger.d.ts} +22 -52
  287. package/dist/esm/shared/logging/logger.js +25 -0
  288. package/dist/esm/shared/logging/redaction.d.ts +123 -0
  289. package/dist/esm/shared/logging/redaction.js +140 -0
  290. package/dist/{shared/logging/secret-patterns.js → esm/shared/logging/secret-patterns.d.ts} +46 -87
  291. package/dist/esm/shared/logging/secret-patterns.js +83 -0
  292. package/dist/{shared/logging/truncate.js → esm/shared/logging/truncate.d.ts} +6 -40
  293. package/dist/esm/shared/logging/truncate.js +25 -0
  294. package/dist/esm/shared/options.d.ts +100 -0
  295. package/dist/esm/shared/options.js +1 -0
  296. package/dist/{shared/ulid.js → esm/shared/ulid.d.ts} +4 -84
  297. package/dist/esm/shared/ulid.js +77 -0
  298. package/dist/{shared/validation/collaborators.js → esm/shared/validation/collaborators.d.ts} +37 -65
  299. package/dist/esm/shared/validation/collaborators.js +70 -0
  300. package/dist/{shared/validation/option-shape.js → esm/shared/validation/option-shape.d.ts} +14 -36
  301. package/dist/esm/shared/validation/option-shape.js +24 -0
  302. package/dist/esm/shared/validation/options.d.ts +145 -0
  303. package/dist/esm/shared/validation/options.js +156 -0
  304. package/dist/{shared/validation/primitives.js → esm/shared/validation/primitives.d.ts} +30 -125
  305. package/dist/esm/shared/validation/primitives.js +100 -0
  306. package/dist/esm/shared/validation/ttl.d.ts +94 -0
  307. package/dist/esm/shared/validation/ttl.js +46 -0
  308. package/dist/esm/store/actions/list-namespaces.d.ts +79 -0
  309. package/dist/esm/store/actions/list-namespaces.js +86 -0
  310. package/dist/esm/store/actions/put.d.ts +43 -0
  311. package/dist/esm/store/actions/put.js +46 -0
  312. package/dist/{store/actions/reconcile-vector-index.js → esm/store/actions/reconcile-vector-index.d.ts} +8 -16
  313. package/dist/esm/store/actions/reconcile-vector-index.js +10 -0
  314. package/dist/esm/store/actions/search.d.ts +38 -0
  315. package/dist/esm/store/actions/search.js +23 -0
  316. package/dist/esm/store/internal/batch-plan.d.ts +56 -0
  317. package/dist/esm/store/internal/batch-plan.js +28 -0
  318. package/dist/esm/store/internal/filter.d.ts +43 -0
  319. package/dist/esm/store/internal/filter.js +60 -0
  320. package/dist/esm/store/internal/get-item.d.ts +77 -0
  321. package/dist/esm/store/internal/get-item.js +54 -0
  322. package/dist/esm/store/internal/item-write.d.ts +270 -0
  323. package/dist/esm/store/internal/item-write.js +173 -0
  324. package/dist/esm/store/internal/parse.d.ts +230 -0
  325. package/dist/esm/store/internal/parse.js +169 -0
  326. package/dist/{store/internal/rows.js → esm/store/internal/rows.d.ts} +111 -199
  327. package/dist/esm/store/internal/rows.js +147 -0
  328. package/dist/esm/store/internal/semantic-search.d.ts +168 -0
  329. package/dist/esm/store/internal/semantic-search.js +200 -0
  330. package/dist/esm/store/internal/setup.d.ts +96 -0
  331. package/dist/esm/store/internal/setup.js +98 -0
  332. package/dist/esm/store/internal/table-search.d.ts +100 -0
  333. package/dist/esm/store/internal/table-search.js +119 -0
  334. package/dist/esm/store/internal/vector-index.d.ts +258 -0
  335. package/dist/esm/store/internal/vector-index.js +256 -0
  336. package/dist/{store/store.js → esm/store/store.d.ts} +99 -133
  337. package/dist/esm/store/store.js +93 -0
  338. package/dist/esm/store/types.d.ts +111 -0
  339. package/dist/esm/store/types.js +1 -0
  340. package/dist/esm/store/vector-backend.d.ts +104 -0
  341. package/dist/esm/store/vector-backend.js +1 -0
  342. package/package.json +50 -44
  343. package/dist/backfill/backfill.js +0 -393
  344. package/dist/checkpointer/actions/list.js +0 -142
  345. package/dist/checkpointer/actions/put.js +0 -195
  346. package/dist/checkpointer/internal/delta-history.js +0 -252
  347. package/dist/checkpointer/internal/parse.js +0 -372
  348. package/dist/checkpointer/internal/pending-writes.js +0 -588
  349. package/dist/checkpointer/internal/read.js +0 -264
  350. package/dist/checkpointer/internal/rows.js +0 -834
  351. package/dist/checkpointer/internal/setup.js +0 -72
  352. package/dist/checkpointer/types.js +0 -12
  353. package/dist/factory/factory.js +0 -266
  354. package/dist/factory/types.js +0 -10
  355. package/dist/history/actions/get-messages.js +0 -141
  356. package/dist/history/actions/list-sessions.js +0 -156
  357. package/dist/history/internal/append.js +0 -500
  358. package/dist/history/internal/message-read.js +0 -204
  359. package/dist/history/internal/parse.js +0 -252
  360. package/dist/history/internal/session.js +0 -628
  361. package/dist/history/internal/setup.js +0 -106
  362. package/dist/history/types.js +0 -12
  363. package/dist/index.js +0 -51
  364. package/dist/shared/adapter.js +0 -143
  365. package/dist/shared/codec/codec.js +0 -441
  366. package/dist/shared/codec/compression.js +0 -89
  367. package/dist/shared/codec/json-serde.js +0 -191
  368. package/dist/shared/codec/s3/client-types.js +0 -26
  369. package/dist/shared/codec/s3/client.js +0 -97
  370. package/dist/shared/codec/s3/lifecycle.js +0 -355
  371. package/dist/shared/codec/s3/offloader.js +0 -658
  372. package/dist/shared/dynamodb/batch-write.js +0 -173
  373. package/dist/shared/dynamodb/paginate.js +0 -188
  374. package/dist/shared/dynamodb/partition-delete.js +0 -340
  375. package/dist/shared/dynamodb/recency-index.js +0 -377
  376. package/dist/shared/dynamodb/retry.js +0 -463
  377. package/dist/shared/errors/base-error.js +0 -174
  378. package/dist/shared/errors/boundary.js +0 -143
  379. package/dist/shared/errors/classify.d.ts +0 -97
  380. package/dist/shared/errors/classify.js +0 -257
  381. package/dist/shared/logging/redaction.js +0 -316
  382. package/dist/shared/options.js +0 -11
  383. package/dist/shared/validation/options.js +0 -328
  384. package/dist/shared/validation/ttl.js +0 -132
  385. package/dist/store/actions/list-namespaces.js +0 -197
  386. package/dist/store/actions/put.js +0 -78
  387. package/dist/store/actions/search.js +0 -66
  388. package/dist/store/internal/batch-plan.d.ts +0 -26
  389. package/dist/store/internal/batch-plan.js +0 -109
  390. package/dist/store/internal/filter.js +0 -137
  391. package/dist/store/internal/get-item.d.ts +0 -45
  392. package/dist/store/internal/get-item.js +0 -115
  393. package/dist/store/internal/item-write.js +0 -463
  394. package/dist/store/internal/parse.js +0 -350
  395. package/dist/store/internal/semantic-search.js +0 -389
  396. package/dist/store/internal/setup.js +0 -223
  397. package/dist/store/internal/table-search.js +0 -213
  398. package/dist/store/internal/vector-index.js +0 -546
  399. package/dist/store/types.js +0 -15
  400. package/dist/store/vector-backend.js +0 -17
  401. /package/dist/{shared → cjs/shared}/clock.d.ts +0 -0
  402. /package/dist/{shared → cjs/shared}/codec/json-serde.d.ts +0 -0
  403. /package/dist/{shared → cjs/shared}/concurrency.d.ts +0 -0
  404. /package/dist/{shared → cjs/shared}/dynamodb/cancellation.d.ts +0 -0
  405. /package/dist/{shared → cjs/shared}/logging/logger.d.ts +0 -0
  406. /package/dist/{shared → cjs/shared}/logging/truncate.d.ts +0 -0
  407. /package/dist/{shared → cjs/shared}/ulid.d.ts +0 -0
  408. /package/dist/{shared → cjs/shared}/validation/primitives.d.ts +0 -0
  409. /package/dist/{store → cjs/store}/vector-backend.d.ts +0 -0
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUPPORTED_ROW_FORMAT_VERSION = exports.ROW_FORMAT_VERSION = exports.ADAPTER_TAGS = exports.KEY_SEPARATOR = exports.MAX_SORT_KEY_BYTES = exports.MAX_CHECKPOINT_NS_BYTES = exports.MAX_WRITE_CHANNEL_BYTES = exports.MAX_KEY_SEGMENT_BYTES = exports.MAX_PARTITION_ID_BYTES = exports.SORT_KEY_ATTRIBUTE = exports.PARTITION_KEY_ATTRIBUTE = void 0;
4
+ exports.rowKeyOf = rowKeyOf;
5
+ exports.rowVersionOf = rowVersionOf;
6
+ exports.assertReadableRow = assertReadableRow;
7
+ exports.isExpiredRow = isExpiredRow;
8
+ exports.withoutExpired = withoutExpired;
9
+ exports.compareSortKeys = compareSortKeys;
10
+ const base_error_js_1 = require("../errors/base-error.js");
11
+ const error_code_js_1 = require("../errors/error-code.js");
12
+ exports.PARTITION_KEY_ATTRIBUTE = 'PK';
13
+ exports.SORT_KEY_ATTRIBUTE = 'SK';
14
+ exports.MAX_PARTITION_ID_BYTES = 1024;
15
+ exports.MAX_KEY_SEGMENT_BYTES = 256;
16
+ exports.MAX_WRITE_CHANNEL_BYTES = 1024;
17
+ exports.MAX_CHECKPOINT_NS_BYTES = 512;
18
+ exports.MAX_SORT_KEY_BYTES = 1024;
19
+ exports.KEY_SEPARATOR = '#';
20
+ exports.ADAPTER_TAGS = { checkpointer: 'CHKPT', store: 'STORE', history: 'HIST' };
21
+ function rowKeyOf(row) {
22
+ return { PK: row.PK, SK: row.SK };
23
+ }
24
+ exports.ROW_FORMAT_VERSION = 1;
25
+ exports.SUPPORTED_ROW_FORMAT_VERSION = 1;
26
+ function rowVersionOf(row) {
27
+ return typeof row.v === 'number' ? row.v : 0;
28
+ }
29
+ function assertReadableRow(row, what) {
30
+ const version = rowVersionOf(row);
31
+ if (version <= exports.SUPPORTED_ROW_FORMAT_VERSION)
32
+ return;
33
+ throw new base_error_js_1.DynamoDBLangGraphError(`this ${what} row was written in format version ${version}; this version of the library ` +
34
+ `reads up to ${exports.SUPPORTED_ROW_FORMAT_VERSION} — upgrade to read it`, error_code_js_1.ErrorCode.FORMAT_UNSUPPORTED, { field: 'v' });
35
+ }
36
+ function isExpiredRow(row, nowSeconds) {
37
+ return row.ttl !== undefined && row.ttl <= nowSeconds;
38
+ }
39
+ const TTL_FILTER = 'attribute_not_exists(#ttl) OR #ttl > :now';
40
+ function withoutExpired(params, nowSeconds) {
41
+ return {
42
+ ...params,
43
+ FilterExpression: params.FilterExpression
44
+ ? `(${params.FilterExpression}) AND (${TTL_FILTER})`
45
+ : TTL_FILTER,
46
+ ExpressionAttributeNames: { ...params.ExpressionAttributeNames, '#ttl': 'ttl' },
47
+ ExpressionAttributeValues: { ...params.ExpressionAttributeValues, ':now': nowSeconds },
48
+ };
49
+ }
50
+ function compareSortKeys(left, right) {
51
+ return Buffer.compare(Buffer.from(left, 'utf8'), Buffer.from(right, 'utf8'));
52
+ }
@@ -7,8 +7,8 @@
7
7
  * throws — a string, `undefined`, an object — is turned into an `Error` before
8
8
  * anything reads it.
9
9
  */
10
- import type { WriteRequest } from '../dynamodb/client';
11
- import { ErrorCode } from './error-code';
10
+ import type { WriteRequest } from '../dynamodb/client.js';
11
+ import { ErrorCode } from './error-code.js';
12
12
  /**
13
13
  * Structured, log-safe context attached to every library error. Identifiers
14
14
  * and counts only — never a payload or a credential.
@@ -69,7 +69,12 @@ export interface BatchPassDetails {
69
69
  export type BatchWriteIncompleteDetails = BatchDrainDetails | BatchPassDetails;
70
70
  /** What a `COMPENSATION_FAILED` error reports besides its trigger, which is `cause`. */
71
71
  export interface CompensationFailedDetails {
72
- /** Why the rollback itself could not finish; itself often a `BATCH_WRITE_INCOMPLETE`. */
72
+ /**
73
+ * Why the append could not be undone or settled: the rollback's own
74
+ * failure (itself often a `BATCH_WRITE_INCOMPLETE`), the read-back's
75
+ * failure, or the write's own failure when some attempt of it may still
76
+ * be applied.
77
+ */
73
78
  readonly rollbackError: Error;
74
79
  }
75
80
  /** The codes that carry details, and the shape each one carries. */
@@ -125,9 +130,11 @@ export type AnyDynamoDBLangGraphError = {
125
130
  /**
126
131
  * Whether `value` is one of this library's errors.
127
132
  *
128
- * Accepts: any error, from any realm or any copy of this package — and, since
129
- * the documented place to call this is inside a `catch`, any other value a
130
- * `throw` can produce: `null`, `undefined`, a string, a number, a symbol.
133
+ * Accepts: whatever a `catch` clause binds, as it is — an error from any realm
134
+ * or any copy of this package, and any other value a `throw` can produce:
135
+ * `null`, `undefined`, a string, a number, a symbol. Declared `unknown`
136
+ * because that is what `strict` types a `catch` binding, and the documented
137
+ * place to call this is the first line inside one.
131
138
  *
132
139
  * Returns: whether it carries the brand, narrowed to the union discriminated by
133
140
  * `code`. A symbol registered by name, not `instanceof`: two copies of this
@@ -143,7 +150,7 @@ export type AnyDynamoDBLangGraphError = {
143
150
  * a guard that throws inside the `catch` it was called from would replace the
144
151
  * failure the caller is reporting with one of its own.
145
152
  */
146
- export declare function isDynamoDBLangGraphError(value: Error): value is AnyDynamoDBLangGraphError;
153
+ export declare function isDynamoDBLangGraphError(value: unknown): value is AnyDynamoDBLangGraphError;
147
154
  /**
148
155
  * Whether `value` is one of this library's errors carrying `code`.
149
156
  *
@@ -157,6 +164,34 @@ export declare function isDynamoDBLangGraphError(value: Error): value is AnyDyna
157
164
  * Throws: nothing, for any value.
158
165
  */
159
166
  export declare function hasErrorCode<C extends ErrorCode>(value: Error, code: C): value is DynamoDBLangGraphError<C>;
167
+ /**
168
+ * A caller's own copy of a branded error that several concurrent callers would
169
+ * otherwise share — a cached rejected import, a cached rejected client build.
170
+ * Sharing the one instance is safe while nothing on the path back to a public
171
+ * method writes to it, but the public boundary does: it stamps
172
+ * `context.operation` and `context.tableName`, each independently when the
173
+ * error does not already carry it, in place, and a second caller reaching the
174
+ * same shared instance through a *different* public method would then find
175
+ * the first caller's operation and table already sitting in its own context,
176
+ * unable to write its own. Giving each
177
+ * caller its own instance up front — same `message`, `code`, `context` and
178
+ * `cause` — keeps the two from ever writing to one object. Not a general
179
+ * clone: an *unbranded* failure needs none, since `wrapForeignError`
180
+ * (`shared/errors/boundary.ts`) already builds a fresh wrapper for it at
181
+ * every boundary crossing, unlike a branded error, which crosses unwrapped.
182
+ *
183
+ * Accepts: `error` — anything a `catch` can bind.
184
+ *
185
+ * Returns: a new `DynamoDBLangGraphError` carrying the same `message`, `code`,
186
+ * `context`, `cause` and `details` as `error`, when `error` already was one;
187
+ * `error` itself, unchanged, for anything else. The copy does not carry
188
+ * `RETRY_EXHAUSTED`'s non-enumerable record of whether a write's retry budget
189
+ * may still land, so it is not for a budget error: a caller judging one asks
190
+ * the original.
191
+ *
192
+ * Throws: nothing, for any value.
193
+ */
194
+ export declare function copyForCaller(error: Error): Error;
160
195
  /**
161
196
  * What a log line calls a failure.
162
197
  *
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DynamoDBLangGraphError = void 0;
4
+ exports.isDynamoDBLangGraphError = isDynamoDBLangGraphError;
5
+ exports.hasErrorCode = hasErrorCode;
6
+ exports.copyForCaller = copyForCaller;
7
+ exports.failureLabel = failureLabel;
8
+ exports.toError = toError;
9
+ const error_code_js_1 = require("./error-code.js");
10
+ const ERROR_BRAND = Symbol.for('@farukada/aws-langgraph-dynamodb-ts/error');
11
+ function isList(field) {
12
+ return Array.isArray(field);
13
+ }
14
+ function copyDetails(details) {
15
+ if (details === null || typeof details !== 'object')
16
+ return details;
17
+ const fields = Object.entries(details);
18
+ return Object.fromEntries(fields.map(([key, value]) => [key, isList(value) ? [...value] : value]));
19
+ }
20
+ class DynamoDBLangGraphError extends Error {
21
+ code;
22
+ context;
23
+ constructor(message, code, context = {}, cause, details) {
24
+ super(message, cause === undefined ? undefined : { cause });
25
+ this.name = 'DynamoDBLangGraphError';
26
+ this.code = code;
27
+ this.context = { ...context };
28
+ if (details !== undefined)
29
+ this.details = copyDetails(details);
30
+ Object.defineProperty(this, ERROR_BRAND, { value: true, enumerable: false });
31
+ }
32
+ }
33
+ exports.DynamoDBLangGraphError = DynamoDBLangGraphError;
34
+ function isDynamoDBLangGraphError(value) {
35
+ return typeof value === 'object' && value !== null && ERROR_BRAND in value;
36
+ }
37
+ function hasErrorCode(value, code) {
38
+ return isDynamoDBLangGraphError(value) && value.code === code;
39
+ }
40
+ function copyForCaller(error) {
41
+ if (!isDynamoDBLangGraphError(error))
42
+ return error;
43
+ return new DynamoDBLangGraphError(error.message, error.code, error.context, error.cause, error.details);
44
+ }
45
+ function failureLabel(error) {
46
+ return isDynamoDBLangGraphError(error) ? error.code : error.name;
47
+ }
48
+ function describeThrown(value) {
49
+ if (typeof value === 'string')
50
+ return value;
51
+ if (value === undefined || value === null)
52
+ return `${String(value)} was thrown`;
53
+ try {
54
+ return JSON.stringify(value) ?? `a ${typeof value} value was thrown`;
55
+ }
56
+ catch {
57
+ return `an unserializable ${typeof value} value was thrown`;
58
+ }
59
+ }
60
+ function toError(value) {
61
+ if (value !== null && typeof value === 'object' && messageOf(value) !== undefined)
62
+ return value;
63
+ return new Error(describeThrown(value));
64
+ }
65
+ function messageOf(value) {
66
+ try {
67
+ const { message } = value;
68
+ return typeof message === 'string' ? message : undefined;
69
+ }
70
+ catch {
71
+ return undefined;
72
+ }
73
+ }
@@ -2,30 +2,33 @@
2
2
  * Hides what crosses the public boundary.
3
3
  *
4
4
  * Only this package's own error leaves a public method (record 13): an error of
5
- * its own passes through with the operation named, and anything else — an SDK
6
- * failure, a caller's thrown value — is classified and wrapped with its cause
7
- * attached and its text redacted.
5
+ * its own passes through, given the public operation and the table it surfaced
6
+ * through for whichever of the two it does not already name, and anything
7
+ * else — an SDK failure, a caller's thrown value — is classified and wrapped
8
+ * with its cause attached and its text redacted.
8
9
  */
9
- import { type AnyDynamoDBLangGraphError, DynamoDBLangGraphError } from './base-error';
10
+ import { type AnyDynamoDBLangGraphError, DynamoDBLangGraphError } from './base-error.js';
10
11
  /**
11
12
  * Normalise anything escaping a public method into the library's error model.
12
13
  *
13
14
  * Accepts: anything a `catch` produced — an `Error`, or a value that is not one
14
- * (`toError` settles that first).
15
+ * (`toError` settles that first). `operation` — the public method's name.
16
+ * `tableName` — the adapter's table, when the method has one.
15
17
  *
16
- * Returns: a branded library error unchanged, since its code was assigned
17
- * closer to the failure and wins; anything else wrapped by
18
- * {@link wrapForeignError}, with the code the classifier assigns.
18
+ * Returns: a branded library error — the same one, when it already was one,
19
+ * with whichever of `context.operation` and `context.tableName` it does not
20
+ * already carry filled in — or anything else wrapped by {@link wrapForeignError}
21
+ * with the code the classifier assigns, stamped the same way.
19
22
  *
20
23
  * Throws: nothing. It runs inside a `catch`, where throwing would discard the
21
24
  * failure being reported and replace it with its own.
22
25
  */
23
- export declare function toPublicError(error: Error, operation: string): AnyDynamoDBLangGraphError;
26
+ export declare function toPublicError(error: Error, operation: string, tableName?: string): AnyDynamoDBLangGraphError;
24
27
  /**
25
28
  * Run a public operation so that every rejection is a library error.
26
29
  *
27
- * Accepts: `operation` — the public method's name, which the wrapped error
28
- * carries. `fn` — the work.
30
+ * Accepts: `operation` — the public method's name, which the error carries.
31
+ * `fn` — the work. `tableName` — the adapter's table, which the error carries.
29
32
  *
30
33
  * Returns: whatever `fn` resolves to, untouched.
31
34
  *
@@ -33,12 +36,12 @@ export declare function toPublicError(error: Error, operation: string): AnyDynam
33
36
  * so internal code can keep rethrowing SDK errors verbatim — the retry
34
37
  * classifier depends on their shape, and wrapping them early would blind it.
35
38
  */
36
- export declare function guardPublic<T>(operation: string, fn: () => Promise<T>): Promise<T>;
39
+ export declare function guardPublic<T>(operation: string, fn: () => Promise<T>, tableName?: string): Promise<T>;
37
40
  /**
38
41
  * The same guard for a streaming result.
39
42
  *
40
43
  * Accepts: `operation` — the public method's name. `source` — the generator to
41
- * relay.
44
+ * relay. `tableName` — the adapter's table.
42
45
  *
43
46
  * Returns: a generator yielding the source's items untouched. A consumer that
44
47
  * stops early still closes the source, so an abandoned listing stops reading
@@ -47,7 +50,19 @@ export declare function guardPublic<T>(operation: string, fn: () => Promise<T>):
47
50
  * Throws: a library error, always — including for a failure raised
48
51
  * mid-iteration, which is the case a `try` around the loop body would miss.
49
52
  */
50
- export declare function guardPublicIterable<T>(operation: string, source: AsyncGenerator<T>): AsyncGenerator<T>;
53
+ export declare function guardPublicIterable<T>(operation: string, source: AsyncGenerator<T>, tableName?: string): AsyncGenerator<T>;
54
+ /**
55
+ * The same guard for a synchronous public method.
56
+ *
57
+ * Accepts: `operation` — the public method's name. `fn` — the work.
58
+ * `tableName` — the adapter's table.
59
+ *
60
+ * Returns: whatever `fn` returns.
61
+ *
62
+ * Throws: a library error, always — what a client's own `destroy` threw
63
+ * included, classified like any other foreign failure and kept as `cause`.
64
+ */
65
+ export declare function guardPublicSync<T>(operation: string, fn: () => T, tableName?: string): T;
51
66
  /**
52
67
  * A failure from below this library, as one of its errors.
53
68
  *
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toPublicError = toPublicError;
4
+ exports.guardPublic = guardPublic;
5
+ exports.guardPublicIterable = guardPublicIterable;
6
+ exports.guardPublicSync = guardPublicSync;
7
+ exports.wrapForeignError = wrapForeignError;
8
+ const secret_patterns_js_1 = require("../logging/secret-patterns.js");
9
+ const truncate_js_1 = require("../logging/truncate.js");
10
+ const base_error_js_1 = require("./base-error.js");
11
+ const classify_js_1 = require("./classify.js");
12
+ function stampContext(error, operation, tableName) {
13
+ const context = error.context;
14
+ if (typeof context !== 'object' || context === null)
15
+ return;
16
+ try {
17
+ context.operation ??= operation;
18
+ if (tableName !== undefined)
19
+ context.tableName ??= tableName;
20
+ }
21
+ catch {
22
+ }
23
+ }
24
+ function toPublicError(error, operation, tableName) {
25
+ const normalized = (0, base_error_js_1.toError)(error);
26
+ const publicError = (0, base_error_js_1.isDynamoDBLangGraphError)(normalized)
27
+ ? normalized
28
+ : wrapForeignError(normalized, operation);
29
+ stampContext(publicError, operation, tableName);
30
+ return publicError;
31
+ }
32
+ async function guardPublic(operation, fn, tableName) {
33
+ try {
34
+ return await fn();
35
+ }
36
+ catch (error) {
37
+ throw toPublicError(error, operation, tableName);
38
+ }
39
+ }
40
+ async function* guardPublicIterable(operation, source, tableName) {
41
+ try {
42
+ for await (const item of source)
43
+ yield item;
44
+ }
45
+ catch (error) {
46
+ throw toPublicError(error, operation, tableName);
47
+ }
48
+ }
49
+ function guardPublicSync(operation, fn, tableName) {
50
+ try {
51
+ return fn();
52
+ }
53
+ catch (error) {
54
+ throw toPublicError(error, operation, tableName);
55
+ }
56
+ }
57
+ function wrapForeignError(cause, operation) {
58
+ const below = (0, base_error_js_1.toError)(cause);
59
+ const classifiable = (0, classify_js_1.classifiableCause)(below);
60
+ return new base_error_js_1.DynamoDBLangGraphError(`${operation}: ${(0, truncate_js_1.truncateForLog)(below.name)}: ${(0, secret_patterns_js_1.redactedMessage)(below)}`, (0, classify_js_1.classifyAwsError)(classifiable), { operation, ...(0, classify_js_1.awsDiagnostics)(classifiable) }, below);
61
+ }
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Hides which AWS failures are the same failure.
3
+ *
4
+ * An SDK error arrives as a name, an HTTP status, a Node network `code` or —
5
+ * for a cancelled transaction — a list of per-item reasons, and several of
6
+ * those arrivals mean one thing to a caller deciding what to do. Their mapping
7
+ * to one `ErrorCode`, and the retry layer's default list of transient names,
8
+ * come from one table here (record 19), so no call site compares an AWS
9
+ * exception name of its own.
10
+ */
11
+ import type { ErrorContext } from './base-error.js';
12
+ import { ErrorCode } from './error-code.js';
13
+ /** The fields an AWS SDK v3 error, or a transport error under it, can carry. */
14
+ /** The fields of an SDK error this module reads; exported for the retry layer's own walk. */
15
+ export interface AwsErrorFields {
16
+ name?: string;
17
+ code?: string;
18
+ message?: string;
19
+ $metadata?: {
20
+ httpStatusCode?: number;
21
+ requestId?: string;
22
+ clockSkewCorrected?: boolean;
23
+ } | null;
24
+ }
25
+ /**
26
+ * The Node.js system error codes the SDK's own retry strategy treats as
27
+ * transient regardless of name (`@smithy/core` retry `NODEJS_TIMEOUT_ERROR_CODES`
28
+ * and `NODEJS_NETWORK_ERROR_CODES`). Matched on the error's own `code`.
29
+ */
30
+ export declare const TRANSIENT_NETWORK_ERROR_CODES: readonly string[];
31
+ /**
32
+ * HTTP statuses the SDK retries regardless of name: throttling (429) and the
33
+ * transient server statuses (`@smithy/core` retry `TRANSIENT_ERROR_STATUS_CODES`).
34
+ * They classify an error the SDK could not map to a modeled exception, which
35
+ * arrives as `name: 'Unknown'` with only its status.
36
+ */
37
+ export declare const TRANSIENT_HTTP_STATUSES: readonly number[];
38
+ /**
39
+ * AWS error name to code. Each name is declared by the installed
40
+ * `@aws-sdk/client-dynamodb` or `@aws-sdk/client-s3`, or documented on a page
41
+ * `test/static/aws-error-names.test.ts` cites; that test fails on any other.
42
+ */
43
+ export declare const AWS_ERROR_CODES: Readonly<Record<string, ErrorCode>>;
44
+ /**
45
+ * The retry layer's default tokens: every name {@link AWS_ERROR_CODES} maps to
46
+ * a retryable code, and the network codes. Derived rather than listed, so the
47
+ * retry layer and the code a caller sees share one list of transient names.
48
+ * They differ at two edges: the retry layer also retries on the SDK's
49
+ * `$retryable` trait, which {@link classifyAwsError} does not read, and it
50
+ * walks the cause chain matching `errno` and `syscall` too, where the
51
+ * classifier reads one error's `name`, `code` and status.
52
+ */
53
+ export declare const DEFAULT_RETRYABLE_ERRORS: readonly string[];
54
+ /**
55
+ * Whether the SDK itself would retry this signing failure.
56
+ *
57
+ * Accepts: `fields` — an error's own fields, as the SDK sets them.
58
+ *
59
+ * Returns: true when the SDK corrected its clock offset on the response
60
+ * (`$metadata.clockSkewCorrected`, set once the skew passes four minutes), or
61
+ * the service reports the signature expired (`InvalidSignatureException`
62
+ * saying so) — the SDK's own `isTransientError`, kept here because this
63
+ * package switches the SDK's retries off and would otherwise fail a host
64
+ * whose clock drifts on its first request, where a stock client recovers on
65
+ * the next.
66
+ *
67
+ * Throws: nothing.
68
+ */
69
+ export declare function isCorrectedClockSkew(fields: AwsErrorFields): boolean;
70
+ /**
71
+ * The code a failure that is not one of this library's own belongs to.
72
+ *
73
+ * Accepts: anything a `catch` can bind — an SDK error, a transport error, a
74
+ * value from caller-supplied code, `null`, a string.
75
+ *
76
+ * Returns: a transaction cancellation's code from its reasons (a sole
77
+ * `ConditionalCheckFailed` cause is `CONDITION_CONFLICT`; all-transient causes
78
+ * are `THROTTLED` or `CONTENTION`); otherwise `SERVICE_UNAVAILABLE` for a
79
+ * signing failure the SDK corrected its clock for or reports expired
80
+ * ({@link isCorrectedClockSkew}); otherwise the table's code for the error's
81
+ * own `name`; otherwise `SERVICE_UNAVAILABLE` for a transient network `code`;
82
+ * otherwise by HTTP status — 412 `CONDITION_CONFLICT`, 429 `THROTTLED`,
83
+ * 500/502/503/504 `SERVICE_UNAVAILABLE`; otherwise `AWS_REQUEST_FAILED` for an
84
+ * AWS-shaped error and `UNEXPECTED_ERROR` for anything else. Only the error's
85
+ * own fields are read, never its `cause`.
86
+ *
87
+ * Throws: nothing, for any value. It runs inside `catch` blocks.
88
+ */
89
+ export declare function classifyAwsError(error: Error): ErrorCode;
90
+ /**
91
+ * How far a walk down a cause chain goes before giving up: deep enough for
92
+ * any chain a real failure builds, and a bound in case a `cause` loops
93
+ * through objects a `Set` of seen nodes cannot pair. Shared by
94
+ * {@link classifiableCause} and the retry layer's own walk.
95
+ */
96
+ export declare const MAX_CAUSE_DEPTH = 32;
97
+ /**
98
+ * The node in `error`'s own cause chain — `error` itself, then its `cause`,
99
+ * then that error's own `cause`, and so on — that {@link classifyAwsError}
100
+ * does not answer `UNEXPECTED_ERROR` for.
101
+ *
102
+ * Accepts: `error` — the outermost failure to classify, already normalised by
103
+ * `toError`.
104
+ *
105
+ * Returns: the first node the classifier places under an AWS or network code,
106
+ * so a caller's own error wrapping a modeled SDK exception, an SDK error whose
107
+ * own `cause` is a raw transport failure, or a `RETRY_EXHAUSTED` error wrapping
108
+ * either as its own `cause`, still classifies — and still yields diagnostics —
109
+ * on the AWS/network failure underneath rather than losing it one level up —
110
+ * the same failure the retry layer's cause-chain walk (`isRetryableError` in
111
+ * `shared/dynamodb/retry.ts`) already sees. `error` itself when nothing in its
112
+ * chain classifies either. The walk gives up after {@link MAX_CAUSE_DEPTH}
113
+ * nodes, and a cycle in the chain stops it rather than looping, exactly as
114
+ * that other walk does.
115
+ *
116
+ * Throws: nothing, for any value `toError` can produce.
117
+ */
118
+ export declare function classifiableCause(error: Error): Error;
119
+ /**
120
+ * The fields an operator needs first, lifted off an AWS-shaped error.
121
+ *
122
+ * Accepts: anything a `catch` can bind.
123
+ *
124
+ * Returns: `awsErrorName`, `requestId` and `httpStatusCode`, each only when
125
+ * present and well-typed, for an error carrying `$metadata` or a name the table
126
+ * knows or that ends in `Exception`; `{}` for anything else — a bare network
127
+ * failure included, since it may be a caller's own connection rather than AWS's.
128
+ *
129
+ * Throws: nothing, for any value.
130
+ */
131
+ export declare function awsDiagnostics(error: Error): Pick<ErrorContext, 'awsErrorName' | 'requestId' | 'httpStatusCode'>;
132
+ /**
133
+ * Whether a failed request ended on this side, before the service answered it.
134
+ *
135
+ * Accepts: anything a `catch` can bind, and `undefined`.
136
+ *
137
+ * Returns: true when the failure, or a cause beneath it, is a cut this side
138
+ * made — the SDK's own `TimeoutError` or `AbortError`, or a Node network error
139
+ * such as `ECONNRESET` or `ETIMEDOUT` — and no node on the way carries the HTTP
140
+ * status of a response. The service may still apply a request cut that way
141
+ * after the caller has stopped waiting for it. False for everything else: a
142
+ * failure the service answered, and one that says nothing about the transport,
143
+ * such as a value a caller's own code threw. A cycle in the chain ends the walk.
144
+ *
145
+ * Throws: nothing, for any value.
146
+ */
147
+ export declare function endedWithoutAnswer(error: Error | undefined): boolean;
148
+ /**
149
+ * Whether one attempt's own failure leaves DynamoDB free to apply it later,
150
+ * judged from that attempt alone.
151
+ *
152
+ * Accepts: anything a `catch` can bind, and `undefined`.
153
+ *
154
+ * Returns: true when the attempt {@link endedWithoutAnswer}; when the service
155
+ * answered that its own earlier attempt under the same `ClientRequestToken`
156
+ * was still being processed (`TransactionInProgressException`); or when it
157
+ * answered with a server error, an HTTP 5xx. AWS says of a 500
158
+ * (`InternalServerError`) that the request "may have succeeded or failed", with
159
+ * no later point documented as settling it (DynamoDB Developer Guide, *Error
160
+ * handling*:
161
+ * https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html);
162
+ * this library treats every 5xx the same way. False for a refusal, a throttle,
163
+ * or any other definite answer.
164
+ *
165
+ * Throws: nothing, for any value.
166
+ */
167
+ export declare function mayStillBeInFlight(error: Error | undefined): boolean;
168
+ /**
169
+ * Whether the service refused a request outright, so that none of it was applied.
170
+ *
171
+ * Accepts: anything a `catch` can bind.
172
+ *
173
+ * Returns: true for a cancelled transaction — DynamoDB applies none of a
174
+ * transaction it cancels — and for a failure the classifier places under a
175
+ * refusal: a malformed request, a denied permission, a missing table or index,
176
+ * a failed condition. False for everything else, a spent retry budget and a
177
+ * cancel included, since neither says what the service did.
178
+ *
179
+ * Throws: nothing, for any value.
180
+ */
181
+ export declare function refusedByService(error: Error): boolean;
182
+ /**
183
+ * Whether an S3 read failed because the object is gone.
184
+ *
185
+ * Accepts: anything a `catch` can bind.
186
+ *
187
+ * Returns: true for `NoSuchKey` only. `NOT_FOUND` also covers a missing
188
+ * bucket, which is a configuration fault; reading it as a lost payload would
189
+ * write off data that is still there.
190
+ *
191
+ * Throws: nothing, for any value.
192
+ */
193
+ export declare function isMissingObject(error: Error): boolean;
194
+ /**
195
+ * Whether reading a bucket's lifecycle configuration failed because the bucket
196
+ * has none.
197
+ *
198
+ * Accepts: anything a `catch` can bind.
199
+ *
200
+ * Returns: true for `NoSuchLifecycleConfiguration` only. `NOT_FOUND` also
201
+ * covers a missing bucket, table or object; reading one of those as "no rules
202
+ * yet" would start a rule set for a bucket that is not there.
203
+ *
204
+ * Throws: nothing, for any value.
205
+ */
206
+ export declare function isMissingLifecycleConfiguration(error: Error): boolean;