@enbox/agent 0.7.7 → 0.7.9

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.
Files changed (77) hide show
  1. package/dist/browser.mjs +9 -9
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/dwn-api.js +3 -2
  4. package/dist/esm/dwn-api.js.map +1 -1
  5. package/dist/esm/enbox-connect-protocol.js +5 -5
  6. package/dist/esm/enbox-connect-protocol.js.map +1 -1
  7. package/dist/esm/index.js +1 -1
  8. package/dist/esm/index.js.map +1 -1
  9. package/dist/esm/permissions-api.js +7 -34
  10. package/dist/esm/permissions-api.js.map +1 -1
  11. package/dist/esm/sync-closure-resolver.js +229 -110
  12. package/dist/esm/sync-closure-resolver.js.map +1 -1
  13. package/dist/esm/sync-closure-types.js +39 -7
  14. package/dist/esm/sync-closure-types.js.map +1 -1
  15. package/dist/esm/sync-engine-level.js +2242 -797
  16. package/dist/esm/sync-engine-level.js.map +1 -1
  17. package/dist/esm/sync-link-id.js +4 -13
  18. package/dist/esm/sync-link-id.js.map +1 -1
  19. package/dist/esm/sync-link-reconciler.js +26 -8
  20. package/dist/esm/sync-link-reconciler.js.map +1 -1
  21. package/dist/esm/sync-messages.js +218 -154
  22. package/dist/esm/sync-messages.js.map +1 -1
  23. package/dist/esm/sync-permission-grants.js +208 -0
  24. package/dist/esm/sync-permission-grants.js.map +1 -0
  25. package/dist/esm/sync-replication-ledger.js +23 -40
  26. package/dist/esm/sync-replication-ledger.js.map +1 -1
  27. package/dist/esm/sync-scope-acceptance.js +126 -0
  28. package/dist/esm/sync-scope-acceptance.js.map +1 -0
  29. package/dist/esm/sync-topological-sort.js +57 -15
  30. package/dist/esm/sync-topological-sort.js.map +1 -1
  31. package/dist/esm/types/sync.js +130 -22
  32. package/dist/esm/types/sync.js.map +1 -1
  33. package/dist/types/dwn-api.d.ts.map +1 -1
  34. package/dist/types/index.d.ts +1 -1
  35. package/dist/types/index.d.ts.map +1 -1
  36. package/dist/types/permissions-api.d.ts +1 -2
  37. package/dist/types/permissions-api.d.ts.map +1 -1
  38. package/dist/types/sync-closure-resolver.d.ts.map +1 -1
  39. package/dist/types/sync-closure-types.d.ts +14 -3
  40. package/dist/types/sync-closure-types.d.ts.map +1 -1
  41. package/dist/types/sync-engine-level.d.ts +144 -31
  42. package/dist/types/sync-engine-level.d.ts.map +1 -1
  43. package/dist/types/sync-link-id.d.ts +3 -9
  44. package/dist/types/sync-link-id.d.ts.map +1 -1
  45. package/dist/types/sync-link-reconciler.d.ts +12 -2
  46. package/dist/types/sync-link-reconciler.d.ts.map +1 -1
  47. package/dist/types/sync-messages.d.ts +16 -13
  48. package/dist/types/sync-messages.d.ts.map +1 -1
  49. package/dist/types/sync-permission-grants.d.ts +52 -0
  50. package/dist/types/sync-permission-grants.d.ts.map +1 -0
  51. package/dist/types/sync-replication-ledger.d.ts +5 -13
  52. package/dist/types/sync-replication-ledger.d.ts.map +1 -1
  53. package/dist/types/sync-scope-acceptance.d.ts +28 -0
  54. package/dist/types/sync-scope-acceptance.d.ts.map +1 -0
  55. package/dist/types/sync-topological-sort.d.ts +2 -1
  56. package/dist/types/sync-topological-sort.d.ts.map +1 -1
  57. package/dist/types/types/permissions.d.ts +2 -0
  58. package/dist/types/types/permissions.d.ts.map +1 -1
  59. package/dist/types/types/sync.d.ts +137 -75
  60. package/dist/types/types/sync.d.ts.map +1 -1
  61. package/package.json +3 -3
  62. package/src/dwn-api.ts +3 -2
  63. package/src/enbox-connect-protocol.ts +5 -5
  64. package/src/index.ts +10 -1
  65. package/src/permissions-api.ts +11 -42
  66. package/src/sync-closure-resolver.ts +306 -126
  67. package/src/sync-closure-types.ts +54 -9
  68. package/src/sync-engine-level.ts +3051 -967
  69. package/src/sync-link-id.ts +9 -14
  70. package/src/sync-link-reconciler.ts +43 -10
  71. package/src/sync-messages.ts +263 -159
  72. package/src/sync-permission-grants.ts +297 -0
  73. package/src/sync-replication-ledger.ts +55 -50
  74. package/src/sync-scope-acceptance.ts +186 -0
  75. package/src/sync-topological-sort.ts +89 -21
  76. package/src/types/permissions.ts +2 -0
  77. package/src/types/sync.ts +235 -62
@@ -81,10 +81,14 @@ export declare class SyncEngineLevel implements SyncEngine {
81
81
  * tenant. Keyed by tenantDid to prevent cross-tenant cache pollution.
82
82
  */
83
83
  private readonly _closureContexts;
84
+ /** Deduplicates concurrent live-sync repairs for the same tenant/protocol. */
85
+ private readonly _protocolMetadataRepairs;
84
86
  /** Maximum entries in the echo-loop suppression cache. */
85
87
  private static readonly ECHO_SUPPRESS_MAX_ENTRIES;
86
88
  /** Validate `SyncIdentityOptions` for `registerIdentity` and `updateIdentityOptions`. */
87
89
  private static validateSyncIdentityOptions;
90
+ private buildSyncTargetsForEndpoint;
91
+ private buildSyncTargetResolutions;
88
92
  /**
89
93
  * Cached sync targets result from the last {@link getSyncTargets} call.
90
94
  * Invalidated on identity registration/unregistration/update.
@@ -101,6 +105,8 @@ export declare class SyncEngineLevel implements SyncEngine {
101
105
  private _syncTargetsCacheGeneration;
102
106
  /** TTL for the sync targets cache (30 seconds). */
103
107
  private static readonly SYNC_TARGETS_CACHE_TTL_MS;
108
+ /** Backoff schedule for recently published did:dht records. */
109
+ private static readonly DID_RESOLUTION_RETRY_BACKOFF_MS;
104
110
  /** Count of consecutive SMT sync failures (for backoff in poll mode). */
105
111
  private _consecutiveFailures;
106
112
  /** Maximum consecutive failures before entering backoff. */
@@ -204,6 +210,9 @@ export declare class SyncEngineLevel implements SyncEngine {
204
210
  * guarantee a future retry path.
205
211
  */
206
212
  private transitionToRepairing;
213
+ private transitionToTerminalIncomplete;
214
+ private setLinkOfflineStatus;
215
+ private clearLinkRuntimeInflight;
207
216
  /**
208
217
  * Schedule a retry for a failed repair. Uses exponential backoff.
209
218
  * No-op if the link is already in `degraded_poll` (timer loop owns retries)
@@ -226,6 +235,8 @@ export declare class SyncEngineLevel implements SyncEngine {
226
235
  * Close pull and push subscriptions for a specific link.
227
236
  */
228
237
  private closeLinkSubscriptions;
238
+ private closeLiveSubscription;
239
+ private closeLocalSubscription;
229
240
  /**
230
241
  * Transition a link to `degraded_poll` and start a per-link polling timer.
231
242
  * The timer runs SMT reconciliation at a reduced frequency (30s with jitter)
@@ -247,10 +258,18 @@ export declare class SyncEngineLevel implements SyncEngine {
247
258
  private teardownLiveSync;
248
259
  /**
249
260
  * Initialize a single replication link target: create or resume the durable
250
- * link, migrate legacy cursors, open pull + push subscriptions, and
251
- * transition the link to `'live'`.
261
+ * link, open pull + push subscriptions, and transition the link to `'live'`.
252
262
  */
253
263
  private initializeLinkTarget;
264
+ private getOrCreateReplicationLink;
265
+ private getReplicationLinkKey;
266
+ private openLinkSubscriptions;
267
+ private static supportsLiveSubscriptions;
268
+ private markLinkLive;
269
+ private markLinkPolling;
270
+ private handleInitializeLinkTargetError;
271
+ private createActiveLinkInitializationResult;
272
+ private cleanupFailedLinkInitialization;
254
273
  /**
255
274
  * Wrapper around {@link initializeLinkTarget} that retries on DID
256
275
  * resolution failures. Newly published `did:dht` DIDs take a few
@@ -260,6 +279,7 @@ export declare class SyncEngineLevel implements SyncEngine {
260
279
  * propagation settle before giving up.
261
280
  */
262
281
  private initializeLinkTargetWithRetry;
282
+ private isDidResolutionFailure;
263
283
  /** Check whether a link key belongs to a given DID. */
264
284
  private isLinkKeyForDid;
265
285
  /** Check whether this DID has any active links. */
@@ -268,11 +288,50 @@ export declare class SyncEngineLevel implements SyncEngine {
268
288
  private addIdentityToLiveSync;
269
289
  /** Hot-remove a single identity from the active live sync session. */
270
290
  private removeIdentityFromLiveSync;
291
+ private tryPruneSupersededDurableLinksForRegisteredIdentity;
292
+ private getDurableLinkIdentityKeysForRegisteredIdentity;
293
+ private pruneSupersededDurableLinksForIdentity;
271
294
  /**
272
295
  * Opens a MessagesSubscribe WebSocket subscription to a remote DWN.
273
296
  * Incoming events are processed locally as they arrive.
274
297
  */
275
298
  private openLivePullSubscription;
299
+ private getInitialPullCursor;
300
+ private isValidProgressToken;
301
+ private createLinkStalePredicate;
302
+ private handleLivePullMessage;
303
+ private handleLivePullEose;
304
+ private markPullLinkOnline;
305
+ private handleLivePullSubscriptionError;
306
+ private handleLivePullEvent;
307
+ private shouldSkipLivePullEvent;
308
+ private skipOutOfScopePullEvent;
309
+ private startPullDelivery;
310
+ private processLivePullEvent;
311
+ private applyLivePullEvent;
312
+ private createLivePullDataStreamFactory;
313
+ private createLivePullApplyError;
314
+ private static dataStreamFromBytes;
315
+ private static readStreamBytes;
316
+ private static isApplySuccess;
317
+ private invalidateClosureCacheForMessage;
318
+ private ensureClosureComplete;
319
+ private tryRepairMissingProtocolMetadata;
320
+ private repairMissingProtocolMetadata;
321
+ private fetchRemoteProtocolConfigClosure;
322
+ private fetchRemoteProtocolConfig;
323
+ private getProtocolsQueryPermissionGrantId;
324
+ private toAuthenticatedTenantProtocolConfig;
325
+ private static newestProtocolConfig;
326
+ private static isProtocolConfigNewer;
327
+ private static protocolConfigApplySucceeded;
328
+ private static isRepairableProtocolMetadataFailure;
329
+ private recordClosureFailure;
330
+ private trackRecentlyPulledMessage;
331
+ private commitPullDelivery;
332
+ private emitPullCheckpointAdvance;
333
+ private handleLivePullProcessingError;
334
+ private recordPullProcessingFailure;
276
335
  /**
277
336
  * Subscribes to the local DWN's EventLog so that writes by the user are
278
337
  * immediately pushed to the remote DWN instead of waiting for the next poll.
@@ -283,15 +342,78 @@ export declare class SyncEngineLevel implements SyncEngine {
283
342
  */
284
343
  private flushPendingPushes;
285
344
  private flushPendingPushesForLink;
345
+ private takePushFlushBatch;
346
+ private handlePushBatchResult;
347
+ private clearSucceededPushFailures;
348
+ private recordPermanentPushFailures;
349
+ private requeueFailedPushes;
350
+ private cleanupSuccessfulPushRuntime;
351
+ private finishPushFlush;
286
352
  /** Push retry backoff schedule: immediate, 250ms, 1s, 2s, then give up. */
287
353
  private static readonly PUSH_RETRY_BACKOFF_MS;
354
+ private static readonly ROOT_CONVERGENCE_CLEARABLE_DEAD_LETTER_CATEGORIES;
288
355
  /**
289
356
  * Re-queues a failed push batch for retry, or marks the link
290
357
  * `needsReconcile` if retries are exhausted. Bounded to prevent
291
358
  * infinite retry loops.
292
359
  */
293
360
  private requeueOrReconcile;
361
+ private markLinkNeedsReconcile;
294
362
  private createLinkReconciler;
363
+ private getReconcileProtocols;
364
+ private getAuthorizationGrantIds;
365
+ private reconcileProjectionTarget;
366
+ private reconcileRecordsProjectionTarget;
367
+ private reconcileProtocolSetProjectionTarget;
368
+ private collectProtocolSetDiffPlan;
369
+ private getProtocolRoots;
370
+ private applyProtocolSetDiffPlan;
371
+ private applyProjectedDiff;
372
+ private pullProjectedRemoteDiff;
373
+ private pushProjectedLocalDiff;
374
+ private pullRemoteDiffEntries;
375
+ private pullProjectedDependencyHints;
376
+ private verifyProjectedDependencies;
377
+ private verifyProjectedProtocolConfigDependencies;
378
+ private static indexEntriesWithMessage;
379
+ private static recordsInitialWritesFromVerifiedDependencies;
380
+ private collectProjectedRecordsInitialWriteDependencies;
381
+ private verifyRecordsInitialWriteCandidate;
382
+ private toAuthenticatedRecordsInitialWriteDependency;
383
+ private collectProjectedProtocolConfigCandidates;
384
+ private verifyProtocolConfigCandidate;
385
+ private verifyProtocolConfigCandidateMessage;
386
+ private toAuthenticatedProtocolConfigDependency;
387
+ private static projectedDependencyCidsMatch;
388
+ private static recordsWriteProtocol;
389
+ private static recordsDeleteRecordId;
390
+ private static protocolConfigRootRecordsWrite;
391
+ private static protocolsConfigureProtocol;
392
+ private static protocolsConfigureProtocolFromGenericMessage;
393
+ private static protocolsConfigureIsNotNewerThanRecordsWrite;
394
+ private static protocolsConfigureUses;
395
+ private static hasMessage;
396
+ private static isRecordsWriteProtocolMessage;
397
+ private static isRecordsWriteMessage;
398
+ private static isRecordsDeleteMessage;
399
+ private static isProtocolsConfigureDefinitionMessage;
400
+ private static hasProtocolsConfigureDefinition;
401
+ private static isProtocolsConfigureDefinition;
402
+ private static filterProtocolConfigClosure;
403
+ private static groupGoverningProtocolConfigCandidatesByProtocol;
404
+ private static isProtocolConfigCandidateAtLeastAsNew;
405
+ private static takeNextUnvisitedProtocol;
406
+ private static acceptProtocolConfigCandidates;
407
+ private static queueUnvisitedProtocols;
408
+ private static protocolSetScopeForProjectedDependencies;
409
+ private static projectedDependencyProtocols;
410
+ private static hasDependencyPayloadBytes;
411
+ private static dedupeDependencyEntries;
412
+ private pushLocalDiffEntries;
413
+ private verifyProtocolSetConvergence;
414
+ private static dedupeRemoteEntries;
415
+ private static dedupeStrings;
416
+ private clearRootConvergenceDeadLettersForScope;
295
417
  /** Active reconcile timers, keyed by link key. */
296
418
  private readonly _reconcileTimers;
297
419
  /** Active reconcile operations, keyed by link key (dedup). */
@@ -318,31 +440,10 @@ export declare class SyncEngineLevel implements SyncEngine {
318
440
  * Live-mode subscription methods (`openLivePullSubscription`,
319
441
  * `openLocalPushSubscription`) receive `linkKey` directly and never
320
442
  * call this. The remaining callers are poll-mode `sync()` and the
321
- * live-mode startup/error paths that already have `link.scopeId`.
322
- *
323
- * The `undefined` fallback (which produces a legacy cursor key) exists
324
- * only for the no-protocol full-tenant targets in poll mode.
443
+ * live-mode startup/error paths that already have a projection ID and
444
+ * authorization epoch.
325
445
  */
326
446
  private buildLinkKey;
327
- /**
328
- * @deprecated Used by poll-mode sync and one-time migration only. Live mode
329
- * uses ReplicationLedger checkpoints. Handles migration from old string cursors:
330
- * if the stored value is a bare string (pre-ProgressToken format), it is treated
331
- * as absent — the sync engine will do a full SMT reconciliation on first startup
332
- * after upgrade, which is correct and safe.
333
- */
334
- private getCursor;
335
- /**
336
- * Delete a legacy cursor from the old syncCursors sublevel.
337
- * Called as part of one-time migration to ReplicationLedger.
338
- */
339
- private deleteLegacyCursor;
340
- /**
341
- * Extracts a ReadableStream from a MessageEvent if it contains a
342
- * RecordsWrite with data — either as an inline `encodedData` field
343
- * (for records <= 30 KB) or as a pre-existing data stream.
344
- */
345
- private extractDataStream;
346
447
  /**
347
448
  * Returns the hex-encoded default (empty-subtree) hash for a given depth.
348
449
  * Lazily initializes the cache on first call.
@@ -379,6 +480,8 @@ export declare class SyncEngineLevel implements SyncEngine {
379
480
  * Returns a hex-encoded root hash string.
380
481
  */
381
482
  private getRemoteRoot;
483
+ private getLocalProjectedRoot;
484
+ private getRemoteProjectedRoot;
382
485
  /**
383
486
  * Compute the diff between local and remote in a single HTTP round-trip.
384
487
  *
@@ -393,6 +496,8 @@ export declare class SyncEngineLevel implements SyncEngine {
393
496
  * This replaces `walkTreeDiff()` which required one HTTP call per tree node.
394
497
  */
395
498
  private diffWithRemote;
499
+ private diffProjectedWithRemote;
500
+ private diffRemoteMessages;
396
501
  /**
397
502
  * Walk the local SMT to a given depth and collect non-empty subtree hashes.
398
503
  * Returns a `{ prefix: hexHash }` map. Empty subtrees (matching the default
@@ -402,6 +507,7 @@ export declare class SyncEngineLevel implements SyncEngine {
402
507
  * to `getLocalSubtreeHash` which routes through RPC.
403
508
  */
404
509
  private collectLocalSubtreeHashes;
510
+ private collectLocalProjectedSubtreeHashes;
405
511
  /**
406
512
  * Get the subtree hash at a given bit prefix from the local DWN.
407
513
  *
@@ -409,6 +515,7 @@ export declare class SyncEngineLevel implements SyncEngine {
409
515
  * In remote mode: constructs a signed MessagesSync message and routes through RPC.
410
516
  */
411
517
  private getLocalSubtreeHash;
518
+ private getLocalProjectedSubtreeHash;
412
519
  /**
413
520
  * Get all leaf messageCids under a given prefix from the local DWN.
414
521
  *
@@ -416,6 +523,7 @@ export declare class SyncEngineLevel implements SyncEngine {
416
523
  * In remote mode: constructs a signed MessagesSync message and routes through RPC.
417
524
  */
418
525
  private getLocalLeaves;
526
+ private getLocalProjectedLeaves;
419
527
  /**
420
528
  * Fetches missing messages from the remote DWN and processes them locally
421
529
  * in dependency order (topological sort).
@@ -425,6 +533,10 @@ export declare class SyncEngineLevel implements SyncEngine {
425
533
  * Only `messageCids` that were NOT prefetched are fetched individually.
426
534
  */
427
535
  private pullMessages;
536
+ private acceptPulledSyncEntry;
537
+ private resolvePulledDeleteInitialWrite;
538
+ private static findInitialWriteByRecordId;
539
+ private findInitialWriteInPullBatch;
428
540
  /**
429
541
  * Evicts expired entries from the echo-loop suppression cache.
430
542
  * Also enforces the size cap by evicting oldest entries first.
@@ -456,6 +568,7 @@ export declare class SyncEngineLevel implements SyncEngine {
456
568
  * also have no protocol.
457
569
  */
458
570
  private clearDeadLettersForLink;
571
+ private clearRootConvergenceDeadLetters;
459
572
  /**
460
573
  * Build a compound dead letter key. Different remotes can fail the same CID
461
574
  * for different reasons, so the key includes the remote endpoint.
@@ -474,17 +587,17 @@ export declare class SyncEngineLevel implements SyncEngine {
474
587
  clearFailedMessage(messageCid: string, remoteEndpoint?: string): Promise<boolean>;
475
588
  clearAllFailedMessages(tenantDid?: string): Promise<void>;
476
589
  getSyncHealth(): Promise<SyncHealthSummary>;
590
+ private getCurrentDurableLinkIdentityKeys;
591
+ private getDurableLinkIdentityKey;
592
+ private static durableLinkIdentityKey;
593
+ private static isUnhealthyLinkStatus;
477
594
  /**
478
- * Returns the list of sync targets: (did, dwnUrl, delegateDid?, protocol?) tuples.
595
+ * Returns the list of sync targets: one canonical projection target per
596
+ * registered DID and resolved DWN endpoint.
479
597
  * Results are cached for up to 30 seconds to avoid redundant DID resolution
480
598
  * on every sync tick. The cache is invalidated when identities are registered,
481
599
  * unregistered, or updated.
482
600
  */
483
601
  private getSyncTargets;
484
- /**
485
- * Gets the permission grant ID for MessagesSync if a delegateDid is provided.
486
- * Returns undefined if no delegate is in use (owner access).
487
- */
488
- private getSyncPermissionGrantId;
489
602
  }
490
603
  //# sourceMappingURL=sync-engine-level.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-engine-level.d.ts","sourceRoot":"","sources":["../../src/sync-engine-level.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-engine-level.d.ts","sourceRoot":"","sources":["../../src/sync-engine-level.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,11 @@
1
- /** Separator used in compound runtime/legacy cursor keys. */
1
+ /** Separator used in compound replication link identifiers. */
2
2
  export declare const LINK_ID_SEPARATOR = "^";
3
3
  /** Opaque runtime identifier for a replication link. */
4
4
  export type LinkId = string;
5
5
  /**
6
6
  * Build the runtime identifier for a replication link.
7
7
  *
8
- * Runtime identity is `(tenantDid, remoteEndpoint, scopeId)`.
8
+ * Runtime identity is `(tenantDid, remoteEndpoint, projectionId, authorizationEpoch)`.
9
9
  */
10
- export declare function buildLinkId(tenantDid: string, remoteEndpoint: string, scopeId: string): LinkId;
11
- /**
12
- * Build the legacy cursor key used by the deprecated `syncCursors` sublevel.
13
- *
14
- * This remains only for one-time migration of pre-Phase-1f data.
15
- */
16
- export declare function buildLegacyCursorKey(tenantDid: string, remoteEndpoint: string, protocol?: string): string;
10
+ export declare function buildLinkId(tenantDid: string, remoteEndpoint: string, projectionId: string, authorizationEpoch: string): LinkId;
17
11
  //# sourceMappingURL=sync-link-id.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-link-id.d.ts","sourceRoot":"","sources":["../../src/sync-link-id.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,wDAAwD;AACxD,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGzG"}
1
+ {"version":3,"file":"sync-link-id.d.ts","sourceRoot":"","sources":["../../src/sync-link-id.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,wDAAwD;AACxD,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAER"}
@@ -6,6 +6,7 @@ export type ReconcileTarget = {
6
6
  dwnUrl: string;
7
7
  delegateDid?: string;
8
8
  protocol?: string;
9
+ permissionGrantIds?: string[];
9
10
  };
10
11
  export type ReconcileOutcome = {
11
12
  aborted?: boolean;
@@ -20,8 +21,8 @@ export type ReconcileOutcome = {
20
21
  pushResult?: PushResult;
21
22
  };
22
23
  type ReconcileDeps = {
23
- getLocalRoot: (did: string, delegateDid?: string, protocol?: string) => Promise<string>;
24
- getRemoteRoot: (did: string, dwnUrl: string, delegateDid?: string, protocol?: string) => Promise<string>;
24
+ getLocalRoot: (did: string, delegateDid?: string, protocol?: string, permissionGrantIds?: string[]) => Promise<string>;
25
+ getRemoteRoot: (did: string, dwnUrl: string, delegateDid?: string, protocol?: string, permissionGrantIds?: string[]) => Promise<string>;
25
26
  diffWithRemote: (target: ReconcileTarget) => Promise<{
26
27
  onlyRemote: MessagesSyncDiffEntry[];
27
28
  onlyLocal: string[];
@@ -31,20 +32,29 @@ type ReconcileDeps = {
31
32
  dwnUrl: string;
32
33
  delegateDid?: string;
33
34
  protocol?: string;
35
+ permissionGrantIds?: string[];
34
36
  messageCids: string[];
35
37
  prefetched: (MessagesSyncDiffEntry & {
36
38
  message: GenericMessage;
37
39
  })[];
40
+ shouldContinue?: () => boolean;
38
41
  }) => Promise<void>;
39
42
  pushMessages: (params: {
40
43
  did: string;
41
44
  dwnUrl: string;
42
45
  delegateDid?: string;
43
46
  protocol?: string;
47
+ permissionGrantIds?: string[];
44
48
  messageCids: string[];
45
49
  }) => Promise<PushResult>;
46
50
  shouldContinue?: () => boolean;
47
51
  };
52
+ export declare function partitionRemoteEntries(entries: MessagesSyncDiffEntry[]): {
53
+ prefetched: (MessagesSyncDiffEntry & {
54
+ message: GenericMessage;
55
+ })[];
56
+ needsFetchCids: string[];
57
+ };
48
58
  export declare class SyncLinkReconciler {
49
59
  private readonly _deps;
50
60
  constructor(deps: ReconcileDeps);
@@ -1 +1 @@
1
- {"version":3,"file":"sync-link-reconciler.d.ts","sourceRoot":"","sources":["../../src/sync-link-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxF,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzG,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC;QAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACnH,YAAY,EAAE,CAAC,MAAM,EAAE;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,EAAE,CAAC,qBAAqB,GAAG;YAAE,OAAO,EAAE,cAAc,CAAA;SAAE,CAAC,EAAE,CAAC;KACrE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,YAAY,EAAE,CAAC,MAAM,EAAE;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;CAChC,CAAC;AA2BF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;gBAE1B,IAAI,EAAE,aAAa;IAIlB,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;QACxD,SAAS,CAAC,EAAE,kBAAkB,CAAC;QAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAuE9B"}
1
+ {"version":3,"file":"sync-link-reconciler.d.ts","sourceRoot":"","sources":["../../src/sync-link-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,YAAY,EAAE,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,aAAa,EAAE,CACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC;QAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACnH,YAAY,EAAE,CAAC,MAAM,EAAE;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,EAAE,CAAC,qBAAqB,GAAG;YAAE,OAAO,EAAE,cAAc,CAAA;SAAE,CAAC,EAAE,CAAC;QACpE,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;KAChC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,YAAY,EAAE,CAAC,MAAM,EAAE;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;CAChC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG;IACxE,UAAU,EAAE,CAAC,qBAAqB,GAAG;QAAE,OAAO,EAAE,cAAc,CAAA;KAAE,CAAC,EAAE,CAAC;IACpE,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAoBA;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;gBAE1B,IAAI,EAAE,aAAa;IAIlB,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;QACxD,SAAS,CAAC,EAAE,kBAAkB,CAAC;QAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAuF9B"}
@@ -1,6 +1,5 @@
1
1
  import type { GenericMessage, MessagesSyncDiffEntry, UnionMessageReply } from '@enbox/dwn-sdk-js';
2
2
  import type { EnboxPlatformAgent } from './types/agent.js';
3
- import type { PermissionsApi } from './types/permissions.js';
4
3
  import type { PushResult } from './types/sync.js';
5
4
  /** Entry type for fetched messages with optional data stream and retry buffer. */
6
5
  export type SyncMessageEntry = {
@@ -9,6 +8,12 @@ export type SyncMessageEntry = {
9
8
  /** Buffered data bytes for retry — avoids re-fetching from remote when stream is consumed. */
10
9
  bufferedData?: Uint8Array;
11
10
  };
11
+ /** Optional pre-apply gate for inbound sync entries. */
12
+ export type PullMessageAcceptance = (entry: SyncMessageEntry, entries: SyncMessageEntry[]) => Promise<boolean>;
13
+ /** Raised when an in-flight pull is cancelled before local apply can continue. */
14
+ export declare class SyncPullAbortedError extends Error {
15
+ constructor();
16
+ }
12
17
  /**
13
18
  * 202: message was successfully written to the remote DWN
14
19
  * 204: an initial write message was written without any data
@@ -42,28 +47,28 @@ export declare function getMessageCid(message: GenericMessage): Promise<string>;
42
47
  * Large payloads are re-fetched on retry since buffering them would consume
43
48
  * too much memory.
44
49
  */
45
- export declare function pullMessages({ did, dwnUrl, delegateDid, protocol, messageCids, prefetched, agent, permissionsApi }: {
50
+ export declare function pullMessages({ did, dwnUrl, delegateDid, permissionGrantIds, messageCids, prefetched, acceptEntry, shouldContinue, agent }: {
46
51
  did: string;
47
52
  dwnUrl: string;
48
53
  delegateDid?: string;
49
- protocol?: string;
54
+ permissionGrantIds?: string[];
50
55
  messageCids: string[];
51
56
  /** Pre-fetched message entries from the batched diff response (already have message + data). */
52
57
  prefetched?: MessagesSyncDiffEntry[];
58
+ acceptEntry?: PullMessageAcceptance;
59
+ shouldContinue?: () => boolean;
53
60
  agent: EnboxPlatformAgent;
54
- permissionsApi: PermissionsApi;
55
61
  }): Promise<string[]>;
56
62
  /**
57
63
  * Fetches messages from a remote DWN by their CIDs using MessagesRead.
58
64
  */
59
- export declare function fetchRemoteMessages({ did, dwnUrl, delegateDid, protocol, messageCids, agent, permissionsApi }: {
65
+ export declare function fetchRemoteMessages({ did, dwnUrl, delegateDid, permissionGrantIds, messageCids, agent }: {
60
66
  did: string;
61
67
  dwnUrl: string;
62
68
  delegateDid?: string;
63
- protocol?: string;
69
+ permissionGrantIds?: string[];
64
70
  messageCids: string[];
65
71
  agent: EnboxPlatformAgent;
66
- permissionsApi: PermissionsApi;
67
72
  }): Promise<SyncMessageEntry[]>;
68
73
  /**
69
74
  * Reads missing messages from the local DWN and pushes them to the remote DWN.
@@ -75,24 +80,22 @@ export declare function fetchRemoteMessages({ did, dwnUrl, delegateDid, protocol
75
80
  * on the first failure. Callers use this to advance the push checkpoint
76
81
  * incrementally — only up to the highest contiguous success.
77
82
  */
78
- export declare function pushMessages({ did, dwnUrl, delegateDid, protocol, messageCids, agent, permissionsApi }: {
83
+ export declare function pushMessages({ did, dwnUrl, delegateDid, permissionGrantIds, messageCids, agent }: {
79
84
  did: string;
80
85
  dwnUrl: string;
81
86
  delegateDid?: string;
82
- protocol?: string;
87
+ permissionGrantIds?: string[];
83
88
  messageCids: string[];
84
89
  agent: EnboxPlatformAgent;
85
- permissionsApi: PermissionsApi;
86
90
  }): Promise<PushResult>;
87
91
  /**
88
92
  * Reads a message from the local DWN by its CID using MessagesRead.
89
93
  */
90
- export declare function getLocalMessage({ author, delegateDid, protocol, messageCid, agent, permissionsApi }: {
94
+ export declare function getLocalMessage({ author, delegateDid, permissionGrantIds, messageCid, agent }: {
91
95
  author: string;
92
96
  delegateDid?: string;
93
- protocol?: string;
97
+ permissionGrantIds?: string[];
94
98
  messageCid: string;
95
99
  agent: EnboxPlatformAgent;
96
- permissionsApi: PermissionsApi;
97
100
  }): Promise<SyncMessageEntry | undefined>;
98
101
  //# sourceMappingURL=sync-messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-messages.d.ts","sourceRoot":"","sources":["../../src/sync-messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-messages.d.ts","sourceRoot":"","sources":["../../src/sync-messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { DwnInterface } from './types/dwn.js';
2
+ import type { GenericMessage } from '@enbox/dwn-sdk-js';
3
+ import type { NonEmptyStringArray, SyncAuthorizationGrant, SyncScope } from './types/sync.js';
4
+ import type { PermissionGrantEntry, PermissionsApi } from './types/permissions.js';
5
+ export type MessagesSyncScopeResolution = {
6
+ scope: SyncScope;
7
+ permissionGrants: PermissionGrantEntry[];
8
+ };
9
+ /** Returns a sorted, duplicate-free grant ID set, or `undefined` for owner requests. */
10
+ export declare function toMessagesPermissionGrantIds(permissionGrantIds: string[] | undefined): NonEmptyStringArray | undefined;
11
+ /**
12
+ * Gets the active permission grant IDs that authorize a Messages operation.
13
+ *
14
+ * Owner-authored sync does not invoke grants. Delegate full sync requires at
15
+ * least one active unscoped Messages.Read grant. Delegate protocol-set sync
16
+ * requires each requested protocol to be covered by an active Messages.Read
17
+ * grant, then invokes every active grant that participates in the projection.
18
+ * This keeps the authorization epoch tied to grant churn without widening the
19
+ * CID projection being compared.
20
+ */
21
+ export declare function getMessagesPermissionGrantsForScope({ did, delegateDid, protocols, messageType, permissionsApi, }: {
22
+ did: string;
23
+ delegateDid?: string;
24
+ protocols?: NonEmptyStringArray;
25
+ messageType: DwnInterface;
26
+ permissionsApi: PermissionsApi;
27
+ }): Promise<PermissionGrantEntry[]>;
28
+ /**
29
+ * Resolves active Messages.Read grants into one or more sync targets.
30
+ *
31
+ * Broad protocol coverage remains on StateIndex full/protocol roots. Exact
32
+ * protocolPath and contextId grants are grouped into a Records-primary
33
+ * projection target so a narrow grant never authorizes a broad protocol root.
34
+ */
35
+ export declare function resolveMessagesSyncScopes({ did, delegateDid, requestedScope, messageType, permissionsApi, }: {
36
+ did: string;
37
+ delegateDid?: string;
38
+ requestedScope: SyncScope;
39
+ messageType: DwnInterface;
40
+ permissionsApi: PermissionsApi;
41
+ }): Promise<MessagesSyncScopeResolution[]>;
42
+ /** Converts permission grant entries into authorization epoch inputs. */
43
+ export declare function toSyncAuthorizationGrants(permissionGrants: PermissionGrantEntry[]): [SyncAuthorizationGrant, ...SyncAuthorizationGrant[]];
44
+ /** Returns sorted grant IDs from permission grant entries. */
45
+ export declare function permissionGrantIdsFromEntries(permissionGrants: PermissionGrantEntry[]): NonEmptyStringArray | undefined;
46
+ /**
47
+ * Returns the permission grant IDs invoked by a message.
48
+ *
49
+ * Real DWN messages use the author signature payload as the source of truth.
50
+ */
51
+ export declare function getInvokedPermissionGrantIds(message: GenericMessage): string[];
52
+ //# sourceMappingURL=sync-permission-grants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-permission-grants.d.ts","sourceRoot":"","sources":["../../src/sync-permission-grants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAA4E,MAAM,mBAAmB,CAAC;AAClI,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAMnF,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,SAAS,CAAC;IACjB,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;CAC1C,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,4BAA4B,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAKtH;AAED;;;;;;;;;GASG;AACH,wBAAsB,mCAAmC,CAAC,EACxD,GAAG,EACH,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,GACf,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,WAAW,EAAE,YAAY,CAAC;IAC1B,cAAc,EAAE,cAAc,CAAC;CAChC,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAclC;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,EAC9C,GAAG,EACH,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,GACf,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,SAAS,CAAC;IAC1B,WAAW,EAAE,YAAY,CAAC;IAC1B,cAAc,EAAE,cAAc,CAAC;CAChC,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAsBzC;AAqID,yEAAyE;AACzE,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,GAAG,CAAC,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,CAAC,CAWzI;AA6BD,8DAA8D;AAC9D,wBAAgB,6BAA6B,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,GAAG,mBAAmB,GAAG,SAAS,CAEvH;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAW9E"}
@@ -1,12 +1,12 @@
1
1
  import type { AbstractLevel } from 'abstract-level';
2
2
  import type { ProgressToken } from '@enbox/dwn-sdk-js';
3
- import type { DirectionCheckpoint, LinkStatus, ReplicationLinkState, SyncScope } from './types/sync.js';
3
+ import type { DirectionCheckpoint, LinkStatus, ReplicationLinkState, SyncAuthorization, SyncScope } from './types/sync.js';
4
4
  /**
5
5
  * Durable replication ledger — persists {@link ReplicationLinkState} for each
6
6
  * sync link in a LevelDB sublevel. Provides CRUD operations and replication
7
7
  * checkpoint helpers.
8
8
  *
9
- * Key format: `{tenantDid}^{remoteEndpoint}^{scopeId}`
9
+ * Key format: `{tenantDid}^{remoteEndpoint}^{projectionId}^{authorizationEpoch}`
10
10
  *
11
11
  * Each link tracks independent pull and push {@link DirectionCheckpoint}s.
12
12
  * The ledger does not own subscriptions or timers — it is a passive state
@@ -26,26 +26,18 @@ export declare class ReplicationLedger {
26
26
  tenantDid: string;
27
27
  remoteEndpoint: string;
28
28
  scope: SyncScope;
29
+ authorizationEpoch: string;
30
+ authorization: SyncAuthorization;
29
31
  delegateDid?: string;
30
- protocol?: string;
31
32
  }): Promise<ReplicationLinkState>;
32
33
  /** Persist the current state of a link. */
33
34
  saveLink(link: ReplicationLinkState): Promise<void>;
34
35
  /** Delete a link. */
35
- deleteLink(tenantDid: string, remoteEndpoint: string, scopeId: string): Promise<void>;
36
+ deleteLink(tenantDid: string, remoteEndpoint: string, projectionId: string, authorizationEpoch: string): Promise<void>;
36
37
  /** List all links for a tenant. */
37
38
  getLinksForTenant(tenantDid: string): Promise<ReplicationLinkState[]>;
38
39
  /** List all links. */
39
40
  getAllLinks(): Promise<ReplicationLinkState[]>;
40
- /**
41
- * Update the `delegateDid` on all persisted links for a tenant and persist.
42
- * This ensures that repair and reconcile paths — which read `delegateDid`
43
- * from the durable {@link ReplicationLinkState} — use the current delegate
44
- * after a hot-swap via `updateIdentityOptions()`.
45
- *
46
- * @returns the links that were updated.
47
- */
48
- updateDelegateDid(tenantDid: string, delegateDid: string | undefined): Promise<ReplicationLinkState[]>;
49
41
  /** Transition a link to a new status and persist. */
50
42
  setStatus(link: ReplicationLinkState, status: LinkStatus): Promise<void>;
51
43
  /**