@optimystic/db-p2p 0.28.0 → 1.0.0-beta.1

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 (82) hide show
  1. package/dist/src/cluster/block-transfer-service.d.ts +0 -10
  2. package/dist/src/cluster/block-transfer-service.d.ts.map +1 -1
  3. package/dist/src/cluster/block-transfer-service.js +4 -2
  4. package/dist/src/cluster/block-transfer-service.js.map +1 -1
  5. package/dist/src/cluster/cluster-policy.d.ts +101 -18
  6. package/dist/src/cluster/cluster-policy.d.ts.map +1 -1
  7. package/dist/src/cluster/cluster-policy.js +153 -30
  8. package/dist/src/cluster/cluster-policy.js.map +1 -1
  9. package/dist/src/cluster/cluster-repo.d.ts +75 -16
  10. package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
  11. package/dist/src/cluster/cluster-repo.js +195 -24
  12. package/dist/src/cluster/cluster-repo.js.map +1 -1
  13. package/dist/src/cluster/quorum-restore.d.ts +4 -2
  14. package/dist/src/cluster/quorum-restore.d.ts.map +1 -1
  15. package/dist/src/cluster/quorum-restore.js +4 -2
  16. package/dist/src/cluster/quorum-restore.js.map +1 -1
  17. package/dist/src/cluster/service.d.ts +12 -9
  18. package/dist/src/cluster/service.d.ts.map +1 -1
  19. package/dist/src/cluster/service.js +6 -6
  20. package/dist/src/cluster/service.js.map +1 -1
  21. package/dist/src/dispute/service.d.ts +1 -4
  22. package/dist/src/dispute/service.d.ts.map +1 -1
  23. package/dist/src/dispute/service.js +2 -1
  24. package/dist/src/dispute/service.js.map +1 -1
  25. package/dist/src/libp2p-key-network.d.ts +8 -2
  26. package/dist/src/libp2p-key-network.d.ts.map +1 -1
  27. package/dist/src/libp2p-key-network.js +8 -2
  28. package/dist/src/libp2p-key-network.js.map +1 -1
  29. package/dist/src/libp2p-node-base.d.ts.map +1 -1
  30. package/dist/src/libp2p-node-base.js +22 -19
  31. package/dist/src/libp2p-node-base.js.map +1 -1
  32. package/dist/src/logger.d.ts +28 -1
  33. package/dist/src/logger.d.ts.map +1 -1
  34. package/dist/src/logger.js +143 -1
  35. package/dist/src/logger.js.map +1 -1
  36. package/dist/src/network/network-manager-service.d.ts +1 -4
  37. package/dist/src/network/network-manager-service.d.ts.map +1 -1
  38. package/dist/src/network/network-manager-service.js +2 -1
  39. package/dist/src/network/network-manager-service.js.map +1 -1
  40. package/dist/src/repo/cluster-coordinator.d.ts +16 -1
  41. package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
  42. package/dist/src/repo/cluster-coordinator.js +66 -7
  43. package/dist/src/repo/cluster-coordinator.js.map +1 -1
  44. package/dist/src/repo/coordinator-repo.d.ts +188 -14
  45. package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
  46. package/dist/src/repo/coordinator-repo.js +714 -110
  47. package/dist/src/repo/coordinator-repo.js.map +1 -1
  48. package/dist/src/repo/service.d.ts +9 -6
  49. package/dist/src/repo/service.d.ts.map +1 -1
  50. package/dist/src/repo/service.js +4 -5
  51. package/dist/src/repo/service.js.map +1 -1
  52. package/dist/src/storage/storage-repo.d.ts +6 -0
  53. package/dist/src/storage/storage-repo.d.ts.map +1 -1
  54. package/dist/src/storage/storage-repo.js +62 -2
  55. package/dist/src/storage/storage-repo.js.map +1 -1
  56. package/dist/src/sync/service.d.ts +1 -2
  57. package/dist/src/sync/service.d.ts.map +1 -1
  58. package/dist/src/sync/service.js +2 -1
  59. package/dist/src/sync/service.js.map +1 -1
  60. package/dist/src/testing/mesh-harness.d.ts +7 -1
  61. package/dist/src/testing/mesh-harness.d.ts.map +1 -1
  62. package/dist/src/testing/mesh-harness.js +2 -1
  63. package/dist/src/testing/mesh-harness.js.map +1 -1
  64. package/package.json +2 -2
  65. package/readme.md +19 -0
  66. package/src/cluster/block-transfer-service.ts +4 -8
  67. package/src/cluster/cluster-policy.ts +196 -36
  68. package/src/cluster/cluster-repo.ts +2662 -2488
  69. package/src/cluster/quorum-restore.ts +4 -2
  70. package/src/cluster/service.ts +14 -9
  71. package/src/dispute/service.ts +3 -3
  72. package/src/libp2p-key-network.ts +8 -2
  73. package/src/libp2p-node-base.ts +22 -19
  74. package/src/logger.ts +196 -2
  75. package/src/network/network-manager-service.ts +414 -414
  76. package/src/protocol-client.ts +196 -196
  77. package/src/repo/cluster-coordinator.ts +1113 -1039
  78. package/src/repo/coordinator-repo.ts +2675 -1937
  79. package/src/repo/service.ts +12 -9
  80. package/src/storage/storage-repo.ts +65 -2
  81. package/src/sync/service.ts +3 -5
  82. package/src/testing/mesh-harness.ts +8 -1
@@ -1,4 +1,4 @@
1
- import type { PendRequest, ActionBlocks, IRepo, MessageOptions, CommitResult, GetBlockResults, PendResult, BlockGets, CommitRequest, RepoMessage, IKeyNetwork, ICluster, ClusterConsensusConfig, BlockId, ActionContext, ClusterRecord } from "@optimystic/db-core";
1
+ import type { PendRequest, ActionBlocks, IRepo, MessageOptions, CommitResult, GetBlockResults, PendResult, StaleFailure, BlockGets, CommitRequest, RepoMessage, IKeyNetwork, ICluster, ClusterConsensusConfig, BlockId, ActionContext, ClusterRecord } from "@optimystic/db-core";
2
2
  import type { PeerId } from "@libp2p/interface";
3
3
  import type { FretService } from "p2p-fret";
4
4
  import type { IPeerReputation } from "../reputation/types.js";
@@ -115,6 +115,10 @@ export interface ICoordinatorClusterSeam {
115
115
  localExecuted: boolean;
116
116
  localPendResult?: PendResult;
117
117
  localCommitResult?: CommitResult;
118
+ /** Other cohort members' conflict-shaped pend refusals; see `ClusterCoordinator.executeClusterTransaction`. */
119
+ cohortPendRefusals?: {
120
+ [peerId: string]: StaleFailure;
121
+ };
118
122
  }>;
119
123
  recoverTransactions(): Promise<void>;
120
124
  }
@@ -140,6 +144,29 @@ export declare class CoordinatorRepo implements IRepo {
140
144
  * doubt until the next consult re-derives it (one read-repair window later, at worst) and lets
141
145
  * {@link reportRepairDeadlock} say its piece a second time. */
142
146
  private readonly unsettledAheadClaims;
147
+ /**
148
+ * Per block, what its pending-conflict refusals have added up to — see {@link StuckReservationWatch}
149
+ * and {@link noteStuckReservation}. Deliberately its OWN map rather than a third fact hung off
150
+ * {@link unsettledAheadClaims}: that entry belongs to the read-repair path and is cleared by a block
151
+ * converging on a revision, whereas this one belongs to the write path and is cleared by the block
152
+ * accepting a write. Sharing the entry would mean teaching both of those lifetimes about a fact
153
+ * neither owns (backlog `debt-freshness-state-scattered-across-coordinator-repo` is the standing
154
+ * argument for collapsing all of this per-block state behind one collaborator; adding a fourth
155
+ * carve-out to the freshness entry would have made that harder, not easier).
156
+ *
157
+ * NOTE: LRU-bounded like its siblings. An eviction under >1000 conflicted blocks loses an episode's
158
+ * say-once flag, so the line can repeat once for that block — the same bounded duplication
159
+ * {@link reportRepairDeadlock} accepts, and far cheaper than the unbounded silence it replaces.
160
+ *
161
+ * NOTE: per COORDINATOR, and a block's coordinator is whichever peer the writer's key lookup
162
+ * resolved — normally stable, but cohort churn or a routing change moves it. When it moves, the
163
+ * count restarts on the new coordinator (the condition is named later) and the old one may name the
164
+ * same episode again (the condition is named twice). Fine while a wedged block is diagnosed by
165
+ * searching for its id; if a churning deployment ever makes duplicate lines the noisy failure this
166
+ * one exists to replace, the say-once state has to move to where the record lives (the member's own
167
+ * storage) rather than to where the refusal was classified.
168
+ */
169
+ private readonly stuckReservations;
143
170
  private readonly readRepairMode;
144
171
  private readonly readRepairWindowMs;
145
172
  private readonly readRepairSampleRate;
@@ -203,10 +230,41 @@ export declare class CoordinatorRepo implements IRepo {
203
230
  */
204
231
  private flagUnconfirmedAbsence;
205
232
  /**
206
- * Remember (or forget) the cohort claim a freshness consult could not settle for a block.
207
- * Only a consult that actually RAN may call this: it is the authority, so `undefined` clears
208
- * a claim an earlier pass recorded. Entries are also dropped once this node reaches the
233
+ * Remember (or forget) the cohort claim a freshness consult could not settle for a block, per
234
+ * that consult's {@link CurrencyVerdict}. Entries are also dropped once this node reaches the
209
235
  * claimed revision (see {@link flagUnconfirmedCurrency}), which is what bounds the map.
236
+ *
237
+ * **The weakening rule, in one sentence.** A recorded claim may be WEAKENED — retired, or
238
+ * revised down to a lower revision — when at least one non-self cohort member answered this
239
+ * consult AND no peer that MADE the claim was silent in it. Everything else about the rule
240
+ * follows from that, and each of the three cases a claimant can be in has its own reason:
241
+ *
242
+ * - A claimant that ANSWERED, on a consult that found nothing ahead of it, has retired its
243
+ * own word. Its answer is evidence about its own claim — the only kind that counts.
244
+ * - A claimant that was SILENT blocks weakening. Nobody else can speak for it; a peer that
245
+ * never knew the claimed revision answering "I hold nothing" is not a refutation.
246
+ * - A claimant that is NEITHER answered nor silent has left this node's cohort view:
247
+ * `findCluster` no longer holds it responsible for the block, so its old word no longer
248
+ * binds the current cohort. This is what BOUNDS the doubt — see the membership discussion
249
+ * at `nothingAheadVerdict` in {@link fetchBlockFromCluster}.
250
+ *
251
+ * Note the arithmetic that makes it a one-liner: the non-self cohort IS `answered` ∪ `silent`,
252
+ * so "answered, or gone from the cohort" is exactly "not silent". No membership set has to be
253
+ * carried or diffed.
254
+ *
255
+ * RAISING a claim needs no licence — a higher claimed revision subsumes the one it replaces,
256
+ * so `flagUnconfirmedCurrency` stamps everything it used to and more. Only the weakening
257
+ * direction can hide a stale serve, which is why the gate below is one test applied to both
258
+ * shapes rather than a rule attached to retirement alone.
259
+ *
260
+ * Forgetting requires EVIDENCE. A consult that reached nobody (`no-evidence`) refutes nothing
261
+ * and leaves the memo exactly as it was. That used to be a rule the caller had to obey and
262
+ * could not: the old `claimedAheadRev: number | undefined` said the same thing for "peers
263
+ * refuted the claim" and for "nobody was asked", so every non-consulting exit silently erased
264
+ * the doubt and served stale content as confirmed-current. The verdict type states the
265
+ * difference instead, so a new exit cannot mean the wrong one by omission — and `nothing-ahead`
266
+ * now carries the evidence rather than a pre-baked refutation for the same reason, so a caller
267
+ * cannot assert a refutation it did not observe.
210
268
  */
211
269
  private recordAheadClaim;
212
270
  /**
@@ -244,6 +302,30 @@ export declare class CoordinatorRepo implements IRepo {
244
302
  private ageMs;
245
303
  /** Mark blocks as freshly observed from cluster authority (post-commit or post-fetch). */
246
304
  private markBlocksSeen;
305
+ /**
306
+ * True when a commit's approve votes form a strict majority of the FULL cohort — the only case
307
+ * where "this node committed" is evidence that no rival commit moved past it. Two strict
308
+ * majorities of one cohort must share a voter, so a rival that also reached a full-cohort
309
+ * majority would have surfaced here as a conflict vote instead of approving both. A commit below
310
+ * that bar — the solo short-circuit under a larger declared cohort, or a record that enrolled
311
+ * fewer than a full-cohort majority — rules nothing out; it still succeeds, it just must not arm
312
+ * the lazy read-repair window ({@link markBlocksSeen}), so the next read consults the cohort as
313
+ * if the commit had not happened.
314
+ *
315
+ * What it does NOT rule out, at any vote count: a rival that assembled its own quorum on a
316
+ * SHRUNKEN cohort view, which needs no full-cohort majority to complete
317
+ * ({@link clusterReachedCommitConsensus} accepts an enrolled-subset majority). Two commits that
318
+ * land at one revision on disjoint quorums are a fork, and healing one is
319
+ * `docs/partition-healing.md`'s business, not a freshness window's.
320
+ *
321
+ * Denominator: the full cohort, never the enrolled/reachable subset — `record.peers` is exactly
322
+ * the thing a downsize shrinks (contrast `clusterReachedCommitConsensus`, whose enrolled-subset
323
+ * majority answers "did consensus complete", a different question — leave it be).
324
+ * {@link repairCorroborationClusterSize} is the declared yardstick resolved for this same
325
+ * shrunken-view trap on the repair side, maxed with the observed cohort for the case where
326
+ * routing sees more peers than were declared.
327
+ */
328
+ private commitQuorumRulesOutRivals;
247
329
  /**
248
330
  * Test seam: directly set the last-seen timestamp for a block. Used by read-repair
249
331
  * specs to simulate "the local commit happened at time T" without needing to drive
@@ -263,11 +345,17 @@ export declare class CoordinatorRepo implements IRepo {
263
345
  * answer genuinely is the whole truth. When several verdicts apply at once the sharpest
264
346
  * evidence wins: `claimed` > `isolated` > `unconfirmed` > `confirmed` — a peer positively
265
347
  * saying "it exists" outranks any amount of silence.
266
- * - `claimedAheadRev` — a cohort peer claimed a revision strictly ahead of what this node
267
- * holds and the pass did NOT converge onto it: the claim failed the corroboration quorum,
268
- * or was corroborated but could not be acquired. Content `get` serves below this revision
269
- * cannot be confirmed current (see {@link GetBlockResult.unconfirmedAheadRev}); the claim
270
- * itself must never drive restoration.
348
+ * - `currency` — the verdict on whether what this node holds is CURRENT (see
349
+ * {@link CurrencyVerdict}). `unsettled-claim` means a cohort peer claimed a revision
350
+ * strictly ahead of what this node holds and the pass did NOT converge onto it: the claim
351
+ * failed the corroboration quorum, or was corroborated but could not be acquired. Content
352
+ * `get` serves below that revision cannot be confirmed current (see
353
+ * {@link GetBlockResult.unconfirmedAheadRev}); the claim itself must never drive
354
+ * restoration. `nothing-ahead` and `no-evidence` differ in exactly one way that matters:
355
+ * `nothing-ahead` carries the evidence that can retire an earlier pass's memo (and does
356
+ * retire it when the memo's claimants are among the peers that answered), `no-evidence`
357
+ * leaves it standing untouched. Required, not optional, so an exit added later has to say
358
+ * which it means.
271
359
  */
272
360
  private fetchBlockFromCluster;
273
361
  /**
@@ -339,8 +427,13 @@ export declare class CoordinatorRepo implements IRepo {
339
427
  private queryClusterForLatest;
340
428
  /**
341
429
  * Say ONCE per block, in words, when a corroboration decline is provably PERMANENT rather than a
342
- * transient shortage of answers. There are exactly TWO permanent shapes, and they send the operator
343
- * to different places, so each gets its own `reason` and its own wording:
430
+ * transient shortage of answers and RETURN the verdict, computed fresh on every pass by
431
+ * {@link classifyRepairDeadlock} (the pure half; the say-once suppression below applies only to
432
+ * the log line). The caller acts on the returned reason every pass: `fetchBlockFromCluster` arms
433
+ * the lazy read-repair window on `cohort-too-small`, because a decline the cohort provably cannot
434
+ * escape teaches nothing when repeated sooner than one window. There are exactly TWO permanent
435
+ * shapes, and they send the operator to different places, so each gets its own `reason` and its
436
+ * own wording:
344
437
  *
345
438
  * - `cohort-too-small` — this node's cohort has fewer peers than the quorum would demand even if
346
439
  * every one of them answered and agreed. The remedy is machines or an honest declared size.
@@ -394,6 +487,24 @@ export declare class CoordinatorRepo implements IRepo {
394
487
  * `repair-deadlock-is-never-named`, *Not this ticket*).
395
488
  */
396
489
  private reportRepairDeadlock;
490
+ /**
491
+ * The PURE half of {@link reportRepairDeadlock}: classify one declining pass as provably
492
+ * permanent (`cohort-too-small` / `sole-holder`) or not (`undefined`), with no logging and no
493
+ * state. Split out so the verdict can run on EVERY pass — the caller in
494
+ * `fetchBlockFromCluster` arms the lazy read-repair window off `cohort-too-small` each time,
495
+ * and the window has to re-arm after it expires — while the log line keeps its once-per-episode
496
+ * suppression. Before the split the verdict was computed for the log line and thrown away,
497
+ * which is what left an undeclared two-machine cohort re-running the provably hopeless consult
498
+ * on every read (measured: 6 peer queries across three reads inside one 10 s window, versus 0
499
+ * with the size declared).
500
+ *
501
+ * The guards are part of the VERDICT, not merely of the logging — the arming consumer depends
502
+ * on both:
503
+ * - a pass with ANY silent peer proves nothing (an incomplete picture — the silent peer could
504
+ * recover, so re-asking can learn; and permanent claims are not made off partial views);
505
+ * - a pass with ZERO claims is an agreed absence — an answer, not a deadlock.
506
+ */
507
+ private classifyRepairDeadlock;
397
508
  /**
398
509
  * Report peers whose reported latest PROVABLY contradicts a CORROBORATED selection: the same
399
510
  * revision under a different actionId. Two actions cannot both be the commit at one revision,
@@ -431,6 +542,9 @@ export declare class CoordinatorRepo implements IRepo {
431
542
  */
432
543
  private penalizeProofService;
433
544
  pend(request: PendRequest, options?: MessageOptions): Promise<PendResult>;
545
+ /** The cluster half of {@link pend}, after responsibility is verified: consensus, the local-verdict
546
+ * arms, and the two optimistic-concurrency classifiers a rejection is run through. */
547
+ private pendThroughCluster;
434
548
  /**
435
549
  * Decide whether a cluster validator rejection was an optimistic-concurrency loss — the block
436
550
  * already advanced past the requested revision — rather than a genuine validation fault.
@@ -468,6 +582,62 @@ export declare class CoordinatorRepo implements IRepo {
468
582
  * (which carries the sharper `staleAt`) wins when both hold.
469
583
  */
470
584
  private classifyPendingConflictRejection;
585
+ /**
586
+ * Count one confirmed pending-conflict refusal against the holder(s) of each block it names, and say
587
+ * ONCE — in words, at the moment it becomes provable — when a block is wedged behind a reservation
588
+ * that is not going to clear.
589
+ *
590
+ * **Why this needs saying at all.** Every individual refusal here is indistinguishable from an
591
+ * ordinary lost race, which is a normal and healthy event, so the logs of a permanently wedged block
592
+ * read exactly like the logs of a busy one. Finding the difference today means noticing that the
593
+ * SAME rival action id keeps appearing across unrelated writers for as long as the process lives —
594
+ * a pattern nothing points at, and one that cost a downstream project several tickets and weeks to
595
+ * re-derive from raw traces. The node has the fact in hand at every refusal; this makes it sayable.
596
+ *
597
+ * **The signal, and the two things that are NOT the signal.** The discriminator is repetition
598
+ * against an unchanged holder — see {@link STUCK_RESERVATION_DISTINCT_ACTIONS} for why distinct
599
+ * refused actions is the right counter and for the measured threshold. Two cheaper-looking tests
600
+ * were tried and do not work: the members' in-memory reservation table
601
+ * (`ClusterMember.activeTransactions`) clears the moment a rival's pend reaches consensus, so a
602
+ * perfectly healthy rival inside its pend-to-commit window is absent from it too and absence there
603
+ * says nothing; and "the block already passed this pending record's revision" catches a different
604
+ * orphan class entirely — in the verified instance the wedged block sat at revision 1 while the
605
+ * orphaned record was for revision 2, still nominally promotable.
606
+ *
607
+ * **Never a control path.** This classifies and logs; it never refuses, expires, or deletes
608
+ * anything. Deciding when a durable pending record may be removed is precisely the hard problem
609
+ * backlog `debt-unpromotable-pending-records-need-a-sweep` exists for — deleting a live reservation
610
+ * is worse than the leak — and a counter accurate enough for a log line is not evidence enough to
611
+ * destroy state.
612
+ *
613
+ * Returns the highest distinct-refusal count any of this refusal's blocks has now reached, for the
614
+ * classification line to carry; it saturates at the threshold once an episode has been reported,
615
+ * since the ids are dropped at that point.
616
+ *
617
+ * NOTE: fed only by {@link classifyPendingConflictRejection}, i.e. by refusals that arrive as a
618
+ * cohort-wide validator rejection. A block only PART of whose cohort holds the stranded record can
619
+ * still reach approval super-majority, and its refusal then comes back through the retained local
620
+ * apply verdict (`getExecutedPendResult`) instead, which this never sees — so a partially wedged
621
+ * block goes unnamed. That is the weaker condition (the write does land on the healthy members),
622
+ * and instrumenting the second path would count a refusal that the cohort as a whole did not make.
623
+ * If partial strands ever turn out to be the common shape in the field, the counter belongs on the
624
+ * member side (`ClusterMember.validatePendOperations`), where each member sees its own votes.
625
+ */
626
+ private noteStuckReservation;
627
+ /**
628
+ * Forget any stuck-reservation episode recorded for these blocks, optionally only when
629
+ * `holderActionId` is one of the actions that episode named.
630
+ *
631
+ * Called from the two events the message itself names as the only cures: a write the block accepted
632
+ * ({@link pend}), and a cancel for the holding action ({@link cancel}). Forgetting is the whole
633
+ * effect, and it is LRU hygiene rather than behaviour: a later wedge is named by a DIFFERENT holder,
634
+ * which `noteStuckReservation`'s holder comparison already treats as a new episode whether the old
635
+ * entry is still there or not. Both call sites therefore have no observable effect through the
636
+ * public surface (no spec can distinguish them — reproducing a repeated holder set would mean
637
+ * reusing an action id, which nothing that mints them does), and both are kept because a settled
638
+ * episode holding an LRU slot can only evict a live one.
639
+ */
640
+ private clearStuckReservations;
471
641
  cancel(actionRef: ActionBlocks, options?: MessageOptions): Promise<void>;
472
642
  commit(request: CommitRequest, options?: MessageOptions): Promise<CommitResult>;
473
643
  /**
@@ -504,9 +674,13 @@ export declare class CoordinatorRepo implements IRepo {
504
674
  */
505
675
  private confirmCommitRivalAgainstLocal;
506
676
  /**
507
- * Report success for a commit the cluster carried but this peer could not apply locally. The
508
- * blocks are marked seen so the read path treats them as freshness-checked; convergence comes
509
- * from replication (cohort reconcile, or read-driven acquisition), not from replay here.
677
+ * Report success for a commit the cluster carried but this peer could not apply locally.
678
+ * Convergence comes from replication (cohort reconcile, or read-driven acquisition), not from
679
+ * replay here. `armFreshness` says whether the commit's quorum was strong enough
680
+ * ({@link commitQuorumRulesOutRivals}) for the read path to treat the blocks as
681
+ * freshness-checked; a divergence tolerated on a downsized quorum leaves the window unarmed —
682
+ * this peer is known to be behind here, the last place a self-referential freshness stamp
683
+ * belongs.
510
684
  */
511
685
  private tolerateLocalCommitDivergence;
512
686
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator-repo.d.ts","sourceRoot":"","sources":["../../../src/repo/coordinator-repo.ts"],"names":[],"mappings":"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"}
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,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAuB,aAAa,EAAE,aAAa,EAAyC,MAAM,qBAAqB,CAAC;AAG9U,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;AAEtF,OAAO,EAA6D,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIhI,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAiZ1D;;;GAGG;AACH,UAAU,iCAAkC,SAAQ,QAAQ;IAC3D,sBAAsB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,4GAA4G;IAC5G,qBAAqB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACpE,gHAAgH;IAChH,uBAAuB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IACxE;;8DAE0D;IAC1D,mBAAmB,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACtE;AAED;;;;;GAKG;AACH,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;AAE3I,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;IAC9C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF,wBAAgB,eAAe,CAC9B,UAAU,EAAE,WAAW,EACvB,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,EACjD,GAAG,CAAC,EAAE,qBAAqB,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,eAAe,EAC5B,UAAU,CAAC,EAAE,sBAAsB,GACjC,CAAC,UAAU,EAAE,yBAAyB,KAAK,eAAe,CAe5D;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,uBAAuB;IACvC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QACpG,MAAM,EAAE,aAAa,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,UAAU,CAAC;QAC7B,iBAAiB,CAAC,EAAE,YAAY,CAAC;QACjC,+GAA+G;QAC/G,kBAAkB,CAAC,EAAE;YAAE,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAA;SAAE,CAAC;KACxD,CAAC,CAAC;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,2HAA2H;AAC3H,qBAAa,eAAgB,YAAW,KAAK;IA4D3C,QAAQ,CAAC,UAAU,EAAE,WAAW;IAChC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAG9B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAGvC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAtEjC,OAAO,CAAC,WAAW,CAA0B;IAC7C,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;;;;;oEAKgE;IAChE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6C;IAClF;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmD;IACrF,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;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAS;IACxD,qHAAqH;IACrH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAkB;IAC9C,oMAAoM;IACpM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,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,QAAQ,EACzC,WAAW,EAAE,KAAK,EACnC,GAAG,CAAC,EAAE,qBAAqB,EACV,YAAY,CAAC,EAAE,iCAAiC,YAAA,EACjE,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,EAC7C,cAAc,CAAC,EAAE,cAAc,YAAA;IAyDjD;;;;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;IAuInF;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,OAAO,CAAC,gBAAgB;IA+DxB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,OAAO,CAAC,uBAAuB;IAmB/B,oHAAoH;IACpH,OAAO,CAAC,gBAAgB;IAcxB,iFAAiF;IACjF,OAAO,CAAC,KAAK;IAKb,0FAA0F;IAC1F,OAAO,CAAC,cAAc;IAOtB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,0BAA0B;IAKlC;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAItD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;YACW,qBAAqB;IAiPnC;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,mBAAmB;IAuCjC;;;;;;;;;;;;;OAaG;YACW,mBAAmB;IAcjC;6FACyF;YAC3E,cAAc;IAK5B,yGAAyG;YAC3F,YAAY;IAI1B;;;;;;;;;;;;;;;;;;;;;;OAsBG;YACW,qBAAqB;IAyMnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4DG;IACH,OAAO,CAAC,oBAAoB;IA2C5B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,sBAAsB;IAgD9B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,OAAO,CAAC,8BAA8B;IAmBtC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAStB,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAe/E;2FACuF;YACzE,kBAAkB;IA8HhC;;;;;;;;;;;;;;;;;;OAkBG;YACW,sBAAsB;IAuDpC;;;;;;;;;;;;;;;OAeG;YACW,gCAAgC;IA2C9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACH,OAAO,CAAC,oBAAoB;IAyC5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,sBAAsB;IAOxB,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDxE,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IAuKrF;;;;;;;;;;;;;;;;;;OAkBG;YACW,4BAA4B;IAS1C;;;;;;;;;;;OAWG;YACW,8BAA8B;IAkE5C;;;;;;;;OAQG;IACH,OAAO,CAAC,6BAA6B;CAKrC"}