@vtxmacro/cli 2026.8.17 → 2026.8.18
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 +23 -6
- 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.18",
|
|
42
42
|
codex_package_name: "@openai/codex",
|
|
43
43
|
codex_version: "0.147.0",
|
|
44
44
|
platforms: {
|
|
@@ -17403,11 +17403,13 @@ var init_mcp_client = __esm({
|
|
|
17403
17403
|
}).passthrough().parse(rawResult);
|
|
17404
17404
|
if (callResult.isError === true) {
|
|
17405
17405
|
const errorText = (callResult.content ?? []).filter((block) => block.type === "text").map((block) => block.text ?? "").join("\n");
|
|
17406
|
-
const definitivelyNotApplied = (name === "inference.host.register" || name === "inference.host.advertise") && (errorText.includes("Advertisement time is outside the allowed clock skew.") || errorText.includes("Advertisement is already expired.")) || (name === "inference.agent.next" || name === "inference.agent.heartbeat") && (errorText.includes("Advertisement time is outside the allowed clock skew.") || errorText.includes("Advertisement is already expired.") || errorText.includes("Heartbeat time is outside the allowed clock skew.")) || name === "inference.job.claim" && (errorText.includes(
|
|
17406
|
+
const definitivelyNotApplied = (name === "inference.host.register" || name === "inference.host.advertise") && (errorText.includes("Advertisement time is outside the allowed clock skew.") || errorText.includes("Advertisement is already expired.")) || (name === "inference.agent.next" || name === "inference.agent.heartbeat") && (errorText.includes("Advertisement time is outside the allowed clock skew.") || errorText.includes("Advertisement is already expired.") || errorText.includes("Heartbeat time is outside the allowed clock skew.")) || name === "inference.host.heartbeat" && errorText.includes("Heartbeat time is outside the allowed clock skew.") || name === "inference.job.claim" && (errorText.includes(
|
|
17407
17407
|
"External inference claim request was not applied before its generation became stale"
|
|
17408
17408
|
) || errorText.includes("External inference host advertisement is expired or superseded"));
|
|
17409
17409
|
const retryableInfrastructureRejection = EXTERNAL_INFERENCE_AUTOMATED_HOST_TOOLS.includes(name) && (errorText.includes("External inference polling is at its configured concurrency limit") || errorText.includes("The Insights action reached the response timeout") || errorText.includes("Insights capability failed without exposing private runtime details"));
|
|
17410
17410
|
const retryableClaimRejection = name === "inference.job.claim" && !definitivelyNotApplied && (retryableInfrastructureRejection || errorText.includes("External inference host is not live enough to claim work") || errorText.includes("External inference host request generation is stale"));
|
|
17411
|
+
const retryableHeartbeatClockSkew = name === "inference.host.heartbeat" && definitivelyNotApplied;
|
|
17412
|
+
const retryableAdvertisementClockSkew = (name === "inference.host.register" || name === "inference.host.advertise") && definitivelyNotApplied;
|
|
17411
17413
|
throw new ExternalInferenceMcpError(
|
|
17412
17414
|
"tool_rejected",
|
|
17413
17415
|
`Insights MCP rejected ${name}.`,
|
|
@@ -17417,7 +17419,7 @@ var init_mcp_client = __esm({
|
|
|
17417
17419
|
// API rotation the MCP server can return a tool error after the
|
|
17418
17420
|
// request reached the application boundary, so retain and replay
|
|
17419
17421
|
// the exact request unless the server proves it was not applied.
|
|
17420
|
-
retryable: retryableInfrastructureRejection || retryableClaimRejection
|
|
17422
|
+
retryable: retryableInfrastructureRejection || retryableClaimRejection || retryableHeartbeatClockSkew || retryableAdvertisementClockSkew
|
|
17421
17423
|
}
|
|
17422
17424
|
);
|
|
17423
17425
|
}
|
|
@@ -28420,7 +28422,7 @@ var init_runner = __esm({
|
|
|
28420
28422
|
return await operation();
|
|
28421
28423
|
} catch (error48) {
|
|
28422
28424
|
lastError = error48;
|
|
28423
|
-
if (!retryableRemoteError(error48) || attempt === settings.remoteRetryLimit) throw error48;
|
|
28425
|
+
if (!retryableRemoteError(error48) || error48 instanceof ExternalInferenceMcpError && error48.definitivelyNotApplied || attempt === settings.remoteRetryLimit) throw error48;
|
|
28424
28426
|
const requestedRetryDelay = remoteRetryAfterMs(
|
|
28425
28427
|
error48,
|
|
28426
28428
|
Math.min(250 * attempt, 1e3)
|
|
@@ -28521,7 +28523,7 @@ var init_runner = __esm({
|
|
|
28521
28523
|
}
|
|
28522
28524
|
const hostHeartbeat = async (status, requestOptions = {
|
|
28523
28525
|
signal: this.options.signal
|
|
28524
|
-
}, retryRemote = true, allowOfflineProjection = false) => {
|
|
28526
|
+
}, retryRemote = true, allowOfflineProjection = false, definitiveReseedAttempt = 0) => {
|
|
28525
28527
|
const sequence = receipt.host_heartbeat_sequence + 1;
|
|
28526
28528
|
const request = {
|
|
28527
28529
|
schema_version: "external_inference_host_heartbeat_v1",
|
|
@@ -28547,7 +28549,22 @@ var init_runner = __esm({
|
|
|
28547
28549
|
request,
|
|
28548
28550
|
requestOptions
|
|
28549
28551
|
);
|
|
28550
|
-
|
|
28552
|
+
let result2;
|
|
28553
|
+
try {
|
|
28554
|
+
result2 = status === "draining" || !retryRemote ? await heartbeatOperation() : await retryExact(heartbeatOperation, requestOptions);
|
|
28555
|
+
} catch (error48) {
|
|
28556
|
+
if (status !== "draining" && retryRemote && error48 instanceof ExternalInferenceMcpError && error48.definitivelyNotApplied && error48.retryable && definitiveReseedAttempt < settings.remoteRetryLimit - 1) {
|
|
28557
|
+
await sleep4(remoteRetryAfterMs(error48, MIN_SLEEP_MS), requestOptions.signal);
|
|
28558
|
+
return await hostHeartbeat(
|
|
28559
|
+
status,
|
|
28560
|
+
requestOptions,
|
|
28561
|
+
retryRemote,
|
|
28562
|
+
allowOfflineProjection,
|
|
28563
|
+
definitiveReseedAttempt + 1
|
|
28564
|
+
);
|
|
28565
|
+
}
|
|
28566
|
+
throw error48;
|
|
28567
|
+
}
|
|
28551
28568
|
assertHostHeartbeatResult(request, result2, allowOfflineProjection);
|
|
28552
28569
|
if (result2.host.status === "revoked" || result2.host.status === "offline" && !allowOfflineProjection) {
|
|
28553
28570
|
const error48 = new InferenceHostRunnerError(
|