@vtxmacro/cli 2026.8.23 → 2026.8.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/vtx.js +93 -18
- package/package.json +1 -1
package/bin/vtx.js
CHANGED
|
@@ -38,7 +38,7 @@ var init_agent_cli_release = __esm({
|
|
|
38
38
|
"agent-cli-release.json"() {
|
|
39
39
|
agent_cli_release_default = {
|
|
40
40
|
package_name: "@vtxmacro/cli",
|
|
41
|
-
package_version: "2026.8.
|
|
41
|
+
package_version: "2026.8.24",
|
|
42
42
|
codex_package_name: "@openai/codex",
|
|
43
43
|
codex_version: "0.147.0",
|
|
44
44
|
platforms: {
|
|
@@ -16132,7 +16132,10 @@ function assertLocalState(value) {
|
|
|
16132
16132
|
}
|
|
16133
16133
|
return record2;
|
|
16134
16134
|
}
|
|
16135
|
-
async function ensureInferencePrivateDirectory(path) {
|
|
16135
|
+
async function ensureInferencePrivateDirectory(path, dependencies = {}) {
|
|
16136
|
+
const platform = dependencies.platform ?? process.platform;
|
|
16137
|
+
const runner = dependencies.runner ?? runWindowsPrivateAcl;
|
|
16138
|
+
const defaultRoot = dependencies.defaultRoot ?? resolve(homedir(), ".vtx", "inference-host");
|
|
16136
16139
|
let created = false;
|
|
16137
16140
|
try {
|
|
16138
16141
|
const before = await lstat(path);
|
|
@@ -16148,9 +16151,18 @@ async function ensureInferencePrivateDirectory(path) {
|
|
|
16148
16151
|
if (after.isSymbolicLink() || !after.isDirectory()) {
|
|
16149
16152
|
throw new Error("Inference host state directory is unsafe.");
|
|
16150
16153
|
}
|
|
16151
|
-
if (
|
|
16152
|
-
if (created)
|
|
16153
|
-
|
|
16154
|
+
if (platform === "win32") {
|
|
16155
|
+
if (created) {
|
|
16156
|
+
await secureWindowsPrivatePath(path, "directory", "harden", platform, runner);
|
|
16157
|
+
} else {
|
|
16158
|
+
await secureExistingWindowsPath(
|
|
16159
|
+
path,
|
|
16160
|
+
"directory",
|
|
16161
|
+
platform,
|
|
16162
|
+
runner,
|
|
16163
|
+
defaultRoot
|
|
16164
|
+
);
|
|
16165
|
+
}
|
|
16154
16166
|
return;
|
|
16155
16167
|
}
|
|
16156
16168
|
if ((after.mode & 63) !== 0) {
|
|
@@ -16173,9 +16185,16 @@ async function syncInferenceDirectory(path, platform = process.platform) {
|
|
|
16173
16185
|
await handle.close();
|
|
16174
16186
|
}
|
|
16175
16187
|
}
|
|
16176
|
-
async function writeAtomicInferencePrivateFile(path, contents) {
|
|
16188
|
+
async function writeAtomicInferencePrivateFile(path, contents, dependencies = {}) {
|
|
16189
|
+
const platform = dependencies.platform ?? process.platform;
|
|
16190
|
+
const runner = dependencies.runner ?? runWindowsPrivateAcl;
|
|
16191
|
+
const defaultRoot = dependencies.defaultRoot ?? resolve(homedir(), ".vtx", "inference-host");
|
|
16177
16192
|
const directory = dirname(path);
|
|
16178
|
-
await ensureInferencePrivateDirectory(directory);
|
|
16193
|
+
await ensureInferencePrivateDirectory(directory, dependencies);
|
|
16194
|
+
const hardenedDirectoryIdentity = platform === "win32" && isDefaultWindowsPrivatePath(directory, defaultRoot) ? windowsAclCache.get(aclCacheKey(directory, "directory", "harden")) : void 0;
|
|
16195
|
+
if (platform === "win32" && isDefaultWindowsPrivatePath(directory, defaultRoot) && !hardenedDirectoryIdentity) {
|
|
16196
|
+
throw new Error("Windows private directory ACL hardening was not durably verified.");
|
|
16197
|
+
}
|
|
16179
16198
|
const temporary = join(
|
|
16180
16199
|
directory,
|
|
16181
16200
|
`.${process.pid}.${randomBytes(12).toString("hex")}.tmp`
|
|
@@ -16194,19 +16213,42 @@ async function writeAtomicInferencePrivateFile(path, contents) {
|
|
|
16194
16213
|
throw error48;
|
|
16195
16214
|
}
|
|
16196
16215
|
await handle.close();
|
|
16197
|
-
await secureWindowsPrivatePath(temporary, "file", "harden");
|
|
16216
|
+
await secureWindowsPrivatePath(temporary, "file", "harden", platform, runner);
|
|
16217
|
+
const hardenedIdentity = platform === "win32" ? windowsAclCache.get(aclCacheKey(temporary, "file", "harden")) : void 0;
|
|
16218
|
+
if (platform === "win32" && !hardenedIdentity) {
|
|
16219
|
+
await rm(temporary, { force: true }).catch(() => void 0);
|
|
16220
|
+
throw new Error("Windows private ACL hardening was not durably verified.");
|
|
16221
|
+
}
|
|
16198
16222
|
try {
|
|
16199
16223
|
invalidateWindowsAclCache(path);
|
|
16200
16224
|
await rename(temporary, path);
|
|
16201
|
-
|
|
16202
|
-
|
|
16203
|
-
|
|
16225
|
+
if (platform === "win32" && hardenedIdentity) {
|
|
16226
|
+
await rebindHardenedWindowsAclAfterRename(
|
|
16227
|
+
temporary,
|
|
16228
|
+
path,
|
|
16229
|
+
"file",
|
|
16230
|
+
hardenedIdentity
|
|
16231
|
+
);
|
|
16232
|
+
} else {
|
|
16233
|
+
invalidateWindowsAclCache(temporary);
|
|
16234
|
+
}
|
|
16235
|
+
await syncInferenceDirectory(directory, platform);
|
|
16236
|
+
if (platform === "win32" && hardenedDirectoryIdentity) {
|
|
16237
|
+
await rebindHardenedWindowsDirectoryAfterOwnedMutation(
|
|
16238
|
+
directory,
|
|
16239
|
+
hardenedDirectoryIdentity
|
|
16240
|
+
);
|
|
16241
|
+
}
|
|
16204
16242
|
} catch (error48) {
|
|
16205
16243
|
await rm(temporary, { force: true }).catch(() => void 0);
|
|
16244
|
+
invalidateWindowsAclCache(temporary);
|
|
16206
16245
|
throw error48;
|
|
16207
16246
|
}
|
|
16208
16247
|
}
|
|
16209
|
-
async function readInferencePrivateFile(path, label) {
|
|
16248
|
+
async function readInferencePrivateFile(path, label, dependencies = {}) {
|
|
16249
|
+
const platform = dependencies.platform ?? process.platform;
|
|
16250
|
+
const runner = dependencies.runner ?? runWindowsPrivateAcl;
|
|
16251
|
+
const defaultRoot = dependencies.defaultRoot ?? resolve(homedir(), ".vtx", "inference-host");
|
|
16210
16252
|
let before;
|
|
16211
16253
|
try {
|
|
16212
16254
|
before = await lstat(path);
|
|
@@ -16217,15 +16259,21 @@ async function readInferencePrivateFile(path, label) {
|
|
|
16217
16259
|
if (before.isSymbolicLink() || !before.isFile()) {
|
|
16218
16260
|
throw new Error(`${label} is unsafe.`);
|
|
16219
16261
|
}
|
|
16220
|
-
await secureExistingWindowsPath(
|
|
16221
|
-
|
|
16262
|
+
await secureExistingWindowsPath(
|
|
16263
|
+
dirname(path),
|
|
16264
|
+
"directory",
|
|
16265
|
+
platform,
|
|
16266
|
+
runner,
|
|
16267
|
+
defaultRoot
|
|
16268
|
+
);
|
|
16269
|
+
await secureExistingWindowsPath(path, "file", platform, runner, defaultRoot);
|
|
16222
16270
|
const handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
16223
16271
|
try {
|
|
16224
16272
|
const opened = await handle.stat();
|
|
16225
16273
|
if (!opened.isFile() || opened.dev !== before.dev || opened.ino !== before.ino || opened.size > MAX_INFERENCE_PRIVATE_FILE_BYTES || typeof process.getuid === "function" && opened.uid !== process.getuid()) {
|
|
16226
16274
|
throw new Error(`${label} changed while it was opened.`);
|
|
16227
16275
|
}
|
|
16228
|
-
if (
|
|
16276
|
+
if (platform !== "win32" && (opened.mode & 63) !== 0) {
|
|
16229
16277
|
throw new Error(`${label} must have mode 0600.`);
|
|
16230
16278
|
}
|
|
16231
16279
|
return await handle.readFile("utf8");
|
|
@@ -16440,7 +16488,7 @@ async function acquireInferenceHostProcessLock(path, dependencies = {}) {
|
|
|
16440
16488
|
}
|
|
16441
16489
|
};
|
|
16442
16490
|
}
|
|
16443
|
-
var INFERENCE_CREDENTIAL_NAMESPACE, MAX_INFERENCE_PRIVATE_FILE_BYTES, WINDOWS_PRIVATE_ACL_SCRIPT, windowsPrivateAclInvocation, runWindowsPrivateAcl, windowsAclCache, windowsAclIdentity, aclCacheKey, secureWindowsPrivatePath, invalidateWindowsAclCache, isDefaultWindowsPrivatePath, secureExistingWindowsPath, linuxProcessIdentity, windowsProcessIdentity, darwinProcessIdentity, runSmallIdentityCommand, cachedSystemBootIdentity, readInferenceSystemBootIdentity, defaultProcessIdentity, defaultCurrentProcessIdentity, processLockObservationCache, inferenceProcessIdentitiesMatch, credentialStoreIdentity;
|
|
16491
|
+
var INFERENCE_CREDENTIAL_NAMESPACE, MAX_INFERENCE_PRIVATE_FILE_BYTES, WINDOWS_PRIVATE_ACL_SCRIPT, windowsPrivateAclInvocation, runWindowsPrivateAcl, windowsAclCache, windowsAclIdentity, aclCacheKey, secureWindowsPrivatePath, invalidateWindowsAclCache, rebindHardenedWindowsAclAfterRename, rebindHardenedWindowsDirectoryAfterOwnedMutation, isDefaultWindowsPrivatePath, secureExistingWindowsPath, linuxProcessIdentity, windowsProcessIdentity, darwinProcessIdentity, runSmallIdentityCommand, cachedSystemBootIdentity, readInferenceSystemBootIdentity, defaultProcessIdentity, defaultCurrentProcessIdentity, processLockObservationCache, inferenceProcessIdentitiesMatch, credentialStoreIdentity;
|
|
16444
16492
|
var init_config = __esm({
|
|
16445
16493
|
"lib/inference-host/config.ts"() {
|
|
16446
16494
|
"use strict";
|
|
@@ -16581,6 +16629,35 @@ if(-not $userFull) { throw 'private ACL does not grant the current user full con
|
|
|
16581
16629
|
}
|
|
16582
16630
|
}
|
|
16583
16631
|
};
|
|
16632
|
+
rebindHardenedWindowsAclAfterRename = async (source, destination, kind, expected) => {
|
|
16633
|
+
const resolvedSource = resolve(source);
|
|
16634
|
+
const resolvedDestination = resolve(destination);
|
|
16635
|
+
if (resolvedSource === resolvedDestination || dirname(resolvedSource) !== dirname(resolvedDestination)) {
|
|
16636
|
+
throw new Error("Windows private ACL cache rename boundary is invalid.");
|
|
16637
|
+
}
|
|
16638
|
+
const published = await windowsAclIdentity(destination);
|
|
16639
|
+
if (published.dev !== expected.dev || published.ino !== expected.ino || published.mode !== expected.mode || published.mtimeNs !== expected.mtimeNs || published.size !== expected.size) {
|
|
16640
|
+
invalidateWindowsAclCache(source);
|
|
16641
|
+
invalidateWindowsAclCache(destination);
|
|
16642
|
+
throw new Error("Windows private file identity changed during atomic publication.");
|
|
16643
|
+
}
|
|
16644
|
+
invalidateWindowsAclCache(source);
|
|
16645
|
+
invalidateWindowsAclCache(destination);
|
|
16646
|
+
for (const mode of ["harden", "verify", "verify-owner"]) {
|
|
16647
|
+
windowsAclCache.set(aclCacheKey(destination, kind, mode), published);
|
|
16648
|
+
}
|
|
16649
|
+
};
|
|
16650
|
+
rebindHardenedWindowsDirectoryAfterOwnedMutation = async (path, expected) => {
|
|
16651
|
+
const current = await windowsAclIdentity(path);
|
|
16652
|
+
if (current.dev !== expected.dev || current.ino !== expected.ino || current.mode !== expected.mode) {
|
|
16653
|
+
invalidateWindowsAclCache(path);
|
|
16654
|
+
throw new Error("Windows private directory identity changed during atomic publication.");
|
|
16655
|
+
}
|
|
16656
|
+
invalidateWindowsAclCache(path);
|
|
16657
|
+
for (const mode of ["harden", "verify", "verify-owner"]) {
|
|
16658
|
+
windowsAclCache.set(aclCacheKey(path, "directory", mode), current);
|
|
16659
|
+
}
|
|
16660
|
+
};
|
|
16584
16661
|
isDefaultWindowsPrivatePath = (path, root = resolve(homedir(), ".vtx", "inference-host")) => {
|
|
16585
16662
|
const child = relative(root, resolve(path));
|
|
16586
16663
|
return child === "" || !child.startsWith("..") && !child.includes(":");
|
|
@@ -16591,8 +16668,6 @@ if(-not $userFull) { throw 'private ACL does not grant the current user full con
|
|
|
16591
16668
|
await secureWindowsPrivatePath(path, kind, "verify", platform, runner);
|
|
16592
16669
|
return;
|
|
16593
16670
|
}
|
|
16594
|
-
await secureWindowsPrivatePath(path, kind, "verify-owner", platform, runner);
|
|
16595
|
-
invalidateWindowsAclCache(path);
|
|
16596
16671
|
await secureWindowsPrivatePath(path, kind, "harden", platform, runner);
|
|
16597
16672
|
};
|
|
16598
16673
|
linuxProcessIdentity = async (pid) => {
|