@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,29 +1,64 @@
1
- import type { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
- import type { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
1
+ /**
2
+ * Hides which options the history and its methods accept, and how the history
3
+ * is assembled from them.
4
+ *
5
+ * The exhaustive key list of every option bag — the constructor's,
6
+ * `getMessages`', `listSessions`' — lives here, compiler-checked against its
7
+ * type, beside the code that resolves the constructor's options into the
8
+ * context every action receives.
9
+ */
3
10
  import type { SerializerProtocol } from '@langchain/langgraph-checkpoint';
4
- import type { CompressionConfig } from '../../shared/codec/compression';
5
- import { S3Offloader } from '../../shared/codec/s3/offloader';
6
- import { type Logger } from '../../shared/logging/logger';
7
- import type { TtlOption } from '../../shared/validation/ttl';
11
+ import { type AdapterCore, type AdapterShell } from '../../shared/adapter';
8
12
  import type { CorruptMessagePolicy, DynamoDBChatMessageHistoryOptions } from '../types';
13
+ /**
14
+ * Max attempts for the message-append transaction. It shares one session's
15
+ * metadata row across every concurrent `addMessages` caller on that session,
16
+ * so a burst of concurrent appends can collide repeatedly; combined with the
17
+ * existing 100ms base / 5000ms cap backoff, this keeps worst-case retrying
18
+ * within AWS's documented guidance to bound conflict retries to "around one
19
+ * minute" (see DynamoDB's "Error retries and exponential backoff" guide).
20
+ * This bound is exact for clients this library constructs, which disable the
21
+ * AWS SDK's own internal retries (`maxAttempts: 1`, see
22
+ * `resolveDynamoDBClient`). An injected client that keeps SDK retries stacks
23
+ * them inside each attempt; construction warns about that.
24
+ */
25
+ export declare const MESSAGE_APPEND_RETRY_MAX_ATTEMPTS = 18;
26
+ /**
27
+ * The keys of each chat-history option bag, exhaustive in both directions:
28
+ * `allKeysOf<T>` makes omitting or inventing one a compile error, so a list
29
+ * cannot rot away from the type it guards. They live with the feature because
30
+ * the types they are checked against do; `shared/` knows no feature.
31
+ */
32
+ export declare const HISTORY_KEYS: readonly string[];
33
+ /** See {@link HISTORY_KEYS}. */
34
+ export declare const GET_MESSAGES_KEYS: readonly string[];
35
+ /** See {@link HISTORY_KEYS}. */
36
+ export declare const LIST_SESSIONS_KEYS: readonly string[];
9
37
  /** Resolved collaborators shared by every chat-history action. */
10
- export interface HistoryContext {
11
- client: DynamoDBDocument;
12
- tableName: string;
38
+ export interface HistoryContext extends AdapterCore {
13
39
  serde: SerializerProtocol;
14
- compression?: CompressionConfig;
15
- offloader?: S3Offloader;
16
- ttl?: TtlOption;
17
- logger: Logger;
18
40
  ulid: () => string;
19
41
  onCorruptMessage: CorruptMessagePolicy;
20
42
  }
21
43
  /** Result of wiring up a chat-history adapter from its options. */
22
44
  export interface HistorySetup {
23
45
  context: HistoryContext;
24
- ddbClient: DynamoDBClient | undefined;
25
- ownsClient: boolean;
46
+ shell: AdapterShell;
26
47
  }
27
- /** Resolve the client, optional S3 offloader, and serializer into a context. */
48
+ /**
49
+ * Validate the options, then resolve the client, offloader and serializer.
50
+ *
51
+ * Accepts: `options` — validated first, so no half-built adapter exists when
52
+ * one is wrong. `onCorruptMessage` is checked against its union here because a
53
+ * JavaScript caller can pass a string the type never admits, and an
54
+ * unrecognised policy would silently behave as `'skip'` — dropping messages a
55
+ * caller asked to be told about.
56
+ *
57
+ * Returns: the context every action shares, and the shell that releases what
58
+ * it holds — a client the caller passed in is never destroyed by `destroy()`.
59
+ *
60
+ * Throws: `VALIDATION` naming the offending option.
61
+ *
62
+ * Guarantees: constructing an adapter performs no I/O.
63
+ */
28
64
  export declare function setUpHistory(options: DynamoDBChatMessageHistoryOptions): HistorySetup;
29
- //# sourceMappingURL=setup.d.ts.map
@@ -1,35 +1,106 @@
1
1
  "use strict";
2
+ /**
3
+ * Hides which options the history and its methods accept, and how the history
4
+ * is assembled from them.
5
+ *
6
+ * The exhaustive key list of every option bag — the constructor's,
7
+ * `getMessages`', `listSessions`' — lives here, compiler-checked against its
8
+ * type, beside the code that resolves the constructor's options into the
9
+ * context every action receives.
10
+ */
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LIST_SESSIONS_KEYS = exports.GET_MESSAGES_KEYS = exports.HISTORY_KEYS = exports.MESSAGE_APPEND_RETRY_MAX_ATTEMPTS = void 0;
3
13
  exports.setUpHistory = setUpHistory;
14
+ const adapter_1 = require("../../shared/adapter");
4
15
  const json_serde_1 = require("../../shared/codec/json-serde");
5
- const config_1 = require("../../shared/codec/s3/config");
6
- const offloader_1 = require("../../shared/codec/s3/offloader");
7
- const constants_1 = require("../../shared/constants");
8
- const client_1 = require("../../shared/dynamodb/client");
9
- const logger_1 = require("../../shared/logging/logger");
16
+ const errors_1 = require("../../shared/errors/errors");
10
17
  const ulid_1 = require("../../shared/ulid");
11
- /** Resolve the client, optional S3 offloader, and serializer into a context. */
18
+ const option_shape_1 = require("../../shared/validation/option-shape");
19
+ /**
20
+ * Max attempts for the message-append transaction. It shares one session's
21
+ * metadata row across every concurrent `addMessages` caller on that session,
22
+ * so a burst of concurrent appends can collide repeatedly; combined with the
23
+ * existing 100ms base / 5000ms cap backoff, this keeps worst-case retrying
24
+ * within AWS's documented guidance to bound conflict retries to "around one
25
+ * minute" (see DynamoDB's "Error retries and exponential backoff" guide).
26
+ * This bound is exact for clients this library constructs, which disable the
27
+ * AWS SDK's own internal retries (`maxAttempts: 1`, see
28
+ * `resolveDynamoDBClient`). An injected client that keeps SDK retries stacks
29
+ * them inside each attempt; construction warns about that.
30
+ */
31
+ exports.MESSAGE_APPEND_RETRY_MAX_ATTEMPTS = 18;
32
+ /**
33
+ * The keys of each chat-history option bag, exhaustive in both directions:
34
+ * `allKeysOf<T>` makes omitting or inventing one a compile error, so a list
35
+ * cannot rot away from the type it guards. They live with the feature because
36
+ * the types they are checked against do; `shared/` knows no feature.
37
+ */
38
+ exports.HISTORY_KEYS = (0, option_shape_1.allKeysOf)({
39
+ tableName: 'tableName',
40
+ client: 'client',
41
+ clientConfig: 'clientConfig',
42
+ createClient: 'createClient',
43
+ ttl: 'ttl',
44
+ logger: 'logger',
45
+ retry: 'retry',
46
+ indexShards: 'indexShards',
47
+ indexName: 'indexName',
48
+ readConcurrency: 'readConcurrency',
49
+ compression: 'compression',
50
+ s3: 's3',
51
+ serde: 'serde',
52
+ onCorruptMessage: 'onCorruptMessage',
53
+ });
54
+ /** See {@link HISTORY_KEYS}. */
55
+ exports.GET_MESSAGES_KEYS = (0, option_shape_1.allKeysOf)({
56
+ limit: 'limit',
57
+ before: 'before',
58
+ signal: 'signal',
59
+ });
60
+ /** See {@link HISTORY_KEYS}. */
61
+ exports.LIST_SESSIONS_KEYS = (0, option_shape_1.allKeysOf)({
62
+ limit: 'limit',
63
+ cursor: 'cursor',
64
+ maxIterations: 'maxIterations',
65
+ maxItems: 'maxItems',
66
+ signal: 'signal',
67
+ });
68
+ const CORRUPT_MESSAGE_POLICIES = ['skip', 'throw'];
69
+ /** Reject an `onCorruptMessage` outside its union; see {@link setUpHistory} for why. */
70
+ function assertCorruptMessagePolicy(policy) {
71
+ if (policy !== undefined && !CORRUPT_MESSAGE_POLICIES.includes(policy)) {
72
+ throw (0, errors_1.validationError)(`onCorruptMessage must be one of ${CORRUPT_MESSAGE_POLICIES.join(' | ')}`, 'onCorruptMessage');
73
+ }
74
+ }
75
+ /**
76
+ * Validate the options, then resolve the client, offloader and serializer.
77
+ *
78
+ * Accepts: `options` — validated first, so no half-built adapter exists when
79
+ * one is wrong. `onCorruptMessage` is checked against its union here because a
80
+ * JavaScript caller can pass a string the type never admits, and an
81
+ * unrecognised policy would silently behave as `'skip'` — dropping messages a
82
+ * caller asked to be told about.
83
+ *
84
+ * Returns: the context every action shares, and the shell that releases what
85
+ * it holds — a client the caller passed in is never destroyed by `destroy()`.
86
+ *
87
+ * Throws: `VALIDATION` naming the offending option.
88
+ *
89
+ * Guarantees: constructing an adapter performs no I/O.
90
+ */
12
91
  function setUpHistory(options) {
13
- const resolved = (0, client_1.resolveDynamoDBClient)(options);
92
+ (0, option_shape_1.assertShape)(options, exports.HISTORY_KEYS, 'options');
93
+ const shell = (0, adapter_1.openAdapter)(options, 'history', {
94
+ options: () => assertCorruptMessagePolicy(options.onCorruptMessage),
95
+ attemptFloor: exports.MESSAGE_APPEND_RETRY_MAX_ATTEMPTS,
96
+ });
14
97
  return {
98
+ shell,
15
99
  context: {
16
- client: resolved.client,
17
- tableName: options.tableName,
100
+ ...shell.core,
18
101
  serde: options.serde ?? json_serde_1.JSON_SERDE,
19
- compression: options.compression,
20
- offloader: options.s3
21
- ? new offloader_1.S3Offloader({
22
- ...options.s3,
23
- keyPrefix: options.s3.keyPrefix ?? (0, config_1.defaultAdapterKeyPrefix)(constants_1.DEFAULT_S3_KEY_PREFIX, 'history'),
24
- })
25
- : undefined,
26
- ttl: options.ttl,
27
- logger: (0, logger_1.resolveLogger)(options.logger),
28
102
  ulid: (0, ulid_1.createUlidFactory)(),
29
103
  onCorruptMessage: options.onCorruptMessage ?? 'skip',
30
104
  },
31
- ddbClient: resolved.ddbClient,
32
- ownsClient: resolved.ownsClient,
33
105
  };
34
106
  }
35
- //# sourceMappingURL=setup.js.map
@@ -1,23 +1,118 @@
1
+ /**
2
+ * Hides a multi-session history behind LangChain's single-session interface.
3
+ *
4
+ * `RunnableWithMessageHistory` wants a history bound to one conversation and
5
+ * calls it with no session id. This view fixes the session and the read window
6
+ * at construction, validates both there, and forwards each call to the
7
+ * multi-session history it wraps, through the same error boundary. The window
8
+ * bounds what a chain reads, never what is written or cleared.
9
+ */
1
10
  import { BaseListChatMessageHistory } from '@langchain/core/chat_history';
2
11
  import type { BaseMessage } from '@langchain/core/messages';
3
- /** The session-scoped operations a single-session adapter delegates to. */
4
- export interface SessionBackend {
5
- getMessages(sessionId: string): Promise<BaseMessage[]>;
12
+ /** The read window an adapter applies to every `getMessages`. */
13
+ export type AdapterWindow = {
14
+ limit?: number;
15
+ };
16
+ /**
17
+ * A history holding many sessions, addressed by session id: what a
18
+ * single-session adapter wraps. `DynamoDBChatMessageHistory` is one.
19
+ */
20
+ export interface MultiSessionHistory {
21
+ getMessages(sessionId: string, window?: AdapterWindow): Promise<BaseMessage[]>;
6
22
  addMessages(sessionId: string, messages: BaseMessage[]): Promise<void>;
7
23
  clear(sessionId: string): Promise<void>;
8
24
  }
9
25
  /**
10
- * Single-session view over a {@link SessionBackend}, implementing LangChain's
26
+ * The earlier name of {@link MultiSessionHistory}, the same type.
27
+ *
28
+ * @deprecated Use `MultiSessionHistory`. This alias is removed in the next major release.
29
+ */
30
+ export type SessionBackend = MultiSessionHistory;
31
+ /**
32
+ * Single-session view over a {@link MultiSessionHistory}, implementing LangChain's
11
33
  * `BaseListChatMessageHistory` so it can drive `RunnableWithMessageHistory`.
34
+ * A `window` bounds what every read hands the chain — `{ limit: 50 }` feeds it
35
+ * the newest fifty messages instead of the whole session.
12
36
  */
13
37
  export declare class DynamoDBSessionChatMessageHistory extends BaseListChatMessageHistory {
14
38
  private readonly backend;
15
- private readonly sessionId;
16
39
  lc_namespace: string[];
17
- constructor(backend: SessionBackend, sessionId: string);
40
+ private readonly sessionId;
41
+ private readonly window;
42
+ /**
43
+ * Accepts: `backend` — the multi-session adapter this view delegates to,
44
+ * checked structurally for {@link MultiSessionHistory}'s own members. `sessionId`
45
+ * — the one session it is bound to, validated the same way every other
46
+ * adapter method validates a session id. `window` — bounds every read it
47
+ * performs; when given, only the `limit` key `AdapterWindow` declares, an
48
+ * integer from 1 to the package's page ceiling. `0` is refused: this window
49
+ * is what `RunnableWithMessageHistory` reads on every invocation, and an
50
+ * empty one is indistinguishable from a conversation that never happened.
51
+ *
52
+ * Returns: the view. Normally built through
53
+ * `DynamoDBChatMessageHistory.forSession`, which is the supported route.
54
+ * The adapter keeps the window it parsed, not the caller's object, so
55
+ * changing that object afterwards changes nothing.
56
+ *
57
+ * Throws: `VALIDATION` naming `backend`, `backend.<member>` for the first
58
+ * missing method, `sessionId`, `window` for a window that is not an object,
59
+ * `window.<key>` for a key `AdapterWindow` does not declare, or `limit`. Checking here reports a caller's mistake at
60
+ * construction instead of rebranding it as an upstream failure on first use.
61
+ */
62
+ constructor(backend: MultiSessionHistory, sessionId: string, window?: AdapterWindow);
63
+ /**
64
+ * This session's messages in chronological order.
65
+ *
66
+ * Accepts: nothing — the session and the window are fixed at construction,
67
+ * which is what `BaseListChatMessageHistory` requires.
68
+ *
69
+ * Returns: the messages, bounded by the adapter's window. LangChain calls
70
+ * this on every chain invocation, so the window is what keeps a long session
71
+ * from growing the prompt without limit.
72
+ *
73
+ * Throws: whatever the backend's `getMessages` throws, wrapped with
74
+ * the code the classifier assigns unless it is already one of this library's
75
+ * own errors.
76
+ */
18
77
  getMessages(): Promise<BaseMessage[]>;
78
+ /**
79
+ * Append one message to this session.
80
+ *
81
+ * Accepts: `message` — a LangChain message.
82
+ *
83
+ * Returns: nothing.
84
+ *
85
+ * Throws: as {@link addMessages}.
86
+ */
19
87
  addMessage(message: BaseMessage): Promise<void>;
88
+ /**
89
+ * Append messages to this session.
90
+ *
91
+ * Accepts: `messages` — LangChain messages; an empty list writes nothing.
92
+ *
93
+ * Returns: nothing, and only once every message has landed.
94
+ *
95
+ * Throws: whatever the backend's `addMessages` throws, wrapped with
96
+ * the code the classifier assigns unless it is already one of this library's
97
+ * own errors.
98
+ *
99
+ * Guarantees: the window bounds what is *read*, never what is written — the
100
+ * session keeps every message appended to it.
101
+ */
20
102
  addMessages(messages: BaseMessage[]): Promise<void>;
103
+ /**
104
+ * Delete this session's messages, metadata and offloaded objects.
105
+ *
106
+ * Accepts: nothing.
107
+ *
108
+ * Returns: nothing. Clearing a session that does not exist is not an error.
109
+ *
110
+ * Throws: whatever the backend's `clear` throws, wrapped with the code the
111
+ * classifier assigns unless it is already one of this library's own errors.
112
+ *
113
+ * Guarantees: the whole session goes, not the window.
114
+ * `BaseListChatMessageHistory` declares `clear()`, and a chain that calls it
115
+ * is asking for exactly that.
116
+ */
21
117
  clear(): Promise<void>;
22
118
  }
23
- //# sourceMappingURL=session-adapter.d.ts.map
@@ -1,32 +1,126 @@
1
1
  "use strict";
2
+ /**
3
+ * Hides a multi-session history behind LangChain's single-session interface.
4
+ *
5
+ * `RunnableWithMessageHistory` wants a history bound to one conversation and
6
+ * calls it with no session id. This view fixes the session and the read window
7
+ * at construction, validates both there, and forwards each call to the
8
+ * multi-session history it wraps, through the same error boundary. The window
9
+ * bounds what a chain reads, never what is written or cleared.
10
+ */
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.DynamoDBSessionChatMessageHistory = void 0;
4
13
  const chat_history_1 = require("@langchain/core/chat_history");
14
+ const boundary_1 = require("../shared/errors/boundary");
15
+ const collaborators_1 = require("../shared/validation/collaborators");
16
+ const option_shape_1 = require("../shared/validation/option-shape");
17
+ const parse_1 = require("./internal/parse");
18
+ /** Every key {@link AdapterWindow} declares, compiler-checked against its type. */
19
+ const ADAPTER_WINDOW_KEYS = (0, option_shape_1.allKeysOf)({ limit: 'limit' });
20
+ /** {@link MultiSessionHistory}'s own members, the ones this adapter calls. */
21
+ const MULTI_SESSION_HISTORY_MEMBERS = ['getMessages', 'addMessages', 'clear'];
5
22
  /**
6
- * Single-session view over a {@link SessionBackend}, implementing LangChain's
23
+ * Single-session view over a {@link MultiSessionHistory}, implementing LangChain's
7
24
  * `BaseListChatMessageHistory` so it can drive `RunnableWithMessageHistory`.
25
+ * A `window` bounds what every read hands the chain — `{ limit: 50 }` feeds it
26
+ * the newest fifty messages instead of the whole session.
8
27
  */
9
28
  class DynamoDBSessionChatMessageHistory extends chat_history_1.BaseListChatMessageHistory {
10
29
  backend;
11
- sessionId;
12
30
  lc_namespace = ['langchain', 'stores', 'message', 'dynamodb'];
13
- constructor(backend, sessionId) {
31
+ sessionId;
32
+ window;
33
+ /**
34
+ * Accepts: `backend` — the multi-session adapter this view delegates to,
35
+ * checked structurally for {@link MultiSessionHistory}'s own members. `sessionId`
36
+ * — the one session it is bound to, validated the same way every other
37
+ * adapter method validates a session id. `window` — bounds every read it
38
+ * performs; when given, only the `limit` key `AdapterWindow` declares, an
39
+ * integer from 1 to the package's page ceiling. `0` is refused: this window
40
+ * is what `RunnableWithMessageHistory` reads on every invocation, and an
41
+ * empty one is indistinguishable from a conversation that never happened.
42
+ *
43
+ * Returns: the view. Normally built through
44
+ * `DynamoDBChatMessageHistory.forSession`, which is the supported route.
45
+ * The adapter keeps the window it parsed, not the caller's object, so
46
+ * changing that object afterwards changes nothing.
47
+ *
48
+ * Throws: `VALIDATION` naming `backend`, `backend.<member>` for the first
49
+ * missing method, `sessionId`, `window` for a window that is not an object,
50
+ * `window.<key>` for a key `AdapterWindow` does not declare, or `limit`. Checking here reports a caller's mistake at
51
+ * construction instead of rebranding it as an upstream failure on first use.
52
+ */
53
+ constructor(backend, sessionId, window) {
14
54
  super();
15
55
  this.backend = backend;
16
- this.sessionId = sessionId;
56
+ (0, collaborators_1.assertMembers)(backend, MULTI_SESSION_HISTORY_MEMBERS, 'backend');
57
+ this.sessionId = (0, parse_1.parseSessionId)(sessionId);
58
+ if (window !== undefined)
59
+ (0, option_shape_1.assertShape)(window, ADAPTER_WINDOW_KEYS, 'window');
60
+ this.window = window === undefined ? undefined : (0, parse_1.parseMessageWindow)(window);
17
61
  }
62
+ /**
63
+ * This session's messages in chronological order.
64
+ *
65
+ * Accepts: nothing — the session and the window are fixed at construction,
66
+ * which is what `BaseListChatMessageHistory` requires.
67
+ *
68
+ * Returns: the messages, bounded by the adapter's window. LangChain calls
69
+ * this on every chain invocation, so the window is what keeps a long session
70
+ * from growing the prompt without limit.
71
+ *
72
+ * Throws: whatever the backend's `getMessages` throws, wrapped with
73
+ * the code the classifier assigns unless it is already one of this library's
74
+ * own errors.
75
+ */
18
76
  getMessages() {
19
- return this.backend.getMessages(this.sessionId);
77
+ return (0, boundary_1.guardPublic)('session.getMessages', () => this.backend.getMessages(this.sessionId, this.window));
20
78
  }
79
+ /**
80
+ * Append one message to this session.
81
+ *
82
+ * Accepts: `message` — a LangChain message.
83
+ *
84
+ * Returns: nothing.
85
+ *
86
+ * Throws: as {@link addMessages}.
87
+ */
21
88
  addMessage(message) {
22
- return this.backend.addMessages(this.sessionId, [message]);
89
+ return (0, boundary_1.guardPublic)('session.addMessage', () => this.backend.addMessages(this.sessionId, [message]));
23
90
  }
91
+ /**
92
+ * Append messages to this session.
93
+ *
94
+ * Accepts: `messages` — LangChain messages; an empty list writes nothing.
95
+ *
96
+ * Returns: nothing, and only once every message has landed.
97
+ *
98
+ * Throws: whatever the backend's `addMessages` throws, wrapped with
99
+ * the code the classifier assigns unless it is already one of this library's
100
+ * own errors.
101
+ *
102
+ * Guarantees: the window bounds what is *read*, never what is written — the
103
+ * session keeps every message appended to it.
104
+ */
24
105
  addMessages(messages) {
25
- return this.backend.addMessages(this.sessionId, messages);
106
+ return (0, boundary_1.guardPublic)('session.addMessages', () => this.backend.addMessages(this.sessionId, messages));
26
107
  }
108
+ /**
109
+ * Delete this session's messages, metadata and offloaded objects.
110
+ *
111
+ * Accepts: nothing.
112
+ *
113
+ * Returns: nothing. Clearing a session that does not exist is not an error.
114
+ *
115
+ * Throws: whatever the backend's `clear` throws, wrapped with the code the
116
+ * classifier assigns unless it is already one of this library's own errors.
117
+ *
118
+ * Guarantees: the whole session goes, not the window.
119
+ * `BaseListChatMessageHistory` declares `clear()`, and a chain that calls it
120
+ * is asking for exactly that.
121
+ */
27
122
  clear() {
28
- return this.backend.clear(this.sessionId);
123
+ return (0, boundary_1.guardPublic)('session.clear', () => this.backend.clear(this.sessionId));
29
124
  }
30
125
  }
31
126
  exports.DynamoDBSessionChatMessageHistory = DynamoDBSessionChatMessageHistory;
32
- //# sourceMappingURL=session-adapter.js.map
@@ -1,23 +1,92 @@
1
+ /**
2
+ * Hides the history's implementation from the types a caller names.
3
+ *
4
+ * Every option and result of the multi-session history's reads, writes and
5
+ * listings is declared here, with no run-time code, so a caller can type
6
+ * what it builds without importing an action, a parser or a row module. The
7
+ * parsed forms the actions work from belong to the parser and the row
8
+ * shapes to the modules that own them, so either can change without moving
9
+ * a published type.
10
+ */
1
11
  import type { SerializerProtocol } from '@langchain/langgraph-checkpoint';
2
- import type { PayloadDescriptor } from '../shared/codec/codec';
3
- import type { BaseAdapterOptions, CodecOptions } from '../shared/options';
12
+ import type { BaseAdapterOptions, CancelOptions, CodecOptions } from '../shared/options';
4
13
  /** Options for {@link DynamoDBChatMessageHistory}. */
5
14
  export type DynamoDBChatMessageHistoryOptions = BaseAdapterOptions & CodecOptions & {
6
- /** Optional serializer override (defaults to the JSON serializer). */
15
+ /**
16
+ * Optional serializer override. The default is the exported `JSON_SERDE`,
17
+ * plain JSON: what it stores is the JSON projection of a value, and the
18
+ * README's *Table schema* section tabulates where that differs from the
19
+ * value itself.
20
+ */
7
21
  serde?: SerializerProtocol;
8
22
  /**
9
23
  * What `getMessages` does when a stored message cannot be decoded — a
10
- * decompression-guard trip, an unsupported `serdeType` after a config
11
- * change, or genuinely corrupted bytes. `'skip'` (the default) drops the
12
- * item, logs it at `error` with its sort key so an operator can locate
13
- * it, and returns the rest; `'throw'` fails the whole read, which is
14
- * all-or-nothing but leaves the session unreadable until the bad row is
15
- * removed out of band.
24
+ * decompression-guard trip, bytes that no longer parse as the form the row
25
+ * declares, or a decoded message LangChain cannot rebuild. A serializer
26
+ * declining intact bytes is not one of these and this option does not
27
+ * govern it: a `serdeType` the configured serializer has no grammar for
28
+ * after a config change, like an `lc` record naming a class outside its
29
+ * allow-list, is reported under **both** policies, because a payload this
30
+ * reader merely may not rebuild is not a payload that is gone. `'skip'`
31
+ * (the default) drops the item, logs it at `error` with its sort key so an
32
+ * operator can locate it, and returns the rest; `'throw'` fails the whole
33
+ * read, which is all-or-nothing but leaves the session unreadable until
34
+ * the bad row is removed out of band.
16
35
  */
17
36
  onCorruptMessage?: CorruptMessagePolicy;
18
37
  };
19
38
  /** How `getMessages` handles an item it cannot decode. */
20
39
  export type CorruptMessagePolicy = 'skip' | 'throw';
40
+ /**
41
+ * Which slice of a session `getMessages` returns. Both bounds are optional
42
+ * and combine: `{ limit: 50, before }` is the fifty messages just before
43
+ * `before`.
44
+ */
45
+ export interface MessageWindow {
46
+ /**
47
+ * Return only the newest `limit` messages — still in chronological order. An
48
+ * integer from 1 to `MAX_PAGE_LIMIT` (10,000): the page rule every `limit` in
49
+ * this package follows, with the one floor of 1 it has. `0` is refused rather
50
+ * than answered with nothing, since for a window into a conversation it is
51
+ * far more likely a bug than a request — and the empty window it would
52
+ * produce is what a chain reads as the whole session.
53
+ */
54
+ limit?: number;
55
+ /** Return only messages appended before this instant (millisecond precision). */
56
+ before?: Date;
57
+ }
58
+ /** Options for `getMessages`: the read window plus cancellation. */
59
+ export type GetMessagesOptions = MessageWindow & CancelOptions;
60
+ /** Options for `listSessions`: the page, the scan caps, and cancellation. */
61
+ export interface ListSessionsOptions extends CancelOptions {
62
+ /**
63
+ * How many sessions to return, newest-updated first; an integer from 0 to
64
+ * `MAX_PAGE_LIMIT` (10,000).
65
+ *
66
+ * With a configured `indexName` it is the page size and defaults to 100.
67
+ * Without one the read is a table scan that cannot be paged: an explicit
68
+ * limit still selects the newest N, but omitting it returns every session,
69
+ * because there would be no cursor to fetch the rest with. `0` returns an
70
+ * empty page on either path and reads neither.
71
+ */
72
+ limit?: number;
73
+ /**
74
+ * Opaque cursor from a previous page. Requires a configured `indexName` —
75
+ * without the index there is no position to resume from, and passing one is
76
+ * refused rather than answered with the first page again.
77
+ */
78
+ cursor?: string;
79
+ /** Cap on scan pages before `RESULT_TRUNCATED` (default 1000). Scan path only. */
80
+ maxIterations?: number;
81
+ /** Cap on rows read into memory before `RESULT_TRUNCATED` (default 10 000). Scan path only. */
82
+ maxItems?: number;
83
+ }
84
+ /** One page of {@link SessionMetadata}, and where the next one resumes. */
85
+ export interface SessionPage {
86
+ sessions: SessionMetadata[];
87
+ /** Absent when this page is the last one, or when the read was a scan. */
88
+ nextCursor?: string;
89
+ }
21
90
  /** Summary of a stored chat session. */
22
91
  export interface SessionMetadata {
23
92
  sessionId: string;
@@ -25,24 +94,6 @@ export interface SessionMetadata {
25
94
  messageCount: number;
26
95
  createdAt: string;
27
96
  updatedAt: string;
97
+ /** When the session's TTL expires, as an ISO-8601 instant; absent when no TTL is stored. */
98
+ expiresAt?: string;
28
99
  }
29
- /** A single stored chat message item (one per message, ordered by its ULID). */
30
- export interface ChatMessageItem {
31
- PK: string;
32
- SK: string;
33
- sessionId: string;
34
- message: PayloadDescriptor;
35
- ttl?: number;
36
- }
37
- /** The per-session metadata item, updated atomically as messages are appended. */
38
- export interface ChatSessionItem {
39
- PK: string;
40
- SK: string;
41
- sessionId: string;
42
- messageCount: number;
43
- title?: string;
44
- createdAt: string;
45
- updatedAt: string;
46
- ttl?: number;
47
- }
48
- //# sourceMappingURL=types.d.ts.map
@@ -1,3 +1,12 @@
1
1
  "use strict";
2
+ /**
3
+ * Hides the history's implementation from the types a caller names.
4
+ *
5
+ * Every option and result of the multi-session history's reads, writes and
6
+ * listings is declared here, with no run-time code, so a caller can type
7
+ * what it builds without importing an action, a parser or a row module. The
8
+ * parsed forms the actions work from belong to the parser and the row
9
+ * shapes to the modules that own them, so either can change without moving
10
+ * a published type.
11
+ */
2
12
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map