@optimystic/db-p2p 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/src/cluster/block-transfer-service.d.ts +10 -0
  2. package/dist/src/cluster/block-transfer-service.d.ts.map +1 -1
  3. package/dist/src/cluster/block-transfer-service.js +2 -1
  4. package/dist/src/cluster/block-transfer-service.js.map +1 -1
  5. package/dist/src/cluster/cluster-policy.d.ts +112 -0
  6. package/dist/src/cluster/cluster-policy.d.ts.map +1 -0
  7. package/dist/src/cluster/cluster-policy.js +88 -0
  8. package/dist/src/cluster/cluster-policy.js.map +1 -0
  9. package/dist/src/cluster/cluster-repo.d.ts +35 -11
  10. package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
  11. package/dist/src/cluster/cluster-repo.js +95 -19
  12. package/dist/src/cluster/cluster-repo.js.map +1 -1
  13. package/dist/src/cluster/quorum-restore.d.ts +25 -3
  14. package/dist/src/cluster/quorum-restore.d.ts.map +1 -1
  15. package/dist/src/cluster/quorum-restore.js +27 -3
  16. package/dist/src/cluster/quorum-restore.js.map +1 -1
  17. package/dist/src/cluster/reconcile-block.d.ts +10 -2
  18. package/dist/src/cluster/reconcile-block.d.ts.map +1 -1
  19. package/dist/src/cluster/reconcile-block.js +38 -18
  20. package/dist/src/cluster/reconcile-block.js.map +1 -1
  21. package/dist/src/cluster/spread-on-churn.d.ts.map +1 -1
  22. package/dist/src/cluster/spread-on-churn.js +8 -0
  23. package/dist/src/cluster/spread-on-churn.js.map +1 -1
  24. package/dist/src/inbound-authorization.d.ts +6 -0
  25. package/dist/src/inbound-authorization.d.ts.map +1 -1
  26. package/dist/src/inbound-authorization.js +6 -0
  27. package/dist/src/inbound-authorization.js.map +1 -1
  28. package/dist/src/libp2p-key-network.d.ts +66 -4
  29. package/dist/src/libp2p-key-network.d.ts.map +1 -1
  30. package/dist/src/libp2p-key-network.js +130 -17
  31. package/dist/src/libp2p-key-network.js.map +1 -1
  32. package/dist/src/libp2p-node-base.d.ts +22 -23
  33. package/dist/src/libp2p-node-base.d.ts.map +1 -1
  34. package/dist/src/libp2p-node-base.js +45 -34
  35. package/dist/src/libp2p-node-base.js.map +1 -1
  36. package/dist/src/repo/cluster-coordinator.d.ts +21 -3
  37. package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
  38. package/dist/src/repo/cluster-coordinator.js +27 -5
  39. package/dist/src/repo/cluster-coordinator.js.map +1 -1
  40. package/dist/src/repo/coordinator-repo.d.ts +88 -28
  41. package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
  42. package/dist/src/repo/coordinator-repo.js +287 -81
  43. package/dist/src/repo/coordinator-repo.js.map +1 -1
  44. package/dist/src/storage/storage-repo.d.ts +9 -0
  45. package/dist/src/storage/storage-repo.d.ts.map +1 -1
  46. package/dist/src/storage/storage-repo.js +77 -7
  47. package/dist/src/storage/storage-repo.js.map +1 -1
  48. package/dist/src/testing/mesh-harness.d.ts +17 -0
  49. package/dist/src/testing/mesh-harness.d.ts.map +1 -1
  50. package/dist/src/testing/mesh-harness.js +27 -4
  51. package/dist/src/testing/mesh-harness.js.map +1 -1
  52. package/package.json +2 -2
  53. package/readme.md +20 -0
  54. package/src/cluster/block-transfer-service.ts +9 -1
  55. package/src/cluster/cluster-policy.ts +152 -0
  56. package/src/cluster/cluster-repo.ts +100 -22
  57. package/src/cluster/quorum-restore.ts +28 -3
  58. package/src/cluster/reconcile-block.ts +52 -19
  59. package/src/cluster/spread-on-churn.ts +8 -0
  60. package/src/inbound-authorization.ts +6 -0
  61. package/src/libp2p-key-network.ts +958 -807
  62. package/src/libp2p-node-base.ts +65 -57
  63. package/src/repo/cluster-coordinator.ts +30 -6
  64. package/src/repo/coordinator-repo.ts +329 -91
  65. package/src/storage/storage-repo.ts +81 -10
  66. package/src/testing/mesh-harness.ts +34 -4
@@ -1,5 +1,4 @@
1
1
  import type { PendRequest, ActionBlocks, IRepo, MessageOptions, CommitResult, GetBlockResults, PendResult, BlockGets, CommitRequest, IKeyNetwork, ICluster, ClusterConsensusConfig, BlockId, ActionRev, ActionContext } from "@optimystic/db-core";
2
- import type { ClusterClient } from "../cluster/client.js";
3
2
  import type { PeerId } from "@libp2p/interface";
4
3
  import type { FretService } from "p2p-fret";
5
4
  import type { IPeerReputation } from "../reputation/types.js";
@@ -24,8 +23,18 @@ interface LocalClusterWithExecutionTracking extends ICluster {
24
23
  wasTransactionExecuted?(messageHash: string): boolean;
25
24
  }
26
25
  /**
27
- * Callback to query a cluster peer for their latest revision of a block.
28
- * Returns the peer's latest ActionRev if they have the block, undefined otherwise.
26
+ * Callback to query a cluster peer for their latest revision of a block. Three-way contract:
27
+ * - resolves an `ActionRev` — the peer answered and holds the block at that revision;
28
+ * - resolves `undefined` — the peer answered and holds NOTHING (an absent claim);
29
+ * - REJECTS — the peer could not be asked at all (dial failure, protocol error).
30
+ *
31
+ * The distinction between the last two is load-bearing: `queryClusterForLatest` counts a
32
+ * rejection as a SILENT peer, which stops `CoordinatorRepo.get` from reporting a locally-missing
33
+ * block as an authoritative absent, while a resolved `undefined` is a real answer that keeps the
34
+ * absent authoritative. Implementations must therefore let transport errors propagate rather than
35
+ * swallowing them into `undefined` (see the implementations in `libp2p-node-base` and the mesh
36
+ * harness's `silentPeers` failure knob). Slowness needs no handling here — the caller deadlines
37
+ * each query and treats expiry as silence.
29
38
  */
30
39
  export type ClusterLatestCallback = (peerId: PeerId, blockId: BlockId, context?: ActionContext) => Promise<ActionRev | undefined>;
31
40
  interface CoordinatorRepoComponents {
@@ -45,13 +54,22 @@ interface CoordinatorRepoComponents {
45
54
  */
46
55
  acquireBlockFromCohort?: AcquireBlockCallback;
47
56
  }
48
- export declare function coordinatorRepo(keyNetwork: IKeyNetwork, createClusterClient: (peerId: PeerId) => ClusterClient, cfg?: Partial<ClusterConsensusConfig> & {
57
+ /**
58
+ * Consensus config for the coordinator side, plus the repair yardstick the read-repair path measures
59
+ * a (possibly shrunken) cohort view against. `repairCorroborationClusterSize` is deliberately its own
60
+ * field rather than an overload of {@link ClusterConsensusConfig.assumedClusterSize}: this same object
61
+ * also builds the `ClusterCoordinator`, and a field whose value silently differed from the cluster
62
+ * member's copy of it would be a trap. See `cluster/cluster-policy.ts` for why the two differ.
63
+ */
64
+ export type CoordinatorRepoConfig = Partial<ClusterConsensusConfig> & {
49
65
  clusterSize?: number;
50
- }, fretService?: FretService, reputation?: IPeerReputation, stateStore?: ITransactionStateStore): (components: CoordinatorRepoComponents) => CoordinatorRepo;
66
+ repairCorroborationClusterSize?: number;
67
+ };
68
+ export declare function coordinatorRepo(keyNetwork: IKeyNetwork, createClusterClient: (peerId: PeerId) => ICluster, cfg?: CoordinatorRepoConfig, fretService?: FretService, reputation?: IPeerReputation, stateStore?: ITransactionStateStore): (components: CoordinatorRepoComponents) => CoordinatorRepo;
51
69
  /** Cluster coordination repo - uses local store, as well as distributes changes to other nodes using cluster consensus. */
52
70
  export declare class CoordinatorRepo implements IRepo {
53
71
  readonly keyNetwork: IKeyNetwork;
54
- readonly createClusterClient: (peerId: PeerId) => ClusterClient;
72
+ readonly createClusterClient: (peerId: PeerId) => ICluster;
55
73
  private readonly storageRepo;
56
74
  private readonly clusterLatestCallback?;
57
75
  private readonly acquireBlockFromCohort?;
@@ -66,8 +84,13 @@ export declare class CoordinatorRepo implements IRepo {
66
84
  private readonly readRepairSampleRate;
67
85
  /** Simple-majority threshold from the consensus policy; drives the read-repair corroboration quorum. */
68
86
  private readonly simpleMajorityThreshold;
69
- /** Configured full cluster size; the operator's declaration of how many corroborators should exist. */
70
- private readonly clusterSize;
87
+ /**
88
+ * Yardstick the read-repair corroboration floor is measured against; the floor for
89
+ * {@link corroboratorCapacity}. Resolved by `resolveClusterPolicy` for a real node; falls back to
90
+ * `assumedClusterSize` and then `clusterSize` for direct constructors (see the constructor), so a
91
+ * caller that has adopted neither field keeps today's behavior exactly.
92
+ */
93
+ private readonly repairCorroborationClusterSize;
71
94
  /** Resolved super-majority threshold the coordinator commits on (mirrors the value handed to ClusterCoordinator). */
72
95
  private readonly superMajorityThreshold;
73
96
  private readonly reputation?;
@@ -75,9 +98,7 @@ export declare class CoordinatorRepo implements IRepo {
75
98
  now: () => number;
76
99
  /** Test seam: overridable RNG (0..1) for sample-rate gating. */
77
100
  rand: () => number;
78
- constructor(keyNetwork: IKeyNetwork, createClusterClient: (peerId: PeerId) => ClusterClient, storageRepo: IRepo, cfg?: Partial<ClusterConsensusConfig> & {
79
- clusterSize?: number;
80
- }, localCluster?: LocalClusterWithExecutionTracking, localPeerId?: PeerId, fretService?: FretService, clusterLatestCallback?: ClusterLatestCallback | undefined, reputation?: IPeerReputation, stateStore?: ITransactionStateStore, acquireBlockFromCohort?: AcquireBlockCallback | undefined);
101
+ constructor(keyNetwork: IKeyNetwork, createClusterClient: (peerId: PeerId) => ICluster, storageRepo: IRepo, cfg?: CoordinatorRepoConfig, localCluster?: LocalClusterWithExecutionTracking, localPeerId?: PeerId, fretService?: FretService, clusterLatestCallback?: ClusterLatestCallback | undefined, reputation?: IPeerReputation, stateStore?: ITransactionStateStore, acquireBlockFromCohort?: AcquireBlockCallback | undefined);
81
102
  /**
82
103
  * The resolved super-majority threshold this coordinator commits on. Exposed so the composition root
83
104
  * can fail-fast if the coordinator and the cluster member would run different thresholds (see the
@@ -99,6 +120,14 @@ export declare class CoordinatorRepo implements IRepo {
99
120
  */
100
121
  private verifyResponsibility;
101
122
  get(blockGets: BlockGets, options?: MessageOptions): Promise<GetBlockResults>;
123
+ /**
124
+ * Downgrade an absence the coordinator could not confirm to `unavailable: 'peers-unreachable'` —
125
+ * the flag `NetworkTransactor.get` retries against another peer instead of taking as final.
126
+ *
127
+ * No-op once the entry carries a real answer (the consult restored the block) or a sharper flag
128
+ * (storage's `'unmaterializable'`), so callers only need to establish that the answer is a guess.
129
+ */
130
+ private flagUnconfirmedAbsence;
102
131
  /** Decide whether the read-repair policy wants us to consult the cluster for a present-but-possibly-stale block. */
103
132
  private shouldReadRepair;
104
133
  /** Milliseconds since we last marked this block fresh, or undefined if never. */
@@ -111,10 +140,23 @@ export declare class CoordinatorRepo implements IRepo {
111
140
  * a full pend/commit cycle through the cluster coordinator.
112
141
  */
113
142
  setLastSeenForTest(blockId: BlockId, ts: number): void;
143
+ /**
144
+ * One repair pass for a block: ask the cohort what it holds, and converge onto that if it is
145
+ * ahead of `localRev` — the revision the caller's read already loaded, and the baseline every
146
+ * decision below is measured against.
147
+ *
148
+ * Returns the one thing `get` needs beyond the storage side effects: whether the pass was
149
+ * INCONCLUSIVE — it neither confirmed the cohort holds nothing nor left this node holding the
150
+ * block. Two ways that happens: a cohort peer other than this node stayed SILENT (rejected
151
+ * callback or per-peer deadline), or a revision WAS corroborated and the convergence onto it
152
+ * failed. In both, `get` has learned that its local absence may be wrong, so it must not report
153
+ * a still-missing block as an authoritative absent. Paths that consult nobody (no cohort,
154
+ * solo-self) are conclusive: there, the local answer genuinely is the whole truth.
155
+ */
114
156
  private fetchBlockFromCluster;
115
157
  /**
116
158
  * Bring this node up to the cohort-corroborated `corroborated`, returning the revision it holds
117
- * afterwards when that is an advance over `local`, else `undefined`.
159
+ * afterwards when that is an advance over `baselineRev`, else `undefined`.
118
160
  *
119
161
  * Two mechanisms, cheapest first:
120
162
  * 1. **Promote a local pending** — free, no network, and the only mechanism that existed before
@@ -140,26 +182,18 @@ export declare class CoordinatorRepo implements IRepo {
140
182
  * the repair. Returns the local revision afterwards.
141
183
  *
142
184
  * A pending-only block (metadata seeded by `savePendingTransaction`, no committed revision) asked
143
- * for a forward revision throws out of `BlockStorage.ensureRevision` when no restore can supply it.
144
- * On THIS path that is an absence, not a read failure — acquisition is precisely the mechanism that
145
- * can supply it so the throw is logged and swallowed rather than short-circuiting the caller.
185
+ * for a forward revision no promotion can reach used to throw out of `BlockStorage.ensureRevision`;
186
+ * `StorageRepo.get` now reports it as an entry flagged `unavailable` instead (ticket
187
+ * repo-reports-unavailable-vs-absent). On THIS path either shape is an absence, not a read failure
188
+ * acquisition is precisely the mechanism that can supply the revision — so both are logged as
189
+ * `promote-unavailable` and stepped over rather than short-circuiting the caller.
146
190
  */
147
191
  private promoteCorroborated;
192
+ /** This node's own answer for a block, optionally driving a promotion context through the read.
193
+ * Callers that care whether the answer is authoritative inspect `entry.unavailable`. */
194
+ private readLocalEntry;
148
195
  /** This node's own `latest.rev` for a block, optionally driving a promotion context through the read. */
149
196
  private readLocalRev;
150
- /**
151
- * How many peers other than this node could corroborate a claim about a block, given a
152
- * cohort view of `peerIds`. Deliberately the MAX of what we observe and what the
153
- * configured cluster size implies: the corroboration floor may only be relaxed for a
154
- * cohort that is genuinely small, never for one that merely *looks* small. `findCluster`
155
- * results are unauthenticated, so a partition — or an attacker with routing influence —
156
- * can shrink this node's view to itself plus one peer; measuring against the configured
157
- * size keeps that shrunken view from talking the requirement down to a single voter.
158
- * The escape hatch for a real two-node deployment is therefore to configure
159
- * `clusterSize: 2`, an explicit operator declaration, mirroring how
160
- * `allowUnvalidatedSmallCluster` gates the membership admission floor.
161
- */
162
- private corroboratorCapacity;
163
197
  /**
164
198
  * Query cluster peers for their latest revision and return the highest revision
165
199
  * corroborated by a quorum of distinct peers, alongside this node's own latest.
@@ -194,8 +228,34 @@ export declare class CoordinatorRepo implements IRepo {
194
228
  */
195
229
  private penalizeContradictingRevClaims;
196
230
  pend(request: PendRequest, options?: MessageOptions): Promise<PendResult>;
231
+ /**
232
+ * Decide whether a cluster validator rejection was an optimistic-concurrency loss — the block
233
+ * already advanced past the requested revision — rather than a genuine validation fault.
234
+ * A confirmed loss returns a {@link StaleFailure} carrying `conflict: true` so the caller
235
+ * receives a non-success *response* that says plainly it is a lost race: network-transactor's
236
+ * pend then takes its stale branch and both writers (`Collection.sync`, and the coordinator's
237
+ * multi-collection pendPhase via `isConflictFailure`) retry, instead of a thrown error escaping
238
+ * mid-batch (which splits multi-tree commits — see PartialCommitError).
239
+ *
240
+ * The failure carries no `missing` list: confirmation is a local re-read that reveals the
241
+ * revision is taken but not which actions took it, and no consumer rebases from `missing`
242
+ * anyway (it is only counted or logged). `conflict` conveys retryability directly instead.
243
+ *
244
+ * Confirmation is purely local: re-read the affected blocks from our own storage and require
245
+ * `latest.rev >= request.rev`. The signed reject-reason text is never consulted — it is
246
+ * free-form wire-visible prose and must not become control flow. Anything unconfirmed
247
+ * (including read errors during confirmation) stays a throw, preserving fail-fast for
248
+ * genuine validation faults.
249
+ */
250
+ private classifyStaleRejection;
197
251
  cancel(actionRef: ActionBlocks, options?: MessageOptions): Promise<void>;
198
252
  commit(request: CommitRequest, options?: MessageOptions): Promise<CommitResult>;
253
+ /**
254
+ * Report success for a commit the cluster carried but this peer could not apply locally. The
255
+ * blocks are marked seen so the read path treats them as freshness-checked; convergence comes
256
+ * from replication (cohort reconcile, or read-driven acquisition), not from replay here.
257
+ */
258
+ private tolerateLocalCommitDivergence;
199
259
  }
200
260
  export {};
201
261
  //# sourceMappingURL=coordinator-repo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator-repo.d.ts","sourceRoot":"","sources":["../../../src/repo/coordinator-repo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAe,WAAW,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAiB,MAAM,qBAAqB,CAAC;AAG/Q,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGtF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAIzE;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAmC1D;;;GAGG;AACH,UAAU,iCAAkC,SAAQ,QAAQ;IAC3D,sBAAsB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;CACtD;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AAElI,UAAU,yBAAyB;IAClC,WAAW,EAAE,KAAK,CAAC;IACnB,YAAY,CAAC,EAAE,iCAAiC,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,oBAAoB,CAAC;CAC9C;AAED,wBAAgB,eAAe,CAC9B,UAAU,EAAE,WAAW,EACvB,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,EACtD,GAAG,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAChE,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,eAAe,EAC5B,UAAU,CAAC,EAAE,sBAAsB,GACjC,CAAC,UAAU,EAAE,yBAAyB,KAAK,eAAe,CAc5D;AAED,2HAA2H;AAC3H,qBAAa,eAAgB,YAAW,KAAK;IAuB3C,QAAQ,CAAC,UAAU,EAAE,WAAW;IAChC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAK5B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAGvC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAhCzC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqE;IACzG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoC;IACrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,wGAAwG;IACxG,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,uGAAuG;IACvG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,qHAAqH;IACrH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAkB;IAC9C,wEAAwE;IACxE,GAAG,EAAE,MAAM,MAAM,CAAoB;IACrC,gEAAgE;IAChE,IAAI,EAAE,MAAM,MAAM,CAAuB;gBAG/B,UAAU,EAAE,WAAW,EACvB,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,EAC9C,WAAW,EAAE,KAAK,EACnC,GAAG,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAChE,YAAY,CAAC,EAAE,iCAAiC,EAChD,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,WAAW,EACR,qBAAqB,CAAC,EAAE,qBAAqB,YAAA,EAC9D,UAAU,CAAC,EAAE,eAAe,EAC5B,UAAU,CAAC,EAAE,sBAAsB,EAClB,sBAAsB,CAAC,EAAE,oBAAoB,YAAA;IAuC/D;;;;OAIG;IACH,IAAI,+BAA+B,IAAI,MAAM,CAE5C;IAED,8EAA8E;IACxE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;;;;;OAMG;YACW,qBAAqB;IAwBnC;;OAEG;YACW,oBAAoB;IAa5B,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IA+DnF,oHAAoH;IACpH,OAAO,CAAC,gBAAgB;IAcxB,iFAAiF;IACjF,OAAO,CAAC,KAAK;IAKb,0FAA0F;IAC1F,OAAO,CAAC,cAAc;IAOtB;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;YAIxC,qBAAqB;IA4DnC;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,mBAAmB;IAiCjC;;;;;;;;OAQG;YACW,mBAAmB;IASjC,yGAAyG;YAC3F,YAAY;IAK1B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;;;;;;;;;;;;;;;;;;OAmBG;YACW,qBAAqB;IAkDnC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,8BAA8B;IAehC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IA6CzE,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BxE,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;CA+CrF"}
1
+ {"version":3,"file":"coordinator-repo.d.ts","sourceRoot":"","sources":["../../../src/repo/coordinator-repo.ts"],"names":[],"mappings":"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"}