@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
@@ -1,13 +1,45 @@
1
+ /**
2
+ * Hides that repairing `messageCount` is the session row's own job.
3
+ *
4
+ * The public repair only parses the session id and hands it to the module
5
+ * that owns the count (record 22). The recount, the compare-and-swap on the
6
+ * value it read, and the retry when an append lands in between all live
7
+ * there, beside the append that keeps the count in step, so the repair and
8
+ * the append cannot come to disagree about what the count means.
9
+ */
1
10
  import type { HistoryContext } from '../internal/setup';
2
11
  /**
3
- * Recompute `messageCount` from the authoritative number of stored message items
4
- * and write it back, repairing any drift. A repair tool: the append path keeps
5
- * the count consistent transactionally, so this is only needed after external
6
- * corruption. Run it when the session is quiescent — it `SET`s the count, so a
7
- * concurrent append's increment could be clobbered. Requires the session to
8
- * already exist; reconciling a nonexistent session throws {@link ConflictError}
9
- * rather than creating a permanent, TTL-less metadata-only row. Returns the
10
- * reconciled count.
12
+ * Recompute `messageCount` from the number of stored message items and write it
13
+ * back, repairing drift. The append path keeps the count consistent
14
+ * transactionally, so this is only needed after external corruption.
15
+ *
16
+ * **Safe to run on a live session.** The count is written under a condition on
17
+ * the value the row held when the count was computed, so an append landing in
18
+ * between makes the write fail rather than clobber the increment; the tool then
19
+ * recounts and tries again. Writing it unconditionally — which is what this did
20
+ * — silently discarded concurrent appends on exactly the sessions an operator
21
+ * reaches for this tool to fix.
22
+ *
23
+ * Accepts: `sessionId` — validated, and an existing session: repairing one that
24
+ * does not exist would mean creating it. `signal` — aborts the reads.
25
+ *
26
+ * Returns: the count now stored, which is the number of messages a reader would
27
+ * see.
28
+ *
29
+ * Throws: `VALIDATION` naming `sessionId`; `CONDITION_CONFLICT` when the
30
+ * session does not exist — rather than creating a permanent, TTL-less
31
+ * metadata-only row — and when it stays too busy to settle within
32
+ * {@link OVERWRITE_CAS_MAX_ATTEMPTS} attempts; `FORMAT_UNSUPPORTED` for a
33
+ * message row a newer release wrote, and `VALIDATION` naming `message` for
34
+ * a row in the session's message key space that this adapter did not write,
35
+ * both of which `getMessages` refuses too — writing a count back for a session
36
+ * no read can open would repair nothing; whatever the reads and the write
37
+ * throw.
38
+ *
39
+ * Guarantees: safe on a live session. The write is pinned to the value the row
40
+ * held when the count was computed, so an append landing in between fails the
41
+ * write rather than clobbering its increment, and the tool recounts. Expired
42
+ * messages are not counted, so the repaired number agrees with what
43
+ * `getMessages` returns rather than with what the table still holds.
11
44
  */
12
- export declare function reconcileMessageCount(context: HistoryContext, sessionId: string): Promise<number>;
13
- //# sourceMappingURL=reconcile-count.d.ts.map
45
+ export declare function reconcileMessageCount(context: HistoryContext, sessionId: string, signal?: AbortSignal): Promise<number>;
@@ -1,51 +1,51 @@
1
1
  "use strict";
2
+ /**
3
+ * Hides that repairing `messageCount` is the session row's own job.
4
+ *
5
+ * The public repair only parses the session id and hands it to the module
6
+ * that owns the count (record 22). The recount, the compare-and-swap on the
7
+ * value it read, and the retry when an append lands in between all live
8
+ * there, beside the append that keeps the count in step, so the repair and
9
+ * the append cannot come to disagree about what the count means.
10
+ */
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.reconcileMessageCount = reconcileMessageCount;
4
- const retry_1 = require("../../shared/dynamodb/retry");
5
- const errors_1 = require("../../shared/errors/errors");
6
- const keys_1 = require("../internal/keys");
7
- const query_1 = require("../internal/query");
8
- const validation_1 = require("../internal/validation");
9
- async function countMessages(context, sessionId) {
10
- const base = (0, query_1.messageQuery)(context.tableName, sessionId);
11
- let total = 0;
12
- let startKey;
13
- do {
14
- const page = await (0, retry_1.withDynamoDBRetry)(() => context.client.query({ ...base, Select: 'COUNT', ExclusiveStartKey: startKey }));
15
- total += page.Count ?? 0;
16
- startKey = page.LastEvaluatedKey;
17
- } while (startKey);
18
- return total;
19
- }
13
+ const parse_1 = require("../internal/parse");
14
+ const session_1 = require("../internal/session");
20
15
  /**
21
- * Recompute `messageCount` from the authoritative number of stored message items
22
- * and write it back, repairing any drift. A repair tool: the append path keeps
23
- * the count consistent transactionally, so this is only needed after external
24
- * corruption. Run it when the session is quiescent — it `SET`s the count, so a
25
- * concurrent append's increment could be clobbered. Requires the session to
26
- * already exist; reconciling a nonexistent session throws {@link ConflictError}
27
- * rather than creating a permanent, TTL-less metadata-only row. Returns the
28
- * reconciled count.
16
+ * Recompute `messageCount` from the number of stored message items and write it
17
+ * back, repairing drift. The append path keeps the count consistent
18
+ * transactionally, so this is only needed after external corruption.
19
+ *
20
+ * **Safe to run on a live session.** The count is written under a condition on
21
+ * the value the row held when the count was computed, so an append landing in
22
+ * between makes the write fail rather than clobber the increment; the tool then
23
+ * recounts and tries again. Writing it unconditionally — which is what this did
24
+ * — silently discarded concurrent appends on exactly the sessions an operator
25
+ * reaches for this tool to fix.
26
+ *
27
+ * Accepts: `sessionId` — validated, and an existing session: repairing one that
28
+ * does not exist would mean creating it. `signal` — aborts the reads.
29
+ *
30
+ * Returns: the count now stored, which is the number of messages a reader would
31
+ * see.
32
+ *
33
+ * Throws: `VALIDATION` naming `sessionId`; `CONDITION_CONFLICT` when the
34
+ * session does not exist — rather than creating a permanent, TTL-less
35
+ * metadata-only row — and when it stays too busy to settle within
36
+ * {@link OVERWRITE_CAS_MAX_ATTEMPTS} attempts; `FORMAT_UNSUPPORTED` for a
37
+ * message row a newer release wrote, and `VALIDATION` naming `message` for
38
+ * a row in the session's message key space that this adapter did not write,
39
+ * both of which `getMessages` refuses too — writing a count back for a session
40
+ * no read can open would repair nothing; whatever the reads and the write
41
+ * throw.
42
+ *
43
+ * Guarantees: safe on a live session. The write is pinned to the value the row
44
+ * held when the count was computed, so an append landing in between fails the
45
+ * write rather than clobbering its increment, and the tool recounts. Expired
46
+ * messages are not counted, so the repaired number agrees with what
47
+ * `getMessages` returns rather than with what the table still holds.
29
48
  */
30
- async function reconcileMessageCount(context, sessionId) {
31
- (0, validation_1.validateSessionId)(sessionId);
32
- const count = await countMessages(context, sessionId);
33
- try {
34
- await (0, retry_1.withDynamoDBRetry)(() => context.client.update({
35
- TableName: context.tableName,
36
- Key: { PK: (0, keys_1.sessionPartition)(sessionId), SK: keys_1.SESSION_SORT_KEY },
37
- UpdateExpression: 'SET #count = :count',
38
- ExpressionAttributeNames: { '#count': 'messageCount' },
39
- ExpressionAttributeValues: { ':count': count },
40
- ConditionExpression: 'attribute_exists(PK)',
41
- }));
42
- }
43
- catch (error) {
44
- if (error.name === 'ConditionalCheckFailedException') {
45
- throw new errors_1.ConflictError(`Cannot reconcile messageCount: session "${sessionId}" does not exist`, error);
46
- }
47
- throw error;
48
- }
49
- return count;
49
+ async function reconcileMessageCount(context, sessionId, signal) {
50
+ return (0, session_1.repairMessageCount)(context, (0, parse_1.parseSessionId)(sessionId), signal);
50
51
  }
51
- //# sourceMappingURL=reconcile-count.js.map
@@ -1,48 +1,235 @@
1
+ /**
2
+ * Hides that chat history is a set of actions behind one error boundary.
3
+ *
4
+ * The public class holds only what it resolved from its options and routes
5
+ * each read and write to the action that implements it, through
6
+ * `guardPublic`. Each asynchronous method is the error boundary, so no error
7
+ * but the library's own reaches a caller (record 13); the synchronous
8
+ * `destroy` and `forSession` are the exceptions — the latter is also the
9
+ * one route from it to LangChain's single-session history. Where an action
10
+ * lives, how it reads or writes, and which client or offloader it uses can
11
+ * change without touching this surface.
12
+ */
1
13
  import type { BaseMessage } from '@langchain/core/messages';
2
- import { DynamoDBSessionChatMessageHistory } from './session-adapter';
3
- import type { DynamoDBChatMessageHistoryOptions, SessionMetadata } from './types';
14
+ import type { CancelOptions } from '../shared/options';
15
+ import { type AdapterWindow, DynamoDBSessionChatMessageHistory } from './session-adapter';
16
+ import type { DynamoDBChatMessageHistoryOptions, GetMessagesOptions, ListSessionsOptions, SessionPage } from './types';
4
17
  /**
5
- * DynamoDB-backed multi-session chat history. Each message is its own item
6
- * (ordered by a monotonic ULID, compressed / S3-offloaded as needed) alongside a
7
- * per-session metadata item; every message in a session shares one uniform TTL.
8
- * Appends are O(1) and lock-free. Use {@link forSession} to get a single-session
9
- * LangChain adapter.
18
+ * DynamoDB-backed multi-session chat history. Each message is its own row,
19
+ * ordered by when it was appended, beside one metadata row per session, and
20
+ * every message in a session shares one TTL. An append costs the same however
21
+ * long the session is and takes no lock. Use {@link forSession} to get a
22
+ * single-session LangChain adapter. Every public method rejects only with this
23
+ * library's error.
10
24
  */
11
25
  export declare class DynamoDBChatMessageHistory {
12
26
  private readonly context;
13
- private readonly ownsClient;
14
- private readonly ddbClient;
27
+ private readonly shell;
28
+ /**
29
+ * Accepts: `options` — validated here, so a misconfiguration surfaces at
30
+ * construction rather than on the first request.
31
+ *
32
+ * Returns: an adapter that owns the client it built, or borrows the one it
33
+ * was given.
34
+ *
35
+ * Throws: `VALIDATION` naming the offending option.
36
+ *
37
+ * Guarantees: no I/O. Constructing the adapter issues no request.
38
+ */
15
39
  constructor(options: DynamoDBChatMessageHistoryOptions);
16
- /** Get a session's messages in order. */
17
- getMessages(sessionId: string): Promise<BaseMessage[]>;
18
- /** Append messages to a session. */
19
- addMessages(sessionId: string, messages: BaseMessage[]): Promise<void>;
20
- /** Append a single message to a session. */
21
- addMessage(sessionId: string, message: BaseMessage): Promise<void>;
22
- /** Delete a session and any offloaded payload. */
23
- clear(sessionId: string): Promise<void>;
24
- /** List all sessions as metadata summaries. */
25
- listSessions(options?: {
26
- maxIterations?: number;
27
- maxItems?: number;
28
- }): Promise<SessionMetadata[]>;
40
+ /**
41
+ * Get a session's messages in chronological order.
42
+ *
43
+ * Accepts: `sessionId` — validated. `options.limit` — an integer from 1 to
44
+ * `MAX_PAGE_LIMIT` (10,000); only the newest that many messages. `0` is
45
+ * refused rather than answered with an empty conversation, which is the one
46
+ * place this package refuses a `limit` of zero. `options.before` — a valid
47
+ * `Date`; only messages appended before that instant. Neither given reads
48
+ * the whole session. `options.signal` — aborts the reads.
49
+ *
50
+ * Returns: the messages, oldest first. A session that does not exist and one
51
+ * whose messages have all expired both return nothing.
52
+ *
53
+ * Throws: `VALIDATION` for a malformed session id or window, an invalid
54
+ * `signal`, or naming `options.<key>` for a key this package does not read;
55
+ * `VALIDATION` naming `s3Key` for a row addressing an object outside the
56
+ * session's own path, and naming `message` for a row in this session's
57
+ * message key space that this adapter did not write, both whatever the
58
+ * corruption policy;
59
+ * `FORMAT_UNSUPPORTED` for a row, or a payload, a newer release wrote;
60
+ * a classified AWS failure;
61
+ * `ABORTED`; and, under `onCorruptMessage: 'throw'`, the decode error of a
62
+ * corrupt row.
63
+ *
64
+ * Guarantees: strongly consistent, so the turn just appended is visible.
65
+ * Expired messages are filtered on read, so the history is never stale.
66
+ * @remarks One query page plus one S3 download per offloaded message.
67
+ */
68
+ getMessages(sessionId: string, options?: GetMessagesOptions): Promise<BaseMessage[]>;
69
+ /**
70
+ * Append messages to a session.
71
+ *
72
+ * Accepts: `sessionId` — validated. `messages` — LangChain messages; an empty
73
+ * list writes nothing and is not an error. `options.signal` — aborts between
74
+ * chunks.
75
+ *
76
+ * Returns: nothing, and only once every message has landed.
77
+ *
78
+ * Throws: `VALIDATION` naming `messages`, for a value that is not itself
79
+ * an array, or, with the offending index, for an element that is not a
80
+ * message or one that could never be read back; or naming `signal` or
81
+ * `options.<key>` for a key this package does not read;
82
+ * `COMPENSATION_FAILED` when a later chunk fails and the rollback fails
83
+ * too; `RETRY_EXHAUSTED` after 18 contended attempts; a classified AWS failure;
84
+ * `ABORTED`.
85
+ *
86
+ * Guarantees: a caller observes all messages or none. One transaction per
87
+ * chunk of up to 99 keeps `messageCount` exact. Lock-free and safe under
88
+ * concurrent appends to one session; every message shares the session's TTL
89
+ * when one is configured.
90
+ */
91
+ addMessages(sessionId: string, messages: BaseMessage[], options?: CancelOptions): Promise<void>;
92
+ /**
93
+ * Append one message.
94
+ *
95
+ * Accepts: as {@link addMessages}, for a single message.
96
+ *
97
+ * Returns: nothing.
98
+ *
99
+ * Throws: as {@link addMessages}.
100
+ */
101
+ addMessage(sessionId: string, message: BaseMessage, options?: CancelOptions): Promise<void>;
102
+ /**
103
+ * Delete a session's messages, metadata and offloaded objects.
104
+ *
105
+ * Accepts: `sessionId` — validated. `options.signal` — aborts between pages.
106
+ *
107
+ * Returns: nothing. Clearing a session that does not exist is not an error.
108
+ *
109
+ * Throws: `VALIDATION` for a malformed session id, an invalid `signal`,
110
+ * or an `options.<key>` this package does not read;
111
+ * `BATCH_WRITE_INCOMPLETE` when a row's delete fails, counting rows
112
+ * rather than batches; a classified AWS failure; `ABORTED` when the signal fires,
113
+ * which is what a cancel surfaces as rather than an incomplete delete, even
114
+ * when it fires part-way through the pass. A row refused because it
115
+ * was rewritten after the partition read raises nothing: it is left in place,
116
+ * reported at `warn`, and counted as skipped.
117
+ *
118
+ * Guarantees: a row this adapter did not write is left in place and logged,
119
+ * and neither is a row rewritten since the read — an append landing during
120
+ * the call moves the session row's own write id, so that row survives with
121
+ * the session it belongs to instead of being removed under a live
122
+ * conversation. Single pass: call it when the session is quiescent, since a
123
+ * message appended while it runs may survive it, and the surviving session
124
+ * row then over-counts until `reconcileMessageCount` repairs it.
125
+ */
126
+ clear(sessionId: string, options?: CancelOptions): Promise<void>;
127
+ /**
128
+ * List every session as a metadata summary, most recently updated first.
129
+ * With a configured `indexName` this reads each index shard newest-first,
130
+ * merges the shards and pages by the opaque `nextCursor`. Without one it
131
+ * falls back to a filtered table scan — cross-tenant by construction,
132
+ * bounded by `maxItems` / `maxIterations`, and returning the newest `limit`
133
+ * sessions, or every session when no limit is given, with no cursor.
134
+ *
135
+ * Accepts: `options.limit` — an integer from 0 to `MAX_PAGE_LIMIT` (10,000);
136
+ * the page size with the index, the newest N without it, and `0` an empty
137
+ * page read from neither. `options.cursor` — from a previous page,
138
+ * and only with a configured `indexName`. `options.maxItems` /
139
+ * `maxIterations` — caps on the scan path. `options.signal` — aborts the
140
+ * reads.
141
+ *
142
+ * Returns: the page and, while rows may remain, a `nextCursor`. A page may
143
+ * come back shorter than `limit` while more rows remain: expired and foreign
144
+ * rows are dropped after the read. A cursor does not promise more rows:
145
+ * DynamoDB can end a shard's page at its last row and still return a key to
146
+ * continue from, and the page after such a cursor can come back empty. Stop
147
+ * when `nextCursor` is absent, never when a page looks short.
148
+ *
149
+ * Throws: `VALIDATION` naming `limit`, `cursor`, `maxItems`,
150
+ * `maxIterations`, `signal`, or `options.<key>` for a key this package does
151
+ * not read; `RESULT_TRUNCATED` past either cap on the scan path, or for an
152
+ * index shard whose pages do not end; `FORMAT_UNSUPPORTED` for a session row
153
+ * a newer release wrote; a classified AWS failure; `ABORTED`.
154
+ *
155
+ * Guarantees: with a configured `indexName` each shard is read one DynamoDB
156
+ * page at a time, and its next page whenever it has no row buffered and the
157
+ * page still needs one, so a shard can cost a query whose rows the page never
158
+ * takes; at most `readConcurrency` shards are queried at once. Memory is the
159
+ * page being built, up to `limit` rows and so bounded by
160
+ * `MAX_PAGE_LIMIT` (10,000), plus at most one DynamoDB page per shard,
161
+ * whatever the table holds.
162
+ */
163
+ listSessions(options?: ListSessionsOptions): Promise<SessionPage>;
29
164
  /**
30
165
  * Recompute and repair a session's `messageCount` from the stored messages.
31
166
  * A maintenance tool for external corruption; run it when the session is idle.
167
+ *
168
+ * Accepts: `sessionId` — validated, and an existing session.
169
+ * `options.signal` — aborts the reads.
170
+ *
171
+ * Returns: the count now stored, which is the number of messages a reader
172
+ * would see.
173
+ *
174
+ * Throws: `VALIDATION` for a malformed session id, an invalid `signal`,
175
+ * or an `options.<key>` this package does not read; `CONDITION_CONFLICT` when the
176
+ * session does not exist or stayed busy through every attempt;
177
+ * `FORMAT_UNSUPPORTED` for a message row a newer release wrote, and
178
+ * `VALIDATION` naming `message` for a row in the session's message key
179
+ * space that this adapter did not write, both of which `getMessages` refuses
180
+ * too — a count is a repair only while it agrees with the read;
181
+ * a classified AWS failure; `ABORTED`.
182
+ *
183
+ * Guarantees: safe on a live session — the write is pinned to the value the
184
+ * row held when the count was computed, so a concurrent append makes it
185
+ * recount instead of clobbering the increment.
186
+ */
187
+ reconcileMessageCount(sessionId: string, options?: CancelOptions): Promise<number>;
188
+ /**
189
+ * Get a single-session LangChain adapter for `sessionId`.
190
+ *
191
+ * Accepts: `sessionId` — validated by the adapter's own constructor, the
192
+ * same rule every other method applies. `window.limit` — bounds what the
193
+ * adapter feeds the chain to the newest that many messages; validated the
194
+ * same way.
195
+ *
196
+ * Returns: an adapter implementing `BaseListChatMessageHistory`, which is
197
+ * what `RunnableWithMessageHistory` takes.
198
+ *
199
+ * Throws: `VALIDATION` naming `sessionId`, `window` for a window that is
200
+ * not an object, `window.<key>` for a key the adapter does not declare, or
201
+ * `limit` — raised by the constructed adapter, so a bad id or window fails
202
+ * here rather than on first use.
203
+ */
204
+ forSession(sessionId: string, window?: AdapterWindow): DynamoDBSessionChatMessageHistory;
205
+ /**
206
+ * Release owned resources.
207
+ *
208
+ * Accepts: nothing.
209
+ *
210
+ * Returns: nothing. Idempotent, and a no-op for a client the caller injected
211
+ * — that one is theirs to close.
212
+ *
213
+ * Throws: whatever a resource's own `destroy` raises — but only after every
214
+ * other one has been released, so a client that fails to close never strands
215
+ * the one behind it.
32
216
  */
33
- reconcileMessageCount(sessionId: string): Promise<number>;
34
- /** Get a single-session LangChain adapter for `sessionId`. */
35
- forSession(sessionId: string): DynamoDBSessionChatMessageHistory;
36
- /** Release owned resources (the underlying client and any S3 client). */
37
217
  destroy(): void;
38
218
  /**
39
- * Best-effort provision an S3 lifecycle expiration rule matching the
40
- * configured TTL, so offloaded objects don't outlive their DynamoDB item
41
- * forever. No-ops when S3 offload or TTL isn't configured. Requires the
42
- * `s3:GetLifecycleConfiguration`/`s3:PutLifecycleConfiguration` bucket-level
43
- * permissions (broader than the object-level CRUD the rest of S3 offload
44
- * needs) — call this once during deployment/provisioning, not per-request.
219
+ * Provision an S3 lifecycle expiration rule matching the configured TTL, so
220
+ * offloaded objects don't outlive their DynamoDB item forever.
221
+ *
222
+ * Accepts: nothing; the rule follows the configured `s3` and `ttl`. A no-op
223
+ * without both.
224
+ *
225
+ * Returns: nothing. Installing a rule that is already there is a no-op too.
226
+ *
227
+ * Throws: `VALIDATION` naming `s3.keyPrefix` on a rule-id collision;
228
+ * a classified AWS failure when the bucket's lifecycle cannot be read or written.
229
+ * @remarks Requires the bucket-level `s3:GetLifecycleConfiguration` /
230
+ * `s3:PutLifecycleConfiguration` permissions, broader than the object-level
231
+ * CRUD the rest of S3 offload needs — call it once during provisioning, not
232
+ * per request.
45
233
  */
46
234
  ensureS3LifecycleRule(): Promise<void>;
47
235
  }
48
- //# sourceMappingURL=chat-message-history.d.ts.map