agent-composer 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +495 -180
- package/composer.config.schema.json +206 -2
- package/dist/cli/cleanup.d.ts +24 -0
- package/dist/cli/cleanup.js +151 -0
- package/dist/cli/cleanup.js.map +1 -0
- package/dist/cli/doctor.d.ts +12 -0
- package/dist/cli/doctor.js +244 -4
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/goal.d.ts +28 -0
- package/dist/cli/goal.js +251 -0
- package/dist/cli/goal.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.js +31 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/init.d.ts +5 -0
- package/dist/cli/init.js +116 -21
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/initArgs.d.ts +16 -0
- package/dist/cli/initArgs.js +19 -0
- package/dist/cli/initArgs.js.map +1 -0
- package/dist/cli/installGitHook.d.ts +7 -0
- package/dist/cli/installGitHook.js +61 -0
- package/dist/cli/installGitHook.js.map +1 -0
- package/dist/cli/mode.d.ts +6 -0
- package/dist/cli/mode.js +25 -0
- package/dist/cli/mode.js.map +1 -0
- package/dist/cli/status.d.ts +105 -0
- package/dist/cli/status.js +400 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/config/env.d.ts +1 -1
- package/dist/config/modes.d.ts +10 -0
- package/dist/config/modes.js +26 -0
- package/dist/config/modes.js.map +1 -0
- package/dist/config/oracleRole.d.ts +10 -0
- package/dist/config/oracleRole.js +11 -0
- package/dist/config/oracleRole.js.map +1 -0
- package/dist/config/schema.d.ts +246 -0
- package/dist/config/schema.js +127 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/evolve/reflection.d.ts +9 -0
- package/dist/evolve/reflection.js +14 -0
- package/dist/evolve/reflection.js.map +1 -1
- package/dist/evolve/runner.d.ts +2 -1
- package/dist/evolve/runner.js +2 -1
- package/dist/evolve/runner.js.map +1 -1
- package/dist/index.js +115 -6
- package/dist/index.js.map +1 -1
- package/dist/providers/AnthropicCompatibleProvider.d.ts +13 -1
- package/dist/providers/AnthropicCompatibleProvider.js +115 -9
- package/dist/providers/AnthropicCompatibleProvider.js.map +1 -1
- package/dist/providers/CLIProvider.d.ts +18 -0
- package/dist/providers/CLIProvider.js +265 -62
- package/dist/providers/CLIProvider.js.map +1 -1
- package/dist/providers/IProvider.d.ts +12 -0
- package/dist/providers/SpendGuardProvider.d.ts +32 -0
- package/dist/providers/SpendGuardProvider.js +98 -0
- package/dist/providers/SpendGuardProvider.js.map +1 -0
- package/dist/registry.d.ts +5 -2
- package/dist/registry.js +17 -2
- package/dist/registry.js.map +1 -1
- package/dist/server/activeRuns.d.ts +17 -0
- package/dist/server/activeRuns.js +114 -0
- package/dist/server/activeRuns.js.map +1 -0
- package/dist/server/codexLifecycleRunner.d.ts +29 -0
- package/dist/server/codexLifecycleRunner.js +188 -0
- package/dist/server/codexLifecycleRunner.js.map +1 -0
- package/dist/server/configMutation.d.ts +22 -0
- package/dist/server/configMutation.js +121 -0
- package/dist/server/configMutation.js.map +1 -0
- package/dist/server/handoffContext.d.ts +1 -0
- package/dist/server/handoffContext.js +12 -0
- package/dist/server/handoffContext.js.map +1 -0
- package/dist/server/progress.d.ts +24 -0
- package/dist/server/progress.js +109 -0
- package/dist/server/progress.js.map +1 -0
- package/dist/server/toolDescriptions.d.ts +60 -0
- package/dist/server/toolDescriptions.js +134 -0
- package/dist/server/toolDescriptions.js.map +1 -0
- package/dist/server.d.ts +19 -25
- package/dist/server.js +87 -377
- package/dist/server.js.map +1 -1
- package/dist/tools/audit.d.ts +2 -0
- package/dist/tools/audit.js +66 -0
- package/dist/tools/audit.js.map +1 -0
- package/dist/tools/code.d.ts +2 -0
- package/dist/tools/code.js +160 -0
- package/dist/tools/code.js.map +1 -0
- package/dist/tools/codexLifecycle.d.ts +2 -0
- package/dist/tools/codexLifecycle.js +206 -0
- package/dist/tools/codexLifecycle.js.map +1 -0
- package/dist/tools/config.d.ts +2 -0
- package/dist/tools/config.js +183 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/context.d.ts +31 -0
- package/dist/tools/context.js +2 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/goal.d.ts +2 -0
- package/dist/tools/goal.js +159 -0
- package/dist/tools/goal.js.map +1 -0
- package/dist/tools/handoff.d.ts +2 -0
- package/dist/tools/handoff.js +57 -0
- package/dist/tools/handoff.js.map +1 -0
- package/dist/tools/oracle.d.ts +2 -0
- package/dist/tools/oracle.js +248 -0
- package/dist/tools/oracle.js.map +1 -0
- package/dist/tools/research.d.ts +2 -0
- package/dist/tools/research.js +51 -0
- package/dist/tools/research.js.map +1 -0
- package/dist/tools/review.d.ts +2 -0
- package/dist/tools/review.js +233 -0
- package/dist/tools/review.js.map +1 -0
- package/dist/tools/route.d.ts +2 -0
- package/dist/tools/route.js +69 -0
- package/dist/tools/route.js.map +1 -0
- package/dist/tools/session.d.ts +2 -0
- package/dist/tools/session.js +37 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/status.d.ts +2 -0
- package/dist/tools/status.js +34 -0
- package/dist/tools/status.js.map +1 -0
- package/dist/tools/workflow.d.ts +2 -0
- package/dist/tools/workflow.js +27 -0
- package/dist/tools/workflow.js.map +1 -0
- package/dist/util/applyFileBlocks.d.ts +18 -0
- package/dist/util/applyFileBlocks.js +163 -0
- package/dist/util/applyFileBlocks.js.map +1 -0
- package/dist/util/asyncControl.d.ts +14 -0
- package/dist/util/asyncControl.js +106 -0
- package/dist/util/asyncControl.js.map +1 -0
- package/dist/util/auditLog.d.ts +56 -0
- package/dist/util/auditLog.js +232 -0
- package/dist/util/auditLog.js.map +1 -0
- package/dist/util/codexLifecycle.d.ts +55 -0
- package/dist/util/codexLifecycle.js +102 -0
- package/dist/util/codexLifecycle.js.map +1 -0
- package/dist/util/codexLifecycleJob.d.ts +209 -0
- package/dist/util/codexLifecycleJob.js +360 -0
- package/dist/util/codexLifecycleJob.js.map +1 -0
- package/dist/util/composerDisabled.d.ts +6 -0
- package/dist/util/composerDisabled.js +27 -0
- package/dist/util/composerDisabled.js.map +1 -0
- package/dist/util/dispatchHint.d.ts +5 -3
- package/dist/util/dispatchHint.js +62 -2
- package/dist/util/dispatchHint.js.map +1 -1
- package/dist/util/goal.d.ts +132 -0
- package/dist/util/goal.js +616 -0
- package/dist/util/goal.js.map +1 -0
- package/dist/util/goalReport.d.ts +51 -0
- package/dist/util/goalReport.js +164 -0
- package/dist/util/goalReport.js.map +1 -0
- package/dist/util/jobPolling.d.ts +9 -0
- package/dist/util/jobPolling.js +17 -0
- package/dist/util/jobPolling.js.map +1 -0
- package/dist/util/oracleJob.d.ts +66 -0
- package/dist/util/oracleJob.js +295 -0
- package/dist/util/oracleJob.js.map +1 -0
- package/dist/util/oracleLock.d.ts +38 -0
- package/dist/util/oracleLock.js +182 -0
- package/dist/util/oracleLock.js.map +1 -0
- package/dist/util/reviewDiff.d.ts +8 -0
- package/dist/util/reviewDiff.js +29 -0
- package/dist/util/reviewDiff.js.map +1 -0
- package/dist/util/reviewJob.d.ts +57 -0
- package/dist/util/reviewJob.js +207 -0
- package/dist/util/reviewJob.js.map +1 -0
- package/dist/util/workflowPlan.d.ts +24 -0
- package/dist/util/workflowPlan.js +49 -0
- package/dist/util/workflowPlan.js.map +1 -0
- package/package.json +8 -1
- package/plugin/composer-mastermind/commands/evolve.md +4 -0
- package/plugin/composer-mastermind/hooks/boundary_guard.sh +43 -2
- package/plugin/composer-mastermind/hooks/codex_warm_review.sh +161 -9
- package/plugin/composer-mastermind/hooks/learn.sh +172 -32
- package/plugin/composer-mastermind/hooks/precommit_codex_review.sh +430 -62
- package/plugin/composer-mastermind/skills/composer-mastermind/SKILL.md +184 -4
- package/scripts/composer-oracle-router-safe.sh +47 -0
- package/scripts/composer-statusline-segment.mjs +40 -0
- package/scripts/oracle-codex-handoff-safe.sh +49 -0
- package/scripts/oracle-plan-mcp.sh +66 -0
- package/scripts/oracle-pro-safe.sh +471 -0
|
@@ -9,17 +9,61 @@ import fs from "node:fs";
|
|
|
9
9
|
import os from "node:os";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
import { projectToolResult } from "../util/projectToolResult.js";
|
|
12
|
+
import { createDeadlineSignal, isAbortError, } from "../util/asyncControl.js";
|
|
12
13
|
// Default executor uses spawn (not execFile) so we can explicitly ignore
|
|
13
14
|
// stdin. Some CLIs (notably `agy --print`) hang forever waiting on stdin
|
|
14
15
|
// when launched from a non-TTY parent if stdin is inherited.
|
|
15
16
|
const DEFAULT_EXEC = (file, args, options) => new Promise((resolve, reject) => {
|
|
16
17
|
const maxBuffer = options.maxBuffer ?? 32 * 1024 * 1024;
|
|
17
18
|
const timeoutMs = options.timeout;
|
|
19
|
+
let killed = false;
|
|
20
|
+
let killTimer = null;
|
|
18
21
|
const child = spawn(file, [...args], {
|
|
19
22
|
cwd: options.cwd,
|
|
20
23
|
stdio: ["ignore", "pipe", "pipe"],
|
|
21
24
|
signal: options.signal,
|
|
25
|
+
// Own process group on POSIX so a timeout can kill descendant
|
|
26
|
+
// processes (e.g. oracle -> Chrome, codex helpers), not just the child.
|
|
27
|
+
detached: process.platform !== "win32",
|
|
22
28
|
});
|
|
29
|
+
const escalateKill = () => {
|
|
30
|
+
if (typeof child.pid === "number" && process.platform !== "win32") {
|
|
31
|
+
try {
|
|
32
|
+
process.kill(-child.pid, "SIGKILL");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// group already gone — fall back to direct kill
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
child.kill("SIGKILL");
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// child already exited
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const killChildTree = () => {
|
|
47
|
+
if (killed)
|
|
48
|
+
return;
|
|
49
|
+
killed = true;
|
|
50
|
+
if (typeof child.pid === "number" && process.platform !== "win32") {
|
|
51
|
+
try {
|
|
52
|
+
process.kill(-child.pid, "SIGTERM");
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
child.kill("SIGTERM");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
child.kill("SIGTERM");
|
|
60
|
+
}
|
|
61
|
+
// Escalate to SIGKILL if the tree ignores SIGTERM within the grace window.
|
|
62
|
+
if (!killTimer) {
|
|
63
|
+
killTimer = setTimeout(escalateKill, KILL_GRACE_MS);
|
|
64
|
+
killTimer.unref?.();
|
|
65
|
+
}
|
|
66
|
+
};
|
|
23
67
|
let stdout = "";
|
|
24
68
|
let stderr = "";
|
|
25
69
|
let timedOut = false;
|
|
@@ -27,13 +71,29 @@ const DEFAULT_EXEC = (file, args, options) => new Promise((resolve, reject) => {
|
|
|
27
71
|
const timer = typeof timeoutMs === "number" && timeoutMs > 0
|
|
28
72
|
? setTimeout(() => {
|
|
29
73
|
timedOut = true;
|
|
30
|
-
|
|
74
|
+
killChildTree();
|
|
31
75
|
}, timeoutMs)
|
|
32
76
|
: null;
|
|
77
|
+
const onAbort = () => killChildTree();
|
|
78
|
+
const cleanupTimers = () => {
|
|
79
|
+
if (timer)
|
|
80
|
+
clearTimeout(timer);
|
|
81
|
+
if (killTimer)
|
|
82
|
+
clearTimeout(killTimer);
|
|
83
|
+
options.signal?.removeEventListener("abort", onAbort);
|
|
84
|
+
};
|
|
85
|
+
if (options.signal) {
|
|
86
|
+
if (options.signal.aborted) {
|
|
87
|
+
killChildTree();
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
options.signal.addEventListener("abort", onAbort, { once: true });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
33
93
|
const checkBuffer = (kind, payload) => {
|
|
34
94
|
if (payload.length > maxBuffer) {
|
|
35
95
|
bufferExceeded = true;
|
|
36
|
-
|
|
96
|
+
killChildTree();
|
|
37
97
|
}
|
|
38
98
|
else if (kind === "stdout") {
|
|
39
99
|
stdout = payload;
|
|
@@ -43,25 +103,32 @@ const DEFAULT_EXEC = (file, args, options) => new Promise((resolve, reject) => {
|
|
|
43
103
|
}
|
|
44
104
|
};
|
|
45
105
|
child.stdout?.on("data", (chunk) => {
|
|
46
|
-
|
|
106
|
+
const nextStdout = stdout + chunk.toString();
|
|
107
|
+
checkBuffer("stdout", nextStdout);
|
|
108
|
+
options.onStdout?.(nextStdout);
|
|
47
109
|
});
|
|
48
110
|
child.stderr?.on("data", (chunk) => {
|
|
49
111
|
checkBuffer("stderr", stderr + chunk.toString());
|
|
50
112
|
});
|
|
51
113
|
child.once("error", (err) => {
|
|
52
|
-
|
|
53
|
-
|
|
114
|
+
cleanupTimers();
|
|
115
|
+
if (options.signal?.aborted && options.signal.reason instanceof Error) {
|
|
116
|
+
reject(options.signal.reason);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
54
119
|
reject(err);
|
|
55
120
|
});
|
|
56
121
|
child.once("close", (code, signal) => {
|
|
57
|
-
|
|
58
|
-
clearTimeout(timer);
|
|
122
|
+
cleanupTimers();
|
|
59
123
|
if (timedOut) {
|
|
60
124
|
return reject(new Error(`CLIProvider: '${file}' timed out after ${timeoutMs}ms`));
|
|
61
125
|
}
|
|
62
126
|
if (bufferExceeded) {
|
|
63
127
|
return reject(new Error(`CLIProvider: '${file}' exceeded maxBuffer ${maxBuffer}`));
|
|
64
128
|
}
|
|
129
|
+
if (options.signal?.aborted && options.signal.reason instanceof Error) {
|
|
130
|
+
return reject(options.signal.reason);
|
|
131
|
+
}
|
|
65
132
|
if (code !== 0) {
|
|
66
133
|
return reject(new Error(`CLIProvider: '${file}' exited code=${code} signal=${signal ?? "none"}; stderr: ${stderr.slice(0, 500)}`));
|
|
67
134
|
}
|
|
@@ -72,6 +139,7 @@ const DEFAULT_TIMEOUT_MS = 15 * 60_000; // Long enough for Codex apply flows, st
|
|
|
72
139
|
const DEFAULT_MAX_BUFFER = 32 * 1024 * 1024; // 32 MB.
|
|
73
140
|
const DEFAULT_RETRIES = 2; // agy/CLI agents occasionally "time out waiting for response" — retry transient failures.
|
|
74
141
|
const DEFAULT_MAX_RESULT_CHARS = 16_000;
|
|
142
|
+
const KILL_GRACE_MS = 5000; // SIGTERM grace before escalating to SIGKILL on a stuck child tree.
|
|
75
143
|
export class CLIProvider {
|
|
76
144
|
id = "cli";
|
|
77
145
|
modelLabel;
|
|
@@ -79,6 +147,7 @@ export class CLIProvider {
|
|
|
79
147
|
exec;
|
|
80
148
|
cwd;
|
|
81
149
|
timeoutMs;
|
|
150
|
+
totalWallClockMs;
|
|
82
151
|
maxBuffer;
|
|
83
152
|
retries;
|
|
84
153
|
maxResultChars;
|
|
@@ -93,6 +162,13 @@ export class CLIProvider {
|
|
|
93
162
|
this.exec = opts.execFn ?? DEFAULT_EXEC;
|
|
94
163
|
this.cwd = opts.cwd;
|
|
95
164
|
this.timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
165
|
+
this.totalWallClockMs = opts.totalWallClockMs ?? this.timeoutMs;
|
|
166
|
+
if (!Number.isFinite(this.timeoutMs) || this.timeoutMs <= 0) {
|
|
167
|
+
throw new Error("CLIProvider: timeoutMs must be a positive finite number");
|
|
168
|
+
}
|
|
169
|
+
if (!Number.isFinite(this.totalWallClockMs) || this.totalWallClockMs <= 0) {
|
|
170
|
+
throw new Error("CLIProvider: total_wall_clock_ms must be a positive finite number");
|
|
171
|
+
}
|
|
96
172
|
this.maxBuffer = opts.maxBuffer ?? DEFAULT_MAX_BUFFER;
|
|
97
173
|
this.retries = opts.retries ?? DEFAULT_RETRIES;
|
|
98
174
|
this.maxResultChars = opts.maxResultChars ?? DEFAULT_MAX_RESULT_CHARS;
|
|
@@ -111,61 +187,83 @@ export class CLIProvider {
|
|
|
111
187
|
throw new Error("CLIProvider: argv missing binary");
|
|
112
188
|
}
|
|
113
189
|
const baseCwd = input.cwd ?? this.cwd;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const text = execution.finalMessagePath
|
|
129
|
-
? CLIProvider.readFinalMessage(execution.finalMessagePath) ?? stdout
|
|
130
|
-
: stdout;
|
|
131
|
-
const transientFailure = CLIProvider.isTransientFailure(text);
|
|
132
|
-
CLIProvider.logUsage({
|
|
133
|
-
bin,
|
|
134
|
-
model: this.modelLabel,
|
|
135
|
-
durationMs,
|
|
136
|
-
stdoutChars: stdout.length,
|
|
137
|
-
textChars: text.length,
|
|
138
|
-
attempt: attempt + 1,
|
|
139
|
-
status: transientFailure ? "transient" : "success",
|
|
190
|
+
const deadline = createDeadlineSignal(`CLIProvider '${bin}' total_wall_clock_ms`, this.totalWallClockMs, input.signal);
|
|
191
|
+
try {
|
|
192
|
+
let lastError;
|
|
193
|
+
for (let attempt = 0; attempt <= this.retries; attempt++) {
|
|
194
|
+
deadline.throwIfAborted();
|
|
195
|
+
const remainingMs = deadline.remainingMs();
|
|
196
|
+
if (remainingMs <= 0)
|
|
197
|
+
deadline.throwIfAborted();
|
|
198
|
+
const execution = CLIProvider.prepareArgs(bin, staticArgs, fullPrompt, {
|
|
199
|
+
projectDir: input.projectDir,
|
|
200
|
+
readOnly: input.readOnly,
|
|
201
|
+
model: input.model,
|
|
202
|
+
reasoningEffort: input.reasoningEffort,
|
|
203
|
+
sandbox: input.sandbox,
|
|
140
204
|
});
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
205
|
+
const startedAt = Date.now();
|
|
206
|
+
try {
|
|
207
|
+
const stdoutProgress = CLIProvider.createStdoutProgressReporter(input.onProgress);
|
|
208
|
+
const { stdout } = await this.exec(bin, execution.args, {
|
|
209
|
+
cwd: execution.cwd ?? baseCwd,
|
|
210
|
+
maxBuffer: this.maxBuffer,
|
|
211
|
+
timeout: Math.max(1, Math.min(this.timeoutMs, remainingMs)),
|
|
212
|
+
signal: deadline.signal,
|
|
213
|
+
onStdout: stdoutProgress,
|
|
214
|
+
});
|
|
215
|
+
deadline.throwIfAborted();
|
|
216
|
+
const durationMs = Date.now() - startedAt;
|
|
217
|
+
const text = execution.finalMessagePath
|
|
218
|
+
? CLIProvider.readFinalMessage(execution.finalMessagePath) ?? stdout
|
|
219
|
+
: stdout;
|
|
220
|
+
const transientFailure = CLIProvider.isTransientFailure(text);
|
|
221
|
+
CLIProvider.logUsage({
|
|
222
|
+
bin,
|
|
223
|
+
model: this.modelLabel,
|
|
224
|
+
durationMs,
|
|
225
|
+
stdoutChars: stdout.length,
|
|
226
|
+
textChars: text.length,
|
|
227
|
+
attempt: attempt + 1,
|
|
228
|
+
status: transientFailure ? "transient" : "success",
|
|
229
|
+
});
|
|
230
|
+
if (transientFailure) {
|
|
231
|
+
lastError = new Error(`CLIProvider: '${bin}' transient failure on attempt ${attempt + 1}: ${text.trim().slice(0, 200)}`);
|
|
232
|
+
deadline.throwIfAborted();
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
const bounded = this.maxResultChars > 0
|
|
236
|
+
? projectToolResult(text, { maxChars: this.maxResultChars }).text
|
|
237
|
+
: text;
|
|
238
|
+
return { text: bounded };
|
|
239
|
+
}
|
|
240
|
+
catch (err) {
|
|
241
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
242
|
+
CLIProvider.logUsage({
|
|
243
|
+
bin,
|
|
244
|
+
model: this.modelLabel,
|
|
245
|
+
durationMs: Date.now() - startedAt,
|
|
246
|
+
stdoutChars: 0,
|
|
247
|
+
textChars: 0,
|
|
248
|
+
attempt: attempt + 1,
|
|
249
|
+
status: "error",
|
|
250
|
+
error: lastError.message.slice(0, 300),
|
|
251
|
+
});
|
|
252
|
+
if (deadline.signal.aborted || input.signal?.aborted || isAbortError(lastError)) {
|
|
253
|
+
throw lastError;
|
|
254
|
+
}
|
|
255
|
+
deadline.throwIfAborted();
|
|
256
|
+
}
|
|
257
|
+
finally {
|
|
258
|
+
execution.cleanup();
|
|
144
259
|
}
|
|
145
|
-
const bounded = this.maxResultChars > 0
|
|
146
|
-
? projectToolResult(text, { maxChars: this.maxResultChars }).text
|
|
147
|
-
: text;
|
|
148
|
-
return { text: bounded };
|
|
149
|
-
}
|
|
150
|
-
catch (err) {
|
|
151
|
-
lastError = err instanceof Error ? err : new Error(String(err));
|
|
152
|
-
CLIProvider.logUsage({
|
|
153
|
-
bin,
|
|
154
|
-
model: this.modelLabel,
|
|
155
|
-
durationMs: Date.now() - startedAt,
|
|
156
|
-
stdoutChars: 0,
|
|
157
|
-
textChars: 0,
|
|
158
|
-
attempt: attempt + 1,
|
|
159
|
-
status: "error",
|
|
160
|
-
error: lastError.message.slice(0, 300),
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
finally {
|
|
164
|
-
execution.cleanup();
|
|
165
260
|
}
|
|
261
|
+
throw (lastError ??
|
|
262
|
+
new Error(`CLIProvider: '${bin}' failed after ${this.retries + 1} attempts`));
|
|
263
|
+
}
|
|
264
|
+
finally {
|
|
265
|
+
deadline.cleanup();
|
|
166
266
|
}
|
|
167
|
-
throw (lastError ??
|
|
168
|
-
new Error(`CLIProvider: '${bin}' failed after ${this.retries + 1} attempts`));
|
|
169
267
|
}
|
|
170
268
|
/** Output signalling a retryable transient failure (timeout / rate-limit / empty). */
|
|
171
269
|
static isTransientFailure(stdout) {
|
|
@@ -176,9 +274,24 @@ export class CLIProvider {
|
|
|
176
274
|
let tempDir;
|
|
177
275
|
let finalMessagePath = CLIProvider.findFlagValue(args, "--output-last-message");
|
|
178
276
|
let cwd;
|
|
277
|
+
if (options.readOnly && !CLIProvider.isCodexExec(bin, args)) {
|
|
278
|
+
throw new Error("CLIProvider: readOnly execution requires a supported Codex exec CLI config.");
|
|
279
|
+
}
|
|
179
280
|
if (CLIProvider.isCodexExec(bin, args)) {
|
|
180
281
|
if (options.projectDir && !CLIProvider.hasCodexCd(args)) {
|
|
181
|
-
args.splice(CLIProvider.
|
|
282
|
+
args.splice(CLIProvider.codexExecCommandIndex(bin, args), 0, "-C", options.projectDir);
|
|
283
|
+
}
|
|
284
|
+
if (options.model && !CLIProvider.hasCodexModel(args)) {
|
|
285
|
+
args.splice(CLIProvider.codexExecCommandIndex(bin, args), 0, "-m", options.model);
|
|
286
|
+
}
|
|
287
|
+
if (options.reasoningEffort && !CLIProvider.hasCodexReasoningEffort(args)) {
|
|
288
|
+
args.splice(CLIProvider.codexExecCommandIndex(bin, args), 0, "-c", `model_reasoning_effort=${options.reasoningEffort}`);
|
|
289
|
+
}
|
|
290
|
+
if (options.sandbox && !options.readOnly && CLIProvider.findSandboxValue(args) === undefined) {
|
|
291
|
+
args.splice(CLIProvider.codexExecCommandIndex(bin, args), 0, "-s", options.sandbox);
|
|
292
|
+
}
|
|
293
|
+
if (options.readOnly) {
|
|
294
|
+
CLIProvider.forceCodexReadOnlySandbox(bin, args);
|
|
182
295
|
}
|
|
183
296
|
if (!finalMessagePath) {
|
|
184
297
|
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "composer-codex-"));
|
|
@@ -201,7 +314,7 @@ export class CLIProvider {
|
|
|
201
314
|
};
|
|
202
315
|
}
|
|
203
316
|
static isCodexExec(bin, args) {
|
|
204
|
-
return
|
|
317
|
+
return CLIProvider.codexExecCommandIndex(bin, args) >= 0;
|
|
205
318
|
}
|
|
206
319
|
static assertSafeCli(argv) {
|
|
207
320
|
const [bin, ...args] = argv;
|
|
@@ -209,8 +322,7 @@ export class CLIProvider {
|
|
|
209
322
|
return;
|
|
210
323
|
if (process.env["COMPOSER_ALLOW_DANGEROUS_CODEX"] === "1")
|
|
211
324
|
return;
|
|
212
|
-
const
|
|
213
|
-
const sandbox = sandboxIndex >= 0 ? args[sandboxIndex + 1] : undefined;
|
|
325
|
+
const sandbox = CLIProvider.findSandboxValue(args);
|
|
214
326
|
if (args.includes("--dangerously-bypass-approvals-and-sandbox") ||
|
|
215
327
|
sandbox === "danger-full-access") {
|
|
216
328
|
throw new Error("CLIProvider: refusing unsafe Codex exec sandbox. Use --sandbox workspace-write, or set COMPOSER_ALLOW_DANGEROUS_CODEX=1 only inside an external sandbox.");
|
|
@@ -241,6 +353,7 @@ export class CLIProvider {
|
|
|
241
353
|
"-a",
|
|
242
354
|
"--add-dir",
|
|
243
355
|
"--ask-for-approval",
|
|
356
|
+
"-C",
|
|
244
357
|
"-c",
|
|
245
358
|
"--cd",
|
|
246
359
|
"--color",
|
|
@@ -282,11 +395,63 @@ export class CLIProvider {
|
|
|
282
395
|
static hasCodexCd(args) {
|
|
283
396
|
return args.some((arg) => arg === "-C" || arg === "--cd" || arg.startsWith("--cd="));
|
|
284
397
|
}
|
|
398
|
+
static hasCodexModel(args) {
|
|
399
|
+
return args.some((arg) => arg === "-m" || arg === "--model" || arg.startsWith("--model="));
|
|
400
|
+
}
|
|
401
|
+
static hasCodexReasoningEffort(args) {
|
|
402
|
+
return args.some((a) => a.startsWith("model_reasoning_effort="));
|
|
403
|
+
}
|
|
285
404
|
static findFlagValue(args, flag) {
|
|
286
405
|
const index = args.indexOf(flag);
|
|
287
406
|
const value = index >= 0 ? args[index + 1] : undefined;
|
|
288
407
|
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
289
408
|
}
|
|
409
|
+
static forceCodexReadOnlySandbox(bin, args) {
|
|
410
|
+
const equalsIndex = args.findIndex((arg) => arg.startsWith("--sandbox="));
|
|
411
|
+
if (equalsIndex >= 0) {
|
|
412
|
+
args[equalsIndex] = "--sandbox=read-only";
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
const flagIndex = args.findIndex((arg) => arg === "--sandbox" || arg === "-s");
|
|
416
|
+
if (flagIndex >= 0) {
|
|
417
|
+
args[flagIndex] = "--sandbox";
|
|
418
|
+
args[flagIndex + 1] = "read-only";
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
const execIndex = CLIProvider.codexExecCommandIndex(bin, args);
|
|
422
|
+
if (execIndex < 0) {
|
|
423
|
+
throw new Error("CLIProvider: readOnly execution requires a supported Codex exec CLI config.");
|
|
424
|
+
}
|
|
425
|
+
args.splice(execIndex + 1, 0, "--sandbox", "read-only");
|
|
426
|
+
}
|
|
427
|
+
static findSandboxValue(args) {
|
|
428
|
+
const equals = args.find((arg) => arg.startsWith("--sandbox="));
|
|
429
|
+
if (equals)
|
|
430
|
+
return equals.slice("--sandbox=".length);
|
|
431
|
+
const index = args.findIndex((arg) => arg === "--sandbox" || arg === "-s");
|
|
432
|
+
const value = index >= 0 ? args[index + 1] : undefined;
|
|
433
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
434
|
+
}
|
|
435
|
+
static codexExecCommandIndex(bin, args) {
|
|
436
|
+
if (path.basename(bin) === "codex") {
|
|
437
|
+
return CLIProvider.codexExecIndex(args);
|
|
438
|
+
}
|
|
439
|
+
if (!CLIProvider.isCodexWrapper(bin))
|
|
440
|
+
return -1;
|
|
441
|
+
const packageIndex = args.findIndex((arg) => CLIProvider.isCodexPackageToken(arg));
|
|
442
|
+
if (packageIndex < 0)
|
|
443
|
+
return -1;
|
|
444
|
+
return args.indexOf("exec", packageIndex + 1);
|
|
445
|
+
}
|
|
446
|
+
static isCodexWrapper(bin) {
|
|
447
|
+
return ["npx", "npm", "pnpm", "yarn", "bun"].includes(path.basename(bin));
|
|
448
|
+
}
|
|
449
|
+
static isCodexPackageToken(arg) {
|
|
450
|
+
return (arg === "codex" ||
|
|
451
|
+
arg.startsWith("codex@") ||
|
|
452
|
+
arg === "@openai/codex" ||
|
|
453
|
+
arg.startsWith("@openai/codex@"));
|
|
454
|
+
}
|
|
290
455
|
static readFinalMessage(filePath) {
|
|
291
456
|
try {
|
|
292
457
|
const text = fs.readFileSync(filePath, "utf8");
|
|
@@ -296,5 +461,43 @@ export class CLIProvider {
|
|
|
296
461
|
return undefined;
|
|
297
462
|
}
|
|
298
463
|
}
|
|
464
|
+
static createStdoutProgressReporter(onProgress) {
|
|
465
|
+
if (!onProgress)
|
|
466
|
+
return undefined;
|
|
467
|
+
let lastDetail = "";
|
|
468
|
+
let lastEmittedAt = 0;
|
|
469
|
+
return (stdout) => {
|
|
470
|
+
const detail = CLIProvider.lastProgressLine(stdout);
|
|
471
|
+
if (!detail || detail === lastDetail)
|
|
472
|
+
return;
|
|
473
|
+
const now = Date.now();
|
|
474
|
+
if (now - lastEmittedAt < 1000)
|
|
475
|
+
return;
|
|
476
|
+
lastDetail = detail;
|
|
477
|
+
lastEmittedAt = now;
|
|
478
|
+
try {
|
|
479
|
+
onProgress({ phase: "working", detail });
|
|
480
|
+
}
|
|
481
|
+
catch {
|
|
482
|
+
// Provider progress is advisory and must not break execution.
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
static lastProgressLine(stdout) {
|
|
487
|
+
const line = stdout
|
|
488
|
+
.split(/\r?\n/)
|
|
489
|
+
.map((part) => CLIProvider.sanitizeProgressLine(part))
|
|
490
|
+
.filter((part) => part.length > 0)
|
|
491
|
+
.at(-1);
|
|
492
|
+
if (!line)
|
|
493
|
+
return undefined;
|
|
494
|
+
return line.length > 60 ? `${line.slice(0, 57)}...` : line;
|
|
495
|
+
}
|
|
496
|
+
static sanitizeProgressLine(line) {
|
|
497
|
+
return line
|
|
498
|
+
.replace(/\u001b\[[0-?]*[ -/]*[@-~]/g, "")
|
|
499
|
+
.replace(/\s+/g, " ")
|
|
500
|
+
.trim();
|
|
501
|
+
}
|
|
299
502
|
}
|
|
300
503
|
//# sourceMappingURL=CLIProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CLIProvider.js","sourceRoot":"","sources":["../../src/providers/CLIProvider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CLIProvider.js","sourceRoot":"","sources":["../../src/providers/CLIProvider.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,0EAA0E;AAC1E,0CAA0C;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,yBAAyB,CAAC;AAmBjC,yEAAyE;AACzE,yEAAyE;AACzE,6DAA6D;AAC7D,MAAM,YAAY,GAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACvD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,SAAS,GAAyC,IAAI,CAAC;IAE3D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;QACnC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,8DAA8D;QAC9D,wEAAwE;QACxE,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;KACvC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAClE,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACpC,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;YAClD,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAClE,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QACD,2EAA2E;QAC3E,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YACpD,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC;QAC5C,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;YACd,QAAQ,GAAG,IAAI,CAAC;YAChB,aAAa,EAAE,CAAC;QAClB,CAAC,EAAE,SAAS,CAAC;QACf,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,SAAS;YAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3B,aAAa,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,IAAyB,EAAE,OAAe,EAAE,EAAE;QACjE,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC/B,cAAc,GAAG,IAAI,CAAC;YACtB,aAAa,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,OAAO,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,OAAO,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7C,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;QAClD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAC1B,aAAa,EAAE,CAAC;QAChB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,YAAY,KAAK,EAAE,CAAC;YACtE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACnC,aAAa,EAAE,CAAC;QAChB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,MAAM,CACX,IAAI,KAAK,CAAC,iBAAiB,IAAI,qBAAqB,SAAS,IAAI,CAAC,CACnE,CAAC;QACJ,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,MAAM,CACX,IAAI,KAAK,CAAC,iBAAiB,IAAI,wBAAwB,SAAS,EAAE,CAAC,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,YAAY,KAAK,EAAE,CAAC;YACtE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,MAAM,CACX,IAAI,KAAK,CACP,iBAAiB,IAAI,iBAAiB,IAAI,WAAW,MAAM,IAAI,MAAM,aAAa,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACzG,CACF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAoBL,MAAM,kBAAkB,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,oDAAoD;AAC5F,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,SAAS;AACtD,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,0FAA0F;AACrH,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,oEAAoE;AAEhG,MAAM,OAAO,WAAW;IACb,EAAE,GAAe,KAAK,CAAC;IACvB,UAAU,CAAS;IAEX,IAAI,CAAwB;IAC5B,IAAI,CAAa;IACjB,GAAG,CAAU;IACb,SAAS,CAAS;IAClB,gBAAgB,CAAS;IACzB,SAAS,CAAS;IAClB,OAAO,CAAS;IAChB,cAAc,CAAS;IAExC,YAAY,IAAwB;QAClC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QACD,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;QACtD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,oEAAoE;QACpE,kDAAkD;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAA4B;QAE5B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO;YAC9B,CAAC,CAAC,aAAa,KAAK,CAAC,OAAO,cAAc,KAAK,CAAC,MAAM,EAAE;YACxD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAEjB,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAEtC,MAAM,QAAQ,GAAG,oBAAoB,CACnC,gBAAgB,GAAG,uBAAuB,EAC1C,IAAI,CAAC,gBAAgB,EACrB,KAAK,CAAC,MAAM,CACb,CAAC;QACF,IAAI,CAAC;YACH,IAAI,SAA4B,CAAC;YACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;gBACzD,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC3C,IAAI,WAAW,IAAI,CAAC;oBAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChD,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE;oBACrE,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,eAAe,EAAE,KAAK,CAAC,eAAe;oBACtC,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,CAAC,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,WAAW,CAAC,4BAA4B,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAClF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE;wBACtD,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,OAAO;wBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;wBAC3D,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,QAAQ,EAAE,cAAc;qBACzB,CAAC,CAAC;oBACD,QAAQ,CAAC,cAAc,EAAE,CAAC;oBAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAgB;wBACrC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,MAAM;wBACpE,CAAC,CAAC,MAAM,CAAC;oBACX,MAAM,gBAAgB,GAAG,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAC9D,WAAW,CAAC,QAAQ,CAAC;wBACnB,GAAG;wBACH,KAAK,EAAE,IAAI,CAAC,UAAU;wBACtB,UAAU;wBACV,WAAW,EAAE,MAAM,CAAC,MAAM;wBAC1B,SAAS,EAAE,IAAI,CAAC,MAAM;wBACtB,OAAO,EAAE,OAAO,GAAG,CAAC;wBACpB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;qBACnD,CAAC,CAAC;oBACH,IAAI,gBAAgB,EAAE,CAAC;wBACrB,SAAS,GAAG,IAAI,KAAK,CACnB,iBAAiB,GAAG,kCAAkC,OAAO,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAClG,CAAC;wBACF,QAAQ,CAAC,cAAc,EAAE,CAAC;wBAC1B,SAAS;oBACX,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;wBACrC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI;wBACjE,CAAC,CAAC,IAAI,CAAC;oBACT,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC3B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAChE,WAAW,CAAC,QAAQ,CAAC;wBACnB,GAAG;wBACH,KAAK,EAAE,IAAI,CAAC,UAAU;wBACtB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;wBAClC,WAAW,EAAE,CAAC;wBACd,SAAS,EAAE,CAAC;wBACZ,OAAO,EAAE,OAAO,GAAG,CAAC;wBACpB,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;qBACvC,CAAC,CAAC;oBACH,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChF,MAAM,SAAS,CAAC;oBAClB,CAAC;oBACD,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC5B,CAAC;wBAAS,CAAC;oBACT,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;YACD,MAAM,CACJ,SAAS;gBACT,IAAI,KAAK,CAAC,iBAAiB,GAAG,kBAAkB,IAAI,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,CAC7E,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,sFAAsF;IACtF,MAAM,CAAC,kBAAkB,CAAC,MAAc;QACtC,OAAO,gGAAgG,CAAC,IAAI,CAC1G,MAAM,CACP,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,GAAW,EACX,UAAiC,EACjC,MAAc,EACd,UAA+J,EAAE;QAEjK,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QAC7B,IAAI,OAA2B,CAAC;QAChC,IAAI,gBAAgB,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QAChF,IAAI,GAAuB,CAAC;QAE5B,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACzF,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1E,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,0BAA0B,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;YAC1H,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7F,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,WAAW,CAAC,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBACpE,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9B,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO;YACL,IAAI;YACJ,GAAG;YACH,gBAAgB;YAChB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,OAAO;oBAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,WAAW,CACxB,GAAW,EACX,IAA2B;QAE3B,OAAO,WAAW,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAA2B;QACtD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;YAAE,OAAO;QACxD,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,KAAK,GAAG;YAAE,OAAO;QAElE,MAAM,OAAO,GAAG,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnD,IACE,IAAI,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YAC3D,OAAO,KAAK,oBAAoB,EAChC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,0JAA0J,CAC3J,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,KASvB;QACC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QAClC,IAAI,CAAC;YACH,EAAE,CAAC,cAAc,CACf,+BAA+B,EAC/B,IAAI,CAAC,SAAS,CAAC;gBACb,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,UAAU;gBAC7B,YAAY,EAAE,KAAK,CAAC,WAAW;gBAC/B,UAAU,EAAE,KAAK,CAAC,SAAS;gBAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/C,CAAC,GAAG,IAAI,CACV,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,IAA2B;QACvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;YAC9B,IAAI;YACJ,WAAW;YACX,oBAAoB;YACpB,IAAI;YACJ,IAAI;YACJ,MAAM;YACN,SAAS;YACT,UAAU;YACV,WAAW;YACX,UAAU;YACV,IAAI;YACJ,SAAS;YACT,kBAAkB;YAClB,IAAI;YACJ,SAAS;YACT,IAAI;YACJ,WAAW;YACX,UAAU;YACV,yBAAyB;YACzB,IAAI;YACJ,WAAW;SACZ,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,KAAK,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC7B,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YACxD,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAClC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,IAA2B;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACvF,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAA2B;QACtD,OAAO,IAAI,CAAC,IAAI,CACd,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CACzE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,IAA2B;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,MAAM,CAAC,aAAa,CAC1B,IAA2B,EAC3B,IAAY;QAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAEO,MAAM,CAAC,yBAAyB,CAAC,GAAW,EAAE,IAAc;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1E,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,GAAG,qBAAqB,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;QAC/E,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,IAA2B;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAChE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAClC,GAAW,EACX,IAA2B;QAE3B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;YACnC,OAAO,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;QACnF,IAAI,YAAY,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,GAAW;QACvC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,GAAW;QAC5C,OAAO,CACL,GAAG,KAAK,OAAO;YACf,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;YACxB,GAAG,KAAK,eAAe;YACvB,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CACjC,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,QAAgB;QAC9C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,4BAA4B,CACzC,UAA+C;QAE/C,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,MAAc,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,UAAU;gBAAE,OAAO;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,aAAa,GAAG,IAAI;gBAAE,OAAO;YACvC,UAAU,GAAG,MAAM,CAAC;YACpB,aAAa,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC;gBACH,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,8DAA8D;YAChE,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,MAAc;QAC5C,MAAM,IAAI,GAAG,MAAM;aAChB,KAAK,CAAC,OAAO,CAAC;aACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;aACrD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACV,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,IAAY;QAC9C,OAAO,IAAI;aACR,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;aACzC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;aACpB,IAAI,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -5,6 +5,18 @@ export interface IProviderExecuteInput {
|
|
|
5
5
|
maxTokens?: number;
|
|
6
6
|
cwd?: string;
|
|
7
7
|
projectDir?: string;
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
/** Optional model override forwarded to model-aware CLIs (currently codex exec via -m). Ignored by providers that pin their own model. */
|
|
10
|
+
model?: string;
|
|
11
|
+
/** Optional Codex reasoning effort, forwarded as `-c model_reasoning_effort=<...>`. Ignored by non-codex providers. */
|
|
12
|
+
reasoningEffort?: "low" | "medium" | "high";
|
|
13
|
+
/** Optional Codex sandbox policy, forwarded as `-s <mode>` (unless a read-only run forces read-only). Ignored by non-codex providers. */
|
|
14
|
+
sandbox?: "read-only" | "workspace-write";
|
|
15
|
+
/** Advisory live progress callback for providers that can stream sub-action status. */
|
|
16
|
+
onProgress?: (update: {
|
|
17
|
+
phase?: string;
|
|
18
|
+
detail?: string;
|
|
19
|
+
}) => void;
|
|
8
20
|
signal?: AbortSignal;
|
|
9
21
|
}
|
|
10
22
|
export interface IProviderExecuteOutput {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { IProvider, IProviderExecuteInput, IProviderExecuteOutput, ProviderId } from "./IProvider.js";
|
|
2
|
+
import type { SpendAuthorization } from "../config/schema.js";
|
|
3
|
+
/** Thrown when a priced call is blocked by spendAuthorization (deny mode or a cap). */
|
|
4
|
+
export declare class SpendLimitError extends Error {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
/** Mutable, registry-scoped accumulator of estimated USD spend for the session. */
|
|
8
|
+
export declare class SpendLedger {
|
|
9
|
+
#private;
|
|
10
|
+
get spentUsd(): number;
|
|
11
|
+
add(usd: number): void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Decorator that enforces spendAuthorization on a priced inner provider.
|
|
15
|
+
* - mode "deny": blocks every call.
|
|
16
|
+
* - maxUsdPerCall: blocks if the worst-case (maxTokens) estimate exceeds the cap.
|
|
17
|
+
* - maxUsdPerSession: blocks if the running ledger + this call's estimate exceeds the cap.
|
|
18
|
+
* After a successful call, the ledger is incremented by the ACTUAL token cost
|
|
19
|
+
* (from the provider's reported usage) when available, else the estimate.
|
|
20
|
+
*/
|
|
21
|
+
export declare class SpendGuardProvider implements IProvider {
|
|
22
|
+
private readonly inner;
|
|
23
|
+
private readonly auth;
|
|
24
|
+
private readonly ledger;
|
|
25
|
+
private readonly defaultMaxTokens?;
|
|
26
|
+
readonly id: ProviderId;
|
|
27
|
+
readonly modelLabel: string;
|
|
28
|
+
constructor(inner: IProvider, auth: SpendAuthorization, ledger: SpendLedger, defaultMaxTokens?: number | undefined);
|
|
29
|
+
healthCheck(): Promise<boolean>;
|
|
30
|
+
execute(input: IProviderExecuteInput): Promise<IProviderExecuteOutput>;
|
|
31
|
+
}
|
|
32
|
+
export declare function isPricedProvider(id: ProviderId): boolean;
|