@githolon/runtime 0.110.0 → 0.110.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.
@@ -19623,6 +19623,15 @@
19623
19623
  }
19624
19624
  if (result.stillAhead || result.pushFailed || result.directOfferDeferred || result.reconnectRequired) {
19625
19625
  if (result.directOfferDeferred) {
19626
+ if (!result.reconnectRequired) {
19627
+ __privateGet(this, _desk).transition(result.workspace, {
19628
+ case: ReplicaFollowEventKind.Failed,
19629
+ nowUnixMillis,
19630
+ failure: "remote workspace opening; retrying",
19631
+ retryWithinMillis: 5e3
19632
+ });
19633
+ return delayUntilDue(__privateGet(this, _desk).get(result.workspace), nowUnixMillis);
19634
+ }
19626
19635
  __privateGet(this, _desk).transition(result.workspace, {
19627
19636
  case: ReplicaFollowEventKind.DependencyDeferred,
19628
19637
  nowUnixMillis,
@@ -21619,6 +21628,34 @@
21619
21628
  init_shims();
21620
21629
  var CUSTODY_OFFER_MEDIA_TYPE = "application/vnd.nomos.custody-offer-batch+protobuf";
21621
21630
  var CUSTODY_OFFER_RESULT_MEDIA_TYPE = "application/vnd.nomos.custody-offer-result+protobuf";
21631
+ function settleCustodyOfferExchange(awaiting, response) {
21632
+ if (response.status === 202 && response.contentType?.includes("application/json")) {
21633
+ try {
21634
+ const pending = JSON.parse(new TextDecoder().decode(response.body));
21635
+ if (pending?.retryable === true && typeof pending.preparing === "string") {
21636
+ return { case: "maintenance", kind: pending.preparing };
21637
+ }
21638
+ } catch {
21639
+ }
21640
+ }
21641
+ if (!response.contentType?.includes(CUSTODY_OFFER_RESULT_MEDIA_TYPE)) {
21642
+ return {
21643
+ case: "unexpected",
21644
+ status: response.status,
21645
+ ...response.contentType === void 0 ? {} : { contentType: response.contentType }
21646
+ };
21647
+ }
21648
+ const verdict = decodeCustodyOffer(response.body, awaiting.requestId);
21649
+ const receipt = custodyOfferReceipt(awaiting.requestId, verdict);
21650
+ switch (verdict.case) {
21651
+ case "admission":
21652
+ return { case: "admission", value: verdict.value, receipt, status: response.status };
21653
+ case "failure":
21654
+ return { case: "failure", value: verdict.value, receipt, status: response.status };
21655
+ case "blocked":
21656
+ return { case: "blocked", value: verdict.value, receipt, status: response.status };
21657
+ }
21658
+ }
21622
21659
  function encodeInlineCustodyOffer(args) {
21623
21660
  return toBinary(CustodyOfferBatchRequestSchema, create(CustodyOfferBatchRequestSchema, {
21624
21661
  protocolVersion: 2,
@@ -21745,6 +21782,7 @@
21745
21782
  var PLACEMENT_REF3 = "refs/nomos/placement";
21746
21783
  var LAW_PRODUCTS_MEDIA_TYPE = "application/vnd.nomos.export-law-products-response+protobuf";
21747
21784
  var WorkspaceSyncPhase = Object.freeze({
21785
+ Idle: "idle",
21748
21786
  Probe: "probe",
21749
21787
  Offer: "offer",
21750
21788
  Lease: "lease",
@@ -21766,7 +21804,7 @@
21766
21804
  const finished = clock.monotonicNanoseconds();
21767
21805
  return finished >= started ? Number(finished - started) / 1e6 : 0;
21768
21806
  };
21769
- var _kernel16, _credentials4, _clock13, _mount, _binding, _route2, _rediscover, _reroute, _placementFetch, _discoveredFrontier, _observePlacement, _recheckPlacement, _directoryAnswered, _placementFetched, _afterPlacement, _leased, _lease, _command2, _requestId4, _started, _phase2, _localHead, _offerHead, _previousHead, _fetchStarted, _offerStarted, _offerRequestId, _pushMillis, _pushBytes, _desiredHead, _returnedPackHead, _candidateDurable, _admissionSummary, _offerReceipt, _pushError, _current3, _lastReceiptEffectId2, _lastStep2, _probeOnly, _establishedBase, _receiveState, _completeHistory, _lawProductsImported, _shallowMounted, _fetchedLawProducts, _beforeConverge, _needsReconciliation, _offerAfterConverge, _rebaseFrom, _rebases, _parkedLocal, _replaceLocalHead, _repairMissingCommit, _WorkspaceSyncWork_instances, openRound_fn, offerOrReconcile_fn, establishBase_fn, noCommonBase_fn, noCommonBaseResult_fn, holdsLocalWork_fn, pullBeforeOffer_fn, leaseEffect_fn, beginOffer_fn, acceptOffer_fn, acceptLease_fn, placementFrontier_fn, placementOnly_fn, acceptDiscovery_fn, providerCustody_fn, beginMainFetch_fn, acceptFetch_fn, mountFetched_fn, lawProductsAlongside_fn, acceptLawProducts_fn, providerCustodyMounted_fn, importLawProducts_fn, converge_fn2, unrelatedLineageRefusal_fn, replaceLocal_fn, converged_fn, offerAfterRebase_fn, preservedCopy_fn, alreadyJudged_fn, rememberJudgment_fn, forgetJudgment_fn, present_fn, finishOfferOutcome_fn, transportFailure_fn, remember_fn4, finish_fn2, cloudBase_fn, offerEndpoint_fn, workspaceEndpoint_fn, authToken_fn;
21807
+ var _kernel16, _credentials4, _clock13, _mount, _binding, _route2, _rediscover, _reroute, _discoveredFrontier, _observePlacement, _recheckPlacement, _directoryAnswered, _placementFetched, _leased, _command2, _requestId4, _started, _state, _localHead, _offerHead, _previousHead, _pushMillis, _pushBytes, _desiredHead, _returnedPackHead, _candidateDurable, _admissionSummary, _offerReceipt, _pushError, _current3, _lastReceiptEffectId2, _lastStep2, _probeOnly, _establishedBase, _receiveState, _completeHistory, _lawProductsImported, _shallowMounted, _fetchedLawProducts, _beforeConverge, _needsReconciliation, _offerAfterConverge, _rebaseFrom, _rebases, _parkedLocal, _replaceLocalHead, _repairMissingCommit, _WorkspaceSyncWork_instances, openRound_fn, offerOrReconcile_fn, establishBase_fn, noCommonBase_fn, noCommonBaseResult_fn, holdsLocalWork_fn, pullBeforeOffer_fn, leaseEffect_fn, beginOffer_fn, acceptOffer_fn, acceptLease_fn, placementFrontier_fn, placementOnly_fn, acceptDiscovery_fn, providerCustody_fn, beginMainFetch_fn, acceptFetch_fn, mountFetched_fn, lawProductsAlongside_fn, acceptLawProducts_fn, providerCustodyMounted_fn, importLawProducts_fn, converge_fn2, unrelatedLineageRefusal_fn, replaceLocal_fn, converged_fn, offerAfterRebase_fn, preservedCopy_fn, alreadyJudged_fn, rememberJudgment_fn, forgetJudgment_fn, present_fn, finishOfferOutcome_fn, transportFailure_fn, remember_fn4, finish_fn2, cloudBase_fn, offerEndpoint_fn, workspaceEndpoint_fn, authToken_fn;
21770
21808
  var WorkspaceSyncWork = class {
21771
21809
  constructor(args) {
21772
21810
  __privateAdd(this, _WorkspaceSyncWork_instances);
@@ -21781,7 +21819,6 @@
21781
21819
  __privateAdd(this, _rediscover);
21782
21820
  /** The route the directory's answer yields, recomputed once that answer is observed. */
21783
21821
  __privateAdd(this, _reroute);
21784
- __privateAdd(this, _placementFetch);
21785
21822
  __privateAdd(this, _discoveredFrontier);
21786
21823
  __privateAdd(this, _observePlacement);
21787
21824
  /** Ask the directory for the provider's current placement frontier this round although a
@@ -21790,19 +21827,14 @@
21790
21827
  __privateAdd(this, _directoryAnswered);
21791
21828
  __privateAdd(this, _placementFetched);
21792
21829
  /** A round which converged without leasing, finishing once placement alone is fetched. */
21793
- __privateAdd(this, _afterPlacement);
21794
21830
  __privateAdd(this, _leased, false);
21795
- __privateAdd(this, _lease);
21796
21831
  __privateAdd(this, _command2);
21797
21832
  __privateAdd(this, _requestId4);
21798
21833
  __privateAdd(this, _started);
21799
- __privateAdd(this, _phase2, WorkspaceSyncPhase.Lease);
21834
+ __privateAdd(this, _state, { phase: WorkspaceSyncPhase.Idle });
21800
21835
  __privateAdd(this, _localHead);
21801
21836
  __privateAdd(this, _offerHead);
21802
21837
  __privateAdd(this, _previousHead);
21803
- __privateAdd(this, _fetchStarted);
21804
- __privateAdd(this, _offerStarted);
21805
- __privateAdd(this, _offerRequestId);
21806
21838
  __privateAdd(this, _pushMillis, 0);
21807
21839
  __privateAdd(this, _pushBytes, 0n);
21808
21840
  __privateAdd(this, _desiredHead);
@@ -21896,7 +21928,7 @@
21896
21928
  throw new Error(`replica '${__privateGet(this, _binding).replicaId}' has no custody remote`);
21897
21929
  }
21898
21930
  if (__privateGet(this, _rediscover) || __privateGet(this, _recheckPlacement) || !__privateGet(this, _route2)?.placementObserved && !__privateGet(this, _route2)?.placementFrontier && !__privateGet(this, _kernel16).resolveRef(__privateGet(this, _mount), __privateGet(this, _requestId4), PLACEMENT_REF3)) {
21899
- __privateSet(this, _phase2, WorkspaceSyncPhase.Discover);
21931
+ __privateSet(this, _state, { phase: WorkspaceSyncPhase.Discover });
21900
21932
  return __privateMethod(this, _WorkspaceSyncWork_instances, remember_fn4).call(this, {
21901
21933
  case: "pending",
21902
21934
  value: create(CorrespondencePendingSchema, {
@@ -21930,24 +21962,26 @@
21930
21962
  `workspace sync '${this.workId}' expected effect '${expected}', received '${receipt.effectId}'`
21931
21963
  );
21932
21964
  }
21965
+ const state = __privateGet(this, _state);
21933
21966
  const previousReceipt = __privateGet(this, _lastReceiptEffectId2);
21934
21967
  __privateSet(this, _lastReceiptEffectId2, receipt.effectId);
21935
21968
  try {
21936
21969
  if (receipt.outcome.case === "failure") {
21937
- if (__privateGet(this, _phase2) === WorkspaceSyncPhase.Discover) return __privateMethod(this, _WorkspaceSyncWork_instances, openRound_fn).call(this);
21970
+ if (state.phase === WorkspaceSyncPhase.Discover) return __privateMethod(this, _WorkspaceSyncWork_instances, openRound_fn).call(this);
21938
21971
  return __privateMethod(this, _WorkspaceSyncWork_instances, transportFailure_fn).call(this, receipt.outcome.value.message, receipt.outcome.value.reason === PeerEffectFailureReason.OFFLINE);
21939
21972
  }
21940
- if (__privateGet(this, _phase2) === WorkspaceSyncPhase.Offer || __privateGet(this, _phase2) === WorkspaceSyncPhase.Probe) return __privateMethod(this, _WorkspaceSyncWork_instances, acceptOffer_fn).call(this, receipt);
21941
- if (__privateGet(this, _phase2) === WorkspaceSyncPhase.Lease) return __privateMethod(this, _WorkspaceSyncWork_instances, acceptLease_fn).call(this, receipt);
21942
- if (__privateGet(this, _phase2) === WorkspaceSyncPhase.Discover) return __privateMethod(this, _WorkspaceSyncWork_instances, acceptDiscovery_fn).call(this, receipt);
21943
- if (__privateGet(this, _phase2) === WorkspaceSyncPhase.Placement) {
21944
- if (!__privateGet(this, _placementFetch) || !__privateGet(this, _lease)) throw new Error("placement transfer lost its lease");
21945
- __privateGet(this, _placementFetch).accept(receipt);
21973
+ if (state.phase === WorkspaceSyncPhase.Offer || state.phase === WorkspaceSyncPhase.Probe) {
21974
+ return __privateMethod(this, _WorkspaceSyncWork_instances, acceptOffer_fn).call(this, receipt, state);
21975
+ }
21976
+ if (state.phase === WorkspaceSyncPhase.Lease) return __privateMethod(this, _WorkspaceSyncWork_instances, acceptLease_fn).call(this, receipt, state);
21977
+ if (state.phase === WorkspaceSyncPhase.Discover) return __privateMethod(this, _WorkspaceSyncWork_instances, acceptDiscovery_fn).call(this, receipt);
21978
+ if (state.phase === WorkspaceSyncPhase.Placement) {
21979
+ state.transfer.accept(receipt);
21946
21980
  (_a = __privateGet(this, _placementFetched)) == null ? void 0 : _a.call(this);
21947
- if (__privateGet(this, _afterPlacement)) return __privateMethod(this, _WorkspaceSyncWork_instances, finish_fn2).call(this, __privateGet(this, _afterPlacement));
21948
- return __privateMethod(this, _WorkspaceSyncWork_instances, beginMainFetch_fn).call(this, __privateGet(this, _lease));
21981
+ if (state.afterPlacement) return __privateMethod(this, _WorkspaceSyncWork_instances, finish_fn2).call(this, state.afterPlacement);
21982
+ return __privateMethod(this, _WorkspaceSyncWork_instances, beginMainFetch_fn).call(this, state.lease);
21949
21983
  }
21950
- if (__privateGet(this, _phase2) === WorkspaceSyncPhase.Fetch) return __privateMethod(this, _WorkspaceSyncWork_instances, acceptFetch_fn).call(this, receipt);
21984
+ if (state.phase === WorkspaceSyncPhase.Fetch) return __privateMethod(this, _WorkspaceSyncWork_instances, acceptFetch_fn).call(this, receipt, state);
21951
21985
  throw new Error(`workspace sync '${this.workId}' is already complete`);
21952
21986
  } catch (error) {
21953
21987
  __privateSet(this, _lastReceiptEffectId2, previousReceipt);
@@ -21963,25 +21997,19 @@
21963
21997
  _route2 = new WeakMap();
21964
21998
  _rediscover = new WeakMap();
21965
21999
  _reroute = new WeakMap();
21966
- _placementFetch = new WeakMap();
21967
22000
  _discoveredFrontier = new WeakMap();
21968
22001
  _observePlacement = new WeakMap();
21969
22002
  _recheckPlacement = new WeakMap();
21970
22003
  _directoryAnswered = new WeakMap();
21971
22004
  _placementFetched = new WeakMap();
21972
- _afterPlacement = new WeakMap();
21973
22005
  _leased = new WeakMap();
21974
- _lease = new WeakMap();
21975
22006
  _command2 = new WeakMap();
21976
22007
  _requestId4 = new WeakMap();
21977
22008
  _started = new WeakMap();
21978
- _phase2 = new WeakMap();
22009
+ _state = new WeakMap();
21979
22010
  _localHead = new WeakMap();
21980
22011
  _offerHead = new WeakMap();
21981
22012
  _previousHead = new WeakMap();
21982
- _fetchStarted = new WeakMap();
21983
- _offerStarted = new WeakMap();
21984
- _offerRequestId = new WeakMap();
21985
22013
  _pushMillis = new WeakMap();
21986
22014
  _pushBytes = new WeakMap();
21987
22015
  _desiredHead = new WeakMap();
@@ -22012,13 +22040,13 @@
22012
22040
  openRound_fn = function() {
22013
22041
  if (__privateGet(this, _receiveState) || __privateGet(this, _replaceLocalHead) !== void 0) return __privateMethod(this, _WorkspaceSyncWork_instances, leaseEffect_fn).call(this);
22014
22042
  if (!__privateGet(this, _localHead)) return __privateMethod(this, _WorkspaceSyncWork_instances, leaseEffect_fn).call(this);
22015
- __privateSet(this, _offerRequestId, `${__privateGet(this, _binding).replicaId}:${__privateGet(this, _requestId4)}:${this.workId}:frontier`);
22043
+ const requestId = `${__privateGet(this, _binding).replicaId}:${__privateGet(this, _requestId4)}:${this.workId}:frontier`;
22016
22044
  return __privateMethod(this, _WorkspaceSyncWork_instances, beginOffer_fn).call(this, encodeInlineCustodyOffer({
22017
22045
  session: __privateGet(this, _binding).replicaId,
22018
- requestId: __privateGet(this, _offerRequestId),
22046
+ requestId,
22019
22047
  observedHead: __privateGet(this, _localHead),
22020
22048
  intents: []
22021
- }), true);
22049
+ }), { case: "awaiting", requestId }, true);
22022
22050
  };
22023
22051
  offerOrReconcile_fn = function() {
22024
22052
  if (__privateGet(this, _command2).admit && __privateGet(this, _localHead) && __privateGet(this, _localHead) !== __privateGet(this, _previousHead)) {
@@ -22039,13 +22067,13 @@
22039
22067
  throw new Error(`kernel did not classify transport for intent '${unspecified.intentId}'`);
22040
22068
  }
22041
22069
  if (suffix.length > 0) {
22042
- __privateSet(this, _offerStarted, __privateGet(this, _clock13).monotonicNanoseconds());
22043
- __privateSet(this, _offerRequestId, `${__privateGet(this, _binding).replicaId}:${__privateGet(this, _requestId4)}:${this.workId}`);
22070
+ const requestId2 = `${__privateGet(this, _binding).replicaId}:${__privateGet(this, _requestId4)}:${this.workId}`;
22071
+ const startedAt = __privateGet(this, _clock13).monotonicNanoseconds();
22044
22072
  __privateSet(this, _offerAfterConverge, true);
22045
22073
  __privateSet(this, _rebaseFrom, __privateGet(this, _previousHead));
22046
22074
  return __privateMethod(this, _WorkspaceSyncWork_instances, beginOffer_fn).call(this, encodeInlineCustodyOffer({
22047
22075
  session: __privateGet(this, _binding).replicaId,
22048
- requestId: __privateGet(this, _offerRequestId),
22076
+ requestId: requestId2,
22049
22077
  ...__privateGet(this, _previousHead) === void 0 ? {} : { baseHead: __privateGet(this, _previousHead) },
22050
22078
  observedHead: __privateGet(this, _localHead),
22051
22079
  intents: suffix,
@@ -22056,17 +22084,17 @@
22056
22084
  __privateGet(this, _previousHead)
22057
22085
  ) : void 0,
22058
22086
  fastForwardOnly: true
22059
- }));
22087
+ }), { case: "awaiting", requestId: requestId2, startedAt });
22060
22088
  }
22061
22089
  }
22062
- __privateSet(this, _offerRequestId, `${__privateGet(this, _binding).replicaId}:${__privateGet(this, _requestId4)}:${this.workId}:reconcile`);
22090
+ const requestId = `${__privateGet(this, _binding).replicaId}:${__privateGet(this, _requestId4)}:${this.workId}:reconcile`;
22063
22091
  return __privateMethod(this, _WorkspaceSyncWork_instances, beginOffer_fn).call(this, encodeInlineCustodyOffer({
22064
22092
  session: __privateGet(this, _binding).replicaId,
22065
- requestId: __privateGet(this, _offerRequestId),
22093
+ requestId,
22066
22094
  baseHead: __privateGet(this, _previousHead),
22067
22095
  observedHead: __privateGet(this, _localHead),
22068
22096
  intents: []
22069
- }));
22097
+ }), { case: "awaiting", requestId });
22070
22098
  };
22071
22099
  /**
22072
22100
  * NO COMMON BASE — a round that cannot converge, and must not pay for history to find out.
@@ -22137,18 +22165,18 @@
22137
22165
  pullBeforeOffer_fn = function() {
22138
22166
  __privateSet(this, _offerAfterConverge, true);
22139
22167
  __privateSet(this, _rebaseFrom, __privateGet(this, _previousHead));
22140
- __privateSet(this, _offerRequestId, `${__privateGet(this, _binding).replicaId}:${__privateGet(this, _requestId4)}:${this.workId}:pull-${__privateGet(this, _rebases)}`);
22168
+ const requestId = `${__privateGet(this, _binding).replicaId}:${__privateGet(this, _requestId4)}:${this.workId}:pull-${__privateGet(this, _rebases)}`;
22141
22169
  return __privateMethod(this, _WorkspaceSyncWork_instances, beginOffer_fn).call(this, encodeInlineCustodyOffer({
22142
22170
  session: __privateGet(this, _binding).replicaId,
22143
- requestId: __privateGet(this, _offerRequestId),
22171
+ requestId,
22144
22172
  ...__privateGet(this, _previousHead) === void 0 ? {} : { baseHead: __privateGet(this, _previousHead) },
22145
22173
  observedHead: __privateGet(this, _localHead),
22146
22174
  intents: []
22147
- }));
22175
+ }), { case: "awaiting", requestId });
22148
22176
  };
22149
- leaseEffect_fn = function() {
22177
+ leaseEffect_fn = function(afterPlacement) {
22150
22178
  const token = __privateMethod(this, _WorkspaceSyncWork_instances, authToken_fn).call(this);
22151
- __privateSet(this, _phase2, WorkspaceSyncPhase.Lease);
22179
+ __privateSet(this, _state, { phase: WorkspaceSyncPhase.Lease, ...afterPlacement ? { afterPlacement } : {} });
22152
22180
  return __privateMethod(this, _WorkspaceSyncWork_instances, remember_fn4).call(this, {
22153
22181
  case: "pending",
22154
22182
  value: create(CorrespondencePendingSchema, {
@@ -22166,8 +22194,9 @@
22166
22194
  })
22167
22195
  });
22168
22196
  };
22169
- beginOffer_fn = function(body, probe = false) {
22170
- __privateSet(this, _phase2, probe ? WorkspaceSyncPhase.Probe : WorkspaceSyncPhase.Offer);
22197
+ beginOffer_fn = function(body, exchange, probe = false) {
22198
+ const phase = probe ? WorkspaceSyncPhase.Probe : WorkspaceSyncPhase.Offer;
22199
+ __privateSet(this, _state, { phase, exchange });
22171
22200
  const token = __privateMethod(this, _WorkspaceSyncWork_instances, authToken_fn).call(this);
22172
22201
  __privateSet(this, _pushBytes, __privateGet(this, _pushBytes) + BigInt(body.byteLength));
22173
22202
  return __privateMethod(this, _WorkspaceSyncWork_instances, remember_fn4).call(this, {
@@ -22177,7 +22206,7 @@
22177
22206
  effect: {
22178
22207
  case: "http",
22179
22208
  value: create(PeerHttpEffectSchema, {
22180
- effectId: `${this.workId}:${__privateGet(this, _phase2)}`,
22209
+ effectId: `${this.workId}:${phase}`,
22181
22210
  method: PeerHttpMethod.POST,
22182
22211
  url: __privateMethod(this, _WorkspaceSyncWork_instances, offerEndpoint_fn).call(this),
22183
22212
  contentType: CUSTODY_OFFER_MEDIA_TYPE,
@@ -22194,28 +22223,30 @@
22194
22223
  })
22195
22224
  });
22196
22225
  };
22197
- acceptOffer_fn = function(receipt) {
22198
- __privateSet(this, _pushMillis, __privateGet(this, _offerStarted) === void 0 ? 0 : elapsedMillis(__privateGet(this, _clock13), __privateGet(this, _offerStarted)));
22226
+ acceptOffer_fn = function(receipt, state) {
22227
+ const exchange = state.exchange;
22228
+ __privateSet(this, _pushMillis, exchange.startedAt === void 0 ? 0 : elapsedMillis(__privateGet(this, _clock13), exchange.startedAt));
22199
22229
  if (receipt.outcome.case !== "response") {
22200
22230
  throw new Error("platform returned the wrong receipt for a custody offer");
22201
22231
  }
22202
- const response = receipt.outcome.value;
22203
- if (!response.contentType?.includes(CUSTODY_OFFER_RESULT_MEDIA_TYPE)) {
22232
+ const outcome = settleCustodyOfferExchange(exchange, receipt.outcome.value);
22233
+ if (outcome.case === "maintenance") {
22234
+ return __privateMethod(this, _WorkspaceSyncWork_instances, finishOfferOutcome_fn).call(this, true, false);
22235
+ }
22236
+ if (outcome.case === "unexpected") {
22204
22237
  __privateSet(this, _pushError, create(RuntimeTransportFailureSchema, {
22205
22238
  endpoint: __privateMethod(this, _WorkspaceSyncWork_instances, offerEndpoint_fn).call(this),
22206
- status: response.status,
22239
+ status: outcome.status,
22207
22240
  refused: false,
22208
- message: `Sync received an unexpected server response (HTTP ${response.status}; ${response.contentType || "no content type"}). No custody receipt was returned.`
22241
+ message: `Sync received an unexpected server response (HTTP ${outcome.status}; ${outcome.contentType || "no content type"}). No custody receipt was returned.`
22209
22242
  }));
22210
22243
  return __privateMethod(this, _WorkspaceSyncWork_instances, finishOfferOutcome_fn).call(this, false);
22211
22244
  }
22212
- if (!__privateGet(this, _offerRequestId)) throw new Error("custody offer has no request identity");
22213
- const outcome = decodeCustodyOffer(response.body, __privateGet(this, _offerRequestId));
22214
- __privateSet(this, _offerReceipt, custodyOfferReceipt(__privateGet(this, _offerRequestId), outcome));
22245
+ __privateSet(this, _offerReceipt, outcome.receipt);
22215
22246
  if (outcome.case === "failure") {
22216
22247
  __privateSet(this, _pushError, create(RuntimeTransportFailureSchema, {
22217
22248
  endpoint: __privateMethod(this, _WorkspaceSyncWork_instances, offerEndpoint_fn).call(this),
22218
- status: response.status,
22249
+ status: outcome.status,
22219
22250
  refused: false,
22220
22251
  message: `${outcome.value.code}: ${outcome.value.message}`
22221
22252
  }));
@@ -22224,12 +22255,12 @@
22224
22255
  if (outcome.case === "blocked") {
22225
22256
  return __privateMethod(this, _WorkspaceSyncWork_instances, finishOfferOutcome_fn).call(this, true);
22226
22257
  }
22227
- if (response.status < 200 || response.status >= 300) {
22258
+ if (outcome.status < 200 || outcome.status >= 300) {
22228
22259
  __privateSet(this, _pushError, create(RuntimeTransportFailureSchema, {
22229
22260
  endpoint: __privateMethod(this, _WorkspaceSyncWork_instances, offerEndpoint_fn).call(this),
22230
- status: response.status,
22231
- refused: response.status === 422,
22232
- message: `custody offer returned an admission verdict with HTTP ${response.status}`
22261
+ status: outcome.status,
22262
+ refused: outcome.status === 422,
22263
+ message: `custody offer returned an admission verdict with HTTP ${outcome.status}`
22233
22264
  }));
22234
22265
  return __privateMethod(this, _WorkspaceSyncWork_instances, finishOfferOutcome_fn).call(this, false);
22235
22266
  }
@@ -22237,7 +22268,7 @@
22237
22268
  __privateSet(this, _desiredHead, admission.main || void 0);
22238
22269
  if (!__privateGet(this, _desiredHead)) return __privateMethod(this, _WorkspaceSyncWork_instances, transportFailure_fn).call(this, "resident peer returned no admitted frontier", false);
22239
22270
  __privateSet(this, _candidateDurable, admission.sealedMain === __privateGet(this, _desiredHead));
22240
- if (__privateGet(this, _phase2) === WorkspaceSyncPhase.Probe && __privateGet(this, _desiredHead) !== __privateGet(this, _localHead)) {
22271
+ if (state.phase === WorkspaceSyncPhase.Probe && __privateGet(this, _desiredHead) !== __privateGet(this, _localHead)) {
22241
22272
  if (!__privateMethod(this, _WorkspaceSyncWork_instances, establishBase_fn).call(this, __privateGet(this, _desiredHead))) return __privateMethod(this, _WorkspaceSyncWork_instances, noCommonBaseResult_fn).call(this);
22242
22273
  if (__privateMethod(this, _WorkspaceSyncWork_instances, alreadyJudged_fn).call(this, __privateGet(this, _desiredHead))) {
22243
22274
  return __privateMethod(this, _WorkspaceSyncWork_instances, finish_fn2).call(this, create(SyncWorkspaceResponseSchema, {
@@ -22299,7 +22330,7 @@
22299
22330
  if (admission.recoveryRequired !== false) return __privateMethod(this, _WorkspaceSyncWork_instances, leaseEffect_fn).call(this);
22300
22331
  return __privateMethod(this, _WorkspaceSyncWork_instances, transportFailure_fn).call(this, "resident peer supplied neither the missing delta nor a history gap", false);
22301
22332
  };
22302
- acceptLease_fn = function(receipt) {
22333
+ acceptLease_fn = function(receipt, state) {
22303
22334
  if (receipt.outcome.case !== "response") {
22304
22335
  throw new Error("platform returned the wrong receipt for a Git read lease");
22305
22336
  }
@@ -22311,21 +22342,25 @@
22311
22342
  __privateSet(this, _leased, true);
22312
22343
  const frontier = __privateMethod(this, _WorkspaceSyncWork_instances, placementFrontier_fn).call(this);
22313
22344
  if (frontier) {
22314
- __privateSet(this, _placementFetch, new PlacementFetch(
22345
+ const transfer = new PlacementFetch(
22315
22346
  __privateGet(this, _kernel16),
22316
22347
  __privateGet(this, _mount),
22317
22348
  __privateGet(this, _requestId4),
22318
22349
  this.workId,
22319
22350
  frontier
22320
- ));
22321
- const pending = __privateGet(this, _placementFetch).start(lease);
22351
+ );
22352
+ const pending = transfer.start(lease);
22322
22353
  if (pending) {
22323
- __privateSet(this, _phase2, WorkspaceSyncPhase.Placement);
22324
- __privateSet(this, _lease, lease);
22354
+ __privateSet(this, _state, {
22355
+ phase: WorkspaceSyncPhase.Placement,
22356
+ transfer,
22357
+ lease,
22358
+ ...state.afterPlacement ? { afterPlacement: state.afterPlacement } : {}
22359
+ });
22325
22360
  return __privateMethod(this, _WorkspaceSyncWork_instances, remember_fn4).call(this, { case: "pending", value: pending });
22326
22361
  }
22327
22362
  }
22328
- if (__privateGet(this, _afterPlacement)) return __privateMethod(this, _WorkspaceSyncWork_instances, finish_fn2).call(this, __privateGet(this, _afterPlacement));
22363
+ if (state.afterPlacement) return __privateMethod(this, _WorkspaceSyncWork_instances, finish_fn2).call(this, state.afterPlacement);
22329
22364
  return __privateMethod(this, _WorkspaceSyncWork_instances, beginMainFetch_fn).call(this, lease);
22330
22365
  };
22331
22366
  /** The provider's placement frontier as this round knows it: what the directory named in this
@@ -22345,8 +22380,7 @@
22345
22380
  if (!new PlacementFetch(__privateGet(this, _kernel16), __privateGet(this, _mount), __privateGet(this, _requestId4), this.workId, frontier).wanted()) {
22346
22381
  return void 0;
22347
22382
  }
22348
- __privateSet(this, _afterPlacement, presented);
22349
- return __privateMethod(this, _WorkspaceSyncWork_instances, leaseEffect_fn).call(this);
22383
+ return __privateMethod(this, _WorkspaceSyncWork_instances, leaseEffect_fn).call(this, presented);
22350
22384
  };
22351
22385
  acceptDiscovery_fn = function(receipt) {
22352
22386
  var _a, _b;
@@ -22371,9 +22405,11 @@
22371
22405
  return __privateGet(this, _replaceLocalHead) !== void 0 || __privateGet(this, _localHead) === void 0 && __privateGet(this, _previousHead) === void 0;
22372
22406
  };
22373
22407
  beginMainFetch_fn = function(lease) {
22374
- __privateSet(this, _phase2, WorkspaceSyncPhase.Fetch);
22375
22408
  const lawProducts = __privateMethod(this, _WorkspaceSyncWork_instances, lawProductsAlongside_fn).call(this);
22376
- __privateSet(this, _fetchStarted, __privateGet(this, _clock13).monotonicNanoseconds());
22409
+ __privateSet(this, _state, {
22410
+ phase: WorkspaceSyncPhase.Fetch,
22411
+ startedAt: __privateGet(this, _clock13).monotonicNanoseconds()
22412
+ });
22377
22413
  const haves = __privateGet(this, _replaceLocalHead) !== void 0 ? __privateGet(this, _repairMissingCommit) ? [] : [__privateGet(this, _kernel16).resolveRef(__privateGet(this, _mount), __privateGet(this, _requestId4), deferredRemote)].filter(
22378
22414
  (head) => !!head
22379
22415
  ) : [...new Set([
@@ -22404,7 +22440,7 @@
22404
22440
  })
22405
22441
  });
22406
22442
  };
22407
- acceptFetch_fn = function(receipt) {
22443
+ acceptFetch_fn = function(receipt, state) {
22408
22444
  if (receipt.outcome.case !== "gitFetch") {
22409
22445
  throw new Error("platform returned the wrong receipt for a Git object fetch");
22410
22446
  }
@@ -22414,7 +22450,7 @@
22414
22450
  if (fetched.pack.byteLength > 0) {
22415
22451
  __privateGet(this, _kernel16).applyPack(__privateGet(this, _mount), __privateGet(this, _requestId4), fetched.pack, fetched.head, fetched.shallow);
22416
22452
  }
22417
- const prefetchMillis = __privateGet(this, _fetchStarted) === void 0 ? 0 : elapsedMillis(__privateGet(this, _clock13), __privateGet(this, _fetchStarted));
22453
+ const prefetchMillis = elapsedMillis(__privateGet(this, _clock13), state.startedAt);
22418
22454
  const candidateHead = __privateGet(this, _receiveState) ? __privateGet(this, _kernel16).resolveStatePosition?.(__privateGet(this, _mount), __privateGet(this, _requestId4), fetched.head, __privateGet(this, _receiveState)) : fetched.head;
22419
22455
  if (!candidateHead) {
22420
22456
  return __privateMethod(this, _WorkspaceSyncWork_instances, finish_fn2).call(this, create(SyncWorkspaceResponseSchema, {
@@ -22739,11 +22775,11 @@
22739
22775
  pushBytes: __privateGet(this, _pushBytes),
22740
22776
  pullBytes: BigInt(receivedBytes),
22741
22777
  serverMillis: __privateGet(this, _admissionSummary)?.serverMillis ?? 0,
22742
- offerInPush: __privateGet(this, _offerRequestId) !== void 0
22778
+ offerInPush: __privateGet(this, _pushBytes) > 0n
22743
22779
  })
22744
22780
  });
22745
22781
  };
22746
- finishOfferOutcome_fn = function(blocked) {
22782
+ finishOfferOutcome_fn = function(blocked, reconnectRequired = true) {
22747
22783
  return __privateMethod(this, _WorkspaceSyncWork_instances, finish_fn2).call(this, create(SyncWorkspaceResponseSchema, {
22748
22784
  workspace: __privateGet(this, _mount).workspace,
22749
22785
  previousHead: __privateGet(this, _previousHead),
@@ -22751,7 +22787,7 @@
22751
22787
  admitted: BigInt(__privateGet(this, _admissionSummary)?.admittedIntentIds.length ?? 0),
22752
22788
  refused: BigInt((__privateGet(this, _admissionSummary)?.refusedMessages.length ?? 0) + __privateGet(this, _parkedLocal)),
22753
22789
  deferred: BigInt(__privateGet(this, _admissionSummary) ? __privateGet(this, _admissionSummary).blockedMessages.length + __privateGet(this, _admissionSummary).deadLetteredMessages.length + __privateGet(this, _admissionSummary).quarantinedMessages.length + __privateGet(this, _admissionSummary).deferredMessages.length : blocked ? 1 : 0),
22754
- reconnectRequired: true,
22790
+ reconnectRequired,
22755
22791
  stillAhead: __privateGet(this, _localHead) !== __privateGet(this, _previousHead),
22756
22792
  directOfferDeferred: blocked,
22757
22793
  offerReceipt: __privateGet(this, _offerReceipt),
@@ -22765,15 +22801,16 @@
22765
22801
  }));
22766
22802
  };
22767
22803
  transportFailure_fn = function(message, offline, status = -1) {
22768
- const pushFailed = __privateGet(this, _phase2) === WorkspaceSyncPhase.Offer;
22804
+ const state = __privateGet(this, _state);
22805
+ const pushFailed = state.phase === WorkspaceSyncPhase.Offer;
22769
22806
  const failedEndpoint = __privateMethod(this, _WorkspaceSyncWork_instances, offerEndpoint_fn).call(this);
22770
22807
  const failure = create(RuntimeTransportFailureSchema, {
22771
22808
  endpoint: pushFailed ? failedEndpoint : __privateGet(this, _binding).cloud ?? "",
22772
22809
  status,
22773
22810
  message
22774
22811
  });
22775
- if (pushFailed) {
22776
- __privateSet(this, _pushMillis, __privateGet(this, _offerStarted) === void 0 ? 0 : elapsedMillis(__privateGet(this, _clock13), __privateGet(this, _offerStarted)));
22812
+ if (state.phase === WorkspaceSyncPhase.Offer) {
22813
+ __privateSet(this, _pushMillis, state.exchange.startedAt === void 0 ? 0 : elapsedMillis(__privateGet(this, _clock13), state.exchange.startedAt));
22777
22814
  __privateSet(this, _pushError, failure);
22778
22815
  }
22779
22816
  return __privateMethod(this, _WorkspaceSyncWork_instances, finish_fn2).call(this, create(SyncWorkspaceResponseSchema, {
@@ -22790,7 +22827,7 @@
22790
22827
  pushMillis: __privateGet(this, _pushMillis),
22791
22828
  pushBytes: __privateGet(this, _pushBytes),
22792
22829
  prefetchMillis: elapsedMillis(__privateGet(this, _clock13), __privateGet(this, _started)),
22793
- offerInPush: __privateGet(this, _offerRequestId) !== void 0
22830
+ offerInPush: __privateGet(this, _pushBytes) > 0n
22794
22831
  })
22795
22832
  }));
22796
22833
  };
@@ -22800,7 +22837,7 @@
22800
22837
  return step;
22801
22838
  };
22802
22839
  finish_fn2 = function(value) {
22803
- __privateSet(this, _phase2, WorkspaceSyncPhase.Done);
22840
+ __privateSet(this, _state, { phase: WorkspaceSyncPhase.Done });
22804
22841
  __privateSet(this, _current3, void 0);
22805
22842
  return __privateMethod(this, _WorkspaceSyncWork_instances, remember_fn4).call(this, { case: "synced", value });
22806
22843
  };
@@ -23226,7 +23263,7 @@
23226
23263
  millis: 150,
23227
23264
  quanta: 64
23228
23265
  });
23229
- var _command3, _source3, _target2, _checkpointSecret, _clock15, _kernel17, _requestId5, _phase3, _offers, _attempted2, _delivered, _refused, _retryable, _lastRetry, _recipientRefused, _activeOffer, _nextDueAtMillis, _appliedThisTurn, _preparationPending, _targetHead, _sourceOutcomeRecorded, _budget, _turnStartedMillis, _quanta, _WorkspaceEffectDelivery_instances, retry_fn2, outboxCall_fn, acceptOutbox_fn, acceptApply_fn, nextApplyOrDone_fn;
23266
+ var _command3, _source3, _target2, _checkpointSecret, _clock15, _kernel17, _requestId5, _phase2, _offers, _attempted2, _delivered, _refused, _retryable, _lastRetry, _recipientRefused, _activeOffer, _nextDueAtMillis, _appliedThisTurn, _preparationPending, _targetHead, _sourceOutcomeRecorded, _budget, _turnStartedMillis, _quanta, _WorkspaceEffectDelivery_instances, retry_fn2, outboxCall_fn, acceptOutbox_fn, acceptApply_fn, nextApplyOrDone_fn;
23230
23267
  var WorkspaceEffectDelivery = class {
23231
23268
  constructor(args) {
23232
23269
  __privateAdd(this, _WorkspaceEffectDelivery_instances);
@@ -23237,7 +23274,7 @@
23237
23274
  __privateAdd(this, _clock15);
23238
23275
  __privateAdd(this, _kernel17);
23239
23276
  __privateAdd(this, _requestId5);
23240
- __privateAdd(this, _phase3, WorkspaceEffectDeliveryPhase.Start);
23277
+ __privateAdd(this, _phase2, WorkspaceEffectDeliveryPhase.Start);
23241
23278
  __privateAdd(this, _offers, []);
23242
23279
  __privateAdd(this, _attempted2, 0n);
23243
23280
  __privateAdd(this, _delivered, 0n);
@@ -23272,17 +23309,17 @@
23272
23309
  return __privateGet(this, _recipientRefused);
23273
23310
  }
23274
23311
  next(response, settlement) {
23275
- if (__privateGet(this, _phase3) === WorkspaceEffectDeliveryPhase.Start) {
23312
+ if (__privateGet(this, _phase2) === WorkspaceEffectDeliveryPhase.Start) {
23276
23313
  if (response !== void 0) throw new Error("delivery received a response before its outbox call");
23277
23314
  __privateSet(this, _turnStartedMillis, __privateGet(this, _clock15).currentMillis());
23278
23315
  return __privateMethod(this, _WorkspaceEffectDelivery_instances, outboxCall_fn).call(this);
23279
23316
  }
23280
- if (__privateGet(this, _phase3) === WorkspaceEffectDeliveryPhase.Outbox) {
23317
+ if (__privateGet(this, _phase2) === WorkspaceEffectDeliveryPhase.Outbox) {
23281
23318
  if (!response) throw new Error("delivery requires the source outbox response");
23282
23319
  if (__privateMethod(this, _WorkspaceEffectDelivery_instances, acceptOutbox_fn).call(this, response)) return __privateMethod(this, _WorkspaceEffectDelivery_instances, outboxCall_fn).call(this);
23283
23320
  return __privateMethod(this, _WorkspaceEffectDelivery_instances, nextApplyOrDone_fn).call(this);
23284
23321
  }
23285
- if (__privateGet(this, _phase3) === WorkspaceEffectDeliveryPhase.Apply) {
23322
+ if (__privateGet(this, _phase2) === WorkspaceEffectDeliveryPhase.Apply) {
23286
23323
  if (!response) throw new Error("delivery requires the target admission response");
23287
23324
  __privateMethod(this, _WorkspaceEffectDelivery_instances, acceptApply_fn).call(this, response, settlement);
23288
23325
  return __privateMethod(this, _WorkspaceEffectDelivery_instances, nextApplyOrDone_fn).call(this);
@@ -23297,7 +23334,7 @@
23297
23334
  _clock15 = new WeakMap();
23298
23335
  _kernel17 = new WeakMap();
23299
23336
  _requestId5 = new WeakMap();
23300
- _phase3 = new WeakMap();
23337
+ _phase2 = new WeakMap();
23301
23338
  _offers = new WeakMap();
23302
23339
  _attempted2 = new WeakMap();
23303
23340
  _delivered = new WeakMap();
@@ -23320,7 +23357,7 @@
23320
23357
  __privateSet(this, _lastRetry, { reason, detail: detail.slice(0, RETRY_DETAIL_CHARACTERS) });
23321
23358
  };
23322
23359
  outboxCall_fn = function() {
23323
- __privateSet(this, _phase3, WorkspaceEffectDeliveryPhase.Outbox);
23360
+ __privateSet(this, _phase2, WorkspaceEffectDeliveryPhase.Outbox);
23324
23361
  return {
23325
23362
  case: "call",
23326
23363
  value: {
@@ -23362,13 +23399,13 @@
23362
23399
  }
23363
23400
  __privateSet(this, _nextDueAtMillis, now);
23364
23401
  __privateSet(this, _preparationPending, true);
23365
- __privateSet(this, _phase3, WorkspaceEffectDeliveryPhase.Apply);
23402
+ __privateSet(this, _phase2, WorkspaceEffectDeliveryPhase.Apply);
23366
23403
  return false;
23367
23404
  }
23368
23405
  __privateSet(this, _offers, response.outcome.value.offers.filter(
23369
23406
  (offer) => offer.route.case === "workspaceRoute" && offer.route.value.workspace === __privateGet(this, _target2).workspace && (__privateGet(this, _command3).sourceCommit === void 0 || offer.sourceCommit === __privateGet(this, _command3).sourceCommit)
23370
23407
  ));
23371
- __privateSet(this, _phase3, WorkspaceEffectDeliveryPhase.Apply);
23408
+ __privateSet(this, _phase2, WorkspaceEffectDeliveryPhase.Apply);
23372
23409
  return false;
23373
23410
  };
23374
23411
  acceptApply_fn = function(response, settlement) {
@@ -23460,7 +23497,7 @@
23460
23497
  }
23461
23498
  };
23462
23499
  }
23463
- __privateSet(this, _phase3, WorkspaceEffectDeliveryPhase.Done);
23500
+ __privateSet(this, _phase2, WorkspaceEffectDeliveryPhase.Done);
23464
23501
  return {
23465
23502
  case: "done",
23466
23503
  value: create(WorkspaceEffectsDeliveredSchema, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@githolon/runtime",
3
- "version": "0.110.0",
3
+ "version": "0.110.1",
4
4
  "type": "module",
5
5
  "description": "The portable Nomos application runtime, reception contracts, and Node/browser runners.",
6
6
  "license": "SEE LICENSE IN LICENSE.md",