@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.
- package/bin/exo-harness.ts +4 -1
- package/bin/vtx-mcp.js +5 -2
- package/bin/vtx-service-bootstrap.js +33 -14
- package/bin/vtx-service-launcher.js +4 -1
- package/bin/vtx.js +56 -8
- package/package.json +1 -1
package/bin/exo-harness.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
|
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 (
|
|
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
|
|
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
|
|
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.
|
|
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") ||
|
|
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
|
-
|
|
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 {
|