@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
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { QueryCommandInput, ScanCommandInput } from '@aws-sdk/lib-dynamodb';
|
|
2
|
-
/** Query input for a scoped prefix (PK = prefix[0], optional SK begins_with). */
|
|
3
|
-
export declare function scopedQuery(tableName: string, prefix: string[]): QueryCommandInput;
|
|
4
|
-
/** Scan input for the rootless case, filtered to store items only. */
|
|
5
|
-
export declare function storeScan(tableName: string): ScanCommandInput;
|
|
6
|
-
/**
|
|
7
|
-
* Restrict a Query/Scan to the attributes `narrowStoreRecord` needs, leaving the
|
|
8
|
-
* payload behind: a namespace listing never reads a value. RCU is billed on
|
|
9
|
-
* the stored size regardless, so the saving is transfer and unmarshalling.
|
|
10
|
-
*/
|
|
11
|
-
export declare function projectKeys<T extends QueryCommandInput | ScanCommandInput>(params: T): T;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.scopedQuery = scopedQuery;
|
|
4
|
-
exports.storeScan = storeScan;
|
|
5
|
-
exports.projectKeys = projectKeys;
|
|
6
|
-
const keys_1 = require("./keys");
|
|
7
|
-
/** Query input for a scoped prefix (PK = prefix[0], optional SK begins_with). */
|
|
8
|
-
function scopedQuery(tableName, prefix) {
|
|
9
|
-
const skPrefix = (0, keys_1.sortKeyPrefix)(prefix);
|
|
10
|
-
if (skPrefix.length === 0) {
|
|
11
|
-
return {
|
|
12
|
-
TableName: tableName,
|
|
13
|
-
KeyConditionExpression: '#pk = :pk',
|
|
14
|
-
ExpressionAttributeNames: { '#pk': 'PK' },
|
|
15
|
-
ExpressionAttributeValues: { ':pk': (0, keys_1.partitionKey)(prefix) },
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
return {
|
|
19
|
-
TableName: tableName,
|
|
20
|
-
KeyConditionExpression: '#pk = :pk AND begins_with(#sk, :skp)',
|
|
21
|
-
ExpressionAttributeNames: { '#pk': 'PK', '#sk': 'SK' },
|
|
22
|
-
ExpressionAttributeValues: { ':pk': (0, keys_1.partitionKey)(prefix), ':skp': skPrefix },
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/** Scan input for the rootless case, filtered to store items only. */
|
|
26
|
-
function storeScan(tableName) {
|
|
27
|
-
return {
|
|
28
|
-
TableName: tableName,
|
|
29
|
-
FilterExpression: 'attribute_exists(#ns)',
|
|
30
|
-
ExpressionAttributeNames: { '#ns': 'namespace' },
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Restrict a Query/Scan to the attributes `narrowStoreRecord` needs, leaving the
|
|
35
|
-
* payload behind: a namespace listing never reads a value. RCU is billed on
|
|
36
|
-
* the stored size regardless, so the saving is transfer and unmarshalling.
|
|
37
|
-
*/
|
|
38
|
-
function projectKeys(params) {
|
|
39
|
-
return {
|
|
40
|
-
...params,
|
|
41
|
-
ProjectionExpression: 'PK, SK, #ns, #key',
|
|
42
|
-
ExpressionAttributeNames: {
|
|
43
|
-
...params.ExpressionAttributeNames,
|
|
44
|
-
'#ns': 'namespace',
|
|
45
|
-
'#key': 'key',
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { Item, SearchItem } from '@langchain/langgraph-checkpoint';
|
|
2
|
-
/** A decoded item plus its stored embedding, awaiting ranking. */
|
|
3
|
-
export interface RankCandidate {
|
|
4
|
-
item: Item;
|
|
5
|
-
embedding?: number[];
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Rank candidates by cosine similarity to `queryVector`, descending. Throws a
|
|
9
|
-
* {@link ValidationError} when the candidate count exceeds `maxCandidates`
|
|
10
|
-
* (steer large corpora to an external VectorBackend).
|
|
11
|
-
*
|
|
12
|
-
* A stored embedding whose length differs from the query vector's cannot be
|
|
13
|
-
* scored — it was written by a different embeddings model — and is ranked
|
|
14
|
-
* last with an undefined score. `onDimensionMismatch` is invoked once with
|
|
15
|
-
* how many candidates that affected, so the caller can say so instead of
|
|
16
|
-
* silently returning a ranking that quietly omits them.
|
|
17
|
-
*/
|
|
18
|
-
export declare function rankInMemory(candidates: RankCandidate[], queryVector: number[], maxCandidates: number, onDimensionMismatch?: (count: number) => void): SearchItem[];
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.rankInMemory = rankInMemory;
|
|
4
|
-
const errors_1 = require("../../shared/errors/errors");
|
|
5
|
-
const semantic_search_1 = require("./semantic-search");
|
|
6
|
-
/** Sort weight for an item without an embedding; below the −1 cosine minimum. */
|
|
7
|
-
const UNSCORED_RANK = -2;
|
|
8
|
-
/**
|
|
9
|
-
* Rank candidates by cosine similarity to `queryVector`, descending. Throws a
|
|
10
|
-
* {@link ValidationError} when the candidate count exceeds `maxCandidates`
|
|
11
|
-
* (steer large corpora to an external VectorBackend).
|
|
12
|
-
*
|
|
13
|
-
* A stored embedding whose length differs from the query vector's cannot be
|
|
14
|
-
* scored — it was written by a different embeddings model — and is ranked
|
|
15
|
-
* last with an undefined score. `onDimensionMismatch` is invoked once with
|
|
16
|
-
* how many candidates that affected, so the caller can say so instead of
|
|
17
|
-
* silently returning a ranking that quietly omits them.
|
|
18
|
-
*/
|
|
19
|
-
function rankInMemory(candidates, queryVector, maxCandidates, onDimensionMismatch) {
|
|
20
|
-
if (candidates.length > maxCandidates) {
|
|
21
|
-
throw new errors_1.ValidationError(`Semantic search candidate set (${candidates.length}) exceeds maxSearchCandidates ` +
|
|
22
|
-
`(${maxCandidates}); use a dedicated VectorBackend for large corpora`, 'maxSearchCandidates');
|
|
23
|
-
}
|
|
24
|
-
const mismatched = candidates.filter(({ embedding }) => embedding !== undefined && embedding.length !== queryVector.length).length;
|
|
25
|
-
if (mismatched > 0)
|
|
26
|
-
onDimensionMismatch?.(mismatched);
|
|
27
|
-
return candidates
|
|
28
|
-
.map(({ item, embedding }) => ({
|
|
29
|
-
...item,
|
|
30
|
-
score: embedding && embedding.length === queryVector.length
|
|
31
|
-
? (0, semantic_search_1.cosineSimilarity)(queryVector, embedding)
|
|
32
|
-
: undefined,
|
|
33
|
-
}))
|
|
34
|
-
.sort((a, b) => rankValue(b) - rankValue(a));
|
|
35
|
-
}
|
|
36
|
-
/** Sort weight: real cosine score, or a value below the cosine minimum for unscored items. */
|
|
37
|
-
function rankValue(item) {
|
|
38
|
-
return item.score ?? UNSCORED_RANK;
|
|
39
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { DescriptorRef } from '../../shared/codec/descriptor-keys';
|
|
2
|
-
import type { DocItem } from '../../shared/dynamodb/types';
|
|
3
|
-
import type { StoreContext } from './setup';
|
|
4
|
-
/** The previous row's createdAt, payload descriptor and revision. */
|
|
5
|
-
export interface ExistingRecordMeta {
|
|
6
|
-
exists: boolean;
|
|
7
|
-
createdAt?: string;
|
|
8
|
-
value?: DescriptorRef;
|
|
9
|
-
revision?: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Read the fields a put needs from the row it is about to replace, in one
|
|
13
|
-
* strongly-consistent projection: `createdAt` to preserve, the descriptor's
|
|
14
|
-
* location and S3 key to clean up afterwards (never its inline bytes, which
|
|
15
|
-
* can be hundreds of kilobytes the write would only discard), and the
|
|
16
|
-
* revision the compare-and-swap pins.
|
|
17
|
-
*
|
|
18
|
-
* Lives apart from `actions/put.ts` so `persist.ts` can re-read on a lost swap
|
|
19
|
-
* without importing its own caller.
|
|
20
|
-
*/
|
|
21
|
-
export declare function readExisting(context: StoreContext, pk: string, sk: string): Promise<ExistingRecordMeta>;
|
|
22
|
-
/** Project a raw row (a read result, or the row a rejection carried) onto {@link ExistingRecordMeta}. */
|
|
23
|
-
export declare function existingFrom(item: DocItem | undefined): ExistingRecordMeta;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.readExisting = readExisting;
|
|
4
|
-
exports.existingFrom = existingFrom;
|
|
5
|
-
const conditional_put_1 = require("../../shared/dynamodb/conditional-put");
|
|
6
|
-
const retry_1 = require("../../shared/dynamodb/retry");
|
|
7
|
-
/**
|
|
8
|
-
* Read the fields a put needs from the row it is about to replace, in one
|
|
9
|
-
* strongly-consistent projection: `createdAt` to preserve, the descriptor's
|
|
10
|
-
* location and S3 key to clean up afterwards (never its inline bytes, which
|
|
11
|
-
* can be hundreds of kilobytes the write would only discard), and the
|
|
12
|
-
* revision the compare-and-swap pins.
|
|
13
|
-
*
|
|
14
|
-
* Lives apart from `actions/put.ts` so `persist.ts` can re-read on a lost swap
|
|
15
|
-
* without importing its own caller.
|
|
16
|
-
*/
|
|
17
|
-
async function readExisting(context, pk, sk) {
|
|
18
|
-
const existing = await (0, retry_1.withDynamoDBRetry)(() => context.client.get({
|
|
19
|
-
TableName: context.tableName,
|
|
20
|
-
Key: { PK: pk, SK: sk },
|
|
21
|
-
ConsistentRead: true,
|
|
22
|
-
ProjectionExpression: '#c, #r, #v.#loc, #v.#s3k',
|
|
23
|
-
ExpressionAttributeNames: {
|
|
24
|
-
'#c': 'createdAt',
|
|
25
|
-
'#r': conditional_put_1.REVISION_ATTRIBUTE,
|
|
26
|
-
'#v': 'value',
|
|
27
|
-
'#loc': 'location',
|
|
28
|
-
'#s3k': 's3Key',
|
|
29
|
-
},
|
|
30
|
-
}), context.retry);
|
|
31
|
-
return existingFrom(existing.Item);
|
|
32
|
-
}
|
|
33
|
-
/** Project a raw row (a read result, or the row a rejection carried) onto {@link ExistingRecordMeta}. */
|
|
34
|
-
function existingFrom(item) {
|
|
35
|
-
return {
|
|
36
|
-
exists: item !== undefined,
|
|
37
|
-
createdAt: item?.createdAt,
|
|
38
|
-
value: item?.value,
|
|
39
|
-
revision: item?.[conditional_put_1.REVISION_ATTRIBUTE],
|
|
40
|
-
};
|
|
41
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { VectorMatch } from '../vector-backend';
|
|
2
|
-
/** Which direction a {@link VectorBackend} reports its score in. */
|
|
3
|
-
export type VectorScoreDirection = 'relevance' | 'distance';
|
|
4
|
-
/** Every direction {@link toRelevanceScores} recognises, for validating input. */
|
|
5
|
-
export declare const VECTOR_SCORE_DIRECTIONS: readonly VectorScoreDirection[];
|
|
6
|
-
/**
|
|
7
|
-
* Normalise a backend's matches to the relevance direction upstream
|
|
8
|
-
* `SearchItem.score` documents — "higher scores indicate better matches",
|
|
9
|
-
* typically a cosine similarity between -1 and 1.
|
|
10
|
-
*
|
|
11
|
-
* A distance is converted by **negation** rather than `1 / (1 + d)`: negation
|
|
12
|
-
* is monotone over the whole real line, needs no non-negativity precondition,
|
|
13
|
-
* and is exactly invertible, so the original distance is simply `-score`. A
|
|
14
|
-
* reciprocal would silently imply a different `(0, 1]` scale and is undefined
|
|
15
|
-
* at `d === -1`. Negative scores are already in range for this contract, so
|
|
16
|
-
* nothing is lost by producing them.
|
|
17
|
-
*
|
|
18
|
-
* Results are re-sorted after conversion so a backend that returns its matches
|
|
19
|
-
* in some other order still ranks correctly. Anything that is not `'distance'`
|
|
20
|
-
* is returned untouched — its own order stays authoritative, exactly as before.
|
|
21
|
-
*
|
|
22
|
-
* The test is for `'distance'` rather than against `'relevance'` on purpose:
|
|
23
|
-
* converting is the destructive branch, so only the exact value that asks for
|
|
24
|
-
* it may reach it. Testing the other way round made every unrecognised
|
|
25
|
-
* string — `'Distance'`, a typo, a value read from a config file — reverse the
|
|
26
|
-
* ranking silently, with no error and no warning (the ascending-score warning
|
|
27
|
-
* lives downstream of this conversion, so it could never fire). `setUpStore`
|
|
28
|
-
* rejects such a value outright; this keeps the failure harmless for any
|
|
29
|
-
* caller that reaches the function some other way.
|
|
30
|
-
*/
|
|
31
|
-
export declare function toRelevanceScores(matches: VectorMatch[], direction: VectorScoreDirection): VectorMatch[];
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VECTOR_SCORE_DIRECTIONS = void 0;
|
|
4
|
-
exports.toRelevanceScores = toRelevanceScores;
|
|
5
|
-
/** Every direction {@link toRelevanceScores} recognises, for validating input. */
|
|
6
|
-
exports.VECTOR_SCORE_DIRECTIONS = ['relevance', 'distance'];
|
|
7
|
-
/**
|
|
8
|
-
* Normalise a backend's matches to the relevance direction upstream
|
|
9
|
-
* `SearchItem.score` documents — "higher scores indicate better matches",
|
|
10
|
-
* typically a cosine similarity between -1 and 1.
|
|
11
|
-
*
|
|
12
|
-
* A distance is converted by **negation** rather than `1 / (1 + d)`: negation
|
|
13
|
-
* is monotone over the whole real line, needs no non-negativity precondition,
|
|
14
|
-
* and is exactly invertible, so the original distance is simply `-score`. A
|
|
15
|
-
* reciprocal would silently imply a different `(0, 1]` scale and is undefined
|
|
16
|
-
* at `d === -1`. Negative scores are already in range for this contract, so
|
|
17
|
-
* nothing is lost by producing them.
|
|
18
|
-
*
|
|
19
|
-
* Results are re-sorted after conversion so a backend that returns its matches
|
|
20
|
-
* in some other order still ranks correctly. Anything that is not `'distance'`
|
|
21
|
-
* is returned untouched — its own order stays authoritative, exactly as before.
|
|
22
|
-
*
|
|
23
|
-
* The test is for `'distance'` rather than against `'relevance'` on purpose:
|
|
24
|
-
* converting is the destructive branch, so only the exact value that asks for
|
|
25
|
-
* it may reach it. Testing the other way round made every unrecognised
|
|
26
|
-
* string — `'Distance'`, a typo, a value read from a config file — reverse the
|
|
27
|
-
* ranking silently, with no error and no warning (the ascending-score warning
|
|
28
|
-
* lives downstream of this conversion, so it could never fire). `setUpStore`
|
|
29
|
-
* rejects such a value outright; this keeps the failure harmless for any
|
|
30
|
-
* caller that reaches the function some other way.
|
|
31
|
-
*/
|
|
32
|
-
function toRelevanceScores(matches, direction) {
|
|
33
|
-
if (direction !== 'distance')
|
|
34
|
-
return matches;
|
|
35
|
-
return matches
|
|
36
|
-
.map((match) => ({ ...match, score: -match.score }))
|
|
37
|
-
.sort((left, right) => right.score - left.score);
|
|
38
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.passesFilter = passesFilter;
|
|
4
|
-
const filter_1 = require("./filter");
|
|
5
|
-
/** True when `item` satisfies the search operation's optional metadata filter. */
|
|
6
|
-
function passesFilter(item, op) {
|
|
7
|
-
if (!op.filter)
|
|
8
|
-
return true;
|
|
9
|
-
return (0, filter_1.matchesStoreFilter)(item.value, op.filter);
|
|
10
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { IndexConfig } from '@langchain/langgraph-checkpoint';
|
|
2
|
-
import type { JsonValue } from './filter';
|
|
3
|
-
import type { StoreContext } from './setup';
|
|
4
|
-
/** Cosine similarity of two equal-length vectors; 0 for zero/mismatched vectors. */
|
|
5
|
-
export declare function cosineSimilarity(a: number[], b: number[]): number;
|
|
6
|
-
/**
|
|
7
|
-
* Extract and join the indexable text of a value for the configured fields,
|
|
8
|
-
* byte-for-byte as LangGraph's `InMemoryStore` does (see `text-path.ts`), so
|
|
9
|
-
* the two stores embed identical text for identical documents.
|
|
10
|
-
*/
|
|
11
|
-
export declare function extractText(value: Record<string, JsonValue>, fields: string[]): string;
|
|
12
|
-
/**
|
|
13
|
-
* Reject a vector whose length disagrees with the configured `index.dims`. A
|
|
14
|
-
* mismatch means the embeddings model does not match the configuration, so
|
|
15
|
-
* every stored vector would be incomparable with every query; failing here
|
|
16
|
-
* surfaces that at the first put or search instead of ranking silently. The
|
|
17
|
-
* check is skipped when `dims` is not a positive integer, since nothing else
|
|
18
|
-
* in this package reads it.
|
|
19
|
-
*/
|
|
20
|
-
export declare function assertVectorDims(index: IndexConfig, vector: number[], what: string): void;
|
|
21
|
-
/**
|
|
22
|
-
* Embed several values for indexing with `embedDocuments` — the document-side
|
|
23
|
-
* method; providers such as Titan and Cohere embed documents and queries with
|
|
24
|
-
* different task types, so embedding a document with `embedQuery` degrades
|
|
25
|
-
* retrieval — batched and order-preserving. A value with no indexable text
|
|
26
|
-
* yields `undefined`; without an index every value does.
|
|
27
|
-
*/
|
|
28
|
-
export declare function embedValues(context: StoreContext, values: Record<string, JsonValue>[], fieldsOverride?: string[]): Promise<(number[] | undefined)[]>;
|
|
29
|
-
/**
|
|
30
|
-
* Embed one value for indexing, or undefined when indexing is off or the text
|
|
31
|
-
* is empty. `fieldsOverride` (from a put's `index` option) takes precedence
|
|
32
|
-
* over the store's configured fields. See {@link embedValues}.
|
|
33
|
-
*/
|
|
34
|
-
export declare function embedValue(context: StoreContext, value: Record<string, JsonValue>, fieldsOverride?: string[]): Promise<number[] | undefined>;
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cosineSimilarity = cosineSimilarity;
|
|
4
|
-
exports.extractText = extractText;
|
|
5
|
-
exports.assertVectorDims = assertVectorDims;
|
|
6
|
-
exports.embedValues = embedValues;
|
|
7
|
-
exports.embedValue = embedValue;
|
|
8
|
-
const errors_1 = require("../../shared/errors/errors");
|
|
9
|
-
const text_path_1 = require("./text-path");
|
|
10
|
-
/** Texts per `embedDocuments` call; keeps provider request sizes bounded. */
|
|
11
|
-
const EMBED_BATCH_SIZE = 100;
|
|
12
|
-
/** Cosine similarity of two equal-length vectors; 0 for zero/mismatched vectors. */
|
|
13
|
-
function cosineSimilarity(a, b) {
|
|
14
|
-
if (a.length !== b.length)
|
|
15
|
-
return 0;
|
|
16
|
-
let dot = 0;
|
|
17
|
-
let normA = 0;
|
|
18
|
-
let normB = 0;
|
|
19
|
-
for (let i = 0; i < a.length; i++) {
|
|
20
|
-
dot += a[i] * b[i];
|
|
21
|
-
normA += a[i] * a[i];
|
|
22
|
-
normB += b[i] * b[i];
|
|
23
|
-
}
|
|
24
|
-
if (normA === 0 || normB === 0)
|
|
25
|
-
return 0;
|
|
26
|
-
return dot / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Extract and join the indexable text of a value for the configured fields,
|
|
30
|
-
* byte-for-byte as LangGraph's `InMemoryStore` does (see `text-path.ts`), so
|
|
31
|
-
* the two stores embed identical text for identical documents.
|
|
32
|
-
*/
|
|
33
|
-
function extractText(value, fields) {
|
|
34
|
-
return fields.flatMap((field) => (0, text_path_1.getTextAtPath)(value, field)).join(' ');
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Reject a vector whose length disagrees with the configured `index.dims`. A
|
|
38
|
-
* mismatch means the embeddings model does not match the configuration, so
|
|
39
|
-
* every stored vector would be incomparable with every query; failing here
|
|
40
|
-
* surfaces that at the first put or search instead of ranking silently. The
|
|
41
|
-
* check is skipped when `dims` is not a positive integer, since nothing else
|
|
42
|
-
* in this package reads it.
|
|
43
|
-
*/
|
|
44
|
-
function assertVectorDims(index, vector, what) {
|
|
45
|
-
const dims = index.dims;
|
|
46
|
-
if (!Number.isInteger(dims) || dims <= 0 || vector.length === dims)
|
|
47
|
-
return;
|
|
48
|
-
throw new errors_1.ValidationError(`index.embeddings returned a ${vector.length}-dimensional ${what} vector but index.dims ` +
|
|
49
|
-
`is ${dims}; the embeddings model does not match the configured index`, 'index.dims');
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Embed several values for indexing with `embedDocuments` — the document-side
|
|
53
|
-
* method; providers such as Titan and Cohere embed documents and queries with
|
|
54
|
-
* different task types, so embedding a document with `embedQuery` degrades
|
|
55
|
-
* retrieval — batched and order-preserving. A value with no indexable text
|
|
56
|
-
* yields `undefined`; without an index every value does.
|
|
57
|
-
*/
|
|
58
|
-
async function embedValues(context, values, fieldsOverride) {
|
|
59
|
-
const index = context.index;
|
|
60
|
-
if (!index)
|
|
61
|
-
return values.map(() => undefined);
|
|
62
|
-
const fields = fieldsOverride ?? index.fields ?? ['$'];
|
|
63
|
-
const pending = [];
|
|
64
|
-
values.forEach((value, position) => {
|
|
65
|
-
const text = extractText(value, fields);
|
|
66
|
-
if (text.length > 0)
|
|
67
|
-
pending.push({ text, position });
|
|
68
|
-
});
|
|
69
|
-
const vectors = values.map(() => undefined);
|
|
70
|
-
for (let start = 0; start < pending.length; start += EMBED_BATCH_SIZE) {
|
|
71
|
-
const batch = pending.slice(start, start + EMBED_BATCH_SIZE);
|
|
72
|
-
const embedded = await index.embeddings.embedDocuments(batch.map((entry) => entry.text));
|
|
73
|
-
batch.forEach((entry, i) => {
|
|
74
|
-
assertVectorDims(index, embedded[i], 'document');
|
|
75
|
-
vectors[entry.position] = embedded[i];
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
return vectors;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Embed one value for indexing, or undefined when indexing is off or the text
|
|
82
|
-
* is empty. `fieldsOverride` (from a put's `index` option) takes precedence
|
|
83
|
-
* over the store's configured fields. See {@link embedValues}.
|
|
84
|
-
*/
|
|
85
|
-
async function embedValue(context, value, fieldsOverride) {
|
|
86
|
-
return (await embedValues(context, [value], fieldsOverride))[0];
|
|
87
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
2
|
-
import type { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
|
|
3
|
-
import type { IndexConfig, SerializerProtocol } from '@langchain/langgraph-checkpoint';
|
|
4
|
-
import type { CompressionConfig } from '../../shared/codec/compression';
|
|
5
|
-
import { S3Offloader } from '../../shared/codec/s3/offloader';
|
|
6
|
-
import type { RetryOptions } from '../../shared/dynamodb/retry';
|
|
7
|
-
import { type Logger } from '../../shared/logging/logger';
|
|
8
|
-
import type { TtlOption } from '../../shared/validation/ttl';
|
|
9
|
-
import type { DynamoDBStoreOptions } from '../types';
|
|
10
|
-
import type { VectorBackend } from '../vector-backend';
|
|
11
|
-
import type { VectorScoreDirection } from './score-direction';
|
|
12
|
-
/** Resolved collaborators shared by every store action. */
|
|
13
|
-
export interface StoreContext {
|
|
14
|
-
client: DynamoDBDocument;
|
|
15
|
-
tableName: string;
|
|
16
|
-
serde: SerializerProtocol;
|
|
17
|
-
compression?: CompressionConfig;
|
|
18
|
-
offloader?: S3Offloader;
|
|
19
|
-
ttl?: TtlOption;
|
|
20
|
-
logger: Logger;
|
|
21
|
-
index?: IndexConfig;
|
|
22
|
-
vectorBackend?: VectorBackend;
|
|
23
|
-
vectorScoreDirection: VectorScoreDirection;
|
|
24
|
-
maxSearchCandidates: number;
|
|
25
|
-
maxScanItems: number;
|
|
26
|
-
/** Retry budget and backoff for every DynamoDB call, with the retry debug log attached. */
|
|
27
|
-
retry?: RetryOptions;
|
|
28
|
-
}
|
|
29
|
-
/** Result of wiring up a store from its options. */
|
|
30
|
-
export interface StoreSetup {
|
|
31
|
-
context: StoreContext;
|
|
32
|
-
ddbClient: DynamoDBClient | undefined;
|
|
33
|
-
ownsClient: boolean;
|
|
34
|
-
}
|
|
35
|
-
/** Validate the options, then resolve the client, offloader, serializer, and index. */
|
|
36
|
-
export declare function setUpStore(options: DynamoDBStoreOptions): StoreSetup;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setUpStore = setUpStore;
|
|
4
|
-
const json_serde_1 = require("../../shared/codec/json-serde");
|
|
5
|
-
const adapter_config_1 = require("../../shared/codec/s3/adapter-config");
|
|
6
|
-
const offloader_1 = require("../../shared/codec/s3/offloader");
|
|
7
|
-
const constants_1 = require("../../shared/constants");
|
|
8
|
-
const client_1 = require("../../shared/dynamodb/client");
|
|
9
|
-
const retry_policy_1 = require("../../shared/dynamodb/retry-policy");
|
|
10
|
-
const logger_1 = require("../../shared/logging/logger");
|
|
11
|
-
const option_validation_1 = require("./option-validation");
|
|
12
|
-
/** Validate the options, then resolve the client, offloader, serializer, and index. */
|
|
13
|
-
function setUpStore(options) {
|
|
14
|
-
(0, option_validation_1.validateStoreOptions)(options);
|
|
15
|
-
const logger = (0, logger_1.resolveLogger)(options.logger);
|
|
16
|
-
const resolved = (0, client_1.resolveDynamoDBClient)(options);
|
|
17
|
-
if (!resolved.ownsClient)
|
|
18
|
-
void (0, client_1.warnOnStackedRetries)(resolved.client, logger);
|
|
19
|
-
return {
|
|
20
|
-
context: {
|
|
21
|
-
client: resolved.client,
|
|
22
|
-
tableName: options.tableName,
|
|
23
|
-
serde: options.serde ?? json_serde_1.JSON_SERDE,
|
|
24
|
-
compression: options.compression,
|
|
25
|
-
offloader: options.s3
|
|
26
|
-
? new offloader_1.S3Offloader((0, adapter_config_1.offloaderConfigFor)(options.s3, 'store', options.clientConfig))
|
|
27
|
-
: undefined,
|
|
28
|
-
ttl: options.ttl,
|
|
29
|
-
logger,
|
|
30
|
-
retry: (0, retry_policy_1.resolveRetryPolicy)(options.retry, logger),
|
|
31
|
-
index: options.index,
|
|
32
|
-
vectorBackend: options.vectorBackend,
|
|
33
|
-
vectorScoreDirection: options.vectorScoreDirection ?? 'relevance',
|
|
34
|
-
maxSearchCandidates: options.maxSearchCandidates ?? constants_1.DEFAULT_MAX_SEARCH_CANDIDATES,
|
|
35
|
-
maxScanItems: options.maxScanItems ?? constants_1.MAX_TOTAL_ITEMS_IN_MEMORY,
|
|
36
|
-
},
|
|
37
|
-
ddbClient: resolved.ddbClient,
|
|
38
|
-
ownsClient: resolved.ownsClient,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { JsonValue } from './filter';
|
|
2
|
-
/**
|
|
3
|
-
* Split a JSON path into tokens the way LangGraph's `InMemoryStore` does: dots
|
|
4
|
-
* separate plain segments, while a `[…]` index and a `{…}` field group each
|
|
5
|
-
* become a token of their own (`tags[0]` → `['tags', '[0]']`).
|
|
6
|
-
*/
|
|
7
|
-
export declare function tokenizePath(path: string): string[];
|
|
8
|
-
/**
|
|
9
|
-
* Extract the indexable text of `value` at `path`, byte-for-byte as LangGraph's
|
|
10
|
-
* `InMemoryStore` does (`store/utils`), so an embedding computed here matches
|
|
11
|
-
* one computed by the reference store for the same document. Supports plain
|
|
12
|
-
* paths, `[n]`/`[-n]`/`[*]` indexing, a bare `*` wildcard, `{a,b.c}` field
|
|
13
|
-
* groups and `$` for the whole document. The package root's `getTextAtPath` is
|
|
14
|
-
* a string-only variant that returns nothing for numbers, booleans, objects
|
|
15
|
-
* and arrays and throws on a `null` intermediate; it must not be used here.
|
|
16
|
-
*/
|
|
17
|
-
export declare function getTextAtPath(value: JsonValue, path: string): string[];
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/** Validate search/listNamespaces paging is non-negative integers. */
|
|
2
|
-
export declare function validatePaging(offset: number, limit: number): void;
|
|
3
|
-
/** Validate the namespace is non-empty and each element is a valid, ≤256-byte identifier. */
|
|
4
|
-
export declare function validateNamespace(namespace: string[]): void;
|
|
5
|
-
/** Validate an item key is a non-blank, separator- and control-char-free, ≤256-byte string. */
|
|
6
|
-
export declare function validateKey(key: string): void;
|
|
7
|
-
/**
|
|
8
|
-
* Validate a namespace/key pair as the item address it becomes: each segment
|
|
9
|
-
* on its own, then the sort key they compose, which DynamoDB caps at 1024
|
|
10
|
-
* bytes regardless of how short the individual segments are.
|
|
11
|
-
*/
|
|
12
|
-
export declare function validateStoreKey(namespace: string[], key: string): void;
|
|
13
|
-
/**
|
|
14
|
-
* Validate an optional namespace depth cap. Left unchecked, a negative value
|
|
15
|
-
* silently inverted truncation via `Array.prototype.slice(0, -n)`, which drops
|
|
16
|
-
* the *last* n elements rather than erroring.
|
|
17
|
-
*/
|
|
18
|
-
export declare function validateMaxDepth(maxDepth?: number): void;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validatePaging = validatePaging;
|
|
4
|
-
exports.validateNamespace = validateNamespace;
|
|
5
|
-
exports.validateKey = validateKey;
|
|
6
|
-
exports.validateStoreKey = validateStoreKey;
|
|
7
|
-
exports.validateMaxDepth = validateMaxDepth;
|
|
8
|
-
const constants_1 = require("../../shared/constants");
|
|
9
|
-
const errors_1 = require("../../shared/errors/errors");
|
|
10
|
-
const primitives_1 = require("../../shared/validation/primitives");
|
|
11
|
-
const keys_1 = require("./keys");
|
|
12
|
-
/** Validate search/listNamespaces paging is non-negative integers. */
|
|
13
|
-
function validatePaging(offset, limit) {
|
|
14
|
-
(0, primitives_1.validateInteger)(offset, 'offset', { min: 0 });
|
|
15
|
-
(0, primitives_1.validateInteger)(limit, 'limit', { min: 0 });
|
|
16
|
-
}
|
|
17
|
-
/** Validate the namespace is non-empty and each element is a valid, ≤256-byte identifier. */
|
|
18
|
-
function validateNamespace(namespace) {
|
|
19
|
-
(0, primitives_1.validateNonEmptyArray)(namespace, 'namespace');
|
|
20
|
-
for (const element of namespace) {
|
|
21
|
-
(0, primitives_1.validateIdentifier)(element, keys_1.NAMESPACE_SEPARATOR, 'namespace element', constants_1.MAX_KEY_SEGMENT_BYTES);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/** Validate an item key is a non-blank, separator- and control-char-free, ≤256-byte string. */
|
|
25
|
-
function validateKey(key) {
|
|
26
|
-
(0, primitives_1.validateIdentifier)(key, keys_1.NAMESPACE_SEPARATOR, 'key', constants_1.MAX_KEY_SEGMENT_BYTES);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Validate a namespace/key pair as the item address it becomes: each segment
|
|
30
|
-
* on its own, then the sort key they compose, which DynamoDB caps at 1024
|
|
31
|
-
* bytes regardless of how short the individual segments are.
|
|
32
|
-
*/
|
|
33
|
-
function validateStoreKey(namespace, key) {
|
|
34
|
-
validateNamespace(namespace);
|
|
35
|
-
validateKey(key);
|
|
36
|
-
const bytes = Buffer.byteLength((0, keys_1.sortKey)(namespace, key), 'utf8');
|
|
37
|
-
if (bytes > constants_1.MAX_SORT_KEY_BYTES) {
|
|
38
|
-
throw new errors_1.ValidationError(`namespace and key compose a ${bytes}-byte sort key; DynamoDB caps sort keys at ` +
|
|
39
|
-
`${constants_1.MAX_SORT_KEY_BYTES} bytes`, 'sortKey');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Validate an optional namespace depth cap. Left unchecked, a negative value
|
|
44
|
-
* silently inverted truncation via `Array.prototype.slice(0, -n)`, which drops
|
|
45
|
-
* the *last* n elements rather than erroring.
|
|
46
|
-
*/
|
|
47
|
-
function validateMaxDepth(maxDepth) {
|
|
48
|
-
if (maxDepth === undefined)
|
|
49
|
-
return;
|
|
50
|
-
(0, primitives_1.validateInteger)(maxDepth, 'maxDepth', { min: 1 });
|
|
51
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { StoreContext } from './setup';
|
|
2
|
-
/** True when `error` is a {@link RetryExhaustedError} — by name, not `instanceof` (banned repo-wide). */
|
|
3
|
-
export declare function isRetryExhausted(error: Error): boolean;
|
|
4
|
-
/**
|
|
5
|
-
* True when the row is confirmed absent — used to resolve an ambiguous
|
|
6
|
-
* retry-exhausted *delete*, where the delete may well have landed server-side
|
|
7
|
-
* and only its acknowledgement was lost. Only the partition key is projected:
|
|
8
|
-
* existence is the whole question. A failure reading this is not treated as
|
|
9
|
-
* confirmation, which is fail-safe here: the caller only rethrows, and nothing
|
|
10
|
-
* is deleted on the strength of a `false`.
|
|
11
|
-
*/
|
|
12
|
-
export declare function rowIsAbsent(context: StoreContext, key: {
|
|
13
|
-
PK: string;
|
|
14
|
-
SK: string;
|
|
15
|
-
}): Promise<boolean>;
|
|
16
|
-
/** What a post-failure verification read could establish about a write. */
|
|
17
|
-
export type WriteVerdict = 'landed' | 'not-landed' | 'unverified';
|
|
18
|
-
/**
|
|
19
|
-
* Read `record`'s row back to establish what an ambiguous write actually did,
|
|
20
|
-
* comparing the row's revision with the one this write carried. Every put
|
|
21
|
-
* stamps a fresh per-call `rev`, so the comparison works for inline and
|
|
22
|
-
* offloaded records alike.
|
|
23
|
-
*
|
|
24
|
-
* - `'landed'`: the row holds this write's `rev`, so it committed server-side
|
|
25
|
-
* and only its acknowledgement was lost.
|
|
26
|
-
* - `'not-landed'`: the row was read and holds something else, or nothing —
|
|
27
|
-
* or the record carries no `rev` to compare — so this call's own upload, if
|
|
28
|
-
* any, is dead and safe to delete.
|
|
29
|
-
* - `'unverified'`: the read itself failed, so nothing is established.
|
|
30
|
-
*
|
|
31
|
-
* The third answer used to be folded into the second as a plain `false`, which
|
|
32
|
-
* made a partition that blocked both the put and this read delete the object a
|
|
33
|
-
* possibly-live row points at — permanently breaking every later read of that
|
|
34
|
-
* item. Only a *confirmed* non-commit may delete the new upload: leaking one
|
|
35
|
-
* object (reclaimed by `ensureS3LifecycleRule`) is recoverable, stranding a
|
|
36
|
-
* live row is not.
|
|
37
|
-
*/
|
|
38
|
-
export declare function verifyWriteLanded(context: StoreContext, record: {
|
|
39
|
-
PK: string;
|
|
40
|
-
SK: string;
|
|
41
|
-
rev?: string;
|
|
42
|
-
}): Promise<WriteVerdict>;
|