@vtxmacro/cli 2026.8.33 → 2026.8.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/vtx.js +44 -8
- package/package.json +1 -1
package/bin/vtx.js
CHANGED
|
@@ -38,7 +38,7 @@ var init_agent_cli_release = __esm({
|
|
|
38
38
|
"agent-cli-release.json"() {
|
|
39
39
|
agent_cli_release_default = {
|
|
40
40
|
package_name: "@vtxmacro/cli",
|
|
41
|
-
package_version: "2026.8.
|
|
41
|
+
package_version: "2026.8.35",
|
|
42
42
|
codex_package_name: "@openai/codex",
|
|
43
43
|
codex_version: "0.147.0",
|
|
44
44
|
platforms: {
|
|
@@ -29880,6 +29880,7 @@ var init_runner = __esm({
|
|
|
29880
29880
|
now()
|
|
29881
29881
|
)
|
|
29882
29882
|
});
|
|
29883
|
+
const recoveryQueue = [];
|
|
29883
29884
|
const launchClaim = (claim, recovery, claimRequest) => {
|
|
29884
29885
|
if (!recovery) {
|
|
29885
29886
|
claimed += 1;
|
|
@@ -29901,6 +29902,7 @@ var init_runner = __esm({
|
|
|
29901
29902
|
pendingClaimPromotions = Math.max(0, pendingClaimPromotions - 1);
|
|
29902
29903
|
};
|
|
29903
29904
|
if (claimRequest) pendingClaimPromotions += 1;
|
|
29905
|
+
let retryRecovery = null;
|
|
29904
29906
|
const promise2 = this.executeClaim({
|
|
29905
29907
|
claim,
|
|
29906
29908
|
attemptId,
|
|
@@ -29960,7 +29962,16 @@ var init_runner = __esm({
|
|
|
29960
29962
|
onClaimPersisted: settleClaimPromotion
|
|
29961
29963
|
}).then((outcome) => {
|
|
29962
29964
|
if (outcome === "completed") completed += 1;
|
|
29963
|
-
else failed += 1;
|
|
29965
|
+
else if (outcome === "failed") failed += 1;
|
|
29966
|
+
else {
|
|
29967
|
+
const recovery2 = receipt.attempts[attemptId];
|
|
29968
|
+
if (recovery2?.phase !== "claimed") {
|
|
29969
|
+
throw new InferenceHostRecoveryRequiredError(
|
|
29970
|
+
"The retryable pre-dispatch attempt receipt is unavailable."
|
|
29971
|
+
);
|
|
29972
|
+
}
|
|
29973
|
+
retryRecovery = recovery2;
|
|
29974
|
+
}
|
|
29964
29975
|
}).catch((error48) => {
|
|
29965
29976
|
failed += 1;
|
|
29966
29977
|
requestDrain(controlPlaneFatal(error48) ? "authority_lost" : "attempt_terminal_unconfirmed");
|
|
@@ -29968,6 +29979,14 @@ var init_runner = __esm({
|
|
|
29968
29979
|
settleClaimPromotion();
|
|
29969
29980
|
active.delete(attemptId);
|
|
29970
29981
|
attemptControllers.delete(attemptId);
|
|
29982
|
+
if (retryRecovery) {
|
|
29983
|
+
recoveryQueue.push(retryRecovery);
|
|
29984
|
+
emitDiagnostic("attempt_start_retry_scheduled", {
|
|
29985
|
+
job_id: claim.job_id,
|
|
29986
|
+
attempt_id: attemptId,
|
|
29987
|
+
active_attempts: active.size
|
|
29988
|
+
});
|
|
29989
|
+
}
|
|
29971
29990
|
});
|
|
29972
29991
|
active.set(attemptId, promise2);
|
|
29973
29992
|
emitDiagnostic("attempt_started", {
|
|
@@ -29986,7 +30005,6 @@ var init_runner = __esm({
|
|
|
29986
30005
|
receipt = { ...receipt, attempts, updated_at: isoAt(now()) };
|
|
29987
30006
|
await this.persistReceipt(receipt, now);
|
|
29988
30007
|
};
|
|
29989
|
-
const recoveryQueue = [];
|
|
29990
30008
|
for (const recovery of Object.values({ ...receipt.attempts })) {
|
|
29991
30009
|
if (recovery.phase === "terminal_pending") {
|
|
29992
30010
|
try {
|
|
@@ -30362,7 +30380,17 @@ var init_runner = __esm({
|
|
|
30362
30380
|
await removeAttempt();
|
|
30363
30381
|
return "failed";
|
|
30364
30382
|
}
|
|
30365
|
-
throw error48;
|
|
30383
|
+
if (signal.aborted) throw error48;
|
|
30384
|
+
if (controlPlaneFatal(error48)) throw error48;
|
|
30385
|
+
const remainingMs = Math.max(
|
|
30386
|
+
MIN_SLEEP_MS,
|
|
30387
|
+
attemptDeadlineAtMs - now() - MIN_CLAIM_START_WINDOW_MS
|
|
30388
|
+
);
|
|
30389
|
+
await options.sleep(
|
|
30390
|
+
Math.min(remoteRetryAfterMs(error48, 1e3), remainingMs),
|
|
30391
|
+
signal
|
|
30392
|
+
);
|
|
30393
|
+
return "retry_claimed";
|
|
30366
30394
|
}
|
|
30367
30395
|
assertStartResult(startRequest, startResult);
|
|
30368
30396
|
await updateAttempt({ phase: "started" });
|
|
@@ -30426,6 +30454,11 @@ var init_runner = __esm({
|
|
|
30426
30454
|
heartbeatFailure = error48;
|
|
30427
30455
|
attemptAbort.abort();
|
|
30428
30456
|
});
|
|
30457
|
+
const stopHeartbeat = async () => {
|
|
30458
|
+
heartbeatStopped = true;
|
|
30459
|
+
attemptAbort.abort();
|
|
30460
|
+
await heartbeatLoop;
|
|
30461
|
+
};
|
|
30429
30462
|
try {
|
|
30430
30463
|
this.validateImmutableSelection(jobInput);
|
|
30431
30464
|
const outputContract = parseOutputContract(jobInput);
|
|
@@ -30584,6 +30617,7 @@ var init_runner = __esm({
|
|
|
30584
30617
|
{ cause: error48 }
|
|
30585
30618
|
);
|
|
30586
30619
|
}
|
|
30620
|
+
await stopHeartbeat();
|
|
30587
30621
|
await removeAttempt();
|
|
30588
30622
|
options.onAttemptOutcome?.({
|
|
30589
30623
|
outcome: "completed",
|
|
@@ -30661,7 +30695,10 @@ var init_runner = __esm({
|
|
|
30661
30695
|
failure_category: failure.category,
|
|
30662
30696
|
failure_code: failure.code,
|
|
30663
30697
|
retryable: failure.retryable,
|
|
30664
|
-
membership_disposition: membershipFailureDisposition(
|
|
30698
|
+
membership_disposition: membershipFailureDisposition({
|
|
30699
|
+
...failure,
|
|
30700
|
+
dispatchOutcome
|
|
30701
|
+
}),
|
|
30665
30702
|
failed_at: isoAt(now())
|
|
30666
30703
|
});
|
|
30667
30704
|
await updateAttempt({
|
|
@@ -30685,6 +30722,7 @@ var init_runner = __esm({
|
|
|
30685
30722
|
{ cause: terminalError }
|
|
30686
30723
|
);
|
|
30687
30724
|
}
|
|
30725
|
+
await stopHeartbeat();
|
|
30688
30726
|
await removeAttempt();
|
|
30689
30727
|
options.onAttemptOutcome?.({
|
|
30690
30728
|
outcome: "failed",
|
|
@@ -30698,10 +30736,8 @@ var init_runner = __esm({
|
|
|
30698
30736
|
});
|
|
30699
30737
|
return "failed";
|
|
30700
30738
|
} finally {
|
|
30701
|
-
heartbeatStopped = true;
|
|
30702
|
-
attemptAbort.abort();
|
|
30703
30739
|
signal.removeEventListener("abort", relayAbort);
|
|
30704
|
-
await
|
|
30740
|
+
await stopHeartbeat();
|
|
30705
30741
|
}
|
|
30706
30742
|
}
|
|
30707
30743
|
validateImmutableSelection(jobInput) {
|