@quantiya/codevibe-codex-plugin 2.0.118 → 2.0.119
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/dist/native-launch.js +1 -1
- package/dist/server.js +1 -1
- package/node_modules/@quantiya/codevibe-core/dist/appsync/appsync-client.d.ts +5 -1
- package/node_modules/@quantiya/codevibe-core/dist/appsync/queries.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/device-deregistration.d.ts +56 -0
- package/node_modules/@quantiya/codevibe-core/dist/index.js +560 -554
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +125 -28
- package/node_modules/@quantiya/codevibe-core/dist/substrate/process-group-run.d.ts +8 -0
- package/node_modules/@quantiya/codevibe-core/package.json +1 -1
- package/package.json +2 -2
|
@@ -9363,20 +9363,102 @@ var import_node_crypto34, import_json_freeze14, init_class_b_verify = __esm({
|
|
|
9363
9363
|
}
|
|
9364
9364
|
});
|
|
9365
9365
|
|
|
9366
|
+
// src/substrate/process-group-run.ts
|
|
9367
|
+
function runInOwnProcessGroup(argv, opts) {
|
|
9368
|
+
return new Promise((resolve35, reject) => {
|
|
9369
|
+
let child = (0, import_node_child_process12.spawn)(SH, ["-c", GROUP_LEADER_SCRIPT, argv[0], ...argv.slice(1)], {
|
|
9370
|
+
stdio: ["pipe", "pipe", "pipe", "pipe", "pipe"],
|
|
9371
|
+
detached: !0,
|
|
9372
|
+
windowsHide: !0,
|
|
9373
|
+
env: opts.env
|
|
9374
|
+
}), status = child.stdio[3], release = child.stdio[4], stdoutChunks = [], stderrChunks = [];
|
|
9375
|
+
child.stdout?.on("data", (c) => stdoutChunks.push(c)), child.stderr?.on("data", (c) => stderrChunks.push(c));
|
|
9376
|
+
let reported = null, pending2 = "", releaseGroup = () => {
|
|
9377
|
+
try {
|
|
9378
|
+
release?.end();
|
|
9379
|
+
} catch {
|
|
9380
|
+
}
|
|
9381
|
+
};
|
|
9382
|
+
status?.on("data", (c) => {
|
|
9383
|
+
pending2 += c.toString();
|
|
9384
|
+
let at = pending2.indexOf(`
|
|
9385
|
+
`);
|
|
9386
|
+
if (at < 0) return;
|
|
9387
|
+
let code = Number(pending2.slice(0, at).trim());
|
|
9388
|
+
reported = Number.isInteger(code) ? code : null, releaseGroup();
|
|
9389
|
+
}), status?.on("error", () => {
|
|
9390
|
+
}), release?.on?.("error", () => {
|
|
9391
|
+
});
|
|
9392
|
+
let exited = !1, timedOut = !1, timer;
|
|
9393
|
+
if (opts.timeoutMs !== void 0 && (timer = setTimeout(() => {
|
|
9394
|
+
if (timedOut = !0, !exited && child.exitCode === null && child.signalCode === null && child.pid !== void 0)
|
|
9395
|
+
try {
|
|
9396
|
+
process.kill(-child.pid, "SIGKILL");
|
|
9397
|
+
} catch {
|
|
9398
|
+
}
|
|
9399
|
+
releaseGroup();
|
|
9400
|
+
}, opts.timeoutMs)), child.on("exit", () => {
|
|
9401
|
+
exited = !0;
|
|
9402
|
+
}), child.on("error", (err) => {
|
|
9403
|
+
timer && clearTimeout(timer), reject(err);
|
|
9404
|
+
}), child.on("close", () => {
|
|
9405
|
+
timer && clearTimeout(timer), resolve35({
|
|
9406
|
+
// No exit status for a timed-out run (as before) or when the leader was ended before it could report.
|
|
9407
|
+
exitCode: timedOut ? null : reported,
|
|
9408
|
+
stdout: Buffer.concat(stdoutChunks).toString("utf8"),
|
|
9409
|
+
stderr: Buffer.concat(stderrChunks).toString("utf8")
|
|
9410
|
+
});
|
|
9411
|
+
}), opts.input !== void 0 && child.stdin)
|
|
9412
|
+
child.stdin.on("error", () => {
|
|
9413
|
+
}), child.stdin.write(opts.input, "utf8", () => {
|
|
9414
|
+
try {
|
|
9415
|
+
child.stdin?.end();
|
|
9416
|
+
} catch {
|
|
9417
|
+
}
|
|
9418
|
+
});
|
|
9419
|
+
else if (child.stdin)
|
|
9420
|
+
try {
|
|
9421
|
+
child.stdin.end();
|
|
9422
|
+
} catch {
|
|
9423
|
+
}
|
|
9424
|
+
});
|
|
9425
|
+
}
|
|
9426
|
+
var import_node_child_process12, SH, GROUP_LEADER_SCRIPT, init_process_group_run = __esm({
|
|
9427
|
+
"src/substrate/process-group-run.ts"() {
|
|
9428
|
+
"use strict";
|
|
9429
|
+
import_node_child_process12 = require("node:child_process"), SH = "/bin/sh", GROUP_LEADER_SCRIPT = [
|
|
9430
|
+
"exec 5<&0",
|
|
9431
|
+
"( exec 3>&- 5<&- </dev/null; read -r _ <&4; kill -s KILL 0 ) &",
|
|
9432
|
+
'"$0" "$@" <&5 3>&- 4>&- 5<&- &',
|
|
9433
|
+
"c=$!",
|
|
9434
|
+
"exec 5<&- 4>&-",
|
|
9435
|
+
'wait "$c"',
|
|
9436
|
+
"s=$?",
|
|
9437
|
+
"trap '' PIPE",
|
|
9438
|
+
`printf '%s\\n' "$s" >&3 2>/dev/null`,
|
|
9439
|
+
"exec 3>&-",
|
|
9440
|
+
"wait"
|
|
9441
|
+
].join(`
|
|
9442
|
+
`);
|
|
9443
|
+
}
|
|
9444
|
+
});
|
|
9445
|
+
|
|
9366
9446
|
// src/substrate/command-runner.ts
|
|
9367
|
-
var
|
|
9447
|
+
var import_node_child_process13, ChildProcessCommandRunner, init_command_runner = __esm({
|
|
9368
9448
|
"src/substrate/command-runner.ts"() {
|
|
9369
9449
|
"use strict";
|
|
9370
|
-
|
|
9450
|
+
import_node_child_process13 = require("node:child_process");
|
|
9371
9451
|
init_env_scrub();
|
|
9372
9452
|
init_process_tree();
|
|
9453
|
+
init_process_group_run();
|
|
9373
9454
|
ChildProcessCommandRunner = class {
|
|
9374
9455
|
run(argv, opts = {}) {
|
|
9375
|
-
|
|
9376
|
-
|
|
9456
|
+
let env = scrubSearchApiKeys({ ...process.env });
|
|
9457
|
+
return process.platform !== "win32" && opts.timeoutMs !== void 0 ? runInOwnProcessGroup(argv, { ...opts, env }) : new Promise((resolve35, reject) => {
|
|
9458
|
+
let child = (0, import_node_child_process13.spawn)(argv[0], argv.slice(1), {
|
|
9377
9459
|
stdio: ["pipe", "pipe", "pipe"],
|
|
9378
9460
|
windowsHide: !0,
|
|
9379
|
-
env
|
|
9461
|
+
env
|
|
9380
9462
|
}), stdoutChunks = [], stderrChunks = [];
|
|
9381
9463
|
child.stdout?.on("data", (c) => stdoutChunks.push(c)), child.stderr?.on("data", (c) => stderrChunks.push(c));
|
|
9382
9464
|
let timer;
|
|
@@ -9421,7 +9503,7 @@ var import_node_child_process12, ChildProcessCommandRunner, init_command_runner
|
|
|
9421
9503
|
workingDirAuthority: opts.cwdAuthority,
|
|
9422
9504
|
launchPathAuthorities: opts.launchPathAuthorities,
|
|
9423
9505
|
...opts.descendantReap ? { descendantReap: opts.descendantReap } : {}
|
|
9424
|
-
}) : (0,
|
|
9506
|
+
}) : (0, import_node_child_process13.spawn)(argv[0], argv.slice(1), spawnOptions), proc = child;
|
|
9425
9507
|
if (opts.relayChannel) {
|
|
9426
9508
|
let channel = child.stdio[3];
|
|
9427
9509
|
if (!channel) throw new Error("spawnLong: the relay channel (fd 3) was not created");
|
|
@@ -9593,7 +9675,7 @@ async function executeSpawnSweep(opts) {
|
|
|
9593
9675
|
strandedMembers: [],
|
|
9594
9676
|
recordSha256
|
|
9595
9677
|
};
|
|
9596
|
-
let timeoutMs = opts.timeoutMs ?? 1e4, readProcStat = opts.readProcStat ?? defaultReadProcStat, spawner = opts.spawnHelper ??
|
|
9678
|
+
let timeoutMs = opts.timeoutMs ?? 1e4, readProcStat = opts.readProcStat ?? defaultReadProcStat, spawner = opts.spawnHelper ?? import_node_child_process16.default.spawn, invocationToken = import_node_crypto45.default.randomBytes(8).toString("hex");
|
|
9597
9679
|
return new Promise((resolve35) => {
|
|
9598
9680
|
let settled = !1, timer = null, initialStat = null, child;
|
|
9599
9681
|
try {
|
|
@@ -9804,10 +9886,10 @@ async function executeSpawnSweep(opts) {
|
|
|
9804
9886
|
});
|
|
9805
9887
|
});
|
|
9806
9888
|
}
|
|
9807
|
-
var
|
|
9889
|
+
var import_node_child_process16, import_node_crypto45, import_node_fs36, import_node_path4, activeSpawnSweeps, init_spawn_sweep = __esm({
|
|
9808
9890
|
"src/local-executor/spawn-sweep.ts"() {
|
|
9809
9891
|
"use strict";
|
|
9810
|
-
|
|
9892
|
+
import_node_child_process16 = __toESM(require("node:child_process")), import_node_crypto45 = __toESM(require("node:crypto")), import_node_fs36 = __toESM(require("node:fs")), import_node_path4 = __toESM(require("node:path"));
|
|
9811
9893
|
init_logger2();
|
|
9812
9894
|
init_spawn_sweep_binary();
|
|
9813
9895
|
activeSpawnSweeps = /* @__PURE__ */ new Map();
|
|
@@ -10153,14 +10235,14 @@ async function collectRepoStates(authority, knownRepos, options = {}) {
|
|
|
10153
10235
|
);
|
|
10154
10236
|
return Promise.all(clamped.map((r) => collectOne(r, gitExec, timeoutMs)));
|
|
10155
10237
|
}
|
|
10156
|
-
var
|
|
10238
|
+
var import_node_child_process18, path95, GIT_TIMEOUT_MS, SCRUBBED_ENV, defaultGitExec, init_dirty_state_collector = __esm({
|
|
10157
10239
|
"src/continuation/dirty-state-collector.ts"() {
|
|
10158
10240
|
"use strict";
|
|
10159
|
-
|
|
10241
|
+
import_node_child_process18 = require("node:child_process"), path95 = __toESM(require("node:path")), GIT_TIMEOUT_MS = 5e3, SCRUBBED_ENV = (() => {
|
|
10160
10242
|
let out = {};
|
|
10161
10243
|
return process.env.PATH && (out.PATH = process.env.PATH), process.env.LANG && (out.LANG = process.env.LANG), process.env.LC_ALL && (out.LC_ALL = process.env.LC_ALL), out;
|
|
10162
10244
|
})(), defaultGitExec = (args, options) => new Promise((resolve35, reject) => {
|
|
10163
|
-
(0,
|
|
10245
|
+
(0, import_node_child_process18.execFile)(
|
|
10164
10246
|
"git",
|
|
10165
10247
|
args,
|
|
10166
10248
|
{
|
|
@@ -18765,6 +18847,15 @@ var queries = {
|
|
|
18765
18847
|
}
|
|
18766
18848
|
`
|
|
18767
18849
|
),
|
|
18850
|
+
// Sign-out: drop this computer's public key so new sessions stop wrapping a key for it (iOS does the same).
|
|
18851
|
+
removeDeviceKey: (
|
|
18852
|
+
/* GraphQL */
|
|
18853
|
+
`
|
|
18854
|
+
mutation RemoveDeviceKey($deviceId: ID!) {
|
|
18855
|
+
removeDeviceKey(deviceId: $deviceId)
|
|
18856
|
+
}
|
|
18857
|
+
`
|
|
18858
|
+
),
|
|
18768
18859
|
grantSessionKey: (
|
|
18769
18860
|
/* GraphQL */
|
|
18770
18861
|
`
|
|
@@ -26983,8 +27074,8 @@ var AppSyncClient = class _AppSyncClient {
|
|
|
26983
27074
|
/**
|
|
26984
27075
|
* List user device keys
|
|
26985
27076
|
*/
|
|
26986
|
-
async listUserDeviceKeys() {
|
|
26987
|
-
return (await this.graphqlRequest(queries.listUserDeviceKeys, {})).data.listUserDeviceKeys || [];
|
|
27077
|
+
async listUserDeviceKeys(options = {}) {
|
|
27078
|
+
return (await this.graphqlRequest(queries.listUserDeviceKeys, {}, !1, void 0, options.expectedUserId)).data.listUserDeviceKeys || [];
|
|
26988
27079
|
}
|
|
26989
27080
|
/**
|
|
26990
27081
|
* CP-1.b IMPL r4 H-2 — list BACKEND_SERVICE device keys per design
|
|
@@ -27015,6 +27106,10 @@ var AppSyncClient = class _AppSyncClient {
|
|
|
27015
27106
|
let input = { deviceId, publicKey, platform: platform2, deviceName };
|
|
27016
27107
|
await this.graphqlRequest(mutations.registerDeviceKey, { input }), logger.info("[AppSyncClient] Device key registered", { deviceId, platform: platform2 });
|
|
27017
27108
|
}
|
|
27109
|
+
/** Sign-out de-registration transport, fenced to `expectedUserId` on every replay (logic: `auth/device-deregistration.ts`). */
|
|
27110
|
+
async removeDeviceKey(deviceId, expectedUserId) {
|
|
27111
|
+
return (await this.graphqlRequest(mutations.removeDeviceKey, { deviceId }, !1, void 0, expectedUserId))?.data?.removeDeviceKey === !0;
|
|
27112
|
+
}
|
|
27018
27113
|
/**
|
|
27019
27114
|
* Grant a session key to an additional device by appending a new
|
|
27020
27115
|
* per-device wrapped key blob to the session's encryptedKeys array.
|
|
@@ -32681,7 +32776,7 @@ async function clearRetiredPlannerCache(userId, cacheRoot = process.env.CODEVIBE
|
|
|
32681
32776
|
}
|
|
32682
32777
|
|
|
32683
32778
|
// src/orchestration-shell/index.ts
|
|
32684
|
-
var path113 = __toESM(require("path")), os55 = __toESM(require("os")), import_promises6 = require("node:fs/promises"), fs93 = __toESM(require("node:fs")), import_node_fs54 = require("node:fs"),
|
|
32779
|
+
var path113 = __toESM(require("path")), os55 = __toESM(require("os")), import_promises6 = require("node:fs/promises"), fs93 = __toESM(require("node:fs")), import_node_fs54 = require("node:fs"), import_node_child_process20 = require("node:child_process"), import_node_util3 = require("node:util"), import_node_async_hooks = require("node:async_hooks");
|
|
32685
32780
|
|
|
32686
32781
|
// src/orchestration-shell/web/sanitize.ts
|
|
32687
32782
|
function sanitizeForTerminal(input) {
|
|
@@ -47496,7 +47591,9 @@ var DockerHandle = class {
|
|
|
47496
47591
|
try {
|
|
47497
47592
|
runRes = await this.runner.run(runArgv);
|
|
47498
47593
|
} catch (e) {
|
|
47499
|
-
throw await this.
|
|
47594
|
+
throw await this.runner.run(buildKillArgv(id5)).catch(() => {
|
|
47595
|
+
}), await this.runner.run(buildRmArgv(id5)).catch(() => {
|
|
47596
|
+
}), await this.rollback(sessionDir, forwarder, workdirLease), new SubstrateLaunchError(
|
|
47500
47597
|
"docker",
|
|
47501
47598
|
`container run failed to spawn: ${e.message}`,
|
|
47502
47599
|
e
|
|
@@ -49175,7 +49272,7 @@ var path58 = __toESM(require("node:path"));
|
|
|
49175
49272
|
init_anchored_fs();
|
|
49176
49273
|
|
|
49177
49274
|
// src/local-executor/verification-gates/shell-runner.ts
|
|
49178
|
-
var
|
|
49275
|
+
var import_node_child_process14 = require("node:child_process");
|
|
49179
49276
|
init_bounded_output();
|
|
49180
49277
|
init_process_tree();
|
|
49181
49278
|
init_workspace_authority();
|
|
@@ -49185,7 +49282,7 @@ async function runShellCommand(args) {
|
|
|
49185
49282
|
let now = args.nowMs ?? Date.now, startedAt = now();
|
|
49186
49283
|
if (args.signal?.aborted)
|
|
49187
49284
|
return { exitCode: -1, stdout: "", stderr: "verification gate aborted", durationMs: 0 };
|
|
49188
|
-
let spawner = args.spawnFn ??
|
|
49285
|
+
let spawner = args.spawnFn ?? import_node_child_process14.spawn, workingDirAuthority = args.workingDirAuthority;
|
|
49189
49286
|
if (workingDirAuthority) {
|
|
49190
49287
|
if (assertWorkspaceRootAuthoritySchema(workingDirAuthority), workingDirAuthority.canonicalPath !== args.cwd)
|
|
49191
49288
|
throw new Error("verification cwd authority is bound to a different path");
|
|
@@ -50771,7 +50868,7 @@ async function listBaselineShards(stateDir, shadowDir) {
|
|
|
50771
50868
|
}
|
|
50772
50869
|
|
|
50773
50870
|
// src/local-executor/shadow-volume-probe.ts
|
|
50774
|
-
var
|
|
50871
|
+
var import_node_child_process15 = require("node:child_process"), import_node_crypto39 = require("node:crypto"), import_node_fs32 = require("node:fs"), fs55 = __toESM(require("node:fs/promises")), path63 = __toESM(require("node:path")), PROBE_ENTRY_RE = /^\.codevibe-probe-[0-9a-f]{32}(?:\.(?:renamed|link))?$/;
|
|
50775
50872
|
function newProbeEntryName() {
|
|
50776
50873
|
return `.codevibe-probe-${(0, import_node_crypto39.randomBytes)(16).toString("hex")}`;
|
|
50777
50874
|
}
|
|
@@ -50779,7 +50876,7 @@ async function bootIdentity(platform2 = process.platform) {
|
|
|
50779
50876
|
if (platform2 === "linux") return (await fs55.readFile("/proc/sys/kernel/random/boot_id", "utf8")).trim();
|
|
50780
50877
|
if (platform2 === "darwin")
|
|
50781
50878
|
return new Promise((resolve35, reject) => {
|
|
50782
|
-
(0,
|
|
50879
|
+
(0, import_node_child_process15.execFile)("/usr/sbin/sysctl", ["-n", "kern.boottime"], (err, stdout) => {
|
|
50783
50880
|
err ? reject(err) : resolve35(stdout.trim());
|
|
50784
50881
|
});
|
|
50785
50882
|
});
|
|
@@ -62699,7 +62796,7 @@ var crypto26 = __toESM(require("node:crypto")), fs72 = __toESM(require("node:fs/
|
|
|
62699
62796
|
init_logger2();
|
|
62700
62797
|
|
|
62701
62798
|
// src/local-executor/worktree-merge.ts
|
|
62702
|
-
var
|
|
62799
|
+
var import_node_child_process17 = require("node:child_process"), crypto25 = __toESM(require("node:crypto")), fs71 = __toESM(require("node:fs/promises")), os39 = __toESM(require("node:os")), path85 = __toESM(require("node:path")), import_node_util = require("node:util");
|
|
62703
62800
|
|
|
62704
62801
|
// src/local-executor/git-lock-retry.ts
|
|
62705
62802
|
var realSleep = (ms) => new Promise((resolve35) => setTimeout(resolve35, ms));
|
|
@@ -62735,7 +62832,7 @@ function withGitLockRetry(op, opts = {}) {
|
|
|
62735
62832
|
// src/local-executor/worktree-merge.ts
|
|
62736
62833
|
init_env_scrub();
|
|
62737
62834
|
init_logger2();
|
|
62738
|
-
var execFile8 = (0, import_node_util.promisify)(
|
|
62835
|
+
var execFile8 = (0, import_node_util.promisify)(import_node_child_process17.execFile), GIT_MAXBUF = 64 * 1024 * 1024, MERGE_IMPL_ID = "git-host-v1", DETERMINISM_CONTRACT_ID = "ort+histogram+diff3+renames+dirrenames+indent", cachedMergeImplId;
|
|
62739
62836
|
async function resolveMergeImplId() {
|
|
62740
62837
|
if (cachedMergeImplId !== void 0) return cachedMergeImplId;
|
|
62741
62838
|
try {
|
|
@@ -62991,7 +63088,7 @@ async function pinnedGit(repoDir, args, opts = {}) {
|
|
|
62991
63088
|
async function pinnedGitWithInput(repoDir, args, input, opts = {}) {
|
|
62992
63089
|
let configPrefix = [...W2_HERMETIC_CONFIG, ...PINNED_GIT_CONFIG];
|
|
62993
63090
|
return await new Promise((resolve35, reject) => {
|
|
62994
|
-
let child = (0,
|
|
63091
|
+
let child = (0, import_node_child_process17.spawn)("git", ["-C", repoDir, ...configPrefix, ...args], {
|
|
62995
63092
|
env: sanitizeGitEnv(),
|
|
62996
63093
|
stdio: ["pipe", "pipe", "pipe"]
|
|
62997
63094
|
}), stdout = "", stderr = "", stdoutBytes = 0;
|
|
@@ -75544,7 +75641,7 @@ var import_node_crypto55 = require("node:crypto"), import_node_fs47 = require("n
|
|
|
75544
75641
|
init_spawn_sweep_binary();
|
|
75545
75642
|
|
|
75546
75643
|
// src/substrate/pasta-isolation-check.ts
|
|
75547
|
-
var
|
|
75644
|
+
var import_node_child_process19 = require("node:child_process"), import_node_crypto54 = require("node:crypto"), fs82 = __toESM(require("node:fs")), import_node_net2 = __toESM(require("node:net")), path101 = __toESM(require("node:path"));
|
|
75548
75645
|
init_logger2();
|
|
75549
75646
|
init_pasta();
|
|
75550
75647
|
function evaluateIsolation(e) {
|
|
@@ -75657,7 +75754,7 @@ async function runIsolationCheck(opts = {}) {
|
|
|
75657
75754
|
ISOLATION_PROBE_SOURCE,
|
|
75658
75755
|
JSON.stringify(ports)
|
|
75659
75756
|
], stdout = await new Promise((resolve35, reject) => {
|
|
75660
|
-
let child = (0,
|
|
75757
|
+
let child = (0, import_node_child_process19.spawn)(argv[0], argv.slice(1), { stdio: ["ignore", "pipe", "pipe"] }), out = "", err = "", timer = setTimeout(() => {
|
|
75661
75758
|
child.kill("SIGKILL"), reject(new Error("isolation probe timed out"));
|
|
75662
75759
|
}, opts.timeoutMs ?? 6e4);
|
|
75663
75760
|
child.stdout.on("data", (d) => {
|
|
@@ -96665,7 +96762,7 @@ function resolveBrowseUrls(modelUrls, prompt) {
|
|
|
96665
96762
|
let usable = modelUrls.filter(isWellFormedHttpUrl);
|
|
96666
96763
|
return usable.length > 0 ? usable : void 0;
|
|
96667
96764
|
}
|
|
96668
|
-
var execFileAsync = (0, import_node_util3.promisify)(
|
|
96765
|
+
var execFileAsync = (0, import_node_util3.promisify)(import_node_child_process20.execFile);
|
|
96669
96766
|
function recordStartedTask(store, result, agent) {
|
|
96670
96767
|
result.outcome !== void 0 && result.outcome !== "running" || store.dispatch({
|
|
96671
96768
|
type: "TASK_LIFECYCLE",
|
|
@@ -107731,7 +107828,7 @@ async function engageWriteConfinedResolverSandbox(input) {
|
|
|
107731
107828
|
}
|
|
107732
107829
|
|
|
107733
107830
|
// src/substrate-launch/le-env-scrub.ts
|
|
107734
|
-
var
|
|
107831
|
+
var import_node_child_process21 = require("node:child_process"), LE_ENV_SCRUBBED_MARKER = "CODEVIBE_LE_ENV_SCRUBBED", CRED_KEY_PATTERNS = [
|
|
107735
107832
|
/^ANTHROPIC_/i,
|
|
107736
107833
|
/^OPENAI_/i,
|
|
107737
107834
|
/^GOOGLE_/i,
|
|
@@ -107770,7 +107867,7 @@ function scrubLeEnvOrReexec(deps = {}) {
|
|
|
107770
107867
|
throw new Error(
|
|
107771
107868
|
`[le-env-scrub] Refusing to launch the Local Executor: the scrub marker (${LE_ENV_SCRUBBED_MARKER}) is set but credential-shaped env vars are still present (${scrubbedKeys.join(", ")}). A genuine re-exec'd child has NO credential-shaped vars; this indicates a spoofed marker or a broken scrub. Fail closed (CP-7 I1, A5 parent-procargs vector) \u2014 never launch the LE with a vendor credential in its exec-time procargs.`
|
|
107772
107869
|
);
|
|
107773
|
-
let spawnSyncFn = deps.spawnSyncFn ??
|
|
107870
|
+
let spawnSyncFn = deps.spawnSyncFn ?? import_node_child_process21.spawnSync, execPath = deps.execPath ?? process.execPath, argv = deps.argv ?? process.argv.slice(1), cwd = deps.cwd ?? process.cwd(), scrubbedEnv = buildScrubbedLeEnv(env);
|
|
107774
107871
|
try {
|
|
107775
107872
|
deps.onScrub?.(scrubbedKeys);
|
|
107776
107873
|
} catch {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CommandResult } from './types';
|
|
2
|
+
export declare const GROUP_LEADER_SCRIPT: string;
|
|
3
|
+
export interface GroupRunOptions {
|
|
4
|
+
timeoutMs?: number;
|
|
5
|
+
input?: string;
|
|
6
|
+
env: NodeJS.ProcessEnv;
|
|
7
|
+
}
|
|
8
|
+
export declare function runInOwnProcessGroup(argv: string[], opts: GroupRunOptions): Promise<CommandResult>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quantiya/codevibe-codex-plugin",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.119",
|
|
4
4
|
"description": "Control OpenAI Codex CLI from your iPhone and Android — real-time sync, approve file edits, send prompts by voice. Part of CodeVibe.",
|
|
5
5
|
"main": "dist/server.js",
|
|
6
6
|
"codevibe": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"node": ">=22.0.0"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@quantiya/codevibe-core": "^2.0.
|
|
50
|
+
"@quantiya/codevibe-core": "^2.0.103",
|
|
51
51
|
"@quantiya/quorum-core": "^1.0.1",
|
|
52
52
|
"chokidar": "^4.0.0",
|
|
53
53
|
"dotenv": "^16.6.1",
|