@claudexor/harness-claude 3.13.0 → 3.14.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.
@@ -4,9 +4,10 @@ export declare const CLAUDE_MANAGED_LOGIN: {
4
4
  readonly stdin: "pipe";
5
5
  };
6
6
  /**
7
- * Manifest model truth source (strict model-truth validation: an explicit
8
- * model outside this list is refused, never forwarded to die as a native
9
- * error). Stable aliases plus current full ids; verified against the vendor
7
+ * Manifest model hint list: the frozen floor every `models()` answer carries
8
+ * (`origin: "hint"`), judged under the adapter's ADVISORY declaration — an
9
+ * explicit model outside it is forwarded to the vendor with a note, never
10
+ * refused (INV-104). Stable aliases plus current full ids; verified against the vendor
10
11
  * model-config docs and the INSTALLED CLI recorded in
11
12
  * `CLAUDE_KNOWN_MODELS_VERIFIED_AGAINST`.
12
13
  */
@@ -16,10 +17,14 @@ export declare const CLAUDE_KNOWN_MODELS: readonly string[];
16
17
  * known-model list remains the SSOT: a newly verified full id automatically
17
18
  * joins its family without another quota-router patch. */
18
19
  export declare function claudeQuotaModelAliases(displayName: string): string[];
19
- /** Installed vendor CLI the known-model list above was last live-verified
20
- * against (the strict freshness gate compares this against the live CLI).
21
- * Aliases the per-package vendor-version SSOT so the freshness gate and the
22
- * remote installer's pin read the SAME value (vendor-cli-version.ts). */
20
+ /**
21
+ * Installed vendor CLI the known-model list above was last ACTUALLY verified
22
+ * against. A frozen literal on purpose, no longer an alias of the installer pin
23
+ * (vendor-cli-version.ts): aliasing let a pin bump silently re-stamp this list
24
+ * as "verified on the new CLI" when nobody re-checked it. The list is now a
25
+ * hint seed behind the live `models()` producer (model-probe.ts), it never
26
+ * grows again, and its stamp only moves when someone re-verifies the ids.
27
+ */
23
28
  export declare const CLAUDE_KNOWN_MODELS_VERIFIED_AGAINST: string;
24
29
  export declare const CLAUDE_CAPABILITY_PROFILE: HarnessCapabilityProfile;
25
30
  //# sourceMappingURL=capability-profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capability-profile.d.ts","sourceRoot":"","sources":["../src/capability-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAIlE,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB;aAAK,KAAK,EAAE,MAAM;CAAW,CAAC;AAE/D;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAmBhD,CAAC;AAEF;;;0DAG0D;AAC1D,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAWrE;AAED;;;yEAGyE;AACzE,eAAO,MAAM,oCAAoC,EAAE,MAAkC,CAAC;AAEtF,eAAO,MAAM,yBAAyB,EAAE,wBAqCpC,CAAC"}
1
+ {"version":3,"file":"capability-profile.d.ts","sourceRoot":"","sources":["../src/capability-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAGlE,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB;aAAK,KAAK,EAAE,MAAM;CAAW,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAmBhD,CAAC;AAEF;;;0DAG0D;AAC1D,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAWrE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oCAAoC,EAAE,MAAkB,CAAC;AAEtE,eAAO,MAAM,yBAAyB,EAAE,wBAqCpC,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { HarnessCapabilityProfile as HarnessCapabilityProfileSchema } from "@claudexor/schema";
2
- import { CLAUDE_VENDOR_CLI_VERSION } from "./vendor-cli-version.js";
3
2
  /** One manifest-owned declaration of the managed login's stdin contract. */
4
3
  export const CLAUDE_MANAGED_LOGIN = { stdin: "pipe" };
5
4
  /**
6
- * Manifest model truth source (strict model-truth validation: an explicit
7
- * model outside this list is refused, never forwarded to die as a native
8
- * error). Stable aliases plus current full ids; verified against the vendor
5
+ * Manifest model hint list: the frozen floor every `models()` answer carries
6
+ * (`origin: "hint"`), judged under the adapter's ADVISORY declaration — an
7
+ * explicit model outside it is forwarded to the vendor with a note, never
8
+ * refused (INV-104). Stable aliases plus current full ids; verified against the vendor
9
9
  * model-config docs and the INSTALLED CLI recorded in
10
10
  * `CLAUDE_KNOWN_MODELS_VERIFIED_AGAINST`.
11
11
  */
@@ -16,7 +16,7 @@ export const CLAUDE_KNOWN_MODELS = [
16
16
  "fable",
17
17
  "best",
18
18
  // Fable 5.1 requires Claude Code >= 2.1.251. Re-verified through the
19
- // pinned 2.1.261 CLI with observed_model claude-fable-5-1.
19
+ // then-pinned 2.1.261 CLI with observed_model claude-fable-5-1.
20
20
  "claude-fable-5-1",
21
21
  "claude-fable-5",
22
22
  "claude-sonnet-5",
@@ -44,11 +44,15 @@ export function claudeQuotaModelAliases(displayName) {
44
44
  // disclosed which model it actually selected.
45
45
  return [...new Set([...(aliases.length > 0 ? aliases : [family]), "best"])];
46
46
  }
47
- /** Installed vendor CLI the known-model list above was last live-verified
48
- * against (the strict freshness gate compares this against the live CLI).
49
- * Aliases the per-package vendor-version SSOT so the freshness gate and the
50
- * remote installer's pin read the SAME value (vendor-cli-version.ts). */
51
- export const CLAUDE_KNOWN_MODELS_VERIFIED_AGAINST = CLAUDE_VENDOR_CLI_VERSION;
47
+ /**
48
+ * Installed vendor CLI the known-model list above was last ACTUALLY verified
49
+ * against. A frozen literal on purpose, no longer an alias of the installer pin
50
+ * (vendor-cli-version.ts): aliasing let a pin bump silently re-stamp this list
51
+ * as "verified on the new CLI" when nobody re-checked it. The list is now a
52
+ * hint seed behind the live `models()` producer (model-probe.ts), it never
53
+ * grows again, and its stamp only moves when someone re-verifies the ids.
54
+ */
55
+ export const CLAUDE_KNOWN_MODELS_VERIFIED_AGAINST = "2.1.261";
52
56
  export const CLAUDE_CAPABILITY_PROFILE = HarnessCapabilityProfileSchema.parse({
53
57
  auth: {
54
58
  supported_sources: ["native_session", "oauth_token_env", "api_key_env"],
@@ -1 +1 @@
1
- {"version":3,"file":"capability-profile.js","sourceRoot":"","sources":["../src/capability-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capability-profile.js","sourceRoot":"","sources":["../src/capability-profile.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ import { EffortHint } from "@claudexor/schema";
21
21
  export declare const BIN: string;
22
22
  /**
23
23
  * Recorded fallback, captured from `claude --help` on the CLI version stamped
24
- * below (2.1.261 retains the full low/medium/high/xhigh/max ladder). Used ONLY
24
+ * below (2.1.281 retains the full low/medium/high/xhigh/max ladder). Used ONLY
25
25
  * when the live parse cannot answer.
26
26
  */
27
27
  export declare const CLAUDE_EFFORT_SNAPSHOT: readonly EffortHint[];
@@ -39,7 +39,7 @@ export declare const CLAUDE_EFFORT_SNAPSHOT_VERIFIED_AGAINST: string;
39
39
  * — `--effort xhigh` then went to a CLI that refuses the flag.
40
40
  *
41
41
  * The installed version string is whatever `claude --version` printed
42
- * (e.g. `2.1.261 (Claude Code)`), so the comparison extracts the full dotted
42
+ * (e.g. `2.1.281 (Claude Code)`), so the comparison extracts the full dotted
43
43
  * numeric token and requires it to EQUAL the snapshot stamp exactly. An
44
44
  * unknown or unparseable version can never vouch for the snapshot.
45
45
  */
@@ -70,13 +70,26 @@ export declare function claudeAdvertisedEffortsForRun(efforts: {
70
70
  * happens only when it can matter (fallback ladder AND an effort actually
71
71
  * requested); a live parse or a hint-less run never pays for it.
72
72
  */
73
- export declare function claudeRunEffortResolution(spec: Pick<HarnessRunSpec, "session_id" | "effort_hint">, deps: {
73
+ export declare function claudeRunEffortResolution(spec: Pick<HarnessRunSpec, "session_id" | "effort_hint"> & {
74
+ env?: HarnessRunSpec["env"];
75
+ }, deps: {
74
76
  probeEffortLevels: typeof probeClaudeEffortLevels;
75
- detectVersion: (abortSignal?: AbortSignal) => Promise<string | null>;
77
+ detectVersion: typeof detectClaudeVersion;
76
78
  }, abortSignal?: AbortSignal): Promise<{
77
79
  advertised: readonly EffortHint[];
78
80
  disclosure: HarnessEvent | null;
79
81
  }>;
82
+ /** The PATH a run's env patch selects the binary on, when it carries one. */
83
+ export declare function claudeRunPatchPath(spec: {
84
+ env?: HarnessRunSpec["env"];
85
+ }): string | undefined;
86
+ /**
87
+ * `claude --version` of the binary a caller will execute — resolved and spawned
88
+ * exactly as the `--help` memo is (host PATH, or the caller's PATH patch), so the
89
+ * snapshot-trust gate (INV-105) judges the binary whose ladder it fell back
90
+ * from, never a different host install's. Null when nothing could be spawned.
91
+ */
92
+ export declare function detectClaudeVersion(abortSignal?: AbortSignal, patchPath?: string): Promise<string | null>;
80
93
  /**
81
94
  * Pull the advertised levels out of `claude --help` text, or null when the
82
95
  * `--effort` line is absent or documents no values.
@@ -99,13 +112,15 @@ type ClaudeHelpProbe = {
99
112
  * anyway, and the ladder falls back to the snapshot for that one run — while the
100
113
  * capture keeps running for everybody else.
101
114
  */
102
- export declare function probeClaudeHelp(abortSignal?: AbortSignal): Promise<ClaudeHelpProbe>;
115
+ export declare function probeClaudeHelp(abortSignal?: AbortSignal, patchPath?: string): Promise<ClaudeHelpProbe>;
103
116
  /**
104
117
  * The effort ladder the INSTALLED claude binary advertises, falling back to the
105
118
  * recorded snapshot when `--help` cannot be read or no longer documents the
106
119
  * values. A probe failure costs freshness, never the run.
107
120
  */
108
- export declare function probeClaudeEffortLevels(abortSignal?: AbortSignal): Promise<{
121
+ export declare function probeClaudeEffortLevels(abortSignal?: AbortSignal,
122
+ /** The run's PATH patch, when its env carries one (see helpProbeIdentity). */
123
+ patchPath?: string): Promise<{
109
124
  levels: readonly EffortHint[];
110
125
  live: boolean;
111
126
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"effort-probe.d.ts","sourceRoot":"","sources":["../src/effort-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,eAAO,MAAM,GAAG,QAA+C,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,UAAU,EAMvD,CAAC;AAEF;;;iEAGiE;AACjE,eAAO,MAAM,uCAAuC,EAAE,MAAkC,CAAC;AAEzF;;;;;;;;;;;;GAYG;AACH,wBAAgB,+BAA+B,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAIxF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE;IAAE,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,EACzD,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAC9B,SAAS,UAAU,EAAE,CAGvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC,EACxD,IAAI,EAAE;IACJ,iBAAiB,EAAE,OAAO,uBAAuB,CAAC;IAClD,aAAa,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACtE,EACD,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC;IAAE,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC;IAAC,UAAU,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CAAC,CAOjF;AAUD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,CA2CvE;AAqCD,KAAK,eAAe,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAoEjF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAYnF;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAI3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC,EACxD,UAAU,EAAE,SAAS,UAAU,EAAE,GAChC,YAAY,GAAG,IAAI,CAsBrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC,EACxD,UAAU,EAAE,SAAS,UAAU,EAAE,GAChC,YAAY,GAAG,IAAI,CAErB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC,EACxD,UAAU,EAAE,SAAS,UAAU,EAAE,EACjC,MAAM,GAAE,SAAS,UAAU,EAAe,GACzC,YAAY,GAAG,IAAI,CAerB"}
1
+ {"version":3,"file":"effort-probe.d.ts","sourceRoot":"","sources":["../src/effort-probe.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { EffortHint } from "@claudexor/schema";
2
- import { normalizeEffort, resolveEffort, runCapture } from "@claudexor/core";
2
+ import { harnessBinaryIdentity, harnessBinaryIdentityOnPath, normalizeEffort, resolveEffort, runCapture, } from "@claudexor/core";
3
3
  import { nowIso, redactSecrets } from "@claudexor/util";
4
4
  import { CLAUDE_VENDOR_CLI_VERSION } from "./vendor-cli-version.js";
5
5
  export const BIN = process.env.CLAUDEXOR_CLAUDE_BIN || "claude";
6
6
  /**
7
7
  * Recorded fallback, captured from `claude --help` on the CLI version stamped
8
- * below (2.1.261 retains the full low/medium/high/xhigh/max ladder). Used ONLY
8
+ * below (2.1.281 retains the full low/medium/high/xhigh/max ladder). Used ONLY
9
9
  * when the live parse cannot answer.
10
10
  */
11
11
  export const CLAUDE_EFFORT_SNAPSHOT = [
@@ -29,7 +29,7 @@ export const CLAUDE_EFFORT_SNAPSHOT_VERIFIED_AGAINST = CLAUDE_VENDOR_CLI_VERSION
29
29
  * — `--effort xhigh` then went to a CLI that refuses the flag.
30
30
  *
31
31
  * The installed version string is whatever `claude --version` printed
32
- * (e.g. `2.1.261 (Claude Code)`), so the comparison extracts the full dotted
32
+ * (e.g. `2.1.281 (Claude Code)`), so the comparison extracts the full dotted
33
33
  * numeric token and requires it to EQUAL the snapshot stamp exactly. An
34
34
  * unknown or unparseable version can never vouch for the snapshot.
35
35
  */
@@ -67,12 +67,41 @@ export function claudeAdvertisedEffortsForRun(efforts, installedVersion) {
67
67
  * requested); a live parse or a hint-less run never pays for it.
68
68
  */
69
69
  export async function claudeRunEffortResolution(spec, deps, abortSignal) {
70
- const efforts = await deps.probeEffortLevels(abortSignal);
70
+ // Both answers must come from the binary THIS run will execute: a PATH in the
71
+ // run's env patch replaces the normalized PATH at spawn (see helpProbeIdentity),
72
+ // and a host binary's version must never vouch for the snapshot on the patch's.
73
+ const patchPath = claudeRunPatchPath(spec);
74
+ const efforts = await deps.probeEffortLevels(abortSignal, patchPath);
71
75
  const advertised = efforts.live || !spec.effort_hint
72
76
  ? efforts.levels
73
- : claudeAdvertisedEffortsForRun(efforts, await deps.detectVersion(abortSignal));
77
+ : claudeAdvertisedEffortsForRun(efforts, await deps.detectVersion(abortSignal, patchPath));
74
78
  return { advertised, disclosure: claudeEffortDisclosureEvent(spec, advertised) };
75
79
  }
80
+ /** The PATH a run's env patch selects the binary on, when it carries one. */
81
+ export function claudeRunPatchPath(spec) {
82
+ return typeof spec.env?.PATH === "string" ? spec.env.PATH : undefined;
83
+ }
84
+ /**
85
+ * `claude --version` of the binary a caller will execute — resolved and spawned
86
+ * exactly as the `--help` memo is (host PATH, or the caller's PATH patch), so the
87
+ * snapshot-trust gate (INV-105) judges the binary whose ladder it fell back
88
+ * from, never a different host install's. Null when nothing could be spawned.
89
+ */
90
+ export async function detectClaudeVersion(abortSignal, patchPath) {
91
+ try {
92
+ const r = await runCapture(helpProbeIdentity(patchPath).spawn, ["--version"], {
93
+ ...(patchPath !== undefined ? { env: { PATH: patchPath } } : {}),
94
+ timeoutMs: 10_000,
95
+ abortSignal,
96
+ cancelSignal: "SIGTERM",
97
+ cancelKillDelayMs: 0,
98
+ });
99
+ return r.stdout.trim() || `${BIN} (version unknown)`;
100
+ }
101
+ catch {
102
+ return null;
103
+ }
104
+ }
76
105
  /**
77
106
  * How many lines of a wrapped `--effort` block the parse will read. Generous
78
107
  * next to the widest observed wrap (four lines at 40 columns) and still a hard
@@ -174,7 +203,33 @@ function readEffortGroup(body) {
174
203
  * belonging to any one caller.
175
204
  */
176
205
  const HELP_PROBE_TIMEOUT_MS = 10_000;
177
- let helpProbePromise = null;
206
+ /**
207
+ * The memo is keyed by the BINARY IDENTITY (`harnessBinaryIdentity`: realpath,
208
+ * inode, size, mtime — one stat, no spawn), so a CLI updated at the same path
209
+ * is re-read on the next call instead of served the old ladder for the life
210
+ * of the daemon (live defect 2026-09-18: a stale `xhigh`-less ladder after an
211
+ * in-place update). An unresolvable binary keys as such; its capture fails and
212
+ * is forgotten below anyway, so the next call looks again. A run whose env
213
+ * patch carries a PATH executes the binary on THAT path (the spawn layer applies
214
+ * the patch verbatim over the normalized PATH), so its ladder is read from the
215
+ * same bytes: resolved on the exact patch PATH, spawned by absolute path. Two
216
+ * bounds of that, stated rather than engineered away: the memo is ONE slot, so
217
+ * a patched caller that alternates with host-keyed ones re-reads `--help` (one
218
+ * bounded spawn per alternation, never a wrong answer); and a RELATIVE entry
219
+ * in a patch PATH is resolved as the daemon sees it (its own cwd), so a binary
220
+ * reachable only through a project-relative entry is invisible to the probe
221
+ * and that run falls back to the snapshot ladder — use absolute directories.
222
+ */
223
+ let helpProbe = null;
224
+ function helpProbeIdentity(patchPath) {
225
+ const id = patchPath === undefined
226
+ ? harnessBinaryIdentity(BIN)
227
+ : harnessBinaryIdentityOnPath(BIN, patchPath);
228
+ return {
229
+ key: JSON.stringify(id ? [id.path, id.ino, id.size, id.mtimeMs] : ["unresolved", BIN, patchPath ?? null]),
230
+ spawn: id?.path ?? BIN,
231
+ };
232
+ }
178
233
  /** What an abandoned caller reads, without the shared capture ever seeing it. */
179
234
  function abandonedProbe() {
180
235
  return { ok: false, error: "claude --help probe abandoned: the caller was cancelled" };
@@ -202,12 +257,14 @@ function abandonedProbe() {
202
257
  * machine running an older CLI does not merely lose freshness: it advertises and
203
258
  * forwards `xhigh` to a binary that rejects it, for the life of the daemon.
204
259
  */
205
- function sharedHelpCapture() {
206
- if (helpProbePromise)
207
- return helpProbePromise;
260
+ function sharedHelpCapture(patchPath) {
261
+ const { key, spawn } = helpProbeIdentity(patchPath);
262
+ if (helpProbe?.key === key)
263
+ return helpProbe.promise;
208
264
  const pending = (async () => {
209
265
  try {
210
- const result = await runCapture(BIN, ["--help"], {
266
+ const result = await runCapture(spawn, ["--help"], {
267
+ ...(patchPath !== undefined ? { env: { PATH: patchPath } } : {}),
211
268
  timeoutMs: HELP_PROBE_TIMEOUT_MS,
212
269
  cancelSignal: "SIGTERM",
213
270
  cancelKillDelayMs: 0,
@@ -221,12 +278,13 @@ function sharedHelpCapture() {
221
278
  };
222
279
  }
223
280
  })();
224
- helpProbePromise = pending;
281
+ const memo = { key, promise: pending };
282
+ helpProbe = memo;
225
283
  // Identity-guarded so a late settle can only ever clear its OWN memo, never a
226
284
  // re-probe another caller has already started.
227
285
  const forget = () => {
228
- if (helpProbePromise === pending)
229
- helpProbePromise = null;
286
+ if (helpProbe === memo)
287
+ helpProbe = null;
230
288
  };
231
289
  void pending.then((probe) => {
232
290
  if (!probe.ok || probe.code === null)
@@ -240,8 +298,8 @@ function sharedHelpCapture() {
240
298
  * anyway, and the ladder falls back to the snapshot for that one run — while the
241
299
  * capture keeps running for everybody else.
242
300
  */
243
- export function probeClaudeHelp(abortSignal) {
244
- const shared = sharedHelpCapture();
301
+ export function probeClaudeHelp(abortSignal, patchPath) {
302
+ const shared = sharedHelpCapture(patchPath);
245
303
  if (!abortSignal)
246
304
  return shared;
247
305
  if (abortSignal.aborted)
@@ -260,8 +318,10 @@ export function probeClaudeHelp(abortSignal) {
260
318
  * recorded snapshot when `--help` cannot be read or no longer documents the
261
319
  * values. A probe failure costs freshness, never the run.
262
320
  */
263
- export async function probeClaudeEffortLevels(abortSignal) {
264
- const probe = await probeClaudeHelp(abortSignal);
321
+ export async function probeClaudeEffortLevels(abortSignal,
322
+ /** The run's PATH patch, when its env carries one (see helpProbeIdentity). */
323
+ patchPath) {
324
+ const probe = await probeClaudeHelp(abortSignal, patchPath);
265
325
  const parsed = probe.ok ? parseClaudeEffortHelp(probe.help) : null;
266
326
  return parsed ? { levels: parsed, live: true } : { levels: CLAUDE_EFFORT_SNAPSHOT, live: false };
267
327
  }
@@ -1 +1 @@
1
- {"version":3,"file":"effort-probe.js","sourceRoot":"","sources":["../src/effort-probe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"effort-probe.js","sourceRoot":"","sources":["../src/effort-probe.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,10 +8,11 @@ import { type ClaudeAuthStatusProbe } from "./auth-status.js";
8
8
  export { clearClaudeAuthStatusCache, claudeAuthSourceReadiness, redactClaudeDoctorDetail, } from "./auth-status.js";
9
9
  export type { ClaudeAuthStatusProbe } from "./auth-status.js";
10
10
  import { smokeIsolatedApiKey, smokeIsolatedOAuthToken } from "./smoke.js";
11
- import { probeClaudeEffortLevels } from "./effort-probe.js";
11
+ import { detectClaudeVersion, probeClaudeEffortLevels } from "./effort-probe.js";
12
12
  export { BIN, CLAUDE_EFFORT_SNAPSHOT } from "./effort-probe.js";
13
13
  export { CLAUDE_AUTH_REFRESH_TERMINATION_UNCONFIRMED, claudeOauthAccessTokenIsFresh, refreshClaudeNativeAuth, } from "./auth-refresh.js";
14
14
  export { CLAUDE_VENDOR_CLI_VERSION } from "./vendor-cli-version.js";
15
+ import { probeClaudeModels } from "./model-probe.js";
15
16
  export declare const CLAUDE_PROVIDER_ENV_DENYLIST: string[];
16
17
  /** Exported for focused route-policy tests; runtime uses this exact selector. */
17
18
  export declare const selectClaudeRunAuthRoute: typeof selectStrictAuthRoute;
@@ -26,10 +27,10 @@ export interface ClaudeReadonlyProfileProbe {
26
27
  * a probe that failed once (or that a cancelled run read) stayed failed for the
27
28
  * process lifetime, so a long-lived daemon reported readonly enforcement
28
29
  * unavailable forever. It bought nothing either: the spawn is already memoized,
29
- * and what is left is a handful of `includes` over text we already hold.
30
+ * and what is left is a handful of `includes` over text we already hold. A
31
+ * run's PATH patch selects the binary the flags are read from, as for the ladder.
30
32
  */
31
- export declare function probeClaudeReadonlyProfile(abortSignal?: AbortSignal): Promise<ClaudeReadonlyProfileProbe>;
32
- declare function detectVersion(abortSignal?: AbortSignal): Promise<string | null>;
33
+ export declare function probeClaudeReadonlyProfile(abortSignal?: AbortSignal, patchPath?: string): Promise<ClaudeReadonlyProfileProbe>;
33
34
  /** Options for probing the default or explicitly selected native Claude store. */
34
35
  export interface ClaudeAuthStatusProbeOptions {
35
36
  env?: Record<string, string | null | undefined>;
@@ -49,7 +50,7 @@ declare function claudeOAuthToken(): string | null;
49
50
  /** The runtime surface the profile module needs (test-stubbable). */
50
51
  export type ClaudeProfileRuntimeDeps = Pick<ClaudeRuntimeDeps, "probeAuthStatus" | "resolveProfileSecret">;
51
52
  type ClaudeRuntimeDeps = {
52
- detectVersion: typeof detectVersion;
53
+ detectVersion: typeof detectClaudeVersion;
53
54
  probeAuthStatus: typeof probeAuthStatus;
54
55
  anthropicApiKey: typeof anthropicApiKey;
55
56
  claudeOAuthToken: typeof claudeOAuthToken;
@@ -61,6 +62,8 @@ type ClaudeRuntimeDeps = {
61
62
  probeReadonlyProfile: typeof probeClaudeReadonlyProfile;
62
63
  /** Effort ladder of the installed binary; falls back to the recorded snapshot. */
63
64
  probeEffortLevels: typeof probeClaudeEffortLevels;
65
+ /** Cached prompt-free initialize picker (model-probe.ts); total, never empty. */
66
+ probeModels: typeof probeClaudeModels;
64
67
  runCliHarness: typeof runCliHarness;
65
68
  };
66
69
  export declare function createClaudeAdapter(deps?: Partial<ClaudeRuntimeDeps>): HarnessAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { claudeMcpArgs } from "./mcp-args.js";
2
2
  import { prepareClaudeSessionProcessing, claudeProcessingArgs, applyClaudeRunProcessing, claudeProcessingObserver, } from "./processing.js";
3
3
  import { ConformanceReport as ConformanceReportSchema, HarnessManifest as HarnessManifestSchema, } from "@claudexor/schema";
4
- import { abortSignalFromSpec, HarnessUnavailableError, interactionChannelFromSpec, needsScopedHomeKeychainBridge, normalizeEffort, providerScrubEnv, resolveHarnessBinary, runCapture, runCliHarness, PROVIDER_SECRET_ENV, selectStrictAuthRoute, selectedAuthAvailable, selectedAuthReady, shouldVerifyApiKey, } from "@claudexor/core";
4
+ import { abortSignalFromSpec, HarnessUnavailableError, interactionChannelFromSpec, needsScopedHomeKeychainBridge, normalizeEffort, providerScrubEnv, resolveHarnessBinary, runCliHarness, PROVIDER_SECRET_ENV, selectStrictAuthRoute, selectedAuthAvailable, selectedAuthReady, shouldVerifyApiKey, } from "@claudexor/core";
5
5
  import { resolveSecret } from "@claudexor/secrets";
6
6
  import { CLAUDEXOR_VERSION, nowIso, redactSecrets } from "@claudexor/util";
7
7
  import { CLAUDE_CAPABILITY_PROFILE, CLAUDE_KNOWN_MODELS, CLAUDE_KNOWN_MODELS_VERIFIED_AGAINST, } from "./capability-profile.js";
@@ -15,11 +15,12 @@ export { canonicalProfileConfigDir } from "./profile.js";
15
15
  import { claudeAuthSourceReadiness, probeClaudeAuthStatus, redactClaudeDoctorDetail, staleClaudeAuthStatusEvent, } from "./auth-status.js";
16
16
  export { clearClaudeAuthStatusCache, claudeAuthSourceReadiness, redactClaudeDoctorDetail, } from "./auth-status.js";
17
17
  import { smokeIsolatedApiKey, smokeIsolatedOAuthToken } from "./smoke.js";
18
- import { BIN, CLAUDE_EFFORT_SNAPSHOT, CLAUDE_EFFORT_SNAPSHOT_VERIFIED_AGAINST, claudeRunEffortResolution, probeClaudeEffortLevels, probeClaudeHelp, } from "./effort-probe.js";
18
+ import { BIN, CLAUDE_EFFORT_SNAPSHOT, CLAUDE_EFFORT_SNAPSHOT_VERIFIED_AGAINST, claudeRunEffortResolution, claudeRunPatchPath, detectClaudeVersion, probeClaudeEffortLevels, probeClaudeHelp, } from "./effort-probe.js";
19
19
  export { BIN, CLAUDE_EFFORT_SNAPSHOT } from "./effort-probe.js";
20
20
  export { CLAUDE_AUTH_REFRESH_TERMINATION_UNCONFIRMED, claudeOauthAccessTokenIsFresh, refreshClaudeNativeAuth, } from "./auth-refresh.js";
21
21
  export { CLAUDE_VENDOR_CLI_VERSION } from "./vendor-cli-version.js";
22
22
  import { claudeAttachmentBlocks, handleControlRequestFrame, initialSessionFrames, isControlRequestFrame, isResultFrame, } from "./interactive.js";
23
+ import { CLAUDE_MODEL_INVENTORY, probeClaudeModels } from "./model-probe.js";
23
24
  export const CLAUDE_PROVIDER_ENV_DENYLIST = PROVIDER_SECRET_ENV.filter((k) => k !== "ANTHROPIC_API_KEY");
24
25
  // The `--effort` ladder is read from the INSTALLED binary (`probeClaudeEffortLevels`).
25
26
  /** Exported for focused route-policy tests; runtime uses this exact selector. */
@@ -61,10 +62,11 @@ const CLAUDE_READONLY_REQUIRED_FLAGS = [
61
62
  * a probe that failed once (or that a cancelled run read) stayed failed for the
62
63
  * process lifetime, so a long-lived daemon reported readonly enforcement
63
64
  * unavailable forever. It bought nothing either: the spawn is already memoized,
64
- * and what is left is a handful of `includes` over text we already hold.
65
+ * and what is left is a handful of `includes` over text we already hold. A
66
+ * run's PATH patch selects the binary the flags are read from, as for the ladder.
65
67
  */
66
- export async function probeClaudeReadonlyProfile(abortSignal) {
67
- const probe = await probeClaudeHelp(abortSignal);
68
+ export async function probeClaudeReadonlyProfile(abortSignal, patchPath) {
69
+ const probe = await probeClaudeHelp(abortSignal, patchPath);
68
70
  if (!probe.ok) {
69
71
  return {
70
72
  supported: false,
@@ -86,20 +88,6 @@ export async function probeClaudeReadonlyProfile(abortSignal) {
86
88
  : `readonly enforcement unavailable; missing ${missingFlags.join(", ") || `help exited ${probe.code}`}`,
87
89
  };
88
90
  }
89
- async function detectVersion(abortSignal) {
90
- try {
91
- const r = await runCapture(BIN, ["--version"], {
92
- timeoutMs: 10_000,
93
- abortSignal,
94
- cancelSignal: "SIGTERM",
95
- cancelKillDelayMs: 0,
96
- });
97
- return r.stdout.trim() || `${BIN} (version unknown)`;
98
- }
99
- catch {
100
- return null;
101
- }
102
- }
103
91
  export function claudeNativeEnv(base, configDir) {
104
92
  const raw = {
105
93
  ...(base ?? {}),
@@ -152,7 +140,7 @@ function claudeOAuthToken() {
152
140
  }
153
141
  export function createClaudeAdapter(deps = {}) {
154
142
  const runtime = {
155
- detectVersion,
143
+ detectVersion: detectClaudeVersion,
156
144
  probeAuthStatus,
157
145
  anthropicApiKey,
158
146
  claudeOAuthToken,
@@ -161,6 +149,7 @@ export function createClaudeAdapter(deps = {}) {
161
149
  smokeIsolatedOAuthToken,
162
150
  probeReadonlyProfile: probeClaudeReadonlyProfile,
163
151
  probeEffortLevels: probeClaudeEffortLevels,
152
+ probeModels: probeClaudeModels,
164
153
  runCliHarness,
165
154
  ...deps,
166
155
  };
@@ -196,6 +185,7 @@ export function createClaudeAdapter(deps = {}) {
196
185
  adapter_version: CLAUDEXOR_VERSION,
197
186
  provider_family: "anthropic",
198
187
  capabilities: {
188
+ ...CLAUDE_MODEL_INVENTORY,
199
189
  processing_preferences: ["standard", "fast", "economy"],
200
190
  plan: true,
201
191
  implement: true,
@@ -461,6 +451,9 @@ export function createClaudeAdapter(deps = {}) {
461
451
  review(spec) {
462
452
  return runClaude(spec, runtime);
463
453
  },
454
+ models(spec) {
455
+ return runtime.probeModels(spec, { resolveProfileSecret: runtime.resolveProfileSecret });
456
+ },
464
457
  probeCredentialProfile(profile, abortSignal) {
465
458
  return probeClaudeCredentialProfile(profile, runtime, abortSignal);
466
459
  },
@@ -629,7 +622,7 @@ function toolPermissionSets(spec) {
629
622
  async function* runClaude(spec, runtime) {
630
623
  const abortSignal = abortSignalFromSpec(spec);
631
624
  if (spec.access === "readonly") {
632
- const readonlyProfile = await runtime.probeReadonlyProfile(abortSignal);
625
+ const readonlyProfile = await runtime.probeReadonlyProfile(abortSignal, claudeRunPatchPath(spec));
633
626
  if (!readonlyProfile.supported) {
634
627
  yield {
635
628
  type: "error",