@farukada/aws-langgraph-dynamodb-ts 0.4.0 → 0.6.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 +3 -3
- package/dist/checkpointer/actions/put-writes.d.ts +4 -4
- package/dist/checkpointer/actions/put-writes.d.ts.map +1 -1
- package/dist/checkpointer/actions/put-writes.js +22 -25
- package/dist/checkpointer/actions/put-writes.js.map +1 -1
- package/dist/checkpointer/internal/item-writer.d.ts +18 -9
- package/dist/checkpointer/internal/item-writer.d.ts.map +1 -1
- package/dist/checkpointer/internal/item-writer.js +28 -11
- package/dist/checkpointer/internal/item-writer.js.map +1 -1
- package/dist/checkpointer/internal/special-write-cleanup.d.ts +18 -0
- package/dist/checkpointer/internal/special-write-cleanup.d.ts.map +1 -0
- package/dist/checkpointer/internal/special-write-cleanup.js +108 -0
- package/dist/checkpointer/internal/special-write-cleanup.js.map +1 -0
- package/dist/factory/factory.d.ts +2 -0
- package/dist/factory/factory.d.ts.map +1 -1
- package/dist/factory/factory.js.map +1 -1
- package/dist/history/actions/clear.js +1 -1
- package/dist/history/actions/clear.js.map +1 -1
- package/dist/history/internal/append-saga.js +24 -21
- package/dist/history/internal/append-saga.js.map +1 -1
- package/dist/history/internal/message-transaction.d.ts +11 -6
- package/dist/history/internal/message-transaction.d.ts.map +1 -1
- package/dist/history/internal/message-transaction.js +40 -13
- package/dist/history/internal/message-transaction.js.map +1 -1
- package/dist/history/internal/query.d.ts +5 -1
- package/dist/history/internal/query.d.ts.map +1 -1
- package/dist/history/internal/query.js +5 -2
- package/dist/history/internal/query.js.map +1 -1
- package/dist/history/internal/session-count.d.ts +20 -0
- package/dist/history/internal/session-count.d.ts.map +1 -0
- package/dist/history/internal/session-count.js +58 -0
- package/dist/history/internal/session-count.js.map +1 -0
- package/dist/history/internal/session-update.d.ts +4 -1
- package/dist/history/internal/session-update.d.ts.map +1 -1
- package/dist/history/internal/session-update.js +22 -2
- package/dist/history/internal/session-update.js.map +1 -1
- package/dist/shared/codec/s3/offloader.js +1 -1
- package/dist/shared/codec/s3/offloader.js.map +1 -1
- package/dist/shared/dynamodb/batch-write.d.ts +11 -1
- package/dist/shared/dynamodb/batch-write.d.ts.map +1 -1
- package/dist/shared/dynamodb/batch-write.js +22 -3
- package/dist/shared/dynamodb/batch-write.js.map +1 -1
- package/dist/shared/dynamodb/cancellation.d.ts +7 -0
- package/dist/shared/dynamodb/cancellation.d.ts.map +1 -0
- package/dist/shared/dynamodb/cancellation.js +8 -0
- package/dist/shared/dynamodb/cancellation.js.map +1 -0
- package/dist/shared/dynamodb/retry-classifier.d.ts.map +1 -1
- package/dist/shared/dynamodb/retry-classifier.js +2 -1
- package/dist/shared/dynamodb/retry-classifier.js.map +1 -1
- package/dist/shared/errors/errors.d.ts +6 -1
- package/dist/shared/errors/errors.d.ts.map +1 -1
- package/dist/shared/errors/errors.js +8 -2
- package/dist/shared/errors/errors.js.map +1 -1
- package/dist/store/actions/list-namespaces.d.ts.map +1 -1
- package/dist/store/actions/list-namespaces.js +10 -2
- package/dist/store/actions/list-namespaces.js.map +1 -1
- package/dist/store/actions/put.d.ts +5 -7
- package/dist/store/actions/put.d.ts.map +1 -1
- package/dist/store/actions/put.js +7 -28
- package/dist/store/actions/put.js.map +1 -1
- package/dist/store/internal/filter.d.ts.map +1 -1
- package/dist/store/internal/filter.js +6 -2
- package/dist/store/internal/filter.js.map +1 -1
- package/dist/store/internal/index-reconcile.d.ts.map +1 -1
- package/dist/store/internal/index-reconcile.js +1 -0
- package/dist/store/internal/index-reconcile.js.map +1 -1
- package/dist/store/internal/persist.d.ts +11 -0
- package/dist/store/internal/persist.d.ts.map +1 -0
- package/dist/store/internal/persist.js +38 -0
- package/dist/store/internal/persist.js.map +1 -0
- package/dist/store/internal/write-verify.d.ts +12 -0
- package/dist/store/internal/write-verify.d.ts.map +1 -0
- package/dist/store/internal/write-verify.js +28 -0
- package/dist/store/internal/write-verify.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import type { PutOperation } from '@langchain/langgraph-checkpoint';
|
|
2
2
|
import type { StoreContext } from '../internal/setup';
|
|
3
3
|
/**
|
|
4
|
-
* Store, update, or delete an item
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* sent there (and not stored on the item); DynamoDB always holds the
|
|
10
|
-
* canonical item.
|
|
4
|
+
* Store, update, or delete an item (null deletes). The value is encoded
|
|
5
|
+
* (optional compression/S3 offload, nonced per call so a failed write can never
|
|
6
|
+
* delete the previous payload) and `createdAt` is preserved across updates; a
|
|
7
|
+
* computed embedding is sent to a configured `vectorBackend` instead of being
|
|
8
|
+
* stored on the item — DynamoDB always holds the canonical item.
|
|
11
9
|
*/
|
|
12
10
|
export declare function putItem(context: StoreContext, op: PutOperation): Promise<void>;
|
|
13
11
|
//# sourceMappingURL=put.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/store/actions/put.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/store/actions/put.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAcpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA+DtD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBpF"}
|
|
@@ -10,6 +10,7 @@ const ttl_1 = require("../../shared/validation/ttl");
|
|
|
10
10
|
const index_sync_1 = require("../internal/index-sync");
|
|
11
11
|
const item_mapper_1 = require("../internal/item-mapper");
|
|
12
12
|
const keys_1 = require("../internal/keys");
|
|
13
|
+
const persist_1 = require("../internal/persist");
|
|
13
14
|
const semantic_search_1 = require("../internal/semantic-search");
|
|
14
15
|
const validation_1 = require("../internal/validation");
|
|
15
16
|
async function readExisting(context, pk, sk) {
|
|
@@ -43,33 +44,11 @@ async function resolveEmbedding(context, op, value) {
|
|
|
43
44
|
return (0, semantic_search_1.embedValue)(context, value, Array.isArray(op.index) ? op.index : undefined);
|
|
44
45
|
}
|
|
45
46
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
|
|
51
|
-
async function persistRecord(context, record, previousValue) {
|
|
52
|
-
try {
|
|
53
|
-
await (0, retry_1.withDynamoDBRetry)(() => context.client.put({ TableName: context.tableName, Item: record }));
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
if (context.offloader) {
|
|
57
|
-
await (0, orphans_1.cleanUpS3Orphans)(context.offloader, (0, descriptor_keys_1.collectS3Keys)([record.value]), 'store.put', context.logger);
|
|
58
|
-
}
|
|
59
|
-
throw error;
|
|
60
|
-
}
|
|
61
|
-
if (context.offloader && previousValue) {
|
|
62
|
-
await (0, orphans_1.cleanUpS3Orphans)(context.offloader, (0, descriptor_keys_1.collectS3Keys)([previousValue]), 'store.put.overwrite', context.logger);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Store, update, or delete an item. A null value deletes; otherwise the value
|
|
67
|
-
* is encoded (with optional compression/S3 offload, under a per-call nonce so
|
|
68
|
-
* a failed write can never delete the previous version's payload) and
|
|
69
|
-
* `createdAt` is preserved across updates. An embedding is computed when
|
|
70
|
-
* indexing is enabled. When a `vectorBackend` is configured the embedding is
|
|
71
|
-
* sent there (and not stored on the item); DynamoDB always holds the
|
|
72
|
-
* canonical item.
|
|
47
|
+
* Store, update, or delete an item (null deletes). The value is encoded
|
|
48
|
+
* (optional compression/S3 offload, nonced per call so a failed write can never
|
|
49
|
+
* delete the previous payload) and `createdAt` is preserved across updates; a
|
|
50
|
+
* computed embedding is sent to a configured `vectorBackend` instead of being
|
|
51
|
+
* stored on the item — DynamoDB always holds the canonical item.
|
|
73
52
|
*/
|
|
74
53
|
async function putItem(context, op) {
|
|
75
54
|
(0, validation_1.validateNamespace)(op.namespace);
|
|
@@ -92,7 +71,7 @@ async function putItem(context, op) {
|
|
|
92
71
|
ttlTimestamp,
|
|
93
72
|
nonce: (0, node_crypto_1.randomUUID)(),
|
|
94
73
|
});
|
|
95
|
-
await persistRecord(context, record, existing.value);
|
|
74
|
+
await (0, persist_1.persistRecord)(context, record, existing.value);
|
|
96
75
|
if (context.vectorBackend) {
|
|
97
76
|
await (0, index_sync_1.syncVectorIndex)(context.vectorBackend, op.namespace, op.key, embedding, context.logger);
|
|
98
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put.js","sourceRoot":"","sources":["../../../src/store/actions/put.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAIzC,8CAA4C;AAE5C,wEAAmE;AACnE,2DAAiE;AACjE,uDAAgE;AAChE,qDAAoE;AAEpE,uDAAyD;AACzD,yDAAyD;AACzD,2CAAyD;AACzD,iEAAyD;AAEzD,uDAAwE;
|
|
1
|
+
{"version":3,"file":"put.js","sourceRoot":"","sources":["../../../src/store/actions/put.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/store/internal/filter.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,MAAM,MAAM,SAAS,GACnB,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/store/internal/filter.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,MAAM,MAAM,SAAS,GACnB,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AA2ChF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAChC,OAAO,CAIT"}
|
|
@@ -9,8 +9,12 @@ const COMPARATORS = {
|
|
|
9
9
|
$gte: (actual, expected) => actual >= expected,
|
|
10
10
|
$lt: (actual, expected) => actual < expected,
|
|
11
11
|
$lte: (actual, expected) => actual <= expected,
|
|
12
|
-
$in: (actual, expected) =>
|
|
13
|
-
|
|
12
|
+
$in: (actual, expected) => Array.isArray(expected)
|
|
13
|
+
? expected.some((candidate) => (0, node_util_1.isDeepStrictEqual)(actual, candidate))
|
|
14
|
+
: false,
|
|
15
|
+
$nin: (actual, expected) => Array.isArray(expected)
|
|
16
|
+
? !expected.some((candidate) => (0, node_util_1.isDeepStrictEqual)(actual, candidate))
|
|
17
|
+
: true,
|
|
14
18
|
};
|
|
15
19
|
/**
|
|
16
20
|
* True only when every key is one of the exact known operator names — matches
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/store/internal/filter.ts"],"names":[],"mappings":";;;AAAA,yCAA8C;AAM9C,MAAM,WAAW,GAAwE;IACvF,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAA,6BAAiB,EAAC,MAAM,EAAE,QAAQ,CAAC;IAC9D,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAA,6BAAiB,EAAC,MAAM,EAAE,QAAQ,CAAC;IAC/D,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAE,MAAiB,GAAI,QAAmB;IACpE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAE,MAAiB,IAAK,QAAmB;IACtE,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAE,MAAiB,GAAI,QAAmB;IACpE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAE,MAAiB,IAAK,QAAmB;IACtE,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/store/internal/filter.ts"],"names":[],"mappings":";;;AAAA,yCAA8C;AAM9C,MAAM,WAAW,GAAwE;IACvF,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAA,6BAAiB,EAAC,MAAM,EAAE,QAAQ,CAAC;IAC9D,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAA,6BAAiB,EAAC,MAAM,EAAE,QAAQ,CAAC;IAC/D,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAE,MAAiB,GAAI,QAAmB;IACpE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAE,MAAiB,IAAK,QAAmB;IACtE,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAE,MAAiB,GAAI,QAAmB;IACpE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAE,MAAiB,IAAK,QAAmB;IACtE,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CACxB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACrB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,6BAAiB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpE,CAAC,CAAC,KAAK;IACX,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACrB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,6BAAiB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC,CAAC,IAAI;CACX,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,SAAoB;IAC5C,OAAO,CACL,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QAClB,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAiB,EAAE,SAAoB;IAC/D,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAAE,OAAO,IAAA,6BAAiB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAC9D,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CACxC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,4BACE,KAAgC,EAChC,MAAiC;IAEjC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,CACzD,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-reconcile.d.ts","sourceRoot":"","sources":["../../../src/store/internal/index-reconcile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMlE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACjC;AAOD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index-reconcile.d.ts","sourceRoot":"","sources":["../../../src/store/internal/index-reconcile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMlE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACjC;AAOD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,CAe5B;AAED,6EAA6E;AAC7E,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,eAAe,EAAE,GACzB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE,CAO5F;AAED,8EAA8E;AAC9E,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,eAAe,EAAE,GACtB,OAAO,CAAC,MAAM,CAAC,CAUjB"}
|
|
@@ -24,6 +24,7 @@ async function collectReconcileTargets(context, prefix) {
|
|
|
24
24
|
const source = (0, paginate_1.paginateQuery)({
|
|
25
25
|
client: context.client,
|
|
26
26
|
params: (0, query_1.scopedQuery)(context.tableName, prefix),
|
|
27
|
+
maxItems: context.maxScanItems,
|
|
27
28
|
});
|
|
28
29
|
for await (const raw of source) {
|
|
29
30
|
const record = raw;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-reconcile.js","sourceRoot":"","sources":["../../../src/store/internal/index-reconcile.ts"],"names":[],"mappings":";;;;;;AAAA,6DAA+D;AAI/D,+CAA8C;AAC9C,iCAAgD;AAChD,mCAAsC;AACtC,uDAA+C;AAU/C,mEAAmE;AACnE,SAAS,WAAW,CAAC,SAAmB,EAAE,GAAW;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACI,KAAK,kCACV,OAAqB,EACrB,MAAgB;IAEhB,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAA,wBAAa,EAAC;QAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,IAAA,mBAAW,EAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;KAC/
|
|
1
|
+
{"version":3,"file":"index-reconcile.js","sourceRoot":"","sources":["../../../src/store/internal/index-reconcile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type PayloadDescriptor } from '../../shared/codec/codec';
|
|
2
|
+
import type { StoreItemRecord } from '../types';
|
|
3
|
+
import type { StoreContext } from './setup';
|
|
4
|
+
/**
|
|
5
|
+
* Put the record: on a definite failure, clean up *this* record's nonced S3
|
|
6
|
+
* object; on an ambiguous retry-exhaustion failure, verify via
|
|
7
|
+
* `writeLandedAt` before deleting anything — if it landed, clean up the
|
|
8
|
+
* *previous* row's object instead, like the ordinary success path.
|
|
9
|
+
*/
|
|
10
|
+
export declare function persistRecord(context: StoreContext, record: StoreItemRecord, previousValue: PayloadDescriptor | undefined): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=persist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../../../src/store/internal/persist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,0BAA0B,CAAC;AAInF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQ5C;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,iBAAiB,GAAG,SAAS,GAC3C,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.persistRecord = persistRecord;
|
|
4
|
+
const codec_1 = require("../../shared/codec/codec");
|
|
5
|
+
const descriptor_keys_1 = require("../../shared/codec/descriptor-keys");
|
|
6
|
+
const orphans_1 = require("../../shared/codec/s3/orphans");
|
|
7
|
+
const retry_1 = require("../../shared/dynamodb/retry");
|
|
8
|
+
const write_verify_1 = require("./write-verify");
|
|
9
|
+
/** True when `error` is a {@link RetryExhaustedError} — checked by name, not `instanceof` (banned repo-wide). */
|
|
10
|
+
function isRetryExhausted(error) {
|
|
11
|
+
return error.name === 'RetryExhaustedError';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Put the record: on a definite failure, clean up *this* record's nonced S3
|
|
15
|
+
* object; on an ambiguous retry-exhaustion failure, verify via
|
|
16
|
+
* `writeLandedAt` before deleting anything — if it landed, clean up the
|
|
17
|
+
* *previous* row's object instead, like the ordinary success path.
|
|
18
|
+
*/
|
|
19
|
+
async function persistRecord(context, record, previousValue) {
|
|
20
|
+
try {
|
|
21
|
+
await (0, retry_1.withDynamoDBRetry)(() => context.client.put({ TableName: context.tableName, Item: record }));
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const landed = isRetryExhausted(error) &&
|
|
25
|
+
record.value.location === codec_1.PayloadLocation.S3 &&
|
|
26
|
+
(await (0, write_verify_1.writeLandedAt)(context, record, record.value.s3Key));
|
|
27
|
+
if (!landed) {
|
|
28
|
+
if (context.offloader) {
|
|
29
|
+
await (0, orphans_1.cleanUpS3Orphans)(context.offloader, (0, descriptor_keys_1.collectS3Keys)([record.value]), 'store.put', context.logger);
|
|
30
|
+
}
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (context.offloader && previousValue) {
|
|
35
|
+
await (0, orphans_1.cleanUpS3Orphans)(context.offloader, (0, descriptor_keys_1.collectS3Keys)([previousValue]), 'store.put.overwrite', context.logger);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=persist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../../src/store/internal/persist.ts"],"names":[],"mappings":";;;AAAA,oDAAmF;AACnF,wEAAmE;AACnE,2DAAiE;AACjE,uDAAgE;AAGhE,iDAA+C;AAE/C,iHAAiH;AACjH,SAAS,gBAAgB,CAAC,KAAY;IACpC,OAAO,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACI,KAAK,wBACV,OAAqB,EACrB,MAAuB,EACvB,aAA4C;IAE5C,IAAI,CAAC;QACH,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,CAC3B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CACnE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GACV,gBAAgB,CAAC,KAAc,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,uBAAe,CAAC,EAAE;YAC5C,CAAC,MAAM,IAAA,4BAAa,EAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAA,0BAAgB,EACpB,OAAO,CAAC,SAAS,EACjB,IAAA,+BAAa,EAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAC7B,WAAW,EACX,OAAO,CAAC,MAAM,CACf,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,IAAI,aAAa,EAAE,CAAC;QACvC,MAAM,IAAA,0BAAgB,EACpB,OAAO,CAAC,SAAS,EACjB,IAAA,+BAAa,EAAC,CAAC,aAAa,CAAC,CAAC,EAC9B,qBAAqB,EACrB,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StoreContext } from './setup';
|
|
2
|
+
/**
|
|
3
|
+
* True when `record`'s row already holds the S3 key `expectedS3Key` — i.e. an
|
|
4
|
+
* ambiguous retry-exhaustion write actually landed server-side and only its
|
|
5
|
+
* acknowledgment was lost. A failure reading this (itself possible) is not
|
|
6
|
+
* treated as confirmation — fail safe, matching the pre-fix behavior.
|
|
7
|
+
*/
|
|
8
|
+
export declare function writeLandedAt(context: StoreContext, record: {
|
|
9
|
+
PK: string;
|
|
10
|
+
SK: string;
|
|
11
|
+
}, expectedS3Key: string): Promise<boolean>;
|
|
12
|
+
//# sourceMappingURL=write-verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-verify.d.ts","sourceRoot":"","sources":["../../../src/store/internal/write-verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAClC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.writeLandedAt = writeLandedAt;
|
|
4
|
+
const codec_1 = require("../../shared/codec/codec");
|
|
5
|
+
const retry_1 = require("../../shared/dynamodb/retry");
|
|
6
|
+
/**
|
|
7
|
+
* True when `record`'s row already holds the S3 key `expectedS3Key` — i.e. an
|
|
8
|
+
* ambiguous retry-exhaustion write actually landed server-side and only its
|
|
9
|
+
* acknowledgment was lost. A failure reading this (itself possible) is not
|
|
10
|
+
* treated as confirmation — fail safe, matching the pre-fix behavior.
|
|
11
|
+
*/
|
|
12
|
+
async function writeLandedAt(context, record, expectedS3Key) {
|
|
13
|
+
try {
|
|
14
|
+
const result = await (0, retry_1.withDynamoDBRetry)(() => context.client.get({
|
|
15
|
+
TableName: context.tableName,
|
|
16
|
+
Key: { PK: record.PK, SK: record.SK },
|
|
17
|
+
ConsistentRead: true,
|
|
18
|
+
ProjectionExpression: '#v',
|
|
19
|
+
ExpressionAttributeNames: { '#v': 'value' },
|
|
20
|
+
}));
|
|
21
|
+
const value = result.Item?.value;
|
|
22
|
+
return value?.location === codec_1.PayloadLocation.S3 && value.s3Key === expectedS3Key;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=write-verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-verify.js","sourceRoot":"","sources":["../../../src/store/internal/write-verify.ts"],"names":[],"mappings":";;;AAAA,oDAAmF;AACnF,uDAAgE;AAGhE;;;;;GAKG;AACI,KAAK,wBACV,OAAqB,EACrB,MAAkC,EAClC,aAAqB;IAErB,IAAI,CAAC;QACH,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,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACrC,cAAc,EAAE,IAAI;YACpB,oBAAoB,EAAE,IAAI;YAC1B,wBAAwB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC5C,CAAC,CACH,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAsC,CAAC;QAClE,OAAO,KAAK,EAAE,QAAQ,KAAK,uBAAe,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farukada/aws-langgraph-dynamodb-ts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "AWS DynamoDB implementation for LangGraph Memory Store and Checkpoint Saver in TypeScript",
|
|
6
6
|
"keywords": [
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"test:aws": "node --experimental-vm-modules node_modules/jest/bin/jest.js --config jest.aws.config.ts",
|
|
49
49
|
"test:static": "jest test/static",
|
|
50
50
|
"test:package-smoke": "node --test test/package-smoke/smoke.test.mjs",
|
|
51
|
-
"prepublishOnly": "npm run typecheck && npm run lint && npm run build && npm test",
|
|
51
|
+
"prepublishOnly": "npm run typecheck && npm run typecheck:all && npm run lint && npm run build && npm test",
|
|
52
52
|
"docs": "typedoc",
|
|
53
53
|
"docs:watch": "typedoc --watch",
|
|
54
54
|
"unused": "knip",
|