@claudexor/orchestrator 3.8.0 → 3.8.2

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 (60) hide show
  1. package/dist/account-pool.d.ts +1 -0
  2. package/dist/account-pool.d.ts.map +1 -1
  3. package/dist/account-pool.js +2 -0
  4. package/dist/account-pool.js.map +1 -1
  5. package/dist/account-resolution.d.ts +2 -0
  6. package/dist/account-resolution.d.ts.map +1 -1
  7. package/dist/account-resolution.js +32 -12
  8. package/dist/account-resolution.js.map +1 -1
  9. package/dist/candidateEvidence.d.ts +3 -3
  10. package/dist/candidateEvidence.d.ts.map +1 -1
  11. package/dist/candidateOutputs.d.ts +2 -2
  12. package/dist/candidateOutputs.d.ts.map +1 -1
  13. package/dist/candidateOutputs.js +11 -6
  14. package/dist/candidateOutputs.js.map +1 -1
  15. package/dist/contract-gates.d.ts +4 -4
  16. package/dist/contract-gates.d.ts.map +1 -1
  17. package/dist/contract-gates.js +2 -0
  18. package/dist/contract-gates.js.map +1 -1
  19. package/dist/credential-profiles.d.ts +12 -1
  20. package/dist/credential-profiles.d.ts.map +1 -1
  21. package/dist/credential-profiles.js +13 -3
  22. package/dist/credential-profiles.js.map +1 -1
  23. package/dist/delegatedHome.d.ts +21 -69
  24. package/dist/delegatedHome.d.ts.map +1 -1
  25. package/dist/delegatedHome.js +29 -85
  26. package/dist/delegatedHome.js.map +1 -1
  27. package/dist/diffReview.d.ts +2 -1
  28. package/dist/diffReview.d.ts.map +1 -1
  29. package/dist/diffReview.js +14 -2
  30. package/dist/diffReview.js.map +1 -1
  31. package/dist/orchestrator-credentials.d.ts +13 -2
  32. package/dist/orchestrator-credentials.d.ts.map +1 -1
  33. package/dist/orchestrator-credentials.js +64 -3
  34. package/dist/orchestrator-credentials.js.map +1 -1
  35. package/dist/orchestrator.d.ts +5 -6
  36. package/dist/orchestrator.d.ts.map +1 -1
  37. package/dist/orchestrator.js +204 -211
  38. package/dist/orchestrator.js.map +1 -1
  39. package/dist/planRun.d.ts +5 -5
  40. package/dist/planRun.d.ts.map +1 -1
  41. package/dist/planRun.js.map +1 -1
  42. package/dist/plannerAttempt.d.ts +2 -2
  43. package/dist/plannerAttempt.d.ts.map +1 -1
  44. package/dist/requestRequirements.d.ts +3 -15
  45. package/dist/requestRequirements.d.ts.map +1 -1
  46. package/dist/requestRequirements.js +11 -21
  47. package/dist/requestRequirements.js.map +1 -1
  48. package/dist/reviewerPanel.d.ts +9 -1
  49. package/dist/reviewerPanel.d.ts.map +1 -1
  50. package/dist/reviewerPanel.js +276 -133
  51. package/dist/reviewerPanel.js.map +1 -1
  52. package/dist/runAdmission.d.ts +29 -0
  53. package/dist/runAdmission.d.ts.map +1 -0
  54. package/dist/runAdmission.js +63 -0
  55. package/dist/runAdmission.js.map +1 -0
  56. package/dist/task-contract-builder.d.ts +2 -2
  57. package/dist/task-contract-builder.d.ts.map +1 -1
  58. package/dist/task-contract-builder.js +5 -6
  59. package/dist/task-contract-builder.js.map +1 -1
  60. package/package.json +17 -17
@@ -1,6 +1,7 @@
1
- import { effortLevelsForModel, estimateEffectiveAuthRoute, knownModelIdsForRoute, } from "@claudexor/schema";
1
+ import { ConformanceReport, effortLevelsForModel, estimateEffectiveAuthRoute, knownModelIdsForRoute, } from "@claudexor/schema";
2
2
  import { HarnessUnavailableError, validateModel } from "@claudexor/core";
3
3
  import { WorkspaceManager } from "@claudexor/workspace";
4
+ import { safeErrorMessage } from "./runSupport.js";
4
5
  const MODEL_INVENTORY_RETRY_DELAY_MS = 250;
5
6
  /**
6
7
  * The reviewer effort gate: a requested level must be one the SELECTED reviewer
@@ -34,6 +35,28 @@ function reviewerEffortRefusal(harnessId, requestedEffort, capabilities, model)
34
35
  : ` (harness-wide advertised ladder — no per-model ladder recorded${model ? ` for '${model}'` : ""}: ${supported})`;
35
36
  return `reviewer harness '${harnessId}' does not support requested effort '${requestedEffort}'${suffix}`;
36
37
  }
38
+ function credentialProfileAuthRoute(profile) {
39
+ return profile.credential_kind === "api_key" ? "api_key" : "local_session";
40
+ }
41
+ function discloseAutoSkip(deps, harnessId, reason) {
42
+ deps.onIgnoredSetting?.(`reviewer family '${harnessId}' skipped: ${reason}`);
43
+ }
44
+ async function readAutoModelInventory(adapter, input) {
45
+ if (typeof adapter.models !== "function")
46
+ return { status: "unknown", reason: "inventory not enumerable" };
47
+ try {
48
+ const models = await adapter.models(input);
49
+ // The adapter contract is fail-soft: [] means that the provider could not
50
+ // establish an inventory as often as it means a genuinely empty catalog.
51
+ // Auto selection must never turn that uncertainty into a model mismatch.
52
+ if (models.length === 0)
53
+ return { status: "unknown", reason: "inventory unavailable" };
54
+ return { status: "available", ids: new Set(models.map((model) => model.id)), source: "api" };
55
+ }
56
+ catch (error) {
57
+ return { status: "unknown", reason: `inventory unavailable: ${safeErrorMessage(error)}` };
58
+ }
59
+ }
37
60
  export async function resolveExplicitReviewerPanel(deps, panel) {
38
61
  const { cwd, registry, harnessSettings } = deps;
39
62
  const known = [...registry.keys()].sort().join(", ");
@@ -55,95 +78,139 @@ export async function resolveExplicitReviewerPanel(deps, panel) {
55
78
  throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' is disabled in settings (harnesses.${entry.harness}.enabled=false)`);
56
79
  }
57
80
  const authPreference = deps.authPreferenceFor(entry.harness);
58
- const routeKey = `${entry.harness}\0${authPreference}`;
59
- if (!statusByRoute.has(routeKey)) {
60
- let manifest = null;
61
- try {
62
- manifest = await adapter.discover();
81
+ const requestedModel = entry.model ?? harnessSettings[entry.harness]?.default_model ?? null;
82
+ if (entry.credentialProfileId && !deps.resolveReviewerProfile) {
83
+ throw new HarnessUnavailableError(`reviewer credential profile "${entry.credentialProfileId}" cannot be resolved because the account-pool owner is unavailable`);
84
+ }
85
+ const excludedProfileIds = new Set();
86
+ for (;;) {
87
+ const credentialProfile = deps.resolveReviewerProfile
88
+ ? await deps.resolveReviewerProfile({
89
+ harnessId: entry.harness,
90
+ model: requestedModel,
91
+ authPreference,
92
+ credentialProfileId: entry.credentialProfileId ?? null,
93
+ ...(excludedProfileIds.size > 0 ? { excludedProfileIds } : {}),
94
+ })
95
+ : null;
96
+ if (entry.credentialProfileId && !credentialProfile) {
97
+ throw new HarnessUnavailableError(`reviewer credential profile "${entry.credentialProfileId}" could not be resolved for harness '${entry.harness}'`);
63
98
  }
64
- catch {
65
- manifest = null;
99
+ const routeKey = `${entry.harness}\0${authPreference}`;
100
+ const statusKey = credentialProfile
101
+ ? `${routeKey}\0${credentialProfile.profile_id}`
102
+ : routeKey;
103
+ if (!statusByRoute.has(statusKey)) {
104
+ let manifest = null;
105
+ try {
106
+ manifest = await adapter.discover();
107
+ }
108
+ catch {
109
+ manifest = null;
110
+ }
111
+ if (credentialProfile) {
112
+ statusByRoute.set(statusKey, {
113
+ manifest,
114
+ status: "ok",
115
+ enabledIntents: ["review"],
116
+ reasons: [],
117
+ authSources: [],
118
+ });
119
+ }
120
+ else
121
+ try {
122
+ const report = await adapter.doctor({ cwd, env: reviewModelEnv(), authPreference });
123
+ statusByRoute.set(statusKey, {
124
+ manifest,
125
+ status: report.status,
126
+ enabledIntents: report.enabled_intents,
127
+ reasons: report.reasons ?? [],
128
+ authSources: report.auth_sources ?? [],
129
+ });
130
+ }
131
+ catch (err) {
132
+ statusByRoute.set(statusKey, {
133
+ manifest,
134
+ status: "unavailable",
135
+ enabledIntents: [],
136
+ reasons: [err instanceof Error ? err.message : String(err)],
137
+ authSources: [],
138
+ });
139
+ }
66
140
  }
67
- try {
68
- const report = await adapter.doctor({ cwd, env: reviewModelEnv(), authPreference });
69
- statusByRoute.set(routeKey, {
70
- manifest,
71
- status: report.status,
72
- enabledIntents: report.enabled_intents,
73
- reasons: report.reasons ?? [],
74
- authSources: report.auth_sources ?? [],
75
- });
141
+ const status = statusByRoute.get(statusKey);
142
+ const manifest = status?.manifest;
143
+ if (!status || !manifest) {
144
+ throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' is unavailable`);
76
145
  }
77
- catch (err) {
78
- statusByRoute.set(routeKey, {
79
- manifest,
80
- status: "unavailable",
81
- enabledIntents: [],
82
- reasons: [err instanceof Error ? err.message : String(err)],
83
- authSources: [],
84
- });
146
+ if (manifest.kind === "fake") {
147
+ throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' is a fake harness and cannot be used in reviewer panels`);
85
148
  }
86
- }
87
- const status = statusByRoute.get(routeKey);
88
- const manifest = status?.manifest;
89
- if (!status || !manifest) {
90
- throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' is unavailable`);
91
- }
92
- if (manifest.kind === "fake") {
93
- throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' is a fake harness and cannot be used in reviewer panels`);
94
- }
95
- if (status.status !== "ok") {
96
- const reason = status.reasons.length > 0 ? `: ${status.reasons.join("; ")}` : "";
97
- throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' is not doctor-ok${reason}`);
98
- }
99
- if (!status.enabledIntents.includes("review") ||
100
- !manifest.capabilities.review ||
101
- !manifest.access_profiles_supported.includes("readonly")) {
102
- throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' cannot perform readonly review`);
103
- }
104
- const requestedModel = entry.model ?? harnessSettings[entry.harness]?.default_model ?? null;
105
- if (requestedModel) {
106
- if (typeof adapter.models !== "function") {
107
- // STRICT: the manifest list is the truth source here; an empty
108
- // list means the harness cannot verify models and the explicit
109
- // model is refused (validateModel phrases both refusals).
110
- const check = validateModel(requestedModel, knownModelIdsForRoute(manifest.capabilities.known_models, estimateEffectiveAuthRoute(authPreference, status.authSources)), "manifest");
111
- if (check.status !== "ok") {
112
- throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' refused requested model '${requestedModel}': ${check.message}; run \`claudexor models --harness ${entry.harness}\``);
113
- }
149
+ if (status.status !== "ok") {
150
+ const reason = status.reasons.length > 0 ? `: ${status.reasons.join("; ")}` : "";
151
+ throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' is not doctor-ok${reason}`);
114
152
  }
115
- else {
116
- const inventoryKey = `${entry.harness}\0${authPreference}`;
117
- if (!modelInventory.has(inventoryKey)) {
118
- modelInventory.set(inventoryKey, await listModelIdsWithRetry(adapter.models.bind(adapter), {
119
- cwd,
120
- authPreference,
121
- env: reviewModelEnv,
122
- harnessId: entry.harness,
123
- requestedModel,
124
- }));
153
+ if (!status.enabledIntents.includes("review") ||
154
+ !manifest.capabilities.review ||
155
+ !manifest.access_profiles_supported.includes("readonly")) {
156
+ throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' cannot perform readonly review`);
157
+ }
158
+ if (requestedModel) {
159
+ if (typeof adapter.models !== "function") {
160
+ // STRICT: the manifest list is the truth source here; an empty
161
+ // list means the harness cannot verify models and the explicit
162
+ // model is refused (validateModel phrases both refusals).
163
+ const check = validateModel(requestedModel, knownModelIdsForRoute(manifest.capabilities.known_models, credentialProfile
164
+ ? credentialProfileAuthRoute(credentialProfile)
165
+ : estimateEffectiveAuthRoute(authPreference, status.authSources)), "manifest");
166
+ if (check.status !== "ok") {
167
+ if (!entry.credentialProfileId && credentialProfile && deps.resolveReviewerProfile) {
168
+ excludedProfileIds.add(credentialProfile.profile_id);
169
+ continue;
170
+ }
171
+ throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' refused requested model '${requestedModel}': ${check.message}; run \`claudexor models --harness ${entry.harness}\``);
172
+ }
125
173
  }
126
- const models = modelInventory.get(inventoryKey);
127
- if (models && !models.has(requestedModel)) {
128
- const available = [...models].slice(0, 80).join(", ");
129
- const suffix = models.size > 80 ? `, ... (${models.size} total)` : "";
130
- throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' does not support requested model '${requestedModel}' on the review route (available: ${available}${suffix}); run \`claudexor models --harness ${entry.harness}\``);
174
+ else {
175
+ const inventoryKey = `${entry.harness}\0${authPreference}\0${credentialProfile?.profile_id ?? "default"}`;
176
+ if (!modelInventory.has(inventoryKey)) {
177
+ modelInventory.set(inventoryKey, await listModelIdsWithRetry(adapter.models.bind(adapter), {
178
+ cwd,
179
+ authPreference,
180
+ credentialProfile,
181
+ env: reviewModelEnv,
182
+ harnessId: entry.harness,
183
+ requestedModel,
184
+ }));
185
+ }
186
+ const models = modelInventory.get(inventoryKey);
187
+ if (models && models.size > 0 && !models.has(requestedModel)) {
188
+ if (!entry.credentialProfileId && credentialProfile && deps.resolveReviewerProfile) {
189
+ excludedProfileIds.add(credentialProfile.profile_id);
190
+ continue;
191
+ }
192
+ const available = [...models].slice(0, 80).join(", ");
193
+ const suffix = models.size > 80 ? `, ... (${models.size} total)` : "";
194
+ throw new HarnessUnavailableError(`reviewer harness '${entry.harness}' does not support requested model '${requestedModel}' on the review route (available: ${available}${suffix}); run \`claudexor models --harness ${entry.harness}\``);
195
+ }
131
196
  }
132
197
  }
198
+ const requestedEffort = entry.effort ?? null;
199
+ // An EXPLICIT panel entry is a precise owner statement — an unadvertised
200
+ // level stays a hard, typed refusal (never forwarded to die natively).
201
+ const refusal = reviewerEffortRefusal(entry.harness, requestedEffort, manifest.capabilities, requestedModel);
202
+ if (refusal)
203
+ throw new HarnessUnavailableError(refusal);
204
+ specs.push({
205
+ adapter,
206
+ providerFamily: manifest.provider_family,
207
+ requestedModel,
208
+ requestedEffort,
209
+ authPreference,
210
+ ...(deps.resolveReviewerProfile ? { credentialProfile } : {}),
211
+ });
212
+ break;
133
213
  }
134
- const requestedEffort = entry.effort ?? null;
135
- // An EXPLICIT panel entry is a precise owner statement — an unadvertised
136
- // level stays a hard, typed refusal (never forwarded to die natively).
137
- const refusal = reviewerEffortRefusal(entry.harness, requestedEffort, manifest.capabilities, requestedModel);
138
- if (refusal)
139
- throw new HarnessUnavailableError(refusal);
140
- specs.push({
141
- adapter,
142
- providerFamily: manifest.provider_family,
143
- requestedModel,
144
- requestedEffort,
145
- authPreference,
146
- });
147
214
  }
148
215
  }
149
216
  finally {
@@ -166,75 +233,150 @@ export async function resolveAutoReviewerPanel(deps, overrides = {}) {
166
233
  const seen = new Set();
167
234
  const reviewHome = new WorkspaceManager(cwd).readOnlyHomeEnv();
168
235
  try {
169
- for (const adapter of registry.values()) {
236
+ familyLoop: for (const adapter of registry.values()) {
170
237
  let m = null;
171
238
  try {
172
239
  m = await adapter.discover();
173
240
  }
174
- catch {
241
+ catch (error) {
242
+ discloseAutoSkip(deps, adapter.id, `discovery unavailable: ${safeErrorMessage(error)}`);
175
243
  continue;
176
244
  }
177
- if (!m || m.kind === "fake" || seen.has(m.provider_family))
245
+ if (!m) {
246
+ discloseAutoSkip(deps, adapter.id, "discovery returned no manifest");
178
247
  continue;
179
- // Per-harness settings gate reviewers before doctor/model probes: a disabled
180
- // harness must not spend auth/API-key readiness checks.
181
- if (harnessSettings[adapter.id]?.enabled === false)
182
- continue;
183
- const authPreference = deps.authPreferenceFor(adapter.id);
184
- let report = null;
185
- try {
186
- report = await adapter.doctor({ cwd, env: reviewHome.env, authPreference });
187
248
  }
188
- catch {
249
+ if (m.kind === "fake") {
250
+ discloseAutoSkip(deps, adapter.id, "fake harness");
189
251
  continue;
190
252
  }
191
- if (report.status !== "ok")
192
- continue; // reviewer eligibility needs scoped doctor-OK.
193
- if (!report.enabled_intents.includes("review"))
253
+ if (seen.has(m.provider_family))
194
254
  continue;
195
- if (!m.capabilities.review || !m.access_profiles_supported.includes("readonly"))
255
+ // Per-harness settings gate reviewers before doctor/model probes: a disabled
256
+ // harness must not spend auth/API-key readiness checks.
257
+ if (harnessSettings[adapter.id]?.enabled === false) {
258
+ discloseAutoSkip(deps, adapter.id, "disabled in settings");
196
259
  continue;
197
- // Explicit per-family override first, then the user's per-harness
198
- // default model: an explicit model request makes the route provable
199
- // (accepted_model_arg) on CLIs that never echo their model.
260
+ }
261
+ const authPreference = deps.authPreferenceFor(adapter.id);
200
262
  const requestedModel = overrides.reviewerModels?.[m.provider_family] ??
201
263
  harnessSettings[adapter.id]?.default_model ??
202
264
  null;
203
- // STRICT: the auto panel applies the SAME model truth gate as the
204
- // explicit panel a doomed reviewer model is refused here, never
205
- // forwarded to die as an opaque native error mid-review.
206
- if (requestedModel) {
207
- const check = validateModel(requestedModel, typeof adapter.models === "function"
208
- ? (await adapter.models({ cwd, env: reviewHome.env, authPreference })).map((x) => x.id)
209
- : knownModelIdsForRoute(m.capabilities.known_models, estimateEffectiveAuthRoute(authPreference, report.auth_sources)), typeof adapter.models === "function" ? "api" : "manifest");
210
- if (check.status !== "ok") {
211
- throw new HarnessUnavailableError(`auto-selected reviewer harness '${adapter.id}' refused model '${requestedModel}': ${check.message}; ` +
212
- `fix the reviewer model override or harnesses.${adapter.id}.default_model, or run \`claudexor models --harness ${adapter.id}\``);
265
+ let credentialProfile = null;
266
+ const excludedProfileIds = new Set();
267
+ for (;;) {
268
+ if (deps.resolveReviewerProfile) {
269
+ try {
270
+ credentialProfile = await deps.resolveReviewerProfile({
271
+ harnessId: adapter.id,
272
+ model: requestedModel,
273
+ authPreference,
274
+ credentialProfileId: null,
275
+ ...(excludedProfileIds.size > 0 ? { excludedProfileIds } : {}),
276
+ });
277
+ }
278
+ catch (error) {
279
+ // Automatic panels disclose unavailable families by omission, while
280
+ // keeping the reason in the existing ignored-setting stream instead
281
+ // of inventing a second reviewer ledger.
282
+ discloseAutoSkip(deps, adapter.id, safeErrorMessage(error));
283
+ continue familyLoop;
284
+ }
213
285
  }
286
+ let report = null;
287
+ if (credentialProfile) {
288
+ report = ConformanceReport.parse({
289
+ harness_id: adapter.id,
290
+ status: "ok",
291
+ enabled_intents: ["review"],
292
+ });
293
+ }
294
+ else
295
+ try {
296
+ report = await adapter.doctor({ cwd, env: reviewHome.env, authPreference });
297
+ }
298
+ catch (error) {
299
+ discloseAutoSkip(deps, adapter.id, `doctor unavailable: ${safeErrorMessage(error)}`);
300
+ continue familyLoop;
301
+ }
302
+ if (report.status !== "ok") {
303
+ discloseAutoSkip(deps, adapter.id, `doctor status '${report.status}'`);
304
+ continue familyLoop;
305
+ }
306
+ if (!report.enabled_intents.includes("review")) {
307
+ discloseAutoSkip(deps, adapter.id, "review intent unavailable");
308
+ continue familyLoop;
309
+ }
310
+ if (!m.capabilities.review || !m.access_profiles_supported.includes("readonly")) {
311
+ discloseAutoSkip(deps, adapter.id, "readonly review capability unavailable");
312
+ continue familyLoop;
313
+ }
314
+ // STRICT: the auto panel applies the SAME model truth gate as the
315
+ // explicit panel — a doomed reviewer model is refused here, never
316
+ // forwarded to die as an opaque native error mid-review.
317
+ if (requestedModel) {
318
+ const inventory = typeof adapter.models === "function"
319
+ ? await readAutoModelInventory(adapter, {
320
+ cwd,
321
+ env: reviewHome.env,
322
+ authPreference,
323
+ ...(credentialProfile ? { credentialProfile } : {}),
324
+ })
325
+ : (() => {
326
+ const ids = knownModelIdsForRoute(m.capabilities.known_models, credentialProfile
327
+ ? credentialProfileAuthRoute(credentialProfile)
328
+ : estimateEffectiveAuthRoute(authPreference, report.auth_sources));
329
+ return ids.length > 0
330
+ ? {
331
+ status: "available",
332
+ ids: new Set(ids),
333
+ source: "manifest",
334
+ }
335
+ : {
336
+ status: "unknown",
337
+ reason: "manifest model inventory unavailable",
338
+ };
339
+ })();
340
+ if (inventory.status === "unknown") {
341
+ discloseAutoSkip(deps, adapter.id, inventory.reason);
342
+ continue familyLoop;
343
+ }
344
+ const check = validateModel(requestedModel, [...inventory.ids], inventory.source);
345
+ if (check.status !== "ok") {
346
+ if (credentialProfile && deps.resolveReviewerProfile) {
347
+ excludedProfileIds.add(credentialProfile.profile_id);
348
+ continue;
349
+ }
350
+ discloseAutoSkip(deps, adapter.id, `requested model '${requestedModel}' is unavailable: ${check.message}`);
351
+ continue familyLoop;
352
+ }
353
+ }
354
+ // DISCLOSE-AND-DROP, deliberately weaker than the model gate above: the
355
+ // per-family `reviewerEfforts` map also rides stored replay surfaces
356
+ // (Exact Retry params, `ControlRunAgainDraft.request`), so a map recorded
357
+ // before a reviewer/catalog change must not hard-fail a replay that used
358
+ // to run. A fresh request and a replayed draft are indistinguishable at
359
+ // this layer, so the disclosed drop applies everywhere — the honest
360
+ // middle: the panel still reviews, at the reviewer's default effort, and
361
+ // the drop is disclosed instead of a typed refusal killing the run.
362
+ // (Explicit `reviewerPanel[].effort` entries above stay hard refusals.)
363
+ let requestedEffort = overrides.reviewerEfforts?.[m.provider_family] ?? null;
364
+ const dropped = reviewerEffortRefusal(adapter.id, requestedEffort, m.capabilities, requestedModel);
365
+ if (dropped) {
366
+ deps.onIgnoredSetting?.(`reviewer effort dropped: ${dropped}`);
367
+ requestedEffort = null;
368
+ }
369
+ seen.add(m.provider_family);
370
+ specs.push({
371
+ adapter,
372
+ providerFamily: m.provider_family,
373
+ requestedModel,
374
+ requestedEffort,
375
+ authPreference,
376
+ ...(deps.resolveReviewerProfile ? { credentialProfile } : {}),
377
+ });
378
+ break;
214
379
  }
215
- // DISCLOSE-AND-DROP, deliberately weaker than the model gate above: the
216
- // per-family `reviewerEfforts` map also rides stored replay surfaces
217
- // (Exact Retry params, `ControlRunAgainDraft.request`), so a map recorded
218
- // before a reviewer/catalog change must not hard-fail a replay that used
219
- // to run. A fresh request and a replayed draft are indistinguishable at
220
- // this layer, so the disclosed drop applies everywhere — the honest
221
- // middle: the panel still reviews, at the reviewer's default effort, and
222
- // the drop is disclosed instead of a typed refusal killing the run.
223
- // (Explicit `reviewerPanel[].effort` entries above stay hard refusals.)
224
- let requestedEffort = overrides.reviewerEfforts?.[m.provider_family] ?? null;
225
- const dropped = reviewerEffortRefusal(adapter.id, requestedEffort, m.capabilities, requestedModel);
226
- if (dropped) {
227
- deps.onIgnoredSetting?.(`reviewer effort dropped: ${dropped}`);
228
- requestedEffort = null;
229
- }
230
- seen.add(m.provider_family);
231
- specs.push({
232
- adapter,
233
- providerFamily: m.provider_family,
234
- requestedModel,
235
- requestedEffort,
236
- authPreference,
237
- });
238
380
  if (specs.length >= 2)
239
381
  break;
240
382
  }
@@ -255,6 +397,7 @@ async function listModelIdsWithRetry(listModels, input) {
255
397
  cwd: input.cwd,
256
398
  env: input.env(),
257
399
  authPreference: input.authPreference,
400
+ ...(input.credentialProfile ? { credentialProfile: input.credentialProfile } : {}),
258
401
  });
259
402
  if (models.length === 0) {
260
403
  throw new Error("model inventory was empty");
@@ -1 +1 @@
1
- {"version":3,"file":"reviewerPanel.js","sourceRoot":"","sources":["../src/reviewerPanel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reviewerPanel.js","sourceRoot":"","sources":["../src/reviewerPanel.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,8BAA8B,GAAG,GAAG,CAAC;AA0B3C;;;;;;;;;;;;GAYG;AACH,SAAS,qBAAqB,CAC5B,SAAiB,EACjB,eAAkC,EAClC,YAGC,EACD,KAAoB;IAEpB,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAClC,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,uCAAuC;IACvC,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,QAAQ,GACZ,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,CAAC,SAAS;QACvB,CAAC,CAAC,wCAAwC;QAC1C,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,YAAY,KAAK,iBAAiB,SAAS,GAAG;YAChD,CAAC,CAAC,kEAAkE,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,GAAG,CAAC;IACxH,OAAO,qBAAqB,SAAS,wCAAwC,eAAe,IAAI,MAAM,EAAE,CAAC;AAC3G,CAAC;AAED,SAAS,0BAA0B,CAAC,OAA0B;IAC5D,OAAO,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAuB,EAAE,SAAiB,EAAE,MAAc;IAClF,IAAI,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,SAAS,cAAc,MAAM,EAAE,CAAC,CAAC;AAC/E,CAAC;AAMD,KAAK,UAAU,sBAAsB,CACnC,OAAuB,EACvB,KAA2D;IAE3D,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU;QACtC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC/F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,0BAA0B,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAuB,EACvB,KAAkC;IAElC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAChD,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IACtD,MAAM,aAAa,GAAG,IAAI,GAAG,EAS1B,CAAC;IACJ,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,eAAe,GAEjB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,GAA2B,EAAE;YAClD,eAAe,CAAC,OAAO,KAAK,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;YACxE,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC;QACrC,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,uBAAuB,CAC/B,6BAA6B,KAAK,CAAC,OAAO,kBAAkB,KAAK,yCAAyC,CAC3G,CAAC;YACJ,CAAC;YACD,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;gBACtD,MAAM,IAAI,uBAAuB,CAC/B,qBAAqB,KAAK,CAAC,OAAO,wCAAwC,KAAK,CAAC,OAAO,iBAAiB,CACzG,CAAC;YACJ,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,aAAa,IAAI,IAAI,CAAC;YAC5F,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9D,MAAM,IAAI,uBAAuB,CAC/B,gCAAgC,KAAK,CAAC,mBAAmB,oEAAoE,CAC9H,CAAC;YACJ,CAAC;YACD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;YAC7C,SAAS,CAAC;gBACR,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB;oBACnD,CAAC,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC;wBAChC,SAAS,EAAE,KAAK,CAAC,OAAO;wBACxB,KAAK,EAAE,cAAc;wBACrB,cAAc;wBACd,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,IAAI;wBACtD,GAAG,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC/D,CAAC;oBACJ,CAAC,CAAC,IAAI,CAAC;gBACT,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACpD,MAAM,IAAI,uBAAuB,CAC/B,gCAAgC,KAAK,CAAC,mBAAmB,wCAAwC,KAAK,CAAC,OAAO,GAAG,CAClH,CAAC;gBACJ,CAAC;gBACD,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;gBACvD,MAAM,SAAS,GAAG,iBAAiB;oBACjC,CAAC,CAAC,GAAG,QAAQ,KAAK,iBAAiB,CAAC,UAAU,EAAE;oBAChD,CAAC,CAAC,QAAQ,CAAC;gBACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClC,IAAI,QAAQ,GAA2D,IAAI,CAAC;oBAC5E,IAAI,CAAC;wBACH,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACtC,CAAC;oBAAC,MAAM,CAAC;wBACP,QAAQ,GAAG,IAAI,CAAC;oBAClB,CAAC;oBACD,IAAI,iBAAiB,EAAE,CAAC;wBACtB,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE;4BAC3B,QAAQ;4BACR,MAAM,EAAE,IAAI;4BACZ,cAAc,EAAE,CAAC,QAAQ,CAAC;4BAC1B,OAAO,EAAE,EAAE;4BACX,WAAW,EAAE,EAAE;yBAChB,CAAC,CAAC;oBACL,CAAC;;wBACC,IAAI,CAAC;4BACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;4BACpF,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE;gCAC3B,QAAQ;gCACR,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,cAAc,EAAE,MAAM,CAAC,eAAe;gCACtC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;gCAC7B,WAAW,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;6BACvC,CAAC,CAAC;wBACL,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE;gCAC3B,QAAQ;gCACR,MAAM,EAAE,aAAa;gCACrB,cAAc,EAAE,EAAE;gCAClB,OAAO,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gCAC3D,WAAW,EAAE,EAAE;6BAChB,CAAC,CAAC;wBACL,CAAC;gBACL,CAAC;gBACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAC;gBAClC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACzB,MAAM,IAAI,uBAAuB,CAAC,qBAAqB,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;gBAC1F,CAAC;gBACD,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC7B,MAAM,IAAI,uBAAuB,CAC/B,qBAAqB,KAAK,CAAC,OAAO,2DAA2D,CAC9F,CAAC;gBACJ,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,MAAM,IAAI,uBAAuB,CAC/B,qBAAqB,KAAK,CAAC,OAAO,qBAAqB,MAAM,EAAE,CAChE,CAAC;gBACJ,CAAC;gBACD,IACE,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACzC,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM;oBAC7B,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,UAAU,CAAC,EACxD,CAAC;oBACD,MAAM,IAAI,uBAAuB,CAC/B,qBAAqB,KAAK,CAAC,OAAO,kCAAkC,CACrE,CAAC;gBACJ,CAAC;gBACD,IAAI,cAAc,EAAE,CAAC;oBACnB,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;wBACzC,+DAA+D;wBAC/D,+DAA+D;wBAC/D,0DAA0D;wBAC1D,MAAM,KAAK,GAAG,aAAa,CACzB,cAAc,EACd,qBAAqB,CACnB,QAAQ,CAAC,YAAY,CAAC,YAAY,EAClC,iBAAiB;4BACf,CAAC,CAAC,0BAA0B,CAAC,iBAAiB,CAAC;4BAC/C,CAAC,CAAC,0BAA0B,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CACnE,EACD,UAAU,CACX,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;4BAC1B,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,iBAAiB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gCACnF,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gCACrD,SAAS;4BACX,CAAC;4BACD,MAAM,IAAI,uBAAuB,CAC/B,qBAAqB,KAAK,CAAC,OAAO,8BAA8B,cAAc,MAAM,KAAK,CAAC,OAAO,sCAAsC,KAAK,CAAC,OAAO,IAAI,CACzJ,CAAC;wBACJ,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,YAAY,GAAG,GAAG,KAAK,CAAC,OAAO,KAAK,cAAc,KAAK,iBAAiB,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC;wBAC1G,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;4BACtC,cAAc,CAAC,GAAG,CAChB,YAAY,EACZ,MAAM,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gCACxD,GAAG;gCACH,cAAc;gCACd,iBAAiB;gCACjB,GAAG,EAAE,cAAc;gCACnB,SAAS,EAAE,KAAK,CAAC,OAAO;gCACxB,cAAc;6BACf,CAAC,CACH,CAAC;wBACJ,CAAC;wBACD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;wBAChD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;4BAC7D,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,iBAAiB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gCACnF,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gCACrD,SAAS;4BACX,CAAC;4BACD,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;4BACtE,MAAM,IAAI,uBAAuB,CAC/B,qBAAqB,KAAK,CAAC,OAAO,uCAAuC,cAAc,qCAAqC,SAAS,GAAG,MAAM,uCAAuC,KAAK,CAAC,OAAO,IAAI,CACvM,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;gBAC7C,yEAAyE;gBACzE,uEAAuE;gBACvE,MAAM,OAAO,GAAG,qBAAqB,CACnC,KAAK,CAAC,OAAO,EACb,eAAe,EACf,QAAQ,CAAC,YAAY,EACrB,cAAc,CACf,CAAC;gBACF,IAAI,OAAO;oBAAE,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC;oBACT,OAAO;oBACP,cAAc,EAAE,QAAQ,CAAC,eAAe;oBACxC,cAAc;oBACd,eAAe;oBACf,cAAc;oBACd,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9D,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAOD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAuB,EACvB,SAAS,GAA+B,EAAE;IAE1C,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAChD,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;IAC/D,IAAI,CAAC;QACH,UAAU,EAAE,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,GAA2D,IAAI,CAAC;YACrE,IAAI,CAAC;gBACH,CAAC,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,0BAA0B,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,SAAS;YACX,CAAC;YACD,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAC;gBACrE,SAAS;YACX,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACtB,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;gBACnD,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC;gBAAE,SAAS;YAC1C,6EAA6E;YAC7E,wDAAwD;YACxD,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;gBACnD,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;gBAC3D,SAAS;YACX,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1D,MAAM,cAAc,GAClB,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;gBAC7C,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,aAAa;gBAC1C,IAAI,CAAC;YACP,IAAI,iBAAiB,GAA6B,IAAI,CAAC;YACvD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;YAC7C,SAAS,CAAC;gBACR,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,iBAAiB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC;4BACpD,SAAS,EAAE,OAAO,CAAC,EAAE;4BACrB,KAAK,EAAE,cAAc;4BACrB,cAAc;4BACd,mBAAmB,EAAE,IAAI;4BACzB,GAAG,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC/D,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,oEAAoE;wBACpE,oEAAoE;wBACpE,yCAAyC;wBACzC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC5D,SAAS,UAAU,CAAC;oBACtB,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,GAA6B,IAAI,CAAC;gBAC5C,IAAI,iBAAiB,EAAE,CAAC;oBACtB,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC;wBAC/B,UAAU,EAAE,OAAO,CAAC,EAAE;wBACtB,MAAM,EAAE,IAAI;wBACZ,eAAe,EAAE,CAAC,QAAQ,CAAC;qBAC5B,CAAC,CAAC;gBACL,CAAC;;oBACC,IAAI,CAAC;wBACH,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;oBAC9E,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,uBAAuB,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACrF,SAAS,UAAU,CAAC;oBACtB,CAAC;gBACH,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC3B,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,kBAAkB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;oBACvE,SAAS,UAAU,CAAC;gBACtB,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/C,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;oBAChE,SAAS,UAAU,CAAC;gBACtB,CAAC;gBACD,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChF,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,wCAAwC,CAAC,CAAC;oBAC7E,SAAS,UAAU,CAAC;gBACtB,CAAC;gBACD,kEAAkE;gBAClE,kEAAkE;gBAClE,yDAAyD;gBACzD,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,SAAS,GACb,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU;wBAClC,CAAC,CAAC,MAAM,sBAAsB,CAAC,OAAO,EAAE;4BACpC,GAAG;4BACH,GAAG,EAAE,UAAU,CAAC,GAAG;4BACnB,cAAc;4BACd,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACpD,CAAC;wBACJ,CAAC,CAAC,CAAC,GAAG,EAAE;4BACJ,MAAM,GAAG,GAAG,qBAAqB,CAC/B,CAAC,CAAC,YAAY,CAAC,YAAY,EAC3B,iBAAiB;gCACf,CAAC,CAAC,0BAA0B,CAAC,iBAAiB,CAAC;gCAC/C,CAAC,CAAC,0BAA0B,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,CACpE,CAAC;4BACF,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC;gCACnB,CAAC,CAAC;oCACE,MAAM,EAAE,WAAoB;oCAC5B,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC;oCACjB,MAAM,EAAE,UAAmB;iCAC5B;gCACH,CAAC,CAAC;oCACE,MAAM,EAAE,SAAkB;oCAC1B,MAAM,EAAE,sCAAsC;iCAC/C,CAAC;wBACR,CAAC,CAAC,EAAE,CAAC;oBACX,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBACnC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;wBACrD,SAAS,UAAU,CAAC;oBACtB,CAAC;oBACD,MAAM,KAAK,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;oBAClF,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;wBAC1B,IAAI,iBAAiB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;4BACrD,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;4BACrD,SAAS;wBACX,CAAC;wBACD,gBAAgB,CACd,IAAI,EACJ,OAAO,CAAC,EAAE,EACV,oBAAoB,cAAc,qBAAqB,KAAK,CAAC,OAAO,EAAE,CACvE,CAAC;wBACF,SAAS,UAAU,CAAC;oBACtB,CAAC;gBACH,CAAC;gBACD,wEAAwE;gBACxE,qEAAqE;gBACrE,0EAA0E;gBAC1E,yEAAyE;gBACzE,wEAAwE;gBACxE,oEAAoE;gBACpE,yEAAyE;gBACzE,oEAAoE;gBACpE,wEAAwE;gBACxE,IAAI,eAAe,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC;gBAC7E,MAAM,OAAO,GAAG,qBAAqB,CACnC,OAAO,CAAC,EAAE,EACV,eAAe,EACf,CAAC,CAAC,YAAY,EACd,cAAc,CACf,CAAC;gBACF,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;oBAC/D,eAAe,GAAG,IAAI,CAAC;gBACzB,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC;oBACT,OAAO;oBACP,cAAc,EAAE,CAAC,CAAC,eAAe;oBACjC,cAAc;oBACd,eAAe;oBACf,cAAc;oBACd,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9D,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM;QAC/B,CAAC;IACH,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;uEAEuE;AACvE,KAAK,UAAU,qBAAqB,CAClC,UAAiD,EACjD,KAOC;IAED,IAAI,SAAS,GAAY,IAAI,CAAC;IAC9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;gBAC9B,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;gBAChB,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnF,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAChB,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;IAC/F,MAAM,IAAI,uBAAuB,CAC/B,qBAAqB,KAAK,CAAC,SAAS,uCAAuC,KAAK,CAAC,cAAc,0DAA0D,MAAM,sCAAsC,KAAK,CAAC,SAAS,IAAI,CACzN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { AccessProfile, ModeKind } from "@claudexor/schema";
2
+ export interface RunAdmissionInput {
3
+ repoRoot: string;
4
+ executionRoot?: string;
5
+ retryOf?: string | null;
6
+ access?: AccessProfile;
7
+ attempts?: number | null;
8
+ untilClean?: boolean;
9
+ tests?: readonly unknown[] | null;
10
+ inPlace?: boolean;
11
+ delegated?: boolean;
12
+ denyPaths?: string[];
13
+ outputSchema?: Record<string, unknown> | null;
14
+ }
15
+ export interface RunAdmissionDeps {
16
+ accessDefault: AccessProfile;
17
+ projectProtectedPaths: () => readonly string[];
18
+ mandatoryFiles: () => readonly string[];
19
+ }
20
+ /**
21
+ * Pre-announcement engine admission shared by every run strategy.
22
+ *
23
+ * Keep these checks together and ordered: access/strategy coherence and the
24
+ * delegated execution-root backstop run before any filesystem-policy check;
25
+ * output contracts and mandatory project context are then validated before a
26
+ * run directory can be announced.
27
+ */
28
+ export declare function admitRun(input: RunAdmissionInput, mode: ModeKind, deps: RunAdmissionDeps): Record<string, unknown> | null | undefined;
29
+ //# sourceMappingURL=runAdmission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runAdmission.d.ts","sourceRoot":"","sources":["../src/runAdmission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAcjE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,qBAAqB,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IAC/C,cAAc,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;CACzC;AAmBD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAoD5C"}
@@ -0,0 +1,63 @@
1
+ import { normalizeUserOutputSchema, resolveRunAccess, runAccessStrategyViolation, runExecutionWorkspaceViolation, } from "@claudexor/schema";
2
+ import { assertMandatoryContext } from "@claudexor/context";
3
+ import { noProjectRepoRoot } from "@claudexor/util";
4
+ import { assertOutputSchemaCompiles } from "./structuredOutput.js";
5
+ import { assertWriteIsolation } from "./write-isolation.js";
6
+ const NO_PROJECT_ROOT = noProjectRepoRoot();
7
+ function throwAdmissionViolation(violation) {
8
+ if (!violation)
9
+ return;
10
+ throw Object.assign(new Error(violation.message), {
11
+ status: 400,
12
+ code: violation.code,
13
+ retryable: violation.retryable,
14
+ requiredActions: [...violation.requiredActions],
15
+ });
16
+ }
17
+ /**
18
+ * Pre-announcement engine admission shared by every run strategy.
19
+ *
20
+ * Keep these checks together and ordered: access/strategy coherence and the
21
+ * delegated execution-root backstop run before any filesystem-policy check;
22
+ * output contracts and mandatory project context are then validated before a
23
+ * run directory can be announced.
24
+ */
25
+ export function admitRun(input, mode, deps) {
26
+ const effectiveAccess = resolveRunAccess({ mode, access: input.access }, deps.accessDefault).effective;
27
+ throwAdmissionViolation(runAccessStrategyViolation(input, effectiveAccess));
28
+ throwAdmissionViolation(runExecutionWorkspaceViolation({
29
+ mode,
30
+ retryOf: input.retryOf,
31
+ execution: {
32
+ isolation: input.inPlace === true ? "live" : "envelope",
33
+ delegated: input.delegated === true,
34
+ ...(input.executionRoot === undefined ? {} : { workspaceRoot: input.executionRoot }),
35
+ },
36
+ }, effectiveAccess));
37
+ if (effectiveAccess !== "readonly") {
38
+ assertWriteIsolation({
39
+ mode,
40
+ protectedPaths: mode === "agent" ? deps.projectProtectedPaths() : [],
41
+ denyPaths: input.denyPaths,
42
+ inPlace: input.inPlace,
43
+ repoRoot: input.repoRoot,
44
+ executionRoot: input.executionRoot ?? input.repoRoot,
45
+ });
46
+ }
47
+ let outputSchema = input.outputSchema;
48
+ if (outputSchema !== undefined && outputSchema !== null) {
49
+ if (mode !== "agent" && mode !== "ask") {
50
+ throw new Error(`outputSchema constrains the final answer and applies to agent/ask runs (got mode=${mode}); drop the schema or switch modes`);
51
+ }
52
+ if (input.untilClean || (input.attempts !== undefined && input.attempts !== null)) {
53
+ throw new Error("outputSchema is not supported with convergence flags (--until-clean/--attempts): convergence delivers a gated patch, not a structured answer; drop the schema or the convergence flags");
54
+ }
55
+ outputSchema = normalizeUserOutputSchema(outputSchema);
56
+ assertOutputSchemaCompiles(outputSchema);
57
+ }
58
+ if (input.repoRoot !== NO_PROJECT_ROOT) {
59
+ assertMandatoryContext(input.repoRoot, deps.mandatoryFiles());
60
+ }
61
+ return outputSchema;
62
+ }
63
+ //# sourceMappingURL=runAdmission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runAdmission.js","sourceRoot":"","sources":["../src/runAdmission.ts"],"names":[],"mappings":"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"}