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

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 (512) hide show
  1. package/README.md +1720 -154
  2. package/dist/backfill/backfill.d.ts +168 -0
  3. package/dist/backfill/backfill.js +393 -0
  4. package/dist/checkpointer/actions/delete-thread.d.ts +47 -6
  5. package/dist/checkpointer/actions/delete-thread.js +58 -21
  6. package/dist/checkpointer/actions/get-tuple.d.ts +29 -4
  7. package/dist/checkpointer/actions/get-tuple.js +44 -10
  8. package/dist/checkpointer/actions/list.d.ts +46 -4
  9. package/dist/checkpointer/actions/list.js +121 -66
  10. package/dist/checkpointer/actions/put-writes.d.ts +41 -9
  11. package/dist/checkpointer/actions/put-writes.js +62 -77
  12. package/dist/checkpointer/actions/put.d.ts +83 -4
  13. package/dist/checkpointer/actions/put.js +177 -25
  14. package/dist/checkpointer/internal/delta-history.d.ts +112 -0
  15. package/dist/checkpointer/internal/delta-history.js +252 -0
  16. package/dist/checkpointer/internal/listing.d.ts +149 -0
  17. package/dist/checkpointer/internal/listing.js +245 -0
  18. package/dist/checkpointer/internal/parse.d.ts +262 -0
  19. package/dist/checkpointer/internal/parse.js +372 -0
  20. package/dist/checkpointer/internal/pending-writes.d.ts +275 -0
  21. package/dist/checkpointer/internal/pending-writes.js +588 -0
  22. package/dist/checkpointer/internal/read.d.ts +130 -0
  23. package/dist/checkpointer/internal/read.js +264 -0
  24. package/dist/checkpointer/internal/rows.d.ts +571 -0
  25. package/dist/checkpointer/internal/rows.js +834 -0
  26. package/dist/checkpointer/internal/setup.d.ts +42 -19
  27. package/dist/checkpointer/internal/setup.js +65 -29
  28. package/dist/checkpointer/saver.d.ts +256 -16
  29. package/dist/checkpointer/saver.js +275 -29
  30. package/dist/checkpointer/types.d.ts +39 -39
  31. package/dist/checkpointer/types.js +10 -1
  32. package/dist/factory/factory.d.ts +134 -28
  33. package/dist/factory/factory.js +240 -21
  34. package/dist/factory/types.d.ts +76 -0
  35. package/dist/factory/types.js +10 -0
  36. package/dist/history/actions/add-messages.d.ts +31 -4
  37. package/dist/history/actions/add-messages.js +38 -58
  38. package/dist/history/actions/clear.d.ts +49 -6
  39. package/dist/history/actions/clear.js +66 -14
  40. package/dist/history/actions/get-messages.d.ts +54 -6
  41. package/dist/history/actions/get-messages.js +126 -43
  42. package/dist/history/actions/list-sessions.d.ts +52 -10
  43. package/dist/history/actions/list-sessions.js +139 -40
  44. package/dist/history/actions/reconcile-count.d.ts +42 -10
  45. package/dist/history/actions/reconcile-count.js +45 -45
  46. package/dist/history/chat-message-history.d.ts +220 -33
  47. package/dist/history/chat-message-history.js +240 -43
  48. package/dist/history/internal/append.d.ts +212 -0
  49. package/dist/history/internal/append.js +500 -0
  50. package/dist/history/internal/message-read.d.ts +84 -0
  51. package/dist/history/internal/message-read.js +204 -0
  52. package/dist/history/internal/parse.d.ts +153 -0
  53. package/dist/history/internal/parse.js +252 -0
  54. package/dist/history/internal/rows.d.ts +195 -0
  55. package/dist/history/internal/rows.js +250 -0
  56. package/dist/history/internal/session.d.ts +331 -0
  57. package/dist/history/internal/session.js +628 -0
  58. package/dist/history/internal/setup.d.ts +52 -17
  59. package/dist/history/internal/setup.js +92 -21
  60. package/dist/history/session-adapter.d.ts +102 -7
  61. package/dist/history/session-adapter.js +103 -9
  62. package/dist/history/types.d.ts +80 -29
  63. package/dist/history/types.js +10 -1
  64. package/dist/index.d.ts +42 -11
  65. package/dist/index.js +33 -12
  66. package/dist/shared/adapter.d.ts +135 -0
  67. package/dist/shared/adapter.js +143 -0
  68. package/dist/shared/clock.d.ts +51 -2
  69. package/dist/shared/clock.js +57 -2
  70. package/dist/shared/codec/codec.d.ts +288 -13
  71. package/dist/shared/codec/codec.js +416 -19
  72. package/dist/shared/codec/compression.d.ts +43 -7
  73. package/dist/shared/codec/compression.js +53 -13
  74. package/dist/shared/codec/json-serde.d.ts +76 -4
  75. package/dist/shared/codec/json-serde.js +181 -8
  76. package/dist/shared/codec/s3/client-types.d.ts +53 -0
  77. package/dist/shared/codec/s3/client-types.js +26 -0
  78. package/dist/shared/codec/s3/client.d.ts +43 -10
  79. package/dist/shared/codec/s3/client.js +82 -9
  80. package/dist/shared/codec/s3/config.d.ts +242 -11
  81. package/dist/shared/codec/s3/config.js +293 -11
  82. package/dist/shared/codec/s3/lifecycle.d.ts +164 -6
  83. package/dist/shared/codec/s3/lifecycle.js +335 -27
  84. package/dist/shared/codec/s3/offloader.d.ts +393 -18
  85. package/dist/shared/codec/s3/offloader.js +595 -37
  86. package/dist/shared/concurrency.d.ts +43 -0
  87. package/dist/shared/concurrency.js +78 -0
  88. package/dist/shared/dynamodb/abort.d.ts +47 -0
  89. package/dist/shared/dynamodb/abort.js +59 -0
  90. package/dist/shared/dynamodb/batch-write.d.ts +77 -14
  91. package/dist/shared/dynamodb/batch-write.js +146 -27
  92. package/dist/shared/dynamodb/cancellation.d.ts +121 -4
  93. package/dist/shared/dynamodb/cancellation.js +147 -3
  94. package/dist/shared/dynamodb/client.d.ts +162 -8
  95. package/dist/shared/dynamodb/client.js +153 -5
  96. package/dist/shared/dynamodb/idempotent-write.d.ts +551 -0
  97. package/dist/shared/dynamodb/idempotent-write.js +593 -0
  98. package/dist/shared/dynamodb/paginate.d.ts +105 -9
  99. package/dist/shared/dynamodb/paginate.js +175 -7
  100. package/dist/shared/dynamodb/partition-delete.d.ts +185 -14
  101. package/dist/shared/dynamodb/partition-delete.js +314 -44
  102. package/dist/shared/dynamodb/recency-index.d.ts +231 -0
  103. package/dist/shared/dynamodb/recency-index.js +377 -0
  104. package/dist/shared/dynamodb/retry.d.ts +276 -8
  105. package/dist/shared/dynamodb/retry.js +433 -23
  106. package/dist/shared/dynamodb/table-schema.d.ts +190 -0
  107. package/dist/shared/dynamodb/table-schema.js +209 -0
  108. package/dist/shared/errors/base-error.d.ts +184 -10
  109. package/dist/shared/errors/base-error.js +160 -14
  110. package/dist/shared/errors/boundary.d.ts +71 -0
  111. package/dist/shared/errors/boundary.js +143 -0
  112. package/dist/shared/errors/classify.d.ts +97 -0
  113. package/dist/shared/errors/classify.js +257 -0
  114. package/dist/shared/errors/error-code.d.ts +77 -2
  115. package/dist/shared/errors/error-code.js +83 -1
  116. package/dist/shared/errors/errors.d.ts +158 -59
  117. package/dist/shared/errors/errors.js +219 -92
  118. package/dist/shared/logging/logger.d.ts +69 -3
  119. package/dist/shared/logging/logger.js +97 -3
  120. package/dist/shared/logging/redaction.d.ts +92 -8
  121. package/dist/shared/logging/redaction.js +273 -17
  122. package/dist/shared/logging/secret-patterns.d.ts +149 -19
  123. package/dist/shared/logging/secret-patterns.js +188 -27
  124. package/dist/shared/logging/truncate.d.ts +197 -0
  125. package/dist/shared/logging/truncate.js +231 -0
  126. package/dist/shared/options.d.ts +59 -7
  127. package/dist/shared/options.js +9 -1
  128. package/dist/shared/ulid.d.ts +77 -7
  129. package/dist/shared/ulid.js +103 -8
  130. package/dist/shared/validation/collaborators.d.ts +141 -0
  131. package/dist/shared/validation/collaborators.js +188 -0
  132. package/dist/shared/validation/option-shape.d.ts +89 -0
  133. package/dist/shared/validation/option-shape.js +113 -0
  134. package/dist/shared/validation/options.d.ts +145 -0
  135. package/dist/shared/validation/options.js +328 -0
  136. package/dist/shared/validation/primitives.d.ts +288 -21
  137. package/dist/shared/validation/primitives.js +353 -50
  138. package/dist/shared/validation/ttl.d.ts +66 -10
  139. package/dist/shared/validation/ttl.js +113 -15
  140. package/dist/store/actions/list-namespaces.d.ts +76 -6
  141. package/dist/store/actions/list-namespaces.js +166 -24
  142. package/dist/store/actions/put.d.ts +33 -8
  143. package/dist/store/actions/put.js +53 -60
  144. package/dist/store/actions/reconcile-vector-index.d.ts +31 -10
  145. package/dist/store/actions/reconcile-vector-index.js +34 -15
  146. package/dist/store/actions/search.d.ts +34 -6
  147. package/dist/store/actions/search.js +56 -51
  148. package/dist/store/internal/batch-plan.d.ts +26 -0
  149. package/dist/store/internal/batch-plan.js +109 -0
  150. package/dist/store/internal/filter.d.ts +36 -3
  151. package/dist/store/internal/filter.js +66 -15
  152. package/dist/store/internal/get-item.d.ts +45 -0
  153. package/dist/store/internal/get-item.js +115 -0
  154. package/dist/store/internal/item-write.d.ts +230 -0
  155. package/dist/store/internal/item-write.js +463 -0
  156. package/dist/store/internal/parse.d.ts +225 -0
  157. package/dist/store/internal/parse.js +350 -0
  158. package/dist/store/internal/rows.d.ts +355 -0
  159. package/dist/store/internal/rows.js +447 -0
  160. package/dist/store/internal/semantic-search.d.ts +161 -6
  161. package/dist/store/internal/semantic-search.js +360 -18
  162. package/dist/store/internal/setup.d.ts +77 -20
  163. package/dist/store/internal/setup.js +178 -47
  164. package/dist/store/internal/table-search.d.ts +100 -0
  165. package/dist/store/internal/table-search.js +213 -0
  166. package/dist/store/internal/vector-index.d.ts +247 -0
  167. package/dist/store/internal/vector-index.js +546 -0
  168. package/dist/store/store.d.ts +270 -17
  169. package/dist/store/store.js +329 -38
  170. package/dist/store/types.d.ts +76 -26
  171. package/dist/store/types.js +13 -1
  172. package/dist/store/vector-backend.d.ts +64 -4
  173. package/dist/store/vector-backend.js +15 -1
  174. package/package.json +58 -36
  175. package/dist/checkpointer/actions/delete-thread.d.ts.map +0 -1
  176. package/dist/checkpointer/actions/delete-thread.js.map +0 -1
  177. package/dist/checkpointer/actions/get-tuple.d.ts.map +0 -1
  178. package/dist/checkpointer/actions/get-tuple.js.map +0 -1
  179. package/dist/checkpointer/actions/list.d.ts.map +0 -1
  180. package/dist/checkpointer/actions/list.js.map +0 -1
  181. package/dist/checkpointer/actions/put-writes.d.ts.map +0 -1
  182. package/dist/checkpointer/actions/put-writes.js.map +0 -1
  183. package/dist/checkpointer/actions/put.d.ts.map +0 -1
  184. package/dist/checkpointer/actions/put.js.map +0 -1
  185. package/dist/checkpointer/internal/assemble.d.ts +0 -10
  186. package/dist/checkpointer/internal/assemble.d.ts.map +0 -1
  187. package/dist/checkpointer/internal/assemble.js +0 -37
  188. package/dist/checkpointer/internal/assemble.js.map +0 -1
  189. package/dist/checkpointer/internal/configurable.d.ts +0 -13
  190. package/dist/checkpointer/internal/configurable.d.ts.map +0 -1
  191. package/dist/checkpointer/internal/configurable.js +0 -23
  192. package/dist/checkpointer/internal/configurable.js.map +0 -1
  193. package/dist/checkpointer/internal/fetch.d.ts +0 -10
  194. package/dist/checkpointer/internal/fetch.d.ts.map +0 -1
  195. package/dist/checkpointer/internal/fetch.js +0 -46
  196. package/dist/checkpointer/internal/fetch.js.map +0 -1
  197. package/dist/checkpointer/internal/filter-match.d.ts +0 -12
  198. package/dist/checkpointer/internal/filter-match.d.ts.map +0 -1
  199. package/dist/checkpointer/internal/filter-match.js +0 -14
  200. package/dist/checkpointer/internal/filter-match.js.map +0 -1
  201. package/dist/checkpointer/internal/item-reader.d.ts +0 -55
  202. package/dist/checkpointer/internal/item-reader.d.ts.map +0 -1
  203. package/dist/checkpointer/internal/item-reader.js +0 -88
  204. package/dist/checkpointer/internal/item-reader.js.map +0 -1
  205. package/dist/checkpointer/internal/item-writer.d.ts +0 -26
  206. package/dist/checkpointer/internal/item-writer.d.ts.map +0 -1
  207. package/dist/checkpointer/internal/item-writer.js +0 -92
  208. package/dist/checkpointer/internal/item-writer.js.map +0 -1
  209. package/dist/checkpointer/internal/keys.d.ts +0 -31
  210. package/dist/checkpointer/internal/keys.d.ts.map +0 -1
  211. package/dist/checkpointer/internal/keys.js +0 -87
  212. package/dist/checkpointer/internal/keys.js.map +0 -1
  213. package/dist/checkpointer/internal/query.d.ts +0 -20
  214. package/dist/checkpointer/internal/query.d.ts.map +0 -1
  215. package/dist/checkpointer/internal/query.js +0 -36
  216. package/dist/checkpointer/internal/query.js.map +0 -1
  217. package/dist/checkpointer/internal/setup.d.ts.map +0 -1
  218. package/dist/checkpointer/internal/setup.js.map +0 -1
  219. package/dist/checkpointer/internal/special-write-cas.d.ts +0 -30
  220. package/dist/checkpointer/internal/special-write-cas.d.ts.map +0 -1
  221. package/dist/checkpointer/internal/special-write-cas.js +0 -104
  222. package/dist/checkpointer/internal/special-write-cas.js.map +0 -1
  223. package/dist/checkpointer/internal/special-write-cleanup.d.ts +0 -24
  224. package/dist/checkpointer/internal/special-write-cleanup.d.ts.map +0 -1
  225. package/dist/checkpointer/internal/special-write-cleanup.js +0 -47
  226. package/dist/checkpointer/internal/special-write-cleanup.js.map +0 -1
  227. package/dist/checkpointer/internal/special-write-verify.d.ts +0 -54
  228. package/dist/checkpointer/internal/special-write-verify.d.ts.map +0 -1
  229. package/dist/checkpointer/internal/special-write-verify.js +0 -65
  230. package/dist/checkpointer/internal/special-write-verify.js.map +0 -1
  231. package/dist/checkpointer/internal/validation.d.ts +0 -13
  232. package/dist/checkpointer/internal/validation.d.ts.map +0 -1
  233. package/dist/checkpointer/internal/validation.js +0 -30
  234. package/dist/checkpointer/internal/validation.js.map +0 -1
  235. package/dist/checkpointer/internal/write-guard.d.ts +0 -13
  236. package/dist/checkpointer/internal/write-guard.d.ts.map +0 -1
  237. package/dist/checkpointer/internal/write-guard.js +0 -39
  238. package/dist/checkpointer/internal/write-guard.js.map +0 -1
  239. package/dist/checkpointer/internal/write-index.d.ts +0 -37
  240. package/dist/checkpointer/internal/write-index.d.ts.map +0 -1
  241. package/dist/checkpointer/internal/write-index.js +0 -42
  242. package/dist/checkpointer/internal/write-index.js.map +0 -1
  243. package/dist/checkpointer/saver.d.ts.map +0 -1
  244. package/dist/checkpointer/saver.js.map +0 -1
  245. package/dist/checkpointer/types.d.ts.map +0 -1
  246. package/dist/checkpointer/types.js.map +0 -1
  247. package/dist/factory/factory.d.ts.map +0 -1
  248. package/dist/factory/factory.js.map +0 -1
  249. package/dist/history/actions/add-messages.d.ts.map +0 -1
  250. package/dist/history/actions/add-messages.js.map +0 -1
  251. package/dist/history/actions/clear.d.ts.map +0 -1
  252. package/dist/history/actions/clear.js.map +0 -1
  253. package/dist/history/actions/get-messages.d.ts.map +0 -1
  254. package/dist/history/actions/get-messages.js.map +0 -1
  255. package/dist/history/actions/list-sessions.d.ts.map +0 -1
  256. package/dist/history/actions/list-sessions.js.map +0 -1
  257. package/dist/history/actions/reconcile-count.d.ts.map +0 -1
  258. package/dist/history/actions/reconcile-count.js.map +0 -1
  259. package/dist/history/chat-message-history.d.ts.map +0 -1
  260. package/dist/history/chat-message-history.js.map +0 -1
  261. package/dist/history/internal/append-saga.d.ts +0 -20
  262. package/dist/history/internal/append-saga.d.ts.map +0 -1
  263. package/dist/history/internal/append-saga.js +0 -35
  264. package/dist/history/internal/append-saga.js.map +0 -1
  265. package/dist/history/internal/compensation.d.ts +0 -21
  266. package/dist/history/internal/compensation.d.ts.map +0 -1
  267. package/dist/history/internal/compensation.js +0 -84
  268. package/dist/history/internal/compensation.js.map +0 -1
  269. package/dist/history/internal/item-mapper.d.ts +0 -12
  270. package/dist/history/internal/item-mapper.d.ts.map +0 -1
  271. package/dist/history/internal/item-mapper.js +0 -33
  272. package/dist/history/internal/item-mapper.js.map +0 -1
  273. package/dist/history/internal/keys.d.ts +0 -17
  274. package/dist/history/internal/keys.d.ts.map +0 -1
  275. package/dist/history/internal/keys.js +0 -49
  276. package/dist/history/internal/keys.js.map +0 -1
  277. package/dist/history/internal/message-chunker.d.ts +0 -14
  278. package/dist/history/internal/message-chunker.d.ts.map +0 -1
  279. package/dist/history/internal/message-chunker.js +0 -68
  280. package/dist/history/internal/message-chunker.js.map +0 -1
  281. package/dist/history/internal/message-transaction.d.ts +0 -26
  282. package/dist/history/internal/message-transaction.d.ts.map +0 -1
  283. package/dist/history/internal/message-transaction.js +0 -60
  284. package/dist/history/internal/message-transaction.js.map +0 -1
  285. package/dist/history/internal/query.d.ts +0 -10
  286. package/dist/history/internal/query.d.ts.map +0 -1
  287. package/dist/history/internal/query.js +0 -31
  288. package/dist/history/internal/query.js.map +0 -1
  289. package/dist/history/internal/session-count.d.ts +0 -41
  290. package/dist/history/internal/session-count.d.ts.map +0 -1
  291. package/dist/history/internal/session-count.js +0 -109
  292. package/dist/history/internal/session-count.js.map +0 -1
  293. package/dist/history/internal/session-title.d.ts +0 -20
  294. package/dist/history/internal/session-title.d.ts.map +0 -1
  295. package/dist/history/internal/session-title.js +0 -44
  296. package/dist/history/internal/session-title.js.map +0 -1
  297. package/dist/history/internal/session-update.d.ts +0 -28
  298. package/dist/history/internal/session-update.d.ts.map +0 -1
  299. package/dist/history/internal/session-update.js +0 -70
  300. package/dist/history/internal/session-update.js.map +0 -1
  301. package/dist/history/internal/setup.d.ts.map +0 -1
  302. package/dist/history/internal/setup.js.map +0 -1
  303. package/dist/history/internal/title-generator.d.ts +0 -13
  304. package/dist/history/internal/title-generator.d.ts.map +0 -1
  305. package/dist/history/internal/title-generator.js +0 -25
  306. package/dist/history/internal/title-generator.js.map +0 -1
  307. package/dist/history/internal/ttl-anchor.d.ts +0 -25
  308. package/dist/history/internal/ttl-anchor.d.ts.map +0 -1
  309. package/dist/history/internal/ttl-anchor.js +0 -38
  310. package/dist/history/internal/ttl-anchor.js.map +0 -1
  311. package/dist/history/internal/validation.d.ts +0 -9
  312. package/dist/history/internal/validation.d.ts.map +0 -1
  313. package/dist/history/internal/validation.js +0 -16
  314. package/dist/history/internal/validation.js.map +0 -1
  315. package/dist/history/session-adapter.d.ts.map +0 -1
  316. package/dist/history/session-adapter.js.map +0 -1
  317. package/dist/history/types.d.ts.map +0 -1
  318. package/dist/history/types.js.map +0 -1
  319. package/dist/index.d.ts.map +0 -1
  320. package/dist/index.js.map +0 -1
  321. package/dist/shared/clock.d.ts.map +0 -1
  322. package/dist/shared/clock.js.map +0 -1
  323. package/dist/shared/codec/codec.d.ts.map +0 -1
  324. package/dist/shared/codec/codec.js.map +0 -1
  325. package/dist/shared/codec/compression.d.ts.map +0 -1
  326. package/dist/shared/codec/compression.js.map +0 -1
  327. package/dist/shared/codec/descriptor-keys.d.ts +0 -4
  328. package/dist/shared/codec/descriptor-keys.d.ts.map +0 -1
  329. package/dist/shared/codec/descriptor-keys.js +0 -14
  330. package/dist/shared/codec/descriptor-keys.js.map +0 -1
  331. package/dist/shared/codec/json-serde.d.ts.map +0 -1
  332. package/dist/shared/codec/json-serde.js.map +0 -1
  333. package/dist/shared/codec/s3/client.d.ts.map +0 -1
  334. package/dist/shared/codec/s3/client.js.map +0 -1
  335. package/dist/shared/codec/s3/config.d.ts.map +0 -1
  336. package/dist/shared/codec/s3/config.js.map +0 -1
  337. package/dist/shared/codec/s3/delete.d.ts +0 -8
  338. package/dist/shared/codec/s3/delete.d.ts.map +0 -1
  339. package/dist/shared/codec/s3/delete.js +0 -29
  340. package/dist/shared/codec/s3/delete.js.map +0 -1
  341. package/dist/shared/codec/s3/lifecycle.d.ts.map +0 -1
  342. package/dist/shared/codec/s3/lifecycle.js.map +0 -1
  343. package/dist/shared/codec/s3/offloader.d.ts.map +0 -1
  344. package/dist/shared/codec/s3/offloader.js.map +0 -1
  345. package/dist/shared/codec/s3/orphans.d.ts +0 -18
  346. package/dist/shared/codec/s3/orphans.d.ts.map +0 -1
  347. package/dist/shared/codec/s3/orphans.js +0 -58
  348. package/dist/shared/codec/s3/orphans.js.map +0 -1
  349. package/dist/shared/codec/s3/read-write.d.ts +0 -14
  350. package/dist/shared/codec/s3/read-write.d.ts.map +0 -1
  351. package/dist/shared/codec/s3/read-write.js +0 -43
  352. package/dist/shared/codec/s3/read-write.js.map +0 -1
  353. package/dist/shared/codec/s3/retry.d.ts +0 -5
  354. package/dist/shared/codec/s3/retry.d.ts.map +0 -1
  355. package/dist/shared/codec/s3/retry.js +0 -25
  356. package/dist/shared/codec/s3/retry.js.map +0 -1
  357. package/dist/shared/constants.d.ts +0 -64
  358. package/dist/shared/constants.d.ts.map +0 -1
  359. package/dist/shared/constants.js +0 -67
  360. package/dist/shared/constants.js.map +0 -1
  361. package/dist/shared/dynamodb/backoff.d.ts +0 -15
  362. package/dist/shared/dynamodb/backoff.d.ts.map +0 -1
  363. package/dist/shared/dynamodb/backoff.js +0 -48
  364. package/dist/shared/dynamodb/backoff.js.map +0 -1
  365. package/dist/shared/dynamodb/batch-write.d.ts.map +0 -1
  366. package/dist/shared/dynamodb/batch-write.js.map +0 -1
  367. package/dist/shared/dynamodb/cancellation.d.ts.map +0 -1
  368. package/dist/shared/dynamodb/cancellation.js.map +0 -1
  369. package/dist/shared/dynamodb/client.d.ts.map +0 -1
  370. package/dist/shared/dynamodb/client.js.map +0 -1
  371. package/dist/shared/dynamodb/conditional-put.d.ts +0 -51
  372. package/dist/shared/dynamodb/conditional-put.d.ts.map +0 -1
  373. package/dist/shared/dynamodb/conditional-put.js +0 -59
  374. package/dist/shared/dynamodb/conditional-put.js.map +0 -1
  375. package/dist/shared/dynamodb/drain-unprocessed.d.ts +0 -19
  376. package/dist/shared/dynamodb/drain-unprocessed.d.ts.map +0 -1
  377. package/dist/shared/dynamodb/drain-unprocessed.js +0 -44
  378. package/dist/shared/dynamodb/drain-unprocessed.js.map +0 -1
  379. package/dist/shared/dynamodb/paginate-core.d.ts +0 -22
  380. package/dist/shared/dynamodb/paginate-core.d.ts.map +0 -1
  381. package/dist/shared/dynamodb/paginate-core.js +0 -52
  382. package/dist/shared/dynamodb/paginate-core.js.map +0 -1
  383. package/dist/shared/dynamodb/paginate.d.ts.map +0 -1
  384. package/dist/shared/dynamodb/paginate.js.map +0 -1
  385. package/dist/shared/dynamodb/partition-delete.d.ts.map +0 -1
  386. package/dist/shared/dynamodb/partition-delete.js.map +0 -1
  387. package/dist/shared/dynamodb/retry-classifier.d.ts +0 -9
  388. package/dist/shared/dynamodb/retry-classifier.d.ts.map +0 -1
  389. package/dist/shared/dynamodb/retry-classifier.js +0 -87
  390. package/dist/shared/dynamodb/retry-classifier.js.map +0 -1
  391. package/dist/shared/dynamodb/retry.d.ts.map +0 -1
  392. package/dist/shared/dynamodb/retry.js.map +0 -1
  393. package/dist/shared/dynamodb/scan.d.ts +0 -15
  394. package/dist/shared/dynamodb/scan.d.ts.map +0 -1
  395. package/dist/shared/dynamodb/scan.js +0 -20
  396. package/dist/shared/dynamodb/scan.js.map +0 -1
  397. package/dist/shared/dynamodb/types.d.ts +0 -24
  398. package/dist/shared/dynamodb/types.d.ts.map +0 -1
  399. package/dist/shared/dynamodb/types.js +0 -3
  400. package/dist/shared/dynamodb/types.js.map +0 -1
  401. package/dist/shared/errors/base-error.d.ts.map +0 -1
  402. package/dist/shared/errors/base-error.js.map +0 -1
  403. package/dist/shared/errors/error-code.d.ts.map +0 -1
  404. package/dist/shared/errors/error-code.js.map +0 -1
  405. package/dist/shared/errors/errors.d.ts.map +0 -1
  406. package/dist/shared/errors/errors.js.map +0 -1
  407. package/dist/shared/errors/wrap-error.d.ts +0 -16
  408. package/dist/shared/errors/wrap-error.d.ts.map +0 -1
  409. package/dist/shared/errors/wrap-error.js +0 -30
  410. package/dist/shared/errors/wrap-error.js.map +0 -1
  411. package/dist/shared/logging/logger.d.ts.map +0 -1
  412. package/dist/shared/logging/logger.js.map +0 -1
  413. package/dist/shared/logging/redaction-walk.d.ts +0 -23
  414. package/dist/shared/logging/redaction-walk.d.ts.map +0 -1
  415. package/dist/shared/logging/redaction-walk.js +0 -92
  416. package/dist/shared/logging/redaction-walk.js.map +0 -1
  417. package/dist/shared/logging/redaction.d.ts.map +0 -1
  418. package/dist/shared/logging/redaction.js.map +0 -1
  419. package/dist/shared/logging/secret-patterns.d.ts.map +0 -1
  420. package/dist/shared/logging/secret-patterns.js.map +0 -1
  421. package/dist/shared/options.d.ts.map +0 -1
  422. package/dist/shared/options.js.map +0 -1
  423. package/dist/shared/ulid.d.ts.map +0 -1
  424. package/dist/shared/ulid.js.map +0 -1
  425. package/dist/shared/validation/primitives.d.ts.map +0 -1
  426. package/dist/shared/validation/primitives.js.map +0 -1
  427. package/dist/shared/validation/ttl.d.ts.map +0 -1
  428. package/dist/shared/validation/ttl.js.map +0 -1
  429. package/dist/store/actions/get.d.ts +0 -5
  430. package/dist/store/actions/get.d.ts.map +0 -1
  431. package/dist/store/actions/get.js +0 -35
  432. package/dist/store/actions/get.js.map +0 -1
  433. package/dist/store/actions/list-namespaces.d.ts.map +0 -1
  434. package/dist/store/actions/list-namespaces.js.map +0 -1
  435. package/dist/store/actions/put.d.ts.map +0 -1
  436. package/dist/store/actions/put.js.map +0 -1
  437. package/dist/store/actions/reconcile-vector-index.d.ts.map +0 -1
  438. package/dist/store/actions/reconcile-vector-index.js.map +0 -1
  439. package/dist/store/actions/search.d.ts.map +0 -1
  440. package/dist/store/actions/search.js.map +0 -1
  441. package/dist/store/internal/backend-search.d.ts +0 -5
  442. package/dist/store/internal/backend-search.d.ts.map +0 -1
  443. package/dist/store/internal/backend-search.js +0 -68
  444. package/dist/store/internal/backend-search.js.map +0 -1
  445. package/dist/store/internal/filter.d.ts.map +0 -1
  446. package/dist/store/internal/filter.js.map +0 -1
  447. package/dist/store/internal/index-reconcile.d.ts +0 -22
  448. package/dist/store/internal/index-reconcile.d.ts.map +0 -1
  449. package/dist/store/internal/index-reconcile.js +0 -105
  450. package/dist/store/internal/index-reconcile.js.map +0 -1
  451. package/dist/store/internal/index-sync.d.ts +0 -11
  452. package/dist/store/internal/index-sync.d.ts.map +0 -1
  453. package/dist/store/internal/index-sync.js +0 -26
  454. package/dist/store/internal/index-sync.js.map +0 -1
  455. package/dist/store/internal/item-mapper.d.ts +0 -25
  456. package/dist/store/internal/item-mapper.d.ts.map +0 -1
  457. package/dist/store/internal/item-mapper.js +0 -53
  458. package/dist/store/internal/item-mapper.js.map +0 -1
  459. package/dist/store/internal/keys.d.ts +0 -18
  460. package/dist/store/internal/keys.d.ts.map +0 -1
  461. package/dist/store/internal/keys.js +0 -42
  462. package/dist/store/internal/keys.js.map +0 -1
  463. package/dist/store/internal/namespace-match.d.ts +0 -12
  464. package/dist/store/internal/namespace-match.d.ts.map +0 -1
  465. package/dist/store/internal/namespace-match.js +0 -41
  466. package/dist/store/internal/namespace-match.js.map +0 -1
  467. package/dist/store/internal/overwrite-swap.d.ts +0 -33
  468. package/dist/store/internal/overwrite-swap.d.ts.map +0 -1
  469. package/dist/store/internal/overwrite-swap.js +0 -62
  470. package/dist/store/internal/overwrite-swap.js.map +0 -1
  471. package/dist/store/internal/persist.d.ts +0 -27
  472. package/dist/store/internal/persist.d.ts.map +0 -1
  473. package/dist/store/internal/persist.js +0 -59
  474. package/dist/store/internal/persist.js.map +0 -1
  475. package/dist/store/internal/query.d.ts +0 -6
  476. package/dist/store/internal/query.d.ts.map +0 -1
  477. package/dist/store/internal/query.js +0 -32
  478. package/dist/store/internal/query.js.map +0 -1
  479. package/dist/store/internal/ranker.d.ts +0 -13
  480. package/dist/store/internal/ranker.d.ts.map +0 -1
  481. package/dist/store/internal/ranker.js +0 -31
  482. package/dist/store/internal/ranker.js.map +0 -1
  483. package/dist/store/internal/read-existing.d.ts +0 -19
  484. package/dist/store/internal/read-existing.d.ts.map +0 -1
  485. package/dist/store/internal/read-existing.js +0 -29
  486. package/dist/store/internal/read-existing.js.map +0 -1
  487. package/dist/store/internal/score-direction.d.ts +0 -32
  488. package/dist/store/internal/score-direction.d.ts.map +0 -1
  489. package/dist/store/internal/score-direction.js +0 -39
  490. package/dist/store/internal/score-direction.js.map +0 -1
  491. package/dist/store/internal/search-filter.d.ts +0 -4
  492. package/dist/store/internal/search-filter.d.ts.map +0 -1
  493. package/dist/store/internal/search-filter.js +0 -11
  494. package/dist/store/internal/search-filter.js.map +0 -1
  495. package/dist/store/internal/semantic-search.d.ts.map +0 -1
  496. package/dist/store/internal/semantic-search.js.map +0 -1
  497. package/dist/store/internal/setup.d.ts.map +0 -1
  498. package/dist/store/internal/setup.js.map +0 -1
  499. package/dist/store/internal/validation.d.ts +0 -13
  500. package/dist/store/internal/validation.d.ts.map +0 -1
  501. package/dist/store/internal/validation.js +0 -35
  502. package/dist/store/internal/validation.js.map +0 -1
  503. package/dist/store/internal/write-verify.d.ts +0 -37
  504. package/dist/store/internal/write-verify.d.ts.map +0 -1
  505. package/dist/store/internal/write-verify.js +0 -68
  506. package/dist/store/internal/write-verify.js.map +0 -1
  507. package/dist/store/store.d.ts.map +0 -1
  508. package/dist/store/store.js.map +0 -1
  509. package/dist/store/types.d.ts.map +0 -1
  510. package/dist/store/types.js.map +0 -1
  511. package/dist/store/vector-backend.d.ts.map +0 -1
  512. package/dist/store/vector-backend.js.map +0 -1
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ /**
3
+ * Hides what crosses the public boundary.
4
+ *
5
+ * Only this package's own error leaves a public method (record 13): an error of
6
+ * its own passes through with the operation named, and anything else — an SDK
7
+ * failure, a caller's thrown value — is classified and wrapped with its cause
8
+ * attached and its text redacted.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.toPublicError = toPublicError;
12
+ exports.guardPublic = guardPublic;
13
+ exports.guardPublicIterable = guardPublicIterable;
14
+ exports.wrapForeignError = wrapForeignError;
15
+ const secret_patterns_1 = require("../logging/secret-patterns");
16
+ const truncate_1 = require("../logging/truncate");
17
+ const base_error_1 = require("./base-error");
18
+ const classify_1 = require("./classify");
19
+ const error_code_1 = require("./error-code");
20
+ /**
21
+ * Normalise anything escaping a public method into the library's error model.
22
+ *
23
+ * Accepts: anything a `catch` produced — an `Error`, or a value that is not one
24
+ * (`toError` settles that first).
25
+ *
26
+ * Returns: a branded library error unchanged, since its code was assigned
27
+ * closer to the failure and wins; anything else wrapped by
28
+ * {@link wrapForeignError}, with the code the classifier assigns.
29
+ *
30
+ * Throws: nothing. It runs inside a `catch`, where throwing would discard the
31
+ * failure being reported and replace it with its own.
32
+ */
33
+ function toPublicError(error, operation) {
34
+ const normalized = (0, base_error_1.toError)(error);
35
+ return (0, base_error_1.isDynamoDBLangGraphError)(normalized)
36
+ ? normalized
37
+ : wrapForeignError(normalized, operation);
38
+ }
39
+ /**
40
+ * Run a public operation so that every rejection is a library error.
41
+ *
42
+ * Accepts: `operation` — the public method's name, which the wrapped error
43
+ * carries. `fn` — the work.
44
+ *
45
+ * Returns: whatever `fn` resolves to, untouched.
46
+ *
47
+ * Throws: a library error, always. Applied once, at each adapter class method,
48
+ * so internal code can keep rethrowing SDK errors verbatim — the retry
49
+ * classifier depends on their shape, and wrapping them early would blind it.
50
+ */
51
+ async function guardPublic(operation, fn) {
52
+ try {
53
+ return await fn();
54
+ }
55
+ catch (error) {
56
+ throw toPublicError(error, operation);
57
+ }
58
+ }
59
+ /**
60
+ * The same guard for a streaming result.
61
+ *
62
+ * Accepts: `operation` — the public method's name. `source` — the generator to
63
+ * relay.
64
+ *
65
+ * Returns: a generator yielding the source's items untouched. A consumer that
66
+ * stops early still closes the source, so an abandoned listing stops reading
67
+ * rather than paging on in the background.
68
+ *
69
+ * Throws: a library error, always — including for a failure raised
70
+ * mid-iteration, which is the case a `try` around the loop body would miss.
71
+ */
72
+ async function* guardPublicIterable(operation, source) {
73
+ try {
74
+ for await (const item of source)
75
+ yield item;
76
+ }
77
+ catch (error) {
78
+ throw toPublicError(error, operation);
79
+ }
80
+ }
81
+ /** How far {@link classifiableCause} walks a cause chain before giving up. */
82
+ const MAX_CAUSE_DEPTH = 32;
83
+ /**
84
+ * The node in `error`'s own cause chain — `error` itself, then its `cause`,
85
+ * then that error's own `cause`, and so on — that {@link classifyAwsError}
86
+ * does not answer `UNEXPECTED_ERROR` for.
87
+ *
88
+ * Accepts: `error` — the outermost foreign failure, already normalised by
89
+ * {@link toError}.
90
+ *
91
+ * Returns: the first node the classifier places under an AWS or network code,
92
+ * so a caller's own error wrapping a modeled SDK exception, or an SDK error
93
+ * whose own `cause` is a raw transport failure, still classifies on the
94
+ * AWS/network failure underneath rather than losing it one level up — the
95
+ * same failure the retry layer's cause-chain walk (`isRetryableError` in
96
+ * `shared/dynamodb/retry.ts`) already sees. `error` itself when
97
+ * nothing in its chain classifies either. The walk gives up after
98
+ * {@link MAX_CAUSE_DEPTH} nodes, and a cycle in the chain stops it rather than
99
+ * looping, exactly as that other walk does.
100
+ *
101
+ * Throws: nothing, for any value {@link toError} can produce.
102
+ */
103
+ function classifiableCause(error) {
104
+ const seen = new WeakSet();
105
+ let node = error;
106
+ for (let depth = 0; depth <= MAX_CAUSE_DEPTH; depth += 1) {
107
+ if ((0, classify_1.classifyAwsError)(node) !== error_code_1.ErrorCode.UNEXPECTED_ERROR)
108
+ return node;
109
+ if (typeof node !== 'object' || node === null || seen.has(node))
110
+ break;
111
+ seen.add(node);
112
+ const next = node.cause;
113
+ if (next === undefined)
114
+ break;
115
+ node = next;
116
+ }
117
+ return error;
118
+ }
119
+ /**
120
+ * A failure from below this library, as one of its errors.
121
+ *
122
+ * Accepts: `cause` — whatever a `catch` bound: an AWS SDK error, a transport
123
+ * error, or what a `VectorBackend`, `Embeddings`, `serde` or `MultiSessionHistory`
124
+ * threw. `operation` — the public method it surfaced through.
125
+ *
126
+ * Returns: an error whose code is {@link classifyAwsError}'s answer for
127
+ * {@link classifiableCause} of the normalised `cause` — so an AWS or network
128
+ * failure found down the cause chain still earns its own code rather than
129
+ * `UNEXPECTED_ERROR`. Its context names `operation` and — for whichever node
130
+ * was classified — `awsErrorName`, `requestId` and `httpStatusCode`. Its
131
+ * `cause` is the original, normalised through {@link toError}, kept whole
132
+ * regardless of which node down the chain supplied the code. The message
133
+ * quotes the cause's own name cut at the log cap and its own text redacted
134
+ * and cut at the relay cap, because `err.message` reaches applications that
135
+ * print it without a redacting logger.
136
+ *
137
+ * Throws: nothing, for any value.
138
+ */
139
+ function wrapForeignError(cause, operation) {
140
+ const below = (0, base_error_1.toError)(cause);
141
+ const classifiable = classifiableCause(below);
142
+ return new base_error_1.DynamoDBLangGraphError(`${operation}: ${(0, truncate_1.truncateForLog)(below.name)}: ${(0, secret_patterns_1.redactedMessage)(below)}`, (0, classify_1.classifyAwsError)(classifiable), { operation, ...(0, classify_1.awsDiagnostics)(classifiable) }, below);
143
+ }
@@ -0,0 +1,97 @@
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';
12
+ import { ErrorCode } from './error-code';
13
+ /**
14
+ * The Node.js system error codes the SDK's own retry strategy treats as
15
+ * transient regardless of name (`@smithy/core` retry `NODEJS_TIMEOUT_ERROR_CODES`
16
+ * and `NODEJS_NETWORK_ERROR_CODES`). Matched on the error's own `code`.
17
+ */
18
+ export declare const TRANSIENT_NETWORK_ERROR_CODES: readonly string[];
19
+ /**
20
+ * HTTP statuses the SDK retries regardless of name: throttling (429) and the
21
+ * transient server statuses (`@smithy/core` retry `TRANSIENT_ERROR_STATUS_CODES`).
22
+ * They classify an error the SDK could not map to a modeled exception, which
23
+ * arrives as `name: 'Unknown'` with only its status.
24
+ */
25
+ export declare const TRANSIENT_HTTP_STATUSES: readonly number[];
26
+ /**
27
+ * AWS error name to code. Each name is declared by the installed
28
+ * `@aws-sdk/client-dynamodb` or `@aws-sdk/client-s3`, or documented on a page
29
+ * `test/static/aws-error-names.test.ts` cites; that test fails on any other.
30
+ */
31
+ export declare const AWS_ERROR_CODES: Readonly<Record<string, ErrorCode>>;
32
+ /**
33
+ * The retry layer's default tokens: every name {@link AWS_ERROR_CODES} maps to
34
+ * a retryable code, and the network codes. Derived rather than listed, so the
35
+ * retry layer and the code a caller sees share one list of transient names.
36
+ * They differ at two edges: the retry layer also retries on the SDK's
37
+ * `$retryable` trait, which {@link classifyAwsError} does not read, and it
38
+ * walks the cause chain matching `errno` and `syscall` too, where the
39
+ * classifier reads one error's `name`, `code` and status.
40
+ */
41
+ export declare const DEFAULT_RETRYABLE_ERRORS: readonly string[];
42
+ /**
43
+ * The code a failure that is not one of this library's own belongs to.
44
+ *
45
+ * Accepts: anything a `catch` can bind — an SDK error, a transport error, a
46
+ * value from caller-supplied code, `null`, a string.
47
+ *
48
+ * Returns: a transaction cancellation's code from its reasons (a sole
49
+ * `ConditionalCheckFailed` cause is `CONDITION_CONFLICT`; all-transient causes
50
+ * are `THROTTLED` or `CONTENTION`); otherwise the table's code for the error's
51
+ * own `name`; otherwise `SERVICE_UNAVAILABLE` for a transient network `code`;
52
+ * otherwise by HTTP status — 412 `CONDITION_CONFLICT`, 429 `THROTTLED`,
53
+ * 500/502/503/504 `SERVICE_UNAVAILABLE`; otherwise `AWS_REQUEST_FAILED` for an
54
+ * AWS-shaped error and `UNEXPECTED_ERROR` for anything else. Only the error's
55
+ * own fields are read, never its `cause`.
56
+ *
57
+ * Throws: nothing, for any value. It runs inside `catch` blocks.
58
+ */
59
+ export declare function classifyAwsError(error: Error): ErrorCode;
60
+ /**
61
+ * The fields an operator needs first, lifted off an AWS-shaped error.
62
+ *
63
+ * Accepts: anything a `catch` can bind.
64
+ *
65
+ * Returns: `awsErrorName`, `requestId` and `httpStatusCode`, each only when
66
+ * present and well-typed, for an error carrying `$metadata` or a name the table
67
+ * knows or that ends in `Exception`; `{}` for anything else — a bare network
68
+ * failure included, since it may be a caller's own connection rather than AWS's.
69
+ *
70
+ * Throws: nothing, for any value.
71
+ */
72
+ export declare function awsDiagnostics(error: Error): Pick<ErrorContext, 'awsErrorName' | 'requestId' | 'httpStatusCode'>;
73
+ /**
74
+ * Whether an S3 read failed because the object is gone.
75
+ *
76
+ * Accepts: anything a `catch` can bind.
77
+ *
78
+ * Returns: true for `NoSuchKey` only. `NOT_FOUND` also covers a missing
79
+ * bucket, which is a configuration fault; reading it as a lost payload would
80
+ * write off data that is still there.
81
+ *
82
+ * Throws: nothing, for any value.
83
+ */
84
+ export declare function isMissingObject(error: Error): boolean;
85
+ /**
86
+ * Whether reading a bucket's lifecycle configuration failed because the bucket
87
+ * has none.
88
+ *
89
+ * Accepts: anything a `catch` can bind.
90
+ *
91
+ * Returns: true for `NoSuchLifecycleConfiguration` only. `NOT_FOUND` also
92
+ * covers a missing bucket, table or object; reading one of those as "no rules
93
+ * yet" would start a rule set for a bucket that is not there.
94
+ *
95
+ * Throws: nothing, for any value.
96
+ */
97
+ export declare function isMissingLifecycleConfiguration(error: Error): boolean;
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ /**
3
+ * Hides which AWS failures are the same failure.
4
+ *
5
+ * An SDK error arrives as a name, an HTTP status, a Node network `code` or —
6
+ * for a cancelled transaction — a list of per-item reasons, and several of
7
+ * those arrivals mean one thing to a caller deciding what to do. Their mapping
8
+ * to one `ErrorCode`, and the retry layer's default list of transient names,
9
+ * come from one table here (record 19), so no call site compares an AWS
10
+ * exception name of its own.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.DEFAULT_RETRYABLE_ERRORS = exports.AWS_ERROR_CODES = exports.TRANSIENT_HTTP_STATUSES = exports.TRANSIENT_NETWORK_ERROR_CODES = void 0;
14
+ exports.classifyAwsError = classifyAwsError;
15
+ exports.awsDiagnostics = awsDiagnostics;
16
+ exports.isMissingObject = isMissingObject;
17
+ exports.isMissingLifecycleConfiguration = isMissingLifecycleConfiguration;
18
+ const cancellation_1 = require("../dynamodb/cancellation");
19
+ const error_code_1 = require("./error-code");
20
+ /**
21
+ * The Node.js system error codes the SDK's own retry strategy treats as
22
+ * transient regardless of name (`@smithy/core` retry `NODEJS_TIMEOUT_ERROR_CODES`
23
+ * and `NODEJS_NETWORK_ERROR_CODES`). Matched on the error's own `code`.
24
+ */
25
+ exports.TRANSIENT_NETWORK_ERROR_CODES = [
26
+ 'ECONNRESET',
27
+ 'ECONNREFUSED',
28
+ 'EPIPE',
29
+ 'ETIMEDOUT',
30
+ 'EHOSTUNREACH',
31
+ 'ENETUNREACH',
32
+ 'ENOTFOUND',
33
+ 'EAI_AGAIN',
34
+ ];
35
+ /**
36
+ * HTTP statuses the SDK retries regardless of name: throttling (429) and the
37
+ * transient server statuses (`@smithy/core` retry `TRANSIENT_ERROR_STATUS_CODES`).
38
+ * They classify an error the SDK could not map to a modeled exception, which
39
+ * arrives as `name: 'Unknown'` with only its status.
40
+ */
41
+ exports.TRANSIENT_HTTP_STATUSES = [429, 500, 502, 503, 504];
42
+ /** The status S3 answers a failed `If-None-Match: *` precondition with. */
43
+ const PRECONDITION_FAILED_STATUS = 412;
44
+ const TRANSACTION_CANCELLED = 'TransactionCanceledException';
45
+ /**
46
+ * AWS error name to code. Each name is declared by the installed
47
+ * `@aws-sdk/client-dynamodb` or `@aws-sdk/client-s3`, or documented on a page
48
+ * `test/static/aws-error-names.test.ts` cites; that test fails on any other.
49
+ */
50
+ exports.AWS_ERROR_CODES = {
51
+ ProvisionedThroughputExceededException: error_code_1.ErrorCode.THROTTLED,
52
+ ThrottlingException: error_code_1.ErrorCode.THROTTLED,
53
+ RequestLimitExceeded: error_code_1.ErrorCode.THROTTLED,
54
+ SlowDown: error_code_1.ErrorCode.THROTTLED,
55
+ InternalServerError: error_code_1.ErrorCode.SERVICE_UNAVAILABLE,
56
+ InternalFailure: error_code_1.ErrorCode.SERVICE_UNAVAILABLE,
57
+ ServiceUnavailable: error_code_1.ErrorCode.SERVICE_UNAVAILABLE,
58
+ InternalError: error_code_1.ErrorCode.SERVICE_UNAVAILABLE,
59
+ RequestTimeout: error_code_1.ErrorCode.SERVICE_UNAVAILABLE,
60
+ RequestTimeoutException: error_code_1.ErrorCode.SERVICE_UNAVAILABLE,
61
+ TimeoutError: error_code_1.ErrorCode.SERVICE_UNAVAILABLE,
62
+ TransactionConflictException: error_code_1.ErrorCode.CONTENTION,
63
+ TransactionInProgressException: error_code_1.ErrorCode.CONTENTION,
64
+ ReplicatedWriteConflictException: error_code_1.ErrorCode.CONTENTION,
65
+ /**
66
+ * S3's `409` on a conditional write whose key was deleted between the check
67
+ * and the write; the S3 User Guide's remedy on `PutObject` is to retry the
68
+ * upload (*How to prevent object overwrites with conditional writes*,
69
+ * "Conditional write behavior").
70
+ */
71
+ ConditionalRequestConflict: error_code_1.ErrorCode.CONTENTION,
72
+ AccessDeniedException: error_code_1.ErrorCode.ACCESS_DENIED,
73
+ AccessDenied: error_code_1.ErrorCode.ACCESS_DENIED,
74
+ ExpiredTokenException: error_code_1.ErrorCode.ACCESS_DENIED,
75
+ ExpiredToken: error_code_1.ErrorCode.ACCESS_DENIED,
76
+ IncompleteSignature: error_code_1.ErrorCode.ACCESS_DENIED,
77
+ IncompleteSignatureException: error_code_1.ErrorCode.ACCESS_DENIED,
78
+ InvalidAccessKeyId: error_code_1.ErrorCode.ACCESS_DENIED,
79
+ MissingAuthenticationTokenException: error_code_1.ErrorCode.ACCESS_DENIED,
80
+ NotAuthorized: error_code_1.ErrorCode.ACCESS_DENIED,
81
+ SignatureDoesNotMatch: error_code_1.ErrorCode.ACCESS_DENIED,
82
+ UnrecognizedClientException: error_code_1.ErrorCode.ACCESS_DENIED,
83
+ ResourceNotFoundException: error_code_1.ErrorCode.NOT_FOUND,
84
+ NoSuchBucket: error_code_1.ErrorCode.NOT_FOUND,
85
+ NoSuchKey: error_code_1.ErrorCode.NOT_FOUND,
86
+ NoSuchLifecycleConfiguration: error_code_1.ErrorCode.NOT_FOUND,
87
+ ValidationException: error_code_1.ErrorCode.AWS_REJECTED,
88
+ ValidationError: error_code_1.ErrorCode.AWS_REJECTED,
89
+ IdempotentParameterMismatchException: error_code_1.ErrorCode.AWS_REJECTED,
90
+ MalformedHttpRequestException: error_code_1.ErrorCode.AWS_REJECTED,
91
+ RequestEntityTooLargeException: error_code_1.ErrorCode.AWS_REJECTED,
92
+ ConditionalCheckFailedException: error_code_1.ErrorCode.CONDITION_CONFLICT,
93
+ PreconditionFailed: error_code_1.ErrorCode.CONDITION_CONFLICT,
94
+ /** An item collection past 10 GB: neither a retry nor a changed request helps; an operator must act. */
95
+ ItemCollectionSizeLimitExceededException: error_code_1.ErrorCode.AWS_REQUEST_FAILED,
96
+ /** Endpoint discovery is not used by this package, so this is reported rather than acted on. */
97
+ InvalidEndpointException: error_code_1.ErrorCode.AWS_REQUEST_FAILED,
98
+ /** Its reasons are read first; this is the answer when they settle nothing. */
99
+ TransactionCanceledException: error_code_1.ErrorCode.AWS_REQUEST_FAILED,
100
+ /**
101
+ * Read by name, not from the caller's signal: a collaborator — a
102
+ * `vectorBackend`, `index.embeddings` — rejecting with an `AbortError` from
103
+ * its own timeout is `ABORTED` too, even when the caller's signal never fired.
104
+ */
105
+ AbortError: error_code_1.ErrorCode.ABORTED,
106
+ };
107
+ /** The codes a caller retries after a backoff. */
108
+ const RETRYABLE_CODES = [
109
+ error_code_1.ErrorCode.THROTTLED,
110
+ error_code_1.ErrorCode.SERVICE_UNAVAILABLE,
111
+ error_code_1.ErrorCode.CONTENTION,
112
+ ];
113
+ /**
114
+ * The retry layer's default tokens: every name {@link AWS_ERROR_CODES} maps to
115
+ * a retryable code, and the network codes. Derived rather than listed, so the
116
+ * retry layer and the code a caller sees share one list of transient names.
117
+ * They differ at two edges: the retry layer also retries on the SDK's
118
+ * `$retryable` trait, which {@link classifyAwsError} does not read, and it
119
+ * walks the cause chain matching `errno` and `syscall` too, where the
120
+ * classifier reads one error's `name`, `code` and status.
121
+ */
122
+ exports.DEFAULT_RETRYABLE_ERRORS = [
123
+ ...Object.entries(exports.AWS_ERROR_CODES)
124
+ .filter(([, code]) => RETRYABLE_CODES.includes(code))
125
+ .map(([name]) => name),
126
+ ...exports.TRANSIENT_NETWORK_ERROR_CODES,
127
+ ];
128
+ /** The table's code for `name`; `undefined` for any other value, never read through the prototype. */
129
+ function declaredCodeOf(name) {
130
+ return typeof name === 'string' && Object.hasOwn(exports.AWS_ERROR_CODES, name)
131
+ ? exports.AWS_ERROR_CODES[name]
132
+ : undefined;
133
+ }
134
+ /** The response's HTTP status, when the error carries well-typed `$metadata`. */
135
+ function statusOf(fields) {
136
+ const metadata = fields.$metadata;
137
+ return typeof metadata === 'object' &&
138
+ metadata !== null &&
139
+ typeof metadata.httpStatusCode === 'number'
140
+ ? metadata.httpStatusCode
141
+ : undefined;
142
+ }
143
+ /** Whether the error carries the SDK's `$metadata`, or a name the table knows or that ends in `Exception`. */
144
+ function isAwsShaped(fields) {
145
+ if (typeof fields.$metadata === 'object' && fields.$metadata !== null)
146
+ return true;
147
+ const { name } = fields;
148
+ return (typeof name === 'string' && (declaredCodeOf(name) !== undefined || name.endsWith('Exception')));
149
+ }
150
+ /** The code of a cancelled transaction, read from its reasons. */
151
+ function cancellationCode(error) {
152
+ if ((0, cancellation_1.conditionalCheckFailure)(error) !== undefined)
153
+ return error_code_1.ErrorCode.CONDITION_CONFLICT;
154
+ if ((0, cancellation_1.transientCancellation)(error) === true) {
155
+ return (0, cancellation_1.throttledCancellation)(error) ? error_code_1.ErrorCode.THROTTLED : error_code_1.ErrorCode.CONTENTION;
156
+ }
157
+ return exports.AWS_ERROR_CODES[TRANSACTION_CANCELLED];
158
+ }
159
+ /**
160
+ * The code a failure that is not one of this library's own belongs to.
161
+ *
162
+ * Accepts: anything a `catch` can bind — an SDK error, a transport error, a
163
+ * value from caller-supplied code, `null`, a string.
164
+ *
165
+ * Returns: a transaction cancellation's code from its reasons (a sole
166
+ * `ConditionalCheckFailed` cause is `CONDITION_CONFLICT`; all-transient causes
167
+ * are `THROTTLED` or `CONTENTION`); otherwise the table's code for the error's
168
+ * own `name`; otherwise `SERVICE_UNAVAILABLE` for a transient network `code`;
169
+ * otherwise by HTTP status — 412 `CONDITION_CONFLICT`, 429 `THROTTLED`,
170
+ * 500/502/503/504 `SERVICE_UNAVAILABLE`; otherwise `AWS_REQUEST_FAILED` for an
171
+ * AWS-shaped error and `UNEXPECTED_ERROR` for anything else. Only the error's
172
+ * own fields are read, never its `cause`.
173
+ *
174
+ * Throws: nothing, for any value. It runs inside `catch` blocks.
175
+ */
176
+ function classifyAwsError(error) {
177
+ if (typeof error !== 'object' || error === null)
178
+ return error_code_1.ErrorCode.UNEXPECTED_ERROR;
179
+ const fields = error;
180
+ if (fields.name === TRANSACTION_CANCELLED)
181
+ return cancellationCode(error);
182
+ const declared = declaredCodeOf(fields.name);
183
+ if (declared !== undefined)
184
+ return declared;
185
+ if (typeof fields.code === 'string' && exports.TRANSIENT_NETWORK_ERROR_CODES.includes(fields.code)) {
186
+ return error_code_1.ErrorCode.SERVICE_UNAVAILABLE;
187
+ }
188
+ const status = statusOf(fields);
189
+ if (status === PRECONDITION_FAILED_STATUS)
190
+ return error_code_1.ErrorCode.CONDITION_CONFLICT;
191
+ if (status === 429)
192
+ return error_code_1.ErrorCode.THROTTLED;
193
+ if (status !== undefined && exports.TRANSIENT_HTTP_STATUSES.includes(status)) {
194
+ return error_code_1.ErrorCode.SERVICE_UNAVAILABLE;
195
+ }
196
+ return isAwsShaped(fields) ? error_code_1.ErrorCode.AWS_REQUEST_FAILED : error_code_1.ErrorCode.UNEXPECTED_ERROR;
197
+ }
198
+ /**
199
+ * The fields an operator needs first, lifted off an AWS-shaped error.
200
+ *
201
+ * Accepts: anything a `catch` can bind.
202
+ *
203
+ * Returns: `awsErrorName`, `requestId` and `httpStatusCode`, each only when
204
+ * present and well-typed, for an error carrying `$metadata` or a name the table
205
+ * knows or that ends in `Exception`; `{}` for anything else — a bare network
206
+ * failure included, since it may be a caller's own connection rather than AWS's.
207
+ *
208
+ * Throws: nothing, for any value.
209
+ */
210
+ function awsDiagnostics(error) {
211
+ if (typeof error !== 'object' || error === null)
212
+ return {};
213
+ const fields = error;
214
+ if (!isAwsShaped(fields))
215
+ return {};
216
+ const out = {};
217
+ if (typeof fields.name === 'string')
218
+ out.awsErrorName = fields.name;
219
+ const status = statusOf(fields);
220
+ if (status !== undefined)
221
+ out.httpStatusCode = status;
222
+ const requestId = fields.$metadata?.requestId;
223
+ if (typeof requestId === 'string')
224
+ out.requestId = requestId;
225
+ return out;
226
+ }
227
+ /**
228
+ * Whether an S3 read failed because the object is gone.
229
+ *
230
+ * Accepts: anything a `catch` can bind.
231
+ *
232
+ * Returns: true for `NoSuchKey` only. `NOT_FOUND` also covers a missing
233
+ * bucket, which is a configuration fault; reading it as a lost payload would
234
+ * write off data that is still there.
235
+ *
236
+ * Throws: nothing, for any value.
237
+ */
238
+ function isMissingObject(error) {
239
+ return (typeof error === 'object' && error !== null && error.name === 'NoSuchKey');
240
+ }
241
+ /**
242
+ * Whether reading a bucket's lifecycle configuration failed because the bucket
243
+ * has none.
244
+ *
245
+ * Accepts: anything a `catch` can bind.
246
+ *
247
+ * Returns: true for `NoSuchLifecycleConfiguration` only. `NOT_FOUND` also
248
+ * covers a missing bucket, table or object; reading one of those as "no rules
249
+ * yet" would start a rule set for a bucket that is not there.
250
+ *
251
+ * Throws: nothing, for any value.
252
+ */
253
+ function isMissingLifecycleConfiguration(error) {
254
+ return (typeof error === 'object' &&
255
+ error !== null &&
256
+ error.name === 'NoSuchLifecycleConfiguration');
257
+ }
@@ -1,13 +1,88 @@
1
+ /**
2
+ * Hides which outcomes a caller can tell apart.
3
+ *
4
+ * Every error this library raises carries one of these codes, and a caller
5
+ * branches on the code rather than on a class, a message or an AWS name. What
6
+ * produces each code is decided elsewhere, so a newly seen AWS failure maps
7
+ * onto an existing code without touching this list, and the list is frozen so
8
+ * no consumer sharing it in a process can change what a comparison means.
9
+ */
1
10
  /** Stable, branchable classification for every error this library throws. */
2
11
  export declare enum ErrorCode {
3
12
  VALIDATION = "VALIDATION",
13
+ /** A row or payload written in a format version newer than this package reads. */
14
+ FORMAT_UNSUPPORTED = "FORMAT_UNSUPPORTED",
15
+ /**
16
+ * A checkpoint a delta channel still needs has expired, so the channel cannot
17
+ * be reconstructed and the read refuses rather than returning a shorter value.
18
+ */
19
+ ANCESTOR_EXPIRED = "ANCESTOR_EXPIRED",
4
20
  CONDITION_CONFLICT = "CONDITION_CONFLICT",
5
21
  RETRY_EXHAUSTED = "RETRY_EXHAUSTED",
6
22
  BATCH_WRITE_INCOMPLETE = "BATCH_WRITE_INCOMPLETE",
7
23
  COMPRESSION_LIMIT = "COMPRESSION_LIMIT",
24
+ /**
25
+ * A stored payload's bytes do not match the form its row declares: the row
26
+ * says gzip and they are not, or they are not the serializer's output. The
27
+ * payload can never be read, so it is reported rather than retried.
28
+ */
29
+ PAYLOAD_CORRUPT = "PAYLOAD_CORRUPT",
8
30
  S3_OFFLOAD_FAILED = "S3_OFFLOAD_FAILED",
9
31
  RESULT_TRUNCATED = "RESULT_TRUNCATED",
10
32
  ABORTED = "ABORTED",
11
- COMPENSATION_FAILED = "COMPENSATION_FAILED"
33
+ COMPENSATION_FAILED = "COMPENSATION_FAILED",
34
+ /**
35
+ * AWS throttled the request: `ProvisionedThroughputExceededException`,
36
+ * `ThrottlingException`, `RequestLimitExceeded`, S3's `SlowDown`, an HTTP
37
+ * 429, or a cancelled transaction whose causes are all transient and include
38
+ * a throttling reason. Back off, or raise the table's capacity or the account
39
+ * quota.
40
+ */
41
+ THROTTLED = "THROTTLED",
42
+ /**
43
+ * AWS or the network failed transiently: `InternalServerError`,
44
+ * `InternalFailure`, `ServiceUnavailable`, S3's `InternalError`, a request
45
+ * timeout (`RequestTimeout`, `RequestTimeoutException`, the SDK's
46
+ * `TimeoutError`), an HTTP 500/502/503/504, or a reset, refused or
47
+ * unreachable connection. Retry after a backoff. A write that failed this way
48
+ * may still have been applied.
49
+ */
50
+ SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE",
51
+ /**
52
+ * Another request was writing the same item or object at the same moment:
53
+ * `TransactionConflictException`, `TransactionInProgressException`,
54
+ * `ReplicatedWriteConflictException`, S3's `ConditionalRequestConflict`, or a
55
+ * cancelled transaction whose only transient cause is a conflict. Retry; more
56
+ * capacity would not help.
57
+ */
58
+ CONTENTION = "CONTENTION",
59
+ /**
60
+ * AWS refused the caller's identity or permissions: `AccessDeniedException`,
61
+ * S3's `AccessDenied`, an expired, unrecognised or malformed credential or
62
+ * signature. Fix the credentials or the IAM policy; do not retry.
63
+ * `context.awsErrorName` says which.
64
+ */
65
+ ACCESS_DENIED = "ACCESS_DENIED",
66
+ /**
67
+ * The table, index, bucket or object is not there: `ResourceNotFoundException`,
68
+ * S3's `NoSuchBucket` or `NoSuchKey`. Not an absent item — a read of a key that
69
+ * holds nothing returns nothing.
70
+ */
71
+ NOT_FOUND = "NOT_FOUND",
72
+ /**
73
+ * AWS rejected the request as malformed: `ValidationException`,
74
+ * AWS's `ValidationError` common error, `IdempotentParameterMismatchException`,
75
+ * or a request body it could not read or accept. Retrying the same request
76
+ * fails the same way.
77
+ */
78
+ AWS_REJECTED = "AWS_REJECTED",
79
+ /** An AWS request failed and no narrower code applies; `context.awsErrorName` names it. */
80
+ AWS_REQUEST_FAILED = "AWS_REQUEST_FAILED",
81
+ /**
82
+ * A failure that came neither from this package's own checks nor from AWS:
83
+ * a `VectorBackend`, an `Embeddings` model, a `serde` or a `MultiSessionHistory`
84
+ * threw something of its own, or this package has a bug. The original is
85
+ * `cause`.
86
+ */
87
+ UNEXPECTED_ERROR = "UNEXPECTED_ERROR"
12
88
  }
13
- //# sourceMappingURL=error-code.d.ts.map