@claudexor/core 3.0.4 → 3.1.1
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/answer-assembly.d.ts +17 -1
- package/dist/answer-assembly.d.ts.map +1 -1
- package/dist/answer-assembly.js +36 -10
- package/dist/answer-assembly.js.map +1 -1
- package/dist/effort.d.ts +54 -12
- package/dist/effort.d.ts.map +1 -1
- package/dist/effort.js +60 -39
- package/dist/effort.js.map +1 -1
- package/dist/env-scope.d.ts +1 -1
- package/dist/env-scope.d.ts.map +1 -1
- package/dist/env-scope.js +2 -2
- package/dist/env-scope.js.map +1 -1
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -1
- package/dist/inactivity.d.ts +7 -14
- package/dist/inactivity.d.ts.map +1 -1
- package/dist/inactivity.js +97 -10
- package/dist/inactivity.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/native/claudexor-process-identity +0 -0
- package/dist/proc.d.ts +53 -0
- package/dist/proc.d.ts.map +1 -1
- package/dist/proc.js +150 -42
- package/dist/proc.js.map +1 -1
- package/dist/process-identity.d.ts.map +1 -1
- package/dist/process-identity.js +17 -7
- package/dist/process-identity.js.map +1 -1
- package/dist/process-tree.d.ts +116 -0
- package/dist/process-tree.d.ts.map +1 -0
- package/dist/process-tree.js +258 -0
- package/dist/process-tree.js.map +1 -0
- package/dist/runloop.d.ts +5 -0
- package/dist/runloop.d.ts.map +1 -1
- package/dist/runloop.js +41 -0
- package/dist/runloop.js.map +1 -1
- package/dist/runtime-env.d.ts +57 -3
- package/dist/runtime-env.d.ts.map +1 -1
- package/dist/runtime-env.js +187 -10
- package/dist/runtime-env.js.map +1 -1
- package/package.json +3 -3
package/dist/runtime-env.js
CHANGED
|
@@ -1,14 +1,75 @@
|
|
|
1
|
+
import { existsSync, lstatSync, readlinkSync, realpathSync, statSync } from "node:fs";
|
|
1
2
|
import { homedir } from "node:os";
|
|
2
|
-
import { delimiter, isAbsolute, join } from "node:path";
|
|
3
|
+
import { basename, delimiter, dirname, isAbsolute, join } from "node:path";
|
|
3
4
|
import { isLaunchableExecutable } from "./executable-inspection.js";
|
|
5
|
+
/**
|
|
6
|
+
* The directory of the Node binary Claudexor ITSELF is running on, when that
|
|
7
|
+
* binary is safe to expose to a harness's inner login shell. In production this
|
|
8
|
+
* is the notarized app-bundled runtime
|
|
9
|
+
* (`.../Claudexor.app/Contents/Resources`); a CLI/dev daemon runs on the
|
|
10
|
+
* managed `~/.claudexor/node/bin/node`. Putting this dir FIRST on the harness
|
|
11
|
+
* PATH is the QA-022 fix: a vendor tool's inner `/bin/bash -lc` grandchild
|
|
12
|
+
* re-sources login profiles (`path_helper`, `brew shellenv`) and would
|
|
13
|
+
* otherwise resolve an ad-hoc Homebrew Node that macOS's code-signing monitor
|
|
14
|
+
* SIGKILLs (`Killed: 9`). Anchoring the SAME Node the daemon already proved
|
|
15
|
+
* runnable — by executing on it — lets the grandchild resolve a working Node
|
|
16
|
+
* even after the login shell reshuffles PATH.
|
|
17
|
+
*
|
|
18
|
+
* Guarded so the prepend can never make things worse:
|
|
19
|
+
* - the path must be absolute and a spawnable regular file (the running
|
|
20
|
+
* process is itself proof the bytes launch — "self-contained/valid");
|
|
21
|
+
* - it must NOT itself be an at-risk Homebrew Node — prepending a killable
|
|
22
|
+
* Node's dir would poison the very shell we are trying to protect;
|
|
23
|
+
* - the REAL binary's dir (symlinks followed) is what we anchor — a symlinked
|
|
24
|
+
* launcher must not put the WRONG dir first on the harness PATH;
|
|
25
|
+
* - that dir must NOT be group/world-writable — prepending a dir any non-owner
|
|
26
|
+
* can write to lets a local attacker drop a malicious `node`/`bash` that then
|
|
27
|
+
* SHADOWS the system tools for every harness child.
|
|
28
|
+
* Returns null when any guard fails; the guessed `preferred` entries still apply.
|
|
29
|
+
*/
|
|
30
|
+
export function managedRunnerNodeDir(execPath = process.execPath, platform = process.platform) {
|
|
31
|
+
if (!execPath || !isAbsolute(execPath))
|
|
32
|
+
return null;
|
|
33
|
+
if (atRiskNodeAdvisory(execPath, platform) !== null)
|
|
34
|
+
return null;
|
|
35
|
+
// realpath + regular-file + executable facts (identity-stable, bounded).
|
|
36
|
+
if (!isLaunchableExecutable(execPath))
|
|
37
|
+
return null;
|
|
38
|
+
// Anchor the REAL binary's dir (follow symlinks) rather than the launcher's.
|
|
39
|
+
let runnerDir;
|
|
40
|
+
try {
|
|
41
|
+
runnerDir = dirname(realpathSync(execPath));
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
// A group/world-writable runner dir is an injection surface — skip the prepend.
|
|
47
|
+
if (platform !== "win32" && dirIsGroupOrWorldWritable(runnerDir))
|
|
48
|
+
return null;
|
|
49
|
+
return runnerDir;
|
|
50
|
+
}
|
|
51
|
+
/** True when `dir` is writable by group or other (POSIX mode & 0o022), or cannot
|
|
52
|
+
* be stat'd (an undeterminable dir is not provably safe — treat as unsafe). */
|
|
53
|
+
function dirIsGroupOrWorldWritable(dir) {
|
|
54
|
+
try {
|
|
55
|
+
return (statSync(dir).mode & 0o022) !== 0;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
4
61
|
/**
|
|
5
62
|
* Single producer for the PATH every local harness discovery/run surface should
|
|
6
63
|
* use. Surfaces may still inherit other env vars, but binary resolution must not
|
|
7
64
|
* depend on whether the daemon was launched from a GUI app, login shell, or CLI.
|
|
65
|
+
* Existing inherited entries are never dropped (only de-duplicated); the only
|
|
66
|
+
* additions are the trusted `preferred` prefixes.
|
|
8
67
|
*/
|
|
9
|
-
export function normalizedHarnessPath(source = process.env) {
|
|
68
|
+
export function normalizedHarnessPath(source = process.env, execPath = process.execPath, platform = process.platform) {
|
|
10
69
|
const home = source.HOME || homedir();
|
|
70
|
+
const runnerDir = managedRunnerNodeDir(execPath, platform);
|
|
11
71
|
const preferred = [
|
|
72
|
+
...(runnerDir ? [runnerDir] : []),
|
|
12
73
|
join(home, ".claudexor", "node", "bin"),
|
|
13
74
|
join(home, ".local", "bin"),
|
|
14
75
|
join(home, ".npm-global", "bin"),
|
|
@@ -31,8 +92,8 @@ export function normalizedHarnessPath(source = process.env) {
|
|
|
31
92
|
})
|
|
32
93
|
.join(delimiter);
|
|
33
94
|
}
|
|
34
|
-
export function harnessRuntimeEnv(source = process.env) {
|
|
35
|
-
return { ...source, PATH: normalizedHarnessPath(source) };
|
|
95
|
+
export function harnessRuntimeEnv(source = process.env, execPath = process.execPath, platform = process.platform) {
|
|
96
|
+
return { ...source, PATH: normalizedHarnessPath(source, execPath, platform) };
|
|
36
97
|
}
|
|
37
98
|
/**
|
|
38
99
|
* Resolve which binary a harness child will ACTUALLY execute, using the same
|
|
@@ -40,16 +101,23 @@ export function harnessRuntimeEnv(source = process.env) {
|
|
|
40
101
|
* stale pinned shim (e.g. `~/.claudexor/node/bin/codex` shadowing a newer
|
|
41
102
|
* install) is visible instead of silently answering for the wrong version.
|
|
42
103
|
* Returns null when the binary is not on the harness PATH.
|
|
104
|
+
*
|
|
105
|
+
* `execPath`/`platform` are forwarded to `normalizedHarnessPath` (same defaults,
|
|
106
|
+
* so production behavior is unchanged). Forwarding them is what lets a test
|
|
107
|
+
* fully control the resolution PATH: without it the resolver always anchors the
|
|
108
|
+
* REAL `process.execPath` dir (e.g. `~/.claudexor/node/bin`) first, and any
|
|
109
|
+
* `claude`/`codex` living beside the running Node shadows an injected fixture —
|
|
110
|
+
* the machine-specific parity failure this seam closes.
|
|
43
111
|
*/
|
|
44
|
-
export function resolveHarnessBinary(bin, source = process.env) {
|
|
45
|
-
const names = binaryNameCandidates(bin, source);
|
|
112
|
+
export function resolveHarnessBinary(bin, source = process.env, execPath = process.execPath, platform = process.platform) {
|
|
113
|
+
const names = binaryNameCandidates(bin, source, platform);
|
|
46
114
|
if (isAbsolute(bin)) {
|
|
47
115
|
for (const name of names)
|
|
48
116
|
if (isLaunchableExecutable(name))
|
|
49
117
|
return name;
|
|
50
118
|
return null;
|
|
51
119
|
}
|
|
52
|
-
for (const dir of normalizedHarnessPath(source).split(delimiter)) {
|
|
120
|
+
for (const dir of normalizedHarnessPath(source, execPath, platform).split(delimiter)) {
|
|
53
121
|
if (!dir)
|
|
54
122
|
continue;
|
|
55
123
|
for (const name of names) {
|
|
@@ -64,10 +132,12 @@ export function resolveHarnessBinary(bin, source = process.env) {
|
|
|
64
132
|
* Name candidates in cmd.exe lookup order: on Windows a bare `codex` is
|
|
65
133
|
* spawnable as `codex.exe`/`codex.cmd` via PATHEXT, so the resolver must try
|
|
66
134
|
* those too or doctor reports null for a perfectly runnable CLI. Elsewhere the
|
|
67
|
-
* name is used as-is.
|
|
135
|
+
* name is used as-is. `platform` is forwarded from the resolver (same default,
|
|
136
|
+
* so production is unchanged) so an injected win32 gets win32 name candidates,
|
|
137
|
+
* not just win32 PATH ordering.
|
|
68
138
|
*/
|
|
69
|
-
function binaryNameCandidates(bin, source) {
|
|
70
|
-
if (
|
|
139
|
+
function binaryNameCandidates(bin, source, platform = process.platform) {
|
|
140
|
+
if (platform !== "win32")
|
|
71
141
|
return [bin];
|
|
72
142
|
const exts = (source.PATHEXT ?? ".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean);
|
|
73
143
|
const lower = bin.toLowerCase();
|
|
@@ -75,6 +145,113 @@ function binaryNameCandidates(bin, source) {
|
|
|
75
145
|
return [bin];
|
|
76
146
|
return [bin, ...exts.map((e) => bin + e)];
|
|
77
147
|
}
|
|
148
|
+
const HOMEBREW_PREFIXES = ["/opt/homebrew", "/usr/local", "/home/linuxbrew/.linuxbrew"];
|
|
149
|
+
/**
|
|
150
|
+
* Advisory explaining WHY a harness binary failed to resolve when the
|
|
151
|
+
* filesystem still holds evidence of an install. The live incident this
|
|
152
|
+
* guards: Homebrew's codex cask stayed registered (Caskroom dir present,
|
|
153
|
+
* version pinned) while its payload and bin link had vanished, so every
|
|
154
|
+
* surface dead-ended at "not found on PATH"/ENOENT with no path to repair.
|
|
155
|
+
* Two evidence classes, checked in order:
|
|
156
|
+
*
|
|
157
|
+
* 1. an entry named like the binary exists on the harness PATH (or at the
|
|
158
|
+
* configured absolute override) but is not spawnable — dangling symlink,
|
|
159
|
+
* exec bit stripped, or a directory shadowing the name;
|
|
160
|
+
* 2. nothing is on PATH at all, but a Homebrew Caskroom/Cellar dir still
|
|
161
|
+
* lists the binary as installed.
|
|
162
|
+
*
|
|
163
|
+
* Diagnostic only (doctor/discover append it); never gates a run and never
|
|
164
|
+
* executes a package manager. Returns null when the binary resolves or when
|
|
165
|
+
* there is nothing better to say than "not installed".
|
|
166
|
+
*/
|
|
167
|
+
export function brokenInstallAdvisory(bin, source = process.env, brewPrefixes = HOMEBREW_PREFIXES) {
|
|
168
|
+
if (resolveHarnessBinary(bin, source) !== null)
|
|
169
|
+
return null;
|
|
170
|
+
const name = basename(bin);
|
|
171
|
+
const names = binaryNameCandidates(bin, source);
|
|
172
|
+
const candidates = isAbsolute(bin)
|
|
173
|
+
? names
|
|
174
|
+
: normalizedHarnessPath(source)
|
|
175
|
+
.split(delimiter)
|
|
176
|
+
.filter(Boolean)
|
|
177
|
+
.flatMap((dir) => names.map((n) => join(dir, n)));
|
|
178
|
+
for (const candidate of candidates) {
|
|
179
|
+
const kind = lstatKind(candidate);
|
|
180
|
+
if (kind === null)
|
|
181
|
+
continue;
|
|
182
|
+
const target = kind === "symlink" ? readlinkOrNull(candidate) : null;
|
|
183
|
+
const where = target === null ? candidate : `${candidate} (symlink to ${target})`;
|
|
184
|
+
const how = kind === "symlink" && !existsSync(candidate)
|
|
185
|
+
? "its target is missing"
|
|
186
|
+
: kind === "dir"
|
|
187
|
+
? "it is a directory, not a binary"
|
|
188
|
+
: "it is not executable";
|
|
189
|
+
const fix = brewRemediation(target ?? candidate) ??
|
|
190
|
+
`reinstall ${name} or point the binary override at a working install`;
|
|
191
|
+
return `${where} exists but ${how} — ${fix}`;
|
|
192
|
+
}
|
|
193
|
+
if (!SAFE_BREW_NAME.test(name))
|
|
194
|
+
return null;
|
|
195
|
+
for (const prefix of brewPrefixes) {
|
|
196
|
+
for (const [room, flag] of [
|
|
197
|
+
["Caskroom", " --cask"],
|
|
198
|
+
["Cellar", ""],
|
|
199
|
+
]) {
|
|
200
|
+
const dir = join(prefix, room, name);
|
|
201
|
+
if (lstatKind(dir) === "dir") {
|
|
202
|
+
// An absolute override never scanned PATH, so say what was actually
|
|
203
|
+
// checked instead of claiming a PATH sweep that did not happen.
|
|
204
|
+
const evidence = isAbsolute(bin)
|
|
205
|
+
? `the configured override ${bin} does not exist`
|
|
206
|
+
: `no runnable binary is on the harness PATH`;
|
|
207
|
+
return `Homebrew still lists ${name} as installed (${dir}) but ${evidence} — broken install; run \`brew reinstall${flag} ${name}\`${isAbsolute(bin) ? " or fix the binary override" : ""}`;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
function lstatKind(path) {
|
|
214
|
+
try {
|
|
215
|
+
const s = lstatSync(path);
|
|
216
|
+
return s.isSymbolicLink() ? "symlink" : s.isDirectory() ? "dir" : "file";
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
function readlinkOrNull(path) {
|
|
223
|
+
try {
|
|
224
|
+
return readlinkSync(path);
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/** A copyable `brew` command is emitted only for names shaped like real
|
|
231
|
+
* Homebrew tokens: a configured override whose basename carries whitespace,
|
|
232
|
+
* quotes, or shell metacharacters must never become a pasteable command. */
|
|
233
|
+
const SAFE_BREW_NAME = /^[A-Za-z0-9][A-Za-z0-9@+._-]*$/;
|
|
234
|
+
/** The brew package token is the path segment AFTER Caskroom/Cellar — a
|
|
235
|
+
* binary's name can differ from the package that ships it, and the
|
|
236
|
+
* remediation must name the package. */
|
|
237
|
+
function brewToken(pathish, room) {
|
|
238
|
+
const marker = `/${room}/`;
|
|
239
|
+
const idx = pathish.indexOf(marker);
|
|
240
|
+
if (idx === -1)
|
|
241
|
+
return null;
|
|
242
|
+
const token = pathish.slice(idx + marker.length).split("/")[0] ?? "";
|
|
243
|
+
return SAFE_BREW_NAME.test(token) ? token : null;
|
|
244
|
+
}
|
|
245
|
+
/** Attribute a broken entry to Homebrew via its canonical payload dirs. */
|
|
246
|
+
function brewRemediation(pathish) {
|
|
247
|
+
const cask = brewToken(pathish, "Caskroom");
|
|
248
|
+
if (cask)
|
|
249
|
+
return `run \`brew reinstall --cask ${cask}\``;
|
|
250
|
+
const formula = brewToken(pathish, "Cellar");
|
|
251
|
+
if (formula)
|
|
252
|
+
return `run \`brew reinstall ${formula}\``;
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
78
255
|
/**
|
|
79
256
|
* Advisory when the Node binary running Claudexor is one macOS's code-signing
|
|
80
257
|
* monitor is known to SIGKILL (Homebrew's adhoc-signed node). The daemon spawns
|
package/dist/runtime-env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-env.js","sourceRoot":"","sources":["../src/runtime-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-env.js","sourceRoot":"","sources":["../src/runtime-env.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudexor/core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "HarnessAdapter contract, process helpers, typed errors, and low-level execution utilities.",
|
|
6
6
|
"type": "module",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@playwright/mcp": "0.0.78",
|
|
23
|
-
"@claudexor/
|
|
24
|
-
"@claudexor/
|
|
23
|
+
"@claudexor/util": "3.1.1",
|
|
24
|
+
"@claudexor/schema": "3.1.1"
|
|
25
25
|
},
|
|
26
26
|
"repository": {
|
|
27
27
|
"type": "git",
|