@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.
- package/README.md +1720 -154
- package/dist/backfill/backfill.d.ts +168 -0
- package/dist/backfill/backfill.js +393 -0
- package/dist/checkpointer/actions/delete-thread.d.ts +47 -6
- package/dist/checkpointer/actions/delete-thread.js +58 -21
- package/dist/checkpointer/actions/get-tuple.d.ts +29 -4
- package/dist/checkpointer/actions/get-tuple.js +44 -10
- package/dist/checkpointer/actions/list.d.ts +46 -4
- package/dist/checkpointer/actions/list.js +121 -66
- package/dist/checkpointer/actions/put-writes.d.ts +41 -9
- package/dist/checkpointer/actions/put-writes.js +62 -77
- package/dist/checkpointer/actions/put.d.ts +83 -4
- package/dist/checkpointer/actions/put.js +177 -25
- package/dist/checkpointer/internal/delta-history.d.ts +112 -0
- package/dist/checkpointer/internal/delta-history.js +252 -0
- package/dist/checkpointer/internal/listing.d.ts +149 -0
- package/dist/checkpointer/internal/listing.js +245 -0
- package/dist/checkpointer/internal/parse.d.ts +262 -0
- package/dist/checkpointer/internal/parse.js +372 -0
- package/dist/checkpointer/internal/pending-writes.d.ts +275 -0
- package/dist/checkpointer/internal/pending-writes.js +588 -0
- package/dist/checkpointer/internal/read.d.ts +130 -0
- package/dist/checkpointer/internal/read.js +264 -0
- package/dist/checkpointer/internal/rows.d.ts +571 -0
- package/dist/checkpointer/internal/rows.js +834 -0
- package/dist/checkpointer/internal/setup.d.ts +42 -19
- package/dist/checkpointer/internal/setup.js +65 -29
- package/dist/checkpointer/saver.d.ts +256 -16
- package/dist/checkpointer/saver.js +275 -29
- package/dist/checkpointer/types.d.ts +39 -39
- package/dist/checkpointer/types.js +10 -1
- package/dist/factory/factory.d.ts +134 -28
- package/dist/factory/factory.js +240 -21
- package/dist/factory/types.d.ts +76 -0
- package/dist/factory/types.js +10 -0
- package/dist/history/actions/add-messages.d.ts +31 -4
- package/dist/history/actions/add-messages.js +38 -58
- package/dist/history/actions/clear.d.ts +49 -6
- package/dist/history/actions/clear.js +66 -14
- package/dist/history/actions/get-messages.d.ts +54 -6
- package/dist/history/actions/get-messages.js +126 -43
- package/dist/history/actions/list-sessions.d.ts +52 -10
- package/dist/history/actions/list-sessions.js +139 -40
- package/dist/history/actions/reconcile-count.d.ts +42 -10
- package/dist/history/actions/reconcile-count.js +45 -45
- package/dist/history/chat-message-history.d.ts +220 -33
- package/dist/history/chat-message-history.js +240 -43
- package/dist/history/internal/append.d.ts +212 -0
- package/dist/history/internal/append.js +500 -0
- package/dist/history/internal/message-read.d.ts +84 -0
- package/dist/history/internal/message-read.js +204 -0
- package/dist/history/internal/parse.d.ts +153 -0
- package/dist/history/internal/parse.js +252 -0
- package/dist/history/internal/rows.d.ts +195 -0
- package/dist/history/internal/rows.js +250 -0
- package/dist/history/internal/session.d.ts +331 -0
- package/dist/history/internal/session.js +628 -0
- package/dist/history/internal/setup.d.ts +52 -17
- package/dist/history/internal/setup.js +92 -21
- package/dist/history/session-adapter.d.ts +102 -7
- package/dist/history/session-adapter.js +103 -9
- package/dist/history/types.d.ts +80 -29
- package/dist/history/types.js +10 -1
- package/dist/index.d.ts +42 -11
- package/dist/index.js +33 -12
- package/dist/shared/adapter.d.ts +135 -0
- package/dist/shared/adapter.js +143 -0
- package/dist/shared/clock.d.ts +51 -2
- package/dist/shared/clock.js +57 -2
- package/dist/shared/codec/codec.d.ts +288 -13
- package/dist/shared/codec/codec.js +416 -19
- package/dist/shared/codec/compression.d.ts +43 -7
- package/dist/shared/codec/compression.js +53 -13
- package/dist/shared/codec/json-serde.d.ts +76 -4
- package/dist/shared/codec/json-serde.js +181 -8
- package/dist/shared/codec/s3/client-types.d.ts +53 -0
- package/dist/shared/codec/s3/client-types.js +26 -0
- package/dist/shared/codec/s3/client.d.ts +43 -10
- package/dist/shared/codec/s3/client.js +82 -9
- package/dist/shared/codec/s3/config.d.ts +242 -11
- package/dist/shared/codec/s3/config.js +293 -11
- package/dist/shared/codec/s3/lifecycle.d.ts +164 -6
- package/dist/shared/codec/s3/lifecycle.js +335 -27
- package/dist/shared/codec/s3/offloader.d.ts +393 -18
- package/dist/shared/codec/s3/offloader.js +595 -37
- package/dist/shared/concurrency.d.ts +43 -0
- package/dist/shared/concurrency.js +78 -0
- package/dist/shared/dynamodb/abort.d.ts +47 -0
- package/dist/shared/dynamodb/abort.js +59 -0
- package/dist/shared/dynamodb/batch-write.d.ts +77 -14
- package/dist/shared/dynamodb/batch-write.js +146 -27
- package/dist/shared/dynamodb/cancellation.d.ts +121 -4
- package/dist/shared/dynamodb/cancellation.js +147 -3
- package/dist/shared/dynamodb/client.d.ts +162 -8
- package/dist/shared/dynamodb/client.js +153 -5
- package/dist/shared/dynamodb/idempotent-write.d.ts +551 -0
- package/dist/shared/dynamodb/idempotent-write.js +593 -0
- package/dist/shared/dynamodb/paginate.d.ts +105 -9
- package/dist/shared/dynamodb/paginate.js +175 -7
- package/dist/shared/dynamodb/partition-delete.d.ts +185 -14
- package/dist/shared/dynamodb/partition-delete.js +314 -44
- package/dist/shared/dynamodb/recency-index.d.ts +231 -0
- package/dist/shared/dynamodb/recency-index.js +377 -0
- package/dist/shared/dynamodb/retry.d.ts +276 -8
- package/dist/shared/dynamodb/retry.js +433 -23
- package/dist/shared/dynamodb/table-schema.d.ts +190 -0
- package/dist/shared/dynamodb/table-schema.js +209 -0
- package/dist/shared/errors/base-error.d.ts +184 -10
- package/dist/shared/errors/base-error.js +160 -14
- package/dist/shared/errors/boundary.d.ts +71 -0
- package/dist/shared/errors/boundary.js +143 -0
- package/dist/shared/errors/classify.d.ts +97 -0
- package/dist/shared/errors/classify.js +257 -0
- package/dist/shared/errors/error-code.d.ts +77 -2
- package/dist/shared/errors/error-code.js +83 -1
- package/dist/shared/errors/errors.d.ts +158 -59
- package/dist/shared/errors/errors.js +219 -92
- package/dist/shared/logging/logger.d.ts +69 -3
- package/dist/shared/logging/logger.js +97 -3
- package/dist/shared/logging/redaction.d.ts +92 -8
- package/dist/shared/logging/redaction.js +273 -17
- package/dist/shared/logging/secret-patterns.d.ts +149 -19
- package/dist/shared/logging/secret-patterns.js +188 -27
- package/dist/shared/logging/truncate.d.ts +197 -0
- package/dist/shared/logging/truncate.js +231 -0
- package/dist/shared/options.d.ts +59 -7
- package/dist/shared/options.js +9 -1
- package/dist/shared/ulid.d.ts +77 -7
- package/dist/shared/ulid.js +103 -8
- package/dist/shared/validation/collaborators.d.ts +141 -0
- package/dist/shared/validation/collaborators.js +188 -0
- package/dist/shared/validation/option-shape.d.ts +89 -0
- package/dist/shared/validation/option-shape.js +113 -0
- package/dist/shared/validation/options.d.ts +145 -0
- package/dist/shared/validation/options.js +328 -0
- package/dist/shared/validation/primitives.d.ts +288 -21
- package/dist/shared/validation/primitives.js +353 -50
- package/dist/shared/validation/ttl.d.ts +66 -10
- package/dist/shared/validation/ttl.js +113 -15
- package/dist/store/actions/list-namespaces.d.ts +76 -6
- package/dist/store/actions/list-namespaces.js +166 -24
- package/dist/store/actions/put.d.ts +33 -8
- package/dist/store/actions/put.js +53 -60
- package/dist/store/actions/reconcile-vector-index.d.ts +31 -10
- package/dist/store/actions/reconcile-vector-index.js +34 -15
- package/dist/store/actions/search.d.ts +34 -6
- package/dist/store/actions/search.js +56 -51
- package/dist/store/internal/batch-plan.d.ts +26 -0
- package/dist/store/internal/batch-plan.js +109 -0
- package/dist/store/internal/filter.d.ts +36 -3
- package/dist/store/internal/filter.js +66 -15
- package/dist/store/internal/get-item.d.ts +45 -0
- package/dist/store/internal/get-item.js +115 -0
- package/dist/store/internal/item-write.d.ts +230 -0
- package/dist/store/internal/item-write.js +463 -0
- package/dist/store/internal/parse.d.ts +225 -0
- package/dist/store/internal/parse.js +350 -0
- package/dist/store/internal/rows.d.ts +355 -0
- package/dist/store/internal/rows.js +447 -0
- package/dist/store/internal/semantic-search.d.ts +161 -6
- package/dist/store/internal/semantic-search.js +360 -18
- package/dist/store/internal/setup.d.ts +77 -20
- package/dist/store/internal/setup.js +178 -47
- package/dist/store/internal/table-search.d.ts +100 -0
- package/dist/store/internal/table-search.js +213 -0
- package/dist/store/internal/vector-index.d.ts +247 -0
- package/dist/store/internal/vector-index.js +546 -0
- package/dist/store/store.d.ts +270 -17
- package/dist/store/store.js +329 -38
- package/dist/store/types.d.ts +76 -26
- package/dist/store/types.js +13 -1
- package/dist/store/vector-backend.d.ts +64 -4
- package/dist/store/vector-backend.js +15 -1
- package/package.json +58 -36
- package/dist/checkpointer/actions/delete-thread.d.ts.map +0 -1
- package/dist/checkpointer/actions/delete-thread.js.map +0 -1
- package/dist/checkpointer/actions/get-tuple.d.ts.map +0 -1
- package/dist/checkpointer/actions/get-tuple.js.map +0 -1
- package/dist/checkpointer/actions/list.d.ts.map +0 -1
- package/dist/checkpointer/actions/list.js.map +0 -1
- package/dist/checkpointer/actions/put-writes.d.ts.map +0 -1
- package/dist/checkpointer/actions/put-writes.js.map +0 -1
- package/dist/checkpointer/actions/put.d.ts.map +0 -1
- package/dist/checkpointer/actions/put.js.map +0 -1
- package/dist/checkpointer/internal/assemble.d.ts +0 -10
- package/dist/checkpointer/internal/assemble.d.ts.map +0 -1
- package/dist/checkpointer/internal/assemble.js +0 -37
- package/dist/checkpointer/internal/assemble.js.map +0 -1
- package/dist/checkpointer/internal/configurable.d.ts +0 -13
- package/dist/checkpointer/internal/configurable.d.ts.map +0 -1
- package/dist/checkpointer/internal/configurable.js +0 -23
- package/dist/checkpointer/internal/configurable.js.map +0 -1
- package/dist/checkpointer/internal/fetch.d.ts +0 -10
- package/dist/checkpointer/internal/fetch.d.ts.map +0 -1
- package/dist/checkpointer/internal/fetch.js +0 -46
- package/dist/checkpointer/internal/fetch.js.map +0 -1
- package/dist/checkpointer/internal/filter-match.d.ts +0 -12
- package/dist/checkpointer/internal/filter-match.d.ts.map +0 -1
- package/dist/checkpointer/internal/filter-match.js +0 -14
- package/dist/checkpointer/internal/filter-match.js.map +0 -1
- package/dist/checkpointer/internal/item-reader.d.ts +0 -55
- package/dist/checkpointer/internal/item-reader.d.ts.map +0 -1
- package/dist/checkpointer/internal/item-reader.js +0 -88
- package/dist/checkpointer/internal/item-reader.js.map +0 -1
- package/dist/checkpointer/internal/item-writer.d.ts +0 -26
- package/dist/checkpointer/internal/item-writer.d.ts.map +0 -1
- package/dist/checkpointer/internal/item-writer.js +0 -92
- package/dist/checkpointer/internal/item-writer.js.map +0 -1
- package/dist/checkpointer/internal/keys.d.ts +0 -31
- package/dist/checkpointer/internal/keys.d.ts.map +0 -1
- package/dist/checkpointer/internal/keys.js +0 -87
- package/dist/checkpointer/internal/keys.js.map +0 -1
- package/dist/checkpointer/internal/query.d.ts +0 -20
- package/dist/checkpointer/internal/query.d.ts.map +0 -1
- package/dist/checkpointer/internal/query.js +0 -36
- package/dist/checkpointer/internal/query.js.map +0 -1
- package/dist/checkpointer/internal/setup.d.ts.map +0 -1
- package/dist/checkpointer/internal/setup.js.map +0 -1
- package/dist/checkpointer/internal/special-write-cas.d.ts +0 -30
- package/dist/checkpointer/internal/special-write-cas.d.ts.map +0 -1
- package/dist/checkpointer/internal/special-write-cas.js +0 -104
- package/dist/checkpointer/internal/special-write-cas.js.map +0 -1
- package/dist/checkpointer/internal/special-write-cleanup.d.ts +0 -24
- package/dist/checkpointer/internal/special-write-cleanup.d.ts.map +0 -1
- package/dist/checkpointer/internal/special-write-cleanup.js +0 -47
- package/dist/checkpointer/internal/special-write-cleanup.js.map +0 -1
- package/dist/checkpointer/internal/special-write-verify.d.ts +0 -54
- package/dist/checkpointer/internal/special-write-verify.d.ts.map +0 -1
- package/dist/checkpointer/internal/special-write-verify.js +0 -65
- package/dist/checkpointer/internal/special-write-verify.js.map +0 -1
- package/dist/checkpointer/internal/validation.d.ts +0 -13
- package/dist/checkpointer/internal/validation.d.ts.map +0 -1
- package/dist/checkpointer/internal/validation.js +0 -30
- package/dist/checkpointer/internal/validation.js.map +0 -1
- package/dist/checkpointer/internal/write-guard.d.ts +0 -13
- package/dist/checkpointer/internal/write-guard.d.ts.map +0 -1
- package/dist/checkpointer/internal/write-guard.js +0 -39
- package/dist/checkpointer/internal/write-guard.js.map +0 -1
- package/dist/checkpointer/internal/write-index.d.ts +0 -37
- package/dist/checkpointer/internal/write-index.d.ts.map +0 -1
- package/dist/checkpointer/internal/write-index.js +0 -42
- package/dist/checkpointer/internal/write-index.js.map +0 -1
- package/dist/checkpointer/saver.d.ts.map +0 -1
- package/dist/checkpointer/saver.js.map +0 -1
- package/dist/checkpointer/types.d.ts.map +0 -1
- package/dist/checkpointer/types.js.map +0 -1
- package/dist/factory/factory.d.ts.map +0 -1
- package/dist/factory/factory.js.map +0 -1
- package/dist/history/actions/add-messages.d.ts.map +0 -1
- package/dist/history/actions/add-messages.js.map +0 -1
- package/dist/history/actions/clear.d.ts.map +0 -1
- package/dist/history/actions/clear.js.map +0 -1
- package/dist/history/actions/get-messages.d.ts.map +0 -1
- package/dist/history/actions/get-messages.js.map +0 -1
- package/dist/history/actions/list-sessions.d.ts.map +0 -1
- package/dist/history/actions/list-sessions.js.map +0 -1
- package/dist/history/actions/reconcile-count.d.ts.map +0 -1
- package/dist/history/actions/reconcile-count.js.map +0 -1
- package/dist/history/chat-message-history.d.ts.map +0 -1
- package/dist/history/chat-message-history.js.map +0 -1
- package/dist/history/internal/append-saga.d.ts +0 -20
- package/dist/history/internal/append-saga.d.ts.map +0 -1
- package/dist/history/internal/append-saga.js +0 -35
- package/dist/history/internal/append-saga.js.map +0 -1
- package/dist/history/internal/compensation.d.ts +0 -21
- package/dist/history/internal/compensation.d.ts.map +0 -1
- package/dist/history/internal/compensation.js +0 -84
- package/dist/history/internal/compensation.js.map +0 -1
- package/dist/history/internal/item-mapper.d.ts +0 -12
- package/dist/history/internal/item-mapper.d.ts.map +0 -1
- package/dist/history/internal/item-mapper.js +0 -33
- package/dist/history/internal/item-mapper.js.map +0 -1
- package/dist/history/internal/keys.d.ts +0 -17
- package/dist/history/internal/keys.d.ts.map +0 -1
- package/dist/history/internal/keys.js +0 -49
- package/dist/history/internal/keys.js.map +0 -1
- package/dist/history/internal/message-chunker.d.ts +0 -14
- package/dist/history/internal/message-chunker.d.ts.map +0 -1
- package/dist/history/internal/message-chunker.js +0 -68
- package/dist/history/internal/message-chunker.js.map +0 -1
- package/dist/history/internal/message-transaction.d.ts +0 -26
- package/dist/history/internal/message-transaction.d.ts.map +0 -1
- package/dist/history/internal/message-transaction.js +0 -60
- package/dist/history/internal/message-transaction.js.map +0 -1
- package/dist/history/internal/query.d.ts +0 -10
- package/dist/history/internal/query.d.ts.map +0 -1
- package/dist/history/internal/query.js +0 -31
- package/dist/history/internal/query.js.map +0 -1
- package/dist/history/internal/session-count.d.ts +0 -41
- package/dist/history/internal/session-count.d.ts.map +0 -1
- package/dist/history/internal/session-count.js +0 -109
- package/dist/history/internal/session-count.js.map +0 -1
- package/dist/history/internal/session-title.d.ts +0 -20
- package/dist/history/internal/session-title.d.ts.map +0 -1
- package/dist/history/internal/session-title.js +0 -44
- package/dist/history/internal/session-title.js.map +0 -1
- package/dist/history/internal/session-update.d.ts +0 -28
- package/dist/history/internal/session-update.d.ts.map +0 -1
- package/dist/history/internal/session-update.js +0 -70
- package/dist/history/internal/session-update.js.map +0 -1
- package/dist/history/internal/setup.d.ts.map +0 -1
- package/dist/history/internal/setup.js.map +0 -1
- package/dist/history/internal/title-generator.d.ts +0 -13
- package/dist/history/internal/title-generator.d.ts.map +0 -1
- package/dist/history/internal/title-generator.js +0 -25
- package/dist/history/internal/title-generator.js.map +0 -1
- package/dist/history/internal/ttl-anchor.d.ts +0 -25
- package/dist/history/internal/ttl-anchor.d.ts.map +0 -1
- package/dist/history/internal/ttl-anchor.js +0 -38
- package/dist/history/internal/ttl-anchor.js.map +0 -1
- package/dist/history/internal/validation.d.ts +0 -9
- package/dist/history/internal/validation.d.ts.map +0 -1
- package/dist/history/internal/validation.js +0 -16
- package/dist/history/internal/validation.js.map +0 -1
- package/dist/history/session-adapter.d.ts.map +0 -1
- package/dist/history/session-adapter.js.map +0 -1
- package/dist/history/types.d.ts.map +0 -1
- package/dist/history/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/shared/clock.d.ts.map +0 -1
- package/dist/shared/clock.js.map +0 -1
- package/dist/shared/codec/codec.d.ts.map +0 -1
- package/dist/shared/codec/codec.js.map +0 -1
- package/dist/shared/codec/compression.d.ts.map +0 -1
- package/dist/shared/codec/compression.js.map +0 -1
- package/dist/shared/codec/descriptor-keys.d.ts +0 -4
- package/dist/shared/codec/descriptor-keys.d.ts.map +0 -1
- package/dist/shared/codec/descriptor-keys.js +0 -14
- package/dist/shared/codec/descriptor-keys.js.map +0 -1
- package/dist/shared/codec/json-serde.d.ts.map +0 -1
- package/dist/shared/codec/json-serde.js.map +0 -1
- package/dist/shared/codec/s3/client.d.ts.map +0 -1
- package/dist/shared/codec/s3/client.js.map +0 -1
- package/dist/shared/codec/s3/config.d.ts.map +0 -1
- package/dist/shared/codec/s3/config.js.map +0 -1
- package/dist/shared/codec/s3/delete.d.ts +0 -8
- package/dist/shared/codec/s3/delete.d.ts.map +0 -1
- package/dist/shared/codec/s3/delete.js +0 -29
- package/dist/shared/codec/s3/delete.js.map +0 -1
- package/dist/shared/codec/s3/lifecycle.d.ts.map +0 -1
- package/dist/shared/codec/s3/lifecycle.js.map +0 -1
- package/dist/shared/codec/s3/offloader.d.ts.map +0 -1
- package/dist/shared/codec/s3/offloader.js.map +0 -1
- package/dist/shared/codec/s3/orphans.d.ts +0 -18
- package/dist/shared/codec/s3/orphans.d.ts.map +0 -1
- package/dist/shared/codec/s3/orphans.js +0 -58
- package/dist/shared/codec/s3/orphans.js.map +0 -1
- package/dist/shared/codec/s3/read-write.d.ts +0 -14
- package/dist/shared/codec/s3/read-write.d.ts.map +0 -1
- package/dist/shared/codec/s3/read-write.js +0 -43
- package/dist/shared/codec/s3/read-write.js.map +0 -1
- package/dist/shared/codec/s3/retry.d.ts +0 -5
- package/dist/shared/codec/s3/retry.d.ts.map +0 -1
- package/dist/shared/codec/s3/retry.js +0 -25
- package/dist/shared/codec/s3/retry.js.map +0 -1
- package/dist/shared/constants.d.ts +0 -64
- package/dist/shared/constants.d.ts.map +0 -1
- package/dist/shared/constants.js +0 -67
- package/dist/shared/constants.js.map +0 -1
- package/dist/shared/dynamodb/backoff.d.ts +0 -15
- package/dist/shared/dynamodb/backoff.d.ts.map +0 -1
- package/dist/shared/dynamodb/backoff.js +0 -48
- package/dist/shared/dynamodb/backoff.js.map +0 -1
- package/dist/shared/dynamodb/batch-write.d.ts.map +0 -1
- package/dist/shared/dynamodb/batch-write.js.map +0 -1
- package/dist/shared/dynamodb/cancellation.d.ts.map +0 -1
- package/dist/shared/dynamodb/cancellation.js.map +0 -1
- package/dist/shared/dynamodb/client.d.ts.map +0 -1
- package/dist/shared/dynamodb/client.js.map +0 -1
- package/dist/shared/dynamodb/conditional-put.d.ts +0 -51
- package/dist/shared/dynamodb/conditional-put.d.ts.map +0 -1
- package/dist/shared/dynamodb/conditional-put.js +0 -59
- package/dist/shared/dynamodb/conditional-put.js.map +0 -1
- package/dist/shared/dynamodb/drain-unprocessed.d.ts +0 -19
- package/dist/shared/dynamodb/drain-unprocessed.d.ts.map +0 -1
- package/dist/shared/dynamodb/drain-unprocessed.js +0 -44
- package/dist/shared/dynamodb/drain-unprocessed.js.map +0 -1
- package/dist/shared/dynamodb/paginate-core.d.ts +0 -22
- package/dist/shared/dynamodb/paginate-core.d.ts.map +0 -1
- package/dist/shared/dynamodb/paginate-core.js +0 -52
- package/dist/shared/dynamodb/paginate-core.js.map +0 -1
- package/dist/shared/dynamodb/paginate.d.ts.map +0 -1
- package/dist/shared/dynamodb/paginate.js.map +0 -1
- package/dist/shared/dynamodb/partition-delete.d.ts.map +0 -1
- package/dist/shared/dynamodb/partition-delete.js.map +0 -1
- package/dist/shared/dynamodb/retry-classifier.d.ts +0 -9
- package/dist/shared/dynamodb/retry-classifier.d.ts.map +0 -1
- package/dist/shared/dynamodb/retry-classifier.js +0 -87
- package/dist/shared/dynamodb/retry-classifier.js.map +0 -1
- package/dist/shared/dynamodb/retry.d.ts.map +0 -1
- package/dist/shared/dynamodb/retry.js.map +0 -1
- package/dist/shared/dynamodb/scan.d.ts +0 -15
- package/dist/shared/dynamodb/scan.d.ts.map +0 -1
- package/dist/shared/dynamodb/scan.js +0 -20
- package/dist/shared/dynamodb/scan.js.map +0 -1
- package/dist/shared/dynamodb/types.d.ts +0 -24
- package/dist/shared/dynamodb/types.d.ts.map +0 -1
- package/dist/shared/dynamodb/types.js +0 -3
- package/dist/shared/dynamodb/types.js.map +0 -1
- package/dist/shared/errors/base-error.d.ts.map +0 -1
- package/dist/shared/errors/base-error.js.map +0 -1
- package/dist/shared/errors/error-code.d.ts.map +0 -1
- package/dist/shared/errors/error-code.js.map +0 -1
- package/dist/shared/errors/errors.d.ts.map +0 -1
- package/dist/shared/errors/errors.js.map +0 -1
- package/dist/shared/errors/wrap-error.d.ts +0 -16
- package/dist/shared/errors/wrap-error.d.ts.map +0 -1
- package/dist/shared/errors/wrap-error.js +0 -30
- package/dist/shared/errors/wrap-error.js.map +0 -1
- package/dist/shared/logging/logger.d.ts.map +0 -1
- package/dist/shared/logging/logger.js.map +0 -1
- package/dist/shared/logging/redaction-walk.d.ts +0 -23
- package/dist/shared/logging/redaction-walk.d.ts.map +0 -1
- package/dist/shared/logging/redaction-walk.js +0 -92
- package/dist/shared/logging/redaction-walk.js.map +0 -1
- package/dist/shared/logging/redaction.d.ts.map +0 -1
- package/dist/shared/logging/redaction.js.map +0 -1
- package/dist/shared/logging/secret-patterns.d.ts.map +0 -1
- package/dist/shared/logging/secret-patterns.js.map +0 -1
- package/dist/shared/options.d.ts.map +0 -1
- package/dist/shared/options.js.map +0 -1
- package/dist/shared/ulid.d.ts.map +0 -1
- package/dist/shared/ulid.js.map +0 -1
- package/dist/shared/validation/primitives.d.ts.map +0 -1
- package/dist/shared/validation/primitives.js.map +0 -1
- package/dist/shared/validation/ttl.d.ts.map +0 -1
- package/dist/shared/validation/ttl.js.map +0 -1
- package/dist/store/actions/get.d.ts +0 -5
- package/dist/store/actions/get.d.ts.map +0 -1
- package/dist/store/actions/get.js +0 -35
- package/dist/store/actions/get.js.map +0 -1
- package/dist/store/actions/list-namespaces.d.ts.map +0 -1
- package/dist/store/actions/list-namespaces.js.map +0 -1
- package/dist/store/actions/put.d.ts.map +0 -1
- package/dist/store/actions/put.js.map +0 -1
- package/dist/store/actions/reconcile-vector-index.d.ts.map +0 -1
- package/dist/store/actions/reconcile-vector-index.js.map +0 -1
- package/dist/store/actions/search.d.ts.map +0 -1
- package/dist/store/actions/search.js.map +0 -1
- package/dist/store/internal/backend-search.d.ts +0 -5
- package/dist/store/internal/backend-search.d.ts.map +0 -1
- package/dist/store/internal/backend-search.js +0 -68
- package/dist/store/internal/backend-search.js.map +0 -1
- package/dist/store/internal/filter.d.ts.map +0 -1
- package/dist/store/internal/filter.js.map +0 -1
- package/dist/store/internal/index-reconcile.d.ts +0 -22
- package/dist/store/internal/index-reconcile.d.ts.map +0 -1
- package/dist/store/internal/index-reconcile.js +0 -105
- package/dist/store/internal/index-reconcile.js.map +0 -1
- package/dist/store/internal/index-sync.d.ts +0 -11
- package/dist/store/internal/index-sync.d.ts.map +0 -1
- package/dist/store/internal/index-sync.js +0 -26
- package/dist/store/internal/index-sync.js.map +0 -1
- package/dist/store/internal/item-mapper.d.ts +0 -25
- package/dist/store/internal/item-mapper.d.ts.map +0 -1
- package/dist/store/internal/item-mapper.js +0 -53
- package/dist/store/internal/item-mapper.js.map +0 -1
- package/dist/store/internal/keys.d.ts +0 -18
- package/dist/store/internal/keys.d.ts.map +0 -1
- package/dist/store/internal/keys.js +0 -42
- package/dist/store/internal/keys.js.map +0 -1
- package/dist/store/internal/namespace-match.d.ts +0 -12
- package/dist/store/internal/namespace-match.d.ts.map +0 -1
- package/dist/store/internal/namespace-match.js +0 -41
- package/dist/store/internal/namespace-match.js.map +0 -1
- package/dist/store/internal/overwrite-swap.d.ts +0 -33
- package/dist/store/internal/overwrite-swap.d.ts.map +0 -1
- package/dist/store/internal/overwrite-swap.js +0 -62
- package/dist/store/internal/overwrite-swap.js.map +0 -1
- package/dist/store/internal/persist.d.ts +0 -27
- package/dist/store/internal/persist.d.ts.map +0 -1
- package/dist/store/internal/persist.js +0 -59
- package/dist/store/internal/persist.js.map +0 -1
- package/dist/store/internal/query.d.ts +0 -6
- package/dist/store/internal/query.d.ts.map +0 -1
- package/dist/store/internal/query.js +0 -32
- package/dist/store/internal/query.js.map +0 -1
- package/dist/store/internal/ranker.d.ts +0 -13
- package/dist/store/internal/ranker.d.ts.map +0 -1
- package/dist/store/internal/ranker.js +0 -31
- package/dist/store/internal/ranker.js.map +0 -1
- package/dist/store/internal/read-existing.d.ts +0 -19
- package/dist/store/internal/read-existing.d.ts.map +0 -1
- package/dist/store/internal/read-existing.js +0 -29
- package/dist/store/internal/read-existing.js.map +0 -1
- package/dist/store/internal/score-direction.d.ts +0 -32
- package/dist/store/internal/score-direction.d.ts.map +0 -1
- package/dist/store/internal/score-direction.js +0 -39
- package/dist/store/internal/score-direction.js.map +0 -1
- package/dist/store/internal/search-filter.d.ts +0 -4
- package/dist/store/internal/search-filter.d.ts.map +0 -1
- package/dist/store/internal/search-filter.js +0 -11
- package/dist/store/internal/search-filter.js.map +0 -1
- package/dist/store/internal/semantic-search.d.ts.map +0 -1
- package/dist/store/internal/semantic-search.js.map +0 -1
- package/dist/store/internal/setup.d.ts.map +0 -1
- package/dist/store/internal/setup.js.map +0 -1
- package/dist/store/internal/validation.d.ts +0 -13
- package/dist/store/internal/validation.d.ts.map +0 -1
- package/dist/store/internal/validation.js +0 -35
- package/dist/store/internal/validation.js.map +0 -1
- package/dist/store/internal/write-verify.d.ts +0 -37
- package/dist/store/internal/write-verify.d.ts.map +0 -1
- package/dist/store/internal/write-verify.js +0 -68
- package/dist/store/internal/write-verify.js.map +0 -1
- package/dist/store/store.d.ts.map +0 -1
- package/dist/store/store.js.map +0 -1
- package/dist/store/types.d.ts.map +0 -1
- package/dist/store/types.js.map +0 -1
- package/dist/store/vector-backend.d.ts.map +0 -1
- 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
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
|
|
5
|
-
const
|
|
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
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
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,
|
|
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 {
|
|
3
|
-
import type
|
|
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
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
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
|
|
14
|
-
|
|
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
|
-
/**
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* `s3
|
|
43
|
-
*
|
|
44
|
-
*
|
|
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
|