@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,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listQuery = listQuery;
|
|
4
|
+
exports.listScan = listScan;
|
|
5
|
+
exports.passesKeyFilters = passesKeyFilters;
|
|
6
|
+
exports.passesMetadataFilter = passesMetadataFilter;
|
|
7
|
+
exports.metaRows = metaRows;
|
|
8
|
+
exports.parseListedRow = parseListedRow;
|
|
9
|
+
exports.matchesFilter = matchesFilter;
|
|
10
|
+
const node_util_1 = require("node:util");
|
|
11
|
+
const concurrency_js_1 = require("../../shared/concurrency.js");
|
|
12
|
+
const paginate_js_1 = require("../../shared/dynamodb/paginate.js");
|
|
13
|
+
const recency_index_js_1 = require("../../shared/dynamodb/recency-index.js");
|
|
14
|
+
const retry_js_1 = require("../../shared/dynamodb/retry.js");
|
|
15
|
+
const table_schema_js_1 = require("../../shared/dynamodb/table-schema.js");
|
|
16
|
+
const truncate_js_1 = require("../../shared/logging/truncate.js");
|
|
17
|
+
const rows_js_1 = require("./rows.js");
|
|
18
|
+
function listQuery(context, scope) {
|
|
19
|
+
const partition = (0, rows_js_1.partitionKey)(scope.threadId);
|
|
20
|
+
const limit = scope.filter === undefined ? scope.limit : undefined;
|
|
21
|
+
if (scope.checkpointNs === undefined) {
|
|
22
|
+
return (0, rows_js_1.beginsWithQuery)(context.tableName, partition, (0, rows_js_1.metaAnyNamespacePrefix)(), { limit });
|
|
23
|
+
}
|
|
24
|
+
return (0, rows_js_1.beginsWithQuery)(context.tableName, partition, (0, rows_js_1.metaSortKeyPrefix)(scope.checkpointNs), {
|
|
25
|
+
limit,
|
|
26
|
+
beforeSortKey: scope.before === undefined ? undefined : (0, rows_js_1.metaSortKey)(scope.checkpointNs, scope.before),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function listScan(context, scope) {
|
|
30
|
+
return {
|
|
31
|
+
TableName: context.tableName,
|
|
32
|
+
FilterExpression: 'begins_with(#pk, :pk) AND begins_with(#sk, :sk)',
|
|
33
|
+
ExpressionAttributeNames: { '#pk': table_schema_js_1.PARTITION_KEY_ATTRIBUTE, '#sk': table_schema_js_1.SORT_KEY_ATTRIBUTE },
|
|
34
|
+
ExpressionAttributeValues: {
|
|
35
|
+
':pk': (0, rows_js_1.checkpointerPartitionPrefix)(),
|
|
36
|
+
':sk': scope.checkpointNs === undefined
|
|
37
|
+
? (0, rows_js_1.metaAnyNamespacePrefix)()
|
|
38
|
+
: (0, rows_js_1.metaSortKeyPrefix)(scope.checkpointNs),
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function passesKeyFilters(meta, scope) {
|
|
43
|
+
return ((scope.before === undefined || (0, table_schema_js_1.compareSortKeys)(meta.checkpointId, scope.before) < 0) &&
|
|
44
|
+
(scope.checkpointNs === undefined || meta.checkpointNs === scope.checkpointNs) &&
|
|
45
|
+
(scope.checkpointId === undefined || meta.checkpointId === scope.checkpointId));
|
|
46
|
+
}
|
|
47
|
+
async function passesMetadataFilter(context, meta, scope) {
|
|
48
|
+
if (!scope.filter)
|
|
49
|
+
return { pass: true };
|
|
50
|
+
const metadata = await (0, rows_js_1.readMetadata)(context, meta, meta.threadId, scope.signal);
|
|
51
|
+
return matchesFilter(metadata, scope.filter) ? { pass: true, metadata } : { pass: false };
|
|
52
|
+
}
|
|
53
|
+
function threadlessRows(context, scope, now) {
|
|
54
|
+
if (context.indexName === undefined) {
|
|
55
|
+
return (0, paginate_js_1.paginateScan)({
|
|
56
|
+
retry: (0, retry_js_1.retryFor)(context, scope.signal),
|
|
57
|
+
signal: scope.signal,
|
|
58
|
+
client: context.client,
|
|
59
|
+
params: (0, table_schema_js_1.withoutExpired)(listScan(context, scope), now),
|
|
60
|
+
maxItems: Number.POSITIVE_INFINITY,
|
|
61
|
+
maxIterations: Number.POSITIVE_INFINITY,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return (0, recency_index_js_1.iterateRecencyIndex)({
|
|
65
|
+
client: context.client,
|
|
66
|
+
tableName: context.tableName,
|
|
67
|
+
indexName: context.indexName,
|
|
68
|
+
tag: 'CHKPT',
|
|
69
|
+
shards: context.indexShards ?? recency_index_js_1.DEFAULT_INDEX_SHARDS,
|
|
70
|
+
concurrency: context.readConcurrency ?? concurrency_js_1.DEFAULT_READ_CONCURRENCY,
|
|
71
|
+
retry: (0, retry_js_1.retryFor)(context, scope.signal),
|
|
72
|
+
signal: scope.signal,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function metaRows(context, scope, now) {
|
|
76
|
+
const retry = (0, retry_js_1.retryFor)(context, scope.signal);
|
|
77
|
+
const bounds = { maxItems: Number.POSITIVE_INFINITY, maxIterations: Number.POSITIVE_INFINITY };
|
|
78
|
+
return scope.threadId === undefined
|
|
79
|
+
? threadlessRows(context, scope, now)
|
|
80
|
+
: (0, paginate_js_1.paginateQuery)({
|
|
81
|
+
retry,
|
|
82
|
+
signal: scope.signal,
|
|
83
|
+
client: context.client,
|
|
84
|
+
params: (0, table_schema_js_1.withoutExpired)(listQuery(context, { ...scope, threadId: scope.threadId }), now),
|
|
85
|
+
...bounds,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function parseListedRow(context, raw) {
|
|
89
|
+
const meta = (0, rows_js_1.parseMetaRow)(raw);
|
|
90
|
+
if (!meta) {
|
|
91
|
+
context.logger.warn('list: skipped a row that is not a checkpoint meta item', {
|
|
92
|
+
sortKey: (0, truncate_js_1.truncateForLog)(raw.SK),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return meta;
|
|
96
|
+
}
|
|
97
|
+
function ownValue(metadata, key) {
|
|
98
|
+
if (metadata === null || typeof metadata !== 'object')
|
|
99
|
+
return undefined;
|
|
100
|
+
return Object.hasOwn(metadata, key) ? metadata[key] : undefined;
|
|
101
|
+
}
|
|
102
|
+
function matchesFilter(metadata, filter) {
|
|
103
|
+
return Object.entries(filter).every(([key, value]) => (0, node_util_1.isDeepStrictEqual)(ownValue(metadata, key), value));
|
|
104
|
+
}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hides the rules a checkpointer's caller input is held to.
|
|
3
|
+
*
|
|
4
|
+
* Every config, option and identifier an action accepts is parsed here once
|
|
5
|
+
* into a branded type only these parsers can build (record 21), so code
|
|
6
|
+
* downstream asks for a `ThreadId` or a `PutWritesRequest` and never checks it
|
|
7
|
+
* again. Which markers mean "no id", how the legacy `thread_ts` alias
|
|
8
|
+
* resolves, which field a refusal names and in what order the checks run are
|
|
9
|
+
* all settled here and nowhere else.
|
|
10
|
+
*/
|
|
11
|
+
import type { RunnableConfig } from '@langchain/core/runnables';
|
|
12
|
+
import type { Checkpoint, CheckpointListOptions, CheckpointMetadata, PendingWrite } from '@langchain/langgraph-checkpoint';
|
|
13
|
+
import { type PageLimit } from '../../shared/validation/primitives.js';
|
|
14
|
+
import type { DeltaChannelHistoryOptions } from '../types.js';
|
|
15
|
+
declare const threadIdBrand: unique symbol;
|
|
16
|
+
declare const checkpointNsBrand: unique symbol;
|
|
17
|
+
declare const checkpointIdBrand: unique symbol;
|
|
18
|
+
declare const taskIdBrand: unique symbol;
|
|
19
|
+
declare const writeChannelBrand: unique symbol;
|
|
20
|
+
declare const taskPathBrand: unique symbol;
|
|
21
|
+
/**
|
|
22
|
+
* A thread id checked as the partition key it becomes. {@link parseThreadId}
|
|
23
|
+
* is the only way to obtain one, so a function that asks for a `ThreadId`
|
|
24
|
+
* cannot be handed an id nobody checked, and does not check it again. The
|
|
25
|
+
* brand is phantom: at run time it is the caller's own string.
|
|
26
|
+
*/
|
|
27
|
+
export type ThreadId = string & {
|
|
28
|
+
readonly [threadIdBrand]: true;
|
|
29
|
+
};
|
|
30
|
+
/** A checkpoint namespace checked as a key segment; `''` is the root. Built only by {@link parseCheckpointNs}. */
|
|
31
|
+
export type CheckpointNs = string & {
|
|
32
|
+
readonly [checkpointNsBrand]: true;
|
|
33
|
+
};
|
|
34
|
+
/** A checkpoint id checked as a key segment. Built only by {@link parseCheckpointId}. */
|
|
35
|
+
export type CheckpointId = string & {
|
|
36
|
+
readonly [checkpointIdBrand]: true;
|
|
37
|
+
};
|
|
38
|
+
/** A task id checked as a key segment. Built only by {@link parseTaskId}. */
|
|
39
|
+
export type TaskId = string & {
|
|
40
|
+
readonly [taskIdBrand]: true;
|
|
41
|
+
};
|
|
42
|
+
/** A pending write's channel checked as the key segment it becomes. Built only by {@link parseWriteChannel}. */
|
|
43
|
+
export type WriteChannel = string & {
|
|
44
|
+
readonly [writeChannelBrand]: true;
|
|
45
|
+
};
|
|
46
|
+
/** The serialized path of the task that made a write, as LangGraph 1.5 hands it to `putWrites`; see {@link parseTaskPath}. */
|
|
47
|
+
export type TaskPath = string & {
|
|
48
|
+
readonly [taskPathBrand]: true;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Parse a thread id.
|
|
52
|
+
*
|
|
53
|
+
* Accepts: `value` — anything; a thread id reaches the partition key, so it is
|
|
54
|
+
* held to every identifier rule at {@link MAX_PARTITION_ID_BYTES}.
|
|
55
|
+
*
|
|
56
|
+
* Returns: `value` as a {@link ThreadId}.
|
|
57
|
+
*
|
|
58
|
+
* Throws: `VALIDATION` naming `thread_id`.
|
|
59
|
+
*/
|
|
60
|
+
export declare function parseThreadId(value: unknown): ThreadId;
|
|
61
|
+
/**
|
|
62
|
+
* Parse a checkpoint namespace.
|
|
63
|
+
*
|
|
64
|
+
* Accepts: `value` — anything; `''` is legal, because it *is* the root
|
|
65
|
+
* namespace, and every other identifier rule applies (see `parseKeySegment`),
|
|
66
|
+
* at most {@link MAX_CHECKPOINT_NS_BYTES} bytes of UTF-8.
|
|
67
|
+
*
|
|
68
|
+
* Returns: `value` as a {@link CheckpointNs}.
|
|
69
|
+
*
|
|
70
|
+
* Throws: `VALIDATION` naming `checkpoint_ns`.
|
|
71
|
+
*/
|
|
72
|
+
export declare function parseCheckpointNs(value: unknown): CheckpointNs;
|
|
73
|
+
/**
|
|
74
|
+
* Parse a checkpoint id.
|
|
75
|
+
*
|
|
76
|
+
* Accepts: `value` — anything. `field` — the field the caller set:
|
|
77
|
+
* `checkpoint_id` by default, `thread_ts` when the id was read from that legacy
|
|
78
|
+
* alias, `before` for `list`'s bound, so the refusal names what the caller
|
|
79
|
+
* actually wrote.
|
|
80
|
+
*
|
|
81
|
+
* Returns: `value` as a {@link CheckpointId}.
|
|
82
|
+
*
|
|
83
|
+
* Throws: `VALIDATION` naming `field`.
|
|
84
|
+
*/
|
|
85
|
+
export declare function parseCheckpointId(value: unknown, field?: 'checkpoint_id' | 'thread_ts' | 'before'): CheckpointId;
|
|
86
|
+
/**
|
|
87
|
+
* Parse a task id. LangGraph's own are UUIDs; the rule is stated for whatever
|
|
88
|
+
* else a caller passes.
|
|
89
|
+
*
|
|
90
|
+
* Accepts: `value` — anything.
|
|
91
|
+
*
|
|
92
|
+
* Returns: `value` as a {@link TaskId}.
|
|
93
|
+
*
|
|
94
|
+
* Throws: `VALIDATION` naming `taskId`.
|
|
95
|
+
*/
|
|
96
|
+
export declare function parseTaskId(value: unknown): TaskId;
|
|
97
|
+
/**
|
|
98
|
+
* Parse a pending write's channel, the trailing segment of its WRITE sort key.
|
|
99
|
+
*
|
|
100
|
+
* Accepts: `value` — anything; LangGraph's own channel names never contain the
|
|
101
|
+
* reserved separator. The cap is {@link MAX_WRITE_CHANNEL_BYTES}, wider than
|
|
102
|
+
* the other segments' because a fan-in's channel is named after every source
|
|
103
|
+
* node; the composed sort key is checked against DynamoDB's cap separately.
|
|
104
|
+
*
|
|
105
|
+
* Returns: `value` as a {@link WriteChannel}.
|
|
106
|
+
*
|
|
107
|
+
* Throws: `VALIDATION` naming `channel`.
|
|
108
|
+
*/
|
|
109
|
+
export declare function parseWriteChannel(value: unknown): WriteChannel;
|
|
110
|
+
/**
|
|
111
|
+
* Parse the task path a `putWrites` call carries.
|
|
112
|
+
*
|
|
113
|
+
* LangGraph 1.5 (`@langchain/langgraph-checkpoint@1.2.0`) hands `putWrites`
|
|
114
|
+
* the serialized path of the task that made the writes — `~pull, <node>`,
|
|
115
|
+
* `~push, 0000000003, …` — as a fourth argument, and reads a checkpoint's
|
|
116
|
+
* writes back ordered by it first (`writesSortKey`: path, then task id, then
|
|
117
|
+
* index). It is stored as given and never keyed on, so it has no byte cap
|
|
118
|
+
* and no separator rule: it leads a sort, not a sort key.
|
|
119
|
+
*
|
|
120
|
+
* Accepts: `value` — a string, the empty string included (a write made by
|
|
121
|
+
* no task); `undefined` for a call that carries none, which every LangGraph
|
|
122
|
+
* before 1.5 makes.
|
|
123
|
+
*
|
|
124
|
+
* Returns: `value` as a {@link TaskPath}, or `undefined` when none was given.
|
|
125
|
+
*
|
|
126
|
+
* Throws: `VALIDATION` naming `taskPath` for any other value.
|
|
127
|
+
*/
|
|
128
|
+
export declare function parseTaskPath(value: unknown): TaskPath | undefined;
|
|
129
|
+
/** The root namespace, which a config that names none addresses. */
|
|
130
|
+
export declare const ROOT_NAMESPACE: CheckpointNs;
|
|
131
|
+
/** A thread, a namespace in it, and possibly one checkpoint — "the newest" when unset. */
|
|
132
|
+
export interface ThreadAddress {
|
|
133
|
+
readonly threadId: ThreadId;
|
|
134
|
+
readonly checkpointNs: CheckpointNs;
|
|
135
|
+
readonly checkpointId: CheckpointId | undefined;
|
|
136
|
+
}
|
|
137
|
+
/** A thread address that names one checkpoint. */
|
|
138
|
+
export interface CheckpointAddress extends ThreadAddress {
|
|
139
|
+
readonly checkpointId: CheckpointId;
|
|
140
|
+
}
|
|
141
|
+
/** What a config names, parsed. A read accepts a config that names no thread. */
|
|
142
|
+
export interface ParsedConfig {
|
|
143
|
+
readonly threadId: ThreadId | undefined;
|
|
144
|
+
/** `undefined` only when the config names no `checkpoint_ns` at all; `null` reads as the root, named. */
|
|
145
|
+
readonly checkpointNs: CheckpointNs | undefined;
|
|
146
|
+
readonly checkpointId: CheckpointId | undefined;
|
|
147
|
+
readonly signal: AbortSignal | undefined;
|
|
148
|
+
}
|
|
149
|
+
/** A config that names a thread, with its namespace defaulted to the root. */
|
|
150
|
+
export interface ThreadConfig {
|
|
151
|
+
readonly address: ThreadAddress;
|
|
152
|
+
readonly signal: AbortSignal | undefined;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Parse a config a read accepts, naming a thread or not.
|
|
156
|
+
*
|
|
157
|
+
* Accepts: `config` — an object; `configurable` absent or an object; `signal`
|
|
158
|
+
* absent or `AbortSignal`-shaped. A config naming no thread is legal: the
|
|
159
|
+
* identifiers it does give are still parsed, as the reference saver does
|
|
160
|
+
* (`@langchain/langgraph-checkpoint@1.1.5` `dist/memory.js:86-92`).
|
|
161
|
+
*
|
|
162
|
+
* Returns: the thread, the namespace as given (`undefined` when not named), the
|
|
163
|
+
* checkpoint id (`undefined` for "the newest"), and the signal.
|
|
164
|
+
*
|
|
165
|
+
* Throws: `VALIDATION` naming `config`, `configurable` or `signal` for a config
|
|
166
|
+
* of the wrong shape, then `thread_id`, `checkpoint_ns`, `checkpoint_id` or
|
|
167
|
+
* `thread_ts`, in that order.
|
|
168
|
+
*/
|
|
169
|
+
export declare function parseConfig(config: RunnableConfig): ParsedConfig;
|
|
170
|
+
/**
|
|
171
|
+
* Parse a config a write needs: one that names a thread.
|
|
172
|
+
*
|
|
173
|
+
* Accepts: `config` — as {@link parseConfig}, with `thread_id` required.
|
|
174
|
+
*
|
|
175
|
+
* Returns: the address, its namespace defaulted to {@link ROOT_NAMESPACE}, and
|
|
176
|
+
* the signal.
|
|
177
|
+
*
|
|
178
|
+
* Throws: as {@link parseConfig}; a missing `thread_id` is refused naming
|
|
179
|
+
* `thread_id`, before the namespace is read.
|
|
180
|
+
*/
|
|
181
|
+
export declare function parseThreadConfig(config: RunnableConfig): ThreadConfig;
|
|
182
|
+
/** Everything one `put` stores, parsed. */
|
|
183
|
+
export interface PutRequest {
|
|
184
|
+
/** The new checkpoint's own address: its `checkpointId` is `checkpoint.id`. */
|
|
185
|
+
readonly address: CheckpointAddress;
|
|
186
|
+
/** The checkpoint the config named, which the new one continues. */
|
|
187
|
+
readonly parentCheckpointId: CheckpointId | undefined;
|
|
188
|
+
readonly checkpoint: Checkpoint;
|
|
189
|
+
readonly metadata: CheckpointMetadata;
|
|
190
|
+
readonly signal: AbortSignal | undefined;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Parse the arguments of `put`.
|
|
194
|
+
*
|
|
195
|
+
* Accepts: `config` — as {@link parseThreadConfig}; its checkpoint id becomes
|
|
196
|
+
* the parent. `checkpoint` — must be present; its `id` is parsed as the key
|
|
197
|
+
* segment it becomes. `metadata` — stored as given.
|
|
198
|
+
*
|
|
199
|
+
* Returns: the request every later step of the put reads.
|
|
200
|
+
*
|
|
201
|
+
* Throws: as {@link parseThreadConfig}; then `VALIDATION` naming `checkpoint`
|
|
202
|
+
* for a `null` or `undefined` checkpoint, or `checkpoint_id` for a malformed
|
|
203
|
+
* `checkpoint.id`.
|
|
204
|
+
*/
|
|
205
|
+
export declare function parsePutRequest(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata): PutRequest;
|
|
206
|
+
/** Everything one `putWrites` stores, parsed. */
|
|
207
|
+
export interface PutWritesRequest {
|
|
208
|
+
readonly address: CheckpointAddress;
|
|
209
|
+
readonly taskId: TaskId;
|
|
210
|
+
/** The task's serialized path, when the call carried one; see {@link parseTaskPath}. */
|
|
211
|
+
readonly taskPath: TaskPath | undefined;
|
|
212
|
+
/** A copy of the caller's writes, each reduced to its channel and value. */
|
|
213
|
+
readonly writes: PendingWrite<WriteChannel>[];
|
|
214
|
+
readonly signal: AbortSignal | undefined;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Parse the arguments of `putWrites`.
|
|
218
|
+
*
|
|
219
|
+
* Accepts: `config` — as {@link parseThreadConfig}, and it must name a
|
|
220
|
+
* checkpoint, since writes attach to one. `writes` — an array of
|
|
221
|
+
* `[channel, value]` arrays; the value, and any element past the second, are
|
|
222
|
+
* unconstrained, as upstream's type places no rule on them. `taskId` — parsed
|
|
223
|
+
* as the key segment it becomes. `taskPath` — as {@link parseTaskPath}; absent
|
|
224
|
+
* from a LangGraph before 1.5.
|
|
225
|
+
*
|
|
226
|
+
* Returns: the request, with a fresh array of fresh tuples, so a caller
|
|
227
|
+
* changing its own array while the call awaits changes nothing that was
|
|
228
|
+
* checked.
|
|
229
|
+
*
|
|
230
|
+
* Throws: `VALIDATION`, before anything is encoded or uploaded, in this order:
|
|
231
|
+
* `taskId`; `taskPath`; as {@link parseThreadConfig}; `checkpoint_id` when the config names
|
|
232
|
+
* none; `writes` for a non-array or an entry that is not one; `channel` for any
|
|
233
|
+
* malformed channel; `sortKey` for any write whose composed key passes the cap.
|
|
234
|
+
*/
|
|
235
|
+
export declare function parsePutWritesRequest(config: RunnableConfig, writes: PendingWrite[], taskId: string, taskPath?: string): PutWritesRequest;
|
|
236
|
+
/** A JSON-comparable value used in metadata filters. */
|
|
237
|
+
export type FilterValue = string | number | boolean | null | FilterValue[] | {
|
|
238
|
+
[key: string]: FilterValue;
|
|
239
|
+
};
|
|
240
|
+
/** What one `list()` call covers, parsed once from its config and options. */
|
|
241
|
+
export interface ListScope {
|
|
242
|
+
/** Undefined when the caller gave no `thread_id`: every thread in the table is listed. */
|
|
243
|
+
readonly threadId: ThreadId | undefined;
|
|
244
|
+
/** Undefined when the caller gave no `checkpoint_ns`: every namespace of the thread is listed. */
|
|
245
|
+
readonly checkpointNs: CheckpointNs | undefined;
|
|
246
|
+
readonly checkpointId: CheckpointId | undefined;
|
|
247
|
+
readonly before: CheckpointId | undefined;
|
|
248
|
+
readonly filter: Record<string, FilterValue> | undefined;
|
|
249
|
+
readonly limit: PageLimit | undefined;
|
|
250
|
+
readonly signal: AbortSignal | undefined;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Parse the arguments of `list`.
|
|
254
|
+
*
|
|
255
|
+
* Accepts: `config` — as {@link parseConfig}; `thread_id` omitted lists every
|
|
256
|
+
* thread and `checkpoint_ns` omitted every namespace, as the reference savers
|
|
257
|
+
* do. `options.limit` — an integer from 0 to the page ceiling; `0` asks for
|
|
258
|
+
* nothing, and a negative value is refused rather than read as zero, since it
|
|
259
|
+
* can only be a page size whose computation went wrong. `options.before` — an
|
|
260
|
+
* object naming, at most, a `checkpoint_id`. `options.filter` — metadata
|
|
261
|
+
* equality clauses; an object when given.
|
|
262
|
+
*
|
|
263
|
+
* Returns: the scope every later step of the listing reads instead of the raw
|
|
264
|
+
* config.
|
|
265
|
+
*
|
|
266
|
+
* Throws: `VALIDATION`, config first: as {@link parseConfig}; then `options`
|
|
267
|
+
* for options that are not an object, `filter`, `limit`, `before`. A key
|
|
268
|
+
* `CheckpointListOptions` does not declare is ignored rather than refused:
|
|
269
|
+
* LangGraph defines these options and passes its own straight through
|
|
270
|
+
* (`getStateHistory` hands them to `list`), so a key a later LangGraph adds
|
|
271
|
+
* must not turn the call into a refusal (decision record 28).
|
|
272
|
+
*/
|
|
273
|
+
export declare function parseListScope(config: RunnableConfig, options?: CheckpointListOptions): ListScope;
|
|
274
|
+
/** The arguments of `getDeltaChannelHistory`, their shape checked. */
|
|
275
|
+
export interface DeltaHistoryRequest {
|
|
276
|
+
readonly config: RunnableConfig;
|
|
277
|
+
readonly channels: string[];
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Parse the options of `getDeltaChannelHistory` — their shape only. The
|
|
281
|
+
* config's identifiers are parsed by the `getTuple` each hop of the walk calls,
|
|
282
|
+
* and only once a channel is named: an empty `channels` reads nothing, so it
|
|
283
|
+
* refuses nothing either.
|
|
284
|
+
*
|
|
285
|
+
* Accepts: `options` — an object carrying `config` and `channels`; any other
|
|
286
|
+
* key is ignored, since LangGraph defines this object and calls the method
|
|
287
|
+
* itself, so a key a later LangGraph adds must not refuse the call (decision
|
|
288
|
+
* record 28). `options.config` — shaped as {@link parseConfig} requires.
|
|
289
|
+
* `options.channels` — an array of strings; an empty one is a legitimate
|
|
290
|
+
* request.
|
|
291
|
+
*
|
|
292
|
+
* Returns: the config as given and a copy of the channels.
|
|
293
|
+
*
|
|
294
|
+
* Throws: `VALIDATION` naming `options`, `config`, `configurable`, `signal` or
|
|
295
|
+
* `channels`.
|
|
296
|
+
*/
|
|
297
|
+
export declare function parseDeltaHistoryRequest(options: DeltaChannelHistoryOptions): DeltaHistoryRequest;
|
|
298
|
+
export {};
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ROOT_NAMESPACE = void 0;
|
|
4
|
+
exports.parseThreadId = parseThreadId;
|
|
5
|
+
exports.parseCheckpointNs = parseCheckpointNs;
|
|
6
|
+
exports.parseCheckpointId = parseCheckpointId;
|
|
7
|
+
exports.parseTaskId = parseTaskId;
|
|
8
|
+
exports.parseWriteChannel = parseWriteChannel;
|
|
9
|
+
exports.parseTaskPath = parseTaskPath;
|
|
10
|
+
exports.parseConfig = parseConfig;
|
|
11
|
+
exports.parseThreadConfig = parseThreadConfig;
|
|
12
|
+
exports.parsePutRequest = parsePutRequest;
|
|
13
|
+
exports.parsePutWritesRequest = parsePutWritesRequest;
|
|
14
|
+
exports.parseListScope = parseListScope;
|
|
15
|
+
exports.parseDeltaHistoryRequest = parseDeltaHistoryRequest;
|
|
16
|
+
const table_schema_js_1 = require("../../shared/dynamodb/table-schema.js");
|
|
17
|
+
const errors_js_1 = require("../../shared/errors/errors.js");
|
|
18
|
+
const collaborators_js_1 = require("../../shared/validation/collaborators.js");
|
|
19
|
+
const option_shape_js_1 = require("../../shared/validation/option-shape.js");
|
|
20
|
+
const primitives_js_1 = require("../../shared/validation/primitives.js");
|
|
21
|
+
const rows_js_1 = require("./rows.js");
|
|
22
|
+
function parseThreadId(value) {
|
|
23
|
+
return (0, primitives_js_1.parseIdentifier)(value, table_schema_js_1.KEY_SEPARATOR, 'thread_id', table_schema_js_1.MAX_PARTITION_ID_BYTES);
|
|
24
|
+
}
|
|
25
|
+
function parseCheckpointNs(value) {
|
|
26
|
+
return (0, primitives_js_1.parseKeySegment)(value, table_schema_js_1.KEY_SEPARATOR, 'checkpoint_ns', table_schema_js_1.MAX_CHECKPOINT_NS_BYTES);
|
|
27
|
+
}
|
|
28
|
+
function parseCheckpointId(value, field = 'checkpoint_id') {
|
|
29
|
+
return (0, primitives_js_1.parseIdentifier)(value, table_schema_js_1.KEY_SEPARATOR, field, table_schema_js_1.MAX_KEY_SEGMENT_BYTES);
|
|
30
|
+
}
|
|
31
|
+
function parseTaskId(value) {
|
|
32
|
+
return (0, primitives_js_1.parseIdentifier)(value, table_schema_js_1.KEY_SEPARATOR, 'taskId', table_schema_js_1.MAX_KEY_SEGMENT_BYTES);
|
|
33
|
+
}
|
|
34
|
+
function parseWriteChannel(value) {
|
|
35
|
+
return (0, primitives_js_1.parseIdentifier)(value, table_schema_js_1.KEY_SEPARATOR, 'channel', table_schema_js_1.MAX_WRITE_CHANNEL_BYTES);
|
|
36
|
+
}
|
|
37
|
+
function parseTaskPath(value) {
|
|
38
|
+
if (value === undefined)
|
|
39
|
+
return undefined;
|
|
40
|
+
if (typeof value !== 'string')
|
|
41
|
+
throw (0, errors_js_1.validationError)('taskPath must be a string', 'taskPath');
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
exports.ROOT_NAMESPACE = parseCheckpointNs('');
|
|
45
|
+
function isAbsentId(value) {
|
|
46
|
+
return value === undefined || value === null || value === '';
|
|
47
|
+
}
|
|
48
|
+
function assertConfigShape(config) {
|
|
49
|
+
(0, option_shape_js_1.assertObjectShape)(config, 'config');
|
|
50
|
+
if (config.configurable !== undefined)
|
|
51
|
+
(0, option_shape_js_1.assertObjectShape)(config.configurable, 'configurable');
|
|
52
|
+
(0, collaborators_js_1.assertSignalLike)(config.signal);
|
|
53
|
+
}
|
|
54
|
+
function configurableOf(config) {
|
|
55
|
+
assertConfigShape(config);
|
|
56
|
+
return (config.configurable ?? {});
|
|
57
|
+
}
|
|
58
|
+
function namespaceOf(configurable) {
|
|
59
|
+
if (configurable.checkpoint_ns === undefined)
|
|
60
|
+
return undefined;
|
|
61
|
+
return parseCheckpointNs(configurable.checkpoint_ns ?? '');
|
|
62
|
+
}
|
|
63
|
+
function resolveCheckpointId(configurable) {
|
|
64
|
+
if (!isAbsentId(configurable.checkpoint_id))
|
|
65
|
+
return parseCheckpointId(configurable.checkpoint_id);
|
|
66
|
+
if (!isAbsentId(configurable.thread_ts)) {
|
|
67
|
+
return parseCheckpointId(configurable.thread_ts, 'thread_ts');
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
function parseConfig(config) {
|
|
72
|
+
const configurable = configurableOf(config);
|
|
73
|
+
const threadId = configurable.thread_id === undefined ? undefined : parseThreadId(configurable.thread_id);
|
|
74
|
+
return {
|
|
75
|
+
threadId,
|
|
76
|
+
checkpointNs: namespaceOf(configurable),
|
|
77
|
+
checkpointId: resolveCheckpointId(configurable),
|
|
78
|
+
signal: config.signal,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function parseThreadConfig(config) {
|
|
82
|
+
const configurable = configurableOf(config);
|
|
83
|
+
const threadId = parseThreadId(configurable.thread_id);
|
|
84
|
+
return {
|
|
85
|
+
address: {
|
|
86
|
+
threadId,
|
|
87
|
+
checkpointNs: namespaceOf(configurable) ?? exports.ROOT_NAMESPACE,
|
|
88
|
+
checkpointId: resolveCheckpointId(configurable),
|
|
89
|
+
},
|
|
90
|
+
signal: config.signal,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function parsePutRequest(config, checkpoint, metadata) {
|
|
94
|
+
const { address, signal } = parseThreadConfig(config);
|
|
95
|
+
if (checkpoint === null || checkpoint === undefined) {
|
|
96
|
+
throw (0, errors_js_1.validationError)('checkpoint must be an object', 'checkpoint');
|
|
97
|
+
}
|
|
98
|
+
const checkpointId = parseCheckpointId(checkpoint.id);
|
|
99
|
+
return {
|
|
100
|
+
address: { threadId: address.threadId, checkpointNs: address.checkpointNs, checkpointId },
|
|
101
|
+
parentCheckpointId: address.checkpointId,
|
|
102
|
+
checkpoint,
|
|
103
|
+
metadata,
|
|
104
|
+
signal,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function assertWriteEntries(writes) {
|
|
108
|
+
if (!Array.isArray(writes)) {
|
|
109
|
+
throw (0, errors_js_1.validationError)('writes must be an array', 'writes');
|
|
110
|
+
}
|
|
111
|
+
for (let index = 0; index < writes.length; index += 1) {
|
|
112
|
+
if (!Array.isArray(writes[index])) {
|
|
113
|
+
throw (0, errors_js_1.validationError)(`writes[${index}] must be a [channel, value] tuple`, 'writes');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function assertWriteKeyFits(address, taskId, channel) {
|
|
118
|
+
const bytes = (0, rows_js_1.writeSortKeyBytes)({
|
|
119
|
+
checkpointNs: address.checkpointNs,
|
|
120
|
+
checkpointId: address.checkpointId,
|
|
121
|
+
taskId,
|
|
122
|
+
channel,
|
|
123
|
+
});
|
|
124
|
+
if (bytes > table_schema_js_1.MAX_SORT_KEY_BYTES) {
|
|
125
|
+
throw (0, errors_js_1.validationError)(`checkpoint_ns, checkpoint_id, taskId and channel compose a ${bytes}-byte sort key; ` +
|
|
126
|
+
`DynamoDB caps sort keys at ${table_schema_js_1.MAX_SORT_KEY_BYTES} bytes`, 'sortKey');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function parsePutWritesRequest(config, writes, taskId, taskPath) {
|
|
130
|
+
const parsedTaskId = parseTaskId(taskId);
|
|
131
|
+
const parsedTaskPath = parseTaskPath(taskPath);
|
|
132
|
+
const { address, signal } = parseThreadConfig(config);
|
|
133
|
+
if (address.checkpointId === undefined) {
|
|
134
|
+
throw (0, errors_js_1.validationError)('checkpoint_id is required to store writes', 'checkpoint_id');
|
|
135
|
+
}
|
|
136
|
+
const target = {
|
|
137
|
+
threadId: address.threadId,
|
|
138
|
+
checkpointNs: address.checkpointNs,
|
|
139
|
+
checkpointId: address.checkpointId,
|
|
140
|
+
};
|
|
141
|
+
assertWriteEntries(writes);
|
|
142
|
+
const channels = writes.map(([channel]) => parseWriteChannel(channel));
|
|
143
|
+
for (const channel of channels)
|
|
144
|
+
assertWriteKeyFits(target, parsedTaskId, channel);
|
|
145
|
+
return {
|
|
146
|
+
address: target,
|
|
147
|
+
taskId: parsedTaskId,
|
|
148
|
+
taskPath: parsedTaskPath,
|
|
149
|
+
writes: writes.map(([, value], index) => [channels[index], value]),
|
|
150
|
+
signal,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function beforeCheckpointId(before) {
|
|
154
|
+
if (before === undefined)
|
|
155
|
+
return undefined;
|
|
156
|
+
(0, option_shape_js_1.assertObjectShape)(before, 'before');
|
|
157
|
+
const checkpointId = before.configurable?.checkpoint_id;
|
|
158
|
+
if (isAbsentId(checkpointId))
|
|
159
|
+
return undefined;
|
|
160
|
+
return parseCheckpointId(checkpointId, 'before');
|
|
161
|
+
}
|
|
162
|
+
function parseListScope(config, options) {
|
|
163
|
+
const { threadId, checkpointNs, checkpointId, signal } = parseConfig(config);
|
|
164
|
+
if (options !== undefined) {
|
|
165
|
+
(0, option_shape_js_1.assertObjectShape)(options, 'options');
|
|
166
|
+
if (options.filter !== undefined)
|
|
167
|
+
(0, option_shape_js_1.assertObjectShape)(options.filter, 'filter');
|
|
168
|
+
}
|
|
169
|
+
const limit = options?.limit === undefined ? undefined : (0, primitives_js_1.parseLimit)(options.limit, 0);
|
|
170
|
+
return {
|
|
171
|
+
threadId,
|
|
172
|
+
checkpointNs,
|
|
173
|
+
checkpointId,
|
|
174
|
+
before: beforeCheckpointId(options?.before),
|
|
175
|
+
filter: options?.filter,
|
|
176
|
+
limit,
|
|
177
|
+
signal,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function parseDeltaHistoryRequest(options) {
|
|
181
|
+
(0, option_shape_js_1.assertObjectShape)(options, 'options');
|
|
182
|
+
assertConfigShape(options.config);
|
|
183
|
+
return { config: options.config, channels: (0, primitives_js_1.parseStringArray)(options.channels, 'channels') };
|
|
184
|
+
}
|