@farukada/aws-langgraph-dynamodb-ts 0.2.2 → 0.3.1
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 +224 -512
- package/dist/checkpointer/actions/delete-thread.d.ts +7 -6
- package/dist/checkpointer/actions/delete-thread.d.ts.map +1 -1
- package/dist/checkpointer/actions/delete-thread.js +47 -152
- package/dist/checkpointer/actions/delete-thread.js.map +1 -1
- package/dist/checkpointer/actions/get-tuple.d.ts +6 -14
- package/dist/checkpointer/actions/get-tuple.d.ts.map +1 -1
- package/dist/checkpointer/actions/get-tuple.js +13 -166
- package/dist/checkpointer/actions/get-tuple.js.map +1 -1
- package/dist/checkpointer/actions/list.d.ts +10 -0
- package/dist/checkpointer/actions/list.d.ts.map +1 -0
- package/dist/checkpointer/actions/list.js +51 -0
- package/dist/checkpointer/actions/list.js.map +1 -0
- package/dist/checkpointer/actions/put-writes.d.ts +6 -6
- package/dist/checkpointer/actions/put-writes.d.ts.map +1 -1
- package/dist/checkpointer/actions/put-writes.js +26 -75
- package/dist/checkpointer/actions/put-writes.js.map +1 -1
- package/dist/checkpointer/actions/put.d.ts +6 -11
- package/dist/checkpointer/actions/put.d.ts.map +1 -1
- package/dist/checkpointer/actions/put.js +29 -161
- package/dist/checkpointer/actions/put.js.map +1 -1
- package/dist/checkpointer/internal/assemble.d.ts +10 -0
- package/dist/checkpointer/internal/assemble.d.ts.map +1 -0
- package/dist/checkpointer/internal/assemble.js +37 -0
- package/dist/checkpointer/internal/assemble.js.map +1 -0
- package/dist/checkpointer/internal/configurable.d.ts +13 -0
- package/dist/checkpointer/internal/configurable.d.ts.map +1 -0
- package/dist/checkpointer/internal/configurable.js +23 -0
- package/dist/checkpointer/internal/configurable.js.map +1 -0
- package/dist/checkpointer/internal/fetch.d.ts +10 -0
- package/dist/checkpointer/internal/fetch.d.ts.map +1 -0
- package/dist/checkpointer/internal/fetch.js +46 -0
- package/dist/checkpointer/internal/fetch.js.map +1 -0
- package/dist/checkpointer/internal/filter-match.d.ts +12 -0
- package/dist/checkpointer/internal/filter-match.d.ts.map +1 -0
- package/dist/checkpointer/internal/filter-match.js +14 -0
- package/dist/checkpointer/internal/filter-match.js.map +1 -0
- package/dist/checkpointer/internal/item-reader.d.ts +10 -0
- package/dist/checkpointer/internal/item-reader.d.ts.map +1 -0
- package/dist/checkpointer/internal/item-reader.js +26 -0
- package/dist/checkpointer/internal/item-reader.js.map +1 -0
- package/dist/checkpointer/internal/item-writer.d.ts +14 -0
- package/dist/checkpointer/internal/item-writer.d.ts.map +1 -0
- package/dist/checkpointer/internal/item-writer.js +68 -0
- package/dist/checkpointer/internal/item-writer.js.map +1 -0
- package/dist/checkpointer/internal/keys.d.ts +15 -0
- package/dist/checkpointer/internal/keys.d.ts.map +1 -0
- package/dist/checkpointer/internal/keys.js +52 -0
- package/dist/checkpointer/internal/keys.js.map +1 -0
- package/dist/checkpointer/internal/query.d.ts +16 -0
- package/dist/checkpointer/internal/query.d.ts.map +1 -0
- package/dist/checkpointer/internal/query.js +33 -0
- package/dist/checkpointer/internal/query.js.map +1 -0
- package/dist/checkpointer/internal/setup.d.ts +31 -0
- package/dist/checkpointer/internal/setup.d.ts.map +1 -0
- package/dist/checkpointer/internal/setup.js +29 -0
- package/dist/checkpointer/internal/setup.js.map +1 -0
- package/dist/checkpointer/internal/validation.d.ts +9 -0
- package/dist/checkpointer/internal/validation.d.ts.map +1 -0
- package/dist/checkpointer/internal/validation.js +28 -0
- package/dist/checkpointer/internal/validation.js.map +1 -0
- package/dist/checkpointer/saver.d.ts +21 -0
- package/dist/checkpointer/saver.d.ts.map +1 -0
- package/dist/checkpointer/saver.js +49 -0
- package/dist/checkpointer/saver.js.map +1 -0
- package/dist/checkpointer/types.d.ts +43 -0
- package/dist/checkpointer/types.d.ts.map +1 -0
- package/dist/{store/types/index.js → checkpointer/types.js} +1 -1
- package/dist/checkpointer/types.js.map +1 -0
- package/dist/factory/factory.d.ts +41 -0
- package/dist/factory/factory.d.ts.map +1 -0
- package/dist/factory/factory.js +49 -0
- package/dist/factory/factory.js.map +1 -0
- package/dist/history/actions/add-messages.d.ts +12 -7
- package/dist/history/actions/add-messages.d.ts.map +1 -1
- package/dist/history/actions/add-messages.js +50 -48
- package/dist/history/actions/add-messages.js.map +1 -1
- package/dist/history/actions/clear.d.ts +5 -11
- package/dist/history/actions/clear.d.ts.map +1 -1
- package/dist/history/actions/clear.js +28 -62
- package/dist/history/actions/clear.js.map +1 -1
- package/dist/history/actions/get-messages.d.ts +6 -13
- package/dist/history/actions/get-messages.d.ts.map +1 -1
- package/dist/history/actions/get-messages.js +23 -59
- package/dist/history/actions/get-messages.js.map +1 -1
- package/dist/history/actions/list-sessions.d.ts +6 -22
- package/dist/history/actions/list-sessions.d.ts.map +1 -1
- package/dist/history/actions/list-sessions.js +26 -69
- package/dist/history/actions/list-sessions.js.map +1 -1
- package/dist/history/actions/reconcile-count.d.ts +10 -0
- package/dist/history/actions/reconcile-count.d.ts.map +1 -0
- package/dist/history/actions/reconcile-count.js +39 -0
- package/dist/history/actions/reconcile-count.js.map +1 -0
- package/dist/history/chat-message-history.d.ts +36 -0
- package/dist/history/chat-message-history.d.ts.map +1 -0
- package/dist/history/chat-message-history.js +67 -0
- package/dist/history/chat-message-history.js.map +1 -0
- package/dist/history/internal/append-saga.d.ts +17 -0
- package/dist/history/internal/append-saga.d.ts.map +1 -0
- package/dist/history/internal/append-saga.js +94 -0
- package/dist/history/internal/append-saga.js.map +1 -0
- package/dist/history/internal/item-mapper.d.ts +12 -0
- package/dist/history/internal/item-mapper.d.ts.map +1 -0
- package/dist/history/internal/item-mapper.js +33 -0
- package/dist/history/internal/item-mapper.js.map +1 -0
- package/dist/history/internal/keys.d.ts +9 -0
- package/dist/history/internal/keys.d.ts.map +1 -0
- package/dist/history/internal/keys.js +22 -0
- package/dist/history/internal/keys.js.map +1 -0
- package/dist/history/internal/message-chunker.d.ts +14 -0
- package/dist/history/internal/message-chunker.d.ts.map +1 -0
- package/dist/history/internal/message-chunker.js +60 -0
- package/dist/history/internal/message-chunker.js.map +1 -0
- package/dist/history/internal/message-transaction.d.ts +17 -0
- package/dist/history/internal/message-transaction.d.ts.map +1 -0
- package/dist/history/internal/message-transaction.js +27 -0
- package/dist/history/internal/message-transaction.js.map +1 -0
- package/dist/history/internal/query.d.ts +6 -0
- package/dist/history/internal/query.d.ts.map +1 -0
- package/dist/history/internal/query.js +28 -0
- package/dist/history/internal/query.js.map +1 -0
- package/dist/history/internal/session-update.d.ts +20 -0
- package/dist/history/internal/session-update.d.ts.map +1 -0
- package/dist/history/internal/session-update.js +46 -0
- package/dist/history/internal/session-update.js.map +1 -0
- package/dist/history/internal/setup.d.ts +28 -0
- package/dist/history/internal/setup.d.ts.map +1 -0
- package/dist/history/internal/setup.js +27 -0
- package/dist/history/internal/setup.js.map +1 -0
- package/dist/history/internal/title-generator.d.ts +7 -0
- package/dist/history/internal/title-generator.d.ts.map +1 -0
- package/dist/history/internal/title-generator.js +16 -0
- package/dist/history/internal/title-generator.js.map +1 -0
- package/dist/history/internal/ttl-anchor.d.ts +12 -0
- package/dist/history/internal/ttl-anchor.d.ts.map +1 -0
- package/dist/history/internal/ttl-anchor.js +26 -0
- package/dist/history/internal/ttl-anchor.js.map +1 -0
- package/dist/history/session-adapter.d.ts +10 -26
- package/dist/history/session-adapter.d.ts.map +1 -1
- package/dist/history/session-adapter.js +15 -57
- package/dist/history/session-adapter.js.map +1 -1
- package/dist/history/types.d.ts +36 -0
- package/dist/history/types.d.ts.map +1 -0
- package/dist/history/types.js +3 -0
- package/dist/history/types.js.map +1 -0
- package/dist/index.d.ts +18 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -16
- package/dist/index.js.map +1 -1
- package/dist/shared/clock.d.ts +3 -0
- package/dist/shared/clock.d.ts.map +1 -0
- package/dist/shared/clock.js +8 -0
- package/dist/shared/clock.js.map +1 -0
- package/dist/shared/codec/codec.d.ts +44 -0
- package/dist/shared/codec/codec.d.ts.map +1 -0
- package/dist/shared/codec/codec.js +44 -0
- package/dist/shared/codec/codec.js.map +1 -0
- package/dist/shared/codec/compression.d.ts +25 -0
- package/dist/shared/codec/compression.d.ts.map +1 -0
- package/dist/shared/codec/compression.js +49 -0
- package/dist/shared/codec/compression.js.map +1 -0
- package/dist/shared/codec/descriptor-keys.d.ts +4 -0
- package/dist/shared/codec/descriptor-keys.d.ts.map +1 -0
- package/dist/shared/codec/descriptor-keys.js +14 -0
- package/dist/shared/codec/descriptor-keys.js.map +1 -0
- package/dist/shared/codec/json-serde.d.ts +8 -0
- package/dist/shared/codec/json-serde.d.ts.map +1 -0
- package/dist/shared/codec/json-serde.js +18 -0
- package/dist/shared/codec/json-serde.js.map +1 -0
- package/dist/shared/codec/s3/client.d.ts +6 -0
- package/dist/shared/codec/s3/client.d.ts.map +1 -0
- package/dist/shared/codec/s3/client.js +18 -0
- package/dist/shared/codec/s3/client.js.map +1 -0
- package/dist/shared/codec/s3/config.d.ts +16 -0
- package/dist/shared/codec/s3/config.d.ts.map +1 -0
- package/dist/shared/codec/s3/config.js +14 -0
- package/dist/shared/codec/s3/config.js.map +1 -0
- package/dist/shared/codec/s3/delete.d.ts +8 -0
- package/dist/shared/codec/s3/delete.d.ts.map +1 -0
- package/dist/shared/codec/s3/delete.js +29 -0
- package/dist/shared/codec/s3/delete.js.map +1 -0
- package/dist/shared/codec/s3/lifecycle.d.ts +8 -0
- package/dist/shared/codec/s3/lifecycle.d.ts.map +1 -0
- package/dist/shared/codec/s3/lifecycle.js +47 -0
- package/dist/shared/codec/s3/lifecycle.js.map +1 -0
- package/dist/shared/codec/s3/offloader.d.ts +33 -0
- package/dist/shared/codec/s3/offloader.d.ts.map +1 -0
- package/dist/shared/codec/s3/offloader.js +80 -0
- package/dist/shared/codec/s3/offloader.js.map +1 -0
- package/dist/shared/codec/s3/orphans.d.ts +16 -0
- package/dist/shared/codec/s3/orphans.d.ts.map +1 -0
- package/dist/shared/codec/s3/orphans.js +73 -0
- package/dist/shared/codec/s3/orphans.js.map +1 -0
- package/dist/shared/codec/s3/read-write.d.ts +14 -0
- package/dist/shared/codec/s3/read-write.d.ts.map +1 -0
- package/dist/shared/codec/s3/read-write.js +42 -0
- package/dist/shared/codec/s3/read-write.js.map +1 -0
- package/dist/shared/constants.d.ts +37 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +40 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/dynamodb/backoff.d.ts +15 -0
- package/dist/shared/dynamodb/backoff.d.ts.map +1 -0
- package/dist/shared/dynamodb/backoff.js +48 -0
- package/dist/shared/dynamodb/backoff.js.map +1 -0
- package/dist/shared/dynamodb/batch-write.d.ts +10 -0
- package/dist/shared/dynamodb/batch-write.d.ts.map +1 -0
- package/dist/shared/dynamodb/batch-write.js +17 -0
- package/dist/shared/dynamodb/batch-write.js.map +1 -0
- package/dist/shared/dynamodb/client.d.ts +21 -0
- package/dist/shared/dynamodb/client.d.ts.map +1 -0
- package/dist/shared/dynamodb/client.js +19 -0
- package/dist/shared/dynamodb/client.js.map +1 -0
- package/dist/shared/dynamodb/drain-unprocessed.d.ts +15 -0
- package/dist/shared/dynamodb/drain-unprocessed.d.ts.map +1 -0
- package/dist/shared/dynamodb/drain-unprocessed.js +35 -0
- package/dist/shared/dynamodb/drain-unprocessed.js.map +1 -0
- package/dist/shared/dynamodb/paginate-core.d.ts +22 -0
- package/dist/shared/dynamodb/paginate-core.d.ts.map +1 -0
- package/dist/shared/dynamodb/paginate-core.js +52 -0
- package/dist/shared/dynamodb/paginate-core.js.map +1 -0
- package/dist/shared/dynamodb/paginate.d.ts +15 -0
- package/dist/shared/dynamodb/paginate.d.ts.map +1 -0
- package/dist/shared/dynamodb/paginate.js +20 -0
- package/dist/shared/dynamodb/paginate.js.map +1 -0
- package/dist/shared/dynamodb/retry-classifier.d.ts +9 -0
- package/dist/shared/dynamodb/retry-classifier.d.ts.map +1 -0
- package/dist/shared/dynamodb/retry-classifier.js +75 -0
- package/dist/shared/dynamodb/retry-classifier.js.map +1 -0
- package/dist/shared/dynamodb/retry.d.ts +18 -0
- package/dist/shared/dynamodb/retry.d.ts.map +1 -0
- package/dist/shared/dynamodb/retry.js +53 -0
- package/dist/shared/dynamodb/retry.js.map +1 -0
- package/dist/shared/dynamodb/scan.d.ts +15 -0
- package/dist/shared/dynamodb/scan.d.ts.map +1 -0
- package/dist/shared/dynamodb/scan.js +20 -0
- package/dist/shared/dynamodb/scan.js.map +1 -0
- package/dist/shared/dynamodb/types.d.ts +24 -0
- package/dist/shared/dynamodb/types.d.ts.map +1 -0
- package/dist/shared/dynamodb/types.js +3 -0
- package/dist/shared/dynamodb/types.js.map +1 -0
- package/dist/shared/errors/base-error.d.ts +22 -0
- package/dist/shared/errors/base-error.d.ts.map +1 -0
- package/dist/shared/errors/base-error.js +28 -0
- package/dist/shared/errors/base-error.js.map +1 -0
- package/dist/shared/errors/error-code.d.ts +13 -0
- package/dist/shared/errors/error-code.d.ts.map +1 -0
- package/dist/shared/errors/error-code.js +17 -0
- package/dist/shared/errors/error-code.js.map +1 -0
- package/dist/shared/errors/errors.d.ts +47 -0
- package/dist/shared/errors/errors.d.ts.map +1 -0
- package/dist/shared/errors/errors.js +82 -0
- package/dist/shared/errors/errors.js.map +1 -0
- package/dist/shared/errors/wrap-error.d.ts +16 -0
- package/dist/shared/errors/wrap-error.d.ts.map +1 -0
- package/dist/shared/errors/wrap-error.js +30 -0
- package/dist/shared/errors/wrap-error.js.map +1 -0
- package/dist/shared/logging/logger.d.ts +14 -0
- package/dist/shared/logging/logger.d.ts.map +1 -0
- package/dist/shared/logging/logger.js +16 -0
- package/dist/shared/logging/logger.js.map +1 -0
- package/dist/shared/logging/redaction.d.ts +19 -0
- package/dist/shared/logging/redaction.d.ts.map +1 -0
- package/dist/shared/logging/redaction.js +67 -0
- package/dist/shared/logging/redaction.js.map +1 -0
- package/dist/shared/options.d.ts +32 -0
- package/dist/shared/options.d.ts.map +1 -0
- package/dist/shared/options.js +3 -0
- package/dist/shared/options.js.map +1 -0
- package/dist/shared/ulid.d.ts +10 -0
- package/dist/shared/ulid.d.ts.map +1 -0
- package/dist/shared/ulid.js +65 -0
- package/dist/shared/ulid.js.map +1 -0
- package/dist/shared/validation/primitives.d.ts +17 -0
- package/dist/shared/validation/primitives.d.ts.map +1 -0
- package/dist/shared/validation/primitives.js +71 -0
- package/dist/shared/validation/primitives.js.map +1 -0
- package/dist/shared/validation/ttl.d.ts +16 -0
- package/dist/shared/validation/ttl.d.ts.map +1 -0
- package/dist/shared/validation/ttl.js +26 -0
- package/dist/shared/validation/ttl.js.map +1 -0
- package/dist/store/actions/get.d.ts +5 -0
- package/dist/store/actions/get.d.ts.map +1 -0
- package/dist/store/actions/get.js +21 -0
- package/dist/store/actions/get.js.map +1 -0
- package/dist/store/actions/list-namespaces.d.ts +9 -0
- package/dist/store/actions/list-namespaces.d.ts.map +1 -0
- package/dist/store/actions/list-namespaces.js +46 -0
- package/dist/store/actions/list-namespaces.js.map +1 -0
- package/dist/store/actions/put.d.ts +11 -0
- package/dist/store/actions/put.d.ts.map +1 -0
- package/dist/store/actions/put.js +81 -0
- package/dist/store/actions/put.js.map +1 -0
- package/dist/store/actions/reconcile-vector-index.d.ts +17 -0
- package/dist/store/actions/reconcile-vector-index.d.ts.map +1 -0
- package/dist/store/actions/reconcile-vector-index.js +27 -0
- package/dist/store/actions/reconcile-vector-index.js.map +1 -0
- package/dist/store/actions/search.d.ts +10 -0
- package/dist/store/actions/search.d.ts.map +1 -0
- package/dist/store/actions/search.js +72 -0
- package/dist/store/actions/search.js.map +1 -0
- package/dist/store/internal/filter.d.ts +10 -0
- package/dist/store/internal/filter.d.ts.map +1 -0
- package/dist/store/internal/filter.js +37 -0
- package/dist/store/internal/filter.js.map +1 -0
- package/dist/store/internal/index-reconcile.d.ts +22 -0
- package/dist/store/internal/index-reconcile.d.ts.map +1 -0
- package/dist/store/internal/index-reconcile.js +68 -0
- package/dist/store/internal/index-reconcile.js.map +1 -0
- package/dist/store/internal/index-sync.d.ts +11 -0
- package/dist/store/internal/index-sync.d.ts.map +1 -0
- package/dist/store/internal/index-sync.js +26 -0
- package/dist/store/internal/index-sync.js.map +1 -0
- package/dist/store/internal/item-mapper.d.ts +23 -0
- package/dist/store/internal/item-mapper.d.ts.map +1 -0
- package/dist/store/internal/item-mapper.js +51 -0
- package/dist/store/internal/item-mapper.js.map +1 -0
- package/dist/store/internal/keys.d.ts +18 -0
- package/dist/store/internal/keys.d.ts.map +1 -0
- package/dist/store/internal/keys.js +36 -0
- package/dist/store/internal/keys.js.map +1 -0
- package/dist/store/internal/namespace-match.d.ts +12 -0
- package/dist/store/internal/namespace-match.d.ts.map +1 -0
- package/dist/store/internal/namespace-match.js +41 -0
- package/dist/store/internal/namespace-match.js.map +1 -0
- package/dist/store/internal/query.d.ts +6 -0
- package/dist/store/internal/query.d.ts.map +1 -0
- package/dist/store/internal/query.js +32 -0
- package/dist/store/internal/query.js.map +1 -0
- package/dist/store/internal/ranker.d.ts +13 -0
- package/dist/store/internal/ranker.d.ts.map +1 -0
- package/dist/store/internal/ranker.js +29 -0
- package/dist/store/internal/ranker.js.map +1 -0
- package/dist/store/internal/semantic-search.d.ts +13 -0
- package/dist/store/internal/semantic-search.d.ts.map +1 -0
- package/dist/store/internal/semantic-search.js +47 -0
- package/dist/store/internal/semantic-search.js.map +1 -0
- package/dist/store/internal/setup.d.ts +31 -0
- package/dist/store/internal/setup.d.ts.map +1 -0
- package/dist/store/internal/setup.js +29 -0
- package/dist/store/internal/setup.js.map +1 -0
- package/dist/store/internal/validation.d.ts +7 -0
- package/dist/store/internal/validation.d.ts.map +1 -0
- package/dist/store/internal/validation.js +26 -0
- package/dist/store/internal/validation.js.map +1 -0
- package/dist/store/store.d.ts +24 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +58 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/types.d.ts +28 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +3 -0
- package/dist/store/types.js.map +1 -0
- package/dist/store/vector-backend.d.ts +27 -0
- package/dist/store/vector-backend.d.ts.map +1 -0
- package/dist/store/vector-backend.js +3 -0
- package/dist/store/vector-backend.js.map +1 -0
- package/package.json +21 -22
- package/dist/checkpointer/actions/index.d.ts +0 -5
- package/dist/checkpointer/actions/index.d.ts.map +0 -1
- package/dist/checkpointer/actions/index.js +0 -21
- package/dist/checkpointer/actions/index.js.map +0 -1
- package/dist/checkpointer/actions/validate-configurable.d.ts +0 -10
- package/dist/checkpointer/actions/validate-configurable.d.ts.map +0 -1
- package/dist/checkpointer/actions/validate-configurable.js +0 -39
- package/dist/checkpointer/actions/validate-configurable.js.map +0 -1
- package/dist/checkpointer/actions/writer.d.ts +0 -52
- package/dist/checkpointer/actions/writer.d.ts.map +0 -1
- package/dist/checkpointer/actions/writer.js +0 -109
- package/dist/checkpointer/actions/writer.js.map +0 -1
- package/dist/checkpointer/index.d.ts +0 -118
- package/dist/checkpointer/index.d.ts.map +0 -1
- package/dist/checkpointer/index.js +0 -393
- package/dist/checkpointer/index.js.map +0 -1
- package/dist/checkpointer/types/index.d.ts +0 -232
- package/dist/checkpointer/types/index.d.ts.map +0 -1
- package/dist/checkpointer/types/index.js +0 -13
- package/dist/checkpointer/types/index.js.map +0 -1
- package/dist/checkpointer/utils/deserialization.d.ts +0 -20
- package/dist/checkpointer/utils/deserialization.d.ts.map +0 -1
- package/dist/checkpointer/utils/deserialization.js +0 -81
- package/dist/checkpointer/utils/deserialization.js.map +0 -1
- package/dist/checkpointer/utils/index.d.ts +0 -7
- package/dist/checkpointer/utils/index.d.ts.map +0 -1
- package/dist/checkpointer/utils/index.js +0 -27
- package/dist/checkpointer/utils/index.js.map +0 -1
- package/dist/checkpointer/utils/validation.d.ts +0 -48
- package/dist/checkpointer/utils/validation.d.ts.map +0 -1
- package/dist/checkpointer/utils/validation.js +0 -235
- package/dist/checkpointer/utils/validation.js.map +0 -1
- package/dist/factory.d.ts +0 -153
- package/dist/factory.d.ts.map +0 -1
- package/dist/factory.js +0 -206
- package/dist/factory.js.map +0 -1
- package/dist/history/actions/add-message.d.ts +0 -10
- package/dist/history/actions/add-message.d.ts.map +0 -1
- package/dist/history/actions/add-message.js +0 -24
- package/dist/history/actions/add-message.js.map +0 -1
- package/dist/history/actions/index.d.ts +0 -9
- package/dist/history/actions/index.d.ts.map +0 -1
- package/dist/history/actions/index.js +0 -17
- package/dist/history/actions/index.js.map +0 -1
- package/dist/history/index.d.ts +0 -118
- package/dist/history/index.d.ts.map +0 -1
- package/dist/history/index.js +0 -179
- package/dist/history/index.js.map +0 -1
- package/dist/history/types/index.d.ts +0 -184
- package/dist/history/types/index.d.ts.map +0 -1
- package/dist/history/types/index.js +0 -7
- package/dist/history/types/index.js.map +0 -1
- package/dist/history/utils/index.d.ts +0 -9
- package/dist/history/utils/index.d.ts.map +0 -1
- package/dist/history/utils/index.js +0 -27
- package/dist/history/utils/index.js.map +0 -1
- package/dist/history/utils/optimistic-retry.d.ts +0 -31
- package/dist/history/utils/optimistic-retry.d.ts.map +0 -1
- package/dist/history/utils/optimistic-retry.js +0 -74
- package/dist/history/utils/optimistic-retry.js.map +0 -1
- package/dist/history/utils/title-generator.d.ts +0 -12
- package/dist/history/utils/title-generator.d.ts.map +0 -1
- package/dist/history/utils/title-generator.js +0 -57
- package/dist/history/utils/title-generator.js.map +0 -1
- package/dist/history/utils/update-expression-builder.d.ts +0 -55
- package/dist/history/utils/update-expression-builder.d.ts.map +0 -1
- package/dist/history/utils/update-expression-builder.js +0 -112
- package/dist/history/utils/update-expression-builder.js.map +0 -1
- package/dist/history/utils/validation.d.ts +0 -68
- package/dist/history/utils/validation.d.ts.map +0 -1
- package/dist/history/utils/validation.js +0 -213
- package/dist/history/utils/validation.js.map +0 -1
- package/dist/shared/index.d.ts +0 -5
- package/dist/shared/index.d.ts.map +0 -1
- package/dist/shared/index.js +0 -21
- package/dist/shared/index.js.map +0 -1
- package/dist/shared/utils/batch-write.d.ts +0 -74
- package/dist/shared/utils/batch-write.d.ts.map +0 -1
- package/dist/shared/utils/batch-write.js +0 -110
- package/dist/shared/utils/batch-write.js.map +0 -1
- package/dist/shared/utils/client-factory.d.ts +0 -25
- package/dist/shared/utils/client-factory.d.ts.map +0 -1
- package/dist/shared/utils/client-factory.js +0 -23
- package/dist/shared/utils/client-factory.js.map +0 -1
- package/dist/shared/utils/compressor.d.ts +0 -66
- package/dist/shared/utils/compressor.d.ts.map +0 -1
- package/dist/shared/utils/compressor.js +0 -133
- package/dist/shared/utils/compressor.js.map +0 -1
- package/dist/shared/utils/constants.d.ts +0 -13
- package/dist/shared/utils/constants.d.ts.map +0 -1
- package/dist/shared/utils/constants.js +0 -35
- package/dist/shared/utils/constants.js.map +0 -1
- package/dist/shared/utils/index.d.ts +0 -14
- package/dist/shared/utils/index.d.ts.map +0 -1
- package/dist/shared/utils/index.js +0 -30
- package/dist/shared/utils/index.js.map +0 -1
- package/dist/shared/utils/logger.d.ts +0 -75
- package/dist/shared/utils/logger.d.ts.map +0 -1
- package/dist/shared/utils/logger.js +0 -148
- package/dist/shared/utils/logger.js.map +0 -1
- package/dist/shared/utils/retry.d.ts +0 -26
- package/dist/shared/utils/retry.d.ts.map +0 -1
- package/dist/shared/utils/retry.js +0 -169
- package/dist/shared/utils/retry.js.map +0 -1
- package/dist/shared/utils/s3-offloader.d.ts +0 -153
- package/dist/shared/utils/s3-offloader.d.ts.map +0 -1
- package/dist/shared/utils/s3-offloader.js +0 -281
- package/dist/shared/utils/s3-offloader.js.map +0 -1
- package/dist/shared/utils/s3-orphans.d.ts +0 -16
- package/dist/shared/utils/s3-orphans.d.ts.map +0 -1
- package/dist/shared/utils/s3-orphans.js +0 -79
- package/dist/shared/utils/s3-orphans.js.map +0 -1
- package/dist/shared/utils/sleep.d.ts +0 -48
- package/dist/shared/utils/sleep.d.ts.map +0 -1
- package/dist/shared/utils/sleep.js +0 -82
- package/dist/shared/utils/sleep.js.map +0 -1
- package/dist/shared/utils/ttl.d.ts +0 -24
- package/dist/shared/utils/ttl.d.ts.map +0 -1
- package/dist/shared/utils/ttl.js +0 -43
- package/dist/shared/utils/ttl.js.map +0 -1
- package/dist/store/actions/get-operation.d.ts +0 -11
- package/dist/store/actions/get-operation.d.ts.map +0 -1
- package/dist/store/actions/get-operation.js +0 -42
- package/dist/store/actions/get-operation.js.map +0 -1
- package/dist/store/actions/index.d.ts +0 -5
- package/dist/store/actions/index.d.ts.map +0 -1
- package/dist/store/actions/index.js +0 -21
- package/dist/store/actions/index.js.map +0 -1
- package/dist/store/actions/list-namespaces-operation.d.ts +0 -10
- package/dist/store/actions/list-namespaces-operation.d.ts.map +0 -1
- package/dist/store/actions/list-namespaces-operation.js +0 -227
- package/dist/store/actions/list-namespaces-operation.js.map +0 -1
- package/dist/store/actions/put-operation.d.ts +0 -9
- package/dist/store/actions/put-operation.d.ts.map +0 -1
- package/dist/store/actions/put-operation.js +0 -107
- package/dist/store/actions/put-operation.js.map +0 -1
- package/dist/store/actions/search-operation.d.ts +0 -17
- package/dist/store/actions/search-operation.d.ts.map +0 -1
- package/dist/store/actions/search-operation.js +0 -203
- package/dist/store/actions/search-operation.js.map +0 -1
- package/dist/store/index.d.ts +0 -82
- package/dist/store/index.d.ts.map +0 -1
- package/dist/store/index.js +0 -172
- package/dist/store/index.js.map +0 -1
- package/dist/store/types/index.d.ts +0 -131
- package/dist/store/types/index.d.ts.map +0 -1
- package/dist/store/types/index.js.map +0 -1
- package/dist/store/utils/filter.d.ts +0 -16
- package/dist/store/utils/filter.d.ts.map +0 -1
- package/dist/store/utils/filter.js +0 -133
- package/dist/store/utils/filter.js.map +0 -1
- package/dist/store/utils/index.d.ts +0 -7
- package/dist/store/utils/index.d.ts.map +0 -1
- package/dist/store/utils/index.js +0 -27
- package/dist/store/utils/index.js.map +0 -1
- package/dist/store/utils/validation.d.ts +0 -61
- package/dist/store/utils/validation.d.ts.map +0 -1
- package/dist/store/utils/validation.js +0 -260
- package/dist/store/utils/validation.js.map +0 -1
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.searchOperationAction = void 0;
|
|
4
|
-
const utils_1 = require("../../shared/utils");
|
|
5
|
-
const utils_2 = require("../utils");
|
|
6
|
-
/**
|
|
7
|
-
* Search for memory items in DynamoDB
|
|
8
|
-
*
|
|
9
|
-
* @remarks
|
|
10
|
-
* **Pagination trade-off:** DynamoDB does not support native offset-based pagination.
|
|
11
|
-
* When `offset` is used, `limit + offset` items are loaded into memory and sliced.
|
|
12
|
-
* For large offsets (up to 10,000), this can be memory-intensive.
|
|
13
|
-
* Consider cursor-based pagination for high-offset use cases.
|
|
14
|
-
*
|
|
15
|
-
* @param params - Parameters for the search operation
|
|
16
|
-
* @returns Array of matching items with optional similarity scores
|
|
17
|
-
* @throws Error if the operation fails or validation fails
|
|
18
|
-
*/
|
|
19
|
-
const searchOperationAction = async (params) => {
|
|
20
|
-
const { client, embedding, memoryTableName, userId, op, fallbackToLexicalOnEmbeddingFailure = false, signal, } = params;
|
|
21
|
-
const limit = op.limit ?? 100;
|
|
22
|
-
const offset = op.offset ?? 0;
|
|
23
|
-
// Validate inputs
|
|
24
|
-
(0, utils_2.validateUserId)(userId);
|
|
25
|
-
// Allow empty namespace prefix to search all namespaces
|
|
26
|
-
if (op.namespacePrefix.length > 0) {
|
|
27
|
-
(0, utils_2.validateNamespace)(op.namespacePrefix);
|
|
28
|
-
}
|
|
29
|
-
(0, utils_2.validatePagination)(limit, offset);
|
|
30
|
-
const namespacePrefix = op.namespacePrefix.join('/');
|
|
31
|
-
const queryParams = {
|
|
32
|
-
TableName: memoryTableName,
|
|
33
|
-
};
|
|
34
|
-
// Build ExpressionAttributeValues and ExpressionAttributeNames
|
|
35
|
-
const expressionAttributeValues = {
|
|
36
|
-
':uid': userId,
|
|
37
|
-
};
|
|
38
|
-
const expressionAttributeNames = {};
|
|
39
|
-
// Build KeyConditionExpression
|
|
40
|
-
let keyConditionExpression = 'user_id = :uid';
|
|
41
|
-
if (namespacePrefix) {
|
|
42
|
-
// Use begins_with on namespace_key for hierarchical search. NOTE: we do NOT
|
|
43
|
-
// append a separator — `namespace_key` is `<nsPath>#<key>`, so appending "#"
|
|
44
|
-
// would miss sub-namespaces ("users/alice#x" doesn't begin with "users#"),
|
|
45
|
-
// and appending "/" would miss exact matches. Raw prefix is over-inclusive
|
|
46
|
-
// (`users` also matches `users_v2`) but the in-memory ordering guarantees
|
|
47
|
-
// correctness; the spurious rows are negligible in practice.
|
|
48
|
-
expressionAttributeValues[':nsp'] = namespacePrefix;
|
|
49
|
-
keyConditionExpression += ' AND begins_with(namespace_key, :nsp)';
|
|
50
|
-
}
|
|
51
|
-
queryParams.KeyConditionExpression = keyConditionExpression;
|
|
52
|
-
queryParams.ExpressionAttributeValues = expressionAttributeValues;
|
|
53
|
-
// Build filter expression if provided
|
|
54
|
-
if (op.filter && Object.keys(op.filter).length > 0) {
|
|
55
|
-
const filterResult = (0, utils_2.buildFilterExpression)(op.filter, expressionAttributeNames, expressionAttributeValues);
|
|
56
|
-
if (filterResult.filterExpression) {
|
|
57
|
-
queryParams.FilterExpression = filterResult.filterExpression;
|
|
58
|
-
queryParams.ExpressionAttributeNames = expressionAttributeNames;
|
|
59
|
-
queryParams.ExpressionAttributeValues = expressionAttributeValues;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
// When semantic search is requested, we must fetch ALL matching items so that
|
|
63
|
-
// cosine similarity ranking operates on the full corpus — not just an arbitrary
|
|
64
|
-
// DynamoDB page. For non-semantic queries we keep the original capped fetch.
|
|
65
|
-
const isSemanticSearch = !!op.query && !!embedding;
|
|
66
|
-
const fetchTarget = isSemanticSearch ? undefined : limit + offset;
|
|
67
|
-
if (op.query && !embedding) {
|
|
68
|
-
// User asked for text search but no embedding is configured — the query is
|
|
69
|
-
// effectively dropped. Warn so callers aren't surprised by unfiltered results.
|
|
70
|
-
(0, utils_1.getLogger)().warn('search operation received `query` but no embedding is configured on the store; ' +
|
|
71
|
-
'text search is skipped and results reflect only filter/namespace matches');
|
|
72
|
-
}
|
|
73
|
-
const items = [];
|
|
74
|
-
let lastEvaluatedKey;
|
|
75
|
-
let iterationCount = 0;
|
|
76
|
-
// Execute a query with retry logic and safety limits
|
|
77
|
-
do {
|
|
78
|
-
// Prevent infinite loops
|
|
79
|
-
iterationCount++;
|
|
80
|
-
if (iterationCount > utils_2.ValidationConstants.MAX_LOOP_ITERATIONS) {
|
|
81
|
-
throw new Error('Search operation exceeded maximum iteration limit');
|
|
82
|
-
}
|
|
83
|
-
// Size each page based on items still needed (items.length, not ScannedCount).
|
|
84
|
-
// ScannedCount grows even for filtered-out rows, so gating by it can terminate
|
|
85
|
-
// the loop early when a FilterExpression is active.
|
|
86
|
-
queryParams.Limit = fetchTarget ? Math.max(1, fetchTarget - items.length) : undefined;
|
|
87
|
-
if (lastEvaluatedKey) {
|
|
88
|
-
queryParams.ExclusiveStartKey = lastEvaluatedKey;
|
|
89
|
-
}
|
|
90
|
-
const response = await (0, utils_2.withDynamoDBRetry)(async () => {
|
|
91
|
-
return await client.query(queryParams);
|
|
92
|
-
}, { signal });
|
|
93
|
-
if (response.Items && response.Items.length > 0) {
|
|
94
|
-
// Memory cap: non-semantic search throws (hard fail, surfaces to caller).
|
|
95
|
-
// Semantic search logs a warning and returns a partial (possibly suboptimal)
|
|
96
|
-
// ranked corpus instead — better than nothing for a best-effort relevance feature.
|
|
97
|
-
if (items.length + response.Items.length > utils_2.ValidationConstants.MAX_TOTAL_ITEMS_IN_MEMORY) {
|
|
98
|
-
if (isSemanticSearch) {
|
|
99
|
-
(0, utils_1.getLogger)().warn(`Semantic search corpus truncated at ${utils_2.ValidationConstants.MAX_TOTAL_ITEMS_IN_MEMORY} items — ` +
|
|
100
|
-
`results may not include the most relevant matches`);
|
|
101
|
-
const remaining = utils_2.ValidationConstants.MAX_TOTAL_ITEMS_IN_MEMORY - items.length;
|
|
102
|
-
if (remaining > 0)
|
|
103
|
-
items.push(...response.Items.slice(0, remaining));
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
106
|
-
throw new Error('Search operation exceeded maximum items in memory limit');
|
|
107
|
-
}
|
|
108
|
-
items.push(...response.Items);
|
|
109
|
-
}
|
|
110
|
-
lastEvaluatedKey = response.LastEvaluatedKey;
|
|
111
|
-
if (!lastEvaluatedKey)
|
|
112
|
-
break;
|
|
113
|
-
if (fetchTarget && items.length >= fetchTarget)
|
|
114
|
-
break;
|
|
115
|
-
} while (lastEvaluatedKey);
|
|
116
|
-
if (items.length > 0) {
|
|
117
|
-
let paginatedItems;
|
|
118
|
-
if (isSemanticSearch) {
|
|
119
|
-
// Rank the ENTIRE corpus by similarity, then paginate
|
|
120
|
-
const ranked = await applySemanticSearch(items, op.query, embedding, fallbackToLexicalOnEmbeddingFailure);
|
|
121
|
-
paginatedItems = ranked.slice(offset, offset + limit);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
paginatedItems = items.slice(offset, offset + limit);
|
|
125
|
-
}
|
|
126
|
-
return paginatedItems.map((item) => ({
|
|
127
|
-
namespace: item.namespace.split('/'),
|
|
128
|
-
key: item.key,
|
|
129
|
-
value: item.value,
|
|
130
|
-
createdAt: new Date(item.createdAt),
|
|
131
|
-
updatedAt: new Date(item.updatedAt),
|
|
132
|
-
score: item.score,
|
|
133
|
-
}));
|
|
134
|
-
}
|
|
135
|
-
return [];
|
|
136
|
-
};
|
|
137
|
-
exports.searchOperationAction = searchOperationAction;
|
|
138
|
-
/**
|
|
139
|
-
* Apply semantic search using vector embeddings and cosine similarity.
|
|
140
|
-
*
|
|
141
|
-
* Fail-closed by default: an `embedQuery()` failure propagates to the caller so
|
|
142
|
-
* they know the returned ranking is not what was requested. Pass
|
|
143
|
-
* `fallbackToLexical = true` to opt in to the legacy fail-open behavior where
|
|
144
|
-
* embedding errors are logged and the raw, unranked items are returned.
|
|
145
|
-
*/
|
|
146
|
-
async function applySemanticSearch(items, query, embedding, fallbackToLexical) {
|
|
147
|
-
let queryEmbedding;
|
|
148
|
-
try {
|
|
149
|
-
queryEmbedding = await embedding.embedQuery(query);
|
|
150
|
-
}
|
|
151
|
-
catch (error) {
|
|
152
|
-
if (!fallbackToLexical) {
|
|
153
|
-
// Fail-closed: surface the failure so the caller can retry or degrade explicitly.
|
|
154
|
-
throw error;
|
|
155
|
-
}
|
|
156
|
-
(0, utils_1.getLogger)().warn('Semantic search embedding failed — returning unranked results (fallbackToLexicalOnEmbeddingFailure=true):', error);
|
|
157
|
-
return items;
|
|
158
|
-
}
|
|
159
|
-
try {
|
|
160
|
-
const itemsWithScores = items
|
|
161
|
-
.map((item) => {
|
|
162
|
-
if (!item.embedding || !Array.isArray(item.embedding) || item.embedding.length === 0) {
|
|
163
|
-
// Items without embeddings get score 0
|
|
164
|
-
return { item: { ...item, score: 0 }, score: 0 };
|
|
165
|
-
}
|
|
166
|
-
// Calculate similarity for each embedding (multiple fields can be embedded)
|
|
167
|
-
// Take the maximum similarity across all embeddings
|
|
168
|
-
const similarities = item.embedding.map((emb) => cosineSimilarity(queryEmbedding, emb));
|
|
169
|
-
const maxSimilarity = Math.max(...similarities);
|
|
170
|
-
return {
|
|
171
|
-
item: { ...item, score: maxSimilarity },
|
|
172
|
-
score: maxSimilarity,
|
|
173
|
-
};
|
|
174
|
-
})
|
|
175
|
-
.filter((result) => result.score > 0); // Only include items with embeddings
|
|
176
|
-
// Sort by similarity score (highest first)
|
|
177
|
-
itemsWithScores.sort((a, b) => b.score - a.score);
|
|
178
|
-
return itemsWithScores.map((result) => result.item);
|
|
179
|
-
}
|
|
180
|
-
catch (error) {
|
|
181
|
-
if (!fallbackToLexical) {
|
|
182
|
-
throw error;
|
|
183
|
-
}
|
|
184
|
-
(0, utils_1.getLogger)().warn('Semantic search ranking failed — returning unranked results (fallbackToLexicalOnEmbeddingFailure=true):', error);
|
|
185
|
-
return items;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Calculate cosine similarity between two vectors
|
|
190
|
-
*/
|
|
191
|
-
function cosineSimilarity(vecA, vecB) {
|
|
192
|
-
if (!vecA || !vecB || vecA.length !== vecB.length || vecA.length === 0) {
|
|
193
|
-
return 0;
|
|
194
|
-
}
|
|
195
|
-
const dotProduct = vecA.reduce((sum, a, i) => sum + a * vecB[i], 0);
|
|
196
|
-
const magnitudeA = Math.sqrt(vecA.reduce((sum, a) => sum + a * a, 0));
|
|
197
|
-
const magnitudeB = Math.sqrt(vecB.reduce((sum, b) => sum + b * b, 0));
|
|
198
|
-
if (magnitudeA === 0 || magnitudeB === 0) {
|
|
199
|
-
return 0;
|
|
200
|
-
}
|
|
201
|
-
return dotProduct / (magnitudeA * magnitudeB);
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=search-operation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-operation.js","sourceRoot":"","sources":["../../../src/store/actions/search-operation.ts"],"names":[],"mappings":"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"}
|
package/dist/store/index.d.ts
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DynamoDB-based store implementation for LangGraph
|
|
3
|
-
* Provides persistent storage for memory items with optional semantic search via embeddings
|
|
4
|
-
*/
|
|
5
|
-
import type { RunnableConfig } from '@langchain/core/runnables';
|
|
6
|
-
import { BaseStore, type Operation, type OperationResults } from '@langchain/langgraph';
|
|
7
|
-
import type { DynamoDBStoreOptions } from './types';
|
|
8
|
-
export declare class DynamoDBStore extends BaseStore {
|
|
9
|
-
private readonly ddbClient;
|
|
10
|
-
private readonly client;
|
|
11
|
-
private readonly memoryTableName;
|
|
12
|
-
private readonly embedding?;
|
|
13
|
-
private readonly ttlDays?;
|
|
14
|
-
private readonly fallbackToLexicalOnEmbeddingFailure;
|
|
15
|
-
private readonly ownsClient;
|
|
16
|
-
/**
|
|
17
|
-
* Create a new DynamoDB store instance
|
|
18
|
-
*
|
|
19
|
-
* @param options - Configuration options for the store
|
|
20
|
-
* @param options.memoryTableName - Name of the DynamoDB table to use
|
|
21
|
-
* @param options.embedding - Optional embeddings for semantic search (any LangChain Embeddings provider)
|
|
22
|
-
* @param options.clientConfig - Optional DynamoDB client configuration
|
|
23
|
-
* @param options.client - Optional pre-built DynamoDBDocument client (takes precedence over clientConfig)
|
|
24
|
-
* @param options.ttlDays - Optional TTL in days for stored items
|
|
25
|
-
*/
|
|
26
|
-
constructor(options: DynamoDBStoreOptions);
|
|
27
|
-
/**
|
|
28
|
-
* Release underlying DynamoDB client resources.
|
|
29
|
-
* Call this when the store is no longer needed to prevent resource leaks.
|
|
30
|
-
* Skips cleanup if a shared client was injected via options.
|
|
31
|
-
*/
|
|
32
|
-
destroy(): void;
|
|
33
|
-
/**
|
|
34
|
-
* Extract and validate user ID from config
|
|
35
|
-
*
|
|
36
|
-
* @param config - Runnable configuration
|
|
37
|
-
* @returns User ID string
|
|
38
|
-
* @throws Error if user_id is not provided or invalid
|
|
39
|
-
*/
|
|
40
|
-
private getUserId;
|
|
41
|
-
/**
|
|
42
|
-
* Execute a batch of operations in parallel
|
|
43
|
-
*
|
|
44
|
-
* @param operations - Array of operations to execute
|
|
45
|
-
* @param config - Runnable configuration containing user_id
|
|
46
|
-
* @returns Array of results corresponding to each operation
|
|
47
|
-
* @throws Error if user_id is not provided in config or if any operation fails
|
|
48
|
-
*/
|
|
49
|
-
batch<Op extends Operation[]>(operations: Op, config?: RunnableConfig): Promise<OperationResults<Op>>;
|
|
50
|
-
/**
|
|
51
|
-
* Get a single item from the store
|
|
52
|
-
*
|
|
53
|
-
* @param userId - User ID for the item
|
|
54
|
-
* @param op - Get operation parameters
|
|
55
|
-
* @returns The item if found, null otherwise
|
|
56
|
-
*/
|
|
57
|
-
private getOperation;
|
|
58
|
-
/**
|
|
59
|
-
* Put an item into the store
|
|
60
|
-
*
|
|
61
|
-
* @param userId - User ID for the item
|
|
62
|
-
* @param op - Put operation parameters
|
|
63
|
-
*/
|
|
64
|
-
private putOperation;
|
|
65
|
-
/**
|
|
66
|
-
* Search for items in the store with optional semantic search
|
|
67
|
-
*
|
|
68
|
-
* @param userId - User ID for filtering items
|
|
69
|
-
* @param op - Search operation parameters
|
|
70
|
-
* @returns Array of matching items with optional similarity scores
|
|
71
|
-
*/
|
|
72
|
-
private searchOperation;
|
|
73
|
-
/**
|
|
74
|
-
* List unique namespaces in the store
|
|
75
|
-
*
|
|
76
|
-
* @param userId - User ID for filtering namespaces
|
|
77
|
-
* @param op - List namespaces operation parameters
|
|
78
|
-
* @returns Array of namespace paths
|
|
79
|
-
*/
|
|
80
|
-
private listNamespacesOperation;
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,SAAS,EAMT,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAU9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGpD,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAAU;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IAErC;;;;;;;;;OASG;gBACS,OAAO,EAAE,oBAAoB;IAazC;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAMf;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAQjB;;;;;;;OAOG;IACG,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,EAChC,UAAU,EAAE,EAAE,EACd,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAmChC;;;;;;OAMG;YACW,YAAY;IAc1B;;;;;OAKG;YACW,YAAY;IAgB1B;;;;;;OAMG;YACW,eAAe;IAgB7B;;;;;;OAMG;YACW,uBAAuB;CAatC"}
|
package/dist/store/index.js
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* DynamoDB-based store implementation for LangGraph
|
|
4
|
-
* Provides persistent storage for memory items with optional semantic search via embeddings
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.DynamoDBStore = void 0;
|
|
8
|
-
const langgraph_1 = require("@langchain/langgraph");
|
|
9
|
-
const shared_1 = require("../shared");
|
|
10
|
-
const actions_1 = require("./actions");
|
|
11
|
-
const utils_1 = require("./utils");
|
|
12
|
-
class DynamoDBStore extends langgraph_1.BaseStore {
|
|
13
|
-
ddbClient;
|
|
14
|
-
client;
|
|
15
|
-
memoryTableName;
|
|
16
|
-
embedding;
|
|
17
|
-
ttlDays;
|
|
18
|
-
fallbackToLexicalOnEmbeddingFailure;
|
|
19
|
-
ownsClient;
|
|
20
|
-
/**
|
|
21
|
-
* Create a new DynamoDB store instance
|
|
22
|
-
*
|
|
23
|
-
* @param options - Configuration options for the store
|
|
24
|
-
* @param options.memoryTableName - Name of the DynamoDB table to use
|
|
25
|
-
* @param options.embedding - Optional embeddings for semantic search (any LangChain Embeddings provider)
|
|
26
|
-
* @param options.clientConfig - Optional DynamoDB client configuration
|
|
27
|
-
* @param options.client - Optional pre-built DynamoDBDocument client (takes precedence over clientConfig)
|
|
28
|
-
* @param options.ttlDays - Optional TTL in days for stored items
|
|
29
|
-
*/
|
|
30
|
-
constructor(options) {
|
|
31
|
-
super();
|
|
32
|
-
this.memoryTableName = options.memoryTableName;
|
|
33
|
-
({
|
|
34
|
-
ddbClient: this.ddbClient,
|
|
35
|
-
client: this.client,
|
|
36
|
-
ownsClient: this.ownsClient,
|
|
37
|
-
} = (0, shared_1.resolveDynamoDBClient)(options));
|
|
38
|
-
this.embedding = options.embedding;
|
|
39
|
-
this.ttlDays = options.ttlDays;
|
|
40
|
-
this.fallbackToLexicalOnEmbeddingFailure = options.fallbackToLexicalOnEmbeddingFailure ?? false;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Release underlying DynamoDB client resources.
|
|
44
|
-
* Call this when the store is no longer needed to prevent resource leaks.
|
|
45
|
-
* Skips cleanup if a shared client was injected via options.
|
|
46
|
-
*/
|
|
47
|
-
destroy() {
|
|
48
|
-
if (this.ownsClient && this.ddbClient) {
|
|
49
|
-
this.ddbClient.destroy();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Extract and validate user ID from config
|
|
54
|
-
*
|
|
55
|
-
* @param config - Runnable configuration
|
|
56
|
-
* @returns User ID string
|
|
57
|
-
* @throws Error if user_id is not provided or invalid
|
|
58
|
-
*/
|
|
59
|
-
getUserId(config) {
|
|
60
|
-
const userId = config?.configurable?.user_id;
|
|
61
|
-
if (!userId || typeof userId !== 'string') {
|
|
62
|
-
throw new Error('Field user_id is required in the RunnableConfig for DynamoDBStore.');
|
|
63
|
-
}
|
|
64
|
-
return userId;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Execute a batch of operations in parallel
|
|
68
|
-
*
|
|
69
|
-
* @param operations - Array of operations to execute
|
|
70
|
-
* @param config - Runnable configuration containing user_id
|
|
71
|
-
* @returns Array of results corresponding to each operation
|
|
72
|
-
* @throws Error if user_id is not provided in config or if any operation fails
|
|
73
|
-
*/
|
|
74
|
-
async batch(operations, config) {
|
|
75
|
-
const userId = this.getUserId(config);
|
|
76
|
-
// Validate batch size to prevent resource exhaustion
|
|
77
|
-
(0, utils_1.validateBatchSize)(operations.length);
|
|
78
|
-
// Honor LangChain's RunnableConfig.signal — aborted signals reject every op.
|
|
79
|
-
const signal = config?.signal;
|
|
80
|
-
signal?.throwIfAborted();
|
|
81
|
-
// Operation type dispatch — relies on LangGraph's Operation union discriminating
|
|
82
|
-
// properties: GetOperation has {namespace, key}, PutOperation adds {value},
|
|
83
|
-
// SearchOperation has {namespacePrefix}, ListNamespacesOperation has {limit, offset}
|
|
84
|
-
// without {namespacePrefix} or {key}. This mirrors the official LangGraph stores.
|
|
85
|
-
const promises = operations.map(async (op, index) => {
|
|
86
|
-
if ('key' in op && !('value' in op)) {
|
|
87
|
-
return await this.getOperation(userId, op, signal);
|
|
88
|
-
}
|
|
89
|
-
if ('key' in op && 'value' in op) {
|
|
90
|
-
return await this.putOperation(userId, op, signal);
|
|
91
|
-
}
|
|
92
|
-
if ('namespacePrefix' in op) {
|
|
93
|
-
return await this.searchOperation(userId, op, signal);
|
|
94
|
-
}
|
|
95
|
-
if (!('namespacePrefix' in op) && 'limit' in op && 'offset' in op) {
|
|
96
|
-
return await this.listNamespacesOperation(userId, op, signal);
|
|
97
|
-
}
|
|
98
|
-
// Unrecognized operation - sanitized error message to prevent information disclosure
|
|
99
|
-
throw new Error(`Unrecognized operation type at index ${index}`);
|
|
100
|
-
});
|
|
101
|
-
return (await Promise.all(promises));
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Get a single item from the store
|
|
105
|
-
*
|
|
106
|
-
* @param userId - User ID for the item
|
|
107
|
-
* @param op - Get operation parameters
|
|
108
|
-
* @returns The item if found, null otherwise
|
|
109
|
-
*/
|
|
110
|
-
async getOperation(userId, op, signal) {
|
|
111
|
-
return await (0, actions_1.getOperationAction)({
|
|
112
|
-
client: this.client,
|
|
113
|
-
memoryTableName: this.memoryTableName,
|
|
114
|
-
userId,
|
|
115
|
-
op,
|
|
116
|
-
signal,
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Put an item into the store
|
|
121
|
-
*
|
|
122
|
-
* @param userId - User ID for the item
|
|
123
|
-
* @param op - Put operation parameters
|
|
124
|
-
*/
|
|
125
|
-
async putOperation(userId, op, signal) {
|
|
126
|
-
await (0, actions_1.putOperationAction)({
|
|
127
|
-
client: this.client,
|
|
128
|
-
memoryTableName: this.memoryTableName,
|
|
129
|
-
userId,
|
|
130
|
-
op,
|
|
131
|
-
embedding: this.embedding,
|
|
132
|
-
ttlDays: this.ttlDays,
|
|
133
|
-
signal,
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Search for items in the store with optional semantic search
|
|
138
|
-
*
|
|
139
|
-
* @param userId - User ID for filtering items
|
|
140
|
-
* @param op - Search operation parameters
|
|
141
|
-
* @returns Array of matching items with optional similarity scores
|
|
142
|
-
*/
|
|
143
|
-
async searchOperation(userId, op, signal) {
|
|
144
|
-
return await (0, actions_1.searchOperationAction)({
|
|
145
|
-
client: this.client,
|
|
146
|
-
memoryTableName: this.memoryTableName,
|
|
147
|
-
userId,
|
|
148
|
-
op,
|
|
149
|
-
embedding: this.embedding,
|
|
150
|
-
fallbackToLexicalOnEmbeddingFailure: this.fallbackToLexicalOnEmbeddingFailure,
|
|
151
|
-
signal,
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* List unique namespaces in the store
|
|
156
|
-
*
|
|
157
|
-
* @param userId - User ID for filtering namespaces
|
|
158
|
-
* @param op - List namespaces operation parameters
|
|
159
|
-
* @returns Array of namespace paths
|
|
160
|
-
*/
|
|
161
|
-
async listNamespacesOperation(userId, op, signal) {
|
|
162
|
-
return await (0, actions_1.listNamespacesOperationAction)({
|
|
163
|
-
client: this.client,
|
|
164
|
-
memoryTableName: this.memoryTableName,
|
|
165
|
-
userId,
|
|
166
|
-
op,
|
|
167
|
-
signal,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
exports.DynamoDBStore = DynamoDBStore;
|
|
172
|
-
//# sourceMappingURL=index.js.map
|
package/dist/store/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { DynamoDBClientConfig } from '@aws-sdk/client-dynamodb';
|
|
2
|
-
import { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
|
|
3
|
-
import type { EmbeddingsInterface } from '@langchain/core/embeddings';
|
|
4
|
-
import { GetOperation, type ListNamespacesOperation, type PutOperation, type SearchOperation } from '@langchain/langgraph';
|
|
5
|
-
/**
|
|
6
|
-
* Namespace path - array of strings with optional wildcards
|
|
7
|
-
*/
|
|
8
|
-
export type NamespacePath = (string | '*')[];
|
|
9
|
-
/**
|
|
10
|
-
* Configuration options for DynamoDBStore
|
|
11
|
-
*/
|
|
12
|
-
export interface DynamoDBStoreOptions {
|
|
13
|
-
/** Name of the DynamoDB table to use for storage */
|
|
14
|
-
memoryTableName: string;
|
|
15
|
-
/** Optional embeddings for semantic search (any LangChain Embeddings provider) */
|
|
16
|
-
embedding?: EmbeddingsInterface;
|
|
17
|
-
/** Optional DynamoDB client configuration */
|
|
18
|
-
clientConfig?: DynamoDBClientConfig;
|
|
19
|
-
/** Optional TTL in days for stored items (1-1825 days) */
|
|
20
|
-
ttlDays?: number;
|
|
21
|
-
/** Optional pre-built DynamoDBDocument client (takes precedence over clientConfig) */
|
|
22
|
-
client?: DynamoDBDocument;
|
|
23
|
-
/**
|
|
24
|
-
* Controls behavior when a semantic-search embedding call (e.g. `embedding.embedQuery`)
|
|
25
|
-
* fails — for example because Bedrock is rate-limited or unreachable.
|
|
26
|
-
*
|
|
27
|
-
* - `false` (default, **fail-closed**): the error propagates to the caller so
|
|
28
|
-
* semantic search never silently degrades to unranked results. Recommended
|
|
29
|
-
* for production to preserve the caller's trust that "a result ranked by
|
|
30
|
-
* similarity" is what was actually returned.
|
|
31
|
-
* - `true` (fail-open): the error is logged and the raw (unranked) DynamoDB
|
|
32
|
-
* result set is returned instead. Only set this if your application has
|
|
33
|
-
* explicit, user-visible handling for degraded search quality.
|
|
34
|
-
*/
|
|
35
|
-
fallbackToLexicalOnEmbeddingFailure?: boolean;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Parameters for put operation action
|
|
39
|
-
*/
|
|
40
|
-
export interface PutOperationActionParams {
|
|
41
|
-
/** DynamoDB document client */
|
|
42
|
-
client: DynamoDBDocument;
|
|
43
|
-
/** Name of the memory table */
|
|
44
|
-
memoryTableName: string;
|
|
45
|
-
/** User ID for the operation */
|
|
46
|
-
userId: string;
|
|
47
|
-
/** Put operation parameters */
|
|
48
|
-
op: PutOperation;
|
|
49
|
-
/** Optional embeddings for semantic search */
|
|
50
|
-
embedding?: EmbeddingsInterface;
|
|
51
|
-
/** Optional TTL in days */
|
|
52
|
-
ttlDays?: number;
|
|
53
|
-
/** Optional AbortSignal — cancels in-flight retries */
|
|
54
|
-
signal?: AbortSignal;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Parameters for get operation action
|
|
58
|
-
*/
|
|
59
|
-
export interface GetOperationActionParams {
|
|
60
|
-
/** DynamoDB document client */
|
|
61
|
-
client: DynamoDBDocument;
|
|
62
|
-
/** Name of the memory table */
|
|
63
|
-
memoryTableName: string;
|
|
64
|
-
/** User ID for the operation */
|
|
65
|
-
userId: string;
|
|
66
|
-
/** Get operation parameters */
|
|
67
|
-
op: GetOperation;
|
|
68
|
-
/** Optional AbortSignal — cancels in-flight retries */
|
|
69
|
-
signal?: AbortSignal;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Parameters for search operation action
|
|
73
|
-
*/
|
|
74
|
-
export interface SearchOperationActionParams {
|
|
75
|
-
/** DynamoDB document client */
|
|
76
|
-
client: DynamoDBDocument;
|
|
77
|
-
/** Name of the memory table */
|
|
78
|
-
memoryTableName: string;
|
|
79
|
-
/** User ID for the operation */
|
|
80
|
-
userId: string;
|
|
81
|
-
/** Search operation parameters */
|
|
82
|
-
op: SearchOperation;
|
|
83
|
-
/** Optional embeddings for semantic search */
|
|
84
|
-
embedding?: EmbeddingsInterface;
|
|
85
|
-
/**
|
|
86
|
-
* When true, embedding failures log a warning and return lexical (unranked)
|
|
87
|
-
* results instead of throwing. Defaults to false (fail-closed).
|
|
88
|
-
*/
|
|
89
|
-
fallbackToLexicalOnEmbeddingFailure?: boolean;
|
|
90
|
-
/** Optional AbortSignal — cancels in-flight retries */
|
|
91
|
-
signal?: AbortSignal;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Parameters for list namespaces operation action
|
|
95
|
-
*/
|
|
96
|
-
export interface ListNamespacesOperationActionParams {
|
|
97
|
-
/** DynamoDB document client */
|
|
98
|
-
client: DynamoDBDocument;
|
|
99
|
-
/** Name of the memory table */
|
|
100
|
-
memoryTableName: string;
|
|
101
|
-
/** User ID for the operation */
|
|
102
|
-
userId: string;
|
|
103
|
-
/** List namespaces operation parameters */
|
|
104
|
-
op: ListNamespacesOperation;
|
|
105
|
-
/** Optional AbortSignal — cancels in-flight retries */
|
|
106
|
-
signal?: AbortSignal;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Filter value with comparison operators.
|
|
110
|
-
* Matches the operator set implemented by LangGraph's reference InMemoryStore
|
|
111
|
-
* (`@langchain/langgraph-checkpoint/store/utils.js:62`).
|
|
112
|
-
*/
|
|
113
|
-
export type FilterValue = {
|
|
114
|
-
/** Equal to */
|
|
115
|
-
$eq?: any;
|
|
116
|
-
/** Not equal to */
|
|
117
|
-
$ne?: any;
|
|
118
|
-
/** Greater than */
|
|
119
|
-
$gt?: number;
|
|
120
|
-
/** Greater than or equal to */
|
|
121
|
-
$gte?: number;
|
|
122
|
-
/** Less than */
|
|
123
|
-
$lt?: number;
|
|
124
|
-
/** Less than or equal to */
|
|
125
|
-
$lte?: number;
|
|
126
|
-
/** In a list of values */
|
|
127
|
-
$in?: any[];
|
|
128
|
-
/** Not in a list of values */
|
|
129
|
-
$nin?: any[];
|
|
130
|
-
};
|
|
131
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,YAAY,EACZ,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,6CAA6C;IAC7C,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;;;;;;;;;OAWG;IACH,mCAAmC,CAAC,EAAE,OAAO,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,EAAE,EAAE,YAAY,CAAC;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,EAAE,EAAE,YAAY,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,EAAE,EAAE,eAAe,CAAC;IACpB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC;;;OAGG;IACH,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAC9C,uDAAuD;IACvD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,EAAE,EAAE,uBAAuB,CAAC;IAC5B,uDAAuD;IACvD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,eAAe;IACf,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,mBAAmB;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;IACZ,8BAA8B;IAC9B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;CACd,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DynamoDB filter expression builder utilities
|
|
3
|
-
*/
|
|
4
|
-
import { FilterValue } from '../types';
|
|
5
|
-
/**
|
|
6
|
-
* Build DynamoDB filter expression from a filter object
|
|
7
|
-
*
|
|
8
|
-
* @param filter - Filter criteria object with field names and values
|
|
9
|
-
* @param expressionAttributeNames - Object to populate with attribute name mappings
|
|
10
|
-
* @param expressionAttributeValues - Object to populate with attribute value mappings
|
|
11
|
-
* @returns Object containing the constructed filter expression
|
|
12
|
-
*/
|
|
13
|
-
export declare function buildFilterExpression(filter: Record<string, FilterValue | any>, expressionAttributeNames: Record<string, string>, expressionAttributeValues: Record<string, any>): {
|
|
14
|
-
filterExpression: string;
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/store/utils/filter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAuBvC;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,GAAG,CAAC,EACzC,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChD,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7C;IACD,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CA0HA"}
|