@opendatalabs/personal-server-ts-core 0.0.1-canary.01ca694 → 0.0.1-canary.052d47e
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/dist/api/index.d.ts +282 -9
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +867 -163
- package/dist/api/index.js.map +1 -1
- package/dist/auth/request.d.ts.map +1 -1
- package/dist/auth/request.js.map +1 -1
- package/dist/client.d.ts +8 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +21 -3
- package/dist/client.js.map +1 -1
- package/dist/contracts/binary.d.ts +12 -0
- package/dist/contracts/binary.d.ts.map +1 -1
- package/dist/contracts/binary.js +31 -0
- package/dist/contracts/binary.js.map +1 -1
- package/dist/contracts/data.d.ts +51 -5
- package/dist/contracts/data.d.ts.map +1 -1
- package/dist/contracts/data.js +166 -30
- package/dist/contracts/data.js.map +1 -1
- package/dist/contracts/grants.d.ts +7 -5
- package/dist/contracts/grants.d.ts.map +1 -1
- package/dist/contracts/grants.js +60 -37
- package/dist/contracts/grants.js.map +1 -1
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +1 -1
- package/dist/contracts/index.js.map +1 -1
- package/dist/derivatives/api.d.ts +48 -0
- package/dist/derivatives/api.d.ts.map +1 -0
- package/dist/derivatives/api.js +366 -0
- package/dist/derivatives/api.js.map +1 -0
- package/dist/derivatives/compute.d.ts +106 -0
- package/dist/derivatives/compute.d.ts.map +1 -0
- package/dist/derivatives/compute.js +414 -0
- package/dist/derivatives/compute.js.map +1 -0
- package/dist/derivatives/e2ee/aad.d.ts +22 -0
- package/dist/derivatives/e2ee/aad.d.ts.map +1 -0
- package/dist/derivatives/e2ee/aad.js +32 -0
- package/dist/derivatives/e2ee/aad.js.map +1 -0
- package/dist/derivatives/e2ee/attestation.d.ts +134 -0
- package/dist/derivatives/e2ee/attestation.d.ts.map +1 -0
- package/dist/derivatives/e2ee/attestation.js +248 -0
- package/dist/derivatives/e2ee/attestation.js.map +1 -0
- package/dist/derivatives/e2ee/index.d.ts +6 -0
- package/dist/derivatives/e2ee/index.d.ts.map +1 -0
- package/dist/derivatives/e2ee/index.js +6 -0
- package/dist/derivatives/e2ee/index.js.map +1 -0
- package/dist/derivatives/e2ee/jcs.d.ts +17 -0
- package/dist/derivatives/e2ee/jcs.d.ts.map +1 -0
- package/dist/derivatives/e2ee/jcs.js +55 -0
- package/dist/derivatives/e2ee/jcs.js.map +1 -0
- package/dist/derivatives/e2ee/phala.d.ts +62 -0
- package/dist/derivatives/e2ee/phala.d.ts.map +1 -0
- package/dist/derivatives/e2ee/phala.js +168 -0
- package/dist/derivatives/e2ee/phala.js.map +1 -0
- package/dist/derivatives/e2ee/suite.d.ts +56 -0
- package/dist/derivatives/e2ee/suite.d.ts.map +1 -0
- package/dist/derivatives/e2ee/suite.js +164 -0
- package/dist/derivatives/e2ee/suite.js.map +1 -0
- package/dist/derivatives/index.d.ts +10 -0
- package/dist/derivatives/index.d.ts.map +1 -0
- package/dist/derivatives/index.js +10 -0
- package/dist/derivatives/index.js.map +1 -0
- package/dist/derivatives/inference.d.ts +151 -0
- package/dist/derivatives/inference.d.ts.map +1 -0
- package/dist/derivatives/inference.js +262 -0
- package/dist/derivatives/inference.js.map +1 -0
- package/dist/derivatives/prompt.d.ts +64 -0
- package/dist/derivatives/prompt.d.ts.map +1 -0
- package/dist/derivatives/prompt.js +193 -0
- package/dist/derivatives/prompt.js.map +1 -0
- package/dist/derivatives/registration.d.ts +54 -0
- package/dist/derivatives/registration.d.ts.map +1 -0
- package/dist/derivatives/registration.js +180 -0
- package/dist/derivatives/registration.js.map +1 -0
- package/dist/derivatives/scheduler.d.ts +84 -0
- package/dist/derivatives/scheduler.d.ts.map +1 -0
- package/dist/derivatives/scheduler.js +257 -0
- package/dist/derivatives/scheduler.js.map +1 -0
- package/dist/derivatives/store.d.ts +14 -0
- package/dist/derivatives/store.d.ts.map +1 -0
- package/dist/derivatives/store.js +77 -0
- package/dist/derivatives/store.js.map +1 -0
- package/dist/derivatives/types.d.ts +92 -0
- package/dist/derivatives/types.d.ts.map +1 -0
- package/dist/derivatives/types.js +27 -0
- package/dist/derivatives/types.js.map +1 -0
- package/dist/errors/catalog.d.ts +75 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/catalog.js +104 -0
- package/dist/errors/catalog.js.map +1 -1
- package/dist/grants/index.d.ts +2 -1
- package/dist/grants/index.d.ts.map +1 -1
- package/dist/grants/index.js +1 -1
- package/dist/grants/index.js.map +1 -1
- package/dist/keys/index.d.ts +1 -0
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js +1 -1
- package/dist/keys/index.js.map +1 -1
- package/dist/keys/public-only-account.d.ts +8 -0
- package/dist/keys/public-only-account.d.ts.map +1 -0
- package/dist/keys/public-only-account.js +21 -0
- package/dist/keys/public-only-account.js.map +1 -0
- package/dist/keys/server-account.d.ts +2 -2
- package/dist/keys/server-account.d.ts.map +1 -1
- package/dist/lineage/attestation.d.ts +42 -0
- package/dist/lineage/attestation.d.ts.map +1 -0
- package/dist/lineage/attestation.js +25 -0
- package/dist/lineage/attestation.js.map +1 -0
- package/dist/lineage/gateway.d.ts +105 -0
- package/dist/lineage/gateway.d.ts.map +1 -0
- package/dist/lineage/gateway.js +242 -0
- package/dist/lineage/gateway.js.map +1 -0
- package/dist/lineage/index.d.ts +5 -0
- package/dist/lineage/index.d.ts.map +1 -0
- package/dist/lineage/index.js +5 -0
- package/dist/lineage/index.js.map +1 -0
- package/dist/lineage/lineage.d.ts +141 -0
- package/dist/lineage/lineage.d.ts.map +1 -0
- package/dist/lineage/lineage.js +255 -0
- package/dist/lineage/lineage.js.map +1 -0
- package/dist/logging/access-log.d.ts +10 -1
- package/dist/logging/access-log.d.ts.map +1 -1
- package/dist/mcp/activity.d.ts.map +1 -1
- package/dist/mcp/activity.js.map +1 -1
- package/dist/mcp/connection-api.d.ts.map +1 -1
- package/dist/mcp/connection-api.js +0 -1
- package/dist/mcp/connection-api.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/read-client.d.ts +61 -1
- package/dist/mcp/read-client.d.ts.map +1 -1
- package/dist/mcp/read-client.js +397 -42
- package/dist/mcp/read-client.js.map +1 -1
- package/dist/mcp/resources.d.ts +37 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +114 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/search/index.d.ts.map +1 -1
- package/dist/mcp/search/index.js +108 -21
- package/dist/mcp/search/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +27 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +160 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +243 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/tools.d.ts +29 -3
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +515 -48
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/payment/index.d.ts +2 -0
- package/dist/payment/index.d.ts.map +1 -0
- package/dist/payment/index.js +2 -0
- package/dist/payment/index.js.map +1 -0
- package/dist/payment/x402.d.ts +155 -0
- package/dist/payment/x402.d.ts.map +1 -0
- package/dist/payment/x402.js +402 -0
- package/dist/payment/x402.js.map +1 -0
- package/dist/policy/data-read.d.ts +18 -2
- package/dist/policy/data-read.d.ts.map +1 -1
- package/dist/policy/data-read.js +80 -49
- package/dist/policy/data-read.js.map +1 -1
- package/dist/policy/data-write.d.ts +69 -0
- package/dist/policy/data-write.d.ts.map +1 -0
- package/dist/policy/data-write.js +131 -0
- package/dist/policy/data-write.js.map +1 -0
- package/dist/policy/index.d.ts +3 -1
- package/dist/policy/index.d.ts.map +1 -1
- package/dist/policy/index.js +3 -1
- package/dist/policy/index.js.map +1 -1
- package/dist/policy/signed-artifacts.d.ts +17 -0
- package/dist/policy/signed-artifacts.d.ts.map +1 -0
- package/dist/policy/signed-artifacts.js +110 -0
- package/dist/policy/signed-artifacts.js.map +1 -0
- package/dist/ports/index.d.ts +159 -32
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +6 -5
- package/dist/ports/index.js.map +1 -1
- package/dist/schemas/server-config.d.ts +49 -4
- package/dist/schemas/server-config.d.ts.map +1 -1
- package/dist/schemas/server-config.js +95 -13
- package/dist/schemas/server-config.js.map +1 -1
- package/dist/signing/index.d.ts +2 -2
- package/dist/signing/index.d.ts.map +1 -1
- package/dist/signing/index.js +1 -1
- package/dist/signing/index.js.map +1 -1
- package/dist/signing/request-signer.d.ts +2 -0
- package/dist/signing/request-signer.d.ts.map +1 -1
- package/dist/signing/request-signer.js +1 -0
- package/dist/signing/request-signer.js.map +1 -1
- package/dist/signing/signer.d.ts +27 -25
- package/dist/signing/signer.d.ts.map +1 -1
- package/dist/signing/signer.js +27 -51
- package/dist/signing/signer.js.map +1 -1
- package/dist/storage/adapters/index.d.ts +1 -1
- package/dist/storage/adapters/index.d.ts.map +1 -1
- package/dist/storage/adapters/index.js +1 -1
- package/dist/storage/adapters/index.js.map +1 -1
- package/dist/storage/adapters/interface.d.ts +10 -0
- package/dist/storage/adapters/interface.d.ts.map +1 -1
- package/dist/storage/adapters/sdk.d.ts +11 -1
- package/dist/storage/adapters/sdk.d.ts.map +1 -1
- package/dist/storage/adapters/sdk.js +38 -3
- package/dist/storage/adapters/sdk.js.map +1 -1
- package/dist/storage/adapters/vana.d.ts +3 -0
- package/dist/storage/adapters/vana.d.ts.map +1 -1
- package/dist/storage/adapters/vana.js +95 -2
- package/dist/storage/adapters/vana.js.map +1 -1
- package/dist/storage/blocks/errors.d.ts.map +1 -1
- package/dist/storage/blocks/errors.js.map +1 -1
- package/dist/storage/blocks/index.d.ts +2 -0
- package/dist/storage/blocks/index.d.ts.map +1 -1
- package/dist/storage/blocks/index.js +2 -0
- package/dist/storage/blocks/index.js.map +1 -1
- package/dist/storage/blocks/select.d.ts +29 -0
- package/dist/storage/blocks/select.d.ts.map +1 -0
- package/dist/storage/blocks/select.js +120 -0
- package/dist/storage/blocks/select.js.map +1 -0
- package/dist/storage/blocks/types.d.ts +7 -0
- package/dist/storage/blocks/types.d.ts.map +1 -1
- package/dist/storage/index/manager.d.ts +30 -2
- package/dist/storage/index/manager.d.ts.map +1 -1
- package/dist/storage/index/schema.d.ts +1 -1
- package/dist/storage/index/schema.js +1 -1
- package/dist/storage/index/types.d.ts +6 -1
- package/dist/storage/index/types.d.ts.map +1 -1
- package/dist/sync/data-point-feed.d.ts +35 -0
- package/dist/sync/data-point-feed.d.ts.map +1 -0
- package/dist/sync/data-point-feed.js +122 -0
- package/dist/sync/data-point-feed.js.map +1 -0
- package/dist/sync/data-point-id.d.ts +7 -0
- package/dist/sync/data-point-id.d.ts.map +1 -0
- package/dist/sync/data-point-id.js +16 -0
- package/dist/sync/data-point-id.js.map +1 -0
- package/dist/sync/delete-data-port.d.ts +50 -0
- package/dist/sync/delete-data-port.d.ts.map +1 -0
- package/dist/sync/delete-data-port.js +244 -0
- package/dist/sync/delete-data-port.js.map +1 -0
- package/dist/sync/engine/sync-manager.d.ts +16 -4
- package/dist/sync/engine/sync-manager.d.ts.map +1 -1
- package/dist/sync/engine/sync-manager.js +93 -32
- package/dist/sync/engine/sync-manager.js.map +1 -1
- package/dist/sync/index.d.ts +7 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +7 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/issues.d.ts.map +1 -1
- package/dist/sync/issues.js +21 -3
- package/dist/sync/issues.js.map +1 -1
- package/dist/sync/pending-blob-deletions.d.ts +29 -0
- package/dist/sync/pending-blob-deletions.d.ts.map +1 -0
- package/dist/sync/pending-blob-deletions.js +116 -0
- package/dist/sync/pending-blob-deletions.js.map +1 -0
- package/dist/sync/retry-memory.d.ts +33 -0
- package/dist/sync/retry-memory.d.ts.map +1 -0
- package/dist/sync/retry-memory.js +68 -0
- package/dist/sync/retry-memory.js.map +1 -0
- package/dist/sync/scope-deletions.d.ts +155 -0
- package/dist/sync/scope-deletions.d.ts.map +1 -0
- package/dist/sync/scope-deletions.js +225 -0
- package/dist/sync/scope-deletions.js.map +1 -0
- package/dist/sync/tombstone.d.ts +27 -0
- package/dist/sync/tombstone.d.ts.map +1 -0
- package/dist/sync/tombstone.js +28 -0
- package/dist/sync/tombstone.js.map +1 -0
- package/dist/sync/workers/delete.d.ts +152 -31
- package/dist/sync/workers/delete.d.ts.map +1 -1
- package/dist/sync/workers/delete.js +457 -55
- package/dist/sync/workers/delete.js.map +1 -1
- package/dist/sync/workers/download.d.ts +108 -27
- package/dist/sync/workers/download.d.ts.map +1 -1
- package/dist/sync/workers/download.js +321 -126
- package/dist/sync/workers/download.js.map +1 -1
- package/dist/sync/workers/upload.d.ts +65 -10
- package/dist/sync/workers/upload.d.ts.map +1 -1
- package/dist/sync/workers/upload.js +371 -42
- package/dist/sync/workers/upload.js.map +1 -1
- package/dist/test-utils/e2ee-fixtures.d.ts +94 -0
- package/dist/test-utils/e2ee-fixtures.d.ts.map +1 -0
- package/dist/test-utils/e2ee-fixtures.js +116 -0
- package/dist/test-utils/e2ee-fixtures.js.map +1 -0
- package/dist/test-utils/e2ee-gateway.d.ts +61 -0
- package/dist/test-utils/e2ee-gateway.d.ts.map +1 -0
- package/dist/test-utils/e2ee-gateway.js +248 -0
- package/dist/test-utils/e2ee-gateway.js.map +1 -0
- package/dist/test-utils/index.d.ts +3 -0
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/index.js +3 -0
- package/dist/test-utils/index.js.map +1 -1
- package/dist/test-utils/memory-storage.d.ts +12 -0
- package/dist/test-utils/memory-storage.d.ts.map +1 -0
- package/dist/test-utils/memory-storage.js +146 -0
- package/dist/test-utils/memory-storage.js.map +1 -0
- package/dist/test-utils/wallet.d.ts +6 -0
- package/dist/test-utils/wallet.d.ts.map +1 -1
- package/dist/test-utils/wallet.js +46 -0
- package/dist/test-utils/wallet.js.map +1 -1
- package/dist/write/attribution.d.ts +185 -0
- package/dist/write/attribution.d.ts.map +1 -0
- package/dist/write/attribution.js +450 -0
- package/dist/write/attribution.js.map +1 -0
- package/dist/write/authorize.d.ts +77 -0
- package/dist/write/authorize.d.ts.map +1 -0
- package/dist/write/authorize.js +109 -0
- package/dist/write/authorize.js.map +1 -0
- package/dist/write/index.d.ts +5 -0
- package/dist/write/index.d.ts.map +1 -0
- package/dist/write/index.js +5 -0
- package/dist/write/index.js.map +1 -0
- package/dist/write/route.d.ts +61 -0
- package/dist/write/route.d.ts.map +1 -0
- package/dist/write/route.js +132 -0
- package/dist/write/route.js.map +1 -0
- package/dist/write/session.d.ts +96 -0
- package/dist/write/session.d.ts.map +1 -0
- package/dist/write/session.js +136 -0
- package/dist/write/session.js.map +1 -0
- package/package.json +19 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/sync/workers/download.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/sync/workers/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,11 @@ import { type GatewayClient } from "@opendatalabs/vana-sdk/browser";
|
|
|
3
3
|
import type { ServerSigner } from "../../signing/signer.js";
|
|
4
4
|
import type { Logger } from "../../logger/index.js";
|
|
5
5
|
import type { IndexEntry } from "../../storage/index/types.js";
|
|
6
|
-
import type { DataStoragePort } from "../../ports/index.js";
|
|
6
|
+
import type { DataPointFeedPort, DataStoragePort, PendingBlobDeletionStore } from "../../ports/index.js";
|
|
7
|
+
import { type ScopeDeletionTracker } from "../scope-deletions.js";
|
|
8
|
+
import type { LineageGatewayPort } from "../../lineage/gateway.js";
|
|
9
|
+
export { computeDataPointId } from "../data-point-id.js";
|
|
10
|
+
export { isEntryCoveredByTombstone } from "../scope-deletions.js";
|
|
7
11
|
export interface UploadWorkerDeps {
|
|
8
12
|
storage: DataStoragePort;
|
|
9
13
|
storageAdapter: StorageAdapter;
|
|
@@ -12,32 +16,83 @@ export interface UploadWorkerDeps {
|
|
|
12
16
|
masterKey: Uint8Array;
|
|
13
17
|
serverOwner: string;
|
|
14
18
|
logger: Logger;
|
|
19
|
+
/**
|
|
20
|
+
* Registers derivative records (envelopes stamped with `$lineage`) with
|
|
21
|
+
* their lineage. The SDK client's registerDataPoint sends only the AddData
|
|
22
|
+
* fields, so a derivative needs this direct client; without it a derivative
|
|
23
|
+
* upload fails (and retries next cycle) rather than silently registering as
|
|
24
|
+
* a root record whose lineage exists only inside the ciphertext.
|
|
25
|
+
*/
|
|
26
|
+
lineageGateway?: Pick<LineageGatewayPort, "registerDataPoint">;
|
|
27
|
+
/**
|
|
28
|
+
* Deletion-aware registry lookup. When present, an unsynced entry for a
|
|
29
|
+
* scope the gateway has tombstoned is dropped instead of uploaded (unless
|
|
30
|
+
* it was ingested AFTER the deletion, which is a legitimate re-add and is
|
|
31
|
+
* registered strictly after the tombstone version). Without it the worker
|
|
32
|
+
* behaves as before and cannot see deletions.
|
|
33
|
+
*/
|
|
34
|
+
dataPointFeed?: DataPointFeedPort;
|
|
35
|
+
/**
|
|
36
|
+
* Read-side deletion memory. A successful registration marks the scope
|
|
37
|
+
* live again (a re-add after a tombstone must not keep answering 410).
|
|
38
|
+
*/
|
|
39
|
+
scopeDeletions?: ScopeDeletionTracker;
|
|
40
|
+
/**
|
|
41
|
+
* Guarded cleanup queue for ciphertext this worker uploaded and then had to
|
|
42
|
+
* abandon because a tombstone landed between the deletion guard and the
|
|
43
|
+
* registration. Used only when deleting that exact blob fails.
|
|
44
|
+
*/
|
|
45
|
+
pendingBlobDeletions?: PendingBlobDeletionStore;
|
|
15
46
|
}
|
|
16
47
|
export interface UploadResult {
|
|
17
48
|
path: string;
|
|
18
|
-
|
|
49
|
+
/** Storage URL the encrypted blob was written to (version-keyed). */
|
|
19
50
|
url: string;
|
|
51
|
+
/**
|
|
52
|
+
* DPv2 data-point id assigned by the gateway. Present whenever this run
|
|
53
|
+
* either freshly registered the data point or found one already attached
|
|
54
|
+
* to the index entry from a prior run.
|
|
55
|
+
*/
|
|
56
|
+
dataPointId: string;
|
|
20
57
|
}
|
|
21
58
|
export interface UploadAllOptions {
|
|
22
59
|
batchSize?: number;
|
|
23
60
|
onError?: (entry: IndexEntry, error: Error) => void;
|
|
24
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Thrown when an unsynced entry's local payload file is gone, so the entry was
|
|
64
|
+
* dropped from the index rather than uploaded. `uploadAll` treats it as a
|
|
65
|
+
* silent self-heal, not a sync failure — it must not surface to the user or
|
|
66
|
+
* poison the settle-wait (there is nothing to retry).
|
|
67
|
+
*/
|
|
68
|
+
export declare class OrphanedEntryError extends Error {
|
|
69
|
+
constructor(path: string);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Thrown when an unsynced entry belongs to a scope the gateway has tombstoned
|
|
73
|
+
* and the entry predates that deletion: uploading it would resurrect data the
|
|
74
|
+
* owner deleted, so the local copy is dropped instead. Like
|
|
75
|
+
* `OrphanedEntryError`, `uploadAll` treats it as a silent self-heal.
|
|
76
|
+
*/
|
|
77
|
+
export declare class DeletedScopeEntryError extends Error {
|
|
78
|
+
constructor(path: string, deletedAt: string);
|
|
79
|
+
}
|
|
25
80
|
/**
|
|
26
81
|
* Upload a single unsynced index entry:
|
|
27
82
|
* 1. Read local data file from disk
|
|
28
|
-
* 2.
|
|
29
|
-
* 3.
|
|
30
|
-
* 4.
|
|
31
|
-
* 5. Upload
|
|
32
|
-
* 6.
|
|
33
|
-
* 7.
|
|
34
|
-
* 8. Update local index with fileId
|
|
83
|
+
* 2. Derive scope key from master key → hex-encode as OpenPGP password
|
|
84
|
+
* 3. Encrypt envelope with OpenPGP password-based encryption → ciphertext
|
|
85
|
+
* 4. Compute dataHash / metadataHash commitments (scope-addressed, no schema)
|
|
86
|
+
* 5. Upload ciphertext to storage backend, version-keyed `{scope}/{version}`
|
|
87
|
+
* 6. Register DPv2 data point on-chain (AddData) if not already
|
|
88
|
+
* 7. Persist the gateway-assigned dataPointId (marks the entry synced)
|
|
35
89
|
*/
|
|
36
90
|
export declare function uploadOne(deps: UploadWorkerDeps, entry: IndexEntry): Promise<UploadResult>;
|
|
37
91
|
/**
|
|
38
|
-
* Process all unsynced entries (
|
|
92
|
+
* Process all unsynced entries (dataPointId === null).
|
|
39
93
|
* Processes sequentially to avoid overwhelming storage backend.
|
|
40
94
|
* Returns array of results (skips failures, logs errors).
|
|
41
95
|
*/
|
|
42
96
|
export declare function uploadAll(deps: UploadWorkerDeps, options?: UploadAllOptions): Promise<UploadResult[]>;
|
|
97
|
+
export declare function parseGatewayNextVersion(message: string): number | null;
|
|
43
98
|
//# sourceMappingURL=upload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/sync/workers/upload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/sync/workers/upload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EACV,iBAAiB,EAEjB,eAAe,EACf,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IAC/D;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC;;;OAGG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACrD;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,IAAI,EAAE,MAAM;CAIzB;AAED;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAI5C;AAyED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,YAAY,CAAC,CAwSvB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,gBAAgB,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,YAAY,EAAE,CAAC,CA8BzB;AAsBD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUtE"}
|
|
@@ -1,62 +1,358 @@
|
|
|
1
|
+
import { keccak256, stringToHex } from "viem";
|
|
1
2
|
import { deriveScopeKey, encryptWithPassword, } from "@opendatalabs/vana-sdk/browser";
|
|
3
|
+
import { computeDataPointId } from "../data-point-id.js";
|
|
4
|
+
import { deletionTimestamp, isEntryCoveredByTombstone, tombstoneVersion, } from "../scope-deletions.js";
|
|
5
|
+
import { readStoredLineage } from "../../lineage/lineage.js";
|
|
6
|
+
export { computeDataPointId } from "../data-point-id.js";
|
|
7
|
+
export { isEntryCoveredByTombstone } from "../scope-deletions.js";
|
|
8
|
+
/**
|
|
9
|
+
* Thrown when an unsynced entry's local payload file is gone, so the entry was
|
|
10
|
+
* dropped from the index rather than uploaded. `uploadAll` treats it as a
|
|
11
|
+
* silent self-heal, not a sync failure — it must not surface to the user or
|
|
12
|
+
* poison the settle-wait (there is nothing to retry).
|
|
13
|
+
*/
|
|
14
|
+
export class OrphanedEntryError extends Error {
|
|
15
|
+
constructor(path) {
|
|
16
|
+
super(`Orphaned index entry dropped (payload missing): ${path}`);
|
|
17
|
+
this.name = "OrphanedEntryError";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Thrown when an unsynced entry belongs to a scope the gateway has tombstoned
|
|
22
|
+
* and the entry predates that deletion: uploading it would resurrect data the
|
|
23
|
+
* owner deleted, so the local copy is dropped instead. Like
|
|
24
|
+
* `OrphanedEntryError`, `uploadAll` treats it as a silent self-heal.
|
|
25
|
+
*/
|
|
26
|
+
export class DeletedScopeEntryError extends Error {
|
|
27
|
+
constructor(path, deletedAt) {
|
|
28
|
+
super(`Dropped local entry for a scope deleted at ${deletedAt}: ${path}`);
|
|
29
|
+
this.name = "DeletedScopeEntryError";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Drop an unsynced entry the gateway tombstone covers and signal it as a
|
|
34
|
+
* self-heal. Returns without effect when the entry was ingested with
|
|
35
|
+
* knowledge of the tombstone (`afterTombstoneVersion`): a legitimate re-add.
|
|
36
|
+
*
|
|
37
|
+
* When the entry's ciphertext already went up (`uploaded`: the tombstone
|
|
38
|
+
* landed between the deletion guard and the registration), that exact blob
|
|
39
|
+
* is deleted too, so abandoning the entry never leaves owner-decryptable
|
|
40
|
+
* deleted data in storage. If the delete fails the scope is queued for the
|
|
41
|
+
* exact-key cleanup the sync cycle retries.
|
|
42
|
+
*/
|
|
43
|
+
async function dropIfCoveredByDeletion(deps, entry, tombstone, deletedAt, uploaded) {
|
|
44
|
+
const version = tombstoneVersion(tombstone);
|
|
45
|
+
if (!isEntryCoveredByTombstone(entry, { version }))
|
|
46
|
+
return;
|
|
47
|
+
if (uploaded) {
|
|
48
|
+
try {
|
|
49
|
+
await deps.storageAdapter.delete(uploaded.url);
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
53
|
+
if (deps.pendingBlobDeletions) {
|
|
54
|
+
await deps.pendingBlobDeletions.add([
|
|
55
|
+
{ scope: entry.scope, version: String(entry.version) },
|
|
56
|
+
]);
|
|
57
|
+
}
|
|
58
|
+
deps.logger.warn({
|
|
59
|
+
scope: entry.scope,
|
|
60
|
+
url: uploaded.url,
|
|
61
|
+
error: message,
|
|
62
|
+
queuedForCleanup: Boolean(deps.pendingBlobDeletions),
|
|
63
|
+
}, "Could not delete the ciphertext uploaded for an entry the tombstone covers");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
await deps.storage.deleteVersion(entry.scope, entry.collectedAt);
|
|
67
|
+
deps.logger.warn({
|
|
68
|
+
path: entry.path,
|
|
69
|
+
scope: entry.scope,
|
|
70
|
+
deletedAt,
|
|
71
|
+
tombstoneVersion: version,
|
|
72
|
+
entryVersion: entry.version,
|
|
73
|
+
afterTombstoneVersion: entry.afterTombstoneVersion ?? null,
|
|
74
|
+
}, "Dropped unsynced local entry: the gateway reports its scope as deleted");
|
|
75
|
+
throw new DeletedScopeEntryError(entry.path, deletedAt);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* A filesystem "file not found" from readEnvelope. Matched strictly on the
|
|
79
|
+
* Node error code, never on message text: the only storage adapter that
|
|
80
|
+
* implements `dropUnsyncedEntry` (node-data-storage, backed by fs) always sets
|
|
81
|
+
* `code: "ENOENT"` on a missing file, and message-substring matching would let
|
|
82
|
+
* an unrelated validation/adapter error that merely mentions "no such file"
|
|
83
|
+
* trigger a destructive index-row drop.
|
|
84
|
+
*/
|
|
85
|
+
function isMissingPayloadError(err) {
|
|
86
|
+
return err instanceof Error && err.code === "ENOENT";
|
|
87
|
+
}
|
|
2
88
|
/**
|
|
3
89
|
* Upload a single unsynced index entry:
|
|
4
90
|
* 1. Read local data file from disk
|
|
5
|
-
* 2.
|
|
6
|
-
* 3.
|
|
7
|
-
* 4.
|
|
8
|
-
* 5. Upload
|
|
9
|
-
* 6.
|
|
10
|
-
* 7.
|
|
11
|
-
* 8. Update local index with fileId
|
|
91
|
+
* 2. Derive scope key from master key → hex-encode as OpenPGP password
|
|
92
|
+
* 3. Encrypt envelope with OpenPGP password-based encryption → ciphertext
|
|
93
|
+
* 4. Compute dataHash / metadataHash commitments (scope-addressed, no schema)
|
|
94
|
+
* 5. Upload ciphertext to storage backend, version-keyed `{scope}/{version}`
|
|
95
|
+
* 6. Register DPv2 data point on-chain (AddData) if not already
|
|
96
|
+
* 7. Persist the gateway-assigned dataPointId (marks the entry synced)
|
|
12
97
|
*/
|
|
13
98
|
export async function uploadOne(deps, entry) {
|
|
14
99
|
const { storage, storageAdapter, gateway, signer, masterKey, serverOwner, logger, } = deps;
|
|
15
100
|
// 1. Read local data file
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
101
|
+
let envelope;
|
|
102
|
+
try {
|
|
103
|
+
envelope = await storage.readEnvelope(entry.scope, entry.collectedAt);
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
// The index row points at a payload file that no longer exists on disk
|
|
107
|
+
// (a manual `data/<scope>` deletion, or an interrupted cleanup). This
|
|
108
|
+
// entry can never upload — its source bytes are gone — so retrying it
|
|
109
|
+
// every cycle head-blocks the scope forever (ENOENT loop). Drop the
|
|
110
|
+
// orphaned row and skip it instead. Unsynced entries carry no fileId, so
|
|
111
|
+
// this is index-only; nothing on the gateway is affected.
|
|
112
|
+
if (isMissingPayloadError(err) && storage.dropUnsyncedEntry) {
|
|
113
|
+
const dropped = await storage.dropUnsyncedEntry(entry.path);
|
|
114
|
+
if (dropped) {
|
|
115
|
+
logger.warn({ path: entry.path, scope: entry.scope }, "Dropped orphaned index entry: local payload file is missing");
|
|
116
|
+
throw new OrphanedEntryError(entry.path);
|
|
117
|
+
}
|
|
24
118
|
}
|
|
25
|
-
|
|
119
|
+
throw err;
|
|
26
120
|
}
|
|
27
|
-
//
|
|
121
|
+
// 1b. Deletion guard. If the gateway holds a tombstone for this scope, an
|
|
122
|
+
// unsynced entry from before the deletion must never be uploaded: the
|
|
123
|
+
// owner deleted it (possibly on another replica) and registering it again
|
|
124
|
+
// would resurrect the scope. An entry ingested after the deletion is a
|
|
125
|
+
// real re-add and goes up at a version strictly after the tombstone.
|
|
126
|
+
let registerVersion = BigInt(entry.version);
|
|
127
|
+
if (!entry.dataPointId && deps.dataPointFeed) {
|
|
128
|
+
const remote = await deps.dataPointFeed.getDataPoint({
|
|
129
|
+
ownerAddress: serverOwner,
|
|
130
|
+
scope: entry.scope,
|
|
131
|
+
});
|
|
132
|
+
const deletedAt = deletionTimestamp(remote);
|
|
133
|
+
if (remote && deletedAt !== null) {
|
|
134
|
+
await dropIfCoveredByDeletion(deps, entry, remote, deletedAt);
|
|
135
|
+
const afterTombstone = BigInt(remote.expectedVersion) + 1n;
|
|
136
|
+
if (afterTombstone > registerVersion)
|
|
137
|
+
registerVersion = afterTombstone;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// 2. Derive scope key → hex-encode as OpenPGP password
|
|
28
141
|
const scopeKey = deriveScopeKey(masterKey, entry.scope);
|
|
29
142
|
const scopeKeyHex = uint8ToHex(scopeKey);
|
|
30
|
-
//
|
|
143
|
+
// 3. Encrypt with OpenPGP password-based encryption
|
|
31
144
|
const plaintext = new TextEncoder().encode(JSON.stringify(envelope));
|
|
32
145
|
const encrypted = await encryptWithPassword(plaintext, scopeKeyHex);
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
})
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
146
|
+
// 4. Compute the on-chain commitments.
|
|
147
|
+
// dataHash = keccak256 of the plaintext envelope JSON. Commits to the
|
|
148
|
+
// canonical content, not the ciphertext — OpenPGP
|
|
149
|
+
// password-based encryption embeds random salts so
|
|
150
|
+
// re-encrypting the same plaintext yields different bytes;
|
|
151
|
+
// hashing the plaintext keeps the on-chain commitment
|
|
152
|
+
// reproducible across replicas serving the same version.
|
|
153
|
+
// metadataHash = keccak256 of canonical-JSON({scope, collectedAt,
|
|
154
|
+
// sizeBytes}). Commits to the off-chain metadata that
|
|
155
|
+
// describes this version without leaking the payload. DPv2
|
|
156
|
+
// is scope-addressed with no schema concept — the gateway
|
|
157
|
+
// neither records nor registers schemas — so no schemaId is
|
|
158
|
+
// looked up or committed.
|
|
159
|
+
const dataHash = keccak256(plaintext);
|
|
160
|
+
const metadataHash = keccak256(stringToHex(JSON.stringify({
|
|
161
|
+
scope: entry.scope,
|
|
162
|
+
collectedAt: entry.collectedAt,
|
|
163
|
+
sizeBytes: encrypted.byteLength,
|
|
164
|
+
})));
|
|
165
|
+
// 5. Upload ciphertext to storage backend FIRST, version-keyed so the
|
|
166
|
+
// download worker can reconstruct the URL from a DataPointRecord's
|
|
167
|
+
// (scope, expectedVersion) — DataPointRecords carry no URL. We upload
|
|
168
|
+
// before registering so the on-chain data point (the synced marker) is
|
|
169
|
+
// never stamped ahead of a blob that failed to land.
|
|
170
|
+
const storageKey = `${entry.scope}/${registerVersion}`;
|
|
171
|
+
let url = await storageAdapter.upload(storageKey, encrypted);
|
|
172
|
+
// 6. DPv2 data-point registration (idempotent — skipped when a prior run
|
|
173
|
+
// already persisted a dataPointId on this entry). registerDataPoint stamps
|
|
174
|
+
// the synced marker that excludes this entry from findUnsynced next time.
|
|
175
|
+
let dataPointId;
|
|
176
|
+
if (entry.dataPointId) {
|
|
177
|
+
dataPointId = entry.dataPointId;
|
|
52
178
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
179
|
+
else {
|
|
180
|
+
const registerAt = async (version) => {
|
|
181
|
+
const addDataSignature = await signer.signAddData({
|
|
182
|
+
ownerAddress: serverOwner,
|
|
183
|
+
scope: entry.scope,
|
|
184
|
+
dataHash,
|
|
185
|
+
metadataHash,
|
|
186
|
+
expectedVersion: version,
|
|
187
|
+
});
|
|
188
|
+
const registration = {
|
|
189
|
+
ownerAddress: serverOwner,
|
|
190
|
+
scope: entry.scope,
|
|
191
|
+
dataHash,
|
|
192
|
+
metadataHash,
|
|
193
|
+
expectedVersion: String(version),
|
|
194
|
+
signature: addDataSignature,
|
|
195
|
+
};
|
|
196
|
+
// A derivative carries its validated `$lineage` inside the envelope;
|
|
197
|
+
// the gateway stores the same sources next to this (dataPointId,
|
|
198
|
+
// version) so lineage can be walked without the plaintext. The
|
|
199
|
+
// AddData signature is unchanged (dataHash already commits to the
|
|
200
|
+
// plaintext, `$lineage` included); the plaintext list the gateway
|
|
201
|
+
// keeps is covered by a separate LineageAttestation signature bound
|
|
202
|
+
// to this version and dataHash, so a replayed registration cannot
|
|
203
|
+
// swap it (see lineage/attestation.ts).
|
|
204
|
+
const lineage = readStoredLineage(envelope.data);
|
|
205
|
+
// An empty `$lineage` is an explicit root statement and is registered
|
|
206
|
+
// as such (attested empty list); only an ABSENT `$lineage` makes no
|
|
207
|
+
// statement and goes through the plain client.
|
|
208
|
+
let dataPointResult;
|
|
209
|
+
if (lineage) {
|
|
210
|
+
if (!deps.lineageGateway) {
|
|
211
|
+
throw new Error(`Cannot register derivative ${entry.path} (scope=${entry.scope}): lineage registration needs a gateway URL (lineageGateway is not configured)`);
|
|
212
|
+
}
|
|
213
|
+
const lineageSignature = await signer.signLineageAttestation({
|
|
214
|
+
ownerAddress: serverOwner,
|
|
215
|
+
scope: entry.scope,
|
|
216
|
+
expectedVersion: version,
|
|
217
|
+
dataHash,
|
|
218
|
+
sources: lineage.sources,
|
|
219
|
+
});
|
|
220
|
+
dataPointResult = await deps.lineageGateway.registerDataPoint({
|
|
221
|
+
...registration,
|
|
222
|
+
lineage: lineage.sources,
|
|
223
|
+
lineageSignature,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
dataPointResult = await gateway.registerDataPoint(registration);
|
|
228
|
+
}
|
|
229
|
+
const id = dataPointResult.dataPointId ?? null;
|
|
230
|
+
if (!id) {
|
|
231
|
+
throw new Error(`Gateway registerDataPoint did not return a dataPointId for ${entry.path} (scope=${entry.scope}, version=${version})`);
|
|
232
|
+
}
|
|
233
|
+
return id;
|
|
234
|
+
};
|
|
235
|
+
try {
|
|
236
|
+
dataPointId = await registerAt(registerVersion);
|
|
237
|
+
if (registerVersion !== BigInt(entry.version)) {
|
|
238
|
+
// Re-add after a deletion: the row must follow the registered
|
|
239
|
+
// version (the blob key embeds it).
|
|
240
|
+
await storage.updateEntryVersion(entry.path, Number(registerVersion));
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
if (!isStaleVersionConflict(err))
|
|
245
|
+
throw err;
|
|
246
|
+
// The registry's version for this (owner, scope) is ahead of the local
|
|
247
|
+
// index: pre-DPv2 rows were backfilled to version 1, and other replicas
|
|
248
|
+
// (PS Lite in the browser) advance the same per-scope sequence. The
|
|
249
|
+
// gateway 409s precisely so the client can re-sign against the live
|
|
250
|
+
// version — retrying the same version every cycle head-blocks the
|
|
251
|
+
// scope's whole upload queue.
|
|
252
|
+
// Prefer the deletion-aware feed: the SDK client throws on a 410 for
|
|
253
|
+
// a tombstoned point, which would wedge this entry forever.
|
|
254
|
+
const record = deps.dataPointFeed
|
|
255
|
+
? await deps.dataPointFeed.getDataPoint({
|
|
256
|
+
ownerAddress: serverOwner,
|
|
257
|
+
scope: entry.scope,
|
|
258
|
+
})
|
|
259
|
+
: await gateway.getDataPoint(computeDataPointId(serverOwner, entry.scope));
|
|
260
|
+
// The 409 may be a tombstone that landed after the deletion guard in
|
|
261
|
+
// step 1b ran (a delete on another replica racing this upload). Apply
|
|
262
|
+
// the same rule again before rebasing: a covered entry is dropped, a
|
|
263
|
+
// genuine re-add rebases past the tombstone below.
|
|
264
|
+
const conflictDeletedAt = record ? deletionTimestamp(record) : null;
|
|
265
|
+
if (record && conflictDeletedAt !== null) {
|
|
266
|
+
await dropIfCoveredByDeletion(deps, entry, record, conflictDeletedAt, {
|
|
267
|
+
url,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
if (record && record.dataHash.toLowerCase() === dataHash.toLowerCase()) {
|
|
271
|
+
// Identical content is already registered (this entry, or a replica's
|
|
272
|
+
// copy of it) — adopt the registered data point rather than minting a
|
|
273
|
+
// new version of the same bytes.
|
|
274
|
+
dataPointId = record.id;
|
|
275
|
+
// Align the local row with the adopted registry version — downstream
|
|
276
|
+
// consumers sign from the row's version (e.g. x402 RecordDataAccess),
|
|
277
|
+
// so a stale local version would emit records the registry rejects.
|
|
278
|
+
const adoptedVersion = Number(record.expectedVersion);
|
|
279
|
+
if (adoptedVersion !== entry.version) {
|
|
280
|
+
// Cross-replica adopt: "the registrant already uploaded the blob
|
|
281
|
+
// under the registered version key" is an assumption, not a fact —
|
|
282
|
+
// a replica that crashed between register and upload leaves a
|
|
283
|
+
// registry row whose bytes 404 for every consumer (readers
|
|
284
|
+
// reconstruct the URL from the record's (scope, expectedVersion);
|
|
285
|
+
// records carry no URL). Verify, and heal from our identical
|
|
286
|
+
// plaintext (dataHash matched, so our ciphertext decrypts to the
|
|
287
|
+
// registered content).
|
|
288
|
+
const adoptedKey = `${entry.scope}/${adoptedVersion}`;
|
|
289
|
+
const adoptedBlobExists = await storageAdapter.exists(storageAdapter.urlForKey(adoptedKey));
|
|
290
|
+
if (!adoptedBlobExists) {
|
|
291
|
+
logger.warn({ scope: entry.scope, version: adoptedVersion, dataPointId }, "Adopted registry version has no blob in storage; re-uploading from local content");
|
|
292
|
+
url = await storageAdapter.upload(adoptedKey, encrypted);
|
|
293
|
+
}
|
|
294
|
+
await storage.updateEntryVersion(entry.path, adoptedVersion);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
// Rebase onto the gateway's live next-valid version. Two independent
|
|
299
|
+
// signals for what that is:
|
|
300
|
+
// • the registry row — a replica racing AHEAD advances it past the
|
|
301
|
+
// version this error was raised against;
|
|
302
|
+
// • the 409 message itself — authoritative when the registry
|
|
303
|
+
// regressed BEHIND the local index (a moksha/DataRegistry reset,
|
|
304
|
+
// or duplicate re-snapshots pushing the local counter ahead), and
|
|
305
|
+
// the only signal at all when the reset left no row for
|
|
306
|
+
// getDataPoint to return (BUI-715).
|
|
307
|
+
// Take the max so the scope converges from either direction; when
|
|
308
|
+
// neither signal is available there is nothing to rebase onto, so
|
|
309
|
+
// surface the conflict rather than guess.
|
|
310
|
+
const recordNext = record ? Number(record.expectedVersion) + 1 : 0;
|
|
311
|
+
const errorNext = parseGatewayNextVersion(err.message) ?? 0;
|
|
312
|
+
const target = Math.max(recordNext, errorNext);
|
|
313
|
+
if (target <= 0)
|
|
314
|
+
throw err;
|
|
315
|
+
const rebased = BigInt(target);
|
|
316
|
+
// Known limitation (BUI-715 follow-up): when the registry regressed
|
|
317
|
+
// BELOW the local index, `target` can land on a version this scope
|
|
318
|
+
// already has an (older, now-defunct) synced row for. We realign only
|
|
319
|
+
// this entry, so the scope's other stale rows stay bound to gateway
|
|
320
|
+
// versions the reset dropped until their next sync cycle re-registers
|
|
321
|
+
// them. That is transient and fail-safe — readers resolve blobs from
|
|
322
|
+
// the gateway record (consistent with what we just re-registered), and
|
|
323
|
+
// x402 signed from a stale local version is rejected by the gateway
|
|
324
|
+
// rather than serving wrong bytes. A full scope reconcile (clear +
|
|
325
|
+
// renumber every row for the scope from the gateway's version) is
|
|
326
|
+
// tracked separately; head-block recovery is the fix that matters here.
|
|
327
|
+
// The blob key embeds the version (replicas reconstruct URLs from the
|
|
328
|
+
// registry record), so the rebased version needs its own blob; the one
|
|
329
|
+
// written under the stale key above is orphaned, which storage
|
|
330
|
+
// tolerates.
|
|
331
|
+
url = await storageAdapter.upload(`${entry.scope}/${rebased}`, encrypted);
|
|
332
|
+
// A concurrent replica can still win the race to `rebased`; the next
|
|
333
|
+
// sync cycle re-reads the registry and rebases again, so this stays
|
|
334
|
+
// convergent without looping here.
|
|
335
|
+
dataPointId = await registerAt(rebased);
|
|
336
|
+
await storage.updateEntryVersion(entry.path, Number(rebased));
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// 7. Stamp the dataPointId on the local index entry — marks it synced.
|
|
340
|
+
await storage.updateDataPointId(entry.path, dataPointId);
|
|
341
|
+
// The registry now holds a live row for the scope (fresh registration or
|
|
342
|
+
// an adopted one): reads must stop treating it as deleted.
|
|
343
|
+
deps.scopeDeletions?.markLive(entry.scope);
|
|
344
|
+
}
|
|
345
|
+
logger.info({
|
|
346
|
+
path: entry.path,
|
|
347
|
+
scope: entry.scope,
|
|
348
|
+
version: entry.version,
|
|
349
|
+
url,
|
|
350
|
+
dataPointId,
|
|
351
|
+
}, "Uploaded and registered DPv2 data point");
|
|
352
|
+
return { path: entry.path, url, dataPointId };
|
|
57
353
|
}
|
|
58
354
|
/**
|
|
59
|
-
* Process all unsynced entries (
|
|
355
|
+
* Process all unsynced entries (dataPointId === null).
|
|
60
356
|
* Processes sequentially to avoid overwhelming storage backend.
|
|
61
357
|
* Returns array of results (skips failures, logs errors).
|
|
62
358
|
*/
|
|
@@ -70,6 +366,14 @@ export async function uploadAll(deps, options) {
|
|
|
70
366
|
results.push(result);
|
|
71
367
|
}
|
|
72
368
|
catch (err) {
|
|
369
|
+
// A dropped orphan is a self-heal, not a failure: the row is already
|
|
370
|
+
// gone, there is nothing to retry, and surfacing it would keep the
|
|
371
|
+
// scope showing a scary error (and fail settle-waits) for a file the
|
|
372
|
+
// user deleted on purpose. Already logged in uploadOne; swallow here.
|
|
373
|
+
if (err instanceof OrphanedEntryError ||
|
|
374
|
+
err instanceof DeletedScopeEntryError) {
|
|
375
|
+
continue;
|
|
376
|
+
}
|
|
73
377
|
const error = err;
|
|
74
378
|
options?.onError?.(entry, error);
|
|
75
379
|
deps.logger.error({ path: entry.path, scope: entry.scope, error: error.message }, "Failed to upload entry");
|
|
@@ -80,4 +384,29 @@ export async function uploadAll(deps, options) {
|
|
|
80
384
|
function uint8ToHex(bytes) {
|
|
81
385
|
return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
82
386
|
}
|
|
387
|
+
// The gateway rejects a registration whose expectedVersion is not strictly
|
|
388
|
+
// greater than its stored value with a 409; the SDK client surfaces it as
|
|
389
|
+
// `Gateway error: 409 <detail>`. Anything else is not a version conflict.
|
|
390
|
+
function isStaleVersionConflict(err) {
|
|
391
|
+
return err instanceof Error && /Gateway error: 409\b/.test(err.message);
|
|
392
|
+
}
|
|
393
|
+
// Extract the gateway's authoritative next-valid version from a 409 body so a
|
|
394
|
+
// rebase can target it directly instead of only inferring from a registry row
|
|
395
|
+
// (which is absent after a reset that dropped the scope's row entirely).
|
|
396
|
+
// Handles the current "Gap in version sequence … next valid version is N"
|
|
397
|
+
// phrasing (and its "effective max (M" form) as well as the older "Stale
|
|
398
|
+
// expectedVersion … must be strictly greater than the stored value N" one.
|
|
399
|
+
// Returns null when no version can be parsed.
|
|
400
|
+
export function parseGatewayNextVersion(message) {
|
|
401
|
+
const nextValid = message.match(/next valid version is (\d+)/i);
|
|
402
|
+
if (nextValid)
|
|
403
|
+
return Number(nextValid[1]);
|
|
404
|
+
const effectiveMax = message.match(/effective max \((\d+)/i);
|
|
405
|
+
if (effectiveMax)
|
|
406
|
+
return Number(effectiveMax[1]) + 1;
|
|
407
|
+
const storedValue = message.match(/strictly greater than the stored value (\d+)/i);
|
|
408
|
+
if (storedValue)
|
|
409
|
+
return Number(storedValue[1]) + 1;
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
83
412
|
//# sourceMappingURL=upload.js.map
|