@vtxmacro/cli 2026.10.28 → 2026.10.30

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.
@@ -991,6 +991,7 @@ var runtime_policy_generated_default = {
991
991
  oauth_login_timeout_ms: 6e5,
992
992
  mcp_request_timeout_ms: 15e3,
993
993
  mcp_retry_after_max_ms: 864e5,
994
+ mcp_rejection_reason_max_chars: 300,
994
995
  credential_command_timeout_ms: 15e3,
995
996
  credential_command_termination_timeout_ms: 5e3,
996
997
  credential_command_output_max_bytes: 1048576,
@@ -1027,6 +1028,7 @@ var runtime_policy_generated_default = {
1027
1028
  advertisement_ttl_ms: 12e4,
1028
1029
  advertisement_refresh_lead_ms: 3e4,
1029
1030
  host_heartbeat_interval_ms: 3e3,
1031
+ heartbeat_field_recheck_interval_ms: 6e4,
1030
1032
  attempt_heartbeat_interval_ms: 3e3,
1031
1033
  agent_heartbeat_interval_ms: 3e3,
1032
1034
  agent_heartbeat_max_retry_delay_ms: 9e3,
@@ -1302,7 +1304,8 @@ var runtime_policy_generated_default = {
1302
1304
  running_report_interval_seconds: 5,
1303
1305
  page_start_wait_seconds: 45,
1304
1306
  page_start_poll_seconds: 1,
1305
- profiles_read_timeout_seconds: 30
1307
+ profiles_read_timeout_seconds: 30,
1308
+ command_notice_reconnect_max_seconds: 60
1306
1309
  }
1307
1310
  },
1308
1311
  websocket: {
package/bin/vtx-mcp.js CHANGED
@@ -37,7 +37,7 @@ var init_define_VTX_PI_MODEL_POLICY = __esm({
37
37
  var agent_cli_release_default;
38
38
  var init_agent_cli_release = __esm({
39
39
  "agent-cli-release.json"() {
40
- agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.28", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
40
+ agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.30", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
41
41
  }
42
42
  });
43
43
 
@@ -2228,6 +2228,7 @@ var runtime_policy_generated_default = {
2228
2228
  oauth_login_timeout_ms: 6e5,
2229
2229
  mcp_request_timeout_ms: 15e3,
2230
2230
  mcp_retry_after_max_ms: 864e5,
2231
+ mcp_rejection_reason_max_chars: 300,
2231
2232
  credential_command_timeout_ms: 15e3,
2232
2233
  credential_command_termination_timeout_ms: 5e3,
2233
2234
  credential_command_output_max_bytes: 1048576,
@@ -2264,6 +2265,7 @@ var runtime_policy_generated_default = {
2264
2265
  advertisement_ttl_ms: 12e4,
2265
2266
  advertisement_refresh_lead_ms: 3e4,
2266
2267
  host_heartbeat_interval_ms: 3e3,
2268
+ heartbeat_field_recheck_interval_ms: 6e4,
2267
2269
  attempt_heartbeat_interval_ms: 3e3,
2268
2270
  agent_heartbeat_interval_ms: 3e3,
2269
2271
  agent_heartbeat_max_retry_delay_ms: 9e3,
@@ -2539,7 +2541,8 @@ var runtime_policy_generated_default = {
2539
2541
  running_report_interval_seconds: 5,
2540
2542
  page_start_wait_seconds: 45,
2541
2543
  page_start_poll_seconds: 1,
2542
- profiles_read_timeout_seconds: 30
2544
+ profiles_read_timeout_seconds: 30,
2545
+ command_notice_reconnect_max_seconds: 60
2543
2546
  }
2544
2547
  },
2545
2548
  websocket: {
@@ -14,7 +14,7 @@ import { dirname as dirname4, relative as relative4, resolve as resolve4 } from
14
14
  import { fileURLToPath } from "node:url";
15
15
 
16
16
  // agent-cli-release.json
17
- var agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.28", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
17
+ var agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.30", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
18
18
 
19
19
  // lib/runtime-policy.generated.json
20
20
  var runtime_policy_generated_default = {
@@ -935,6 +935,7 @@ var runtime_policy_generated_default = {
935
935
  oauth_login_timeout_ms: 6e5,
936
936
  mcp_request_timeout_ms: 15e3,
937
937
  mcp_retry_after_max_ms: 864e5,
938
+ mcp_rejection_reason_max_chars: 300,
938
939
  credential_command_timeout_ms: 15e3,
939
940
  credential_command_termination_timeout_ms: 5e3,
940
941
  credential_command_output_max_bytes: 1048576,
@@ -971,6 +972,7 @@ var runtime_policy_generated_default = {
971
972
  advertisement_ttl_ms: 12e4,
972
973
  advertisement_refresh_lead_ms: 3e4,
973
974
  host_heartbeat_interval_ms: 3e3,
975
+ heartbeat_field_recheck_interval_ms: 6e4,
974
976
  attempt_heartbeat_interval_ms: 3e3,
975
977
  agent_heartbeat_interval_ms: 3e3,
976
978
  agent_heartbeat_max_retry_delay_ms: 9e3,
@@ -1246,7 +1248,8 @@ var runtime_policy_generated_default = {
1246
1248
  running_report_interval_seconds: 5,
1247
1249
  page_start_wait_seconds: 45,
1248
1250
  page_start_poll_seconds: 1,
1249
- profiles_read_timeout_seconds: 30
1251
+ profiles_read_timeout_seconds: 30,
1252
+ command_notice_reconnect_max_seconds: 60
1250
1253
  }
1251
1254
  },
1252
1255
  websocket: {
@@ -3089,6 +3092,18 @@ var runInferenceHostServiceBootstrap = async (manifestPathValue, dependencies =
3089
3092
  return { active, candidate: null };
3090
3093
  }
3091
3094
  };
3095
+ let privateReleasesQueue = Promise.resolve();
3096
+ const withPrivateReleases = (work) => {
3097
+ const run = privateReleasesQueue.then(work);
3098
+ privateReleasesQueue = run.catch(() => void 0);
3099
+ return run;
3100
+ };
3101
+ let stagedCandidate = null;
3102
+ const checkAndStage = async () => {
3103
+ const plan = await checkUpdate();
3104
+ stagedCandidate = plan.candidate;
3105
+ return plan;
3106
+ };
3092
3107
  let launchedAt = now().toISOString();
3093
3108
  const launch = async (selection) => {
3094
3109
  manifest = parseManifest(JSON.parse(await readFile4(manifestPath, "utf8")));
@@ -3109,19 +3124,12 @@ var runInferenceHostServiceBootstrap = async (manifestPathValue, dependencies =
3109
3124
  const candidate = { ...plan.candidate, selected_at: now().toISOString() };
3110
3125
  await atomicWriteSelection(manifestPath, candidate);
3111
3126
  await rm4(rejectionPathFor(manifestPath), { force: true }).catch(() => void 0);
3112
- await prunePrivateReleases(manifestPath, [candidate, plan.active]).catch(
3113
- async () => await appendBootstrapLog(
3114
- manifest.log_path,
3115
- "service_release_cleanup_deferred",
3116
- { package_version: candidate.package_version }
3117
- ).catch(() => void 0)
3118
- );
3119
3127
  await appendBootstrapLog(manifest.log_path, "service_release_handoff", {
3120
3128
  package_version: candidate.package_version
3121
3129
  }).catch(() => void 0);
3122
3130
  return EXIT_CODE_TEMPFAIL;
3123
3131
  };
3124
- let updatePlan = await checkUpdate();
3132
+ let updatePlan = await withPrivateReleases(checkAndStage);
3125
3133
  while (await shouldRun()) {
3126
3134
  if (updatePlan.candidate && launcherProtocol) return await handOffToLauncher(updatePlan);
3127
3135
  if (updatePlan.candidate) {
@@ -3206,7 +3214,7 @@ var runInferenceHostServiceBootstrap = async (manifestPathValue, dependencies =
3206
3214
  }
3207
3215
  const supervisor = live.supervisor ?? await launch(updatePlan.active);
3208
3216
  if (!supervisor) return 0;
3209
- if (process.env.VTX_INFERENCE_HOST_LAUNCHER_PROTOCOL === "1" && process.send) {
3217
+ if (launcherProtocol) {
3210
3218
  const readiness = new AbortController();
3211
3219
  const cancel = () => readiness.abort();
3212
3220
  lifetime.signal.addEventListener("abort", cancel, { once: true });
@@ -3219,8 +3227,19 @@ var runInferenceHostServiceBootstrap = async (manifestPathValue, dependencies =
3219
3227
  script: manifest.script
3220
3228
  },
3221
3229
  selected_at: launchedAt
3222
- }, readiness.signal, dependencies.readinessTimeoutMs ?? CANDIDATE_READINESS_TIMEOUT_MS).then((status) => {
3223
- if (status === "ready" && process.connected) process.send?.({ type: "vtx-inference-host-bootstrap-ready-v1", package_version: agent_cli_release_default.package_version }, () => void 0);
3230
+ }, readiness.signal, dependencies.readinessTimeoutMs ?? CANDIDATE_READINESS_TIMEOUT_MS).then(async (status) => {
3231
+ if (status !== "ready") return;
3232
+ if (process.connected) process.send?.({ type: "vtx-inference-host-bootstrap-ready-v1", package_version: agent_cli_release_default.package_version }, () => void 0);
3233
+ await withPrivateReleases(async () => await prunePrivateReleases(
3234
+ manifestPath,
3235
+ [updatePlan.active, stagedCandidate]
3236
+ )).catch(
3237
+ async () => await appendBootstrapLog(
3238
+ manifest.log_path,
3239
+ "service_release_cleanup_deferred",
3240
+ { package_version: agent_cli_release_default.package_version }
3241
+ ).catch(() => void 0)
3242
+ );
3224
3243
  }).catch(() => void 0).finally(() => lifetime.signal.removeEventListener("abort", cancel));
3225
3244
  void supervisor.completion.finally(cancel).catch(() => void 0);
3226
3245
  }
@@ -3260,7 +3279,7 @@ var runInferenceHostServiceBootstrap = async (manifestPathValue, dependencies =
3260
3279
  supervisor.requestDrain();
3261
3280
  return await completion;
3262
3281
  }
3263
- const next = await checkUpdate();
3282
+ const next = await withPrivateReleases(checkAndStage);
3264
3283
  if (exited) {
3265
3284
  live.supervisor = null;
3266
3285
  return await completion;
@@ -919,6 +919,7 @@ var runtime_policy_generated_default = {
919
919
  oauth_login_timeout_ms: 6e5,
920
920
  mcp_request_timeout_ms: 15e3,
921
921
  mcp_retry_after_max_ms: 864e5,
922
+ mcp_rejection_reason_max_chars: 300,
922
923
  credential_command_timeout_ms: 15e3,
923
924
  credential_command_termination_timeout_ms: 5e3,
924
925
  credential_command_output_max_bytes: 1048576,
@@ -955,6 +956,7 @@ var runtime_policy_generated_default = {
955
956
  advertisement_ttl_ms: 12e4,
956
957
  advertisement_refresh_lead_ms: 3e4,
957
958
  host_heartbeat_interval_ms: 3e3,
959
+ heartbeat_field_recheck_interval_ms: 6e4,
958
960
  attempt_heartbeat_interval_ms: 3e3,
959
961
  agent_heartbeat_interval_ms: 3e3,
960
962
  agent_heartbeat_max_retry_delay_ms: 9e3,
@@ -1230,7 +1232,8 @@ var runtime_policy_generated_default = {
1230
1232
  running_report_interval_seconds: 5,
1231
1233
  page_start_wait_seconds: 45,
1232
1234
  page_start_poll_seconds: 1,
1233
- profiles_read_timeout_seconds: 30
1235
+ profiles_read_timeout_seconds: 30,
1236
+ command_notice_reconnect_max_seconds: 60
1234
1237
  }
1235
1238
  },
1236
1239
  websocket: {
package/bin/vtx.js CHANGED
@@ -113,7 +113,7 @@ var init_routing = __esm({
113
113
  var agent_cli_release_default;
114
114
  var init_agent_cli_release = __esm({
115
115
  "agent-cli-release.json"() {
116
- agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.28", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
116
+ agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.30", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
117
117
  }
118
118
  });
119
119
 
@@ -1039,6 +1039,7 @@ var init_runtime_policy_generated = __esm({
1039
1039
  oauth_login_timeout_ms: 6e5,
1040
1040
  mcp_request_timeout_ms: 15e3,
1041
1041
  mcp_retry_after_max_ms: 864e5,
1042
+ mcp_rejection_reason_max_chars: 300,
1042
1043
  credential_command_timeout_ms: 15e3,
1043
1044
  credential_command_termination_timeout_ms: 5e3,
1044
1045
  credential_command_output_max_bytes: 1048576,
@@ -1075,6 +1076,7 @@ var init_runtime_policy_generated = __esm({
1075
1076
  advertisement_ttl_ms: 12e4,
1076
1077
  advertisement_refresh_lead_ms: 3e4,
1077
1078
  host_heartbeat_interval_ms: 3e3,
1079
+ heartbeat_field_recheck_interval_ms: 6e4,
1078
1080
  attempt_heartbeat_interval_ms: 3e3,
1079
1081
  agent_heartbeat_interval_ms: 3e3,
1080
1082
  agent_heartbeat_max_retry_delay_ms: 9e3,
@@ -1350,7 +1352,8 @@ var init_runtime_policy_generated = __esm({
1350
1352
  running_report_interval_seconds: 5,
1351
1353
  page_start_wait_seconds: 45,
1352
1354
  page_start_poll_seconds: 1,
1353
- profiles_read_timeout_seconds: 30
1355
+ profiles_read_timeout_seconds: 30,
1356
+ command_notice_reconnect_max_seconds: 60
1354
1357
  }
1355
1358
  },
1356
1359
  websocket: {
@@ -20866,6 +20869,7 @@ var init_runtime_policy_generated2 = __esm({
20866
20869
  oauth_login_timeout_ms: 6e5,
20867
20870
  mcp_request_timeout_ms: 15e3,
20868
20871
  mcp_retry_after_max_ms: 864e5,
20872
+ mcp_rejection_reason_max_chars: 300,
20869
20873
  credential_command_timeout_ms: 15e3,
20870
20874
  credential_command_termination_timeout_ms: 5e3,
20871
20875
  credential_command_output_max_bytes: 1048576,
@@ -20902,6 +20906,7 @@ var init_runtime_policy_generated2 = __esm({
20902
20906
  advertisement_ttl_ms: 12e4,
20903
20907
  advertisement_refresh_lead_ms: 3e4,
20904
20908
  host_heartbeat_interval_ms: 3e3,
20909
+ heartbeat_field_recheck_interval_ms: 6e4,
20905
20910
  attempt_heartbeat_interval_ms: 3e3,
20906
20911
  agent_heartbeat_interval_ms: 3e3,
20907
20912
  agent_heartbeat_max_retry_delay_ms: 9e3,
@@ -21177,7 +21182,8 @@ var init_runtime_policy_generated2 = __esm({
21177
21182
  running_report_interval_seconds: 5,
21178
21183
  page_start_wait_seconds: 45,
21179
21184
  page_start_poll_seconds: 1,
21180
- profiles_read_timeout_seconds: 30
21185
+ profiles_read_timeout_seconds: 30,
21186
+ command_notice_reconnect_max_seconds: 60
21181
21187
  }
21182
21188
  },
21183
21189
  websocket: {
@@ -25100,7 +25106,7 @@ var init_mcp_transport = __esm({
25100
25106
  });
25101
25107
 
25102
25108
  // lib/inference-host/mcp-client.ts
25103
- var EXTERNAL_INFERENCE_MCP_PROTOCOL_VERSION, EXTERNAL_INFERENCE_AUTOMATED_HOST_TOOLS, EXTERNAL_INFERENCE_OPERATIONAL_TOOLS, ClaimTiming, ExternalInferenceMcpError, DEFAULT_REQUEST_TIMEOUT_MS, MAX_RETRY_AFTER_MS, SSE_DATA_FIELD_PREFIX, PUBLIC_TOOL_ERROR_PREFIX, parseRetryAfterMs, identifierSchema2, safeCodeSchema2, publicFailureCodeSchema, publicToolErrorSchema, structuredPublicToolErrorSchema, parsePublicToolError, hostMutationResultSchema, attemptStartResultSchema, agentConnectResultSchema, agentHeartbeatResultSchema, timestampSchema2, positiveGenerationSchema, jsonObjectSchema, agentAssignmentNextArgumentsSchema, agentDataCapabilityDescriptorSchema, agentAssignmentNextResultSchema, agentAssignmentHeartbeatArgumentsSchema, agentAssignmentHeartbeatResultSchema, agentDataCallArgumentsSchema, agentDataCallResultSchema, agentDecisionTimingSchema, agentDecisionSubmitArgumentsSchema, agentDecisionSubmitResultSchema, agentDecisionStatusArgumentsSchema, agentDecisionStatusResultSchema, agentAssignmentReleaseArgumentsSchema, agentAssignmentReleaseResultSchema, jobCompletionResultSchema, jobFailureResultSchema, toolContracts, discoveryResultSchema, toolListResultSchema, inlineStructuredContentSchema, protocolMeta, parseJsonDocument, parseSseDocuments, parseResponseDocuments, exactOperationalInventory, exactJson, invalidBoundResult, verifyToolResult, ExternalInferenceMcpClient;
25109
+ var EXTERNAL_INFERENCE_MCP_PROTOCOL_VERSION, EXTERNAL_INFERENCE_AUTOMATED_HOST_TOOLS, EXTERNAL_INFERENCE_OPERATIONAL_TOOLS, ClaimTiming, ExternalInferenceMcpError, DEFAULT_REQUEST_TIMEOUT_MS, MAX_RETRY_AFTER_MS, SSE_DATA_FIELD_PREFIX, PUBLIC_TOOL_ERROR_PREFIX, parseRetryAfterMs, identifierSchema2, safeCodeSchema2, publicFailureCodeSchema, publicToolErrorSchema, structuredPublicToolErrorSchema, MAX_REJECTION_REASON_CHARS, CONTROL_CHARACTERS, publicRejectionReason, parsePublicToolError, hostMutationResultSchema, attemptStartResultSchema, agentConnectResultSchema, agentHeartbeatResultSchema, timestampSchema2, positiveGenerationSchema, jsonObjectSchema, agentAssignmentNextArgumentsSchema, agentDataCapabilityDescriptorSchema, agentAssignmentNextResultSchema, agentAssignmentHeartbeatArgumentsSchema, agentAssignmentHeartbeatResultSchema, agentDataCallArgumentsSchema, agentDataCallResultSchema, agentDecisionTimingSchema, agentDecisionSubmitArgumentsSchema, agentDecisionSubmitResultSchema, agentDecisionStatusArgumentsSchema, agentDecisionStatusResultSchema, agentAssignmentReleaseArgumentsSchema, agentAssignmentReleaseResultSchema, jobCompletionResultSchema, jobFailureResultSchema, toolContracts, discoveryResultSchema, toolListResultSchema, inlineStructuredContentSchema, protocolMeta, parseJsonDocument, parseSseDocuments, parseResponseDocuments, exactOperationalInventory, exactJson, invalidBoundResult, verifyToolResult, ExternalInferenceMcpClient;
25104
25110
  var init_mcp_client = __esm({
25105
25111
  "lib/inference-host/mcp-client.ts"() {
25106
25112
  "use strict";
@@ -25286,6 +25292,15 @@ var init_mcp_client = __esm({
25286
25292
  structuredPublicToolErrorSchema = publicToolErrorSchema.extend({
25287
25293
  schema_version: external_exports.literal("vtx_insights_tool_error_v1")
25288
25294
  });
25295
+ MAX_REJECTION_REASON_CHARS = runtime_policy_generated_default2.external_inference.host_core.mcp_rejection_reason_max_chars;
25296
+ CONTROL_CHARACTERS = /[\u0000-\u001f\u007f]/gu;
25297
+ publicRejectionReason = (text) => {
25298
+ const marker = text.indexOf(PUBLIC_TOOL_ERROR_PREFIX);
25299
+ const [firstLine = ""] = (marker < 0 ? text : text.slice(0, marker)).split("\n");
25300
+ const reason = firstLine.replace(CONTROL_CHARACTERS, " ").trim();
25301
+ if (!reason) return null;
25302
+ return reason.length > MAX_REJECTION_REASON_CHARS ? `${reason.slice(0, MAX_REJECTION_REASON_CHARS)}\u2026` : reason;
25303
+ };
25289
25304
  parsePublicToolError = (text) => {
25290
25305
  const marker = text.lastIndexOf(PUBLIC_TOOL_ERROR_PREFIX);
25291
25306
  if (marker < 0) return null;
@@ -25847,6 +25862,15 @@ var init_mcp_client = __esm({
25847
25862
  supportsClaimTransportFailureReports() {
25848
25863
  return this.#claimTransportFailureReportsSupported;
25849
25864
  }
25865
+ async refreshClaimTransportFailureReportSupport(options = {}) {
25866
+ if (this.supportsClaimTransportFailureReports()) return true;
25867
+ try {
25868
+ await this.initialize(options);
25869
+ } catch {
25870
+ return false;
25871
+ }
25872
+ return this.supportsClaimTransportFailureReports();
25873
+ }
25850
25874
  supportsProviderQuotaCooldown() {
25851
25875
  return this.#providerQuotaCooldownSupported;
25852
25876
  }
@@ -26050,7 +26074,8 @@ var init_mcp_client = __esm({
26050
26074
  const hasPublicToolErrorMarker = hasStructuredPublicToolErrorMarker || errorText2.includes(PUBLIC_TOOL_ERROR_PREFIX);
26051
26075
  const completionEvidenceExpired = name === "inference.job.complete" && (publicToolError ? publicToolError.failure_code === "completion_evidence_expired" && publicToolError.phase === "validation" && publicToolError.retryable === false && publicToolError.terminal_before_execution === true : !hasPublicToolErrorMarker && errorText2.includes("External inference completion evidence window expired"));
26052
26076
  const hostNotClaimable = name === "inference.job.claim" && publicToolError?.failure_code === "host_not_claimable" && publicToolError.phase === "admission" && publicToolError.retryable === true && publicToolError.terminal_before_execution === true;
26053
- const definitivelyNotApplied = (name === "inference.agent.decision.submit" || name === "inference.agent.data.call") && publicToolError?.phase === "validation" && publicToolError.retryable === false && publicToolError.terminal_before_execution === true && (name === "inference.agent.decision.submit" && publicToolError.failure_code === "agent_decision_schema_invalid" || publicToolError.failure_code === "invalid_arguments" && publicToolError.reason_code === "schema_validation") || (name === "inference.host.register" || name === "inference.host.advertise") && (errorText2.includes("Advertisement time is outside the allowed clock skew.") || errorText2.includes("Advertisement is already expired.")) || (name === "inference.agent.next" || name === "inference.agent.heartbeat") && (errorText2.includes("Advertisement time is outside the allowed clock skew.") || errorText2.includes("Advertisement is already expired.") || errorText2.includes("Heartbeat time is outside the allowed clock skew.")) || name === "inference.host.heartbeat" && errorText2.includes("Heartbeat time is outside the allowed clock skew.") || name === "inference.job.claim" && (errorText2.includes(
26077
+ const definitivelyNotApplied = (name === "inference.agent.decision.submit" || name === "inference.agent.data.call") && publicToolError?.phase === "validation" && publicToolError.retryable === false && publicToolError.terminal_before_execution === true && (name === "inference.agent.decision.submit" && publicToolError.failure_code === "agent_decision_schema_invalid" || publicToolError.failure_code === "invalid_arguments" && publicToolError.reason_code === "schema_validation") || // The server refused the result before recording it.
26078
+ name === "inference.agent.complete" && publicToolError?.failure_code === "result_contract_invalid" && publicToolError.phase === "validation" && publicToolError.retryable === false && publicToolError.terminal_before_execution === true || (name === "inference.host.register" || name === "inference.host.advertise") && (errorText2.includes("Advertisement time is outside the allowed clock skew.") || errorText2.includes("Advertisement is already expired.")) || (name === "inference.agent.next" || name === "inference.agent.heartbeat") && (errorText2.includes("Advertisement time is outside the allowed clock skew.") || errorText2.includes("Advertisement is already expired.") || errorText2.includes("Heartbeat time is outside the allowed clock skew.")) || name === "inference.host.heartbeat" && errorText2.includes("Heartbeat time is outside the allowed clock skew.") || name === "inference.job.claim" && (errorText2.includes(
26054
26079
  "External inference claim request was not applied before its generation became stale"
26055
26080
  ) || errorText2.includes("External inference host advertisement is expired or superseded")) || name === "inference.job.complete" && completionEvidenceExpired;
26056
26081
  const retryableInfrastructureRejection = EXTERNAL_INFERENCE_AUTOMATED_HOST_TOOLS.includes(name) && (errorText2.includes("External inference polling is at its configured concurrency limit") || errorText2.includes("The Insights action reached the response timeout") || errorText2.includes("Insights capability failed without exposing private runtime details"));
@@ -26058,12 +26083,13 @@ var init_mcp_client = __esm({
26058
26083
  const retryableHeartbeatClockSkew = name === "inference.host.heartbeat" && definitivelyNotApplied;
26059
26084
  const retryableAdvertisementClockSkew = (name === "inference.host.register" || name === "inference.host.advertise") && definitivelyNotApplied;
26060
26085
  const staleHostHeartbeatGeneration = name === "inference.host.heartbeat" && errorText2.includes("Heartbeat generations do not match the current host authority.");
26086
+ const rejectionReason = publicRejectionReason(errorText2);
26061
26087
  const obsoleteClaimReplay = name === "inference.job.claim" && errorText2.includes(
26062
26088
  "External inference claim replay is no longer dispatchable"
26063
26089
  );
26064
26090
  throw new ExternalInferenceMcpError(
26065
26091
  completionEvidenceExpired ? "completion_evidence_expired" : staleHostHeartbeatGeneration ? "generation_stale" : obsoleteClaimReplay ? "claim_replay_obsolete" : "tool_rejected",
26066
- `Insights MCP rejected ${name}.`,
26092
+ rejectionReason ? `Insights MCP rejected ${name}: ${rejectionReason}` : `Insights MCP rejected ${name}.`,
26067
26093
  {
26068
26094
  definitivelyNotApplied: definitivelyNotApplied || staleHostHeartbeatGeneration,
26069
26095
  // Claim polling is an idempotent control-plane operation. During an
@@ -37280,6 +37306,8 @@ var init_runner = __esm({
37280
37306
  }
37281
37307
  };
37282
37308
  let nextHostHeartbeatAt = now() + settings.hostHeartbeatMs;
37309
+ let nextClaimReportSupportCheckAt = now();
37310
+ let claimReportSupportCheck = null;
37283
37311
  hostHeartbeatLoop = (async () => {
37284
37312
  while (!drainRequested && !hostHeartbeatAbort.signal.aborted) {
37285
37313
  try {
@@ -37307,6 +37335,14 @@ var init_runner = __esm({
37307
37335
  }
37308
37336
  }
37309
37337
  if (drainRequested || hostHeartbeatAbort.signal.aborted) return;
37338
+ if (claimReportSupportCheck === null && mcp.supportsClaimTransportFailureReports?.() === false && claimFailures.some((record5) => record5.resolution !== void 0) && now() >= nextClaimReportSupportCheckAt) {
37339
+ nextClaimReportSupportCheckAt = now() + HOST_RUNTIME_POLICY2.heartbeat_field_recheck_interval_ms;
37340
+ claimReportSupportCheck = Promise.resolve(
37341
+ mcp.refreshClaimTransportFailureReportSupport?.({ signal: hostHeartbeatAbort.signal })
37342
+ ).catch(() => false).finally(() => {
37343
+ claimReportSupportCheck = null;
37344
+ });
37345
+ }
37310
37346
  const heartbeatDeadlineAtMs = Date.now() + settings.hostHeartbeatMs;
37311
37347
  const attemptedAdvertisementGeneration = receipt.advertisement_generation;
37312
37348
  try {
@@ -51777,7 +51813,7 @@ Waiting for approval...
51777
51813
  Math.floor(Date.parse(localDispatchDeadline) - now().getTime())
51778
51814
  )
51779
51815
  },
51780
- instructions: "Treat system_prompt and user_prompt as separate VTX-delivered roles. Use context_json and satisfy output_schema_json exactly. Send only the final result through agent-complete stdin; do not execute trading tools yourself. For Server Provider jobs enforce both provider dispatch deadlines at actual provider entry and report the self-attested provider_dispatched_at timestamp. If the budget expires before dispatch, use agent-fail with not_dispatched.",
51816
+ instructions: "Treat system_prompt and user_prompt as separate VTX-delivered roles. Use context_json and satisfy output_schema_json exactly. Send only the final result through agent-complete stdin; do not execute trading tools yourself. Its result field is a JSON string that satisfies output_schema_json itself: for provider_response jobs that is the provider response envelope, with the model output ($defs.model_output) as the JSON text of response_text. For Server Provider jobs enforce both provider dispatch deadlines at actual provider entry and report the self-attested provider_dispatched_at timestamp. If the budget expires before dispatch, use agent-fail with not_dispatched.",
51781
51817
  complete_command: "vtx inference-host agent-complete --json",
51782
51818
  fail_command: "vtx inference-host agent-fail --json"
51783
51819
  }, parsed.json),
@@ -51817,6 +51853,7 @@ Waiting for approval...
51817
51853
  if (state2.pending_terminal.kind !== "complete") {
51818
51854
  throw new Error("The active attempt already has a pending failure request. Retry agent-fail.");
51819
51855
  }
51856
+ warnings.push("Resending the stored completion whose outcome is unconfirmed; new input was not read.");
51820
51857
  request = state2.pending_terminal.request;
51821
51858
  } else {
51822
51859
  const input = await parseAgentStdin(dependencies, [
@@ -51875,7 +51912,18 @@ Waiting for approval...
51875
51912
  pending_terminal: { kind: "complete", request }
51876
51913
  });
51877
51914
  }
51878
- const result = await session.client.callTool("inference.agent.complete", request);
51915
+ let result;
51916
+ try {
51917
+ result = await session.client.callTool("inference.agent.complete", request);
51918
+ } catch (error48) {
51919
+ if (error48 instanceof ExternalInferenceMcpError && error48.definitivelyNotApplied) {
51920
+ await writeInferenceAgentAttemptState(config2.statePath, {
51921
+ ...state2,
51922
+ pending_terminal: null
51923
+ });
51924
+ }
51925
+ throw error48;
51926
+ }
51879
51927
  await clearInferenceAgentNextState(config2.statePath);
51880
51928
  await clearInferenceAgentAttemptState(config2.statePath);
51881
51929
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vtxmacro/cli",
3
- "version": "2026.10.28",
3
+ "version": "2026.10.30",
4
4
  "description": "VTX Macro CLI, MCP server, and durable external inference host.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",