@farukada/aws-langgraph-dynamodb-ts 0.2.2 → 0.3.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 +226 -510
- 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,85 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
3
|
+
exports.putWrites = putWrites;
|
|
4
|
+
const descriptor_keys_1 = require("../../shared/codec/descriptor-keys");
|
|
5
|
+
const orphans_1 = require("../../shared/codec/s3/orphans");
|
|
6
|
+
const batch_write_1 = require("../../shared/dynamodb/batch-write");
|
|
7
|
+
const errors_1 = require("../../shared/errors/errors");
|
|
8
|
+
const ttl_1 = require("../../shared/validation/ttl");
|
|
9
|
+
const configurable_1 = require("../internal/configurable");
|
|
10
|
+
const item_writer_1 = require("../internal/item-writer");
|
|
11
|
+
const validation_1 = require("../internal/validation");
|
|
9
12
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @param params - Parameters for the put writes operation
|
|
13
|
-
* @throws Error if validation fails or operation fails
|
|
13
|
+
* Persist a task's intermediate writes for a checkpoint as one item per write.
|
|
14
|
+
* Requires `checkpoint_id` in the config — writes always attach to a checkpoint.
|
|
14
15
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
async function putWrites(context, config, writes, taskId) {
|
|
17
|
+
(0, validation_1.validateTaskId)(taskId);
|
|
18
|
+
const { threadId, checkpointNs, checkpointId } = (0, configurable_1.readConfigurable)(config);
|
|
19
|
+
if (checkpointId === undefined) {
|
|
20
|
+
throw new errors_1.ValidationError('checkpoint_id is required to store writes', 'checkpoint_id');
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
(0,
|
|
23
|
-
(0,
|
|
24
|
-
// Compute TTL once (ttlSeconds takes precedence) — not per message.
|
|
25
|
-
let ttl;
|
|
26
|
-
if (params.ttlSeconds !== undefined) {
|
|
27
|
-
ttl = (0, shared_1.calculateTTLTimestampFromSeconds)(params.ttlSeconds);
|
|
28
|
-
}
|
|
29
|
-
else if (params.ttlDays !== undefined) {
|
|
30
|
-
ttl = (0, shared_1.calculateTTLTimestamp)(params.ttlDays);
|
|
31
|
-
}
|
|
32
|
-
const writeItems = await Promise.all(params.writes.map(async (write, positionalIdx) => {
|
|
33
|
-
const [type, rawValue] = await params.serde.dumpsTyped(write[1]);
|
|
34
|
-
// Compress after serialization if compressor is provided
|
|
35
|
-
const serializedValue = params.compressor
|
|
36
|
-
? await params.compressor.compress(rawValue)
|
|
37
|
-
: rawValue;
|
|
38
|
-
// Special channels (__error__, __scheduled__, __interrupt__, __resume__) are
|
|
39
|
-
// stored at the stable negative idx from WRITES_IDX_MAP so repeated writes
|
|
40
|
-
// for the same taskId overwrite the correct dedicated slot. Regular writes
|
|
41
|
-
// use their positional index. Matches memory.js:178 from langgraph-checkpoint.
|
|
42
|
-
const channel = write[0];
|
|
43
|
-
const idx = langgraph_checkpoint_1.WRITES_IDX_MAP[channel] ?? positionalIdx;
|
|
44
|
-
// S3 offloading for large write values
|
|
45
|
-
let s3ValueKey;
|
|
46
|
-
let storedValue = serializedValue;
|
|
47
|
-
if (params.s3Offloader && params.s3Offloader.shouldOffload(serializedValue)) {
|
|
48
|
-
s3ValueKey = await params.s3Offloader.upload(params.s3Offloader.buildKey(thread_id, checkpoint_id, `write-${idx}`), serializedValue);
|
|
49
|
-
storedValue = new Uint8Array(0); // Empty placeholder in DynamoDB
|
|
50
|
-
}
|
|
51
|
-
const item = new writer_1.Writer({
|
|
52
|
-
thread_id,
|
|
53
|
-
checkpoint_ns,
|
|
54
|
-
checkpoint_id,
|
|
55
|
-
task_id: params.taskId,
|
|
56
|
-
idx,
|
|
57
|
-
channel,
|
|
58
|
-
type,
|
|
59
|
-
value: storedValue,
|
|
60
|
-
});
|
|
61
|
-
const dynamoItem = item.toDynamoDBItem();
|
|
62
|
-
if (s3ValueKey)
|
|
63
|
-
dynamoItem.s3_value_key = s3ValueKey;
|
|
64
|
-
if (ttl !== undefined)
|
|
65
|
-
dynamoItem.ttl = ttl;
|
|
66
|
-
return { PutRequest: { Item: dynamoItem } };
|
|
67
|
-
}));
|
|
68
|
-
// Batch writes using shared utility with retry logic.
|
|
69
|
-
// On failure, best-effort-clean any S3 objects we uploaded — errors during cleanup
|
|
70
|
-
// are only logged since the lifecycle rule is the ultimate backstop.
|
|
22
|
+
if (writes.length === 0)
|
|
23
|
+
return;
|
|
24
|
+
const ttlTimestamp = context.ttl ? (0, ttl_1.calculateTtlTimestamp)(context.ttl) : undefined;
|
|
25
|
+
const items = await (0, item_writer_1.buildWriteItems)(context, threadId, checkpointNs, checkpointId, taskId, writes, ttlTimestamp);
|
|
71
26
|
try {
|
|
72
|
-
await (0,
|
|
73
|
-
signal: params.signal,
|
|
74
|
-
});
|
|
27
|
+
await (0, batch_write_1.batchWriteAll)(context.client, context.tableName, items.map((item) => ({ PutRequest: { Item: item } })));
|
|
75
28
|
}
|
|
76
|
-
catch (
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
await (0, shared_1.cleanUpS3Orphans)(params.s3Offloader, keys, 'putWrites failure');
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (context.offloader) {
|
|
31
|
+
await (0, orphans_1.cleanUpS3Orphans)(context.offloader, (0, descriptor_keys_1.collectS3Keys)(items.map((item) => item.value)), 'putWrites', context.logger);
|
|
80
32
|
}
|
|
81
|
-
throw
|
|
33
|
+
throw error;
|
|
82
34
|
}
|
|
83
|
-
}
|
|
84
|
-
exports.putWritesAction = putWritesAction;
|
|
35
|
+
}
|
|
85
36
|
//# sourceMappingURL=put-writes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put-writes.js","sourceRoot":"","sources":["../../../src/checkpointer/actions/put-writes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"put-writes.js","sourceRoot":"","sources":["../../../src/checkpointer/actions/put-writes.ts"],"names":[],"mappings":";;AAiBA,8BAuCC;AArDD,wEAAmE;AACnE,2DAAiE;AACjE,mEAAkE;AAClE,uDAA6D;AAC7D,qDAAoE;AACpE,2DAA4D;AAC5D,yDAA0D;AAE1D,uDAAwD;AAExD;;;GAGG;AACI,KAAK,UAAU,SAAS,CAC7B,OAA4B,EAC5B,MAAsB,EACtB,MAAsB,EACtB,MAAc;IAEd,IAAA,2BAAc,EAAC,MAAM,CAAC,CAAC;IACvB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAA,+BAAgB,EAAC,MAAM,CAAC,CAAC;IAC1E,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,wBAAe,CAAC,2CAA2C,EAAE,eAAe,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAChC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,2BAAqB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,KAAK,GAAG,MAAM,IAAA,6BAAe,EACjC,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,MAAM,EACN,YAAY,CACb,CAAC;IACF,IAAI,CAAC;QACH,MAAM,IAAA,2BAAa,EACjB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,EACjB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,IAAA,0BAAgB,EACpB,OAAO,CAAC,SAAS,EACjB,IAAA,+BAAa,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAC9C,WAAW,EACX,OAAO,CAAC,MAAM,CACf,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import type { RunnableConfig } from '@langchain/core/runnables';
|
|
2
|
-
import {
|
|
2
|
+
import type { Checkpoint, CheckpointMetadata } from '@langchain/langgraph-checkpoint';
|
|
3
|
+
import type { CheckpointerContext } from '../internal/setup';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Both items are written atomically via transactWrite.
|
|
9
|
-
*
|
|
10
|
-
* @param params - Parameters for the put operation
|
|
11
|
-
* @returns RunnableConfig with the saved checkpoint information
|
|
12
|
-
* @throws Error if validation fails or operation fails
|
|
5
|
+
* Persist a checkpoint and its metadata as a transactional pair of META and
|
|
6
|
+
* PAYLOAD items, returning the config that addresses the stored checkpoint. The
|
|
7
|
+
* incoming `checkpoint_id` (if any) becomes the new checkpoint's parent.
|
|
13
8
|
*/
|
|
14
|
-
export declare
|
|
9
|
+
export declare function putCheckpoint(context: CheckpointerContext, config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata): Promise<RunnableConfig>;
|
|
15
10
|
//# sourceMappingURL=put.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/checkpointer/actions/put.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/checkpointer/actions/put.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAQtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAuCzB"}
|
|
@@ -1,173 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
3
|
+
exports.putCheckpoint = putCheckpoint;
|
|
4
|
+
const descriptor_keys_1 = require("../../shared/codec/descriptor-keys");
|
|
5
|
+
const orphans_1 = require("../../shared/codec/s3/orphans");
|
|
6
|
+
const retry_1 = require("../../shared/dynamodb/retry");
|
|
7
|
+
const ttl_1 = require("../../shared/validation/ttl");
|
|
8
|
+
const configurable_1 = require("../internal/configurable");
|
|
9
|
+
const item_writer_1 = require("../internal/item-writer");
|
|
8
10
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* Both items are written atomically via transactWrite.
|
|
14
|
-
*
|
|
15
|
-
* @param params - Parameters for the put operation
|
|
16
|
-
* @returns RunnableConfig with the saved checkpoint information
|
|
17
|
-
* @throws Error if validation fails or operation fails
|
|
11
|
+
* Persist a checkpoint and its metadata as a transactional pair of META and
|
|
12
|
+
* PAYLOAD items, returning the config that addresses the stored checkpoint. The
|
|
13
|
+
* incoming `checkpoint_id` (if any) becomes the new checkpoint's parent.
|
|
18
14
|
*/
|
|
19
|
-
|
|
20
|
-
const {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
throw new Error('Checkpoint ID is required');
|
|
24
|
-
}
|
|
25
|
-
(0, utils_1.validateCheckpointId)(params.checkpoint.id, true);
|
|
26
|
-
(0, utils_1.validateTTLDays)(params.ttlDays);
|
|
27
|
-
const [type1, rawCheckpoint] = await params.serde.dumpsTyped(params.checkpoint);
|
|
28
|
-
const [type2, rawMetadata] = await params.serde.dumpsTyped(params.metadata);
|
|
29
|
-
if (type1 !== type2) {
|
|
30
|
-
throw new Error('Failed to serialize checkpoint and metadata to the same type.');
|
|
31
|
-
}
|
|
32
|
-
// Compress after serialization if compressor is provided
|
|
33
|
-
const serializedCheckpoint = params.compressor
|
|
34
|
-
? await params.compressor.compress(rawCheckpoint)
|
|
35
|
-
: rawCheckpoint;
|
|
36
|
-
const serializedMetadata = params.compressor
|
|
37
|
-
? await params.compressor.compress(rawMetadata)
|
|
38
|
-
: rawMetadata;
|
|
39
|
-
// S3 offloading for large payloads
|
|
40
|
-
let s3CheckpointKey;
|
|
41
|
-
let s3MetadataKey;
|
|
42
|
-
let storedCheckpoint = serializedCheckpoint;
|
|
43
|
-
let storedMetadata = serializedMetadata;
|
|
44
|
-
if (params.s3Offloader) {
|
|
45
|
-
const checkpointId = params.checkpoint.id;
|
|
46
|
-
if (params.s3Offloader.shouldOffload(serializedCheckpoint)) {
|
|
47
|
-
s3CheckpointKey = await params.s3Offloader.upload(params.s3Offloader.buildKey(thread_id, checkpointId, 'checkpoint'), serializedCheckpoint);
|
|
48
|
-
storedCheckpoint = new Uint8Array(0); // Empty placeholder in DynamoDB
|
|
49
|
-
}
|
|
50
|
-
if (params.s3Offloader.shouldOffload(serializedMetadata)) {
|
|
51
|
-
s3MetadataKey = await params.s3Offloader.upload(params.s3Offloader.buildKey(thread_id, checkpointId, 'metadata'), serializedMetadata);
|
|
52
|
-
storedMetadata = new Uint8Array(0); // Empty placeholder in DynamoDB
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// Compute TTL once for both items
|
|
56
|
-
let ttl;
|
|
57
|
-
if (params.ttlSeconds !== undefined) {
|
|
58
|
-
ttl = (0, shared_1.calculateTTLTimestampFromSeconds)(params.ttlSeconds);
|
|
59
|
-
}
|
|
60
|
-
else if (params.ttlDays !== undefined) {
|
|
61
|
-
ttl = (0, shared_1.calculateTTLTimestamp)(params.ttlDays);
|
|
62
|
-
}
|
|
63
|
-
const checkpointNs = params.config.configurable?.checkpoint_ns ?? '';
|
|
64
|
-
const checkpointId = params.checkpoint.id;
|
|
65
|
-
// Metadata item — lightweight, read by list() queries
|
|
66
|
-
const metadataItem = {
|
|
67
|
-
thread_id,
|
|
68
|
-
checkpoint_ns: checkpointNs,
|
|
69
|
-
checkpoint_id: checkpointId,
|
|
70
|
-
parent_checkpoint_id: params.config.configurable?.checkpoint_id,
|
|
71
|
-
type: type1,
|
|
72
|
-
metadata: storedMetadata,
|
|
73
|
-
s3_checkpoint_key: s3CheckpointKey,
|
|
74
|
-
s3_metadata_key: s3MetadataKey,
|
|
75
|
-
};
|
|
76
|
-
if (ttl !== undefined) {
|
|
77
|
-
metadataItem.ttl = ttl;
|
|
78
|
-
}
|
|
79
|
-
// Payload item — heavy blob, fetched only by getTuple()
|
|
80
|
-
const payloadItem = {
|
|
81
|
-
thread_id,
|
|
82
|
-
checkpoint_id: `${types_1.PAYLOAD_SK_PREFIX}${checkpointId}`,
|
|
83
|
-
checkpoint: storedCheckpoint,
|
|
84
|
-
};
|
|
85
|
-
if (ttl !== undefined) {
|
|
86
|
-
payloadItem.ttl = ttl;
|
|
87
|
-
}
|
|
88
|
-
// Optimistic-concurrency guard on the metadata Put.
|
|
89
|
-
//
|
|
90
|
-
// Two concurrent workers racing on the same (thread_id, checkpoint_id) with
|
|
91
|
-
// *different* parent/type (= divergent lineage) is a bug we want to surface,
|
|
92
|
-
// not silently resolve last-writer-wins. Two writers agreeing on parent+type
|
|
93
|
-
// (= legitimate idempotent retry after a transient error) must still succeed.
|
|
94
|
-
//
|
|
95
|
-
// attribute_not_exists(checkpoint_id) -- first write ever: OK
|
|
96
|
-
// OR (#type = :expected_type AND ( -- OR same content as prior:
|
|
97
|
-
// attribute_not_exists(parent_checkpoint_id) -- initial checkpoint
|
|
98
|
-
// OR parent_checkpoint_id = :expected_parent -- with named parent
|
|
99
|
-
// ))
|
|
100
|
-
//
|
|
101
|
-
// The payload Put is left unconditional: payloads are keyed by PAYLOAD#<id>
|
|
102
|
-
// and contain content-for-content equal data for a given checkpoint, so an
|
|
103
|
-
// overwrite on retry is always safe.
|
|
104
|
-
// Normalize `''` to `undefined` so an empty-string parent and an unset parent
|
|
105
|
-
// are treated as the same "no parent" state. This keeps the ConditionExpression
|
|
106
|
-
// stable across idempotent retries that might represent "initial checkpoint"
|
|
107
|
-
// either way (e.g. a migration or a caller that stringifies nulls).
|
|
108
|
-
const rawExpectedParent = params.config.configurable?.checkpoint_id;
|
|
109
|
-
const expectedParent = typeof rawExpectedParent === 'string' && rawExpectedParent.length > 0
|
|
110
|
-
? rawExpectedParent
|
|
111
|
-
: undefined;
|
|
112
|
-
const metadataExpressionAttributeNames = { '#type': 'type' };
|
|
113
|
-
const metadataExpressionAttributeValues = {
|
|
114
|
-
':expected_type': type1,
|
|
115
|
-
};
|
|
116
|
-
const parentClause = expectedParent !== undefined
|
|
117
|
-
? 'parent_checkpoint_id = :expected_parent'
|
|
118
|
-
: 'attribute_not_exists(parent_checkpoint_id)';
|
|
119
|
-
if (expectedParent !== undefined) {
|
|
120
|
-
metadataExpressionAttributeValues[':expected_parent'] = expectedParent;
|
|
121
|
-
}
|
|
122
|
-
const metadataConditionExpression = 'attribute_not_exists(checkpoint_id) ' + `OR (#type = :expected_type AND (${parentClause}))`;
|
|
123
|
-
// Atomic write: both items must succeed or both fail.
|
|
124
|
-
// On failure, best-effort-clean any S3 objects we uploaded so they don't linger
|
|
125
|
-
// until the lifecycle rule sweeps them. Errors during cleanup are only logged.
|
|
15
|
+
async function putCheckpoint(context, config, checkpoint, metadata) {
|
|
16
|
+
const { threadId, checkpointNs, checkpointId: parentCheckpointId } = (0, configurable_1.readConfigurable)(config);
|
|
17
|
+
const ttlTimestamp = context.ttl ? (0, ttl_1.calculateTtlTimestamp)(context.ttl) : undefined;
|
|
18
|
+
const { meta, payload } = await (0, item_writer_1.buildCheckpointItems)(context, threadId, checkpointNs, checkpoint, metadata, parentCheckpointId, ttlTimestamp);
|
|
126
19
|
try {
|
|
127
|
-
await (0,
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
{ Put: { TableName: params.checkpointsTableName, Item: payloadItem } },
|
|
140
|
-
],
|
|
141
|
-
});
|
|
142
|
-
}, { signal: params.signal });
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
// Skip S3 orphan cleanup on the optimistic-lock conflict path. S3 keys are
|
|
146
|
-
// derived deterministically from (thread_id, checkpoint_id), so a divergent
|
|
147
|
-
// put() on the same checkpoint_id uploads to the *same* keys as the
|
|
148
|
-
// canonical write already occupies — cleaning them up after a
|
|
149
|
-
// ConditionalCheckFailed would delete live data still referenced by the
|
|
150
|
-
// winning transaction. The S3 lifecycle rule is the safe backstop for the
|
|
151
|
-
// rare case where an overwrite did occur; data integrity beats a few stale
|
|
152
|
-
// bytes in S3.
|
|
153
|
-
const isConditionalFailure = err &&
|
|
154
|
-
typeof err === 'object' &&
|
|
155
|
-
('name' in err
|
|
156
|
-
? err.name === 'ConditionalCheckFailedException' ||
|
|
157
|
-
err.name === 'TransactionCanceledException'
|
|
158
|
-
: false);
|
|
159
|
-
if (params.s3Offloader && !isConditionalFailure) {
|
|
160
|
-
await (0, shared_1.cleanUpS3Orphans)(params.s3Offloader, [s3CheckpointKey, s3MetadataKey], 'put failure');
|
|
20
|
+
await (0, retry_1.withDynamoDBRetry)(() => context.client.transactWrite({
|
|
21
|
+
TransactItems: [
|
|
22
|
+
{ Put: { TableName: context.tableName, Item: meta } },
|
|
23
|
+
{ Put: { TableName: context.tableName, Item: payload } },
|
|
24
|
+
],
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (context.offloader) {
|
|
29
|
+
await (0, orphans_1.cleanUpS3Orphans)(context.offloader, (0, descriptor_keys_1.collectS3Keys)([meta.metadata, payload.checkpoint]), 'put', context.logger);
|
|
161
30
|
}
|
|
162
|
-
throw
|
|
31
|
+
throw error;
|
|
163
32
|
}
|
|
164
33
|
return {
|
|
165
34
|
configurable: {
|
|
166
|
-
thread_id:
|
|
167
|
-
checkpoint_ns:
|
|
168
|
-
checkpoint_id:
|
|
35
|
+
thread_id: threadId,
|
|
36
|
+
checkpoint_ns: checkpointNs,
|
|
37
|
+
checkpoint_id: checkpoint.id,
|
|
169
38
|
},
|
|
170
39
|
};
|
|
171
|
-
}
|
|
172
|
-
exports.putAction = putAction;
|
|
40
|
+
}
|
|
173
41
|
//# sourceMappingURL=put.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put.js","sourceRoot":"","sources":["../../../src/checkpointer/actions/put.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"put.js","sourceRoot":"","sources":["../../../src/checkpointer/actions/put.ts"],"names":[],"mappings":";;AAgBA,sCA4CC;AAzDD,wEAAmE;AACnE,2DAAiE;AACjE,uDAAgE;AAChE,qDAAoE;AACpE,2DAA4D;AAC5D,yDAA+D;AAG/D;;;;GAIG;AACI,KAAK,UAAU,aAAa,CACjC,OAA4B,EAC5B,MAAsB,EACtB,UAAsB,EACtB,QAA4B;IAE5B,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,IAAA,+BAAgB,EAAC,MAAM,CAAC,CAAC;IAC9F,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,2BAAqB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,kCAAoB,EAClD,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,YAAY,CACb,CAAC;IACF,IAAI,CAAC;QACH,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,CAC3B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3B,aAAa,EAAE;gBACb,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;gBACrD,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;aACzD;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,IAAA,0BAAgB,EACpB,OAAO,CAAC,SAAS,EACjB,IAAA,+BAAa,EAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAClD,KAAK,EACL,OAAO,CAAC,MAAM,CACf,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO;QACL,YAAY,EAAE;YACZ,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,UAAU,CAAC,EAAE;SAC7B;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CheckpointTuple } from '@langchain/langgraph-checkpoint';
|
|
2
|
+
import type { CheckpointMetaItem } from '../types';
|
|
3
|
+
import type { CheckpointerContext } from './setup';
|
|
4
|
+
/**
|
|
5
|
+
* Assemble a full {@link CheckpointTuple} from a META item: fetch and decode its
|
|
6
|
+
* payload, metadata, and pending writes, attaching a parent config when present.
|
|
7
|
+
* Returns undefined when the payload item is missing (inconsistent state).
|
|
8
|
+
*/
|
|
9
|
+
export declare function assembleTuple(context: CheckpointerContext, threadId: string, checkpointNs: string, meta: CheckpointMetaItem): Promise<CheckpointTuple | undefined>;
|
|
10
|
+
//# sourceMappingURL=assemble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../../src/checkpointer/internal/assemble.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AASnD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAkBtC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assembleTuple = assembleTuple;
|
|
4
|
+
const fetch_1 = require("./fetch");
|
|
5
|
+
const item_reader_1 = require("./item-reader");
|
|
6
|
+
/** Build a config that addresses a specific checkpoint. */
|
|
7
|
+
function configFor(threadId, checkpointNs, checkpointId) {
|
|
8
|
+
return {
|
|
9
|
+
configurable: { thread_id: threadId, checkpoint_ns: checkpointNs, checkpoint_id: checkpointId },
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Assemble a full {@link CheckpointTuple} from a META item: fetch and decode its
|
|
14
|
+
* payload, metadata, and pending writes, attaching a parent config when present.
|
|
15
|
+
* Returns undefined when the payload item is missing (inconsistent state).
|
|
16
|
+
*/
|
|
17
|
+
async function assembleTuple(context, threadId, checkpointNs, meta) {
|
|
18
|
+
const payload = await (0, fetch_1.fetchPayload)(context, threadId, checkpointNs, meta.checkpointId);
|
|
19
|
+
if (!payload)
|
|
20
|
+
return undefined;
|
|
21
|
+
const [checkpoint, metadata, pendingWrites] = await Promise.all([
|
|
22
|
+
(0, item_reader_1.readCheckpoint)(context, payload),
|
|
23
|
+
(0, item_reader_1.readMetadata)(context, meta),
|
|
24
|
+
(0, fetch_1.fetchPendingWrites)(context, threadId, checkpointNs, meta.checkpointId),
|
|
25
|
+
]);
|
|
26
|
+
const tuple = {
|
|
27
|
+
config: configFor(threadId, checkpointNs, meta.checkpointId),
|
|
28
|
+
checkpoint,
|
|
29
|
+
metadata,
|
|
30
|
+
pendingWrites,
|
|
31
|
+
};
|
|
32
|
+
if (meta.parentCheckpointId !== undefined) {
|
|
33
|
+
tuple.parentConfig = configFor(threadId, checkpointNs, meta.parentCheckpointId);
|
|
34
|
+
}
|
|
35
|
+
return tuple;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=assemble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../../src/checkpointer/internal/assemble.ts"],"names":[],"mappings":";;AAoBA,sCAuBC;AAvCD,mCAA2D;AAC3D,+CAA6D;AAG7D,2DAA2D;AAC3D,SAAS,SAAS,CAAC,QAAgB,EAAE,YAAoB,EAAE,YAAoB;IAC7E,OAAO;QACL,YAAY,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE;KAChG,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,aAAa,CACjC,OAA4B,EAC5B,QAAgB,EAChB,YAAoB,EACpB,IAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAY,EAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvF,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9D,IAAA,4BAAc,EAAC,OAAO,EAAE,OAAO,CAAC;QAChC,IAAA,0BAAY,EAAC,OAAO,EAAE,IAAI,CAAC;QAC3B,IAAA,0BAAkB,EAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC;KACvE,CAAC,CAAC;IACH,MAAM,KAAK,GAAoB;QAC7B,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC;QAC5D,UAAU;QACV,QAAQ;QACR,aAAa;KACd,CAAC;IACF,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC1C,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RunnableConfig } from '@langchain/core/runnables';
|
|
2
|
+
/** The thread/namespace/checkpoint identifiers extracted from a config. */
|
|
3
|
+
export interface ResolvedConfigurable {
|
|
4
|
+
threadId: string;
|
|
5
|
+
checkpointNs: string;
|
|
6
|
+
checkpointId?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Narrow `RunnableConfig.configurable` to the identifiers the saver needs,
|
|
10
|
+
* defaulting the namespace to empty and validating that a thread id is present.
|
|
11
|
+
*/
|
|
12
|
+
export declare function readConfigurable(config: RunnableConfig): ResolvedConfigurable;
|
|
13
|
+
//# sourceMappingURL=configurable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurable.d.ts","sourceRoot":"","sources":["../../../src/checkpointer/internal/configurable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhE,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB,CAa7E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readConfigurable = readConfigurable;
|
|
4
|
+
const validation_1 = require("./validation");
|
|
5
|
+
/**
|
|
6
|
+
* Narrow `RunnableConfig.configurable` to the identifiers the saver needs,
|
|
7
|
+
* defaulting the namespace to empty and validating that a thread id is present.
|
|
8
|
+
*/
|
|
9
|
+
function readConfigurable(config) {
|
|
10
|
+
const configurable = (config.configurable ?? {});
|
|
11
|
+
(0, validation_1.validateThreadId)(configurable.thread_id);
|
|
12
|
+
const checkpointNs = configurable.checkpoint_ns ?? '';
|
|
13
|
+
(0, validation_1.validateCheckpointNs)(checkpointNs);
|
|
14
|
+
if (configurable.checkpoint_id !== undefined) {
|
|
15
|
+
(0, validation_1.validateCheckpointId)(configurable.checkpoint_id);
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
threadId: configurable.thread_id,
|
|
19
|
+
checkpointNs,
|
|
20
|
+
checkpointId: configurable.checkpoint_id,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=configurable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurable.js","sourceRoot":"","sources":["../../../src/checkpointer/internal/configurable.ts"],"names":[],"mappings":";;AAgBA,4CAaC;AA1BD,6CAA4F;AAS5F;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,MAAsB;IACrD,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAA2B,CAAC;IAC3E,IAAA,6BAAgB,EAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC;IACtD,IAAA,iCAAoB,EAAC,YAAY,CAAC,CAAC;IACnC,IAAI,YAAY,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAC7C,IAAA,iCAAoB,EAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,YAAY,CAAC,SAAS;QAChC,YAAY;QACZ,YAAY,EAAE,YAAY,CAAC,aAAa;KACzC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CheckpointPendingWrite } from '@langchain/langgraph-checkpoint';
|
|
2
|
+
import type { CheckpointMetaItem, CheckpointPayloadItem } from '../types';
|
|
3
|
+
import type { CheckpointerContext } from './setup';
|
|
4
|
+
/** Fetch the target META item: by id when given, else the newest in the namespace. */
|
|
5
|
+
export declare function fetchTargetMeta(context: CheckpointerContext, threadId: string, checkpointNs: string, checkpointId?: string): Promise<CheckpointMetaItem | undefined>;
|
|
6
|
+
/** Fetch the PAYLOAD item for a checkpoint. */
|
|
7
|
+
export declare function fetchPayload(context: CheckpointerContext, threadId: string, checkpointNs: string, checkpointId: string): Promise<CheckpointPayloadItem | undefined>;
|
|
8
|
+
/** Fetch and decode every pending write for a checkpoint, in write order. */
|
|
9
|
+
export declare function fetchPendingWrites(context: CheckpointerContext, threadId: string, checkpointNs: string, checkpointId: string): Promise<CheckpointPendingWrite[]>;
|
|
10
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/checkpointer/internal/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAI9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAuB,MAAM,UAAU,CAAC;AAU/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,sFAAsF;AACtF,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAsBzC;AAED,+CAA+C;AAC/C,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAS5C;AAED,6EAA6E;AAC7E,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAYnC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchTargetMeta = fetchTargetMeta;
|
|
4
|
+
exports.fetchPayload = fetchPayload;
|
|
5
|
+
exports.fetchPendingWrites = fetchPendingWrites;
|
|
6
|
+
const paginate_1 = require("../../shared/dynamodb/paginate");
|
|
7
|
+
const retry_1 = require("../../shared/dynamodb/retry");
|
|
8
|
+
const item_reader_1 = require("./item-reader");
|
|
9
|
+
const keys_1 = require("./keys");
|
|
10
|
+
const query_1 = require("./query");
|
|
11
|
+
/** Fetch the target META item: by id when given, else the newest in the namespace. */
|
|
12
|
+
async function fetchTargetMeta(context, threadId, checkpointNs, checkpointId) {
|
|
13
|
+
if (checkpointId !== undefined) {
|
|
14
|
+
const result = await (0, retry_1.withDynamoDBRetry)(() => context.client.get({
|
|
15
|
+
TableName: context.tableName,
|
|
16
|
+
Key: { PK: (0, keys_1.partitionKey)(threadId), SK: (0, keys_1.metaSortKey)(checkpointNs, checkpointId) },
|
|
17
|
+
ConsistentRead: true,
|
|
18
|
+
}));
|
|
19
|
+
return result.Item;
|
|
20
|
+
}
|
|
21
|
+
const params = (0, query_1.beginsWithQuery)(context.tableName, (0, keys_1.partitionKey)(threadId), (0, keys_1.metaSortKeyPrefix)(checkpointNs), {
|
|
22
|
+
limit: 1,
|
|
23
|
+
consistent: true,
|
|
24
|
+
});
|
|
25
|
+
const result = await (0, retry_1.withDynamoDBRetry)(() => context.client.query(params));
|
|
26
|
+
return result.Items?.[0];
|
|
27
|
+
}
|
|
28
|
+
/** Fetch the PAYLOAD item for a checkpoint. */
|
|
29
|
+
async function fetchPayload(context, threadId, checkpointNs, checkpointId) {
|
|
30
|
+
const result = await (0, retry_1.withDynamoDBRetry)(() => context.client.get({
|
|
31
|
+
TableName: context.tableName,
|
|
32
|
+
Key: { PK: (0, keys_1.partitionKey)(threadId), SK: (0, keys_1.payloadSortKey)(checkpointNs, checkpointId) },
|
|
33
|
+
ConsistentRead: true,
|
|
34
|
+
}));
|
|
35
|
+
return result.Item;
|
|
36
|
+
}
|
|
37
|
+
/** Fetch and decode every pending write for a checkpoint, in write order. */
|
|
38
|
+
async function fetchPendingWrites(context, threadId, checkpointNs, checkpointId) {
|
|
39
|
+
const params = (0, query_1.beginsWithQuery)(context.tableName, (0, keys_1.partitionKey)(threadId), (0, keys_1.writeSortKeyPrefix)(checkpointNs, checkpointId), { ascending: true, consistent: true });
|
|
40
|
+
const items = [];
|
|
41
|
+
for await (const item of (0, paginate_1.paginateQuery)({ client: context.client, params })) {
|
|
42
|
+
items.push(item);
|
|
43
|
+
}
|
|
44
|
+
return (0, item_reader_1.toPendingWrites)(context, items);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/checkpointer/internal/fetch.ts"],"names":[],"mappings":";;AAiBA,0CA2BC;AAGD,oCAcC;AAGD,gDAiBC;AA/ED,6DAA+D;AAC/D,uDAAgE;AAEhE,+CAAgD;AAChD,iCAMgB;AAChB,mCAA0C;AAG1C,sFAAsF;AAC/E,KAAK,UAAU,eAAe,CACnC,OAA4B,EAC5B,QAAgB,EAChB,YAAoB,EACpB,YAAqB;IAErB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,CAC1C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;YACjB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,GAAG,EAAE,EAAE,EAAE,EAAE,IAAA,mBAAY,EAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAA,kBAAW,EAAC,YAAY,EAAE,YAAY,CAAC,EAAE;YAChF,cAAc,EAAE,IAAI;SACrB,CAAC,CACH,CAAC;QACF,OAAO,MAAM,CAAC,IAAsC,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,uBAAe,EAC5B,OAAO,CAAC,SAAS,EACjB,IAAA,mBAAY,EAAC,QAAQ,CAAC,EACtB,IAAA,wBAAiB,EAAC,YAAY,CAAC,EAC/B;QACE,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,IAAI;KACjB,CACF,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAmC,CAAC;AAC7D,CAAC;AAED,+CAA+C;AACxC,KAAK,UAAU,YAAY,CAChC,OAA4B,EAC5B,QAAgB,EAChB,YAAoB,EACpB,YAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,CAC1C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,EAAE,EAAE,EAAE,EAAE,IAAA,mBAAY,EAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAA,qBAAc,EAAC,YAAY,EAAE,YAAY,CAAC,EAAE;QACnF,cAAc,EAAE,IAAI;KACrB,CAAC,CACH,CAAC;IACF,OAAO,MAAM,CAAC,IAAyC,CAAC;AAC1D,CAAC;AAED,6EAA6E;AACtE,KAAK,UAAU,kBAAkB,CACtC,OAA4B,EAC5B,QAAgB,EAChB,YAAoB,EACpB,YAAoB;IAEpB,MAAM,MAAM,GAAG,IAAA,uBAAe,EAC5B,OAAO,CAAC,SAAS,EACjB,IAAA,mBAAY,EAAC,QAAQ,CAAC,EACtB,IAAA,yBAAkB,EAAC,YAAY,EAAE,YAAY,CAAC,EAC9C,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CACtC,CAAC;IACF,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAA,wBAAa,EAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,IAA2B,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAA,6BAAe,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** A JSON-comparable value used in metadata filters. */
|
|
2
|
+
export type FilterValue = string | number | boolean | null | FilterValue[] | {
|
|
3
|
+
[key: string]: FilterValue;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* True when every key in `filter` is present in `metadata` with a deeply equal
|
|
7
|
+
* value. Equality is structural and key-order-independent for nested objects,
|
|
8
|
+
* order-significant for arrays, and type-strict (no `3` vs `'3'` coercion). An
|
|
9
|
+
* empty filter matches everything.
|
|
10
|
+
*/
|
|
11
|
+
export declare function matchesFilter(metadata: Record<string, FilterValue>, filter: Record<string, FilterValue>): boolean;
|
|
12
|
+
//# sourceMappingURL=filter-match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-match.d.ts","sourceRoot":"","sources":["../../../src/checkpointer/internal/filter-match.ts"],"names":[],"mappings":"AAEA,wDAAwD;AACxD,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,WAAW,EAAE,GACb;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,CAAC;AAEnC;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAClC,OAAO,CAET"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.matchesFilter = matchesFilter;
|
|
4
|
+
const node_util_1 = require("node:util");
|
|
5
|
+
/**
|
|
6
|
+
* True when every key in `filter` is present in `metadata` with a deeply equal
|
|
7
|
+
* value. Equality is structural and key-order-independent for nested objects,
|
|
8
|
+
* order-significant for arrays, and type-strict (no `3` vs `'3'` coercion). An
|
|
9
|
+
* empty filter matches everything.
|
|
10
|
+
*/
|
|
11
|
+
function matchesFilter(metadata, filter) {
|
|
12
|
+
return Object.entries(filter).every(([key, value]) => (0, node_util_1.isDeepStrictEqual)(metadata[key], value));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=filter-match.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-match.js","sourceRoot":"","sources":["../../../src/checkpointer/internal/filter-match.ts"],"names":[],"mappings":";;AAiBA,sCAKC;AAtBD,yCAA8C;AAW9C;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,QAAqC,EACrC,MAAmC;IAEnC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAA,6BAAiB,EAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACjG,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Checkpoint, CheckpointMetadata, CheckpointPendingWrite } from '@langchain/langgraph-checkpoint';
|
|
2
|
+
import type { CheckpointMetaItem, CheckpointPayloadItem, CheckpointWriteItem } from '../types';
|
|
3
|
+
import type { CheckpointerContext } from './setup';
|
|
4
|
+
/** Decode the checkpoint stored in a PAYLOAD item. */
|
|
5
|
+
export declare function readCheckpoint(context: CheckpointerContext, item: CheckpointPayloadItem): Promise<Checkpoint>;
|
|
6
|
+
/** Decode the metadata stored in a META item. */
|
|
7
|
+
export declare function readMetadata(context: CheckpointerContext, item: CheckpointMetaItem): Promise<CheckpointMetadata>;
|
|
8
|
+
/** Decode WRITE items into `[taskId, channel, value]` pending-write tuples. */
|
|
9
|
+
export declare function toPendingWrites(context: CheckpointerContext, items: CheckpointWriteItem[]): Promise<CheckpointPendingWrite[]>;
|
|
10
|
+
//# sourceMappingURL=item-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-reader.d.ts","sourceRoot":"","sources":["../../../src/checkpointer/internal/item-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,sDAAsD;AACtD,wBAAsB,cAAc,CAClC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAErB;AAED,iDAAiD;AACjD,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,+EAA+E;AAC/E,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,mBAAmB,EAAE,GAC3B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAQnC"}
|