@farukada/aws-langgraph-dynamodb-ts 1.0.0-rc.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1820 -290
- package/dist/cjs/backfill/backfill.d.ts +171 -0
- package/dist/cjs/backfill/backfill.js +177 -0
- package/dist/cjs/checkpointer/actions/delete-thread.d.ts +50 -0
- package/dist/cjs/checkpointer/actions/delete-thread.js +26 -0
- package/dist/cjs/checkpointer/actions/get-tuple.d.ts +36 -0
- package/dist/cjs/checkpointer/actions/get-tuple.js +22 -0
- package/dist/cjs/checkpointer/actions/list.d.ts +55 -0
- package/dist/cjs/checkpointer/actions/list.js +70 -0
- package/dist/cjs/checkpointer/actions/put-writes.d.ts +49 -0
- package/dist/cjs/checkpointer/actions/put-writes.js +21 -0
- package/dist/cjs/checkpointer/actions/put.d.ts +95 -0
- package/dist/cjs/checkpointer/actions/put.js +79 -0
- package/dist/cjs/checkpointer/internal/delta-history.d.ts +124 -0
- package/dist/cjs/checkpointer/internal/delta-history.js +131 -0
- package/dist/cjs/checkpointer/internal/listing.d.ts +149 -0
- package/dist/cjs/checkpointer/internal/listing.js +104 -0
- package/dist/cjs/checkpointer/internal/parse.d.ts +298 -0
- package/dist/cjs/checkpointer/internal/parse.js +184 -0
- package/dist/cjs/checkpointer/internal/pending-writes.d.ts +314 -0
- package/dist/cjs/checkpointer/internal/pending-writes.js +241 -0
- package/dist/cjs/checkpointer/internal/read.d.ts +135 -0
- package/dist/cjs/checkpointer/internal/read.js +132 -0
- package/dist/cjs/checkpointer/internal/rows.d.ts +644 -0
- package/dist/cjs/checkpointer/internal/rows.js +356 -0
- package/dist/cjs/checkpointer/internal/setup.d.ts +47 -0
- package/dist/cjs/checkpointer/internal/setup.js +25 -0
- package/dist/cjs/checkpointer/saver.d.ts +306 -0
- package/dist/cjs/checkpointer/saver.js +56 -0
- package/dist/cjs/checkpointer/types.d.ts +51 -0
- package/dist/cjs/factory/factory.d.ts +154 -0
- package/dist/cjs/factory/factory.js +137 -0
- package/dist/{factory → cjs/factory}/types.d.ts +33 -14
- package/dist/cjs/history/actions/add-messages.d.ts +51 -0
- package/dist/cjs/history/actions/add-messages.js +17 -0
- package/dist/cjs/history/actions/clear.d.ts +52 -0
- package/dist/cjs/history/actions/clear.js +29 -0
- package/dist/cjs/history/actions/get-messages.d.ts +60 -0
- package/dist/cjs/history/actions/get-messages.js +58 -0
- package/dist/cjs/history/actions/list-sessions.d.ts +55 -0
- package/dist/cjs/history/actions/list-sessions.js +67 -0
- package/dist/cjs/history/actions/reconcile-count.d.ts +49 -0
- package/dist/cjs/history/actions/reconcile-count.js +8 -0
- package/dist/cjs/history/chat-message-history.d.ts +267 -0
- package/dist/cjs/history/chat-message-history.js +61 -0
- package/dist/cjs/history/internal/append.d.ts +244 -0
- package/dist/cjs/history/internal/append.js +267 -0
- package/dist/cjs/history/internal/message-read.d.ts +84 -0
- package/dist/cjs/history/internal/message-read.js +93 -0
- package/dist/cjs/history/internal/parse.d.ts +153 -0
- package/dist/cjs/history/internal/parse.js +113 -0
- package/dist/cjs/history/internal/rows.d.ts +196 -0
- package/dist/cjs/history/internal/rows.js +96 -0
- package/dist/cjs/history/internal/session.d.ts +350 -0
- package/dist/cjs/history/internal/session.js +296 -0
- package/dist/cjs/history/internal/setup.d.ts +64 -0
- package/dist/cjs/history/internal/setup.js +60 -0
- package/dist/cjs/history/session-adapter.d.ts +112 -0
- package/dist/cjs/history/session-adapter.js +38 -0
- package/dist/cjs/history/types.d.ts +102 -0
- package/dist/cjs/index.d.ts +53 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/shared/adapter.d.ts +146 -0
- package/dist/cjs/shared/adapter.js +70 -0
- package/dist/cjs/shared/clock.d.ts +52 -0
- package/dist/cjs/shared/clock.js +14 -0
- package/dist/cjs/shared/codec/codec.d.ts +336 -0
- package/dist/cjs/shared/codec/codec.js +162 -0
- package/dist/cjs/shared/codec/compression.d.ts +66 -0
- package/dist/cjs/shared/codec/compression.js +45 -0
- package/dist/cjs/shared/codec/json-serde.d.ts +80 -0
- package/dist/cjs/shared/codec/json-serde.js +58 -0
- package/dist/{shared → cjs/shared}/codec/s3/client-types.d.ts +22 -2
- package/dist/{shared → cjs/shared}/codec/s3/client-types.js +0 -1
- package/dist/cjs/shared/codec/s3/client.d.ts +63 -0
- package/dist/cjs/shared/codec/s3/client.js +78 -0
- package/dist/cjs/shared/codec/s3/config.d.ts +260 -0
- package/dist/cjs/shared/codec/s3/config.js +92 -0
- package/dist/cjs/shared/codec/s3/lifecycle.d.ts +220 -0
- package/dist/cjs/shared/codec/s3/lifecycle.js +223 -0
- package/dist/cjs/shared/codec/s3/offloader.d.ts +428 -0
- package/dist/cjs/shared/codec/s3/offloader.js +289 -0
- package/dist/cjs/shared/concurrency.d.ts +43 -0
- package/dist/{shared → cjs/shared}/concurrency.js +10 -9
- package/dist/cjs/shared/dynamodb/abort.d.ts +47 -0
- package/dist/cjs/shared/dynamodb/abort.js +16 -0
- package/dist/cjs/shared/dynamodb/batch-write.d.ts +86 -0
- package/dist/cjs/shared/dynamodb/batch-write.js +79 -0
- package/dist/cjs/shared/dynamodb/cancellation.d.ts +124 -0
- package/dist/cjs/shared/dynamodb/cancellation.js +37 -0
- package/dist/cjs/shared/dynamodb/client.d.ts +177 -0
- package/dist/{shared → cjs/shared}/dynamodb/client.js +12 -14
- package/dist/cjs/shared/dynamodb/idempotent-write.d.ts +596 -0
- package/dist/cjs/shared/dynamodb/idempotent-write.js +173 -0
- package/dist/cjs/shared/dynamodb/paginate.d.ts +111 -0
- package/dist/cjs/shared/dynamodb/paginate.js +90 -0
- package/dist/cjs/shared/dynamodb/partition-delete.d.ts +204 -0
- package/dist/cjs/shared/dynamodb/partition-delete.js +177 -0
- package/dist/cjs/shared/dynamodb/recency-index.d.ts +243 -0
- package/dist/cjs/shared/dynamodb/recency-index.js +146 -0
- package/dist/cjs/shared/dynamodb/retry.d.ts +317 -0
- package/dist/cjs/shared/dynamodb/retry.js +193 -0
- package/dist/cjs/shared/dynamodb/row-size.d.ts +33 -0
- package/dist/cjs/shared/dynamodb/row-size.js +30 -0
- package/dist/cjs/shared/dynamodb/table-schema.d.ts +199 -0
- package/dist/cjs/shared/dynamodb/table-schema.js +52 -0
- package/dist/cjs/shared/errors/base-error.d.ts +231 -0
- package/dist/cjs/shared/errors/base-error.js +73 -0
- package/dist/cjs/shared/errors/boundary.d.ts +86 -0
- package/dist/cjs/shared/errors/boundary.js +61 -0
- package/dist/cjs/shared/errors/classify.d.ts +206 -0
- package/dist/cjs/shared/errors/classify.js +232 -0
- package/dist/cjs/shared/errors/error-code.d.ts +95 -0
- package/dist/{shared → cjs/shared}/errors/error-code.js +12 -2
- package/dist/cjs/shared/errors/errors.d.ts +233 -0
- package/dist/cjs/shared/errors/errors.js +123 -0
- package/dist/cjs/shared/logging/logger.d.ts +80 -0
- package/dist/cjs/shared/logging/logger.js +30 -0
- package/dist/cjs/shared/logging/redaction.d.ts +123 -0
- package/dist/cjs/shared/logging/redaction.js +145 -0
- package/dist/cjs/shared/logging/secret-patterns.d.ts +227 -0
- package/dist/cjs/shared/logging/secret-patterns.js +93 -0
- package/dist/cjs/shared/logging/truncate.d.ts +197 -0
- package/dist/cjs/shared/logging/truncate.js +31 -0
- package/dist/cjs/shared/options.d.ts +100 -0
- package/dist/cjs/shared/ulid.d.ts +80 -0
- package/dist/{shared → cjs/shared}/ulid.js +7 -21
- package/dist/cjs/shared/validation/collaborators.d.ts +160 -0
- package/dist/cjs/shared/validation/collaborators.js +79 -0
- package/dist/cjs/shared/validation/option-shape.d.ts +91 -0
- package/dist/cjs/shared/validation/option-shape.js +31 -0
- package/dist/cjs/shared/validation/options.d.ts +145 -0
- package/dist/cjs/shared/validation/options.js +166 -0
- package/dist/cjs/shared/validation/primitives.d.ts +292 -0
- package/dist/cjs/shared/validation/primitives.js +114 -0
- package/dist/cjs/shared/validation/ttl.d.ts +94 -0
- package/dist/cjs/shared/validation/ttl.js +52 -0
- package/dist/cjs/store/actions/list-namespaces.d.ts +79 -0
- package/dist/cjs/store/actions/list-namespaces.js +92 -0
- package/dist/cjs/store/actions/put.d.ts +43 -0
- package/dist/cjs/store/actions/put.js +49 -0
- package/dist/cjs/store/actions/reconcile-vector-index.d.ts +38 -0
- package/dist/cjs/store/actions/reconcile-vector-index.js +13 -0
- package/dist/cjs/store/actions/search.d.ts +38 -0
- package/dist/cjs/store/actions/search.js +26 -0
- package/dist/cjs/store/internal/batch-plan.d.ts +56 -0
- package/dist/cjs/store/internal/batch-plan.js +32 -0
- package/dist/cjs/store/internal/filter.d.ts +43 -0
- package/dist/cjs/store/internal/filter.js +64 -0
- package/dist/cjs/store/internal/get-item.d.ts +77 -0
- package/dist/cjs/store/internal/get-item.js +58 -0
- package/dist/cjs/store/internal/item-write.d.ts +270 -0
- package/dist/cjs/store/internal/item-write.js +181 -0
- package/dist/cjs/store/internal/parse.d.ts +230 -0
- package/dist/cjs/store/internal/parse.js +180 -0
- package/dist/cjs/store/internal/rows.d.ts +359 -0
- package/dist/cjs/store/internal/rows.js +166 -0
- package/dist/cjs/store/internal/semantic-search.d.ts +168 -0
- package/dist/{store/internal/text-path.js → cjs/store/internal/semantic-search.js} +92 -28
- package/dist/cjs/store/internal/setup.d.ts +96 -0
- package/dist/cjs/store/internal/setup.js +103 -0
- package/dist/cjs/store/internal/table-search.d.ts +100 -0
- package/dist/cjs/store/internal/table-search.js +123 -0
- package/dist/cjs/store/internal/vector-index.d.ts +258 -0
- package/dist/cjs/store/internal/vector-index.js +269 -0
- package/dist/cjs/store/store.d.ts +329 -0
- package/dist/cjs/store/store.js +97 -0
- package/dist/cjs/store/types.d.ts +111 -0
- package/dist/cjs/store/vector-backend.d.ts +104 -0
- package/dist/cjs/store/vector-backend.js +4 -0
- package/dist/esm/backfill/backfill.d.ts +171 -0
- package/dist/esm/backfill/backfill.js +170 -0
- package/dist/esm/checkpointer/actions/delete-thread.d.ts +50 -0
- package/dist/esm/checkpointer/actions/delete-thread.js +23 -0
- package/dist/esm/checkpointer/actions/get-tuple.d.ts +36 -0
- package/dist/esm/checkpointer/actions/get-tuple.js +19 -0
- package/dist/esm/checkpointer/actions/list.d.ts +55 -0
- package/dist/esm/checkpointer/actions/list.js +67 -0
- package/dist/esm/checkpointer/actions/put-writes.d.ts +49 -0
- package/dist/esm/checkpointer/actions/put-writes.js +18 -0
- package/dist/esm/checkpointer/actions/put.d.ts +95 -0
- package/dist/esm/checkpointer/actions/put.js +75 -0
- package/dist/esm/checkpointer/internal/delta-history.d.ts +124 -0
- package/dist/esm/checkpointer/internal/delta-history.js +126 -0
- package/dist/esm/checkpointer/internal/listing.d.ts +149 -0
- package/dist/esm/checkpointer/internal/listing.js +95 -0
- package/dist/esm/checkpointer/internal/parse.d.ts +298 -0
- package/dist/esm/checkpointer/internal/parse.js +169 -0
- package/dist/esm/checkpointer/internal/pending-writes.d.ts +314 -0
- package/dist/esm/checkpointer/internal/pending-writes.js +229 -0
- package/dist/esm/checkpointer/internal/read.d.ts +135 -0
- package/dist/esm/checkpointer/internal/read.js +125 -0
- package/dist/esm/checkpointer/internal/rows.d.ts +644 -0
- package/dist/esm/checkpointer/internal/rows.js +323 -0
- package/dist/esm/checkpointer/internal/setup.d.ts +47 -0
- package/dist/esm/checkpointer/internal/setup.js +21 -0
- package/dist/esm/checkpointer/saver.d.ts +306 -0
- package/dist/esm/checkpointer/saver.js +52 -0
- package/dist/esm/checkpointer/types.d.ts +51 -0
- package/dist/esm/checkpointer/types.js +1 -0
- package/dist/esm/factory/factory.d.ts +154 -0
- package/dist/esm/factory/factory.js +133 -0
- package/dist/esm/factory/types.d.ts +76 -0
- package/dist/esm/factory/types.js +1 -0
- package/dist/esm/history/actions/add-messages.d.ts +51 -0
- package/dist/esm/history/actions/add-messages.js +14 -0
- package/dist/esm/history/actions/clear.d.ts +52 -0
- package/dist/esm/history/actions/clear.js +26 -0
- package/dist/esm/history/actions/get-messages.d.ts +60 -0
- package/dist/esm/history/actions/get-messages.js +55 -0
- package/dist/esm/history/actions/list-sessions.d.ts +55 -0
- package/dist/esm/history/actions/list-sessions.js +64 -0
- package/dist/esm/history/actions/reconcile-count.d.ts +49 -0
- package/dist/esm/history/actions/reconcile-count.js +5 -0
- package/dist/esm/history/chat-message-history.d.ts +267 -0
- package/dist/esm/history/chat-message-history.js +57 -0
- package/dist/esm/history/internal/append.d.ts +244 -0
- package/dist/esm/history/internal/append.js +259 -0
- package/dist/esm/history/internal/message-read.d.ts +84 -0
- package/dist/esm/history/internal/message-read.js +89 -0
- package/dist/esm/history/internal/parse.d.ts +153 -0
- package/dist/esm/history/internal/parse.js +105 -0
- package/dist/esm/history/internal/rows.d.ts +196 -0
- package/dist/esm/history/internal/rows.js +83 -0
- package/dist/esm/history/internal/session.d.ts +350 -0
- package/dist/esm/history/internal/session.js +285 -0
- package/dist/esm/history/internal/setup.d.ts +64 -0
- package/dist/esm/history/internal/setup.js +56 -0
- package/dist/esm/history/session-adapter.d.ts +112 -0
- package/dist/esm/history/session-adapter.js +34 -0
- package/dist/esm/history/types.d.ts +102 -0
- package/dist/esm/history/types.js +1 -0
- package/dist/esm/index.d.ts +53 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/shared/adapter.d.ts +146 -0
- package/dist/esm/shared/adapter.js +65 -0
- package/dist/esm/shared/clock.d.ts +52 -0
- package/dist/esm/shared/clock.js +9 -0
- package/dist/esm/shared/codec/codec.d.ts +336 -0
- package/dist/esm/shared/codec/codec.js +150 -0
- package/dist/esm/shared/codec/compression.d.ts +66 -0
- package/dist/esm/shared/codec/compression.js +40 -0
- package/dist/esm/shared/codec/json-serde.d.ts +80 -0
- package/dist/esm/shared/codec/json-serde.js +54 -0
- package/dist/esm/shared/codec/s3/client-types.d.ts +54 -0
- package/dist/esm/shared/codec/s3/client-types.js +3 -0
- package/dist/esm/shared/codec/s3/client.d.ts +63 -0
- package/dist/esm/shared/codec/s3/client.js +40 -0
- package/dist/esm/shared/codec/s3/config.d.ts +260 -0
- package/dist/esm/shared/codec/s3/config.js +79 -0
- package/dist/esm/shared/codec/s3/lifecycle.d.ts +220 -0
- package/dist/esm/shared/codec/s3/lifecycle.js +214 -0
- package/dist/esm/shared/codec/s3/offloader.d.ts +428 -0
- package/dist/esm/shared/codec/s3/offloader.js +278 -0
- package/dist/esm/shared/concurrency.d.ts +43 -0
- package/dist/esm/shared/concurrency.js +27 -0
- package/dist/esm/shared/dynamodb/abort.d.ts +47 -0
- package/dist/esm/shared/dynamodb/abort.js +12 -0
- package/dist/esm/shared/dynamodb/batch-write.d.ts +86 -0
- package/dist/esm/shared/dynamodb/batch-write.js +74 -0
- package/dist/esm/shared/dynamodb/cancellation.d.ts +124 -0
- package/dist/esm/shared/dynamodb/cancellation.js +30 -0
- package/dist/esm/shared/dynamodb/client.d.ts +177 -0
- package/dist/esm/shared/dynamodb/client.js +35 -0
- package/dist/esm/shared/dynamodb/idempotent-write.d.ts +596 -0
- package/dist/esm/shared/dynamodb/idempotent-write.js +153 -0
- package/dist/esm/shared/dynamodb/paginate.d.ts +111 -0
- package/dist/esm/shared/dynamodb/paginate.js +84 -0
- package/dist/esm/shared/dynamodb/partition-delete.d.ts +204 -0
- package/dist/esm/shared/dynamodb/partition-delete.js +171 -0
- package/dist/esm/shared/dynamodb/recency-index.d.ts +243 -0
- package/dist/esm/shared/dynamodb/recency-index.js +136 -0
- package/dist/esm/shared/dynamodb/retry.d.ts +317 -0
- package/dist/esm/shared/dynamodb/retry.js +180 -0
- package/dist/esm/shared/dynamodb/row-size.d.ts +33 -0
- package/dist/esm/shared/dynamodb/row-size.js +26 -0
- package/dist/esm/shared/dynamodb/table-schema.d.ts +199 -0
- package/dist/esm/shared/dynamodb/table-schema.js +43 -0
- package/dist/esm/shared/errors/base-error.d.ts +231 -0
- package/dist/esm/shared/errors/base-error.js +64 -0
- package/dist/esm/shared/errors/boundary.d.ts +86 -0
- package/dist/esm/shared/errors/boundary.js +54 -0
- package/dist/esm/shared/errors/classify.d.ts +206 -0
- package/dist/esm/shared/errors/classify.js +220 -0
- package/dist/esm/shared/errors/error-code.d.ts +95 -0
- package/dist/esm/shared/errors/error-code.js +24 -0
- package/dist/esm/shared/errors/errors.d.ts +233 -0
- package/dist/esm/shared/errors/errors.js +110 -0
- package/dist/esm/shared/logging/logger.d.ts +80 -0
- package/dist/esm/shared/logging/logger.js +25 -0
- package/dist/esm/shared/logging/redaction.d.ts +123 -0
- package/dist/esm/shared/logging/redaction.js +140 -0
- package/dist/esm/shared/logging/secret-patterns.d.ts +227 -0
- package/dist/esm/shared/logging/secret-patterns.js +83 -0
- package/dist/esm/shared/logging/truncate.d.ts +197 -0
- package/dist/esm/shared/logging/truncate.js +25 -0
- package/dist/esm/shared/options.d.ts +100 -0
- package/dist/esm/shared/options.js +1 -0
- package/dist/esm/shared/ulid.d.ts +80 -0
- package/dist/esm/shared/ulid.js +77 -0
- package/dist/esm/shared/validation/collaborators.d.ts +160 -0
- package/dist/esm/shared/validation/collaborators.js +70 -0
- package/dist/esm/shared/validation/option-shape.d.ts +91 -0
- package/dist/esm/shared/validation/option-shape.js +24 -0
- package/dist/esm/shared/validation/options.d.ts +145 -0
- package/dist/esm/shared/validation/options.js +156 -0
- package/dist/esm/shared/validation/primitives.d.ts +292 -0
- package/dist/esm/shared/validation/primitives.js +100 -0
- package/dist/esm/shared/validation/ttl.d.ts +94 -0
- package/dist/esm/shared/validation/ttl.js +46 -0
- package/dist/esm/store/actions/list-namespaces.d.ts +79 -0
- package/dist/esm/store/actions/list-namespaces.js +86 -0
- package/dist/esm/store/actions/put.d.ts +43 -0
- package/dist/esm/store/actions/put.js +46 -0
- package/dist/esm/store/actions/reconcile-vector-index.d.ts +38 -0
- package/dist/esm/store/actions/reconcile-vector-index.js +10 -0
- package/dist/esm/store/actions/search.d.ts +38 -0
- package/dist/esm/store/actions/search.js +23 -0
- package/dist/esm/store/internal/batch-plan.d.ts +56 -0
- package/dist/esm/store/internal/batch-plan.js +28 -0
- package/dist/esm/store/internal/filter.d.ts +43 -0
- package/dist/esm/store/internal/filter.js +60 -0
- package/dist/esm/store/internal/get-item.d.ts +77 -0
- package/dist/esm/store/internal/get-item.js +54 -0
- package/dist/esm/store/internal/item-write.d.ts +270 -0
- package/dist/esm/store/internal/item-write.js +173 -0
- package/dist/esm/store/internal/parse.d.ts +230 -0
- package/dist/esm/store/internal/parse.js +169 -0
- package/dist/esm/store/internal/rows.d.ts +359 -0
- package/dist/esm/store/internal/rows.js +147 -0
- package/dist/esm/store/internal/semantic-search.d.ts +168 -0
- package/dist/esm/store/internal/semantic-search.js +200 -0
- package/dist/esm/store/internal/setup.d.ts +96 -0
- package/dist/esm/store/internal/setup.js +98 -0
- package/dist/esm/store/internal/table-search.d.ts +100 -0
- package/dist/esm/store/internal/table-search.js +119 -0
- package/dist/esm/store/internal/vector-index.d.ts +258 -0
- package/dist/esm/store/internal/vector-index.js +256 -0
- package/dist/esm/store/store.d.ts +329 -0
- package/dist/esm/store/store.js +93 -0
- package/dist/esm/store/types.d.ts +111 -0
- package/dist/esm/store/types.js +1 -0
- package/dist/esm/store/vector-backend.d.ts +104 -0
- package/dist/esm/store/vector-backend.js +1 -0
- package/package.json +68 -46
- package/dist/checkpointer/actions/delete-thread.d.ts +0 -10
- package/dist/checkpointer/actions/delete-thread.js +0 -38
- package/dist/checkpointer/actions/get-tuple.d.ts +0 -11
- package/dist/checkpointer/actions/get-tuple.js +0 -25
- package/dist/checkpointer/actions/list.d.ts +0 -20
- package/dist/checkpointer/actions/list.js +0 -113
- package/dist/checkpointer/actions/put-writes.d.ts +0 -15
- package/dist/checkpointer/actions/put-writes.js +0 -62
- package/dist/checkpointer/actions/put.d.ts +0 -17
- package/dist/checkpointer/actions/put.js +0 -73
- package/dist/checkpointer/internal/assemble.d.ts +0 -17
- package/dist/checkpointer/internal/assemble.js +0 -38
- package/dist/checkpointer/internal/checkpoint-write-verify.d.ts +0 -24
- package/dist/checkpointer/internal/checkpoint-write-verify.js +0 -67
- package/dist/checkpointer/internal/configurable.d.ts +0 -12
- package/dist/checkpointer/internal/configurable.js +0 -24
- package/dist/checkpointer/internal/fetch.d.ts +0 -19
- package/dist/checkpointer/internal/fetch.js +0 -88
- package/dist/checkpointer/internal/filter-match.d.ts +0 -13
- package/dist/checkpointer/internal/filter-match.js +0 -15
- package/dist/checkpointer/internal/item-reader.d.ts +0 -66
- package/dist/checkpointer/internal/item-reader.js +0 -113
- package/dist/checkpointer/internal/item-writer.d.ts +0 -35
- package/dist/checkpointer/internal/item-writer.js +0 -107
- package/dist/checkpointer/internal/keys.d.ts +0 -41
- package/dist/checkpointer/internal/keys.js +0 -117
- package/dist/checkpointer/internal/list-scope.d.ts +0 -61
- package/dist/checkpointer/internal/list-scope.js +0 -108
- package/dist/checkpointer/internal/pending-sends.d.ts +0 -13
- package/dist/checkpointer/internal/pending-sends.js +0 -29
- package/dist/checkpointer/internal/query.d.ts +0 -21
- package/dist/checkpointer/internal/query.js +0 -42
- package/dist/checkpointer/internal/regular-write.d.ts +0 -28
- package/dist/checkpointer/internal/regular-write.js +0 -66
- package/dist/checkpointer/internal/setup.d.ts +0 -33
- package/dist/checkpointer/internal/setup.js +0 -38
- package/dist/checkpointer/internal/special-write-cas.d.ts +0 -29
- package/dist/checkpointer/internal/special-write-cas.js +0 -104
- package/dist/checkpointer/internal/special-write-cleanup.d.ts +0 -23
- package/dist/checkpointer/internal/special-write-cleanup.js +0 -50
- package/dist/checkpointer/internal/special-write-verify.d.ts +0 -53
- package/dist/checkpointer/internal/special-write-verify.js +0 -80
- package/dist/checkpointer/internal/stored-channels.d.ts +0 -31
- package/dist/checkpointer/internal/stored-channels.js +0 -70
- package/dist/checkpointer/internal/validation.d.ts +0 -18
- package/dist/checkpointer/internal/validation.js +0 -40
- package/dist/checkpointer/internal/write-guard.d.ts +0 -20
- package/dist/checkpointer/internal/write-guard.js +0 -48
- package/dist/checkpointer/internal/write-index.d.ts +0 -36
- package/dist/checkpointer/internal/write-index.js +0 -41
- package/dist/checkpointer/saver.d.ts +0 -70
- package/dist/checkpointer/saver.js +0 -105
- package/dist/checkpointer/types.d.ts +0 -58
- package/dist/factory/factory.d.ts +0 -40
- package/dist/factory/factory.js +0 -87
- package/dist/history/actions/add-messages.d.ts +0 -15
- package/dist/history/actions/add-messages.js +0 -77
- package/dist/history/actions/clear.d.ts +0 -10
- package/dist/history/actions/clear.js +0 -34
- package/dist/history/actions/get-messages.d.ts +0 -17
- package/dist/history/actions/get-messages.js +0 -79
- package/dist/history/actions/list-sessions.d.ts +0 -13
- package/dist/history/actions/list-sessions.js +0 -53
- package/dist/history/actions/reconcile-count.d.ts +0 -12
- package/dist/history/actions/reconcile-count.js +0 -64
- package/dist/history/chat-message-history.d.ts +0 -73
- package/dist/history/chat-message-history.js +0 -111
- package/dist/history/internal/append-saga.d.ts +0 -25
- package/dist/history/internal/append-saga.js +0 -79
- package/dist/history/internal/compensation.d.ts +0 -25
- package/dist/history/internal/compensation.js +0 -92
- package/dist/history/internal/item-mapper.d.ts +0 -9
- package/dist/history/internal/item-mapper.js +0 -27
- package/dist/history/internal/keys.d.ts +0 -16
- package/dist/history/internal/keys.js +0 -48
- package/dist/history/internal/message-chunker.d.ts +0 -13
- package/dist/history/internal/message-chunker.js +0 -67
- package/dist/history/internal/message-transaction.d.ts +0 -25
- package/dist/history/internal/message-transaction.js +0 -61
- package/dist/history/internal/message-window.d.ts +0 -17
- package/dist/history/internal/message-window.js +0 -49
- package/dist/history/internal/query.d.ts +0 -23
- package/dist/history/internal/query.js +0 -39
- package/dist/history/internal/session-count.d.ts +0 -47
- package/dist/history/internal/session-count.js +0 -115
- package/dist/history/internal/session-title.d.ts +0 -19
- package/dist/history/internal/session-title.js +0 -43
- package/dist/history/internal/session-update.d.ts +0 -27
- package/dist/history/internal/session-update.js +0 -69
- package/dist/history/internal/setup.d.ts +0 -31
- package/dist/history/internal/setup.js +0 -43
- package/dist/history/internal/title-generator.d.ts +0 -12
- package/dist/history/internal/title-generator.js +0 -41
- package/dist/history/internal/ttl-anchor.d.ts +0 -24
- package/dist/history/internal/ttl-anchor.js +0 -38
- package/dist/history/internal/validation.d.ts +0 -25
- package/dist/history/internal/validation.js +0 -53
- package/dist/history/session-adapter.d.ts +0 -29
- package/dist/history/session-adapter.js +0 -35
- package/dist/history/types.d.ts +0 -69
- package/dist/index.d.ts +0 -29
- package/dist/index.js +0 -32
- package/dist/shared/clock.d.ts +0 -8
- package/dist/shared/clock.js +0 -16
- package/dist/shared/codec/codec.d.ts +0 -53
- package/dist/shared/codec/codec.js +0 -66
- package/dist/shared/codec/compression.d.ts +0 -24
- package/dist/shared/codec/compression.js +0 -48
- package/dist/shared/codec/descriptor-keys.d.ts +0 -12
- package/dist/shared/codec/descriptor-keys.js +0 -14
- package/dist/shared/codec/encode.d.ts +0 -13
- package/dist/shared/codec/encode.js +0 -43
- package/dist/shared/codec/json-serde.d.ts +0 -7
- package/dist/shared/codec/json-serde.js +0 -17
- package/dist/shared/codec/payload-loss.d.ts +0 -12
- package/dist/shared/codec/payload-loss.js +0 -38
- package/dist/shared/codec/s3/adapter-config.d.ts +0 -13
- package/dist/shared/codec/s3/adapter-config.js +0 -22
- package/dist/shared/codec/s3/bounded-body.d.ts +0 -14
- package/dist/shared/codec/s3/bounded-body.js +0 -47
- package/dist/shared/codec/s3/client.d.ts +0 -18
- package/dist/shared/codec/s3/client.js +0 -46
- package/dist/shared/codec/s3/config.d.ts +0 -51
- package/dist/shared/codec/s3/config.js +0 -58
- package/dist/shared/codec/s3/delete.d.ts +0 -7
- package/dist/shared/codec/s3/delete.js +0 -28
- package/dist/shared/codec/s3/key-scope.d.ts +0 -23
- package/dist/shared/codec/s3/key-scope.js +0 -44
- package/dist/shared/codec/s3/lifecycle.d.ts +0 -14
- package/dist/shared/codec/s3/lifecycle.js +0 -63
- package/dist/shared/codec/s3/offloader.d.ts +0 -44
- package/dist/shared/codec/s3/offloader.js +0 -118
- package/dist/shared/codec/s3/orphans.d.ts +0 -23
- package/dist/shared/codec/s3/orphans.js +0 -71
- package/dist/shared/codec/s3/read-write.d.ts +0 -18
- package/dist/shared/codec/s3/read-write.js +0 -51
- package/dist/shared/codec/s3/retry.d.ts +0 -5
- package/dist/shared/codec/s3/retry.js +0 -22
- package/dist/shared/concurrency.d.ts +0 -6
- package/dist/shared/constants.d.ts +0 -112
- package/dist/shared/constants.js +0 -115
- package/dist/shared/dynamodb/abort.d.ts +0 -9
- package/dist/shared/dynamodb/abort.js +0 -27
- package/dist/shared/dynamodb/backoff.d.ts +0 -15
- package/dist/shared/dynamodb/backoff.js +0 -48
- package/dist/shared/dynamodb/batch-write.d.ts +0 -22
- package/dist/shared/dynamodb/batch-write.js +0 -53
- package/dist/shared/dynamodb/cancellation.d.ts +0 -6
- package/dist/shared/dynamodb/cancellation.js +0 -7
- package/dist/shared/dynamodb/client.d.ts +0 -28
- package/dist/shared/dynamodb/conditional-put.d.ts +0 -67
- package/dist/shared/dynamodb/conditional-put.js +0 -76
- package/dist/shared/dynamodb/drain-unprocessed.d.ts +0 -21
- package/dist/shared/dynamodb/drain-unprocessed.js +0 -43
- package/dist/shared/dynamodb/expiry.d.ts +0 -16
- package/dist/shared/dynamodb/expiry.js +0 -29
- package/dist/shared/dynamodb/paginate-core.d.ts +0 -24
- package/dist/shared/dynamodb/paginate-core.js +0 -82
- package/dist/shared/dynamodb/paginate.d.ts +0 -14
- package/dist/shared/dynamodb/paginate.js +0 -19
- package/dist/shared/dynamodb/partition-delete.d.ts +0 -39
- package/dist/shared/dynamodb/partition-delete.js +0 -71
- package/dist/shared/dynamodb/retry-classifier.d.ts +0 -17
- package/dist/shared/dynamodb/retry-classifier.js +0 -118
- package/dist/shared/dynamodb/retry-policy.d.ts +0 -26
- package/dist/shared/dynamodb/retry-policy.js +0 -22
- package/dist/shared/dynamodb/retry.d.ts +0 -31
- package/dist/shared/dynamodb/retry.js +0 -57
- package/dist/shared/dynamodb/scan.d.ts +0 -14
- package/dist/shared/dynamodb/scan.js +0 -19
- package/dist/shared/dynamodb/types.d.ts +0 -23
- package/dist/shared/errors/base-error.d.ts +0 -30
- package/dist/shared/errors/base-error.js +0 -27
- package/dist/shared/errors/boundary.d.ts +0 -18
- package/dist/shared/errors/boundary.js +0 -46
- package/dist/shared/errors/error-code.d.ts +0 -13
- package/dist/shared/errors/errors.d.ts +0 -68
- package/dist/shared/errors/errors.js +0 -114
- package/dist/shared/errors/upstream-error.d.ts +0 -16
- package/dist/shared/errors/upstream-error.js +0 -27
- package/dist/shared/errors/wrap-error.d.ts +0 -7
- package/dist/shared/errors/wrap-error.js +0 -15
- package/dist/shared/logging/logger.d.ts +0 -18
- package/dist/shared/logging/logger.js +0 -15
- package/dist/shared/logging/redaction-walk.d.ts +0 -23
- package/dist/shared/logging/redaction-walk.js +0 -112
- package/dist/shared/logging/redaction.d.ts +0 -39
- package/dist/shared/logging/redaction.js +0 -75
- package/dist/shared/logging/secret-patterns.d.ts +0 -92
- package/dist/shared/logging/secret-patterns.js +0 -133
- package/dist/shared/options.d.ts +0 -37
- package/dist/shared/ulid.d.ts +0 -23
- package/dist/shared/validation/options.d.ts +0 -8
- package/dist/shared/validation/options.js +0 -90
- package/dist/shared/validation/primitives.d.ts +0 -29
- package/dist/shared/validation/primitives.js +0 -82
- package/dist/shared/validation/ttl.d.ts +0 -28
- package/dist/shared/validation/ttl.js +0 -52
- package/dist/store/actions/get.d.ts +0 -13
- package/dist/store/actions/get.js +0 -73
- package/dist/store/actions/list-namespaces.d.ts +0 -8
- package/dist/store/actions/list-namespaces.js +0 -59
- package/dist/store/actions/put.d.ts +0 -10
- package/dist/store/actions/put.js +0 -96
- package/dist/store/actions/reconcile-vector-index.d.ts +0 -18
- package/dist/store/actions/reconcile-vector-index.js +0 -26
- package/dist/store/actions/search.d.ts +0 -9
- package/dist/store/actions/search.js +0 -34
- package/dist/store/internal/backend-search.d.ts +0 -4
- package/dist/store/internal/backend-search.js +0 -74
- package/dist/store/internal/batch-plan.d.ts +0 -11
- package/dist/store/internal/batch-plan.js +0 -52
- package/dist/store/internal/candidates.d.ts +0 -23
- package/dist/store/internal/candidates.js +0 -94
- package/dist/store/internal/filter.d.ts +0 -9
- package/dist/store/internal/filter.js +0 -85
- package/dist/store/internal/index-reconcile.d.ts +0 -21
- package/dist/store/internal/index-reconcile.js +0 -118
- package/dist/store/internal/index-sync.d.ts +0 -10
- package/dist/store/internal/index-sync.js +0 -25
- package/dist/store/internal/item-mapper.d.ts +0 -27
- package/dist/store/internal/item-mapper.js +0 -61
- package/dist/store/internal/keys.d.ts +0 -17
- package/dist/store/internal/keys.js +0 -41
- package/dist/store/internal/namespace-match.d.ts +0 -11
- package/dist/store/internal/namespace-match.js +0 -40
- package/dist/store/internal/option-validation.d.ts +0 -13
- package/dist/store/internal/option-validation.js +0 -77
- package/dist/store/internal/overwrite-swap.d.ts +0 -32
- package/dist/store/internal/overwrite-swap.js +0 -68
- package/dist/store/internal/persist.d.ts +0 -28
- package/dist/store/internal/persist.js +0 -64
- package/dist/store/internal/query.d.ts +0 -11
- package/dist/store/internal/query.js +0 -48
- package/dist/store/internal/ranker.d.ts +0 -18
- package/dist/store/internal/ranker.js +0 -39
- package/dist/store/internal/read-existing.d.ts +0 -23
- package/dist/store/internal/read-existing.js +0 -41
- package/dist/store/internal/score-direction.d.ts +0 -31
- package/dist/store/internal/score-direction.js +0 -38
- package/dist/store/internal/search-filter.d.ts +0 -3
- package/dist/store/internal/search-filter.js +0 -10
- package/dist/store/internal/semantic-search.d.ts +0 -34
- package/dist/store/internal/semantic-search.js +0 -87
- package/dist/store/internal/setup.d.ts +0 -36
- package/dist/store/internal/setup.js +0 -40
- package/dist/store/internal/text-path.d.ts +0 -17
- package/dist/store/internal/validation.d.ts +0 -18
- package/dist/store/internal/validation.js +0 -51
- package/dist/store/internal/write-verify.d.ts +0 -42
- package/dist/store/internal/write-verify.js +0 -71
- package/dist/store/store.d.ts +0 -61
- package/dist/store/store.js +0 -107
- package/dist/store/types.d.ts +0 -50
- package/dist/store/types.js +0 -2
- package/dist/store/vector-backend.d.ts +0 -43
- package/dist/store/vector-backend.js +0 -2
- /package/dist/{checkpointer → cjs/checkpointer}/types.js +0 -0
- /package/dist/{factory → cjs/factory}/types.js +0 -0
- /package/dist/{history → cjs/history}/types.js +0 -0
- /package/dist/{shared → cjs/shared}/options.js +0 -0
- /package/dist/{shared/dynamodb → cjs/store}/types.js +0 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseSessionId = parseSessionId;
|
|
4
|
+
exports.parseStoredMessages = parseStoredMessages;
|
|
5
|
+
exports.parseMessages = parseMessages;
|
|
6
|
+
exports.parseMessageWindow = parseMessageWindow;
|
|
7
|
+
exports.parseGetMessagesRequest = parseGetMessagesRequest;
|
|
8
|
+
exports.parseListSessionsRequest = parseListSessionsRequest;
|
|
9
|
+
const messages_1 = require("@langchain/core/messages");
|
|
10
|
+
const table_schema_js_1 = require("../../shared/dynamodb/table-schema.js");
|
|
11
|
+
const errors_js_1 = require("../../shared/errors/errors.js");
|
|
12
|
+
const secret_patterns_js_1 = require("../../shared/logging/secret-patterns.js");
|
|
13
|
+
const truncate_js_1 = require("../../shared/logging/truncate.js");
|
|
14
|
+
const ulid_js_1 = require("../../shared/ulid.js");
|
|
15
|
+
const collaborators_js_1 = require("../../shared/validation/collaborators.js");
|
|
16
|
+
const option_shape_js_1 = require("../../shared/validation/option-shape.js");
|
|
17
|
+
const primitives_js_1 = require("../../shared/validation/primitives.js");
|
|
18
|
+
const setup_js_1 = require("./setup.js");
|
|
19
|
+
function parseSessionId(value) {
|
|
20
|
+
return (0, primitives_js_1.parseIdentifier)(value, table_schema_js_1.KEY_SEPARATOR, 'sessionId', table_schema_js_1.MAX_PARTITION_ID_BYTES);
|
|
21
|
+
}
|
|
22
|
+
function toStoredMessages(messages) {
|
|
23
|
+
const stored = [];
|
|
24
|
+
for (let index = 0; index < messages.length; index += 1) {
|
|
25
|
+
try {
|
|
26
|
+
stored.push((0, messages_1.mapChatMessagesToStoredMessages)([messages[index]])[0]);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
throw (0, errors_js_1.validationError)(`messages[${index}] is not a LangChain message: ` + (0, secret_patterns_js_1.redactedMessage)(error), 'messages');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return stored;
|
|
33
|
+
}
|
|
34
|
+
function parseStoredMessages(stored) {
|
|
35
|
+
for (let index = 0; index < stored.length; index += 1) {
|
|
36
|
+
const message = stored[index];
|
|
37
|
+
if (message === undefined) {
|
|
38
|
+
throw (0, errors_js_1.validationError)(`messages[${index}] is missing`, 'messages');
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
(0, messages_1.mapStoredMessagesToChatMessages)([message]);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
throw (0, errors_js_1.validationError)(`messages[${index}] of type "${(0, truncate_js_1.truncateForLog)(message.type)}" cannot be stored: ` +
|
|
45
|
+
(0, secret_patterns_js_1.redactedMessage)(error), 'messages');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return stored;
|
|
49
|
+
}
|
|
50
|
+
function parseMessages(messages) {
|
|
51
|
+
if (!Array.isArray(messages)) {
|
|
52
|
+
throw (0, errors_js_1.validationError)('messages must be an array', 'messages');
|
|
53
|
+
}
|
|
54
|
+
return parseStoredMessages(toStoredMessages(messages));
|
|
55
|
+
}
|
|
56
|
+
function windowBound(before) {
|
|
57
|
+
const hasGetTime = before !== null && typeof before.getTime === 'function';
|
|
58
|
+
const time = hasGetTime ? before.getTime() : Number.NaN;
|
|
59
|
+
if (!Number.isFinite(time))
|
|
60
|
+
throw (0, errors_js_1.validationError)('before must be a valid Date', 'before');
|
|
61
|
+
if (time < 0 || time >= ulid_js_1.ULID_TIME_RANGE_MS) {
|
|
62
|
+
throw (0, errors_js_1.validationError)('before must be a Date from the epoch onwards and before the year 37648: the bound is ' +
|
|
63
|
+
'the message id of that instant, and a message id encodes its millisecond in ten ' +
|
|
64
|
+
'base-32 characters, which hold no instant outside that range', 'before');
|
|
65
|
+
}
|
|
66
|
+
return new Date(time);
|
|
67
|
+
}
|
|
68
|
+
function parseMessageWindow(window) {
|
|
69
|
+
const parsed = {};
|
|
70
|
+
if (window.limit !== undefined)
|
|
71
|
+
parsed.limit = (0, primitives_js_1.parseLimit)(window.limit, 1);
|
|
72
|
+
if (window.before !== undefined)
|
|
73
|
+
parsed.before = windowBound(window.before);
|
|
74
|
+
return parsed;
|
|
75
|
+
}
|
|
76
|
+
function parseGetMessagesRequest(sessionId, options) {
|
|
77
|
+
(0, option_shape_js_1.assertShape)(options, setup_js_1.GET_MESSAGES_KEYS, 'options');
|
|
78
|
+
(0, collaborators_js_1.assertSignalLike)(options.signal);
|
|
79
|
+
const parsedSessionId = parseSessionId(sessionId);
|
|
80
|
+
return {
|
|
81
|
+
sessionId: parsedSessionId,
|
|
82
|
+
window: parseMessageWindow(options),
|
|
83
|
+
signal: options.signal,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function scanCap(value, field) {
|
|
87
|
+
if (value === undefined || value === Infinity)
|
|
88
|
+
return value;
|
|
89
|
+
return (0, primitives_js_1.parseInteger)(value, field, { min: 1 });
|
|
90
|
+
}
|
|
91
|
+
function pageCursor(cursor, indexName) {
|
|
92
|
+
if (cursor === undefined)
|
|
93
|
+
return undefined;
|
|
94
|
+
if (indexName === undefined) {
|
|
95
|
+
throw (0, errors_js_1.validationError)('paging by cursor needs a configured `indexName`: without the recency index a listing is ' +
|
|
96
|
+
'one table scan, which has no position to resume from', 'cursor');
|
|
97
|
+
}
|
|
98
|
+
return (0, primitives_js_1.parseString)(cursor, 'cursor');
|
|
99
|
+
}
|
|
100
|
+
function parseListSessionsRequest(options, indexName) {
|
|
101
|
+
(0, option_shape_js_1.assertShape)(options, setup_js_1.LIST_SESSIONS_KEYS, 'options');
|
|
102
|
+
(0, collaborators_js_1.assertSignalLike)(options.signal);
|
|
103
|
+
const limit = options.limit === undefined ? undefined : (0, primitives_js_1.parseLimit)(options.limit, 0);
|
|
104
|
+
const maxItems = scanCap(options.maxItems, 'maxItems');
|
|
105
|
+
const maxIterations = scanCap(options.maxIterations, 'maxIterations');
|
|
106
|
+
return {
|
|
107
|
+
limit,
|
|
108
|
+
maxItems,
|
|
109
|
+
maxIterations,
|
|
110
|
+
cursor: pageCursor(options.cursor, indexName),
|
|
111
|
+
signal: options.signal,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hides the history's key layout and how a message becomes a row and back.
|
|
3
|
+
*
|
|
4
|
+
* A session is one partition: a SESSION row with a fixed sort key, and one
|
|
5
|
+
* message row per message, sorted by its ULID so a range query reads a window
|
|
6
|
+
* in order. How those keys are composed, how a session's rows are queried, and
|
|
7
|
+
* which rows a read admits as this adapter's messages are decided here. What
|
|
8
|
+
* the SESSION row carries is `session.ts`'s decision; where it lives is this
|
|
9
|
+
* module's.
|
|
10
|
+
*/
|
|
11
|
+
import type { QueryCommandInput } from '@aws-sdk/lib-dynamodb';
|
|
12
|
+
import type { StoredMessage } from '@langchain/core/messages';
|
|
13
|
+
import { type PayloadDescriptor } from '../../shared/codec/codec.js';
|
|
14
|
+
import type { AttributeMap } from '../../shared/dynamodb/client.js';
|
|
15
|
+
import { type RowKey } from '../../shared/dynamodb/table-schema.js';
|
|
16
|
+
import type { SessionId } from './parse.js';
|
|
17
|
+
import type { HistoryContext } from './setup.js';
|
|
18
|
+
/** Fixed sort key for the per-session metadata item. */
|
|
19
|
+
export declare const SESSION_SORT_KEY = "HISTORY#SESSION";
|
|
20
|
+
/**
|
|
21
|
+
* The tag every chat-history partition key starts with.
|
|
22
|
+
*
|
|
23
|
+
* Accepts: nothing — the tag is fixed, and the function exists so no caller
|
|
24
|
+
* composes it by hand.
|
|
25
|
+
*
|
|
26
|
+
* Returns: the tag, for a table-wide `begins_with` over this adapter's rows.
|
|
27
|
+
*
|
|
28
|
+
* Throws: nothing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function historyPartitionPrefix(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Partition key for a chat session: the adapter tag plus the session id.
|
|
33
|
+
*
|
|
34
|
+
* Accepts: `sessionId` — normally validated, so it cannot contain the
|
|
35
|
+
* separator and the key is unambiguous.
|
|
36
|
+
*
|
|
37
|
+
* Returns: the partition key. A whole session lives in one partition, which is
|
|
38
|
+
* what makes a session read one Query and a session delete one partition walk.
|
|
39
|
+
*
|
|
40
|
+
* Throws: nothing.
|
|
41
|
+
*/
|
|
42
|
+
export declare function sessionPartition(sessionId: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* The key of a session's SESSION row.
|
|
45
|
+
*
|
|
46
|
+
* Accepts: `sessionId` — the session's id, parsed, or read off the row.
|
|
47
|
+
*
|
|
48
|
+
* Returns: the row's partition and its fixed sort key.
|
|
49
|
+
*
|
|
50
|
+
* Throws: nothing.
|
|
51
|
+
*/
|
|
52
|
+
export declare function sessionRowKey(sessionId: string): RowKey;
|
|
53
|
+
/**
|
|
54
|
+
* Sort key for a single message item.
|
|
55
|
+
*
|
|
56
|
+
* Accepts: `ulid` — a monotonic ULID, or the time-prefix of one when the caller
|
|
57
|
+
* is building a range bound rather than a key.
|
|
58
|
+
*
|
|
59
|
+
* Returns: the sort key. ULIDs sort lexicographically in time order, so the
|
|
60
|
+
* sort key *is* the chronological order; nothing re-sorts messages on read.
|
|
61
|
+
*
|
|
62
|
+
* Throws: nothing.
|
|
63
|
+
*/
|
|
64
|
+
export declare function messageSortKey(ulid: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* Whether `sortKey` is one this adapter writes.
|
|
67
|
+
*
|
|
68
|
+
* Accepts: any sort key read from the session's partition.
|
|
69
|
+
*
|
|
70
|
+
* Returns: whether this adapter owns the row. A partition query carries no
|
|
71
|
+
* sort-key condition, so a partition-wide delete uses this to leave a row it
|
|
72
|
+
* does not own in place rather than deleting the whole partition blindly.
|
|
73
|
+
*
|
|
74
|
+
* Throws: nothing.
|
|
75
|
+
*/
|
|
76
|
+
export declare function isHistorySortKey(sortKey: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* `begins_with` prefix selecting every message item in a session.
|
|
79
|
+
*
|
|
80
|
+
* Accepts: nothing — the prefix is the same for every session, because the
|
|
81
|
+
* session is already the partition.
|
|
82
|
+
*
|
|
83
|
+
* Returns: the prefix, which excludes the SESSION metadata row: that row shares
|
|
84
|
+
* the partition but is not a message.
|
|
85
|
+
*
|
|
86
|
+
* Throws: nothing.
|
|
87
|
+
*/
|
|
88
|
+
export declare function messageSortKeyPrefix(): string;
|
|
89
|
+
/** Options for {@link sessionRowsQuery}. */
|
|
90
|
+
export interface SessionRowsQueryOptions {
|
|
91
|
+
consistent?: boolean;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Query input selecting every row in a session's partition.
|
|
95
|
+
*
|
|
96
|
+
* Accepts: `options.consistent` — for a read whose answer a write depends on.
|
|
97
|
+
*
|
|
98
|
+
* Returns: the Query input, with no sort-key condition: it selects the
|
|
99
|
+
* messages, the SESSION metadata row, and any row another adapter left in this
|
|
100
|
+
* partition — which is why every caller filters with `isHistorySortKey`.
|
|
101
|
+
*
|
|
102
|
+
* Throws: nothing.
|
|
103
|
+
*/
|
|
104
|
+
export declare function sessionRowsQuery(tableName: string, sessionId: SessionId, options?: SessionRowsQueryOptions): QueryCommandInput;
|
|
105
|
+
/** Options for {@link messageQuery}. */
|
|
106
|
+
export interface MessageQueryOptions extends SessionRowsQueryOptions {
|
|
107
|
+
/** Walk the messages newest-first; the caller restores chronological order. */
|
|
108
|
+
descending?: boolean;
|
|
109
|
+
/** Cap the rows DynamoDB evaluates per page. */
|
|
110
|
+
limit?: number;
|
|
111
|
+
/**
|
|
112
|
+
* Exclusive upper sort-key bound. Expressed as `BETWEEN prefix AND bound`
|
|
113
|
+
* because a key condition allows one sort-key operator: the bound is the
|
|
114
|
+
* message prefix plus the ULID time characters of an instant, so every
|
|
115
|
+
* real message key from that millisecond onwards sorts strictly after it.
|
|
116
|
+
*/
|
|
117
|
+
beforeSortKey?: string;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Query input selecting a session's message items.
|
|
121
|
+
*
|
|
122
|
+
* Accepts: `options.descending` — newest-first, which is how a tail window is
|
|
123
|
+
* read. `options.limit` — the rows DynamoDB evaluates per page, not a total.
|
|
124
|
+
* `options.beforeSortKey` — an upper bound, expressed as `BETWEEN prefix AND
|
|
125
|
+
* bound` because a key condition allows one sort-key operator.
|
|
126
|
+
*
|
|
127
|
+
* Returns: the Query input, selecting messages only — the SESSION row does not
|
|
128
|
+
* carry the message prefix.
|
|
129
|
+
*
|
|
130
|
+
* Throws: nothing.
|
|
131
|
+
*/
|
|
132
|
+
export declare function messageQuery(tableName: string, sessionId: SessionId, options?: MessageQueryOptions): QueryCommandInput;
|
|
133
|
+
/** A single stored chat message row (one per message, ordered by its ULID). */
|
|
134
|
+
export interface MessageRow {
|
|
135
|
+
PK: string;
|
|
136
|
+
SK: string;
|
|
137
|
+
/** Row format version; absent on rows written before it existed (see `table-schema.ts`). */
|
|
138
|
+
v?: number;
|
|
139
|
+
sessionId: string;
|
|
140
|
+
message: PayloadDescriptor;
|
|
141
|
+
ttl?: number;
|
|
142
|
+
}
|
|
143
|
+
/** One message as the row it becomes. */
|
|
144
|
+
export interface MessageRowSource {
|
|
145
|
+
readonly sessionId: SessionId;
|
|
146
|
+
/** The message's own ULID: its sort key and the id its offloaded object is written under. */
|
|
147
|
+
readonly messageId: string;
|
|
148
|
+
readonly message: StoredMessage;
|
|
149
|
+
/** When the row expires; absent when the adapter has no ttl. */
|
|
150
|
+
readonly ttlTimestamp?: number;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Encode a single stored message into its DynamoDB row.
|
|
154
|
+
*
|
|
155
|
+
* Accepts: `source.sessionId` — the session the message belongs to.
|
|
156
|
+
* `source.messageId` — the message's own id, which orders it and names its
|
|
157
|
+
* offloaded object; the caller allocates one per message from a monotonic
|
|
158
|
+
* factory. `source.message` — the message in its stored form.
|
|
159
|
+
* `source.ttlTimestamp` — the uniform whole-conversation expiry every
|
|
160
|
+
* message in the session shares, so a conversation expires as one thing rather
|
|
161
|
+
* than losing its oldest turns first. `signal` — cancels the upload an
|
|
162
|
+
* offloaded message costs.
|
|
163
|
+
*
|
|
164
|
+
* Returns: the row, keyed by the session partition and a
|
|
165
|
+
* `HISTORY#MSG#<messageId>` sort key, its payload inline or offloaded to
|
|
166
|
+
* `<keyPrefix><sessionId, base64url>/<messageId>.bin`.
|
|
167
|
+
*
|
|
168
|
+
* Throws: `VALIDATION` naming `value` for a message the serializer cannot
|
|
169
|
+
* represent, or `payload` for one too large to store inline without `s3`,
|
|
170
|
+
* or, once offloaded, larger than `s3.maxDownloadBytes`; `S3_OFFLOAD_FAILED`
|
|
171
|
+
* when an offloaded payload cannot be uploaded. Encoding precedes the
|
|
172
|
+
* transaction, so a message that cannot be stored never half-writes a turn.
|
|
173
|
+
*/
|
|
174
|
+
export declare function buildMessageRow(context: HistoryContext, source: MessageRowSource, signal?: AbortSignal): Promise<MessageRow>;
|
|
175
|
+
/**
|
|
176
|
+
* Narrow a raw row to a {@link MessageRow}.
|
|
177
|
+
*
|
|
178
|
+
* Accepts: `raw` — any row read from a session's partition under the message
|
|
179
|
+
* sort-key prefix, which on a shared table another writer can produce too.
|
|
180
|
+
*
|
|
181
|
+
* Returns: the item, or undefined for a row that merely shares the prefix —
|
|
182
|
+
* one carrying no `sessionId`, no `message` descriptor, or a `sessionId` that
|
|
183
|
+
* disagrees with the partition it was found in. The test is on the attributes
|
|
184
|
+
* a message must have, not on a cast: this is the one boundary where a row may
|
|
185
|
+
* not have been written by this adapter, so the key it was found at is not
|
|
186
|
+
* trusted on its own. A `message` of `null` is refused here, as
|
|
187
|
+
* `parseMetaRow` refuses a `metadata` of `null`.
|
|
188
|
+
*
|
|
189
|
+
* Throws: nothing; a row a newer release wrote is the caller's to refuse,
|
|
190
|
+
* before the shape is judged against attribute types that release may no
|
|
191
|
+
* longer use.
|
|
192
|
+
*
|
|
193
|
+
* Guarantees: a row's attributes are bound to the partition it lives in, so a
|
|
194
|
+
* row planted under one session cannot claim to belong to another.
|
|
195
|
+
*/
|
|
196
|
+
export declare function parseMessageRow(raw: AttributeMap): MessageRow | undefined;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SESSION_SORT_KEY = void 0;
|
|
4
|
+
exports.historyPartitionPrefix = historyPartitionPrefix;
|
|
5
|
+
exports.sessionPartition = sessionPartition;
|
|
6
|
+
exports.sessionRowKey = sessionRowKey;
|
|
7
|
+
exports.messageSortKey = messageSortKey;
|
|
8
|
+
exports.isHistorySortKey = isHistorySortKey;
|
|
9
|
+
exports.messageSortKeyPrefix = messageSortKeyPrefix;
|
|
10
|
+
exports.sessionRowsQuery = sessionRowsQuery;
|
|
11
|
+
exports.messageQuery = messageQuery;
|
|
12
|
+
exports.buildMessageRow = buildMessageRow;
|
|
13
|
+
exports.parseMessageRow = parseMessageRow;
|
|
14
|
+
const codec_js_1 = require("../../shared/codec/codec.js");
|
|
15
|
+
const table_schema_js_1 = require("../../shared/dynamodb/table-schema.js");
|
|
16
|
+
const ADAPTER_PREFIX = `HISTORY${table_schema_js_1.KEY_SEPARATOR}`;
|
|
17
|
+
exports.SESSION_SORT_KEY = `${ADAPTER_PREFIX}SESSION`;
|
|
18
|
+
const MESSAGE_PREFIX = `${ADAPTER_PREFIX}MSG${table_schema_js_1.KEY_SEPARATOR}`;
|
|
19
|
+
const ADAPTER_PARTITION_PREFIX = `${table_schema_js_1.ADAPTER_TAGS.history}${table_schema_js_1.KEY_SEPARATOR}`;
|
|
20
|
+
function historyPartitionPrefix() {
|
|
21
|
+
return ADAPTER_PARTITION_PREFIX;
|
|
22
|
+
}
|
|
23
|
+
function sessionPartition(sessionId) {
|
|
24
|
+
return `${ADAPTER_PARTITION_PREFIX}${sessionId}`;
|
|
25
|
+
}
|
|
26
|
+
function sessionRowKey(sessionId) {
|
|
27
|
+
return { PK: sessionPartition(sessionId), SK: exports.SESSION_SORT_KEY };
|
|
28
|
+
}
|
|
29
|
+
function messageSortKey(ulid) {
|
|
30
|
+
return `${MESSAGE_PREFIX}${ulid}`;
|
|
31
|
+
}
|
|
32
|
+
function isHistorySortKey(sortKey) {
|
|
33
|
+
return sortKey.startsWith(ADAPTER_PREFIX);
|
|
34
|
+
}
|
|
35
|
+
function messageSortKeyPrefix() {
|
|
36
|
+
return MESSAGE_PREFIX;
|
|
37
|
+
}
|
|
38
|
+
function sessionRowsQuery(tableName, sessionId, options = {}) {
|
|
39
|
+
const params = {
|
|
40
|
+
TableName: tableName,
|
|
41
|
+
KeyConditionExpression: '#pk = :pk',
|
|
42
|
+
ExpressionAttributeNames: { '#pk': table_schema_js_1.PARTITION_KEY_ATTRIBUTE },
|
|
43
|
+
ExpressionAttributeValues: { ':pk': sessionPartition(sessionId) },
|
|
44
|
+
};
|
|
45
|
+
if (options.consistent)
|
|
46
|
+
params.ConsistentRead = true;
|
|
47
|
+
return params;
|
|
48
|
+
}
|
|
49
|
+
function messageQuery(tableName, sessionId, options = {}) {
|
|
50
|
+
const params = {
|
|
51
|
+
TableName: tableName,
|
|
52
|
+
KeyConditionExpression: '#pk = :pk AND begins_with(#sk, :skp)',
|
|
53
|
+
ExpressionAttributeNames: { '#pk': table_schema_js_1.PARTITION_KEY_ATTRIBUTE, '#sk': table_schema_js_1.SORT_KEY_ATTRIBUTE },
|
|
54
|
+
ExpressionAttributeValues: {
|
|
55
|
+
':pk': sessionPartition(sessionId),
|
|
56
|
+
':skp': messageSortKeyPrefix(),
|
|
57
|
+
},
|
|
58
|
+
ScanIndexForward: !options.descending,
|
|
59
|
+
};
|
|
60
|
+
if (options.beforeSortKey !== undefined) {
|
|
61
|
+
params.KeyConditionExpression = '#pk = :pk AND #sk BETWEEN :skp AND :before';
|
|
62
|
+
params.ExpressionAttributeValues[':before'] = options.beforeSortKey;
|
|
63
|
+
}
|
|
64
|
+
if (options.limit !== undefined)
|
|
65
|
+
params.Limit = options.limit;
|
|
66
|
+
if (options.consistent)
|
|
67
|
+
params.ConsistentRead = true;
|
|
68
|
+
return params;
|
|
69
|
+
}
|
|
70
|
+
async function buildMessageRow(context, source, signal) {
|
|
71
|
+
const { sessionId, messageId, message, ttlTimestamp } = source;
|
|
72
|
+
const pk = sessionPartition(sessionId);
|
|
73
|
+
const sk = messageSortKey(messageId);
|
|
74
|
+
const descriptor = await (0, codec_js_1.encodePayload)(message, (0, codec_js_1.codecDepsOf)(context, signal), {
|
|
75
|
+
keyParts: [sessionId],
|
|
76
|
+
objectId: messageId,
|
|
77
|
+
row: { pk, sk },
|
|
78
|
+
});
|
|
79
|
+
const item = {
|
|
80
|
+
PK: pk,
|
|
81
|
+
SK: sk,
|
|
82
|
+
v: table_schema_js_1.ROW_FORMAT_VERSION,
|
|
83
|
+
sessionId,
|
|
84
|
+
message: descriptor,
|
|
85
|
+
};
|
|
86
|
+
if (ttlTimestamp !== undefined)
|
|
87
|
+
item.ttl = ttlTimestamp;
|
|
88
|
+
return item;
|
|
89
|
+
}
|
|
90
|
+
function parseMessageRow(raw) {
|
|
91
|
+
const shaped = typeof raw.sessionId === 'string' && typeof raw.message === 'object' && raw.message !== null;
|
|
92
|
+
if (!shaped)
|
|
93
|
+
return undefined;
|
|
94
|
+
const item = raw;
|
|
95
|
+
return item.PK === sessionPartition(item.sessionId) ? item : undefined;
|
|
96
|
+
}
|