@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.
Files changed (45) hide show
  1. package/dist/account-observations.d.ts +7 -3
  2. package/dist/account-observations.d.ts.map +1 -1
  3. package/dist/account-observations.js +16 -4
  4. package/dist/account-observations.js.map +1 -1
  5. package/dist/claudexord.d.ts.map +1 -1
  6. package/dist/claudexord.js +6 -1
  7. package/dist/claudexord.js.map +1 -1
  8. package/dist/command-flags.d.ts.map +1 -1
  9. package/dist/command-flags.js +2 -0
  10. package/dist/command-flags.js.map +1 -1
  11. package/dist/harness-command-specs.d.ts.map +1 -1
  12. package/dist/harness-command-specs.js +11 -4
  13. package/dist/harness-command-specs.js.map +1 -1
  14. package/dist/harness-command.d.ts.map +1 -1
  15. package/dist/harness-command.js +5 -0
  16. package/dist/harness-command.js.map +1 -1
  17. package/dist/harness-install-proof.d.ts +9 -0
  18. package/dist/harness-install-proof.d.ts.map +1 -1
  19. package/dist/harness-install-proof.js +60 -8
  20. package/dist/harness-install-proof.js.map +1 -1
  21. package/dist/harness-install-recipes.d.ts +24 -1
  22. package/dist/harness-install-recipes.d.ts.map +1 -1
  23. package/dist/harness-install-recipes.js +54 -2
  24. package/dist/harness-install-recipes.js.map +1 -1
  25. package/dist/harness-install-runtime.d.ts +29 -0
  26. package/dist/harness-install-runtime.d.ts.map +1 -0
  27. package/dist/harness-install-runtime.js +51 -0
  28. package/dist/harness-install-runtime.js.map +1 -0
  29. package/dist/harness-installer.d.ts +19 -65
  30. package/dist/harness-installer.d.ts.map +1 -1
  31. package/dist/harness-installer.js +46 -48
  32. package/dist/harness-installer.js.map +1 -1
  33. package/dist/harness-maintenance-service.d.ts +473 -0
  34. package/dist/harness-maintenance-service.d.ts.map +1 -0
  35. package/dist/harness-maintenance-service.js +429 -0
  36. package/dist/harness-maintenance-service.js.map +1 -0
  37. package/dist/harness-maintenance.d.ts +62 -0
  38. package/dist/harness-maintenance.d.ts.map +1 -0
  39. package/dist/harness-maintenance.js +353 -0
  40. package/dist/harness-maintenance.js.map +1 -0
  41. package/dist/model-services.d.ts +9 -1
  42. package/dist/model-services.d.ts.map +1 -1
  43. package/dist/model-services.js +39 -10
  44. package/dist/model-services.js.map +1 -1
  45. 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
- export function harnessInstallerDisclosure(harness, target = "remote", platform = process.platform, _arch = process.arch) {
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 HarnessInstallTarget, type InstallableHarness } from "./harness-install-recipes.js";
55
- export { AGY_INSTALL_URL, AGY_INSTALL_URL_WINDOWS, CURSOR_INSTALL_URL, HARNESS_INSTALL_TARGETS, harnessInstallerDisclosure, isHarnessInstallTarget, isInstallableHarness, type HarnessInstallTarget, type InstallableHarness, } from "./harness-install-recipes.js";
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
- export declare function runHarnessInstaller(harness: InstallableHarness, options?: {
73
- home?: string;
74
- nodePath?: string;
75
- /** Explicit install layout. Omitted preserves the historical remote target. */
76
- target?: HarnessInstallTarget;
77
- spawn?: typeof spawnSync;
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAA+C,MAAM,SAAS,CAAC;AAU7F,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAe/D,OAAO,EAQL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AAItC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,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;CAC3B;AAqDD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE;IACP,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,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,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;IAC9B;;2EAEuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,GACL,uBAAuB,CAqNzB;AA8CD,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"}
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 { homedir, tmpdir } from "node:os";
55
- import { join, resolve } from "node:path";
56
- import { composeBaseEnv, embeddedNpmCli, pickAllowlistedEnv, WINDOWS_RUNTIME_ENV_KEYS, isWindowsNativeArch, } from "@claudexor/core";
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
- // Anchored on the SAME `HOME` the harness PATH producer reads, so the prefix
106
- // this installs into is the prefix doctor/login/run resolve — on Windows
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 proveInstalled = () => pin
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: pin.version,
174
- }, proofRuntime)
154
+ expectedVersion: version,
155
+ }, runtime)
175
156
  : /* c8 ignore next -- every non-npm harness has a script row */
176
- proveInstalledScriptVendor(script?.binaryName ?? harness, proofRuntime);
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} ${pin.version} is already installed at ${vendorRoot}; nothing to change`);
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}@${pin.version}`], { stdio: childStdio, env: environment });
207
- if (result.status !== 0)
208
- return { exitCode: result.status ?? 1 };
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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"}