audit-tools 0.32.68 → 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.
- package/README.md +7 -0
- package/dist/audit/cli/advanceAuditCommand.d.ts.map +1 -1
- package/dist/audit/cli/advanceAuditCommand.js +8 -3
- package/dist/audit/cli/advanceAuditCommand.js.map +1 -1
- package/dist/audit/cli/args.d.ts +9 -27
- package/dist/audit/cli/args.d.ts.map +1 -1
- package/dist/audit/cli/args.js +119 -50
- package/dist/audit/cli/args.js.map +1 -1
- package/dist/audit/cli/auditStep.d.ts +15 -1
- package/dist/audit/cli/auditStep.d.ts.map +1 -1
- package/dist/audit/cli/auditStep.js +2 -0
- package/dist/audit/cli/auditStep.js.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.d.ts +2 -1
- package/dist/audit/cli/dispatch/quotaPool.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.js +43 -77
- package/dist/audit/cli/dispatch/quotaPool.js.map +1 -1
- package/dist/audit/cli/dispatch.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.js +14 -6
- package/dist/audit/cli/dispatch.js.map +1 -1
- package/dist/audit/cli/hybridDispatch.d.ts +3 -1
- package/dist/audit/cli/hybridDispatch.d.ts.map +1 -1
- package/dist/audit/cli/hybridDispatch.js +6 -0
- package/dist/audit/cli/hybridDispatch.js.map +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts +0 -9
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +173 -92
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts +11 -2
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +56 -8
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/prepareDispatchCommand.d.ts.map +1 -1
- package/dist/audit/cli/prepareDispatchCommand.js +15 -9
- package/dist/audit/cli/prepareDispatchCommand.js.map +1 -1
- package/dist/audit/cli/prompts.d.ts +12 -32
- package/dist/audit/cli/prompts.d.ts.map +1 -1
- package/dist/audit/cli/prompts.js +19 -33
- package/dist/audit/cli/prompts.js.map +1 -1
- package/dist/audit/cli/providerConfirmationStep.d.ts +13 -5
- package/dist/audit/cli/providerConfirmationStep.d.ts.map +1 -1
- package/dist/audit/cli/providerConfirmationStep.js +47 -8
- package/dist/audit/cli/providerConfirmationStep.js.map +1 -1
- package/dist/audit/cli/quotaCommand.d.ts.map +1 -1
- package/dist/audit/cli/quotaCommand.js +16 -10
- package/dist/audit/cli/quotaCommand.js.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.js +14 -1
- package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
- package/dist/audit/cli/semanticReviewStep.d.ts +11 -1
- package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
- package/dist/audit/cli/semanticReviewStep.js +11 -15
- package/dist/audit/cli/semanticReviewStep.js.map +1 -1
- package/dist/audit/cli/validateCommand.d.ts.map +1 -1
- package/dist/audit/cli/validateCommand.js +3 -3
- package/dist/audit/cli/validateCommand.js.map +1 -1
- package/dist/audit/cli.js +3 -3
- package/dist/audit/cli.js.map +1 -1
- package/dist/audit/contracts/wrapperResponse.d.ts +6 -6
- package/dist/audit/orchestrator/advance.d.ts.map +1 -1
- package/dist/audit/orchestrator/advance.js +39 -7
- package/dist/audit/orchestrator/advance.js.map +1 -1
- package/dist/audit/orchestrator/advanceTypes.d.ts +52 -1
- package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
- package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
- package/dist/audit/orchestrator/executorRunners.js +9 -1
- package/dist/audit/orchestrator/executorRunners.js.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.d.ts +27 -3
- package/dist/audit/orchestrator/intakeExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.js +119 -19
- package/dist/audit/orchestrator/intakeExecutors.js.map +1 -1
- package/dist/audit/orchestrator/nextStep.d.ts +7 -0
- package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
- package/dist/audit/orchestrator/nextStep.js +3 -0
- package/dist/audit/orchestrator/nextStep.js.map +1 -1
- package/dist/audit/orchestrator/providerConfirmation.d.ts.map +1 -1
- package/dist/audit/orchestrator/providerConfirmation.js +0 -2
- package/dist/audit/orchestrator/providerConfirmation.js.map +1 -1
- package/dist/audit/orchestrator/rollingDispatch.d.ts.map +1 -1
- package/dist/audit/orchestrator/rollingDispatch.js +2 -0
- package/dist/audit/orchestrator/rollingDispatch.js.map +1 -1
- package/dist/audit/orchestrator/state.d.ts +17 -0
- package/dist/audit/orchestrator/state.d.ts.map +1 -1
- package/dist/audit/orchestrator/state.js +13 -1
- package/dist/audit/orchestrator/state.js.map +1 -1
- package/dist/audit/providers/claudeWorkerProvider.d.ts +10 -0
- package/dist/audit/providers/claudeWorkerProvider.d.ts.map +1 -0
- package/dist/audit/providers/claudeWorkerProvider.js +15 -0
- package/dist/audit/providers/claudeWorkerProvider.js.map +1 -0
- package/dist/audit/providers/index.d.ts.map +1 -1
- package/dist/audit/providers/index.js +2 -0
- package/dist/audit/providers/index.js.map +1 -1
- package/dist/audit/quota/index.d.ts +133 -128
- package/dist/audit/quota/index.d.ts.map +1 -1
- package/dist/audit/supervisor/sessionConfig.d.ts +3 -11
- package/dist/audit/supervisor/sessionConfig.d.ts.map +1 -1
- package/dist/audit/supervisor/sessionConfig.js +3 -25
- package/dist/audit/supervisor/sessionConfig.js.map +1 -1
- package/dist/audit/types/analyzerCapability.d.ts +6 -6
- package/dist/audit/types/externalAnalyzer.d.ts +10 -10
- package/dist/remediate/index.d.ts.map +1 -1
- package/dist/remediate/index.js +2 -2
- package/dist/remediate/index.js.map +1 -1
- package/dist/remediate/phases/plan.d.ts.map +1 -1
- package/dist/remediate/phases/plan.js +5 -4
- package/dist/remediate/phases/plan.js.map +1 -1
- package/dist/remediate/providers/claudeWorkerProvider.d.ts +11 -0
- package/dist/remediate/providers/claudeWorkerProvider.d.ts.map +1 -0
- package/dist/remediate/providers/claudeWorkerProvider.js +16 -0
- package/dist/remediate/providers/claudeWorkerProvider.js.map +1 -0
- package/dist/remediate/providers/index.d.ts.map +1 -1
- package/dist/remediate/providers/index.js +2 -0
- package/dist/remediate/providers/index.js.map +1 -1
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +9 -3
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/dispatch/acceptNode.d.ts +1 -1
- package/dist/remediate/steps/dispatch/acceptNode.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/acceptNode.js.map +1 -1
- package/dist/remediate/steps/dispatch/marshal.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/marshal.js +5 -4
- package/dist/remediate/steps/dispatch/marshal.js.map +1 -1
- package/dist/remediate/steps/dispatch/waveScheduling.d.ts +4 -2
- package/dist/remediate/steps/dispatch/waveScheduling.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/waveScheduling.js +33 -85
- package/dist/remediate/steps/dispatch/waveScheduling.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +21 -10
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +45 -25
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/steps/sessionConfigLoad.d.ts +46 -0
- package/dist/remediate/steps/sessionConfigLoad.d.ts.map +1 -0
- package/dist/remediate/steps/sessionConfigLoad.js +39 -0
- package/dist/remediate/steps/sessionConfigLoad.js.map +1 -0
- package/dist/shared/config/resolveSessionConfig.d.ts +75 -0
- package/dist/shared/config/resolveSessionConfig.d.ts.map +1 -0
- package/dist/shared/config/resolveSessionConfig.js +125 -0
- package/dist/shared/config/resolveSessionConfig.js.map +1 -0
- package/dist/shared/dispatch/admissionLoop.d.ts +12 -12
- package/dist/shared/dispatch/coordinator.d.ts.map +1 -1
- package/dist/shared/dispatch/coordinator.js +52 -6
- package/dist/shared/dispatch/coordinator.js.map +1 -1
- package/dist/shared/dispatch/hybridDispatch.d.ts +6 -0
- package/dist/shared/dispatch/hybridDispatch.d.ts.map +1 -1
- package/dist/shared/dispatch/hybridDispatch.js +6 -0
- package/dist/shared/dispatch/hybridDispatch.js.map +1 -1
- package/dist/shared/dispatch/providerLaunchFinalize.d.ts +2 -1
- package/dist/shared/dispatch/providerLaunchFinalize.d.ts.map +1 -1
- package/dist/shared/dispatch/providerLaunchFinalize.js +123 -68
- package/dist/shared/dispatch/providerLaunchFinalize.js.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.d.ts +69 -2
- package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.js +177 -7
- package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
- package/dist/shared/dispatch/unifiedRolling.d.ts +23 -0
- package/dist/shared/dispatch/unifiedRolling.d.ts.map +1 -1
- package/dist/shared/dispatch/unifiedRolling.js +2 -0
- package/dist/shared/dispatch/unifiedRolling.js.map +1 -1
- package/dist/shared/friction/stepBoundaryCapture.d.ts +52 -1
- package/dist/shared/friction/stepBoundaryCapture.d.ts.map +1 -1
- package/dist/shared/friction/stepBoundaryCapture.js +87 -0
- package/dist/shared/friction/stepBoundaryCapture.js.map +1 -1
- package/dist/shared/index.d.ts +20 -10
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +20 -6
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io/stateDir.d.ts +27 -0
- package/dist/shared/io/stateDir.d.ts.map +1 -0
- package/dist/shared/io/stateDir.js +40 -0
- package/dist/shared/io/stateDir.js.map +1 -0
- package/dist/shared/providers/auditorSources.d.ts +169 -0
- package/dist/shared/providers/auditorSources.d.ts.map +1 -0
- package/dist/shared/providers/auditorSources.js +453 -0
- package/dist/shared/providers/auditorSources.js.map +1 -0
- package/dist/shared/providers/claudeWorkerProvider.d.ts +71 -0
- package/dist/shared/providers/claudeWorkerProvider.d.ts.map +1 -0
- package/dist/shared/providers/claudeWorkerProvider.js +133 -0
- package/dist/shared/providers/claudeWorkerProvider.js.map +1 -0
- package/dist/shared/providers/providerConfirmation.d.ts +3 -20
- package/dist/shared/providers/providerConfirmation.d.ts.map +1 -1
- package/dist/shared/providers/providerConfirmation.js +27 -40
- package/dist/shared/providers/providerConfirmation.js.map +1 -1
- package/dist/shared/providers/providerFactory.d.ts +13 -1
- package/dist/shared/providers/providerFactory.d.ts.map +1 -1
- package/dist/shared/providers/providerFactory.js +12 -0
- package/dist/shared/providers/providerFactory.js.map +1 -1
- package/dist/shared/providers/proxyCatalog.d.ts +95 -0
- package/dist/shared/providers/proxyCatalog.d.ts.map +1 -0
- package/dist/shared/providers/proxyCatalog.js +426 -0
- package/dist/shared/providers/proxyCatalog.js.map +1 -0
- package/dist/shared/providers/sharedProviderConfirmation.d.ts +264 -75
- package/dist/shared/providers/sharedProviderConfirmation.d.ts.map +1 -1
- package/dist/shared/providers/sharedProviderConfirmation.js +534 -113
- package/dist/shared/providers/sharedProviderConfirmation.js.map +1 -1
- package/dist/shared/quota/apiPool.d.ts +34 -11
- package/dist/shared/quota/apiPool.d.ts.map +1 -1
- package/dist/shared/quota/apiPool.js +52 -23
- package/dist/shared/quota/apiPool.js.map +1 -1
- package/dist/shared/quota/capacity.d.ts +79 -50
- package/dist/shared/quota/capacity.d.ts.map +1 -1
- package/dist/shared/quota/capacity.js +40 -5
- package/dist/shared/quota/capacity.js.map +1 -1
- package/dist/shared/quota/errorParsing.d.ts +39 -0
- package/dist/shared/quota/errorParsing.d.ts.map +1 -1
- package/dist/shared/quota/errorParsing.js +76 -0
- package/dist/shared/quota/errorParsing.js.map +1 -1
- package/dist/shared/quota/hostPool.d.ts +107 -0
- package/dist/shared/quota/hostPool.d.ts.map +1 -0
- package/dist/shared/quota/hostPool.js +103 -0
- package/dist/shared/quota/hostPool.js.map +1 -0
- package/dist/shared/quota/quotaSource.d.ts +2 -2
- package/dist/shared/types/auditorDescriptor.d.ts +120 -0
- package/dist/shared/types/auditorDescriptor.d.ts.map +1 -0
- package/dist/shared/types/auditorDescriptor.js +28 -0
- package/dist/shared/types/auditorDescriptor.js.map +1 -0
- package/dist/shared/types/providerConfirmation.d.ts +64 -6
- package/dist/shared/types/providerConfirmation.d.ts.map +1 -1
- package/dist/shared/types/providerConfirmation.js +1 -1
- package/dist/shared/types/rollingDispatch.d.ts +45 -1
- package/dist/shared/types/rollingDispatch.d.ts.map +1 -1
- package/dist/shared/types/sessionConfig.d.ts +149 -67
- package/dist/shared/types/sessionConfig.d.ts.map +1 -1
- package/dist/shared/types/sessionConfig.js +87 -2
- package/dist/shared/types/sessionConfig.js.map +1 -1
- package/dist/shared/validation/sessionConfig.d.ts +26 -14
- package/dist/shared/validation/sessionConfig.d.ts.map +1 -1
- package/dist/shared/validation/sessionConfig.js +95 -69
- package/dist/shared/validation/sessionConfig.js.map +1 -1
- package/docs/audit-pkg/contracts.md +4 -4
- package/docs/audit-pkg/operator-guide.md +43 -24
- package/package.json +1 -1
- package/skills/audit-code/SKILL.md +17 -14
- package/skills/audit-code/audit-code.prompt.md +17 -16
- package/wrapper/audit-code-wrapper-install-hosts.mjs +6 -10
- package/wrapper/remediate-code-wrapper-install-hosts.mjs +4 -8
- package/dist/shared/quota/repairProxyRegistry.d.ts +0 -84
- package/dist/shared/quota/repairProxyRegistry.d.ts.map +0 -1
- package/dist/shared/quota/repairProxyRegistry.js +0 -144
- package/dist/shared/quota/repairProxyRegistry.js.map +0 -1
|
@@ -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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"}
|
|
@@ -14,22 +14,14 @@ export interface DiscoveredProvider {
|
|
|
14
14
|
* already inside an active session of that same agent (claude-code while
|
|
15
15
|
* `CLAUDECODE` is set, codex while `CODEX` is set). The Gate-0 confirmation
|
|
16
16
|
* EXCLUDES a self-spawn-blocked provider from the dispatchable pool unless the
|
|
17
|
-
* operator explicitly includes it
|
|
18
|
-
*
|
|
19
|
-
* security decision.
|
|
17
|
+
* operator explicitly includes it. This FLAG is the security signal — a
|
|
18
|
+
* downstream consumer must never parse free text to make that decision.
|
|
20
19
|
*/
|
|
21
20
|
selfSpawnBlocked?: boolean;
|
|
22
|
-
reason?: string;
|
|
23
|
-
}
|
|
24
|
-
export interface ConfirmedProviderPool {
|
|
25
|
-
providers: DiscoveredProvider[];
|
|
26
|
-
excluded: ResolvedProviderName[];
|
|
27
|
-
addedUndetected: DiscoveredProvider[];
|
|
28
21
|
}
|
|
29
22
|
/**
|
|
30
23
|
* Probe PATH for each known CLI and return a DiscoveredProvider entry for each
|
|
31
|
-
* detected tool.
|
|
32
|
-
* overrides when determining which CLI name to probe.
|
|
24
|
+
* detected tool. Session-config `command` overrides decide which binary is probed.
|
|
33
25
|
*
|
|
34
26
|
* @param sessionConfig - Current session config (may be empty `{}`).
|
|
35
27
|
* @param env - Process env snapshot; defaults to `process.env`.
|
|
@@ -53,14 +45,6 @@ export declare function discoverProviders(sessionConfig: SessionConfig, env?: No
|
|
|
53
45
|
* that cares can route the diagnostic into its RunLogger.
|
|
54
46
|
*/
|
|
55
47
|
export declare function queryProviderQuota(provider: DiscoveredProvider, freshSessionProvider: FreshSessionProvider, log?: (providerName: string, error: unknown) => void): Promise<ProviderRateLimits | null>;
|
|
56
|
-
/**
|
|
57
|
-
* Apply user selections to the discovered pool, returning a ConfirmedProviderPool
|
|
58
|
-
* suitable for persistence in SessionConfig.confirmed_provider_pool.
|
|
59
|
-
*
|
|
60
|
-
* @param discovered - Output of `discoverProviders`.
|
|
61
|
-
* @param exclude - Provider names to remove from the pool.
|
|
62
|
-
* @param addUndetected - Manually specified providers not found on PATH.
|
|
63
|
-
*/
|
|
64
48
|
/**
|
|
65
49
|
* The representative model id a provider is priced/ordered by at Gate-0 (cost-first
|
|
66
50
|
* routing; spec/cost-first-routing.md). Only the providers that carry a configured
|
|
@@ -105,7 +89,6 @@ export declare function annotateConfirmedPool(pool: ConfirmedPoolEntry[], sessio
|
|
|
105
89
|
* the tool's price-ascending `cost_order`. Delegates to `annotateConfirmedPool`.
|
|
106
90
|
*/
|
|
107
91
|
export declare function annotateConfirmedPoolCost(pool: ConfirmedPoolEntry[], sessionConfig: SessionConfig): ConfirmedPoolEntry[];
|
|
108
|
-
export declare function applyProviderConfirmationSelections(discovered: DiscoveredProvider[], exclude: ResolvedProviderName[], addUndetected: DiscoveredProvider[]): ConfirmedProviderPool;
|
|
109
92
|
/**
|
|
110
93
|
* Display-only view of one `sessionConfig.sources[]` pool for the Gate-0 roster.
|
|
111
94
|
*
|
|
@@ -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;
|
|
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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hasConfiguredOpenAiCompatible, hasConfiguredOpenCode, } from "./providerFactory.js";
|
|
2
2
|
import { commandExists, isSelfSpawnBlocked } from "./providerPathGuard.js";
|
|
3
3
|
import { suggestCostOrdering, resolveModelPrice } from "../dispatch/costRank.js";
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
@@ -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";
|
|
@@ -70,8 +73,7 @@ const CLI_PROBES = [
|
|
|
70
73
|
// ---------------------------------------------------------------------------
|
|
71
74
|
/**
|
|
72
75
|
* Probe PATH for each known CLI and return a DiscoveredProvider entry for each
|
|
73
|
-
* detected tool.
|
|
74
|
-
* overrides when determining which CLI name to probe.
|
|
76
|
+
* detected tool. Session-config `command` overrides decide which binary is probed.
|
|
75
77
|
*
|
|
76
78
|
* @param sessionConfig - Current session config (may be empty `{}`).
|
|
77
79
|
* @param env - Process env snapshot; defaults to `process.env`.
|
|
@@ -95,16 +97,10 @@ export function discoverProviders(sessionConfig, env = process.env, detectComman
|
|
|
95
97
|
if (probe.providerName === "opencode" && !hasConfiguredOpenCode(sessionConfig)) {
|
|
96
98
|
continue;
|
|
97
99
|
}
|
|
98
|
-
// Self-spawn guard: mirror providerFactory — don't surface claude-code when
|
|
99
|
-
// already inside a claude-code session, codex when inside codex, etc.
|
|
100
|
-
const resolvedName = resolveFreshSessionProviderName("auto", sessionConfig, {
|
|
101
|
-
env,
|
|
102
|
-
commandExists: (cmd) => cmd === command,
|
|
103
|
-
});
|
|
104
100
|
// Machine-readable self-spawn-blocked flag, derived from the single-sourced
|
|
105
101
|
// guard. A self-spawn-blocked provider is still SURFACED (the operator may
|
|
106
102
|
// override) but carries the flag so Gate-0 can EXCLUDE it from the
|
|
107
|
-
// dispatchable pool without parsing
|
|
103
|
+
// dispatchable pool without parsing free text.
|
|
108
104
|
const blocked = isSelfSpawnBlocked(probe.providerName, env);
|
|
109
105
|
discovered.push({
|
|
110
106
|
name: probe.providerName,
|
|
@@ -112,11 +108,6 @@ export function discoverProviders(sessionConfig, env = process.env, detectComman
|
|
|
112
108
|
capabilityTier: defaultCapabilityTier(probe.providerName),
|
|
113
109
|
detected: true,
|
|
114
110
|
selfSpawnBlocked: blocked,
|
|
115
|
-
reason: blocked
|
|
116
|
-
? `detected on PATH but cannot self-spawn from within an active ${probe.providerName} session`
|
|
117
|
-
: resolvedName === probe.providerName
|
|
118
|
-
? undefined
|
|
119
|
-
: `detected on PATH; auto-resolution may prefer a higher-priority provider`,
|
|
120
111
|
});
|
|
121
112
|
}
|
|
122
113
|
// openai-compatible (NIM / vLLM / LM Studio / …) is an API pool, not a CLI: it
|
|
@@ -129,7 +120,6 @@ export function discoverProviders(sessionConfig, env = process.env, detectComman
|
|
|
129
120
|
command: sessionConfig.openai_compatible?.model,
|
|
130
121
|
capabilityTier: defaultCapabilityTier("openai-compatible"),
|
|
131
122
|
detected: true,
|
|
132
|
-
reason: "configured background API pool (base_url + model); not PATH-probed",
|
|
133
123
|
});
|
|
134
124
|
}
|
|
135
125
|
return discovered;
|
|
@@ -159,14 +149,6 @@ export async function queryProviderQuota(provider, freshSessionProvider, log) {
|
|
|
159
149
|
return null;
|
|
160
150
|
}
|
|
161
151
|
}
|
|
162
|
-
/**
|
|
163
|
-
* Apply user selections to the discovered pool, returning a ConfirmedProviderPool
|
|
164
|
-
* suitable for persistence in SessionConfig.confirmed_provider_pool.
|
|
165
|
-
*
|
|
166
|
-
* @param discovered - Output of `discoverProviders`.
|
|
167
|
-
* @param exclude - Provider names to remove from the pool.
|
|
168
|
-
* @param addUndetected - Manually specified providers not found on PATH.
|
|
169
|
-
*/
|
|
170
152
|
/**
|
|
171
153
|
* The representative model id a provider is priced/ordered by at Gate-0 (cost-first
|
|
172
154
|
* routing; spec/cost-first-routing.md). Only the providers that carry a configured
|
|
@@ -196,8 +178,9 @@ function dispatchSourceKey(source) {
|
|
|
196
178
|
* would let one entry's `cost_order` silently overwrite the other's. The prefix is internal
|
|
197
179
|
* only; the emitted `source_id` + the operator `cost_order` keyspace are unaffected.
|
|
198
180
|
*/
|
|
181
|
+
const SOURCE_CANDIDATE_KEY_PREFIX = "source::";
|
|
199
182
|
function sourceCandidateKey(source) {
|
|
200
|
-
return
|
|
183
|
+
return `${SOURCE_CANDIDATE_KEY_PREFIX}${dispatchSourceKey(source)}`;
|
|
201
184
|
}
|
|
202
185
|
/**
|
|
203
186
|
* Resolve the FINAL 0-based cost position for every candidate key. Without an
|
|
@@ -212,10 +195,27 @@ function resolveFinalCostOrder(candidates, operatorOrder) {
|
|
|
212
195
|
return new Map(suggested.map((c) => [c.key, c.suggested_order]));
|
|
213
196
|
}
|
|
214
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
|
+
}
|
|
215
214
|
const seen = new Set();
|
|
216
215
|
const orderedNamed = [];
|
|
217
|
-
for (const
|
|
218
|
-
|
|
216
|
+
for (const token of operatorOrder) {
|
|
217
|
+
const key = knownKeys.has(token) ? token : bareSourceAliases.get(token);
|
|
218
|
+
if (key !== undefined && !seen.has(key)) {
|
|
219
219
|
seen.add(key);
|
|
220
220
|
orderedNamed.push(key);
|
|
221
221
|
}
|
|
@@ -318,19 +318,6 @@ export function annotateConfirmedPool(pool, sessionConfig, input, sources = [])
|
|
|
318
318
|
export function annotateConfirmedPoolCost(pool, sessionConfig) {
|
|
319
319
|
return annotateConfirmedPool(pool, sessionConfig).provider_pool;
|
|
320
320
|
}
|
|
321
|
-
export function applyProviderConfirmationSelections(discovered, exclude, addUndetected) {
|
|
322
|
-
const excludeSet = new Set(exclude);
|
|
323
|
-
const filtered = discovered.filter((p) => !excludeSet.has(p.name));
|
|
324
|
-
const undetectedNormalized = addUndetected.map((p) => ({
|
|
325
|
-
...p,
|
|
326
|
-
detected: false,
|
|
327
|
-
}));
|
|
328
|
-
return {
|
|
329
|
-
providers: [...filtered, ...undetectedNormalized],
|
|
330
|
-
excluded: exclude,
|
|
331
|
-
addedUndetected: undetectedNormalized,
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
321
|
/**
|
|
335
322
|
* Derive the Gate-0 display view of every configured `sessionConfig.sources[]`
|
|
336
323
|
* entry (backlog follow-up a). Read-only and additive: mirrors the same
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerConfirmation.js","sourceRoot":"","sources":["../../../src/shared/providers/providerConfirmation.ts"],"names":[],"mappings":"AAMA,OAAO,EACL
|
|
1
|
+
{"version":3,"file":"providerConfirmation.js","sourceRoot":"","sources":["../../../src/shared/providers/providerConfirmation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { FreshSessionProvider, OutputConstraintCapability } from "./types.js";
|
|
2
|
-
import type { ResolvedProviderName, SessionConfig, ClaudeCodeConfig, OpenCodeConfig, AgyConfig } from "../types/sessionConfig.js";
|
|
2
|
+
import type { ResolvedProviderName, SessionConfig, ClaudeCodeConfig, ClaudeWorkerConfig, OpenCodeConfig, AgyConfig } from "../types/sessionConfig.js";
|
|
3
3
|
import { RunLogger } from "../observability/runLog.js";
|
|
4
4
|
export declare function hasConfiguredOpenCode(sessionConfig: SessionConfig): boolean;
|
|
5
5
|
/**
|
|
@@ -7,6 +7,12 @@ export declare function hasConfiguredOpenCode(sessionConfig: SessionConfig): boo
|
|
|
7
7
|
* API key is resolved (and degrades) at launch — env presence is intentionally
|
|
8
8
|
* not probed here, mirroring how the agentic providers don't read credentials
|
|
9
9
|
* during resolution.
|
|
10
|
+
*
|
|
11
|
+
* NOT contradicted by `providers/auditorSources.ts`, which DOES probe env presence:
|
|
12
|
+
* that asks a different question. This function asks "is this backend CONFIGURED?"
|
|
13
|
+
* during launch-time resolution; `verifySourceReach` asks "can this process PROVE it
|
|
14
|
+
* reaches this declared lane?" before admitting it to the dispatch pool. A configured-
|
|
15
|
+
* but-unreachable backend still degrades at launch exactly as documented here.
|
|
10
16
|
*/
|
|
11
17
|
export declare function hasConfiguredOpenAiCompatible(config: SessionConfig["openai_compatible"]): boolean;
|
|
12
18
|
/**
|
|
@@ -77,6 +83,12 @@ export interface FreshSessionProviderDeps {
|
|
|
77
83
|
/** Human-readable orchestrator name, interpolated into the fallback warning. */
|
|
78
84
|
orchestratorName: string;
|
|
79
85
|
createClaudeCodeProvider: (config: ClaudeCodeConfig | undefined) => FreshSessionProvider;
|
|
86
|
+
/**
|
|
87
|
+
* The proxied isolated Claude-harness worker (commit 3b). Injected like
|
|
88
|
+
* claude-code so each orchestrator carries only its skip-permissions default;
|
|
89
|
+
* the class body is single-sourced in shared (`ClaudeWorkerProvider`).
|
|
90
|
+
*/
|
|
91
|
+
createClaudeWorkerProvider: (config: ClaudeWorkerConfig | undefined) => FreshSessionProvider;
|
|
80
92
|
createOpenCodeProvider: (config: OpenCodeConfig | undefined) => FreshSessionProvider;
|
|
81
93
|
createAgyProvider: (config: AgyConfig | undefined) => FreshSessionProvider;
|
|
82
94
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerFactory.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/providerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,gBAAgB,
|
|
1
|
+
{"version":3,"file":"providerFactory.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/providerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAElB,cAAc,EACd,SAAS,EACV,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAcvD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAK3E;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACzC,OAAO,CAET;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAChC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,yBAAyB,EAAE,OAAO,CAAC;IACnC,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AA6LD;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,GAAE,aAAkB,EACjC,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC,GACL,oBAAoB,CAYtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kCAAkC,CAChD,YAAY,EAAE,oBAAoB,EAClC,aAAa,GAAE,aAAkB,GAChC,0BAA0B,CA8B5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,EAAE,CACxB,MAAM,EAAE,gBAAgB,GAAG,SAAS,KACjC,oBAAoB,CAAC;IAC1B;;;;OAIG;IACH,0BAA0B,EAAE,CAC1B,MAAM,EAAE,kBAAkB,GAAG,SAAS,KACnC,oBAAoB,CAAC;IAC1B,sBAAsB,EAAE,CACtB,MAAM,EAAE,cAAc,GAAG,SAAS,KAC/B,oBAAoB,CAAC;IAC1B,iBAAiB,EAAE,CACjB,MAAM,EAAE,SAAS,GAAG,SAAS,KAC1B,oBAAoB,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,EAAE,aAAa,YAAK,EACjC,IAAI,EAAE,wBAAwB,GAC7B,oBAAoB,CA6CtB"}
|
|
@@ -26,6 +26,12 @@ function hasConfiguredAgy(config) {
|
|
|
26
26
|
* API key is resolved (and degrades) at launch — env presence is intentionally
|
|
27
27
|
* not probed here, mirroring how the agentic providers don't read credentials
|
|
28
28
|
* during resolution.
|
|
29
|
+
*
|
|
30
|
+
* NOT contradicted by `providers/auditorSources.ts`, which DOES probe env presence:
|
|
31
|
+
* that asks a different question. This function asks "is this backend CONFIGURED?"
|
|
32
|
+
* during launch-time resolution; `verifySourceReach` asks "can this process PROVE it
|
|
33
|
+
* reaches this declared lane?" before admitting it to the dispatch pool. A configured-
|
|
34
|
+
* but-unreachable backend still degrades at launch exactly as documented here.
|
|
29
35
|
*/
|
|
30
36
|
export function hasConfiguredOpenAiCompatible(config) {
|
|
31
37
|
return Boolean(config?.base_url?.trim()) && Boolean(config?.model?.trim());
|
|
@@ -296,6 +302,12 @@ function constructProvider(providerName, sessionConfig, deps) {
|
|
|
296
302
|
switch (providerName) {
|
|
297
303
|
case "worker-command":
|
|
298
304
|
return new WorkerCommandProvider();
|
|
305
|
+
case "claude-worker":
|
|
306
|
+
// The proxied isolated Claude-harness worker (commit 3b). The config block is
|
|
307
|
+
// composed at launch by `sourceProviderConfig` from the claude-worker source
|
|
308
|
+
// itself; construction throws loudly when endpoint/backend_provider/model are
|
|
309
|
+
// missing (isolation is the class's constructor invariant, not a guard).
|
|
310
|
+
return deps.createClaudeWorkerProvider(sessionConfig.claude_worker);
|
|
299
311
|
case "subprocess-template":
|
|
300
312
|
if (!sessionConfig.subprocess_template?.command_template?.length) {
|
|
301
313
|
throw new Error("subprocess-template provider requires session-config.json with subprocess_template.command_template.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerFactory.js","sourceRoot":"","sources":["../../../src/shared/providers/providerFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"providerFactory.js","sourceRoot":"","sources":["../../../src/shared/providers/providerFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { DispatchableSource } from "../types/sessionConfig.js";
|
|
2
|
+
/**
|
|
3
|
+
* The POPULATE cache for the repair-proxy lane: `GET <proxy>/registry` expanded into
|
|
4
|
+
* ready-to-fold `claude-worker` {@link DispatchableSource}s, written once per populate
|
|
5
|
+
* (Gate-0 build / explicit refresh) and READ by resolve — never fetched mid-resolve
|
|
6
|
+
* (`docs/reviews/commit3-proxy-kind1-transport-plan-2026-07-16.md` §populate/resolve).
|
|
7
|
+
*
|
|
8
|
+
* Named `catalog-cache.json`, NOT the `catalog-<auditor-id>.json` the reserved-name
|
|
9
|
+
* comment at `auditorSources.ts` anticipates: populate/resolve run on the AMBIENT
|
|
10
|
+
* path, where no auditor id exists to key on. The cache is machine-level like the
|
|
11
|
+
* declaration beside it — and it is a CACHE of live registry state, not resolved
|
|
12
|
+
* per-auditor capability, so an auditor-id key would assert an isolation the data
|
|
13
|
+
* doesn't have. Per-auditor never-inherit still holds: every resolve re-proves proxy
|
|
14
|
+
* REACH itself; the cache only supplies the expansion.
|
|
15
|
+
*/
|
|
16
|
+
export declare const PROXY_CATALOG_FILENAME = "catalog-cache.json";
|
|
17
|
+
/** Top-K models expanded per backend provider when the operator declares no `top_k`. */
|
|
18
|
+
export declare const DEFAULT_PROXY_TOP_K = 3;
|
|
19
|
+
/** Timeout (ms) for populate-time model verification probes. */
|
|
20
|
+
export declare const POPULATE_PROBE_TIMEOUT_MS = 3000;
|
|
21
|
+
/** Concurrency limit for populate-time model verification probes. */
|
|
22
|
+
export declare const POPULATE_PROBE_CONCURRENCY = 4;
|
|
23
|
+
/**
|
|
24
|
+
* A same-endpoint cache younger than this skips the registry fetch + probes
|
|
25
|
+
* entirely (see the freshness short-circuit in {@link populateProxyCatalog}).
|
|
26
|
+
* Refresh throttle only — read-side staleness policy is a separate concern.
|
|
27
|
+
*/
|
|
28
|
+
export declare const POPULATE_CACHE_FRESH_TTL_MS: number;
|
|
29
|
+
/** Resolve the populate-cache path for this machine (state dir via `io/stateDir.ts`). */
|
|
30
|
+
export declare function resolveProxyCatalogPath(homeDir?: string): string;
|
|
31
|
+
/** The on-disk cache shape: expansion + when it was fetched (staleness policy later). */
|
|
32
|
+
export interface ProxyCatalog {
|
|
33
|
+
/** ISO timestamp of the populate fetch. Read-side returns it; NO TTL is enforced yet. */
|
|
34
|
+
fetched_at: string;
|
|
35
|
+
/** The proxy endpoint the registry was fetched from. */
|
|
36
|
+
endpoint: string;
|
|
37
|
+
/** Expanded `claude-worker` sources, ready to fold into the dispatch pool. */
|
|
38
|
+
sources: DispatchableSource[];
|
|
39
|
+
}
|
|
40
|
+
export interface PopulateProxyCatalogOptions {
|
|
41
|
+
/** The repair-proxy base url (`GET <endpoint>/registry`). */
|
|
42
|
+
endpoint: string;
|
|
43
|
+
/** Models expanded per backend provider (declared `repair_proxy.top_k`); default {@link DEFAULT_PROXY_TOP_K}. */
|
|
44
|
+
topK?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Operator-declared blended $/Mtok for the proxied lane (`repair_proxy.cost_per_mtok`,
|
|
47
|
+
* the free-to-operator axis). WINS over any registry list price.
|
|
48
|
+
*/
|
|
49
|
+
costPerMtok?: number;
|
|
50
|
+
/** Injectable fetch (tests); defaults to global fetch. */
|
|
51
|
+
fetchImpl?: typeof fetch;
|
|
52
|
+
/** Home dir override for the cache path (tests). */
|
|
53
|
+
homeDir?: string;
|
|
54
|
+
/** Clock (tests); defaults to `Date.now`-based ISO. */
|
|
55
|
+
now?: () => Date;
|
|
56
|
+
}
|
|
57
|
+
export interface PopulateProxyCatalogResult {
|
|
58
|
+
/** The expanded sources (also what was written when `written` is true). */
|
|
59
|
+
sources: DispatchableSource[];
|
|
60
|
+
/** Whether the cache file was (re)written. False only when the fetch itself failed. */
|
|
61
|
+
written: boolean;
|
|
62
|
+
/** Operator-facing explanation when the registry could not be fetched/parsed. */
|
|
63
|
+
reason?: string;
|
|
64
|
+
/** Models dropped during probe verification, with reasons. */
|
|
65
|
+
dropped: Array<{
|
|
66
|
+
id: string;
|
|
67
|
+
reason: string;
|
|
68
|
+
}>;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* POPULATE: fetch `GET <endpoint>/registry` and write the expanded `claude-worker`
|
|
72
|
+
* sources to the machine-level cache. Network-bound and cacheable — runs at Gate-0
|
|
73
|
+
* build / explicit refresh, NEVER inside `resolveAmbientSources` (which only READS
|
|
74
|
+
* via {@link readProxyCatalog}). Never throws: a failed fetch returns
|
|
75
|
+
* `{written:false, reason}` and leaves any prior cache untouched; an empty/zero-match
|
|
76
|
+
* registry WRITES an empty expansion (fresh knowledge — resolve reports the lane
|
|
77
|
+
* unexpanded with a reason).
|
|
78
|
+
*/
|
|
79
|
+
export declare function populateProxyCatalog(options: PopulateProxyCatalogOptions): Promise<PopulateProxyCatalogResult>;
|
|
80
|
+
export interface ReadProxyCatalogDeps {
|
|
81
|
+
/** Home dir override for the cache path (tests). */
|
|
82
|
+
homeDir?: string;
|
|
83
|
+
/** Raw cache reader (tests inject); defaults to reading the cache file. */
|
|
84
|
+
readCatalogFile?: (path: string) => string | null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* READ the populate cache. Returns the entries + `fetched_at` (NO TTL enforcement —
|
|
88
|
+
* staleness policy is a later commit; the caller decides). Degrades to `null` on
|
|
89
|
+
* absent / unparseable / structurally-invalid content — never throws (same bar as
|
|
90
|
+
* `readSourceDeclaration`: the resolve path must not be failable by a bad file).
|
|
91
|
+
* Cached sources are held to the shared source validator, so a hand-edited or
|
|
92
|
+
* version-skewed cache degrades to "no cache" rather than admitting a half-checked pool.
|
|
93
|
+
*/
|
|
94
|
+
export declare function readProxyCatalog(deps?: ReadProxyCatalogDeps): ProxyCatalog | null;
|
|
95
|
+
//# sourceMappingURL=proxyCatalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxyCatalog.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/proxyCatalog.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAE3D,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,QAAc,CAAC;AAEvD,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,yFAAyF;AACzF,MAAM,WAAW,YAAY;IAC3B,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAWD,MAAM,WAAW,2BAA2B;IAC1C,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,iHAAiH;IACjH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,2EAA2E;IAC3E,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,uFAAuF;IACvF,OAAO,EAAE,OAAO,CAAC;IACjB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAmRD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC,CAkGrC;AAED,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACnD;AAUD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,oBAAyB,GAC9B,YAAY,GAAG,IAAI,CAmBrB"}
|