@claudexor/cli 3.23.2 → 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
@@ -0,0 +1,353 @@
1
+ /**
2
+ * `claudexor harness inspect|update` — the CLI-first maintenance primitive the
3
+ * daemon's durable operation runs in a child process (so the blocking install
4
+ * never runs on the daemon's event loop and its process tree stays cancellable).
5
+ *
6
+ * - inspect reads facts only: the program the harness actually selects (an
7
+ * explicit CLAUDEXOR_<HARNESS>_BIN override wins verbatim), its own
8
+ * `--version`, the managed npm copy, and the release-tested pin as a separate
9
+ * fact. It never logs in, provisions or installs; `--latest` adds one
10
+ * registry read of the newest published version.
11
+ * - update performs exactly ONE step through the recipe's mechanism: an exact
12
+ * managed npm install (latest resolved once to an exact version first), or
13
+ * the vendor's own `update` on the canonical host-home launcher it rewrites.
14
+ * The vendor resolves latest itself, so an unchanged version afterwards is
15
+ * reported as no observed change, never as a new version.
16
+ */
17
+ import { realpathSync } from "node:fs";
18
+ import { isAbsolute, relative, sep } from "node:path";
19
+ import { prepareHarnessCommand, resolveHarnessBinary } from "@claudexor/core";
20
+ import { ControlProblem } from "@claudexor/schema";
21
+ import { flagBool, flagStr } from "./args.js";
22
+ import { print, printJson, printUsageError } from "./cli-io.js";
23
+ import { acquireHarnessInstallLease, HARNESS_INSTALL_LOCK_TIMEOUT_MS, } from "./harness-install-lease.js";
24
+ import { EXACT_VENDOR_VERSION, exactSemverTokens, managedNpmPackageVersion, proveInstalledNpm, proveInstalledScriptVendor, } from "./harness-install-proof.js";
25
+ import { HARNESS_BINARY_OVERRIDE_ENV, harnessMaintenanceRecipe, isInstallableHarness, NPM_PINS, selectedHarnessCommand, TARGET_LAYOUTS, } from "./harness-install-recipes.js";
26
+ import { installerRuntime } from "./harness-install-runtime.js";
27
+ import { confirmOnTty, localPlatformRefusal, runHarnessInstaller } from "./harness-installer.js";
28
+ import { INSTALLABLE_HARNESSES } from "./harness-command-specs.js";
29
+ import { embeddedNpmCli } from "@claudexor/core";
30
+ const LATEST_TIMEOUT_MS = 30_000;
31
+ function runtimeFor(options) {
32
+ return installerRuntime({ ...options, target: "local" });
33
+ }
34
+ function contained(root, candidate) {
35
+ try {
36
+ const rest = relative(realpathSync(root), realpathSync(candidate));
37
+ return rest !== "" && !rest.startsWith(`..${sep}`) && rest !== ".." && !isAbsolute(rest);
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ /** The selected program's own version answer: its exact semver token when it
44
+ * prints one, else its bounded first line; null when it does not answer. */
45
+ function selectedVersion(binary, runtime) {
46
+ if (!binary)
47
+ return null;
48
+ const probe = proveInstalledScriptVendor(binary, runtime);
49
+ if (!probe.ok)
50
+ return null;
51
+ return exactSemverTokens(probe.proof.installedVersion)[0] ?? probe.proof.installedVersion;
52
+ }
53
+ function selection(harness, runtime) {
54
+ const overrideEnv = HARNESS_BINARY_OVERRIDE_ENV[harness];
55
+ const override = runtime.resolutionSource[overrideEnv]?.trim() || null;
56
+ const resolveOnPath = (bin) => resolveHarnessBinary(bin, runtime.resolutionSource, runtime.runnerNodePath, runtime.platform);
57
+ const binary = resolveOnPath(selectedHarnessCommand(harness, runtime.resolutionSource, resolveOnPath));
58
+ const managed = binary !== null && contained(TARGET_LAYOUTS.local.root(runtime.home), binary);
59
+ return {
60
+ kind: override ? "override" : binary === null ? "missing" : managed ? "managed" : "path",
61
+ binary,
62
+ version: selectedVersion(binary, runtime),
63
+ overrideEnv: override ? overrideEnv : null,
64
+ };
65
+ }
66
+ /** One registry read of the newest published version, through the embedded
67
+ * npm and the clean vendor environment (no credentials). */
68
+ export function resolveLatestNpmVersion(harness, runtime) {
69
+ const pin = NPM_PINS[harness];
70
+ if (!pin)
71
+ return { problem: { code: "latest_unsupported", message: `${harness} has no npm recipe` } };
72
+ const result = runtime.spawn(runtime.runnerNodePath, [
73
+ embeddedNpmCli(runtime.runnerNodePath, runtime.platform),
74
+ "view",
75
+ `${pin.npmPackage}@latest`,
76
+ "version",
77
+ "--json",
78
+ ], {
79
+ env: runtime.environment,
80
+ encoding: "utf8",
81
+ timeout: LATEST_TIMEOUT_MS,
82
+ stdio: ["ignore", "pipe", "pipe"],
83
+ });
84
+ let value = null;
85
+ try {
86
+ value = JSON.parse(String(result.stdout ?? "").trim());
87
+ }
88
+ catch {
89
+ value = null;
90
+ }
91
+ return result.status === 0 && typeof value === "string" && EXACT_VENDOR_VERSION.test(value)
92
+ ? { version: value }
93
+ : {
94
+ problem: {
95
+ code: "latest_unavailable",
96
+ message: `the registry did not answer one exact latest version for ${pin.npmPackage} (npm exit ${result.status ?? "none"})`,
97
+ },
98
+ };
99
+ }
100
+ export function inspectHarness(harness, options = {}) {
101
+ const runtime = runtimeFor(options);
102
+ const now = (options.now ?? (() => new Date()))().toISOString();
103
+ const recipe = harnessMaintenanceRecipe(harness, runtime.platform);
104
+ const pin = NPM_PINS[harness];
105
+ const selected = selection(harness, runtime);
106
+ const root = TARGET_LAYOUTS.local.root(runtime.home);
107
+ const declared = pin ? managedNpmPackageVersion(root, pin.npmPackage, runtime.platform) : null;
108
+ const proof = pin && declared
109
+ ? proveInstalledNpm({
110
+ vendorRoot: root,
111
+ npmPackage: pin.npmPackage,
112
+ binaryNames: pin.binaryNames,
113
+ expectedVersion: declared,
114
+ }, runtime)
115
+ : null;
116
+ let remedy = null;
117
+ if (recipe.mechanism === "vendor_script") {
118
+ remedy = `${harness} has no engine-run updater on this platform; update it with the vendor's own installer or updater`;
119
+ }
120
+ else if (recipe.mechanism === "managed_npm") {
121
+ const refusal = localPlatformRefusal(harness, runtime.platform, runtime.arch);
122
+ if (refusal)
123
+ remedy = refusal.refusal ?? "unsupported platform";
124
+ else if (selected.kind === "override")
125
+ remedy = `${selected.overrideEnv} selects ${selected.binary ?? "an unresolvable program"}; update that program yourself or unset the override to use the managed copy`;
126
+ else if (selected.kind === "path")
127
+ remedy = `${selected.binary} is installed outside Claudexor's managed prefix; update it with the tool that installed it (a managed install would silently take over the selection)`;
128
+ }
129
+ else if (!selected.binary || !recipe.launchers(runtime.home).includes(selected.binary)) {
130
+ // The vendor updater rewrites the launchers under the installation HOME the
131
+ // engine runs with (and passes on to it); a copied/pinned launcher elsewhere
132
+ // would stay unchanged while another one is updated.
133
+ remedy = selected.binary
134
+ ? `${selected.binary} is not the launcher ${harness}'s own updater maintains under ${runtime.home}/.local/bin; update it with the tool that installed it`
135
+ : `${harness} is not installed; install it with \`claudexor harness install ${harness}\``;
136
+ }
137
+ const canCheckLatest = recipe.mechanism === "managed_npm";
138
+ const latest = !options.latest
139
+ ? null
140
+ : canCheckLatest
141
+ ? resolveLatestNpmVersion(harness, runtime)
142
+ : {
143
+ problem: {
144
+ code: "latest_check_unsupported",
145
+ message: `${harness}'s ${recipe.mechanism} mechanism has no implemented newest-release check; Update still asks the vendor for its latest release`,
146
+ },
147
+ };
148
+ return {
149
+ harness,
150
+ mechanism: recipe.mechanism,
151
+ maintainable: remedy === null,
152
+ canCheckLatest,
153
+ targets: remedy === null ? [...recipe.targets] : [],
154
+ remedy,
155
+ selection: selected,
156
+ installed: {
157
+ version: declared,
158
+ binary: proof?.ok ? proof.proof.installedBinary : null,
159
+ proved: proof?.ok === true,
160
+ },
161
+ releaseTested: { version: pin?.version ?? null, verification: pin?.verification ?? null },
162
+ available: latest && "version" in latest ? { version: latest.version, observedAt: now } : null,
163
+ availableProblem: latest && "problem" in latest
164
+ ? ControlProblem.parse({
165
+ ...latest.problem,
166
+ retryable: latest.problem.code !== "latest_check_unsupported",
167
+ })
168
+ : null,
169
+ observedAt: now,
170
+ };
171
+ }
172
+ /** Exactly one maintenance step. `requested` is an exact version, "latest", or
173
+ * omitted (latest for either mechanism). */
174
+ export function runHarnessUpdate(harness, requested, options = {}) {
175
+ const before = inspectHarness(harness, options);
176
+ const runtime = runtimeFor(options);
177
+ const base = {
178
+ harness,
179
+ mechanism: before.mechanism,
180
+ requestedVersion: requested ?? null,
181
+ resolvedVersion: null,
182
+ previousVersion: null,
183
+ before: {
184
+ version: before.mechanism === "managed_npm" ? before.installed.version : before.selection.version,
185
+ binary: before.mechanism === "managed_npm" ? before.installed.binary : before.selection.binary,
186
+ selection: before.selection.kind,
187
+ proved: before.mechanism === "managed_npm"
188
+ ? before.installed.proved
189
+ : before.selection.version !== null,
190
+ },
191
+ after: null,
192
+ limitations: ["in_place_replacement", "new_starts_may_fail"],
193
+ };
194
+ const refuse = (code, refusal) => ({
195
+ ...base,
196
+ ok: false,
197
+ exitCode: 1,
198
+ code,
199
+ refusal: `${refusal}; nothing was executed`,
200
+ mutation: "none",
201
+ });
202
+ if (!before.maintainable)
203
+ return refuse("harness_not_maintainable", before.remedy ?? "not maintainable");
204
+ if (before.mechanism === "vendor_updater") {
205
+ if (requested !== undefined && requested !== "latest")
206
+ return refuse("version_selection_unsupported", `${harness}'s own updater installs only its latest release`);
207
+ return vendorUpdate(harness, runtime, base, options);
208
+ }
209
+ let exact = requested ?? "latest";
210
+ if (exact === "latest") {
211
+ const latest = resolveLatestNpmVersion(harness, runtime);
212
+ if ("problem" in latest)
213
+ return refuse(latest.problem.code, latest.problem.message);
214
+ exact = latest.version;
215
+ }
216
+ if (!EXACT_VENDOR_VERSION.test(exact))
217
+ return refuse("invalid_vendor_version", `${exact} is not one exact version`);
218
+ const result = runHarnessInstaller(harness, {
219
+ ...options,
220
+ ...runtime,
221
+ target: "local",
222
+ version: exact,
223
+ json: options.json,
224
+ });
225
+ const attempted = "previousVersion" in result;
226
+ const after = selection(harness, runtime);
227
+ const ok = result.exitCode === 0 && result.refusal === undefined;
228
+ return {
229
+ ...base,
230
+ ok,
231
+ exitCode: ok ? 0 : result.exitCode || 1,
232
+ ...(result.code ? { code: result.code } : {}),
233
+ ...(result.refusal ? { refusal: result.refusal } : {}),
234
+ resolvedVersion: exact,
235
+ previousVersion: attempted ? (result.previousVersion ?? null) : base.before.version,
236
+ after: {
237
+ version: ok ? (result.installedVersion ?? null) : null,
238
+ binary: result.installedBinary ?? null,
239
+ selected: ok && after.kind === "managed",
240
+ proved: ok,
241
+ },
242
+ mutation: ok ? (attempted ? "applied" : "none") : attempted ? "unknown" : "none",
243
+ };
244
+ }
245
+ function vendorUpdate(harness, runtime, base, options) {
246
+ const binary = base.before.binary;
247
+ let lease = null;
248
+ try {
249
+ if (options.lock !== false)
250
+ lease = acquireHarnessInstallLease(runtime.home, HARNESS_INSTALL_LOCK_TIMEOUT_MS);
251
+ }
252
+ catch (error) {
253
+ const code = error.code;
254
+ return {
255
+ ...base,
256
+ ok: false,
257
+ exitCode: 1,
258
+ code: typeof code === "string" ? code : "install_lock_failed",
259
+ refusal: `${error instanceof Error ? error.message : String(error)}; nothing was executed`,
260
+ mutation: "none",
261
+ };
262
+ }
263
+ try {
264
+ const invocation = prepareHarnessCommand(binary, ["update"], runtime.environment, runtime.platform);
265
+ const result = runtime.spawn(invocation.binary, invocation.args, {
266
+ env: invocation.env,
267
+ stdio: options.json ? [0, 2, 2] : "inherit",
268
+ });
269
+ const after = selection(harness, runtime);
270
+ const changed = after.version !== null && after.version !== base.before.version;
271
+ const limitations = [
272
+ ...base.limitations,
273
+ "vendor_resolves_latest",
274
+ ...(result.status === 0 && !changed ? ["no_version_change_observed"] : []),
275
+ ];
276
+ return {
277
+ ...base,
278
+ ok: result.status === 0 && after.version !== null,
279
+ exitCode: result.status === 0 ? (after.version !== null ? 0 : 1) : (result.status ?? 1),
280
+ ...(result.status !== 0
281
+ ? { code: result.signal ? "installer_terminated" : "vendor_update_failed" }
282
+ : after.version === null
283
+ ? { code: "install_verification_failed" }
284
+ : {}),
285
+ resolvedVersion: changed ? after.version : null,
286
+ previousVersion: base.before.version,
287
+ after: {
288
+ version: after.version,
289
+ binary: after.binary,
290
+ selected: after.binary === binary,
291
+ proved: after.version !== null,
292
+ },
293
+ mutation: result.status === 0 && after.version !== null ? (changed ? "applied" : "none") : "unknown",
294
+ limitations,
295
+ };
296
+ }
297
+ finally {
298
+ lease?.release();
299
+ }
300
+ }
301
+ const INSPECT_USAGE = `usage: claudexor harness inspect [<${INSTALLABLE_HARNESSES.join("|")}>] [--latest]`;
302
+ const UPDATE_USAGE = `usage: claudexor harness update <${INSTALLABLE_HARNESSES.join("|")}> [--vendor-version <exact|latest>] [--yes]`;
303
+ export function harnessInspectCommand(args, json, options = {}) {
304
+ const only = args._[2];
305
+ if ((only !== undefined && !isInstallableHarness(only)) || args._.length > 3)
306
+ return printUsageError(json, INSPECT_USAGE);
307
+ const ids = only ? [only] : [...INSTALLABLE_HARNESSES];
308
+ const rows = ids.map((id) => inspectHarness(id, { ...options, latest: flagBool(args, "latest") }));
309
+ if (json)
310
+ printJson({ observedAt: rows[0]?.observedAt ?? new Date().toISOString(), harnesses: rows });
311
+ else
312
+ for (const row of rows)
313
+ print(`${row.harness}: ${row.selection.kind} ${row.selection.binary ?? "-"} ${row.selection.version ?? "version unknown"}` +
314
+ (row.maintainable ? ` (maintainable: ${row.targets.join(", ")})` : ` (${row.remedy})`));
315
+ return 0;
316
+ }
317
+ export function harnessUpdateCommand(args, json, options = {}) {
318
+ const harness = args._[2] ?? "";
319
+ if (!isInstallableHarness(harness) || args._.length !== 3)
320
+ return printUsageError(json, UPDATE_USAGE);
321
+ const requested = flagStr(args, "vendor-version");
322
+ if (!flagBool(args, "yes")) {
323
+ if (json || !process.stdin.isTTY) {
324
+ if (json)
325
+ printJson({ ok: false, exitCode: 1, code: "confirmation_required", harness });
326
+ else
327
+ print("Not updating: confirm with --yes, or run on an interactive terminal to be asked.");
328
+ return 1;
329
+ }
330
+ if (!confirmOnTty(`Update ${harness} to ${requested ?? "latest"}? [y/N] `))
331
+ return 1;
332
+ }
333
+ // A cancelled operation's TERM reaches this process and npm together: stay
334
+ // alive until npm is reaped so the lease is released and a receipt prints.
335
+ const onSignal = () => undefined;
336
+ process.on("SIGTERM", onSignal);
337
+ process.on("SIGINT", onSignal);
338
+ try {
339
+ const receipt = runHarnessUpdate(harness, requested, { ...options, json });
340
+ if (json)
341
+ printJson(receipt);
342
+ else
343
+ print(receipt.ok
344
+ ? `${harness}: ${receipt.before.version ?? "none"} -> ${receipt.after?.version ?? "unknown"}${receipt.mutation === "none" ? " (no change)" : ""}`
345
+ : `${harness} update failed: ${receipt.refusal ?? receipt.code ?? `exit ${receipt.exitCode}`}`);
346
+ return receipt.ok ? 0 : receipt.exitCode || 1;
347
+ }
348
+ finally {
349
+ process.off("SIGTERM", onSignal);
350
+ process.off("SIGINT", onSignal);
351
+ }
352
+ }
353
+ //# sourceMappingURL=harness-maintenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-maintenance.js","sourceRoot":"","sources":["../src/harness-maintenance.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@ export declare function createModelServices(deps: Dependencies): {
38
38
  accountCatalog?: boolean | undefined;
39
39
  }[];
40
40
  }>;
41
- modelCatalog: (sourceId: string, credentialProfileId?: string, requestedModel?: string) => Promise<{
41
+ modelCatalog: (sourceId: string, credentialProfileId?: string, requestedModel?: string, includeAdmission?: boolean) => Promise<{
42
42
  source: string;
43
43
  credentialProfileId: string;
44
44
  accountFingerprint: string | null;
@@ -46,6 +46,10 @@ export declare function createModelServices(deps: Dependencies): {
46
46
  provenance: string;
47
47
  clientVersion: string | null;
48
48
  clientVersionSource: "installed_cli" | "verified_transport" | null;
49
+ admission?: {
50
+ requestedModel: string;
51
+ inventoryAbsence: "advisory" | "authoritative";
52
+ } | undefined;
49
53
  models: {
50
54
  id: string;
51
55
  label: string | null;
@@ -83,6 +87,10 @@ export declare function createModelServices(deps: Dependencies): {
83
87
  provenance: string;
84
88
  clientVersion: string | null;
85
89
  clientVersionSource: "installed_cli" | "verified_transport" | null;
90
+ admission?: {
91
+ requestedModel: string;
92
+ inventoryAbsence: "advisory" | "authoritative";
93
+ } | undefined;
86
94
  models: {
87
95
  id: string;
88
96
  label: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"model-services.d.ts","sourceRoot":"","sources":["../src/model-services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGrE,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,EAIL,YAAY,EAIb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,yBAAgC,CAAC;AAErE,UAAU,WAAW;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,YAAa,SAAQ,IAAI,CAAC,0BAA0B,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IAChG,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;IACjD,KAAK,EAAE,MAAM,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,aAAa,CAAC,EAAE,OAAO,qBAAqB,CAAC;CAC9C;AAMD;kFACkF;AAClF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY;;;QAoVhD,YAAY,UAAgB,UAAU;;;;;;;;;QAUtC,YAAY,aACA,MAAM,wBACM,MAAM,mBACX,MAAM;;;;;;;;;;;;;;;;;;;;;;;QAazB,mBAAmB,aAAmB,MAAM,wBAAwB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4B1E,oBAAoB;QACpB,iBAAiB,OAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QACpC,eAAe,OAAa,MAAM;;;;QAClC,sBAAsB,OAAa,MAAM,UAAU,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAEzD,oBAAoB;;yBAGd,eAAe,KAAG,eAAe;;EAa5C"}
1
+ {"version":3,"file":"model-services.d.ts","sourceRoot":"","sources":["../src/model-services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGrE,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,EAIL,YAAY,EAIb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,yBAAgC,CAAC;AAErE,UAAU,WAAW;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,YAAa,SAAQ,IAAI,CAAC,0BAA0B,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IAChG,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;IACjD,KAAK,EAAE,MAAM,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,aAAa,CAAC,EAAE,OAAO,qBAAqB,CAAC;CAC9C;AAMD;kFACkF;AAClF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY;;;QAqWhD,YAAY,UAAgB,UAAU;;;;;;;;;QAUtC,YAAY,aACA,MAAM,wBACM,MAAM,mBACX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyBzB,mBAAmB,aAAmB,MAAM,wBAAwB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4B1E,oBAAoB;QACpB,iBAAiB,OAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QACpC,eAAe,OAAa,MAAM;;;;QAClC,sBAAsB,OAAa,MAAM,UAAU,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAEzD,oBAAoB;;yBAGd,eAAe,KAAG,eAAe;;EAa5C"}
@@ -88,8 +88,8 @@ export function createModelServices(deps) {
88
88
  }
89
89
  const excluded = new Set();
90
90
  const catalogRefusals = new Map();
91
- // Catalog membership is checked on exactly the selected account, before inference.
92
- // The same pool resolver chooses any next candidate; this loop never generates.
91
+ // Exact-account discovery follows the raw source's absence declaration.
92
+ // Actual catalog failures retain their causes; this loop never generates.
93
93
  while (true) {
94
94
  signal.throwIfAborted();
95
95
  const currentQuota = quotaEvidence();
@@ -140,7 +140,9 @@ export function createModelServices(deps) {
140
140
  ? "auth"
141
141
  : refusal.code === "subscription_window_exhausted"
142
142
  ? "quota"
143
- : "unavailable");
143
+ : refusal.code === "model_unavailable"
144
+ ? "model"
145
+ : "unavailable");
144
146
  if (refusal.code === "subscription_window_exhausted")
145
147
  resets.push(typeof refusal.context.resetsAt === "string" ? refusal.context.resetsAt : null);
146
148
  }
@@ -148,14 +150,14 @@ export function createModelServices(deps) {
148
150
  ? "quota"
149
151
  : causes.size === 1 && causes.has("auth")
150
152
  ? "auth"
151
- : causes.size > 1 && !causes.has("unavailable")
153
+ : causes.size === 2 && causes.has("auth") && causes.has("quota")
152
154
  ? "mixed"
153
155
  : "unavailable";
154
156
  const code = poolCause === "quota"
155
157
  ? "subscription_window_exhausted"
156
158
  : poolCause === "auth"
157
159
  ? "auth_required"
158
- : excluded.size > 0 && causes.size === 0
160
+ : causes.size === 1 && causes.has("model")
159
161
  ? "model_unavailable"
160
162
  : "credential_pool_exhausted";
161
163
  const message = poolCause === "quota"
@@ -163,7 +165,8 @@ export function createModelServices(deps) {
163
165
  : poolCause === "auth"
164
166
  ? "Every available model account requires sign-in"
165
167
  : "No managed account can currently serve this model request";
166
- const resetsAt = resets.length > 0 &&
168
+ const resetsAt = poolCause !== "unavailable" &&
169
+ resets.length > 0 &&
167
170
  resets.every((at) => at !== null && Number.isFinite(Date.parse(at)))
168
171
  ? resets.reduce((earliest, at) => Date.parse(at) < Date.parse(earliest) ? at : earliest)
169
172
  : null;
@@ -231,10 +234,25 @@ export function createModelServices(deps) {
231
234
  throw modelError("model_catalog_identity_mismatch", "The model catalog does not identify the selected account");
232
235
  if (catalog.provenance === "provider_http" && catalog.observedAt)
233
236
  evidence.honorCatalog(catalog.observedAt);
234
- if (model === null || catalog.models.some((entry) => entry.id === model))
237
+ if (model === null ||
238
+ source.adapter.inventoryAbsence === "advisory" ||
239
+ catalog.models.some((entry) => entry.id === model))
235
240
  return { profile, catalog };
241
+ const refusal = ControlProblem.parse({
242
+ code: "model_unavailable",
243
+ message: `The selected account does not advertise the requested model in its catalog as served to ${describeCodexClientVersion(catalog)}`,
244
+ retryable: false,
245
+ context: {
246
+ source: source.adapter.id,
247
+ credentialProfileId: profile.profile_id,
248
+ requestedModel: model,
249
+ clientVersion: catalog.clientVersion,
250
+ clientVersionSource: catalog.clientVersionSource,
251
+ },
252
+ });
236
253
  if (account.mode === "pin")
237
- throw modelError("model_unavailable", `The pinned account does not advertise the requested model in its catalog as served to ${describeCodexClientVersion(catalog)}`);
254
+ throw Object.assign(modelError(refusal.code, refusal.message), { problem: refusal });
255
+ catalogRefusals.set(profile.profile_id, refusal);
238
256
  excluded.add(profile.profile_id);
239
257
  }
240
258
  };
@@ -322,10 +340,21 @@ export function createModelServices(deps) {
322
340
  : {}),
323
341
  })),
324
342
  }),
325
- modelCatalog: async (sourceId, credentialProfileId, requestedModel) => {
326
- const { catalog } = await resolve(getSource(sourceId), credentialProfileId ? { mode: "pin", profileId: credentialProfileId } : { mode: "auto" }, requestedModel ?? null, lifetime.signal);
343
+ modelCatalog: async (sourceId, credentialProfileId, requestedModel, includeAdmission = false) => {
344
+ if (includeAdmission && !requestedModel)
345
+ throw modelError("invalid_request", "Admission observation requires requestedModel", 400);
346
+ const source = getSource(sourceId);
347
+ const { catalog } = await resolve(source, credentialProfileId ? { mode: "pin", profileId: credentialProfileId } : { mode: "auto" }, requestedModel ?? null, lifetime.signal);
327
348
  return {
328
349
  ...catalog,
350
+ ...(includeAdmission
351
+ ? {
352
+ admission: {
353
+ requestedModel: requestedModel,
354
+ inventoryAbsence: source.adapter.inventoryAbsence ?? "authoritative",
355
+ },
356
+ }
357
+ : {}),
329
358
  models: catalog.models.map(({ processing: _processing, ...model }) => model),
330
359
  };
331
360
  },
@@ -1 +1 @@
1
- {"version":3,"file":"model-services.js","sourceRoot":"","sources":["../src/model-services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-services.js","sourceRoot":"","sources":["../src/model-services.ts"],"names":[],"mappings":"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"}