@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,54 @@
1
+ import { redactedMessage } from '../logging/secret-patterns.js';
2
+ import { truncateForLog } from '../logging/truncate.js';
3
+ import { DynamoDBLangGraphError, isDynamoDBLangGraphError, toError, } from './base-error.js';
4
+ import { awsDiagnostics, classifiableCause, classifyAwsError } from './classify.js';
5
+ function stampContext(error, operation, tableName) {
6
+ const context = error.context;
7
+ if (typeof context !== 'object' || context === null)
8
+ return;
9
+ try {
10
+ context.operation ??= operation;
11
+ if (tableName !== undefined)
12
+ context.tableName ??= tableName;
13
+ }
14
+ catch {
15
+ }
16
+ }
17
+ export function toPublicError(error, operation, tableName) {
18
+ const normalized = toError(error);
19
+ const publicError = isDynamoDBLangGraphError(normalized)
20
+ ? normalized
21
+ : wrapForeignError(normalized, operation);
22
+ stampContext(publicError, operation, tableName);
23
+ return publicError;
24
+ }
25
+ export async function guardPublic(operation, fn, tableName) {
26
+ try {
27
+ return await fn();
28
+ }
29
+ catch (error) {
30
+ throw toPublicError(error, operation, tableName);
31
+ }
32
+ }
33
+ export async function* guardPublicIterable(operation, source, tableName) {
34
+ try {
35
+ for await (const item of source)
36
+ yield item;
37
+ }
38
+ catch (error) {
39
+ throw toPublicError(error, operation, tableName);
40
+ }
41
+ }
42
+ export function guardPublicSync(operation, fn, tableName) {
43
+ try {
44
+ return fn();
45
+ }
46
+ catch (error) {
47
+ throw toPublicError(error, operation, tableName);
48
+ }
49
+ }
50
+ export function wrapForeignError(cause, operation) {
51
+ const below = toError(cause);
52
+ const classifiable = classifiableCause(below);
53
+ return new DynamoDBLangGraphError(`${operation}: ${truncateForLog(below.name)}: ${redactedMessage(below)}`, classifyAwsError(classifiable), { operation, ...awsDiagnostics(classifiable) }, below);
54
+ }
@@ -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;
@@ -0,0 +1,220 @@
1
+ import { conditionalCheckFailure, throttledCancellation, transientCancellation, } from '../dynamodb/cancellation.js';
2
+ import { ErrorCode } from './error-code.js';
3
+ export const TRANSIENT_NETWORK_ERROR_CODES = [
4
+ 'ECONNRESET',
5
+ 'ECONNREFUSED',
6
+ 'EPIPE',
7
+ 'ETIMEDOUT',
8
+ 'EHOSTUNREACH',
9
+ 'ENETUNREACH',
10
+ 'ENOTFOUND',
11
+ 'EAI_AGAIN',
12
+ ];
13
+ export const TRANSIENT_HTTP_STATUSES = [429, 500, 502, 503, 504];
14
+ const PRECONDITION_FAILED_STATUS = 412;
15
+ const TRANSACTION_CANCELLED = 'TransactionCanceledException';
16
+ export const AWS_ERROR_CODES = {
17
+ ProvisionedThroughputExceededException: ErrorCode.THROTTLED,
18
+ ThrottlingException: ErrorCode.THROTTLED,
19
+ RequestLimitExceeded: ErrorCode.THROTTLED,
20
+ SlowDown: ErrorCode.THROTTLED,
21
+ InternalServerError: ErrorCode.SERVICE_UNAVAILABLE,
22
+ InternalFailure: ErrorCode.SERVICE_UNAVAILABLE,
23
+ ServiceUnavailable: ErrorCode.SERVICE_UNAVAILABLE,
24
+ InternalError: ErrorCode.SERVICE_UNAVAILABLE,
25
+ RequestTimeout: ErrorCode.SERVICE_UNAVAILABLE,
26
+ RequestTimeoutException: ErrorCode.SERVICE_UNAVAILABLE,
27
+ TimeoutError: ErrorCode.SERVICE_UNAVAILABLE,
28
+ TransactionConflictException: ErrorCode.CONTENTION,
29
+ TransactionInProgressException: ErrorCode.CONTENTION,
30
+ ReplicatedWriteConflictException: ErrorCode.CONTENTION,
31
+ ConditionalRequestConflict: ErrorCode.CONTENTION,
32
+ AccessDeniedException: ErrorCode.ACCESS_DENIED,
33
+ AccessDenied: ErrorCode.ACCESS_DENIED,
34
+ ExpiredTokenException: ErrorCode.ACCESS_DENIED,
35
+ ExpiredToken: ErrorCode.ACCESS_DENIED,
36
+ IncompleteSignature: ErrorCode.ACCESS_DENIED,
37
+ IncompleteSignatureException: ErrorCode.ACCESS_DENIED,
38
+ InvalidAccessKeyId: ErrorCode.ACCESS_DENIED,
39
+ InvalidSignatureException: ErrorCode.ACCESS_DENIED,
40
+ MissingAuthenticationTokenException: ErrorCode.ACCESS_DENIED,
41
+ NotAuthorized: ErrorCode.ACCESS_DENIED,
42
+ RequestTimeTooSkewed: ErrorCode.ACCESS_DENIED,
43
+ SignatureDoesNotMatch: ErrorCode.ACCESS_DENIED,
44
+ UnrecognizedClientException: ErrorCode.ACCESS_DENIED,
45
+ CredentialsProviderError: ErrorCode.ACCESS_DENIED,
46
+ ResourceNotFoundException: ErrorCode.NOT_FOUND,
47
+ NoSuchBucket: ErrorCode.NOT_FOUND,
48
+ NoSuchKey: ErrorCode.NOT_FOUND,
49
+ NoSuchLifecycleConfiguration: ErrorCode.NOT_FOUND,
50
+ ValidationException: ErrorCode.AWS_REJECTED,
51
+ ValidationError: ErrorCode.AWS_REJECTED,
52
+ IdempotentParameterMismatchException: ErrorCode.AWS_REJECTED,
53
+ MalformedHttpRequestException: ErrorCode.AWS_REJECTED,
54
+ RequestEntityTooLargeException: ErrorCode.AWS_REJECTED,
55
+ ConditionalCheckFailedException: ErrorCode.CONDITION_CONFLICT,
56
+ PreconditionFailed: ErrorCode.CONDITION_CONFLICT,
57
+ ItemCollectionSizeLimitExceededException: ErrorCode.AWS_REQUEST_FAILED,
58
+ InvalidEndpointException: ErrorCode.AWS_REQUEST_FAILED,
59
+ TransactionCanceledException: ErrorCode.AWS_REQUEST_FAILED,
60
+ AbortError: ErrorCode.ABORTED,
61
+ };
62
+ const RETRYABLE_CODES = [
63
+ ErrorCode.THROTTLED,
64
+ ErrorCode.SERVICE_UNAVAILABLE,
65
+ ErrorCode.CONTENTION,
66
+ ];
67
+ export const DEFAULT_RETRYABLE_ERRORS = [
68
+ ...Object.entries(AWS_ERROR_CODES)
69
+ .filter(([, code]) => RETRYABLE_CODES.includes(code))
70
+ .map(([name]) => name),
71
+ ...TRANSIENT_NETWORK_ERROR_CODES,
72
+ ];
73
+ function declaredCodeOf(name) {
74
+ return typeof name === 'string' && Object.hasOwn(AWS_ERROR_CODES, name)
75
+ ? AWS_ERROR_CODES[name]
76
+ : undefined;
77
+ }
78
+ export function isCorrectedClockSkew(fields) {
79
+ if (fields.$metadata?.clockSkewCorrected === true)
80
+ return true;
81
+ return (fields.name === 'InvalidSignatureException' &&
82
+ typeof fields.message === 'string' &&
83
+ fields.message.includes('Signature expired'));
84
+ }
85
+ function statusOf(fields) {
86
+ const metadata = fields.$metadata;
87
+ return typeof metadata === 'object' &&
88
+ metadata !== null &&
89
+ typeof metadata.httpStatusCode === 'number'
90
+ ? metadata.httpStatusCode
91
+ : undefined;
92
+ }
93
+ function isAwsShaped(fields) {
94
+ if (typeof fields.$metadata === 'object' && fields.$metadata !== null)
95
+ return true;
96
+ const { name } = fields;
97
+ return (typeof name === 'string' && (declaredCodeOf(name) !== undefined || name.endsWith('Exception')));
98
+ }
99
+ function cancellationCode(error) {
100
+ if (conditionalCheckFailure(error) !== undefined)
101
+ return ErrorCode.CONDITION_CONFLICT;
102
+ if (transientCancellation(error) === true) {
103
+ return throttledCancellation(error) ? ErrorCode.THROTTLED : ErrorCode.CONTENTION;
104
+ }
105
+ return AWS_ERROR_CODES[TRANSACTION_CANCELLED];
106
+ }
107
+ export function classifyAwsError(error) {
108
+ if (typeof error !== 'object' || error === null)
109
+ return ErrorCode.UNEXPECTED_ERROR;
110
+ const fields = error;
111
+ if (fields.name === TRANSACTION_CANCELLED)
112
+ return cancellationCode(error);
113
+ if (isCorrectedClockSkew(fields))
114
+ return ErrorCode.SERVICE_UNAVAILABLE;
115
+ const declared = declaredCodeOf(fields.name);
116
+ if (declared !== undefined)
117
+ return declared;
118
+ if (typeof fields.code === 'string' && TRANSIENT_NETWORK_ERROR_CODES.includes(fields.code)) {
119
+ return ErrorCode.SERVICE_UNAVAILABLE;
120
+ }
121
+ const status = statusOf(fields);
122
+ if (status === PRECONDITION_FAILED_STATUS)
123
+ return ErrorCode.CONDITION_CONFLICT;
124
+ if (status === 429)
125
+ return ErrorCode.THROTTLED;
126
+ if (status !== undefined && TRANSIENT_HTTP_STATUSES.includes(status)) {
127
+ return ErrorCode.SERVICE_UNAVAILABLE;
128
+ }
129
+ return isAwsShaped(fields) ? ErrorCode.AWS_REQUEST_FAILED : ErrorCode.UNEXPECTED_ERROR;
130
+ }
131
+ export const MAX_CAUSE_DEPTH = 32;
132
+ export function classifiableCause(error) {
133
+ const seen = new WeakSet();
134
+ let node = error;
135
+ for (let depth = 0; depth <= MAX_CAUSE_DEPTH; depth += 1) {
136
+ if (classifyAwsError(node) !== ErrorCode.UNEXPECTED_ERROR)
137
+ return node;
138
+ if (typeof node !== 'object' || node === null || seen.has(node))
139
+ break;
140
+ seen.add(node);
141
+ const next = node.cause;
142
+ if (next === undefined)
143
+ break;
144
+ node = next;
145
+ }
146
+ return error;
147
+ }
148
+ export function awsDiagnostics(error) {
149
+ if (typeof error !== 'object' || error === null)
150
+ return {};
151
+ const fields = error;
152
+ if (!isAwsShaped(fields))
153
+ return {};
154
+ const out = {};
155
+ if (typeof fields.name === 'string')
156
+ out.awsErrorName = fields.name;
157
+ const status = statusOf(fields);
158
+ if (status !== undefined)
159
+ out.httpStatusCode = status;
160
+ const requestId = fields.$metadata?.requestId;
161
+ if (typeof requestId === 'string')
162
+ out.requestId = requestId;
163
+ return out;
164
+ }
165
+ const CLIENT_SIDE_CUTS = ['TimeoutError', 'AbortError'];
166
+ const MAX_ANSWER_DEPTH = 8;
167
+ export function endedWithoutAnswer(error) {
168
+ const seen = new WeakSet();
169
+ let node = error;
170
+ for (let depth = 0; depth < MAX_ANSWER_DEPTH; depth += 1) {
171
+ if (typeof node !== 'object' || node === null || seen.has(node))
172
+ return false;
173
+ seen.add(node);
174
+ const fields = node;
175
+ if (statusOf(fields) !== undefined)
176
+ return false;
177
+ if (typeof fields.name === 'string' && CLIENT_SIDE_CUTS.includes(fields.name))
178
+ return true;
179
+ if (typeof fields.code === 'string' && TRANSIENT_NETWORK_ERROR_CODES.includes(fields.code)) {
180
+ return true;
181
+ }
182
+ node = node.cause;
183
+ }
184
+ return false;
185
+ }
186
+ const TRANSACTION_IN_PROGRESS = 'TransactionInProgressException';
187
+ const SERVER_ERROR_STATUS_MIN = 500;
188
+ const SERVER_ERROR_STATUS_MAX = 599;
189
+ export function mayStillBeInFlight(error) {
190
+ if (endedWithoutAnswer(error))
191
+ return true;
192
+ if (typeof error !== 'object' || error === null)
193
+ return false;
194
+ const fields = error;
195
+ if (fields.name === TRANSACTION_IN_PROGRESS)
196
+ return true;
197
+ const status = statusOf(fields);
198
+ return (status !== undefined && status >= SERVER_ERROR_STATUS_MIN && status <= SERVER_ERROR_STATUS_MAX);
199
+ }
200
+ const REFUSED = [
201
+ ErrorCode.AWS_REJECTED,
202
+ ErrorCode.ACCESS_DENIED,
203
+ ErrorCode.NOT_FOUND,
204
+ ErrorCode.CONDITION_CONFLICT,
205
+ ];
206
+ export function refusedByService(error) {
207
+ if (typeof error !== 'object' || error === null)
208
+ return false;
209
+ if (error.name === TRANSACTION_CANCELLED)
210
+ return true;
211
+ return REFUSED.includes(classifyAwsError(error));
212
+ }
213
+ export function isMissingObject(error) {
214
+ return (typeof error === 'object' && error !== null && error.name === 'NoSuchKey');
215
+ }
216
+ export function isMissingLifecycleConfiguration(error) {
217
+ return (typeof error === 'object' &&
218
+ error !== null &&
219
+ error.name === 'NoSuchLifecycleConfiguration');
220
+ }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Hides which outcomes a caller can tell apart.
4
3
  *
@@ -8,33 +7,32 @@
8
7
  * onto an existing code without touching this list, and the list is frozen so
9
8
  * no consumer sharing it in a process can change what a comparison means.
10
9
  */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ErrorCode = void 0;
13
10
  /** Stable, branchable classification for every error this library throws. */
14
- var ErrorCode;
15
- (function (ErrorCode) {
16
- ErrorCode["VALIDATION"] = "VALIDATION";
11
+ export declare enum ErrorCode {
12
+ VALIDATION = "VALIDATION",
17
13
  /** A row or payload written in a format version newer than this package reads. */
18
- ErrorCode["FORMAT_UNSUPPORTED"] = "FORMAT_UNSUPPORTED";
14
+ FORMAT_UNSUPPORTED = "FORMAT_UNSUPPORTED",
19
15
  /**
20
- * A checkpoint a delta channel still needs has expired, so the channel cannot
21
- * be reconstructed and the read refuses rather than returning a shorter value.
16
+ * A checkpoint a delta channel still needs cannot be read — it has expired,
17
+ * the sweep has since removed it, or the chain of parents loops back on
18
+ * itself — so the channel cannot be reconstructed and the read refuses
19
+ * rather than returning a shorter value.
22
20
  */
23
- ErrorCode["ANCESTOR_EXPIRED"] = "ANCESTOR_EXPIRED";
24
- ErrorCode["CONDITION_CONFLICT"] = "CONDITION_CONFLICT";
25
- ErrorCode["RETRY_EXHAUSTED"] = "RETRY_EXHAUSTED";
26
- ErrorCode["BATCH_WRITE_INCOMPLETE"] = "BATCH_WRITE_INCOMPLETE";
27
- ErrorCode["COMPRESSION_LIMIT"] = "COMPRESSION_LIMIT";
21
+ ANCESTOR_EXPIRED = "ANCESTOR_EXPIRED",
22
+ CONDITION_CONFLICT = "CONDITION_CONFLICT",
23
+ RETRY_EXHAUSTED = "RETRY_EXHAUSTED",
24
+ BATCH_WRITE_INCOMPLETE = "BATCH_WRITE_INCOMPLETE",
25
+ COMPRESSION_LIMIT = "COMPRESSION_LIMIT",
28
26
  /**
29
27
  * A stored payload's bytes do not match the form its row declares: the row
30
28
  * says gzip and they are not, or they are not the serializer's output. The
31
29
  * payload can never be read, so it is reported rather than retried.
32
30
  */
33
- ErrorCode["PAYLOAD_CORRUPT"] = "PAYLOAD_CORRUPT";
34
- ErrorCode["S3_OFFLOAD_FAILED"] = "S3_OFFLOAD_FAILED";
35
- ErrorCode["RESULT_TRUNCATED"] = "RESULT_TRUNCATED";
36
- ErrorCode["ABORTED"] = "ABORTED";
37
- ErrorCode["COMPENSATION_FAILED"] = "COMPENSATION_FAILED";
31
+ PAYLOAD_CORRUPT = "PAYLOAD_CORRUPT",
32
+ S3_OFFLOAD_FAILED = "S3_OFFLOAD_FAILED",
33
+ RESULT_TRUNCATED = "RESULT_TRUNCATED",
34
+ ABORTED = "ABORTED",
35
+ COMPENSATION_FAILED = "COMPENSATION_FAILED",
38
36
  /**
39
37
  * AWS throttled the request: `ProvisionedThroughputExceededException`,
40
38
  * `ThrottlingException`, `RequestLimitExceeded`, S3's `SlowDown`, an HTTP
@@ -42,58 +40,56 @@ var ErrorCode;
42
40
  * a throttling reason. Back off, or raise the table's capacity or the account
43
41
  * quota.
44
42
  */
45
- ErrorCode["THROTTLED"] = "THROTTLED";
43
+ THROTTLED = "THROTTLED",
46
44
  /**
47
45
  * AWS or the network failed transiently: `InternalServerError`,
48
46
  * `InternalFailure`, `ServiceUnavailable`, S3's `InternalError`, a request
49
47
  * timeout (`RequestTimeout`, `RequestTimeoutException`, the SDK's
50
- * `TimeoutError`), an HTTP 500/502/503/504, or a reset, refused or
51
- * unreachable connection. Retry after a backoff. A write that failed this way
48
+ * `TimeoutError`), an HTTP 500/502/503/504, a reset, refused or unreachable
49
+ * connection, or a signing failure the SDK corrected its clock for or
50
+ * reports as expired. Retry after a backoff. A write that failed this way
52
51
  * may still have been applied.
53
52
  */
54
- ErrorCode["SERVICE_UNAVAILABLE"] = "SERVICE_UNAVAILABLE";
53
+ SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE",
55
54
  /**
56
55
  * Another request was writing the same item or object at the same moment:
57
56
  * `TransactionConflictException`, `TransactionInProgressException`,
58
57
  * `ReplicatedWriteConflictException`, S3's `ConditionalRequestConflict`, or a
59
58
  * cancelled transaction whose only transient cause is a conflict. Retry; more
60
- * capacity would not help.
59
+ * capacity would not help. `ensureS3LifecycleRule()` raises it when every one
60
+ * of its five rounds needs a write.
61
61
  */
62
- ErrorCode["CONTENTION"] = "CONTENTION";
62
+ CONTENTION = "CONTENTION",
63
63
  /**
64
64
  * AWS refused the caller's identity or permissions: `AccessDeniedException`,
65
65
  * S3's `AccessDenied`, an expired, unrecognised or malformed credential or
66
- * signature. Fix the credentials or the IAM policy; do not retry.
67
- * `context.awsErrorName` says which.
66
+ * signature — or the SDK's credential chain found no credentials to sign
67
+ * with (`CredentialsProviderError`). Fix the credentials or the IAM policy;
68
+ * do not retry. `context.awsErrorName` says which.
68
69
  */
69
- ErrorCode["ACCESS_DENIED"] = "ACCESS_DENIED";
70
+ ACCESS_DENIED = "ACCESS_DENIED",
70
71
  /**
71
- * The table, index, bucket or object is not there: `ResourceNotFoundException`,
72
- * S3's `NoSuchBucket` or `NoSuchKey`. Not an absent item — a read of a key that
73
- * holds nothing returns nothing.
72
+ * The table or the bucket is not there: `ResourceNotFoundException`, or S3's
73
+ * `NoSuchBucket` from the lifecycle calls. A missing index is `AWS_REJECTED`
74
+ * — DynamoDB refuses a query naming one with a `ValidationException` — and a
75
+ * missing S3 object on a transfer is `S3_OFFLOAD_FAILED`. Not an absent item:
76
+ * a read of a key that holds nothing returns nothing.
74
77
  */
75
- ErrorCode["NOT_FOUND"] = "NOT_FOUND";
78
+ NOT_FOUND = "NOT_FOUND",
76
79
  /**
77
80
  * AWS rejected the request as malformed: `ValidationException`,
78
81
  * AWS's `ValidationError` common error, `IdempotentParameterMismatchException`,
79
82
  * or a request body it could not read or accept. Retrying the same request
80
83
  * fails the same way.
81
84
  */
82
- ErrorCode["AWS_REJECTED"] = "AWS_REJECTED";
85
+ AWS_REJECTED = "AWS_REJECTED",
83
86
  /** An AWS request failed and no narrower code applies; `context.awsErrorName` names it. */
84
- ErrorCode["AWS_REQUEST_FAILED"] = "AWS_REQUEST_FAILED";
87
+ AWS_REQUEST_FAILED = "AWS_REQUEST_FAILED",
85
88
  /**
86
89
  * A failure that came neither from this package's own checks nor from AWS:
87
90
  * a `VectorBackend`, an `Embeddings` model, a `serde` or a `MultiSessionHistory`
88
91
  * threw something of its own, or this package has a bug. The original is
89
92
  * `cause`.
90
93
  */
91
- ErrorCode["UNEXPECTED_ERROR"] = "UNEXPECTED_ERROR";
92
- })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
93
- // A TypeScript enum compiles to a plain, writable object, and this one is
94
- // exported from the package root: every consumer in a process shares the same
95
- // object. One dependency assigning to a member — a test stub, a patch, a
96
- // typo — rewrites what `error.code === ErrorCode.X` means for every other
97
- // consumer at once, and nothing is raised anywhere; the branch simply stops
98
- // matching. Freezing turns that into a refusal at the assignment.
99
- Object.freeze(ErrorCode);
94
+ UNEXPECTED_ERROR = "UNEXPECTED_ERROR"
95
+ }
@@ -0,0 +1,24 @@
1
+ export var ErrorCode;
2
+ (function (ErrorCode) {
3
+ ErrorCode["VALIDATION"] = "VALIDATION";
4
+ ErrorCode["FORMAT_UNSUPPORTED"] = "FORMAT_UNSUPPORTED";
5
+ ErrorCode["ANCESTOR_EXPIRED"] = "ANCESTOR_EXPIRED";
6
+ ErrorCode["CONDITION_CONFLICT"] = "CONDITION_CONFLICT";
7
+ ErrorCode["RETRY_EXHAUSTED"] = "RETRY_EXHAUSTED";
8
+ ErrorCode["BATCH_WRITE_INCOMPLETE"] = "BATCH_WRITE_INCOMPLETE";
9
+ ErrorCode["COMPRESSION_LIMIT"] = "COMPRESSION_LIMIT";
10
+ ErrorCode["PAYLOAD_CORRUPT"] = "PAYLOAD_CORRUPT";
11
+ ErrorCode["S3_OFFLOAD_FAILED"] = "S3_OFFLOAD_FAILED";
12
+ ErrorCode["RESULT_TRUNCATED"] = "RESULT_TRUNCATED";
13
+ ErrorCode["ABORTED"] = "ABORTED";
14
+ ErrorCode["COMPENSATION_FAILED"] = "COMPENSATION_FAILED";
15
+ ErrorCode["THROTTLED"] = "THROTTLED";
16
+ ErrorCode["SERVICE_UNAVAILABLE"] = "SERVICE_UNAVAILABLE";
17
+ ErrorCode["CONTENTION"] = "CONTENTION";
18
+ ErrorCode["ACCESS_DENIED"] = "ACCESS_DENIED";
19
+ ErrorCode["NOT_FOUND"] = "NOT_FOUND";
20
+ ErrorCode["AWS_REJECTED"] = "AWS_REJECTED";
21
+ ErrorCode["AWS_REQUEST_FAILED"] = "AWS_REQUEST_FAILED";
22
+ ErrorCode["UNEXPECTED_ERROR"] = "UNEXPECTED_ERROR";
23
+ })(ErrorCode || (ErrorCode = {}));
24
+ Object.freeze(ErrorCode);