@vtxmacro/cli 2026.9.49 → 2026.9.51
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-service-bootstrap.js +1 -1
- package/bin/vtx.js +105 -18
- package/package.json +2 -1
|
@@ -16,7 +16,7 @@ import { fileURLToPath } from "node:url";
|
|
|
16
16
|
// agent-cli-release.json
|
|
17
17
|
var agent_cli_release_default = {
|
|
18
18
|
package_name: "@vtxmacro/cli",
|
|
19
|
-
package_version: "2026.9.
|
|
19
|
+
package_version: "2026.9.51",
|
|
20
20
|
codex_package_name: "@openai/codex",
|
|
21
21
|
codex_version: "0.153.3",
|
|
22
22
|
copilot_sdk_package_name: "@github/copilot-sdk",
|
package/bin/vtx.js
CHANGED
|
@@ -77,7 +77,7 @@ var init_agent_cli_release = __esm({
|
|
|
77
77
|
"agent-cli-release.json"() {
|
|
78
78
|
agent_cli_release_default = {
|
|
79
79
|
package_name: "@vtxmacro/cli",
|
|
80
|
-
package_version: "2026.9.
|
|
80
|
+
package_version: "2026.9.51",
|
|
81
81
|
codex_package_name: "@openai/codex",
|
|
82
82
|
codex_version: "0.153.3",
|
|
83
83
|
copilot_sdk_package_name: "@github/copilot-sdk",
|
|
@@ -17580,13 +17580,34 @@ var init_dist = __esm({
|
|
|
17580
17580
|
}
|
|
17581
17581
|
});
|
|
17582
17582
|
|
|
17583
|
+
// lib/inference-host/mcp-transport-config.ts
|
|
17584
|
+
import { isIP } from "node:net";
|
|
17585
|
+
import { isAbsolute, win32 } from "node:path";
|
|
17586
|
+
function resolveInferenceMcpDirectTransport(env) {
|
|
17587
|
+
const address = String(env.VTX_INFERENCE_HOST_MCP_CONNECT_ADDRESS || "").trim();
|
|
17588
|
+
const caFile = String(env.VTX_INFERENCE_HOST_MCP_CA_FILE || "").trim();
|
|
17589
|
+
if (!address && !caFile) return void 0;
|
|
17590
|
+
if (!isIP(address) || !caFile || /[\r\n\0]/u.test(caFile) || !isAbsolute(caFile) && !win32.isAbsolute(caFile)) {
|
|
17591
|
+
throw new Error("Direct inference MCP transport requires an IP address and an absolute CA file path.");
|
|
17592
|
+
}
|
|
17593
|
+
return { address, caFile };
|
|
17594
|
+
}
|
|
17595
|
+
var init_mcp_transport_config = __esm({
|
|
17596
|
+
"lib/inference-host/mcp-transport-config.ts"() {
|
|
17597
|
+
"use strict";
|
|
17598
|
+
init_define_VTX_EXO_POLICY();
|
|
17599
|
+
init_define_VTX_GROK_POLICY();
|
|
17600
|
+
init_define_VTX_PI_MODEL_POLICY();
|
|
17601
|
+
}
|
|
17602
|
+
});
|
|
17603
|
+
|
|
17583
17604
|
// lib/inference-host/config.ts
|
|
17584
17605
|
import { randomBytes } from "node:crypto";
|
|
17585
17606
|
import { spawn } from "node:child_process";
|
|
17586
17607
|
import { constants } from "node:fs";
|
|
17587
17608
|
import { lstat, mkdir, open, readFile, realpath, rename, rm } from "node:fs/promises";
|
|
17588
17609
|
import { homedir } from "node:os";
|
|
17589
|
-
import { dirname, isAbsolute, join, relative, resolve, win32 as windowsPath } from "node:path";
|
|
17610
|
+
import { dirname, isAbsolute as isAbsolute2, join, relative, resolve, win32 as windowsPath } from "node:path";
|
|
17590
17611
|
function inferenceBaseDir(env) {
|
|
17591
17612
|
const configured = String(env.VTX_INFERENCE_HOST_HOME || "").trim();
|
|
17592
17613
|
return configured || join(homedir(), ".vtx", "inference-host");
|
|
@@ -17638,6 +17659,7 @@ function resolveInferenceHostConfig(env = process.env) {
|
|
|
17638
17659
|
);
|
|
17639
17660
|
return {
|
|
17640
17661
|
apiUrl: String(env.VTX_API_URL || "https://api.vtxmacro.com").replace(/\/+$/, ""),
|
|
17662
|
+
mcpDirectTransport: resolveInferenceMcpDirectTransport(env),
|
|
17641
17663
|
baseDir,
|
|
17642
17664
|
instanceName,
|
|
17643
17665
|
credentialStoreMode: rawMode,
|
|
@@ -18160,6 +18182,7 @@ var init_config = __esm({
|
|
|
18160
18182
|
init_define_VTX_GROK_POLICY();
|
|
18161
18183
|
init_define_VTX_PI_MODEL_POLICY();
|
|
18162
18184
|
init_dist();
|
|
18185
|
+
init_mcp_transport_config();
|
|
18163
18186
|
loadInferenceReceiptDurabilityTimeoutMs = async () => {
|
|
18164
18187
|
let configured;
|
|
18165
18188
|
if (true) {
|
|
@@ -18734,7 +18757,7 @@ while(($line=[Console]::In.ReadLine()) -ne $null) {
|
|
|
18734
18757
|
requireNamedInstancePath = (instanceName, instanceDir, rawPath, label) => {
|
|
18735
18758
|
if (!rawPath || instanceName === DEFAULT_INFERENCE_HOST_INSTANCE) return rawPath;
|
|
18736
18759
|
const relativePath = relative(resolve(instanceDir), resolve(rawPath));
|
|
18737
|
-
if (relativePath === ".." || relativePath.startsWith(`..${process.platform === "win32" ? "\\" : "/"}`) ||
|
|
18760
|
+
if (relativePath === ".." || relativePath.startsWith(`..${process.platform === "win32" ? "\\" : "/"}`) || isAbsolute2(relativePath)) {
|
|
18738
18761
|
throw new Error(`${label} for a named instance must stay inside its isolated instance directory.`);
|
|
18739
18762
|
}
|
|
18740
18763
|
return rawPath;
|
|
@@ -20609,6 +20632,53 @@ var init_runtime_policy_generated = __esm({
|
|
|
20609
20632
|
}
|
|
20610
20633
|
});
|
|
20611
20634
|
|
|
20635
|
+
// lib/inference-host/mcp-transport.ts
|
|
20636
|
+
import { readFileSync } from "node:fs";
|
|
20637
|
+
import { X509Certificate } from "node:crypto";
|
|
20638
|
+
import { isIP as isIP2 } from "node:net";
|
|
20639
|
+
import { Agent, fetch as undiciFetch } from "undici";
|
|
20640
|
+
function createInferenceMcpTransport(endpoint, direct, fetchImpl = fetch) {
|
|
20641
|
+
if (!direct) return { fetch: fetchImpl, route: "public", close: async () => void 0 };
|
|
20642
|
+
const canonical = new URL(endpoint);
|
|
20643
|
+
if (canonical.protocol !== "https:" || canonical.username || canonical.password || canonical.pathname !== "/insights/mcp" || canonical.search || canonical.hash || isIP2(canonical.hostname) || !isIP2(direct.address)) {
|
|
20644
|
+
throw new Error("Direct inference MCP transport requires a canonical HTTPS MCP hostname.");
|
|
20645
|
+
}
|
|
20646
|
+
const ca = readFileSync(direct.caFile, "utf8");
|
|
20647
|
+
new X509Certificate(ca);
|
|
20648
|
+
const agent = new Agent({
|
|
20649
|
+
connect: {
|
|
20650
|
+
ca,
|
|
20651
|
+
rejectUnauthorized: true,
|
|
20652
|
+
servername: canonical.hostname,
|
|
20653
|
+
lookup: (_hostname, options, callback) => {
|
|
20654
|
+
const address = { address: direct.address, family: isIP2(direct.address) };
|
|
20655
|
+
if (options.all) callback(null, [address]);
|
|
20656
|
+
else callback(null, address.address, address.family);
|
|
20657
|
+
}
|
|
20658
|
+
}
|
|
20659
|
+
});
|
|
20660
|
+
const dispatchFetch = fetchImpl === fetch ? undiciFetch : fetchImpl;
|
|
20661
|
+
const routedFetch = (input, init2) => {
|
|
20662
|
+
const url2 = new URL(input instanceof Request ? input.url : String(input));
|
|
20663
|
+
if (url2.href !== canonical.href) {
|
|
20664
|
+
return Promise.reject(new Error("Direct inference transport cannot send requests outside its MCP endpoint."));
|
|
20665
|
+
}
|
|
20666
|
+
return dispatchFetch(input, { ...init2, redirect: "error", dispatcher: agent });
|
|
20667
|
+
};
|
|
20668
|
+
return { fetch: routedFetch, route: "direct", close: async () => {
|
|
20669
|
+
await agent.destroy();
|
|
20670
|
+
} };
|
|
20671
|
+
}
|
|
20672
|
+
var init_mcp_transport = __esm({
|
|
20673
|
+
"lib/inference-host/mcp-transport.ts"() {
|
|
20674
|
+
"use strict";
|
|
20675
|
+
init_define_VTX_EXO_POLICY();
|
|
20676
|
+
init_define_VTX_GROK_POLICY();
|
|
20677
|
+
init_define_VTX_PI_MODEL_POLICY();
|
|
20678
|
+
init_mcp_transport_config();
|
|
20679
|
+
}
|
|
20680
|
+
});
|
|
20681
|
+
|
|
20612
20682
|
// lib/inference-host/mcp-client.ts
|
|
20613
20683
|
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, 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, agentDecisionSubmitArgumentsSchema, agentDecisionSubmitResultSchema, agentDecisionStatusArgumentsSchema, agentDecisionStatusResultSchema, agentAssignmentReleaseArgumentsSchema, agentAssignmentReleaseResultSchema, jobCompletionResultSchema, jobFailureResultSchema, toolContracts, discoveryResultSchema, toolListResultSchema, inlineStructuredContentSchema, protocolMeta, parseJsonDocument, parseSseDocuments, parseResponseDocuments, exactOperationalInventory, exactJson, invalidBoundResult, verifyToolResult, ExternalInferenceMcpClient;
|
|
20614
20684
|
var init_mcp_client = __esm({
|
|
@@ -20619,6 +20689,7 @@ var init_mcp_client = __esm({
|
|
|
20619
20689
|
init_define_VTX_PI_MODEL_POLICY();
|
|
20620
20690
|
init_zod();
|
|
20621
20691
|
init_runtime_policy_generated();
|
|
20692
|
+
init_mcp_transport();
|
|
20622
20693
|
init_external_inference_contract();
|
|
20623
20694
|
EXTERNAL_INFERENCE_MCP_PROTOCOL_VERSION = "2026-07-28";
|
|
20624
20695
|
EXTERNAL_INFERENCE_AUTOMATED_HOST_TOOLS = [
|
|
@@ -21282,6 +21353,7 @@ var init_mcp_client = __esm({
|
|
|
21282
21353
|
#endpoint;
|
|
21283
21354
|
#tokenSource;
|
|
21284
21355
|
#fetch;
|
|
21356
|
+
#transport;
|
|
21285
21357
|
#clientVersion;
|
|
21286
21358
|
#clientName;
|
|
21287
21359
|
#expectedTools;
|
|
@@ -21293,6 +21365,9 @@ var init_mcp_client = __esm({
|
|
|
21293
21365
|
#providerHttpStatusTools = /* @__PURE__ */ new Set();
|
|
21294
21366
|
#grokToolValidationTools = /* @__PURE__ */ new Set();
|
|
21295
21367
|
#grokResponseIdentityTools = /* @__PURE__ */ new Set();
|
|
21368
|
+
async close() {
|
|
21369
|
+
await this.#transport.close();
|
|
21370
|
+
}
|
|
21296
21371
|
supportsProviderHttpStatusDiagnostics(tool) {
|
|
21297
21372
|
return this.#providerHttpStatusTools.has(tool);
|
|
21298
21373
|
}
|
|
@@ -21345,7 +21420,8 @@ var init_mcp_client = __esm({
|
|
|
21345
21420
|
}
|
|
21346
21421
|
this.#endpoint = endpoint;
|
|
21347
21422
|
this.#tokenSource = options.tokenSource;
|
|
21348
|
-
this.#
|
|
21423
|
+
this.#transport = createInferenceMcpTransport(endpoint, options.directTransport, options.fetchImpl);
|
|
21424
|
+
this.#fetch = this.#transport.fetch;
|
|
21349
21425
|
this.#clientVersion = String(options.clientVersion || "development").trim() || "development";
|
|
21350
21426
|
this.#clientName = String(
|
|
21351
21427
|
options.clientName || "@vtxmacro/cli external inference host"
|
|
@@ -21508,7 +21584,7 @@ var init_mcp_client = __esm({
|
|
|
21508
21584
|
return result2;
|
|
21509
21585
|
} finally {
|
|
21510
21586
|
if (timing) {
|
|
21511
|
-
const receipt = timing.finish(outcome);
|
|
21587
|
+
const receipt = Object.freeze({ ...timing.finish(outcome), transport_route: this.#transport.route });
|
|
21512
21588
|
try {
|
|
21513
21589
|
void Promise.resolve(options.onClaimTiming?.(receipt)).catch(() => void 0);
|
|
21514
21590
|
} catch {
|
|
@@ -28103,7 +28179,7 @@ var require_ajv = __commonJS({
|
|
|
28103
28179
|
import { spawn as spawn3 } from "node:child_process";
|
|
28104
28180
|
import { chmod, lstat as lstat2, open as open2, readFile as readFile2, rename as rename2, rm as rm2, writeFile } from "node:fs/promises";
|
|
28105
28181
|
import { tmpdir } from "node:os";
|
|
28106
|
-
import { dirname as dirname2, isAbsolute as
|
|
28182
|
+
import { dirname as dirname2, isAbsolute as isAbsolute3, join as join2, resolve as resolve2, sep } from "node:path";
|
|
28107
28183
|
import { createInterface } from "node:readline";
|
|
28108
28184
|
async function loginCodexSubscription(options) {
|
|
28109
28185
|
const session = await CodexAppServerSession.start(options);
|
|
@@ -29732,7 +29808,7 @@ child.once('close', async (code, signal) => {
|
|
|
29732
29808
|
const resolvedHome = resolve2(this.codexHome);
|
|
29733
29809
|
const resolvedThreadPath = resolve2(threadPath);
|
|
29734
29810
|
const resolvedSessionsRoot = join2(resolvedHome, "sessions");
|
|
29735
|
-
if (!threadId || !threadPath || !
|
|
29811
|
+
if (!threadId || !threadPath || !isAbsolute3(threadPath) || !resolvedThreadPath.startsWith(`${resolvedSessionsRoot}${sep}`) || !resolvedThreadPath.endsWith(".jsonl") || thread?.ephemeral !== false || thread?.modelProvider !== "openai" || !Array.isArray(thread?.turns) || thread.turns.length !== 0 || result2.model !== options.requestedModel || result2.modelProvider !== "openai" || result2.serviceTier !== "default" || result2.reasoningEffort !== options.requestedReasoningEffort || String(result2.cwd || "") !== options.workspacePath || !Array.isArray(result2.runtimeWorkspaceRoots) || result2.runtimeWorkspaceRoots.length !== 0 || !Array.isArray(result2.instructionSources) || result2.instructionSources.length !== 0 || result2.approvalPolicy !== "never" || result2.approvalsReviewer !== "user" || sandbox?.type !== "readOnly" || sandbox.networkAccess !== false || permission?.id !== CODEX_INFERENCE_PERMISSION_PROFILE || permission.extends !== null) {
|
|
29736
29812
|
throw new CodexAppServerError({
|
|
29737
29813
|
message: "Codex thread isolation or effective settings were invalid.",
|
|
29738
29814
|
category: "adapter",
|
|
@@ -29818,7 +29894,7 @@ child.once('close', async (code, signal) => {
|
|
|
29818
29894
|
async resumeAgentThread(options) {
|
|
29819
29895
|
const expectedPath = resolve2(options.threadPath);
|
|
29820
29896
|
const sessionsRoot = join2(resolve2(this.codexHome), "sessions");
|
|
29821
|
-
if (!options.threadId.trim() || !
|
|
29897
|
+
if (!options.threadId.trim() || !isAbsolute3(options.threadPath) || !expectedPath.startsWith(`${sessionsRoot}${sep}`) || !expectedPath.endsWith(".jsonl")) {
|
|
29822
29898
|
throw new CodexAppServerError({
|
|
29823
29899
|
message: "Codex Agent durable thread receipt was invalid.",
|
|
29824
29900
|
category: "adapter",
|
|
@@ -29863,7 +29939,7 @@ child.once('close', async (code, signal) => {
|
|
|
29863
29939
|
const threadPath = String(thread?.path || "");
|
|
29864
29940
|
const resolvedThreadPath = resolve2(threadPath);
|
|
29865
29941
|
const sessionsRoot = join2(resolve2(this.codexHome), "sessions");
|
|
29866
|
-
if (!threadId || !threadPath || !
|
|
29942
|
+
if (!threadId || !threadPath || !isAbsolute3(threadPath) || !resolvedThreadPath.startsWith(`${sessionsRoot}${sep}`) || !resolvedThreadPath.endsWith(".jsonl") || thread?.ephemeral !== false || thread?.modelProvider !== "openai" || !Array.isArray(thread?.turns) || !resumed && thread.turns.length !== 0 || result2.model !== options.requestedModel || result2.modelProvider !== "openai" || result2.serviceTier !== "default" || result2.reasoningEffort !== options.requestedReasoningEffort || String(result2.cwd || "") !== options.workspacePath || !Array.isArray(result2.instructionSources) || result2.instructionSources.length !== 0 || result2.approvalPolicy !== "never" || result2.approvalsReviewer !== "user" || sandbox?.type !== "readOnly" || sandbox.networkAccess !== false || permission?.id !== CODEX_AGENT_PERMISSION_PROFILE || permission.extends !== null) {
|
|
29867
29943
|
throw new CodexAppServerError({
|
|
29868
29944
|
message: "Codex Agent thread isolation or effective settings were invalid.",
|
|
29869
29945
|
category: "adapter",
|
|
@@ -30959,6 +31035,7 @@ function createDefaultInferenceHostRunnerDependencies(options) {
|
|
|
30959
31035
|
}),
|
|
30960
31036
|
createMcpClient: (tokenSource) => new ExternalInferenceMcpClient({
|
|
30961
31037
|
endpoint: `${options.apiUrl.replace(/\/+$/u, "")}/insights/mcp`,
|
|
31038
|
+
directTransport: options.directTransport,
|
|
30962
31039
|
tokenSource,
|
|
30963
31040
|
fetchImpl,
|
|
30964
31041
|
clientVersion: options.clientVersion,
|
|
@@ -33382,7 +33459,11 @@ var init_runner = __esm({
|
|
|
33382
33459
|
try {
|
|
33383
33460
|
await this.dependencies.codexAdapter.close?.();
|
|
33384
33461
|
} finally {
|
|
33385
|
-
|
|
33462
|
+
try {
|
|
33463
|
+
await mcp?.close?.();
|
|
33464
|
+
} finally {
|
|
33465
|
+
await lock2.release();
|
|
33466
|
+
}
|
|
33386
33467
|
}
|
|
33387
33468
|
}
|
|
33388
33469
|
}
|
|
@@ -35627,7 +35708,7 @@ import {
|
|
|
35627
35708
|
} from "node:fs/promises";
|
|
35628
35709
|
import { createHash as createHash6, randomBytes as randomBytes4 } from "node:crypto";
|
|
35629
35710
|
import { tmpdir as tmpdir2 } from "node:os";
|
|
35630
|
-
import { isAbsolute as
|
|
35711
|
+
import { isAbsolute as isAbsolute4, join as join4, relative as relative2, resolve as resolve3, sep as sep2 } from "node:path";
|
|
35631
35712
|
var MAX_PROMPT_BYTES2, CODEX_MODEL_NAME_PATTERN, CODEX_REASONING_EFFORT_PATTERN, codexRecoveryCheckpointProcessFingerprint, proveCodexSameBootQuiescence, tokenUsageReceiptSchema, turnResultReceiptSchema, terminalReceiptSchema, recoveryCheckpointSchema, recoveryFileSchema, FileCodexAttemptRecoveryStore, utf8Bytes, assertAttemptActive, tomlString, permissionConfig, ensureDedicatedCodexHome, createIsolatedCodexAttemptResources, createIsolatedCodexHostResources, validateAttemptInput, isStrictDescendant, assertRecoveryResourceScope, removeRecoveredThread, confirmGuardianTerminatedForRecovery, recoveredCodexProcessExit, reconcileCodexAttemptRecovery, CodexSubscriptionAdapter, CodexAgentSubscriptionAdapter;
|
|
35632
35713
|
var init_codex_adapter = __esm({
|
|
35633
35714
|
"lib/inference-host/codex-adapter.ts"() {
|
|
@@ -36010,7 +36091,7 @@ var init_codex_adapter = __esm({
|
|
|
36010
36091
|
const parentPath = resolve3(parent);
|
|
36011
36092
|
const candidatePath = resolve3(candidate);
|
|
36012
36093
|
const scoped = relative2(parentPath, candidatePath);
|
|
36013
|
-
return scoped.length > 0 && !scoped.startsWith(`..${sep2}`) && scoped !== ".." && !
|
|
36094
|
+
return scoped.length > 0 && !scoped.startsWith(`..${sep2}`) && scoped !== ".." && !isAbsolute4(scoped);
|
|
36014
36095
|
};
|
|
36015
36096
|
assertRecoveryResourceScope = (checkpoint) => {
|
|
36016
36097
|
const temporaryRoot = resolve3(tmpdir2());
|
|
@@ -36100,7 +36181,7 @@ var init_codex_adapter = __esm({
|
|
|
36100
36181
|
}
|
|
36101
36182
|
}
|
|
36102
36183
|
if (checkpoint.threadPath !== null) {
|
|
36103
|
-
if (!
|
|
36184
|
+
if (!isAbsolute4(checkpoint.threadPath) || !isStrictDescendant(
|
|
36104
36185
|
checkpoint.threadPath,
|
|
36105
36186
|
sessionsRoot
|
|
36106
36187
|
) || !checkpoint.threadPath.endsWith(".jsonl")) {
|
|
@@ -42462,7 +42543,7 @@ var init_runtime_policy_generated2 = __esm({
|
|
|
42462
42543
|
// lib/inference-host/service.ts
|
|
42463
42544
|
import { spawn as spawn10 } from "node:child_process";
|
|
42464
42545
|
import { randomUUID as randomUUID9 } from "node:crypto";
|
|
42465
|
-
import { createWriteStream, readFileSync } from "node:fs";
|
|
42546
|
+
import { createWriteStream, readFileSync as readFileSync2 } from "node:fs";
|
|
42466
42547
|
import { access as access4, chmod as chmod3, mkdir as mkdir3, readFile as readFile9, rm as rm10, writeFile as writeFile4 } from "node:fs/promises";
|
|
42467
42548
|
import { homedir as homedir2 } from "node:os";
|
|
42468
42549
|
import { dirname as dirname12, join as join13, resolve as resolve10 } from "node:path";
|
|
@@ -42505,7 +42586,7 @@ var init_service = __esm({
|
|
|
42505
42586
|
isWindowsSubsystemForLinux = (env = process.env, kernelRelease) => Boolean(
|
|
42506
42587
|
String(env.WSL_INTEROP || "").trim() || String(env.WSL_DISTRO_NAME || "").trim() || /microsoft/iu.test(kernelRelease ?? (() => {
|
|
42507
42588
|
try {
|
|
42508
|
-
return
|
|
42589
|
+
return readFileSync2("/proc/sys/kernel/osrelease", "utf8");
|
|
42509
42590
|
} catch {
|
|
42510
42591
|
return "";
|
|
42511
42592
|
}
|
|
@@ -42790,6 +42871,10 @@ var init_service = __esm({
|
|
|
42790
42871
|
if (config2.credentialFilePath) {
|
|
42791
42872
|
result2.VTX_INFERENCE_HOST_CREDENTIAL_FILE = config2.credentialFilePath;
|
|
42792
42873
|
}
|
|
42874
|
+
if (config2.mcpDirectTransport) {
|
|
42875
|
+
result2.VTX_INFERENCE_HOST_MCP_CONNECT_ADDRESS = config2.mcpDirectTransport.address;
|
|
42876
|
+
result2.VTX_INFERENCE_HOST_MCP_CA_FILE = config2.mcpDirectTransport.caFile;
|
|
42877
|
+
}
|
|
42793
42878
|
return result2;
|
|
42794
42879
|
};
|
|
42795
42880
|
serviceBootstrapArguments = (bootstrapScript, manifestPath, lockPath) => [
|
|
@@ -44725,6 +44810,7 @@ Durable service:
|
|
|
44725
44810
|
});
|
|
44726
44811
|
const dependencies = createDefaultInferenceHostRunnerDependencies({
|
|
44727
44812
|
apiUrl: options.config.apiUrl,
|
|
44813
|
+
directTransport: options.config.mcpDirectTransport,
|
|
44728
44814
|
statePath: options.config.statePath,
|
|
44729
44815
|
processLockPath: options.config.processLockPath,
|
|
44730
44816
|
credentialStore: options.credentialStore,
|
|
@@ -44792,6 +44878,7 @@ Durable service:
|
|
|
44792
44878
|
}
|
|
44793
44879
|
const dependencies = createDefaultInferenceHostRunnerDependencies({
|
|
44794
44880
|
apiUrl: options.config.apiUrl,
|
|
44881
|
+
directTransport: options.config.mcpDirectTransport,
|
|
44795
44882
|
statePath: options.config.statePath,
|
|
44796
44883
|
processLockPath: options.config.processLockPath,
|
|
44797
44884
|
credentialStore: options.credentialStore,
|
|
@@ -47821,7 +47908,7 @@ var init_client = __esm({
|
|
|
47821
47908
|
import {
|
|
47822
47909
|
chmodSync,
|
|
47823
47910
|
mkdirSync,
|
|
47824
|
-
readFileSync as
|
|
47911
|
+
readFileSync as readFileSync3,
|
|
47825
47912
|
renameSync,
|
|
47826
47913
|
unlinkSync,
|
|
47827
47914
|
writeFileSync
|
|
@@ -47876,7 +47963,7 @@ var init_protection_storage = __esm({
|
|
|
47876
47963
|
}
|
|
47877
47964
|
readValues() {
|
|
47878
47965
|
try {
|
|
47879
|
-
return parseStoredValues(
|
|
47966
|
+
return parseStoredValues(readFileSync3(this.path, "utf8"), this.path);
|
|
47880
47967
|
} catch (error48) {
|
|
47881
47968
|
if (error48.code === "ENOENT") return {};
|
|
47882
47969
|
throw error48;
|
|
@@ -47896,7 +47983,7 @@ var init_protection_storage = __esm({
|
|
|
47896
47983
|
chmodSync(temporaryPath, 384);
|
|
47897
47984
|
renameSync(temporaryPath, this.path);
|
|
47898
47985
|
chmodSync(this.path, 384);
|
|
47899
|
-
if (
|
|
47986
|
+
if (readFileSync3(this.path, "utf8") !== serialized) {
|
|
47900
47987
|
throw new Error("Headless protection state readback did not match the durable write.");
|
|
47901
47988
|
}
|
|
47902
47989
|
} catch (error48) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vtxmacro/cli",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.51",
|
|
4
4
|
"description": "VTX Macro CLI, MCP server, and durable external inference host.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"node": "^22.19.0 || >=24.0.0"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
+
"undici": "8.10.0",
|
|
23
24
|
"@openai/codex": "0.153.3",
|
|
24
25
|
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
25
26
|
"@earendil-works/pi-ai": "0.85.1",
|