@claudexor/cli 3.23.1 → 3.24.0
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/account-observations.d.ts +7 -3
- package/dist/account-observations.d.ts.map +1 -1
- package/dist/account-observations.js +16 -4
- package/dist/account-observations.js.map +1 -1
- package/dist/claudexord.d.ts.map +1 -1
- package/dist/claudexord.js +6 -1
- package/dist/claudexord.js.map +1 -1
- package/dist/command-flags.d.ts.map +1 -1
- package/dist/command-flags.js +2 -0
- package/dist/command-flags.js.map +1 -1
- package/dist/harness-command-specs.d.ts.map +1 -1
- package/dist/harness-command-specs.js +11 -4
- package/dist/harness-command-specs.js.map +1 -1
- package/dist/harness-command.d.ts.map +1 -1
- package/dist/harness-command.js +5 -0
- package/dist/harness-command.js.map +1 -1
- package/dist/harness-install-proof.d.ts +9 -0
- package/dist/harness-install-proof.d.ts.map +1 -1
- package/dist/harness-install-proof.js +60 -8
- package/dist/harness-install-proof.js.map +1 -1
- package/dist/harness-install-recipes.d.ts +24 -1
- package/dist/harness-install-recipes.d.ts.map +1 -1
- package/dist/harness-install-recipes.js +54 -2
- package/dist/harness-install-recipes.js.map +1 -1
- package/dist/harness-install-runtime.d.ts +29 -0
- package/dist/harness-install-runtime.d.ts.map +1 -0
- package/dist/harness-install-runtime.js +51 -0
- package/dist/harness-install-runtime.js.map +1 -0
- package/dist/harness-installer.d.ts +19 -65
- package/dist/harness-installer.d.ts.map +1 -1
- package/dist/harness-installer.js +46 -48
- package/dist/harness-installer.js.map +1 -1
- package/dist/harness-maintenance-service.d.ts +473 -0
- package/dist/harness-maintenance-service.d.ts.map +1 -0
- package/dist/harness-maintenance-service.js +429 -0
- package/dist/harness-maintenance-service.js.map +1 -0
- package/dist/harness-maintenance.d.ts +62 -0
- package/dist/harness-maintenance.d.ts.map +1 -0
- package/dist/harness-maintenance.js +353 -0
- package/dist/harness-maintenance.js.map +1 -0
- package/dist/model-services.d.ts +9 -1
- package/dist/model-services.d.ts.map +1 -1
- package/dist/model-services.js +39 -10
- package/dist/model-services.js.map +1 -1
- package/package.json +25 -25
|
@@ -11,6 +11,7 @@ import { CLAUDE_VENDOR_CLI_VERSION } from "@claudexor/harness-claude";
|
|
|
11
11
|
import { CODEX_VENDOR_CLI_VERSION } from "@claudexor/harness-codex";
|
|
12
12
|
import { OPENCODE_VENDOR_CLI_VERSION } from "@claudexor/harness-opencode";
|
|
13
13
|
import { copilot } from "@claudexor/harness-acp";
|
|
14
|
+
import { resolveCursorBin } from "@claudexor/harness-cursor";
|
|
14
15
|
import { managedNodeRoot } from "@claudexor/core";
|
|
15
16
|
import { INSTALLABLE_HARNESSES } from "./harness-command-specs.js";
|
|
16
17
|
export function isInstallableHarness(value) {
|
|
@@ -100,7 +101,58 @@ export function scriptInstaller(harness) {
|
|
|
100
101
|
? SCRIPT_INSTALLERS[harness]
|
|
101
102
|
: null;
|
|
102
103
|
}
|
|
103
|
-
|
|
104
|
+
/** The explicit binary override each adapter honours verbatim. A set override
|
|
105
|
+
* means the harness runs THAT program, so maintaining the managed copy would
|
|
106
|
+
* change nothing the harness executes. */
|
|
107
|
+
export const HARNESS_BINARY_OVERRIDE_ENV = {
|
|
108
|
+
agy: "CLAUDEXOR_AGY_BIN",
|
|
109
|
+
claude: "CLAUDEXOR_CLAUDE_BIN",
|
|
110
|
+
codex: "CLAUDEXOR_CODEX_BIN",
|
|
111
|
+
copilot: copilot.binaryEnv,
|
|
112
|
+
cursor: "CLAUDEXOR_CURSOR_BIN",
|
|
113
|
+
opencode: "CLAUDEXOR_OPENCODE_BIN",
|
|
114
|
+
};
|
|
115
|
+
/** The command name (or override) the harness adapter itself spawns: Cursor
|
|
116
|
+
* owns its alias choice (`cursor-agent`, else an `agent` inside a Cursor
|
|
117
|
+
* install), every other harness its recipe launcher, an override verbatim. */
|
|
118
|
+
const ADAPTER_COMMAND = { cursor: resolveCursorBin };
|
|
119
|
+
export function selectedHarnessCommand(harness, env, resolve) {
|
|
120
|
+
const override = env[HARNESS_BINARY_OVERRIDE_ENV[harness]]?.trim();
|
|
121
|
+
if (override)
|
|
122
|
+
return override;
|
|
123
|
+
const adapterOwned = ADAPTER_COMMAND[harness];
|
|
124
|
+
if (adapterOwned)
|
|
125
|
+
return adapterOwned(env, resolve);
|
|
126
|
+
return NPM_PINS[harness]?.binaryNames[0] ?? scriptInstaller(harness)?.binaryName ?? harness;
|
|
127
|
+
}
|
|
128
|
+
/** Verified 2026-10-09 (vendor help/source): `agy update` and Cursor's
|
|
129
|
+
* `update` rewrite these POSIX launchers; Windows is not a verified route. */
|
|
130
|
+
const VENDOR_UPDATER_LAUNCHERS = {
|
|
131
|
+
agy: ["agy"],
|
|
132
|
+
cursor: ["cursor-agent", "agent"],
|
|
133
|
+
};
|
|
134
|
+
export function harnessMaintenanceRecipe(harness, platform = process.platform) {
|
|
135
|
+
if (NPM_PINS[harness]) {
|
|
136
|
+
return {
|
|
137
|
+
mechanism: "managed_npm",
|
|
138
|
+
targets: ["latest", "version", "previous", "baseline"],
|
|
139
|
+
launchers: () => [],
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
const names = VENDOR_UPDATER_LAUNCHERS[harness];
|
|
143
|
+
if (!names || platform === "win32") {
|
|
144
|
+
return { mechanism: "vendor_script", targets: [], launchers: () => [] };
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
mechanism: "vendor_updater",
|
|
148
|
+
targets: ["latest"],
|
|
149
|
+
launchers: (home) => names.map((name) => join(home, ".local", "bin", name)),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
export function harnessInstallerDisclosure(harness, target = "remote", platform = process.platform, _arch = process.arch,
|
|
153
|
+
/** Explicit exact maintenance target; omitted installs the release pin. The
|
|
154
|
+
* pin stays reported as `pinnedVersion` either way. */
|
|
155
|
+
version) {
|
|
104
156
|
const layout = TARGET_LAYOUTS[target];
|
|
105
157
|
const pin = NPM_PINS[harness];
|
|
106
158
|
const windows = platform === "win32";
|
|
@@ -111,7 +163,7 @@ export function harnessInstallerDisclosure(harness, target = "remote", platform
|
|
|
111
163
|
return {
|
|
112
164
|
harness,
|
|
113
165
|
target,
|
|
114
|
-
command: `npm install --global --prefix ${layout.displayRoot} ${pin.npmPackage}@${pin.version}`,
|
|
166
|
+
command: `npm install --global --prefix ${layout.displayRoot} ${pin.npmPackage}@${version ?? pin.version}`,
|
|
115
167
|
installLocation,
|
|
116
168
|
pinnedVersion: pin.version,
|
|
117
169
|
verification: pin.verification,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-install-recipes.js","sourceRoot":"","sources":["../src/harness-install-recipes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"harness-install-recipes.js","sourceRoot":"","sources":["../src/harness-install-recipes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The process context every harness install/maintenance step runs in: the
|
|
3
|
+
* HOME-anchored prefix, the runner Node and its embedded npm, and the clean
|
|
4
|
+
* vendor-child environment. One producer for the installer, the post-install
|
|
5
|
+
* proof and maintenance inspection, so they can never disagree about which
|
|
6
|
+
* prefix or PATH they read.
|
|
7
|
+
*/
|
|
8
|
+
import { spawnSync } from "node:child_process";
|
|
9
|
+
import type { InstallProofRuntime } from "./harness-install-proof.js";
|
|
10
|
+
import type { HarnessInstallTarget } from "./harness-install-recipes.js";
|
|
11
|
+
export interface InstallerRuntimeOptions {
|
|
12
|
+
home?: string;
|
|
13
|
+
nodePath?: string;
|
|
14
|
+
/** Explicit install layout. Omitted preserves the historical remote target. */
|
|
15
|
+
target?: HarnessInstallTarget;
|
|
16
|
+
spawn?: typeof spawnSync;
|
|
17
|
+
platform?: NodeJS.Platform;
|
|
18
|
+
/** The runner Node's architecture (npm selects the platform package by it). */
|
|
19
|
+
arch?: string;
|
|
20
|
+
/** Test/integration source before the clean allowlist and target-aware PATH
|
|
21
|
+
* normalization are applied. Provider credentials are still scrubbed. */
|
|
22
|
+
sourceEnv?: NodeJS.ProcessEnv;
|
|
23
|
+
}
|
|
24
|
+
export interface InstallerRuntime extends InstallProofRuntime {
|
|
25
|
+
home: string;
|
|
26
|
+
target: HarnessInstallTarget;
|
|
27
|
+
}
|
|
28
|
+
export declare function installerRuntime(options?: InstallerRuntimeOptions): InstallerRuntime;
|
|
29
|
+
//# sourceMappingURL=harness-install-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-install-runtime.d.ts","sourceRoot":"","sources":["../src/harness-install-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;6EACyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,gBAAgB,CAsCxF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The process context every harness install/maintenance step runs in: the
|
|
3
|
+
* HOME-anchored prefix, the runner Node and its embedded npm, and the clean
|
|
4
|
+
* vendor-child environment. One producer for the installer, the post-install
|
|
5
|
+
* proof and maintenance inspection, so they can never disagree about which
|
|
6
|
+
* prefix or PATH they read.
|
|
7
|
+
*/
|
|
8
|
+
import { spawnSync } from "node:child_process";
|
|
9
|
+
import { homedir } from "node:os";
|
|
10
|
+
import { resolve } from "node:path";
|
|
11
|
+
import { composeBaseEnv, pickAllowlistedEnv, WINDOWS_RUNTIME_ENV_KEYS } from "@claudexor/core";
|
|
12
|
+
export function installerRuntime(options = {}) {
|
|
13
|
+
// Anchored on the SAME `HOME` the harness PATH producer reads, so the prefix
|
|
14
|
+
// this installs into is the prefix doctor/login/run resolve — on Windows
|
|
15
|
+
// `homedir()` follows USERPROFILE and would silently diverge from a scoped
|
|
16
|
+
// HOME.
|
|
17
|
+
const home = resolve(options.home ?? ((options.sourceEnv ?? process.env).HOME || homedir()));
|
|
18
|
+
const target = options.target ?? "remote";
|
|
19
|
+
const platform = options.platform ?? process.platform;
|
|
20
|
+
const runnerNodePath = resolve(options.nodePath ?? process.execPath);
|
|
21
|
+
// Vendor-controlled npm/curl/shell children receive the shared minimal
|
|
22
|
+
// runtime env, never the parent process's provider credentials.
|
|
23
|
+
const resolutionSource = {
|
|
24
|
+
...(options.sourceEnv ?? process.env),
|
|
25
|
+
HOME: home,
|
|
26
|
+
// Local resolution must not read the SSH-runtime vendor prefix; the remote
|
|
27
|
+
// flow keeps whatever its own runtime already exported.
|
|
28
|
+
...(target === "local" ? { CLAUDEXOR_REMOTE_RUNTIME: "0" } : {}),
|
|
29
|
+
};
|
|
30
|
+
const environment = {
|
|
31
|
+
...composeBaseEnv("clean", resolutionSource, runnerNodePath, platform),
|
|
32
|
+
// npm and the vendor image cannot start on Windows without the process
|
|
33
|
+
// environment the OS itself resolves against (the login/setup lanes
|
|
34
|
+
// forward the same named set).
|
|
35
|
+
...(platform === "win32"
|
|
36
|
+
? pickAllowlistedEnv(resolutionSource, WINDOWS_RUNTIME_ENV_KEYS, platform)
|
|
37
|
+
: {}),
|
|
38
|
+
HOME: home,
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
home,
|
|
42
|
+
target,
|
|
43
|
+
runnerNodePath,
|
|
44
|
+
platform,
|
|
45
|
+
arch: options.arch ?? process.arch,
|
|
46
|
+
resolutionSource,
|
|
47
|
+
environment,
|
|
48
|
+
spawn: options.spawn ?? spawnSync,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=harness-install-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-install-runtime.js","sourceRoot":"","sources":["../src/harness-install-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAuB/F,MAAM,UAAU,gBAAgB,CAAC,OAAO,GAA4B,EAAE;IACpE,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,QAAQ;IACR,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrE,uEAAuE;IACvE,gEAAgE;IAChE,MAAM,gBAAgB,GAAG;QACvB,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;QACrC,IAAI,EAAE,IAAI;QACV,2EAA2E;QAC3E,wDAAwD;QACxD,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;IACF,MAAM,WAAW,GAAG;QAClB,GAAG,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,CAAC;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,+BAA+B;QAC/B,GAAG,CAAC,QAAQ,KAAK,OAAO;YACtB,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,QAAQ,CAAC;YAC1E,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,EAAE,IAAI;KACX,CAAC;IACF,OAAO;QACL,IAAI;QACJ,MAAM;QACN,cAAc;QACd,QAAQ;QACR,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI;QAClC,gBAAgB;QAChB,WAAW;QACX,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;KAClC,CAAC;AACJ,CAAC"}
|
|
@@ -1,58 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `claudexor harness install` — the disclosed, pinned vendor installer
|
|
3
|
-
* (issue #89; restored from the PR #82 cut with the security objections
|
|
4
|
-
* fixed). The historical/default `remote` target remains the SSH-host flow;
|
|
5
|
-
* an explicit `local` target installs into the managed toolchain root that
|
|
6
|
-
* local harness resolution already owns.
|
|
7
|
-
*
|
|
8
|
-
* Contract:
|
|
9
|
-
* - npm-distributed harnesses (claude/codex/opencode) install ONE exact
|
|
10
|
-
* version — the per-package vendor-version SSOT — never `@latest`. npm
|
|
11
|
-
* verifies the registry integrity checksum for an exact version, so the
|
|
12
|
-
* pin is a real guarantee. For claude/codex that SSOT is the value the
|
|
13
|
-
* model/effort freshness gates verified; the opencode pin is a
|
|
14
|
-
* deterministic install target, NOT a verification claim (no recorded
|
|
15
|
-
* fixture yet — see packages/harness-opencode vendor-cli-version.ts).
|
|
16
|
-
* - cursor and agy have no npm artifact and CANNOT be pinned. Instead of
|
|
17
|
-
* pretending, the HUMAN is the verifier: the complete vendor script is
|
|
18
|
-
* downloaded first (never piped to a shell), its size and sha256 are
|
|
19
|
-
* printed, and it runs in the visible PTY the operator is watching — the
|
|
20
|
-
* same principle as interactive SSH auth.
|
|
21
|
-
* - NOTHING executes without authorization: the exact command and install
|
|
22
|
-
* destination print first, and execution needs a TTY confirmation or an
|
|
23
|
-
* explicit `--yes` (the macOS flow confirms against this module's own
|
|
24
|
-
* `--dry-run --json` disclosure before passing `--yes`). For a host
|
|
25
|
-
* integration, `--target local --yes` IS that authorization, granted by the
|
|
26
|
-
* owner action that invoked it; there is no second confirmation hidden
|
|
27
|
-
* inside the producer, and the unattended script path never claims the
|
|
28
|
-
* human-observed verification the watched remote path earns.
|
|
29
|
-
* - concurrent installs into one prefix are serialized by a cross-process
|
|
30
|
-
* lease. A lease whose owner died is NOT reclaimed automatically: it fails
|
|
31
|
-
* closed with a typed `install_lock_stale` and the exact cleanup path.
|
|
32
|
-
* - failures are typed and loud; a failed download, a non-zero installer exit,
|
|
33
|
-
* or a failed post-install binary/version proof never reads as success, and
|
|
34
|
-
* the temp download dir is removed on every path.
|
|
35
|
-
* - the post-install PROOF is what the local target has instead of a witness.
|
|
36
|
-
* A watched remote install keeps the historical exit-code contract, because
|
|
37
|
-
* the operator is looking at the terminal; an unattended local install must
|
|
38
|
-
* earn its `ok:true`, so exit zero without a resolvable launcher and a
|
|
39
|
-
* matching `--version` is a typed failure, and `installedBinary` /
|
|
40
|
-
* `installedVersion` are present on every local success.
|
|
41
|
-
* - on Windows the local target installs only where the pinned npm package
|
|
42
|
-
* yields a verified package-native image (codex): npm's own `.cmd` shim is
|
|
43
|
-
* never the launcher, the embedded Node's `node_modules/npm/bin/npm-cli.js`
|
|
44
|
-
* runs the install, and the proof executes the image the shared harness
|
|
45
|
-
* PATH resolves; other vendors refuse typed before any side effect.
|
|
46
|
-
* - `--json` keeps stdout pure: exactly ONE JSON object. In json mode every
|
|
47
|
-
* human progress line goes to stderr and child processes (npm/curl/the
|
|
48
|
-
* vendor script) run with their stdout routed onto stderr, so vendor
|
|
49
|
-
* output stays visible without corrupting the machine envelope.
|
|
50
|
-
*/
|
|
51
|
-
import { spawnSync } from "node:child_process";
|
|
52
1
|
import { existsSync, mkdirSync } from "node:fs";
|
|
53
2
|
import { type ParsedArgs } from "./args.js";
|
|
54
|
-
import { type
|
|
55
|
-
|
|
3
|
+
import { type InstallerRuntimeOptions } from "./harness-install-runtime.js";
|
|
4
|
+
import { type InstallableHarness } from "./harness-install-recipes.js";
|
|
5
|
+
export { AGY_INSTALL_URL, AGY_INSTALL_URL_WINDOWS, CURSOR_INSTALL_URL, HARNESS_INSTALL_TARGETS, harnessInstallerDisclosure, isHarnessInstallTarget, isInstallableHarness, type InstallableHarness, } from "./harness-install-recipes.js";
|
|
56
6
|
export interface HarnessInstallRunResult {
|
|
57
7
|
exitCode: number;
|
|
58
8
|
/** Set when the installer refused loudly WITHOUT running the vendor
|
|
@@ -68,30 +18,34 @@ export interface HarnessInstallRunResult {
|
|
|
68
18
|
/** Present on every SUCCESS: the exact npm pin, or the script vendor's own
|
|
69
19
|
* trimmed `--version` line. */
|
|
70
20
|
installedVersion?: string;
|
|
21
|
+
/** Explicit-version installs only: the managed package version declared
|
|
22
|
+
* before the first mutation (null when there was none). */
|
|
23
|
+
previousVersion?: string | null;
|
|
71
24
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
25
|
+
/** A local Windows install is supported exactly where the pinned npm package
|
|
26
|
+
* has declared Windows support for this architecture. Post-install proof uses
|
|
27
|
+
* its standard npm entrypoint, whether native or Node. Other recipes keep
|
|
28
|
+
* their existing platform boundary; the remote target is unaffected. */
|
|
29
|
+
export declare function localPlatformRefusal(harness: InstallableHarness, platform: NodeJS.Platform, arch: string): HarnessInstallRunResult | null;
|
|
30
|
+
export declare function runHarnessInstaller(harness: InstallableHarness, options?: InstallerRuntimeOptions & {
|
|
78
31
|
mkdir?: typeof mkdirSync;
|
|
79
32
|
exists?: typeof existsSync;
|
|
80
33
|
/** Production installs serialize cross-process. Tests may disable only this
|
|
81
34
|
* wrapper while preserving the install recipe under test. */
|
|
82
35
|
lock?: boolean;
|
|
83
36
|
lockTimeoutMs?: number;
|
|
84
|
-
platform?: NodeJS.Platform;
|
|
85
|
-
/** The runner Node's architecture (npm selects the platform package by it). */
|
|
86
|
-
arch?: string;
|
|
87
|
-
/** Test/integration source before the clean allowlist and target-aware PATH
|
|
88
|
-
* normalization are applied. Provider credentials are still scrubbed. */
|
|
89
|
-
sourceEnv?: NodeJS.ProcessEnv;
|
|
90
37
|
/** `--json` stdout purity: route human progress lines AND child stdout
|
|
91
38
|
* to stderr, so stdout carries exactly one JSON object (the caller's
|
|
92
39
|
* final envelope). Human mode keeps everything on stdout as before. */
|
|
93
40
|
json?: boolean;
|
|
41
|
+
/** Explicit exact maintenance target (local npm recipes only). Omitted is
|
|
42
|
+
* the ensure path: install the release pin unless the managed copy already
|
|
43
|
+
* runs it or a NEWER runnable version, which is never downgraded. */
|
|
44
|
+
version?: string;
|
|
94
45
|
}): HarnessInstallRunResult;
|
|
46
|
+
/** Blocking y/N read on the controlling TTY (fd 0). Anything but an explicit
|
|
47
|
+
* yes declines — closing stdin or an unreadable terminal never installs. */
|
|
48
|
+
export declare function confirmOnTty(question: string): boolean;
|
|
95
49
|
export declare function harnessInstallCommand(args: ParsedArgs, json: boolean,
|
|
96
50
|
/** Test seam: forwarded to `runHarnessInstaller` (spawn/home/... fakes). */
|
|
97
51
|
runnerOptions?: Omit<NonNullable<Parameters<typeof runHarnessInstaller>[1]>, "json" | "target">): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-installer.d.ts","sourceRoot":"","sources":["../src/harness-installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"harness-installer.d.ts","sourceRoot":"","sources":["../src/harness-installer.ts"],"names":[],"mappings":"AAmDA,OAAO,EAAE,UAAU,EAAE,SAAS,EAA+C,MAAM,SAAS,CAAC;AAI7F,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAiB/D,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE9F,OAAO,EAQL,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AAItC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB;+EAC2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2FAA2F;IAC3F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;mCAC+B;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;+DAC2D;IAC3D,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAeD;;;wEAGwE;AACxE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,IAAI,EAAE,MAAM,GACX,uBAAuB,GAAG,IAAI,CAUhC;AAoBD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,uBAAuB,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,UAAU,CAAC;IAC3B;iEAC6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;2EAEuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;yEAEqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,uBAAuB,CAuNzB;AA2BD;4EAC4E;AAC5E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAetD;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,OAAO;AACb,4EAA4E;AAC5E,aAAa,GAAE,IAAI,CACjB,WAAW,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EACtD,MAAM,GAAG,QAAQ,CACb,GACL,MAAM,CA4ER"}
|
|
@@ -48,18 +48,18 @@
|
|
|
48
48
|
* vendor script) run with their stdout routed onto stderr, so vendor
|
|
49
49
|
* output stays visible without corrupting the machine envelope.
|
|
50
50
|
*/
|
|
51
|
-
import { spawnSync } from "node:child_process";
|
|
52
51
|
import { createHash } from "node:crypto";
|
|
53
52
|
import { existsSync, mkdirSync, mkdtempSync, readFileSync, readSync, rmSync } from "node:fs";
|
|
54
|
-
import {
|
|
55
|
-
import { join
|
|
56
|
-
import {
|
|
53
|
+
import { tmpdir } from "node:os";
|
|
54
|
+
import { join } from "node:path";
|
|
55
|
+
import { embeddedNpmCli, isWindowsNativeArch } from "@claudexor/core";
|
|
57
56
|
import { flagBool, flagStr } from "./args.js";
|
|
58
57
|
import { CliError, renderCliFailure } from "./cli-error.js";
|
|
59
58
|
import { print, printJson, printUsageError } from "./cli-io.js";
|
|
60
59
|
import { INSTALLABLE_HARNESSES } from "./harness-command-specs.js";
|
|
61
60
|
import { acquireHarnessInstallLease, HARNESS_INSTALL_LOCK_TIMEOUT_MS, } from "./harness-install-lease.js";
|
|
62
|
-
import { proveInstalledNpm, proveInstalledScriptVendor, } from "./harness-install-proof.js";
|
|
61
|
+
import { compareVendorVersions, EXACT_VENDOR_VERSION, managedNpmPackageVersion, proveInstalledNpm, proveInstalledScriptVendor, } from "./harness-install-proof.js";
|
|
62
|
+
import { installerRuntime } from "./harness-install-runtime.js";
|
|
63
63
|
import { harnessInstallerDisclosure, isHarnessInstallTarget, isInstallableHarness, NPM_PINS, scriptInstaller, TARGET_LAYOUTS, } from "./harness-install-recipes.js";
|
|
64
64
|
// The recipe surface is re-exported from its historical home: callers and
|
|
65
65
|
// tests import `harness-installer.js`, and the split is an internal one.
|
|
@@ -76,7 +76,7 @@ function verificationFailure(harness, reason, evidence = {}) {
|
|
|
76
76
|
* has declared Windows support for this architecture. Post-install proof uses
|
|
77
77
|
* its standard npm entrypoint, whether native or Node. Other recipes keep
|
|
78
78
|
* their existing platform boundary; the remote target is unaffected. */
|
|
79
|
-
function localPlatformRefusal(harness, platform, arch) {
|
|
79
|
+
export function localPlatformRefusal(harness, platform, arch) {
|
|
80
80
|
if (platform !== "win32")
|
|
81
81
|
return null;
|
|
82
82
|
const pin = NPM_PINS[harness];
|
|
@@ -102,22 +102,14 @@ function harnessInstallException(error) {
|
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
104
|
export function runHarnessInstaller(harness, options = {}) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// `homedir()` follows USERPROFILE and would silently diverge from a scoped
|
|
108
|
-
// HOME.
|
|
109
|
-
const home = resolve(options.home ?? ((options.sourceEnv ?? process.env).HOME || homedir()));
|
|
110
|
-
const target = options.target ?? "remote";
|
|
111
|
-
const platform = options.platform ?? process.platform;
|
|
112
|
-
const arch = options.arch ?? process.arch;
|
|
105
|
+
const runtime = installerRuntime(options);
|
|
106
|
+
const { home, target, platform, arch, runnerNodePath, environment, spawn } = runtime;
|
|
113
107
|
if (target === "local") {
|
|
114
108
|
const unsupported = localPlatformRefusal(harness, platform, arch);
|
|
115
109
|
if (unsupported)
|
|
116
110
|
return unsupported;
|
|
117
111
|
}
|
|
118
|
-
const spawn = options.spawn ?? spawnSync;
|
|
119
112
|
const json = options.json === true;
|
|
120
|
-
const runnerNodePath = resolve(options.nodePath ?? process.execPath);
|
|
121
113
|
// stdin inherited; child stdout -> OUR stderr (fd 2) in json mode so
|
|
122
114
|
// vendor/npm output stays visible but never pollutes the JSON envelope.
|
|
123
115
|
const childStdio = json ? [0, 2, 2] : "inherit";
|
|
@@ -127,27 +119,16 @@ export function runHarnessInstaller(harness, options = {}) {
|
|
|
127
119
|
else
|
|
128
120
|
print(line);
|
|
129
121
|
};
|
|
130
|
-
// Vendor-controlled npm/curl/shell children receive the shared minimal
|
|
131
|
-
// runtime env, never the parent process's provider credentials.
|
|
132
|
-
const resolutionSource = {
|
|
133
|
-
...(options.sourceEnv ?? process.env),
|
|
134
|
-
HOME: home,
|
|
135
|
-
// Local resolution must not read the SSH-runtime vendor prefix; the remote
|
|
136
|
-
// flow keeps whatever its own runtime already exported.
|
|
137
|
-
...(target === "local" ? { CLAUDEXOR_REMOTE_RUNTIME: "0" } : {}),
|
|
138
|
-
};
|
|
139
|
-
const environment = {
|
|
140
|
-
...composeBaseEnv("clean", resolutionSource, runnerNodePath, platform),
|
|
141
|
-
// npm and the vendor image cannot start on Windows without the process
|
|
142
|
-
// environment the OS itself resolves against (the login/setup lanes
|
|
143
|
-
// forward the same named set).
|
|
144
|
-
...(platform === "win32"
|
|
145
|
-
? pickAllowlistedEnv(resolutionSource, WINDOWS_RUNTIME_ENV_KEYS, platform)
|
|
146
|
-
: {}),
|
|
147
|
-
HOME: home,
|
|
148
|
-
};
|
|
149
122
|
const pin = NPM_PINS[harness];
|
|
150
123
|
const script = scriptInstaller(harness);
|
|
124
|
+
const explicit = options.version !== undefined;
|
|
125
|
+
if (explicit && (!pin || target !== "local" || !EXACT_VENDOR_VERSION.test(options.version))) {
|
|
126
|
+
return {
|
|
127
|
+
exitCode: 1,
|
|
128
|
+
code: "version_selection_unsupported",
|
|
129
|
+
refusal: `${harness} accepts an explicit vendor version only as one exact version of a local npm recipe; nothing was executed`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
151
132
|
let npmCLI;
|
|
152
133
|
if (pin) {
|
|
153
134
|
npmCLI = embeddedNpmCli(runnerNodePath, platform);
|
|
@@ -160,20 +141,20 @@ export function runHarnessInstaller(harness, options = {}) {
|
|
|
160
141
|
};
|
|
161
142
|
}
|
|
162
143
|
}
|
|
163
|
-
const proofRuntime = { runnerNodePath, platform, arch, resolutionSource, environment, spawn };
|
|
164
144
|
// The remote target runs in a PTY the operator is watching and keeps the
|
|
165
145
|
// historical exit-code contract. Only the unattended local target has to
|
|
166
146
|
// prove what it installed.
|
|
167
147
|
const proofRequired = target === "local";
|
|
168
|
-
const
|
|
148
|
+
const wanted = options.version ?? pin?.version;
|
|
149
|
+
const proveInstalled = (version = wanted) => pin && version
|
|
169
150
|
? proveInstalledNpm({
|
|
170
151
|
vendorRoot: TARGET_LAYOUTS[target].root(home),
|
|
171
152
|
npmPackage: pin.npmPackage,
|
|
172
153
|
binaryNames: pin.binaryNames,
|
|
173
|
-
expectedVersion:
|
|
174
|
-
},
|
|
154
|
+
expectedVersion: version,
|
|
155
|
+
}, runtime)
|
|
175
156
|
: /* c8 ignore next -- every non-npm harness has a script row */
|
|
176
|
-
proveInstalledScriptVendor(script?.binaryName ?? harness,
|
|
157
|
+
proveInstalledScriptVendor(script?.binaryName ?? harness, runtime);
|
|
177
158
|
let lease;
|
|
178
159
|
try {
|
|
179
160
|
// Serialization belongs to the same contract as the proof: a machine caller
|
|
@@ -195,23 +176,40 @@ export function runHarnessInstaller(harness, options = {}) {
|
|
|
195
176
|
};
|
|
196
177
|
}
|
|
197
178
|
}
|
|
198
|
-
if (pin && npmCLI) {
|
|
179
|
+
if (pin && npmCLI && wanted) {
|
|
199
180
|
const vendorRoot = TARGET_LAYOUTS[target].root(home);
|
|
200
181
|
const alreadyInstalled = proofRequired ? proveInstalled() : null;
|
|
201
182
|
if (alreadyInstalled?.ok) {
|
|
202
|
-
note(`${harness} ${
|
|
183
|
+
note(`${harness} ${wanted} is already installed at ${vendorRoot}; nothing to change`);
|
|
203
184
|
return { exitCode: 0, ...alreadyInstalled.proof };
|
|
204
185
|
}
|
|
186
|
+
const declared = proofRequired
|
|
187
|
+
? managedNpmPackageVersion(vendorRoot, pin.npmPackage, platform)
|
|
188
|
+
: null;
|
|
189
|
+
const newer = !explicit && declared && EXACT_VENDOR_VERSION.test(declared)
|
|
190
|
+
? compareVendorVersions(declared, pin.version) > 0 && proveInstalled(declared)
|
|
191
|
+
: false;
|
|
192
|
+
if (newer && newer.ok) {
|
|
193
|
+
// Ensure never downgrades a runnable newer copy; the pin stays a separate fact.
|
|
194
|
+
note(`${harness} ${declared} (newer than the tested ${pin.version}) is installed; nothing to change`);
|
|
195
|
+
return { exitCode: 0, ...newer.proof };
|
|
196
|
+
}
|
|
197
|
+
const previous = explicit ? { previousVersion: declared } : {};
|
|
205
198
|
(options.mkdir ?? mkdirSync)(vendorRoot, { recursive: true, mode: 0o700 });
|
|
206
|
-
const result = spawn(runnerNodePath, [npmCLI, "install", "--global", "--prefix", vendorRoot, `${pin.npmPackage}@${
|
|
207
|
-
if (result.status !== 0)
|
|
208
|
-
return {
|
|
199
|
+
const result = spawn(runnerNodePath, [npmCLI, "install", "--global", "--prefix", vendorRoot, `${pin.npmPackage}@${wanted}`], { stdio: childStdio, env: environment });
|
|
200
|
+
if (result.status !== 0) {
|
|
201
|
+
return {
|
|
202
|
+
exitCode: result.status ?? 1,
|
|
203
|
+
...(result.signal ? { code: "installer_terminated" } : {}),
|
|
204
|
+
...previous,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
209
207
|
if (!proofRequired)
|
|
210
208
|
return { exitCode: 0 };
|
|
211
209
|
const installed = proveInstalled();
|
|
212
210
|
return installed.ok
|
|
213
|
-
? { exitCode: 0, ...installed.proof }
|
|
214
|
-
: verificationFailure(harness, installed.reason);
|
|
211
|
+
? { exitCode: 0, ...installed.proof, ...previous }
|
|
212
|
+
: { ...verificationFailure(harness, installed.reason), ...previous };
|
|
215
213
|
}
|
|
216
214
|
// Script vendors (cursor, agy): download the COMPLETE vendor script before
|
|
217
215
|
// execution (`--fail` rejects HTTP error bodies), read it back and record
|
|
@@ -324,7 +322,7 @@ function printHumanDisclosure(disclosure) {
|
|
|
324
322
|
}
|
|
325
323
|
/** Blocking y/N read on the controlling TTY (fd 0). Anything but an explicit
|
|
326
324
|
* yes declines — closing stdin or an unreadable terminal never installs. */
|
|
327
|
-
function confirmOnTty(question) {
|
|
325
|
+
export function confirmOnTty(question) {
|
|
328
326
|
process.stdout.write(question);
|
|
329
327
|
const buffer = Buffer.alloc(1024);
|
|
330
328
|
let input = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-installer.js","sourceRoot":"","sources":["../src/harness-installer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"harness-installer.js","sourceRoot":"","sources":["../src/harness-installer.ts"],"names":[],"mappings":"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"}
|