mindoodb 0.0.38 → 0.0.39
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/core/BaseMindooDB.d.ts +80 -0
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +296 -1
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +28 -0
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +59 -0
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts +9 -0
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.js +34 -0
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +27 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -1
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js +35 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -1
- package/package.json +1 -1
|
@@ -163,6 +163,27 @@ export declare class BaseMindooDB implements MindooDB {
|
|
|
163
163
|
private logger;
|
|
164
164
|
private performanceCallback?;
|
|
165
165
|
private publicKeyCache;
|
|
166
|
+
/**
|
|
167
|
+
* Author signing keys whose entries were skipped during materialization
|
|
168
|
+
* because the key was not (yet) trusted by the tenant directory, mapped to
|
|
169
|
+
* the ids of the affected documents.
|
|
170
|
+
*
|
|
171
|
+
* This is the record that makes skipped entries recoverable: when the
|
|
172
|
+
* directory later learns about the author (a `grantaccess` document arrives
|
|
173
|
+
* on sync), {@link reconcileAuthorTrust} purges and force-re-emits exactly
|
|
174
|
+
* these documents so they re-materialize with the now-trusted entries and
|
|
175
|
+
* every `iterateChangesSince` consumer (views, summary, full-text) catches
|
|
176
|
+
* up. Persisted in the metadata checkpoint so the healing also works when
|
|
177
|
+
* the directory is synced in a later session while this DB is closed.
|
|
178
|
+
*/
|
|
179
|
+
private pendingUntrustedAuthors;
|
|
180
|
+
/**
|
|
181
|
+
* Set while restoring a metadata checkpoint that predates the
|
|
182
|
+
* `pendingUntrustedAuthors` field. Triggers a one-time heal scan at open
|
|
183
|
+
* ({@link reconcileAuthorTrustAtOpen}) that detects store entries missing
|
|
184
|
+
* from the cached materialization and seeds the pending map from them.
|
|
185
|
+
*/
|
|
186
|
+
private legacyCheckpointNeedsAuthorTrustScan;
|
|
166
187
|
private cacheManager;
|
|
167
188
|
private cachePrefix;
|
|
168
189
|
/**
|
|
@@ -566,6 +587,15 @@ export declare class BaseMindooDB implements MindooDB {
|
|
|
566
587
|
* This avoids re-importing the same public key multiple times.
|
|
567
588
|
*/
|
|
568
589
|
private getOrImportPublicKey;
|
|
590
|
+
/**
|
|
591
|
+
* Remember that entries of `publicKey` were skipped for `docId` because the
|
|
592
|
+
* key is not (yet) trusted by the tenant directory. The record is persisted
|
|
593
|
+
* in the metadata checkpoint and consumed by {@link reconcileAuthorTrust}
|
|
594
|
+
* once the directory later trusts the key (e.g. a grantaccess document
|
|
595
|
+
* arrived on a delayed directory sync), so the skipped entries get
|
|
596
|
+
* re-materialized instead of staying invisible forever.
|
|
597
|
+
*/
|
|
598
|
+
private recordPendingUntrustedAuthor;
|
|
569
599
|
/**
|
|
570
600
|
* Compute the author's metadata-binding signature for a new entry (audit
|
|
571
601
|
* finding #5). The signature covers the canonical, versioned, length-prefixed
|
|
@@ -797,6 +827,56 @@ export declare class BaseMindooDB implements MindooDB {
|
|
|
797
827
|
* dirty so the new visibility state survives a process restart.
|
|
798
828
|
*/
|
|
799
829
|
reconcileKeyVisibility(): Promise<void>;
|
|
830
|
+
/** Serializes concurrent author-trust reconciles (per database). */
|
|
831
|
+
private authorTrustReconcileChain;
|
|
832
|
+
/**
|
|
833
|
+
* Re-materialize documents whose entries were previously skipped because the
|
|
834
|
+
* author's signing key was not (yet) trusted by the tenant directory.
|
|
835
|
+
*
|
|
836
|
+
* This is the counterpart to {@link reconcileKeyVisibility} for AUTHOR trust
|
|
837
|
+
* instead of decryption keys: when a `grantaccess` document arrives on a
|
|
838
|
+
* delayed directory sync, entries that were quarantined/skipped earlier
|
|
839
|
+
* (recorded in {@link pendingUntrustedAuthors}) become valid. For each
|
|
840
|
+
* affected document we purge every cached materialization (L1/L2/summary/
|
|
841
|
+
* full-text) and force a changeSeq bump on the index so all
|
|
842
|
+
* `iterateChangesSince` consumers (virtual views, summary buffer, full-text
|
|
843
|
+
* index) re-process the doc; the body itself re-materializes lazily on the
|
|
844
|
+
* next load and now includes the previously skipped entries.
|
|
845
|
+
*
|
|
846
|
+
* Safe to call repeatedly; concurrent calls are serialized and a call with
|
|
847
|
+
* no pending or no newly-trusted keys is a fast no-op. Errors are logged,
|
|
848
|
+
* never thrown (best-effort hook semantics).
|
|
849
|
+
*
|
|
850
|
+
* @param newlyTrustedKeys Signing keys that just became trusted (directory
|
|
851
|
+
* cache diff). When omitted, every pending key is re-checked against the
|
|
852
|
+
* directory - used at DB open to catch trust changes that happened while
|
|
853
|
+
* this database was closed.
|
|
854
|
+
*/
|
|
855
|
+
reconcileAuthorTrust(newlyTrustedKeys?: ReadonlySet<string>): Promise<void>;
|
|
856
|
+
private reconcileAuthorTrustNow;
|
|
857
|
+
/**
|
|
858
|
+
* Open-time author-trust healing, called from {@link initialize} after a
|
|
859
|
+
* cache restore. Two jobs:
|
|
860
|
+
*
|
|
861
|
+
* 1. Legacy checkpoints (written before {@link pendingUntrustedAuthors}
|
|
862
|
+
* existed) may hide entries that were silently skipped - detect them via
|
|
863
|
+
* the persisted automerge-hash lookup and seed the pending map.
|
|
864
|
+
* 2. Re-check all pending authors against the directory, healing documents
|
|
865
|
+
* whose authors became trusted while this database was closed (e.g. the
|
|
866
|
+
* directory was synced in a session that never opened this DB).
|
|
867
|
+
*/
|
|
868
|
+
private reconcileAuthorTrustAtOpen;
|
|
869
|
+
/**
|
|
870
|
+
* One-time heal scan for checkpoints written before the pending
|
|
871
|
+
* untrusted-author tracking existed: entries skipped back then left no
|
|
872
|
+
* record, but the persisted automerge-hash lookup
|
|
873
|
+
* ({@link automergeHashToEntryId}) only contains changes that were actually
|
|
874
|
+
* APPLIED to a materialization. A store head entry whose hash is missing
|
|
875
|
+
* from that lookup therefore marks a document whose cached state is missing
|
|
876
|
+
* entries - seed the pending map with the authors of all unapplied entries
|
|
877
|
+
* so the regular reconcile can heal (or keep waiting for) them.
|
|
878
|
+
*/
|
|
879
|
+
private seedPendingAuthorsFromLegacyCheckpoint;
|
|
800
880
|
private reconcileRestoredIndexWithStore;
|
|
801
881
|
/**
|
|
802
882
|
* Sync changes from the content-addressed store by finding new entries and processing them.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseMindooDB.d.ts","sourceRoot":"","sources":["../../src/core/BaseMindooDB.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseMindooDB.d.ts","sourceRoot":"","sources":["../../src/core/BaseMindooDB.ts"],"names":[],"mappings":"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"}
|
|
@@ -229,6 +229,27 @@ class BaseMindooDB {
|
|
|
229
229
|
// Cache for imported public keys (CryptoKey objects) to avoid re-importing the same key
|
|
230
230
|
// Map<publicKeyPEM, CryptoKey>
|
|
231
231
|
this.publicKeyCache = new Map();
|
|
232
|
+
/**
|
|
233
|
+
* Author signing keys whose entries were skipped during materialization
|
|
234
|
+
* because the key was not (yet) trusted by the tenant directory, mapped to
|
|
235
|
+
* the ids of the affected documents.
|
|
236
|
+
*
|
|
237
|
+
* This is the record that makes skipped entries recoverable: when the
|
|
238
|
+
* directory later learns about the author (a `grantaccess` document arrives
|
|
239
|
+
* on sync), {@link reconcileAuthorTrust} purges and force-re-emits exactly
|
|
240
|
+
* these documents so they re-materialize with the now-trusted entries and
|
|
241
|
+
* every `iterateChangesSince` consumer (views, summary, full-text) catches
|
|
242
|
+
* up. Persisted in the metadata checkpoint so the healing also works when
|
|
243
|
+
* the directory is synced in a later session while this DB is closed.
|
|
244
|
+
*/
|
|
245
|
+
this.pendingUntrustedAuthors = new Map();
|
|
246
|
+
/**
|
|
247
|
+
* Set while restoring a metadata checkpoint that predates the
|
|
248
|
+
* `pendingUntrustedAuthors` field. Triggers a one-time heal scan at open
|
|
249
|
+
* ({@link reconcileAuthorTrustAtOpen}) that detects store entries missing
|
|
250
|
+
* from the cached materialization and seeds the pending map from them.
|
|
251
|
+
*/
|
|
252
|
+
this.legacyCheckpointNeedsAuthorTrustScan = false;
|
|
232
253
|
// Local cache support
|
|
233
254
|
this.cacheManager = null;
|
|
234
255
|
this.cachePrefix = null;
|
|
@@ -326,6 +347,12 @@ class BaseMindooDB {
|
|
|
326
347
|
* the warmer settled can still display its outcome.
|
|
327
348
|
*/
|
|
328
349
|
this.warmerProgress = null;
|
|
350
|
+
// ---------------------------------------------------------------------------
|
|
351
|
+
// Author-trust reconciliation: heal documents whose entries were skipped
|
|
352
|
+
// because their author was not yet known to the tenant directory.
|
|
353
|
+
// ---------------------------------------------------------------------------
|
|
354
|
+
/** Serializes concurrent author-trust reconciles (per database). */
|
|
355
|
+
this.authorTrustReconcileChain = Promise.resolve();
|
|
329
356
|
(0, databaseIdValidation_1.validateDatabaseId)(store.getId(), "dbId");
|
|
330
357
|
(0, databaseIdValidation_1.validateDatabaseId)(attachmentStore.getId(), "dbId");
|
|
331
358
|
if (store.getId() !== attachmentStore.getId()) {
|
|
@@ -1191,6 +1218,18 @@ class BaseMindooDB {
|
|
|
1191
1218
|
if (this.lastReconciledKeyBagFingerprint !== null) {
|
|
1192
1219
|
checkpoint.keyBagFingerprint = this.lastReconciledKeyBagFingerprint;
|
|
1193
1220
|
}
|
|
1221
|
+
// Persist the pending untrusted-author map (additive field). Written even
|
|
1222
|
+
// when empty: the field's PRESENCE marks the checkpoint as
|
|
1223
|
+
// author-trust-aware, so restore can distinguish it from a legacy
|
|
1224
|
+
// checkpoint that needs the one-time heal scan (see
|
|
1225
|
+
// reconcileAuthorTrustAtOpen).
|
|
1226
|
+
const pendingUntrusted = {};
|
|
1227
|
+
for (const [publicKey, docIds] of this.pendingUntrustedAuthors) {
|
|
1228
|
+
if (docIds.size > 0) {
|
|
1229
|
+
pendingUntrusted[publicKey] = Array.from(docIds);
|
|
1230
|
+
}
|
|
1231
|
+
}
|
|
1232
|
+
checkpoint.pendingUntrustedAuthors = pendingUntrusted;
|
|
1194
1233
|
return new TextEncoder().encode(JSON.stringify(checkpoint));
|
|
1195
1234
|
}
|
|
1196
1235
|
/**
|
|
@@ -1219,6 +1258,24 @@ class BaseMindooDB {
|
|
|
1219
1258
|
}
|
|
1220
1259
|
this.lastReconciledKeyBagFingerprint =
|
|
1221
1260
|
typeof checkpoint.keyBagFingerprint === "string" ? checkpoint.keyBagFingerprint : null;
|
|
1261
|
+
// Pending untrusted-author map. A checkpoint written before this field
|
|
1262
|
+
// existed may hide entries that were silently skipped because their
|
|
1263
|
+
// author was unknown at the time - flag it for the one-time heal scan.
|
|
1264
|
+
this.pendingUntrustedAuthors.clear();
|
|
1265
|
+
if (checkpoint.pendingUntrustedAuthors && typeof checkpoint.pendingUntrustedAuthors === "object") {
|
|
1266
|
+
this.legacyCheckpointNeedsAuthorTrustScan = false;
|
|
1267
|
+
for (const [publicKey, docIds] of Object.entries(checkpoint.pendingUntrustedAuthors)) {
|
|
1268
|
+
if (!Array.isArray(docIds))
|
|
1269
|
+
continue;
|
|
1270
|
+
const validIds = docIds.filter((id) => typeof id === "string");
|
|
1271
|
+
if (validIds.length > 0) {
|
|
1272
|
+
this.pendingUntrustedAuthors.set(publicKey, new Set(validIds));
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
else {
|
|
1277
|
+
this.legacyCheckpointNeedsAuthorTrustScan = true;
|
|
1278
|
+
}
|
|
1222
1279
|
this.syncScanCursors.clear();
|
|
1223
1280
|
if (checkpoint.syncScanCursors && typeof checkpoint.syncScanCursors === "object") {
|
|
1224
1281
|
for (const [key, value] of Object.entries(checkpoint.syncScanCursors)) {
|
|
@@ -1410,6 +1467,28 @@ class BaseMindooDB {
|
|
|
1410
1467
|
this.publicKeyCache.set(publicKey, cryptoKey);
|
|
1411
1468
|
return cryptoKey;
|
|
1412
1469
|
}
|
|
1470
|
+
/**
|
|
1471
|
+
* Remember that entries of `publicKey` were skipped for `docId` because the
|
|
1472
|
+
* key is not (yet) trusted by the tenant directory. The record is persisted
|
|
1473
|
+
* in the metadata checkpoint and consumed by {@link reconcileAuthorTrust}
|
|
1474
|
+
* once the directory later trusts the key (e.g. a grantaccess document
|
|
1475
|
+
* arrived on a delayed directory sync), so the skipped entries get
|
|
1476
|
+
* re-materialized instead of staying invisible forever.
|
|
1477
|
+
*/
|
|
1478
|
+
recordPendingUntrustedAuthor(publicKey, docId) {
|
|
1479
|
+
let docIds = this.pendingUntrustedAuthors.get(publicKey);
|
|
1480
|
+
if (!docIds) {
|
|
1481
|
+
docIds = new Set();
|
|
1482
|
+
this.pendingUntrustedAuthors.set(publicKey, docIds);
|
|
1483
|
+
}
|
|
1484
|
+
if (docIds.has(docId)) {
|
|
1485
|
+
return;
|
|
1486
|
+
}
|
|
1487
|
+
docIds.add(docId);
|
|
1488
|
+
this.logger.info(`Recorded pending untrusted author for doc ${docId}: entries skipped until the directory trusts the key`);
|
|
1489
|
+
this.cacheMetaDirty = true;
|
|
1490
|
+
this.cacheManager?.markDirty();
|
|
1491
|
+
}
|
|
1413
1492
|
/**
|
|
1414
1493
|
* Compute the author's metadata-binding signature for a new entry (audit
|
|
1415
1494
|
* finding #5). The signature covers the canonical, versioned, length-prefixed
|
|
@@ -1818,6 +1897,12 @@ class BaseMindooDB {
|
|
|
1818
1897
|
if (this.reconcileRestoredIndexOnInit) {
|
|
1819
1898
|
await this.reconcileRestoredIndexWithStore();
|
|
1820
1899
|
}
|
|
1900
|
+
// Author-trust healing: entries skipped in an earlier session because
|
|
1901
|
+
// their author was unknown to the directory become materializable once
|
|
1902
|
+
// a grantaccess arrived while this DB was closed. Also runs the
|
|
1903
|
+
// one-time legacy heal scan for checkpoints that predate the
|
|
1904
|
+
// pending-untrusted-author tracking.
|
|
1905
|
+
await this.reconcileAuthorTrustAtOpen();
|
|
1821
1906
|
this.probeFulltextSetupAtOpen();
|
|
1822
1907
|
this.probeSummarySetupAtOpen();
|
|
1823
1908
|
return;
|
|
@@ -2091,6 +2176,190 @@ class BaseMindooDB {
|
|
|
2091
2176
|
// can skip the scan.
|
|
2092
2177
|
this.markKeyBagFingerprintReconciled(await this.computeCurrentKeyBagFingerprint());
|
|
2093
2178
|
}
|
|
2179
|
+
/**
|
|
2180
|
+
* Re-materialize documents whose entries were previously skipped because the
|
|
2181
|
+
* author's signing key was not (yet) trusted by the tenant directory.
|
|
2182
|
+
*
|
|
2183
|
+
* This is the counterpart to {@link reconcileKeyVisibility} for AUTHOR trust
|
|
2184
|
+
* instead of decryption keys: when a `grantaccess` document arrives on a
|
|
2185
|
+
* delayed directory sync, entries that were quarantined/skipped earlier
|
|
2186
|
+
* (recorded in {@link pendingUntrustedAuthors}) become valid. For each
|
|
2187
|
+
* affected document we purge every cached materialization (L1/L2/summary/
|
|
2188
|
+
* full-text) and force a changeSeq bump on the index so all
|
|
2189
|
+
* `iterateChangesSince` consumers (virtual views, summary buffer, full-text
|
|
2190
|
+
* index) re-process the doc; the body itself re-materializes lazily on the
|
|
2191
|
+
* next load and now includes the previously skipped entries.
|
|
2192
|
+
*
|
|
2193
|
+
* Safe to call repeatedly; concurrent calls are serialized and a call with
|
|
2194
|
+
* no pending or no newly-trusted keys is a fast no-op. Errors are logged,
|
|
2195
|
+
* never thrown (best-effort hook semantics).
|
|
2196
|
+
*
|
|
2197
|
+
* @param newlyTrustedKeys Signing keys that just became trusted (directory
|
|
2198
|
+
* cache diff). When omitted, every pending key is re-checked against the
|
|
2199
|
+
* directory - used at DB open to catch trust changes that happened while
|
|
2200
|
+
* this database was closed.
|
|
2201
|
+
*/
|
|
2202
|
+
reconcileAuthorTrust(newlyTrustedKeys) {
|
|
2203
|
+
const run = () => this.reconcileAuthorTrustNow(newlyTrustedKeys).catch((error) => {
|
|
2204
|
+
this.logger.warn(`reconcileAuthorTrust failed: ${error}`);
|
|
2205
|
+
});
|
|
2206
|
+
const chained = this.authorTrustReconcileChain.then(run, run);
|
|
2207
|
+
this.authorTrustReconcileChain = chained;
|
|
2208
|
+
return chained;
|
|
2209
|
+
}
|
|
2210
|
+
async reconcileAuthorTrustNow(newlyTrustedKeys) {
|
|
2211
|
+
if (this.isTimeTravelMode()) {
|
|
2212
|
+
return;
|
|
2213
|
+
}
|
|
2214
|
+
if (this.pendingUntrustedAuthors.size === 0) {
|
|
2215
|
+
return;
|
|
2216
|
+
}
|
|
2217
|
+
const candidateKeys = Array.from(this.pendingUntrustedAuthors.keys()).filter((key) => !newlyTrustedKeys || newlyTrustedKeys.has(key));
|
|
2218
|
+
if (candidateKeys.length === 0) {
|
|
2219
|
+
return;
|
|
2220
|
+
}
|
|
2221
|
+
// Confirm against the directory even when the caller supplied a diff:
|
|
2222
|
+
// validatePublicSigningKey is the same trust source the materialization
|
|
2223
|
+
// paths use, so both stay consistent.
|
|
2224
|
+
const directory = await this.tenant.openDirectory();
|
|
2225
|
+
const trustedKeys = [];
|
|
2226
|
+
for (const key of candidateKeys) {
|
|
2227
|
+
try {
|
|
2228
|
+
if (await directory.validatePublicSigningKey(key)) {
|
|
2229
|
+
trustedKeys.push(key);
|
|
2230
|
+
}
|
|
2231
|
+
}
|
|
2232
|
+
catch (error) {
|
|
2233
|
+
// Transient directory failure: keep the pending record so a later
|
|
2234
|
+
// reconcile retries (fail open towards retry, never towards loss).
|
|
2235
|
+
this.logger.warn(`reconcileAuthorTrust: directory validation failed for a pending key: ${error}`);
|
|
2236
|
+
}
|
|
2237
|
+
}
|
|
2238
|
+
if (trustedKeys.length === 0) {
|
|
2239
|
+
return;
|
|
2240
|
+
}
|
|
2241
|
+
const affectedDocIds = new Set();
|
|
2242
|
+
for (const key of trustedKeys) {
|
|
2243
|
+
for (const docId of this.pendingUntrustedAuthors.get(key) ?? []) {
|
|
2244
|
+
affectedDocIds.add(docId);
|
|
2245
|
+
}
|
|
2246
|
+
this.pendingUntrustedAuthors.delete(key);
|
|
2247
|
+
}
|
|
2248
|
+
this.logger.info(`reconcileAuthorTrust: ${trustedKeys.length} author key(s) became trusted, re-materializing ${affectedDocIds.size} document(s)`);
|
|
2249
|
+
// Deterministic ordering keeps the resulting changefeed stable between
|
|
2250
|
+
// runs (mirrors reconcileKeyVisibility).
|
|
2251
|
+
const docIds = Array.from(affectedDocIds).sort((left, right) => left.localeCompare(right));
|
|
2252
|
+
for (const docId of docIds) {
|
|
2253
|
+
// Drop every cached form of the stale materialization first so the
|
|
2254
|
+
// next load rebuilds from the store with the now-trusted entries.
|
|
2255
|
+
await this.purgeMaterializedDocument(docId);
|
|
2256
|
+
const metadata = await this.scanAllMetadata(this.store, { docId });
|
|
2257
|
+
const lifecycleEntries = metadata.filter((entry) => entry.entryType === "doc_create"
|
|
2258
|
+
|| entry.entryType === "doc_change"
|
|
2259
|
+
|| entry.entryType === "doc_delete"
|
|
2260
|
+
|| entry.entryType === "doc_undelete"
|
|
2261
|
+
|| entry.entryType === "doc_snapshot");
|
|
2262
|
+
const visibility = this.deriveDocumentVisibilityMetadata(metadata);
|
|
2263
|
+
if (!visibility) {
|
|
2264
|
+
continue;
|
|
2265
|
+
}
|
|
2266
|
+
// Author trust and key visibility are independent layers: without the
|
|
2267
|
+
// decryption key the doc stays governed by reconcileKeyVisibility.
|
|
2268
|
+
if (!(await this.tenant.hasDecryptionKey(visibility.decryptionKeyId))) {
|
|
2269
|
+
continue;
|
|
2270
|
+
}
|
|
2271
|
+
const { awaitingWitness, witnessed } = (0, storeEntryTime_1.metadataWitnessState)(lifecycleEntries);
|
|
2272
|
+
// Force the changeSeq bump: the tracked index fields may be identical to
|
|
2273
|
+
// the stale entry, but the materialized content WILL differ once the
|
|
2274
|
+
// previously skipped entries are applied - consumers must re-read.
|
|
2275
|
+
this.updateIndex(docId, visibility.lastModified, visibility.isDeleted, visibility.decryptionKeyId, "visible", awaitingWitness, witnessed, true);
|
|
2276
|
+
}
|
|
2277
|
+
this.cacheMetaDirty = true;
|
|
2278
|
+
this.cacheManager?.markDirty();
|
|
2279
|
+
}
|
|
2280
|
+
/**
|
|
2281
|
+
* Open-time author-trust healing, called from {@link initialize} after a
|
|
2282
|
+
* cache restore. Two jobs:
|
|
2283
|
+
*
|
|
2284
|
+
* 1. Legacy checkpoints (written before {@link pendingUntrustedAuthors}
|
|
2285
|
+
* existed) may hide entries that were silently skipped - detect them via
|
|
2286
|
+
* the persisted automerge-hash lookup and seed the pending map.
|
|
2287
|
+
* 2. Re-check all pending authors against the directory, healing documents
|
|
2288
|
+
* whose authors became trusted while this database was closed (e.g. the
|
|
2289
|
+
* directory was synced in a session that never opened this DB).
|
|
2290
|
+
*/
|
|
2291
|
+
async reconcileAuthorTrustAtOpen() {
|
|
2292
|
+
if (this.isTimeTravelMode() || this._isAdminOnlyDb || this.store.getId() === "directory") {
|
|
2293
|
+
return;
|
|
2294
|
+
}
|
|
2295
|
+
if (this.legacyCheckpointNeedsAuthorTrustScan) {
|
|
2296
|
+
this.legacyCheckpointNeedsAuthorTrustScan = false;
|
|
2297
|
+
try {
|
|
2298
|
+
await this.seedPendingAuthorsFromLegacyCheckpoint();
|
|
2299
|
+
}
|
|
2300
|
+
catch (error) {
|
|
2301
|
+
this.logger.warn(`Legacy author-trust heal scan failed: ${error}`);
|
|
2302
|
+
}
|
|
2303
|
+
// Whether or not entries were found, the checkpoint is upgraded on the
|
|
2304
|
+
// next flush (the pendingUntrustedAuthors field is always written), so
|
|
2305
|
+
// this scan runs at most once per database.
|
|
2306
|
+
this.cacheMetaDirty = true;
|
|
2307
|
+
this.cacheManager?.markDirty();
|
|
2308
|
+
}
|
|
2309
|
+
if (this.pendingUntrustedAuthors.size === 0) {
|
|
2310
|
+
return;
|
|
2311
|
+
}
|
|
2312
|
+
await this.reconcileAuthorTrust();
|
|
2313
|
+
}
|
|
2314
|
+
/**
|
|
2315
|
+
* One-time heal scan for checkpoints written before the pending
|
|
2316
|
+
* untrusted-author tracking existed: entries skipped back then left no
|
|
2317
|
+
* record, but the persisted automerge-hash lookup
|
|
2318
|
+
* ({@link automergeHashToEntryId}) only contains changes that were actually
|
|
2319
|
+
* APPLIED to a materialization. A store head entry whose hash is missing
|
|
2320
|
+
* from that lookup therefore marks a document whose cached state is missing
|
|
2321
|
+
* entries - seed the pending map with the authors of all unapplied entries
|
|
2322
|
+
* so the regular reconcile can heal (or keep waiting for) them.
|
|
2323
|
+
*/
|
|
2324
|
+
async seedPendingAuthorsFromLegacyCheckpoint() {
|
|
2325
|
+
const allMetadata = await this.scanAllMetadata(this.store);
|
|
2326
|
+
const replayByDoc = new Map();
|
|
2327
|
+
for (const entry of allMetadata) {
|
|
2328
|
+
if (!this.isDocumentReplayEntry(entry)) {
|
|
2329
|
+
continue;
|
|
2330
|
+
}
|
|
2331
|
+
const entries = replayByDoc.get(entry.docId) ?? [];
|
|
2332
|
+
entries.push(entry);
|
|
2333
|
+
replayByDoc.set(entry.docId, entries);
|
|
2334
|
+
}
|
|
2335
|
+
let seededDocs = 0;
|
|
2336
|
+
for (const [docId, replayEntries] of replayByDoc) {
|
|
2337
|
+
const applied = this.automergeHashToEntryId.get(docId);
|
|
2338
|
+
// Heads applied => every entry reachable from them was applied too
|
|
2339
|
+
// (Automerge buffers dependents of missing changes), so checking the
|
|
2340
|
+
// active DAG heads is sufficient and avoids false positives for entries
|
|
2341
|
+
// that are only covered by a snapshot.
|
|
2342
|
+
const headEntryIds = this.findActiveReplayHeadEntryIds(replayEntries);
|
|
2343
|
+
const hasUnappliedHead = headEntryIds.some((entryId) => {
|
|
2344
|
+
const parsed = (0, idGeneration_1.parseDocEntryId)(entryId);
|
|
2345
|
+
return parsed !== null && !(applied?.has(parsed.automergeHash));
|
|
2346
|
+
});
|
|
2347
|
+
if (!hasUnappliedHead) {
|
|
2348
|
+
continue;
|
|
2349
|
+
}
|
|
2350
|
+
seededDocs++;
|
|
2351
|
+
for (const entry of replayEntries) {
|
|
2352
|
+
const parsed = (0, idGeneration_1.parseDocEntryId)(entry.id);
|
|
2353
|
+
if (!parsed || applied?.has(parsed.automergeHash)) {
|
|
2354
|
+
continue;
|
|
2355
|
+
}
|
|
2356
|
+
this.recordPendingUntrustedAuthor(entry.createdByPublicKey, docId);
|
|
2357
|
+
}
|
|
2358
|
+
}
|
|
2359
|
+
if (seededDocs > 0) {
|
|
2360
|
+
this.logger.info(`Legacy author-trust heal scan found ${seededDocs} document(s) with unapplied store entries`);
|
|
2361
|
+
}
|
|
2362
|
+
}
|
|
2094
2363
|
async reconcileRestoredIndexWithStore() {
|
|
2095
2364
|
const lifecycleMetadata = await this.scanAllMetadata(this.store);
|
|
2096
2365
|
const lifecycleDocIds = Array.from(new Set(lifecycleMetadata
|
|
@@ -8160,6 +8429,12 @@ class BaseMindooDB {
|
|
|
8160
8429
|
if (cryptoKey) {
|
|
8161
8430
|
keyMap.set(publicKey, cryptoKey);
|
|
8162
8431
|
}
|
|
8432
|
+
else {
|
|
8433
|
+
// Author key not (yet) trusted by the directory: the entries below
|
|
8434
|
+
// will be skipped. Record the author so a later grantaccess sync
|
|
8435
|
+
// can re-materialize this document (reconcileAuthorTrust).
|
|
8436
|
+
this.recordPendingUntrustedAuthor(publicKey, docId);
|
|
8437
|
+
}
|
|
8163
8438
|
}
|
|
8164
8439
|
// Verify all signatures in parallel using cached keys
|
|
8165
8440
|
const signatureVerificationResults = await Promise.all(validEntries.map(async (entryData) => {
|
|
@@ -8959,7 +9234,14 @@ class BaseMindooDB {
|
|
|
8959
9234
|
}
|
|
8960
9235
|
// Verify the author signature over the encrypted payload.
|
|
8961
9236
|
const cryptoKey = await this.getOrImportPublicKey(entry.createdByPublicKey);
|
|
8962
|
-
if (!cryptoKey
|
|
9237
|
+
if (!cryptoKey) {
|
|
9238
|
+
// Author key not (yet) trusted by the directory. Remember it so a
|
|
9239
|
+
// later grantaccess sync can re-materialize the doc (reconcileAuthorTrust).
|
|
9240
|
+
this.recordPendingUntrustedAuthor(entry.createdByPublicKey, docId);
|
|
9241
|
+
quarantine(meta, "invalid_signature", "author key not trusted by directory");
|
|
9242
|
+
continue;
|
|
9243
|
+
}
|
|
9244
|
+
if (!(await this.verifyEntrySignatureWithKey(cryptoKey, entry))) {
|
|
8963
9245
|
quarantine(meta, "invalid_signature", "signature verification failed");
|
|
8964
9246
|
continue;
|
|
8965
9247
|
}
|
|
@@ -9363,6 +9645,12 @@ class BaseMindooDB {
|
|
|
9363
9645
|
if (cryptoKey) {
|
|
9364
9646
|
keyMap.set(publicKey, cryptoKey);
|
|
9365
9647
|
}
|
|
9648
|
+
else {
|
|
9649
|
+
// Author key not (yet) trusted by the directory: the entries below
|
|
9650
|
+
// will be skipped. Record the author so a later grantaccess sync
|
|
9651
|
+
// can re-materialize this document (reconcileAuthorTrust).
|
|
9652
|
+
this.recordPendingUntrustedAuthor(publicKey, docId);
|
|
9653
|
+
}
|
|
9366
9654
|
}
|
|
9367
9655
|
// Verify all signatures in parallel using cached keys
|
|
9368
9656
|
const signatureStartedAt = Date.now();
|
|
@@ -10251,6 +10539,13 @@ class BaseMindooDB {
|
|
|
10251
10539
|
// single-flight; never blocks or fails the sync.
|
|
10252
10540
|
if (this.store.getId() === "directory") {
|
|
10253
10541
|
await this.tenant.reconcileKeyDistributionsForCurrentUserSafe();
|
|
10542
|
+
// Author-trust reconcile: refresh the directory trust caches NOW
|
|
10543
|
+
// (instead of waiting up to DIRECTORY_SYNC_INTERVAL_MS for the next
|
|
10544
|
+
// cache-miss validation) so grantaccess documents that just arrived
|
|
10545
|
+
// immediately unblock entries other open databases skipped while
|
|
10546
|
+
// the author was still unknown. Awaited so a subsequent content-DB
|
|
10547
|
+
// sync in the same flow observes the healed state.
|
|
10548
|
+
await this.tenant.reconcileAuthorTrustAfterDirectorySyncSafe();
|
|
10254
10549
|
}
|
|
10255
10550
|
}
|
|
10256
10551
|
if (options?.signal?.aborted) {
|