audit-tools 0.33.0 → 0.33.1

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 (126) hide show
  1. package/README.md +7 -0
  2. package/dist/audit/cli/args.d.ts.map +1 -1
  3. package/dist/audit/cli/args.js +3 -0
  4. package/dist/audit/cli/args.js.map +1 -1
  5. package/dist/audit/cli/hybridDispatch.d.ts.map +1 -1
  6. package/dist/audit/cli/hybridDispatch.js +5 -0
  7. package/dist/audit/cli/hybridDispatch.js.map +1 -1
  8. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  9. package/dist/audit/cli/nextStepCommand.js +23 -1
  10. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  11. package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
  12. package/dist/audit/cli/rollingAuditDispatch.js +14 -1
  13. package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
  14. package/dist/audit/cli.js +3 -3
  15. package/dist/audit/cli.js.map +1 -1
  16. package/dist/audit/orchestrator/rollingDispatch.d.ts.map +1 -1
  17. package/dist/audit/orchestrator/rollingDispatch.js +2 -0
  18. package/dist/audit/orchestrator/rollingDispatch.js.map +1 -1
  19. package/dist/audit/providers/claudeWorkerProvider.d.ts +10 -0
  20. package/dist/audit/providers/claudeWorkerProvider.d.ts.map +1 -0
  21. package/dist/audit/providers/claudeWorkerProvider.js +15 -0
  22. package/dist/audit/providers/claudeWorkerProvider.js.map +1 -0
  23. package/dist/audit/providers/index.d.ts.map +1 -1
  24. package/dist/audit/providers/index.js +2 -0
  25. package/dist/audit/providers/index.js.map +1 -1
  26. package/dist/audit/quota/index.d.ts +15 -10
  27. package/dist/audit/quota/index.d.ts.map +1 -1
  28. package/dist/remediate/index.d.ts.map +1 -1
  29. package/dist/remediate/index.js +2 -2
  30. package/dist/remediate/index.js.map +1 -1
  31. package/dist/remediate/providers/claudeWorkerProvider.d.ts +11 -0
  32. package/dist/remediate/providers/claudeWorkerProvider.d.ts.map +1 -0
  33. package/dist/remediate/providers/claudeWorkerProvider.js +16 -0
  34. package/dist/remediate/providers/claudeWorkerProvider.js.map +1 -0
  35. package/dist/remediate/providers/index.d.ts.map +1 -1
  36. package/dist/remediate/providers/index.js +2 -0
  37. package/dist/remediate/providers/index.js.map +1 -1
  38. package/dist/remediate/steps/dispatch/acceptNode.d.ts +1 -1
  39. package/dist/remediate/steps/dispatch/acceptNode.d.ts.map +1 -1
  40. package/dist/remediate/steps/dispatch/acceptNode.js.map +1 -1
  41. package/dist/remediate/steps/nextStep.d.ts +21 -0
  42. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  43. package/dist/remediate/steps/nextStep.js +21 -2
  44. package/dist/remediate/steps/nextStep.js.map +1 -1
  45. package/dist/remediate/steps/sessionConfigLoad.d.ts.map +1 -1
  46. package/dist/remediate/steps/sessionConfigLoad.js +8 -1
  47. package/dist/remediate/steps/sessionConfigLoad.js.map +1 -1
  48. package/dist/shared/config/resolveSessionConfig.d.ts +6 -3
  49. package/dist/shared/config/resolveSessionConfig.d.ts.map +1 -1
  50. package/dist/shared/config/resolveSessionConfig.js +21 -1
  51. package/dist/shared/config/resolveSessionConfig.js.map +1 -1
  52. package/dist/shared/dispatch/coordinator.d.ts.map +1 -1
  53. package/dist/shared/dispatch/coordinator.js +52 -6
  54. package/dist/shared/dispatch/coordinator.js.map +1 -1
  55. package/dist/shared/dispatch/hybridDispatch.d.ts +6 -0
  56. package/dist/shared/dispatch/hybridDispatch.d.ts.map +1 -1
  57. package/dist/shared/dispatch/hybridDispatch.js +6 -0
  58. package/dist/shared/dispatch/hybridDispatch.js.map +1 -1
  59. package/dist/shared/dispatch/providerLaunchFinalize.d.ts +2 -1
  60. package/dist/shared/dispatch/providerLaunchFinalize.d.ts.map +1 -1
  61. package/dist/shared/dispatch/providerLaunchFinalize.js +123 -68
  62. package/dist/shared/dispatch/providerLaunchFinalize.js.map +1 -1
  63. package/dist/shared/dispatch/rollingDispatch.d.ts +69 -2
  64. package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
  65. package/dist/shared/dispatch/rollingDispatch.js +177 -7
  66. package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
  67. package/dist/shared/dispatch/unifiedRolling.d.ts +23 -0
  68. package/dist/shared/dispatch/unifiedRolling.d.ts.map +1 -1
  69. package/dist/shared/dispatch/unifiedRolling.js +2 -0
  70. package/dist/shared/dispatch/unifiedRolling.js.map +1 -1
  71. package/dist/shared/friction/stepBoundaryCapture.d.ts +31 -1
  72. package/dist/shared/friction/stepBoundaryCapture.d.ts.map +1 -1
  73. package/dist/shared/friction/stepBoundaryCapture.js +47 -0
  74. package/dist/shared/friction/stepBoundaryCapture.js.map +1 -1
  75. package/dist/shared/index.d.ts +8 -4
  76. package/dist/shared/index.d.ts.map +1 -1
  77. package/dist/shared/index.js +10 -2
  78. package/dist/shared/index.js.map +1 -1
  79. package/dist/shared/io/stateDir.d.ts +27 -0
  80. package/dist/shared/io/stateDir.d.ts.map +1 -0
  81. package/dist/shared/io/stateDir.js +40 -0
  82. package/dist/shared/io/stateDir.js.map +1 -0
  83. package/dist/shared/providers/auditorSources.d.ts +71 -4
  84. package/dist/shared/providers/auditorSources.d.ts.map +1 -1
  85. package/dist/shared/providers/auditorSources.js +235 -8
  86. package/dist/shared/providers/auditorSources.js.map +1 -1
  87. package/dist/shared/providers/claudeWorkerProvider.d.ts +71 -0
  88. package/dist/shared/providers/claudeWorkerProvider.d.ts.map +1 -0
  89. package/dist/shared/providers/claudeWorkerProvider.js +133 -0
  90. package/dist/shared/providers/claudeWorkerProvider.js.map +1 -0
  91. package/dist/shared/providers/providerConfirmation.d.ts.map +1 -1
  92. package/dist/shared/providers/providerConfirmation.js +24 -3
  93. package/dist/shared/providers/providerConfirmation.js.map +1 -1
  94. package/dist/shared/providers/providerFactory.d.ts +7 -1
  95. package/dist/shared/providers/providerFactory.d.ts.map +1 -1
  96. package/dist/shared/providers/providerFactory.js +6 -0
  97. package/dist/shared/providers/providerFactory.js.map +1 -1
  98. package/dist/shared/providers/proxyCatalog.d.ts +95 -0
  99. package/dist/shared/providers/proxyCatalog.d.ts.map +1 -0
  100. package/dist/shared/providers/proxyCatalog.js +426 -0
  101. package/dist/shared/providers/proxyCatalog.js.map +1 -0
  102. package/dist/shared/quota/apiPool.d.ts.map +1 -1
  103. package/dist/shared/quota/apiPool.js +31 -0
  104. package/dist/shared/quota/apiPool.js.map +1 -1
  105. package/dist/shared/quota/capacity.d.ts +33 -4
  106. package/dist/shared/quota/capacity.d.ts.map +1 -1
  107. package/dist/shared/quota/capacity.js +40 -5
  108. package/dist/shared/quota/capacity.js.map +1 -1
  109. package/dist/shared/quota/errorParsing.d.ts +39 -0
  110. package/dist/shared/quota/errorParsing.d.ts.map +1 -1
  111. package/dist/shared/quota/errorParsing.js +76 -0
  112. package/dist/shared/quota/errorParsing.js.map +1 -1
  113. package/dist/shared/types/auditorDescriptor.d.ts +8 -0
  114. package/dist/shared/types/auditorDescriptor.d.ts.map +1 -1
  115. package/dist/shared/types/auditorDescriptor.js.map +1 -1
  116. package/dist/shared/types/rollingDispatch.d.ts +45 -1
  117. package/dist/shared/types/rollingDispatch.d.ts.map +1 -1
  118. package/dist/shared/types/sessionConfig.d.ts +77 -3
  119. package/dist/shared/types/sessionConfig.d.ts.map +1 -1
  120. package/dist/shared/types/sessionConfig.js +39 -2
  121. package/dist/shared/types/sessionConfig.js.map +1 -1
  122. package/dist/shared/validation/sessionConfig.d.ts.map +1 -1
  123. package/dist/shared/validation/sessionConfig.js +25 -1
  124. package/dist/shared/validation/sessionConfig.js.map +1 -1
  125. package/docs/audit-pkg/operator-guide.md +4 -4
  126. package/package.json +1 -1
@@ -1,22 +1,23 @@
1
1
  import { accessSync, constants, readFileSync } from "node:fs";
2
- import { homedir } from "node:os";
3
2
  import { join } from "node:path";
3
+ import { resolveAuditCodeStateDir } from "../io/stateDir.js";
4
+ import { spawnSyncHidden } from "../tooling/exec.js";
4
5
  import { validateSessionConfig } from "../validation/sessionConfig.js";
6
+ import { populateProxyCatalog, readProxyCatalog, } from "./proxyCatalog.js";
5
7
  import { commandExists } from "./providerPathGuard.js";
6
8
  /**
7
9
  * The machine-level declaration file: the backends the OPERATOR owns, hand-authored
8
10
  * like `session-config.json`. Deliberately NOT id-keyed and deliberately NOT named
9
- * `catalog-<auditor-id>.json` — that name is reserved for the future POPULATE cache
10
- * (`spec/unified-dispatch-worker-model.md`), and squatting it would turn this read
11
- * into a direct cache read, violating never-inherit by filename collision.
11
+ * like the POPULATE cache (`catalog-cache.json`, `proxyCatalog.ts` — the
12
+ * `catalog-<auditor-id>.json` name this comment once reserved landed WITHOUT the
13
+ * auditor-id key; see the rationale there) — squatting the cache name would turn
14
+ * this read into a direct cache read, violating never-inherit by filename collision.
12
15
  *
13
16
  * A declaration is not a cache: it is operator INTENT, not a prior auditor's resolved
14
17
  * state. Reading it and intersecting it with live ambient reach does not inherit
15
18
  * anything ([[capability-is-per-auditor-not-per-audit]]).
16
19
  */
17
20
  export const SOURCE_DECLARATION_FILENAME = "sources-declared.json";
18
- /** `~/.audit-code` — the established home-dir state dir (`src/audit/cli.ts` puts quota state here). */
19
- const STATE_DIR_NAME = ".audit-code";
20
21
  /**
21
22
  * Default launcher command per CLI-backed dispatchable source, mirroring each
22
23
  * provider's own `config.command ?? "<default>"` fallback (`codexProvider.ts:59`,
@@ -48,13 +49,28 @@ function defaultReadDeclarationFile(path) {
48
49
  return null;
49
50
  }
50
51
  }
52
+ /**
53
+ * Default {@link AmbientSourceDeps.probeHttpReachable}: a short-timeout
54
+ * `GET <url>` run in a hidden node child so the check stays SYNCHRONOUS (resolve is
55
+ * sync by design — see the populate/resolve split) without blocking the event loop
56
+ * machinery this process owns. Exit 0 ⇔ HTTP 2xx within the 750ms budget.
57
+ */
58
+ function defaultProbeHttpReachable(url) {
59
+ const script = "const [url] = process.argv.slice(1);" +
60
+ "fetch(url, { signal: AbortSignal.timeout(750) })" +
61
+ ".then((r) => process.exit(r.ok ? 0 : 1), () => process.exit(1));";
62
+ const result = spawnSyncHidden(process.execPath, ["-e", script, url], {
63
+ timeout: 2_000,
64
+ });
65
+ return result.status === 0;
66
+ }
51
67
  /** The source's stable id, matching `DispatchableSource.id`'s documented default. */
52
68
  function sourceId(source) {
53
69
  return source.id ?? `${source.provider}:${source.model ?? source.endpoint ?? "?"}`;
54
70
  }
55
- /** Resolve the declaration file path for this machine. */
71
+ /** Resolve the declaration file path for this machine (state dir via `io/stateDir.ts`). */
56
72
  export function resolveSourceDeclarationPath(homeDir) {
57
- return join(homeDir ?? homedir(), STATE_DIR_NAME, SOURCE_DECLARATION_FILENAME);
73
+ return join(resolveAuditCodeStateDir(homeDir), SOURCE_DECLARATION_FILENAME);
58
74
  }
59
75
  /**
60
76
  * Read the operator's machine-level source declaration.
@@ -90,6 +106,118 @@ export function readSourceDeclaration(deps = {}) {
90
106
  return [];
91
107
  return sources;
92
108
  }
109
+ /**
110
+ * Read the optional `repair_proxy` block from the machine declaration. Tolerant like
111
+ * {@link readSourceDeclaration}: an absent / unparseable file or a missing key is
112
+ * simply `{declaration: null}`; a PRESENT-but-malformed block degrades to lane-absent
113
+ * WITH a reason (surfaced via `resolveAmbientSources`' `dropped[]`), never a throw.
114
+ * Malformed optional knobs (`top_k` / `cost_per_mtok`) are dropped individually — a
115
+ * bad tuning value must not cost the operator the whole lane.
116
+ */
117
+ export function readRepairProxyDeclaration(deps = {}) {
118
+ const path = resolveSourceDeclarationPath(deps.homeDir);
119
+ const raw = (deps.readDeclarationFile ?? defaultReadDeclarationFile)(path);
120
+ if (raw === null)
121
+ return { declaration: null };
122
+ let parsed;
123
+ try {
124
+ parsed = JSON.parse(raw);
125
+ }
126
+ catch {
127
+ return { declaration: null };
128
+ }
129
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
130
+ return { declaration: null };
131
+ }
132
+ const block = parsed.repair_proxy;
133
+ if (block === undefined)
134
+ return { declaration: null };
135
+ if (typeof block !== "object" || block === null || Array.isArray(block)) {
136
+ return {
137
+ declaration: null,
138
+ reason: "repair_proxy must be a JSON object with an endpoint — fix the declaration.",
139
+ };
140
+ }
141
+ const { endpoint, top_k, cost_per_mtok } = block;
142
+ if (typeof endpoint !== "string" || endpoint.trim().length === 0) {
143
+ return {
144
+ declaration: null,
145
+ reason: "repair_proxy.endpoint must be a non-empty url string — fix the declaration.",
146
+ };
147
+ }
148
+ const declaration = {
149
+ // Trailing slashes stripped so the reach probe, the populate cache's stored
150
+ // endpoint, and the expanded sources all compare on one canonical form.
151
+ endpoint: endpoint.trim().replace(/\/+$/u, ""),
152
+ };
153
+ if (typeof top_k === "number" && Number.isInteger(top_k) && top_k > 0) {
154
+ declaration.top_k = top_k;
155
+ }
156
+ if (typeof cost_per_mtok === "number" &&
157
+ Number.isFinite(cost_per_mtok) &&
158
+ cost_per_mtok >= 0) {
159
+ declaration.cost_per_mtok = cost_per_mtok;
160
+ }
161
+ return { declaration };
162
+ }
163
+ /**
164
+ * The default populate fetch: time-boxed so a routable-but-dead proxy cannot hang a
165
+ * `next-step` at the Gate-0 build (network-tolerant means bounded, not just caught).
166
+ */
167
+ const populateFetchWithTimeout = (input, init) => fetch(input, { ...init, signal: AbortSignal.timeout(5_000) });
168
+ /**
169
+ * POPULATE the declared repair-proxy lane (plan §populate-vs-resolve): read the
170
+ * machine declaration's `repair_proxy` block and, when present, fetch its registry
171
+ * into the machine-level populate cache ({@link populateProxyCatalog}). This is the
172
+ * network half the resolve path must never run — call it at Gate-0 build time (once
173
+ * per run) or on explicit refresh, NEVER from `resolveAmbientSources`.
174
+ *
175
+ * "Present + reachable" gating is the fetch itself: the registry GET is both the
176
+ * liveness proof and the payload, so a separate pre-probe would only double the
177
+ * network. Never throws: no declared lane ⇒ `null`; a failed/unreachable fetch ⇒
178
+ * `{written:false, reason}` and any prior cache is left untouched — the lane then
179
+ * resolves from the existing cache or unexpanded with its own `dropped[]` reason,
180
+ * degrading Gate-0, never blocking it.
181
+ */
182
+ export async function populateDeclaredProxyCatalog(deps = {}) {
183
+ const { declaration } = readRepairProxyDeclaration(deps);
184
+ if (declaration === null)
185
+ return null;
186
+ return populateProxyCatalog({
187
+ endpoint: declaration.endpoint,
188
+ ...(declaration.top_k !== undefined ? { topK: declaration.top_k } : {}),
189
+ ...(declaration.cost_per_mtok !== undefined
190
+ ? { costPerMtok: declaration.cost_per_mtok }
191
+ : {}),
192
+ fetchImpl: deps.fetchImpl ?? populateFetchWithTimeout,
193
+ ...(deps.homeDir !== undefined ? { homeDir: deps.homeDir } : {}),
194
+ });
195
+ }
196
+ /**
197
+ * Populate the proxy catalog ONLY when the resolve half would otherwise drop the
198
+ * lane for it: a `repair_proxy` is declared but the cache is absent or was fetched
199
+ * from a different endpoint. Bounded by construction — after one success the cache
200
+ * exists and this is a cheap read — so a draw with no Gate-0 build moment (remediate)
201
+ * can call it on every config load without a per-load network fetch. Freshness
202
+ * (TTL / explicit refresh) is deliberately NOT this function's job (backlog).
203
+ * [[silent-fail-closed-on-one-draw]] — both draws must trigger populate, not just audit.
204
+ */
205
+ export async function populateProxyCatalogIfMissing(deps = {}) {
206
+ const { declaration } = readRepairProxyDeclaration(deps);
207
+ if (declaration === null)
208
+ return null;
209
+ const cache = readProxyCatalog(deps);
210
+ if (cache !== null &&
211
+ cache.endpoint.replace(/\/+$/u, "") === declaration.endpoint) {
212
+ return {
213
+ sources: cache.sources,
214
+ written: false,
215
+ reason: "populate cache already present",
216
+ dropped: [],
217
+ };
218
+ }
219
+ return populateDeclaredProxyCatalog(deps);
220
+ }
93
221
  /**
94
222
  * Can THIS process prove it can reach this declared source?
95
223
  *
@@ -192,6 +320,36 @@ export function verifySourceReach(source, deps = {}) {
192
320
  reason: "worker-command reach is per-task (task.worker_command), so it is not declarable as an ambient source.",
193
321
  };
194
322
  }
323
+ case "claude-worker": {
324
+ // The proxied isolated Claude-harness worker: its reach IS the repair-proxy's
325
+ // liveness (endpoint = the proxy url). Normally these sources come pre-verified
326
+ // from the populate cache via the `repair_proxy` lane; a hand-declared one is
327
+ // held to the same bar. Inline api_key refused for the same possession≠reach
328
+ // reasons as openai-compatible above (the loopback proxy needs no key anyway).
329
+ if (!source.endpoint?.trim()) {
330
+ return {
331
+ verified: false,
332
+ reason: "claude-worker source has no endpoint (the repair-proxy url).",
333
+ };
334
+ }
335
+ if (!source.model?.trim()) {
336
+ return { verified: false, reason: "claude-worker source has no model." };
337
+ }
338
+ if (source.api_key !== undefined) {
339
+ return {
340
+ verified: false,
341
+ reason: "inline api_key is not ambient-verifiable (it proves possession, not reach) — the proxied lane needs no inline key; remove it (declare api_key_env if the proxy requires one).",
342
+ };
343
+ }
344
+ const probe = deps.probeHttpReachable ?? defaultProbeHttpReachable;
345
+ const endpoint = source.endpoint.trim().replace(/\/+$/u, "");
346
+ return probe(`${endpoint}/registry`)
347
+ ? { verified: true }
348
+ : {
349
+ verified: false,
350
+ reason: `repair-proxy at "${endpoint}" failed the liveness probe (GET /registry).`,
351
+ };
352
+ }
195
353
  }
196
354
  }
197
355
  /**
@@ -221,6 +379,75 @@ export function resolveAmbientSources(deps = {}) {
221
379
  else
222
380
  dropped.push({ id: sourceId(source), reason: reach.reason });
223
381
  }
382
+ resolveRepairProxyLane(deps, sources, dropped);
224
383
  return { sources, dropped };
225
384
  }
385
+ /**
386
+ * The repair-proxy lane of the resolve half (plan §populate-vs-resolve): a declared
387
+ * `repair_proxy` whose liveness probe passes expands from the POPULATE CACHE — never
388
+ * a mid-resolve fetch. Fail-open, mirroring the declared-source contract: every
389
+ * outcome short of expansion lands in `dropped[]` with an operator-facing reason
390
+ * (malformed declaration / probe failure / cache absent-stale-empty), so the lane is
391
+ * never silently discarded.
392
+ */
393
+ function resolveRepairProxyLane(deps, sources, dropped) {
394
+ const { declaration, reason } = readRepairProxyDeclaration(deps);
395
+ if (reason !== undefined) {
396
+ dropped.push({ id: "repair-proxy", reason });
397
+ return;
398
+ }
399
+ if (declaration === null)
400
+ return;
401
+ const { endpoint } = declaration;
402
+ const laneId = `repair-proxy:${endpoint}`;
403
+ const probe = deps.probeHttpReachable ?? defaultProbeHttpReachable;
404
+ if (!probe(`${endpoint}/registry`)) {
405
+ dropped.push({
406
+ id: laneId,
407
+ reason: `repair-proxy at "${endpoint}" failed the liveness probe (GET /registry) — lane dropped for this invocation.`,
408
+ });
409
+ return;
410
+ }
411
+ const catalog = readProxyCatalog(deps);
412
+ if (catalog === null) {
413
+ dropped.push({
414
+ id: laneId,
415
+ reason: "repair-proxy is reachable but the populate cache is absent/invalid — run the registry populate (populateProxyCatalog) to expand this lane.",
416
+ });
417
+ return;
418
+ }
419
+ if (catalog.endpoint.replace(/\/+$/u, "") !== endpoint) {
420
+ dropped.push({
421
+ id: laneId,
422
+ reason: `populate cache was fetched from "${catalog.endpoint}", not the declared "${endpoint}" — re-run the registry populate.`,
423
+ });
424
+ return;
425
+ }
426
+ if (catalog.sources.length === 0) {
427
+ dropped.push({
428
+ id: laneId,
429
+ reason: "repair-proxy registry expansion is empty (no reachable+keyed backend models at populate time) — lane present but unexpanded.",
430
+ });
431
+ return;
432
+ }
433
+ // Declared-wins dedup: an expanded lane whose (backend_provider, model)
434
+ // identity a DECLARED source already covers is skipped, so one pool identity
435
+ // never maps to two sources (the launch bridge's pool→source map is 1:1 by
436
+ // assumption — a duplicate would arbitrate the transport by silent map-order
437
+ // clobber). The operator's explicit lane always beats auto-expansion; routing
438
+ // through the proxy for that model is still available by declaring the
439
+ // claude-worker source explicitly.
440
+ const declaredIdentities = new Set(sources.map((s) => `${s.backend_provider ?? s.provider}/${s.model ?? ""}`));
441
+ for (const expanded of catalog.sources) {
442
+ const identity = `${expanded.backend_provider ?? expanded.provider}/${expanded.model ?? ""}`;
443
+ if (declaredIdentities.has(identity)) {
444
+ dropped.push({
445
+ id: sourceId(expanded),
446
+ reason: `expanded lane skipped — a declared source already covers backend identity "${identity}" (declared wins over registry expansion).`,
447
+ });
448
+ continue;
449
+ }
450
+ sources.push(expanded);
451
+ }
452
+ }
226
453
  //# sourceMappingURL=auditorSources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auditorSources.js","sourceRoot":"","sources":["../../../src/shared/providers/auditorSources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auditorSources.js","sourceRoot":"","sources":["../../../src/shared/providers/auditorSources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC;AA0CnE;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAqC;IAC5D,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,yFAAyF;AACzF,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY;IAC9C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAAC,GAAW;IAC5C,MAAM,MAAM,GACV,sCAAsC;QACtC,kDAAkD;QAClD,kEAAkE,CAAC;IACrE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QACpE,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,qFAAqF;AACrF,SAAS,QAAQ,CAAC,MAA0B;IAC1C,OAAO,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC;AACrF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,2BAA2B,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAA0B,EAAE;IAE5B,MAAM,IAAI,GAAG,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC5B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAI,MAAgC,CAAC,OAAO,CAAC;IAC1D,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrC,4EAA4E;IAC5E,iFAAiF;IACjF,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAClE,OAAO,OAA+B,CAAC;AACzC,CAAC;AAsBD;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAA0B,EAAE;IAE5B,MAAM,IAAI,GAAG,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,KAAK,GAAI,MAAqC,CAAC,YAAY,CAAC;IAClE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,4EAA4E;SACrF,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAgC,CAAC;IAC5E,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,6EAA6E;SACtF,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAA2B;QAC1C,4EAA4E;QAC5E,wEAAwE;QACxE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;KAC/C,CAAC;IACF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACtE,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,IACE,OAAO,aAAa,KAAK,QAAQ;QACjC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9B,aAAa,IAAI,CAAC,EAClB,CAAC;QACD,WAAW,CAAC,aAAa,GAAG,aAAa,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,wBAAwB,GAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAC7D,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAyD,EAAE;IAE3D,MAAM,EAAE,WAAW,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,oBAAoB,CAAC;QAC1B,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,WAAW,CAAC,aAAa,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,aAAa,EAAE;YAC5C,CAAC,CAAC,EAAE,CAAC;QACP,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,wBAAwB;QACrD,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAyD,EAAE;IAE3D,MAAM,EAAE,WAAW,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IACE,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,WAAW,CAAC,QAAQ,EAC5D,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,gCAAgC;YACxC,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IACD,OAAO,4BAA4B,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA0B,EAC1B,OAA0B,EAAE;IAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC;IAE1D,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC1C,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtF,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,qBAAqB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,oBAAoB;aACjF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC7B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,sDAAsD,EAAE,CAAC;YAC7F,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC1B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;YAC/E,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrE,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,MAAM,EACJ,oIAAoI;iBACvI,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;gBAChC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC;YACrF,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC5C,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,YAAY,MAAM,CAAC,WAAW,sCAAsC;iBAC7E,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QACD,KAAK,OAAO,CAAC;QACb,KAAK,UAAU,CAAC;QAChB,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,MAAM,CAAC,QAAQ,CAAC;oBACrB,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACpB,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,QAAQ,mBAAmB,EAAE,CAAC;YAC5E,CAAC;YACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,QAAQ,CAAC;gBAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAChD,yEAAyE;YACzE,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC5D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5B,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,QAAQ,mBAAmB,EAAE,CAAC;QAC/E,CAAC;QACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrD,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,4EAA4E;iBACrF,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACrB,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACpB,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,QAAQ,mBAAmB,EAAE,CAAC;QAC5E,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,sEAAsE;YACtE,yEAAyE;YACzE,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,MAAM,EACJ,uGAAuG;aAC1G,CAAC;QACJ,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,8EAA8E;YAC9E,gFAAgF;YAChF,8EAA8E;YAC9E,6EAA6E;YAC7E,+EAA+E;YAC/E,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC7B,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,8DAA8D;iBACvE,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC1B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;YAC3E,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,MAAM,EACJ,+KAA+K;iBAClL,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,IAAI,yBAAyB,CAAC;YACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO,KAAK,CAAC,GAAG,QAAQ,WAAW,CAAC;gBAClC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACpB,CAAC,CAAC;oBACE,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,oBAAoB,QAAQ,8CAA8C;iBACnF,CAAC;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAA0B,EAAE;IAE5B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YACpC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAC7B,IAAuB,EACvB,OAA6B,EAC7B,OAAwB;IAExB,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACjE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO;IACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;IACjC,MAAM,MAAM,GAAG,gBAAgB,QAAQ,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,IAAI,yBAAyB,CAAC;IACnE,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,WAAW,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,oBAAoB,QAAQ,iFAAiF;SACtH,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,MAAM;YACV,MAAM,EACJ,4IAA4I;SAC/I,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,oCAAoC,OAAO,CAAC,QAAQ,wBAAwB,QAAQ,mCAAmC;SAChI,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,MAAM;YACV,MAAM,EACJ,8HAA8H;SACjI,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,wEAAwE;IACxE,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,uEAAuE;IACvE,mCAAmC;IACnC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAC3E,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QAC7F,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBACtB,MAAM,EAAE,8EAA8E,QAAQ,4CAA4C;aAC3I,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { FreshSessionProvider, LaunchFreshSessionInput } from "./types.js";
2
+ import type { ClaudeWorkerConfig } from "../types/sessionConfig.js";
3
+ import { spawnLoggedCommand } from "./spawnLoggedCommand.js";
4
+ export declare const CLAUDE_WORKER_PROVIDER_NAME: "claude-worker";
5
+ /**
6
+ * The explicit DUMMY key presented to a proxied spawn. The loopback repair-proxy
7
+ * needs no key, and an ambient real `ANTHROPIC_API_KEY` must NEVER be silently
8
+ * presented to a proxied spawn — so the overlay always sets this sentinel rather
9
+ * than leaving the variable to inherit from the parent env.
10
+ */
11
+ export declare const CLAUDE_WORKER_DUMMY_API_KEY = "audit-tools-claude-worker";
12
+ /**
13
+ * Per-orchestrator tuning for the otherwise-identical claude-worker provider —
14
+ * mirrors {@link ClaudeCodeProviderOptions} minus the nested-session guard message
15
+ * (this class has no guard; see the class doc). The only intended delta between
16
+ * orchestrators is the skip-permissions default.
17
+ */
18
+ export interface ClaudeWorkerProviderOptions {
19
+ /**
20
+ * Whether to default to `--dangerously-skip-permissions` when the config does
21
+ * not set `dangerously_skip_permissions` explicitly. The auditor keeps the safe
22
+ * `false`; the autonomous remediator passes `true` (it applies changes
23
+ * unattended and cannot pause mid-run). An explicit config value wins.
24
+ */
25
+ skipPermissionsDefault?: boolean;
26
+ }
27
+ /**
28
+ * The `projects` key the Claude CLI trusts a repo under: the absolute repo root
29
+ * with FORWARD slashes on every platform (live probe: the trust warning referenced
30
+ * `projects["C:/Code/audit-tools"].hasTrustDialogAccepted` on win32). Trailing
31
+ * separators are stripped so the key matches the CLI's cwd-derived form.
32
+ */
33
+ export declare function claudeWorkerTrustProjectKey(repoRoot: string): string;
34
+ /**
35
+ * claude-worker backend — the proxied, ISOLATED, per-packet-routed Claude-harness
36
+ * worker (the kind-1 launch transport,
37
+ * docs/reviews/commit3-proxy-kind1-transport-plan-2026-07-16.md). It spawns
38
+ * `claude -p` with a REQUIRED `ANTHROPIC_BASE_URL` overlay pointing at the
39
+ * repair-proxy, a dummy `ANTHROPIC_API_KEY` (never the ambient real key), an
40
+ * isolated per-launch `CLAUDE_CONFIG_DIR`, and `--model
41
+ * <backend_provider>/<model>` — the namespace string the proxy routes on,
42
+ * composed at launch for argv only (it never enters the quota identity).
43
+ *
44
+ * Deliberately NO nested-session guard: this class is NOT `claude-code` (the
45
+ * conversation host) wearing a flag — isolation is its CONSTRUCTOR INVARIANT, not
46
+ * a guard exception. Construction throws unless endpoint/backend_provider/model
47
+ * are present, so every spawn is proxy-fronted with a scrubbed parent env
48
+ * (spawnLoggedCommand strips `CLAUDECODE`/`CLAUDE_CODE*`; `CLAUDE_CONFIG_DIR`
49
+ * survives the scrub and is overlaid per launch) and can safely run from inside a
50
+ * live Claude Code session. The `claude-code` host provider KEEPS its blanket
51
+ * guard, and all four in-session refusal layers key on `claude-code` and never
52
+ * see this name — no guard is refined for this class to exist.
53
+ */
54
+ export declare class ClaudeWorkerProvider implements FreshSessionProvider {
55
+ name: "claude-worker";
56
+ private readonly config;
57
+ private readonly endpoint;
58
+ private readonly backendProvider;
59
+ private readonly model;
60
+ private readonly launchCommand;
61
+ private readonly skipPermissionsDefault;
62
+ constructor(config?: ClaudeWorkerConfig, options?: ClaudeWorkerProviderOptions, launchCommand?: typeof spawnLoggedCommand);
63
+ /**
64
+ * Create the per-launch isolated `CLAUDE_CONFIG_DIR` and mechanically pre-seed
65
+ * trust for the node's repo root, so the spawned harness never stalls on the
66
+ * interactive trust dialog (tool-enforced, never host-remembered).
67
+ */
68
+ private prepareIsolatedConfigDir;
69
+ launch(input: LaunchFreshSessionInput): Promise<import("./types.js").LaunchFreshSessionResult>;
70
+ }
71
+ //# sourceMappingURL=claudeWorkerProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeWorkerProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/claudeWorkerProvider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAU7D,eAAO,MAAM,2BAA2B,EAAG,eAAwB,CAAC;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpE;AAqBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,oBAAqB,YAAW,oBAAoB;IAC/D,IAAI,kBAA+B;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;gBAG/C,MAAM,GAAE,kBAAuB,EAC/B,OAAO,GAAE,2BAAgC,EACzC,aAAa,GAAE,OAAO,kBAAuC;IAa/D;;;;OAIG;YACW,wBAAwB;IAuBhC,MAAM,CAAC,KAAK,EAAE,uBAAuB;CA4C5C"}
@@ -0,0 +1,133 @@
1
+ import { readFile, mkdir, writeFile, rm } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { randomUUID } from "node:crypto";
5
+ import { readJsonFile } from "../io/json.js";
6
+ import { spawnLoggedCommand } from "./spawnLoggedCommand.js";
7
+ import { applyWorkerTaskLaunchSettings, } from "./workerTaskLaunch.js";
8
+ import { emitProviderLaunchDiagnostic, emitProviderDoneDiagnostic, } from "./providerDiagnostics.js";
9
+ export const CLAUDE_WORKER_PROVIDER_NAME = "claude-worker";
10
+ /**
11
+ * The explicit DUMMY key presented to a proxied spawn. The loopback repair-proxy
12
+ * needs no key, and an ambient real `ANTHROPIC_API_KEY` must NEVER be silently
13
+ * presented to a proxied spawn — so the overlay always sets this sentinel rather
14
+ * than leaving the variable to inherit from the parent env.
15
+ */
16
+ export const CLAUDE_WORKER_DUMMY_API_KEY = "audit-tools-claude-worker";
17
+ /**
18
+ * The `projects` key the Claude CLI trusts a repo under: the absolute repo root
19
+ * with FORWARD slashes on every platform (live probe: the trust warning referenced
20
+ * `projects["C:/Code/audit-tools"].hasTrustDialogAccepted` on win32). Trailing
21
+ * separators are stripped so the key matches the CLI's cwd-derived form.
22
+ */
23
+ export function claudeWorkerTrustProjectKey(repoRoot) {
24
+ const forward = repoRoot.trim().replace(/\\/g, "/");
25
+ return forward.length > 1 ? forward.replace(/\/+$/u, "") : forward;
26
+ }
27
+ /** A filesystem-safe stem for the per-launch isolated config dir. */
28
+ function sanitizeForDirName(value) {
29
+ return value.replace(/[^A-Za-z0-9._-]/gu, "-");
30
+ }
31
+ function requireNonEmpty(value, field) {
32
+ if (typeof value !== "string" || value.trim().length === 0) {
33
+ throw new Error(`claude-worker provider requires a non-empty ${field} — the source carries it ` +
34
+ `({endpoint: <repair-proxy url>, backend_provider, model}); an isolated spawn ` +
35
+ `with no proxy ${field === "endpoint" ? "endpoint" : "route"} must be impossible.`);
36
+ }
37
+ return value.trim();
38
+ }
39
+ /**
40
+ * claude-worker backend — the proxied, ISOLATED, per-packet-routed Claude-harness
41
+ * worker (the kind-1 launch transport,
42
+ * docs/reviews/commit3-proxy-kind1-transport-plan-2026-07-16.md). It spawns
43
+ * `claude -p` with a REQUIRED `ANTHROPIC_BASE_URL` overlay pointing at the
44
+ * repair-proxy, a dummy `ANTHROPIC_API_KEY` (never the ambient real key), an
45
+ * isolated per-launch `CLAUDE_CONFIG_DIR`, and `--model
46
+ * <backend_provider>/<model>` — the namespace string the proxy routes on,
47
+ * composed at launch for argv only (it never enters the quota identity).
48
+ *
49
+ * Deliberately NO nested-session guard: this class is NOT `claude-code` (the
50
+ * conversation host) wearing a flag — isolation is its CONSTRUCTOR INVARIANT, not
51
+ * a guard exception. Construction throws unless endpoint/backend_provider/model
52
+ * are present, so every spawn is proxy-fronted with a scrubbed parent env
53
+ * (spawnLoggedCommand strips `CLAUDECODE`/`CLAUDE_CODE*`; `CLAUDE_CONFIG_DIR`
54
+ * survives the scrub and is overlaid per launch) and can safely run from inside a
55
+ * live Claude Code session. The `claude-code` host provider KEEPS its blanket
56
+ * guard, and all four in-session refusal layers key on `claude-code` and never
57
+ * see this name — no guard is refined for this class to exist.
58
+ */
59
+ export class ClaudeWorkerProvider {
60
+ name = CLAUDE_WORKER_PROVIDER_NAME;
61
+ config;
62
+ endpoint;
63
+ backendProvider;
64
+ model;
65
+ launchCommand;
66
+ skipPermissionsDefault;
67
+ constructor(config = {}, options = {}, launchCommand = spawnLoggedCommand) {
68
+ this.config = config;
69
+ this.endpoint = requireNonEmpty(config.endpoint, "endpoint");
70
+ this.backendProvider = requireNonEmpty(config.backend_provider, "backend_provider");
71
+ this.model = requireNonEmpty(config.model, "model");
72
+ this.launchCommand = launchCommand;
73
+ this.skipPermissionsDefault = options.skipPermissionsDefault ?? false;
74
+ }
75
+ /**
76
+ * Create the per-launch isolated `CLAUDE_CONFIG_DIR` and mechanically pre-seed
77
+ * trust for the node's repo root, so the spawned harness never stalls on the
78
+ * interactive trust dialog (tool-enforced, never host-remembered).
79
+ */
80
+ async prepareIsolatedConfigDir(input) {
81
+ const configDir = join(tmpdir(), "audit-tools-claude-worker", `${sanitizeForDirName(input.runId)}-${randomUUID()}`);
82
+ await mkdir(configDir, { recursive: true });
83
+ await writeFile(join(configDir, ".claude.json"), JSON.stringify({
84
+ projects: {
85
+ [claudeWorkerTrustProjectKey(input.repoRoot)]: {
86
+ hasTrustDialogAccepted: true,
87
+ },
88
+ },
89
+ }), "utf8");
90
+ return configDir;
91
+ }
92
+ async launch(input) {
93
+ const prompt = await readFile(input.promptPath, "utf8");
94
+ const task = await readJsonFile(input.taskPath);
95
+ const command = this.config.command ?? "claude";
96
+ const promptFlag = this.config.prompt_flag ?? "-p";
97
+ const skipPermissions = this.config.dangerously_skip_permissions ?? this.skipPermissionsDefault;
98
+ // The prompt is delivered via stdin (mirrors ClaudeCodeProvider), so
99
+ // `promptFlag` is a bare flag; `--model` carries the proxy's namespace
100
+ // routing key `<backend_provider>/<model>`, passed VERBATIM to the endpoint.
101
+ const args = [
102
+ promptFlag,
103
+ "--model",
104
+ `${this.backendProvider}/${this.model}`,
105
+ ...(this.config.extra_args ?? []),
106
+ ...(skipPermissions ? ["--dangerously-skip-permissions"] : []),
107
+ ];
108
+ const configDir = await this.prepareIsolatedConfigDir(input);
109
+ emitProviderLaunchDiagnostic(this.name, input);
110
+ try {
111
+ const result = await this.launchCommand(command, args, {
112
+ ...applyWorkerTaskLaunchSettings(input, task),
113
+ stdinText: prompt,
114
+ },
115
+ // spawnLoggedCommand merges this overlay over process.env, THEN scrubs
116
+ // CLAUDECODE/CLAUDE_CODE* — CLAUDE_CONFIG_DIR survives the scrub (prefix
117
+ // is CLAUDE_CONF), so the child sees exactly this isolated dir.
118
+ {
119
+ ANTHROPIC_BASE_URL: this.endpoint,
120
+ ANTHROPIC_API_KEY: CLAUDE_WORKER_DUMMY_API_KEY,
121
+ CLAUDE_CONFIG_DIR: configDir,
122
+ });
123
+ emitProviderDoneDiagnostic(this.name, input, result);
124
+ return result;
125
+ }
126
+ finally {
127
+ // Best-effort cleanup of the per-launch config dir — a cleanup failure
128
+ // must never fail (or mask) the launch result.
129
+ await rm(configDir, { recursive: true, force: true }).catch(() => { });
130
+ }
131
+ }
132
+ }
133
+ //# sourceMappingURL=claudeWorkerProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeWorkerProvider.js","sourceRoot":"","sources":["../../../src/shared/providers/claudeWorkerProvider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"providerConfirmation.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/providerConfirmation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAO3E,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAM1C,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAkFD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,aAAa,EAC5B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,aAAa,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAuB,GAC1D,kBAAkB,EAAE,CAgDtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,kBAAkB,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GACnD,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAUpC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,oBAAoB,EAC1B,aAAa,EAAE,aAAa,GAC3B,MAAM,GAAG,SAAS,CASpB;AAED,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC;;;OAGG;IACH,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;IAC5C;;;;OAIG;IACH,sBAAsB,EAAE,mBAAmB,EAAE,CAAC;CAC/C;AA+CD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,aAAa,EAAE,aAAa,EAC5B,KAAK,CAAC,EAAE,yBAAyB,EACjC,OAAO,GAAE,kBAAkB,EAAO,GACjC,qBAAqB,CA8EvB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,aAAa,EAAE,aAAa,GAC3B,kBAAkB,EAAE,CAEtB;AAMD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,aAAa,GAC3B,sBAAsB,EAAE,CAE1B;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,kBAAkB,EAAE,GAC5B,sBAAsB,EAAE,CAmB1B"}
1
+ {"version":3,"file":"providerConfirmation.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/providerConfirmation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAO3E,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAM1C,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAqFD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,aAAa,EAC5B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,aAAa,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAuB,GAC1D,kBAAkB,EAAE,CAgDtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,kBAAkB,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GACnD,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAUpC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,oBAAoB,EAC1B,aAAa,EAAE,aAAa,GAC3B,MAAM,GAAG,SAAS,CASpB;AAED,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC;;;OAGG;IACH,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;IAC5C;;;;OAIG;IACH,sBAAsB,EAAE,mBAAmB,EAAE,CAAC;CAC/C;AAiED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,aAAa,EAAE,aAAa,EAC5B,KAAK,CAAC,EAAE,yBAAyB,EACjC,OAAO,GAAE,kBAAkB,EAAO,GACjC,qBAAqB,CA8EvB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,aAAa,EAAE,aAAa,GAC3B,kBAAkB,EAAE,CAEtB;AAMD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,aAAa,GAC3B,sBAAsB,EAAE,CAE1B;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,kBAAkB,EAAE,GAC5B,sBAAsB,EAAE,CAmB1B"}
@@ -29,6 +29,9 @@ function defaultCapabilityTier(name) {
29
29
  case "vscode-task":
30
30
  case "antigravity":
31
31
  case "agy":
32
+ case "claude-worker":
33
+ // Proxied non-Claude backend behind the Claude harness — ranks strictly below
34
+ // the host tier by default (the operator promotes deliberately; plan §risks).
32
35
  return "capable";
33
36
  case "worker-command":
34
37
  return "unknown";
@@ -175,8 +178,9 @@ function dispatchSourceKey(source) {
175
178
  * would let one entry's `cost_order` silently overwrite the other's. The prefix is internal
176
179
  * only; the emitted `source_id` + the operator `cost_order` keyspace are unaffected.
177
180
  */
181
+ const SOURCE_CANDIDATE_KEY_PREFIX = "source::";
178
182
  function sourceCandidateKey(source) {
179
- return `source::${dispatchSourceKey(source)}`;
183
+ return `${SOURCE_CANDIDATE_KEY_PREFIX}${dispatchSourceKey(source)}`;
180
184
  }
181
185
  /**
182
186
  * Resolve the FINAL 0-based cost position for every candidate key. Without an
@@ -191,10 +195,27 @@ function resolveFinalCostOrder(candidates, operatorOrder) {
191
195
  return new Map(suggested.map((c) => [c.key, c.suggested_order]));
192
196
  }
193
197
  const knownKeys = new Set(candidates.map((c) => c.key));
198
+ // Display keyspace ≡ match keyspace (backlog: source pools were displayed as
199
+ // orderable but silently ignored). A source candidate is keyed
200
+ // `source::<id>` internally (collision-proofing against provider names / host
201
+ // model ids in this shared position map) but the Gate-0 prompt DISPLAYS it under
202
+ // its bare id — so the bare id must match too. An exact candidate key always
203
+ // wins the token: a bare alias never shadows a genuine provider/model key, which
204
+ // preserves exactly the collision-safety the prefix exists for.
205
+ const bareSourceAliases = new Map();
206
+ for (const key of knownKeys) {
207
+ if (!key.startsWith(SOURCE_CANDIDATE_KEY_PREFIX))
208
+ continue;
209
+ const bare = key.slice(SOURCE_CANDIDATE_KEY_PREFIX.length);
210
+ if (!knownKeys.has(bare) && !bareSourceAliases.has(bare)) {
211
+ bareSourceAliases.set(bare, key);
212
+ }
213
+ }
194
214
  const seen = new Set();
195
215
  const orderedNamed = [];
196
- for (const key of operatorOrder) {
197
- if (knownKeys.has(key) && !seen.has(key)) {
216
+ for (const token of operatorOrder) {
217
+ const key = knownKeys.has(token) ? token : bareSourceAliases.get(token);
218
+ if (key !== undefined && !seen.has(key)) {
198
219
  seen.add(key);
199
220
  orderedNamed.push(key);
200
221
  }