@mobrienv/autoloop-harness 0.7.4 → 0.9.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/dist/acceptance.d.ts +31 -0
- package/dist/acceptance.js +69 -0
- package/dist/acceptance.js.map +1 -0
- package/dist/ask.d.ts +16 -0
- package/dist/ask.js +47 -0
- package/dist/ask.js.map +1 -0
- package/dist/backend/types.d.ts +16 -0
- package/dist/backend/types.js +17 -0
- package/dist/backend/types.js.map +1 -0
- package/dist/circuit-breaker.d.ts +27 -0
- package/dist/circuit-breaker.js +41 -0
- package/dist/circuit-breaker.js.map +1 -0
- package/dist/completion-lint.d.ts +29 -0
- package/dist/completion-lint.js +51 -0
- package/dist/completion-lint.js.map +1 -0
- package/dist/config-helpers.d.ts +10 -2
- package/dist/config-helpers.js +272 -30
- package/dist/config-helpers.js.map +1 -1
- package/dist/control/acp-adapter.d.ts +12 -0
- package/dist/control/acp-adapter.js +54 -0
- package/dist/control/acp-adapter.js.map +1 -0
- package/dist/control/adapter.d.ts +12 -0
- package/dist/control/adapter.js +2 -0
- package/dist/control/adapter.js.map +1 -0
- package/dist/control/capabilities.d.ts +9 -0
- package/dist/control/capabilities.js +27 -0
- package/dist/control/capabilities.js.map +1 -0
- package/dist/control/claude-sdk-adapter.d.ts +15 -0
- package/dist/control/claude-sdk-adapter.js +79 -0
- package/dist/control/claude-sdk-adapter.js.map +1 -0
- package/dist/control/command-adapter.d.ts +19 -0
- package/dist/control/command-adapter.js +57 -0
- package/dist/control/command-adapter.js.map +1 -0
- package/dist/control/dispatch.d.ts +14 -0
- package/dist/control/dispatch.js +55 -0
- package/dist/control/dispatch.js.map +1 -0
- package/dist/control/index.d.ts +11 -0
- package/dist/control/index.js +9 -0
- package/dist/control/index.js.map +1 -0
- package/dist/control/kiro-adapter.d.ts +2 -0
- package/dist/control/kiro-adapter.js +2 -0
- package/dist/control/kiro-adapter.js.map +1 -0
- package/dist/control/paths.d.ts +19 -0
- package/dist/control/paths.js +40 -0
- package/dist/control/paths.js.map +1 -0
- package/dist/control/pi-adapter.d.ts +15 -0
- package/dist/control/pi-adapter.js +76 -0
- package/dist/control/pi-adapter.js.map +1 -0
- package/dist/control/queue.d.ts +14 -0
- package/dist/control/queue.js +82 -0
- package/dist/control/queue.js.map +1 -0
- package/dist/control/render.d.ts +10 -0
- package/dist/control/render.js +53 -0
- package/dist/control/render.js.map +1 -0
- package/dist/control/types.d.ts +56 -0
- package/dist/control/types.js +9 -0
- package/dist/control/types.js.map +1 -0
- package/dist/display.d.ts +9 -2
- package/dist/display.js +37 -1
- package/dist/display.js.map +1 -1
- package/dist/emit.d.ts +27 -0
- package/dist/emit.js +327 -6
- package/dist/emit.js.map +1 -1
- package/dist/events.d.ts +36 -3
- package/dist/fanout-runner.d.ts +25 -0
- package/dist/fanout-runner.js +54 -0
- package/dist/fanout-runner.js.map +1 -0
- package/dist/file-mod-audit.d.ts +29 -0
- package/dist/file-mod-audit.js +63 -0
- package/dist/file-mod-audit.js.map +1 -0
- package/dist/git-diff.d.ts +19 -0
- package/dist/git-diff.js +74 -0
- package/dist/git-diff.js.map +1 -0
- package/dist/guards.d.ts +37 -0
- package/dist/guards.js +78 -0
- package/dist/guards.js.map +1 -0
- package/dist/hooks.d.ts +78 -0
- package/dist/hooks.js +239 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +15 -2
- package/dist/index.js +359 -26
- package/dist/index.js.map +1 -1
- package/dist/intent.d.ts +45 -0
- package/dist/intent.js +127 -0
- package/dist/intent.js.map +1 -0
- package/dist/iteration-diff.d.ts +32 -0
- package/dist/iteration-diff.js +92 -0
- package/dist/iteration-diff.js.map +1 -0
- package/dist/iteration.d.ts +20 -0
- package/dist/iteration.js +551 -30
- package/dist/iteration.js.map +1 -1
- package/dist/metareview.d.ts +9 -1
- package/dist/metareview.js +158 -34
- package/dist/metareview.js.map +1 -1
- package/dist/notify.d.ts +22 -0
- package/dist/notify.js +110 -0
- package/dist/notify.js.map +1 -0
- package/dist/parallel.d.ts +17 -0
- package/dist/parallel.js +38 -6
- package/dist/parallel.js.map +1 -1
- package/dist/postconditions.d.ts +25 -0
- package/dist/postconditions.js +107 -0
- package/dist/postconditions.js.map +1 -0
- package/dist/postfire-verify.d.ts +31 -0
- package/dist/postfire-verify.js +64 -0
- package/dist/postfire-verify.js.map +1 -0
- package/dist/premature-quit.d.ts +25 -0
- package/dist/premature-quit.js +54 -0
- package/dist/premature-quit.js.map +1 -0
- package/dist/progress.d.ts +20 -0
- package/dist/progress.js +56 -0
- package/dist/progress.js.map +1 -0
- package/dist/prompt.d.ts +4 -0
- package/dist/prompt.js +42 -2
- package/dist/prompt.js.map +1 -1
- package/dist/provisional.d.ts +42 -0
- package/dist/provisional.js +92 -0
- package/dist/provisional.js.map +1 -0
- package/dist/registry-bridge.js +32 -1
- package/dist/registry-bridge.js.map +1 -1
- package/dist/resume.d.ts +61 -0
- package/dist/resume.js +226 -0
- package/dist/resume.js.map +1 -0
- package/dist/scratchpad.js +27 -8
- package/dist/scratchpad.js.map +1 -1
- package/dist/stage.d.ts +21 -0
- package/dist/stage.js +131 -0
- package/dist/stage.js.map +1 -0
- package/dist/stop.d.ts +32 -2
- package/dist/stop.js +169 -0
- package/dist/stop.js.map +1 -1
- package/dist/suspend-state.d.ts +32 -0
- package/dist/suspend-state.js +104 -0
- package/dist/suspend-state.js.map +1 -0
- package/dist/tamper.d.ts +21 -0
- package/dist/tamper.js +88 -0
- package/dist/tamper.js.map +1 -0
- package/dist/types.d.ts +294 -3
- package/dist/types.js +91 -1
- package/dist/types.js.map +1 -1
- package/dist/wave/finalize-wave.d.ts +15 -5
- package/dist/wave/finalize-wave.js +56 -2
- package/dist/wave/finalize-wave.js.map +1 -1
- package/dist/wave/launch-branches.d.ts +23 -2
- package/dist/wave/launch-branches.js +58 -3
- package/dist/wave/launch-branches.js.map +1 -1
- package/dist/wave/stage-branch-runner.d.ts +12 -0
- package/dist/wave/stage-branch-runner.js +130 -0
- package/dist/wave/stage-branch-runner.js.map +1 -0
- package/dist/wave/types.d.ts +40 -2
- package/dist/wave.d.ts +32 -1
- package/dist/wave.js +163 -34
- package/dist/wave.js.map +1 -1
- package/package.json +131 -3
package/dist/index.js
CHANGED
|
@@ -1,25 +1,84 @@
|
|
|
1
1
|
import { existsSync, unlinkSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { normalizeBackendLabel } from "@mobrienv/autoloop-backends";
|
|
4
|
+
import { terminateAcpSession } from "@mobrienv/autoloop-backends/acp-client";
|
|
5
|
+
import { abortClaudeSdkTurn, steerClaudeSdkTurn, terminateClaudeSdkSession, } from "@mobrienv/autoloop-backends/claude-sdk-client";
|
|
6
|
+
import { abortPiTurn, steerPiTurn, terminatePiSession, } from "@mobrienv/autoloop-backends/pi-rpc-client";
|
|
4
7
|
import * as config from "@mobrienv/autoloop-core/config";
|
|
5
|
-
import { readIfExists } from "@mobrienv/autoloop-core/journal";
|
|
8
|
+
import { quarantineJournal, readIfExists, readRunLines, } from "@mobrienv/autoloop-core/journal";
|
|
6
9
|
import { cleanWorktrees, mergeWorktree, readMeta, updateStatus as updateWorktreeStatus, } from "@mobrienv/autoloop-core/worktree";
|
|
7
10
|
import { applyRuntimeModeOverrides, buildLoopContext, ensureLayout, initStore, installRuntimeTools, iterationFieldForRun, reloadLoop, } from "./config-helpers.js";
|
|
8
|
-
import {
|
|
11
|
+
import { acpControlAdapter } from "./control/acp-adapter.js";
|
|
12
|
+
import { claudeSdkControlAdapter } from "./control/claude-sdk-adapter.js";
|
|
13
|
+
import { commandControlAdapter } from "./control/command-adapter.js";
|
|
14
|
+
import { drainControlRequests, publishCapabilities, } from "./control/dispatch.js";
|
|
15
|
+
import { piControlAdapter } from "./control/pi-adapter.js";
|
|
16
|
+
import { log, runCostUsd } from "./display.js";
|
|
9
17
|
import { emit as emitCmd } from "./emit.js";
|
|
18
|
+
import { checkCostBudget, checkRuntimeBudget, detectStall } from "./guards.js";
|
|
19
|
+
import { buildHookEnv, runPhaseHooks } from "./hooks.js";
|
|
20
|
+
import { journalAcceptanceContract } from "./intent.js";
|
|
10
21
|
import { runIteration } from "./iteration.js";
|
|
11
22
|
import { maybeRunMetareview } from "./metareview.js";
|
|
23
|
+
import { runFinishNotification } from "./notify.js";
|
|
12
24
|
import { appendLoopStart, branchStopReason, loadParallelBranchLaunch, parallelBranchBackendOverride, renderBranchResult, seedBranchContext, writeParallelBranchSummary, } from "./parallel.js";
|
|
25
|
+
import { countRearms, detectPrematureQuit, rearmPrematureQuit, } from "./premature-quit.js";
|
|
13
26
|
import { registryStart, registryStop } from "./registry-bridge.js";
|
|
14
|
-
import { completeLoop, stopMaxIterations } from "./stop.js";
|
|
27
|
+
import { completeLoop, stopCostBudget, stopMaxIterations, stopMaxRuntime, stopPrematureQuit, stopReviewUnknown, stopStalled, stopSuspended, } from "./stop.js";
|
|
28
|
+
import { readSuspendState, resumeRequested } from "./suspend-state.js";
|
|
29
|
+
export { STOP_REASONS } from "./types.js";
|
|
15
30
|
export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
16
31
|
let loop = buildLoopContext(projectDir, promptOverride, selfCommand, runOptions);
|
|
17
32
|
loop.onEvent = runOptions.onEvent;
|
|
33
|
+
loop.signal = runOptions.signal;
|
|
18
34
|
loop = initStore(loop);
|
|
19
35
|
ensureLayout(loop.paths.stateDir);
|
|
36
|
+
// Self-heal a journal poisoned by a prior crash (torn last record) before we
|
|
37
|
+
// append to it — quarantine corrupt lines so they cannot wedge this run.
|
|
38
|
+
try {
|
|
39
|
+
quarantineJournal(loop.paths.journalFile);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
/* best-effort: readLines already skips corrupt lines, so this is belt-and-suspenders */
|
|
43
|
+
}
|
|
20
44
|
installRuntimeTools(loop);
|
|
45
|
+
// A durable suspend from a prior run still pending (no resume-requested
|
|
46
|
+
// signal dropped yet) must block a fresh `run` from starting over the same
|
|
47
|
+
// state dir — the operator needs to resolve it first via `autoloop resume`
|
|
48
|
+
// or `autoloop hooks clear-suspend`.
|
|
49
|
+
const pendingSuspend = readSuspendState(loop.paths.stateDir);
|
|
50
|
+
if (pendingSuspend && !resumeRequested(loop.paths.stateDir)) {
|
|
51
|
+
throw new Error(`run suspended (phase=${pendingSuspend.phase}, reason=${pendingSuspend.reason}); ` +
|
|
52
|
+
"resolve with `autoloop resume` or clear it with `autoloop hooks clear-suspend` before starting a new run");
|
|
53
|
+
}
|
|
21
54
|
appendLoopStart(loop);
|
|
55
|
+
// Bind the acceptance contract (intent) at loop start so the deterministic
|
|
56
|
+
// gate keys its criteria off what was asked.
|
|
57
|
+
journalAcceptanceContract(loop);
|
|
58
|
+
const preRunResult = await runPhaseHooks(loop, "pre_run", buildHookEnv(loop));
|
|
59
|
+
if (preRunResult.blocked) {
|
|
60
|
+
throw new Error(`Aborting run: ${preRunResult.blockedMessage ?? "pre_run hook blocked"}`);
|
|
61
|
+
}
|
|
62
|
+
if (preRunResult.suspended) {
|
|
63
|
+
const summary = stopSuspended(loop, 0, preRunResult.blockedMessage ?? "pre_run hook suspended the run");
|
|
64
|
+
return summary;
|
|
65
|
+
}
|
|
22
66
|
registryStart(loop);
|
|
67
|
+
loop.controlAdapter = buildControlAdapter(loop);
|
|
68
|
+
if (loop.controlAdapter) {
|
|
69
|
+
publishCapabilities(loop.paths.stateDir, loop.controlAdapter);
|
|
70
|
+
}
|
|
71
|
+
return driveLoop(loop, runOptions, 1);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Drive the iteration loop for an already-built, already-registered
|
|
75
|
+
* LoopContext, starting at `startIteration`. Owns abort/teardown wiring,
|
|
76
|
+
* the tracked-iterate recursion, session cleanup, post-run worktree
|
|
77
|
+
* lifecycle, and finish notifications. Shared by `run()` and `resume()` so
|
|
78
|
+
* both paths exercise identical signal handlers, stop handlers, and
|
|
79
|
+
* registry/journal behavior.
|
|
80
|
+
*/
|
|
81
|
+
export async function driveLoop(loop, runOptions, startIteration) {
|
|
23
82
|
// Track current iteration for abort handler (must be mutable)
|
|
24
83
|
let currentIteration = 0;
|
|
25
84
|
let aborted = false;
|
|
@@ -27,15 +86,39 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
27
86
|
if (aborted)
|
|
28
87
|
return;
|
|
29
88
|
aborted = true;
|
|
30
|
-
// Fire-and-forget
|
|
89
|
+
// Fire-and-forget session termination — abort handlers must stay sync.
|
|
31
90
|
// The finally block below awaits a final terminate as backstop.
|
|
32
|
-
if (loop.
|
|
33
|
-
const session = loop.
|
|
34
|
-
loop.
|
|
91
|
+
if (loop.acpSession.current) {
|
|
92
|
+
const session = loop.acpSession.current;
|
|
93
|
+
loop.acpSession.current = undefined;
|
|
35
94
|
terminateAcpSession(session).catch(() => {
|
|
36
95
|
/* best-effort */
|
|
37
96
|
});
|
|
38
97
|
}
|
|
98
|
+
if (loop.piSession.current) {
|
|
99
|
+
const session = loop.piSession.current;
|
|
100
|
+
loop.piSession.current = undefined;
|
|
101
|
+
terminatePiSession(session).catch(() => {
|
|
102
|
+
/* best-effort */
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (loop.claudeSdkSession.current) {
|
|
106
|
+
const session = loop.claudeSdkSession.current;
|
|
107
|
+
loop.claudeSdkSession.current = undefined;
|
|
108
|
+
terminateClaudeSdkSession(session).catch(() => {
|
|
109
|
+
/* best-effort */
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
if (loop.commandSession.current) {
|
|
113
|
+
const session = loop.commandSession.current;
|
|
114
|
+
loop.commandSession.current = undefined;
|
|
115
|
+
try {
|
|
116
|
+
process.kill(session.pid, "SIGTERM");
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
/* best-effort */
|
|
120
|
+
}
|
|
121
|
+
}
|
|
39
122
|
try {
|
|
40
123
|
registryStop(loop, currentIteration, "interrupted");
|
|
41
124
|
}
|
|
@@ -70,20 +153,30 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
70
153
|
runOptions.signal?.addEventListener("abort", onAbort);
|
|
71
154
|
if (runOptions.signal?.aborted)
|
|
72
155
|
teardown();
|
|
156
|
+
const onSigusr1 = () => {
|
|
157
|
+
if (!loop.controlAdapter)
|
|
158
|
+
return;
|
|
159
|
+
try {
|
|
160
|
+
drainControlRequests(loop.paths.stateDir, loop.controlAdapter);
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
/* best-effort */
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
process.on("SIGUSR1", onSigusr1);
|
|
73
167
|
log(loop, "info", `loop start run_id=${loop.runtime.runId} max_iterations=${loop.limits.maxIterations}`);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
168
|
+
loop.onEvent?.({
|
|
169
|
+
type: "loop.start",
|
|
170
|
+
runId: loop.runtime.runId,
|
|
171
|
+
prompt: loop.objective,
|
|
172
|
+
workDir: loop.paths.workDir,
|
|
173
|
+
projectDir: loop.paths.projectDir,
|
|
174
|
+
preset: loop.launch.preset,
|
|
175
|
+
backend: normalizeBackendLabel(loop.backend.command),
|
|
176
|
+
maxIterations: loop.limits.maxIterations,
|
|
177
|
+
completionEvent: loop.completion.event,
|
|
178
|
+
completionPromise: loop.completion.promise,
|
|
179
|
+
});
|
|
87
180
|
let summary;
|
|
88
181
|
const trackedIterate = async (ctx, iter) => {
|
|
89
182
|
if (aborted)
|
|
@@ -92,6 +185,9 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
92
185
|
stopReason: "interrupted",
|
|
93
186
|
runId: ctx.runtime.runId,
|
|
94
187
|
};
|
|
188
|
+
if (iter > ctx.limits.maxIterations) {
|
|
189
|
+
return stopMaxIterations(ctx, iter);
|
|
190
|
+
}
|
|
95
191
|
currentIteration = iter;
|
|
96
192
|
ctx.onEvent?.({
|
|
97
193
|
type: "iteration.start",
|
|
@@ -102,16 +198,59 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
102
198
|
return iterateWith(ctx, iter, trackedIterate);
|
|
103
199
|
};
|
|
104
200
|
try {
|
|
105
|
-
summary = await trackedIterate(loop,
|
|
201
|
+
summary = await trackedIterate(loop, startIteration);
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
// An unexpected throw (e.g. init/store failure outside per-iteration error
|
|
205
|
+
// handling) must still produce a terminal event so an external --events
|
|
206
|
+
// consumer always learns the run ended, instead of waiting forever for a
|
|
207
|
+
// loop.finish. Data already written is flushed (synchronous appends); we
|
|
208
|
+
// emit the terminal marker and re-raise.
|
|
209
|
+
loop.onEvent?.({
|
|
210
|
+
type: "loop.finish",
|
|
211
|
+
iterations: currentIteration > 0 ? currentIteration - 1 : 0,
|
|
212
|
+
stopReason: "error",
|
|
213
|
+
runId: loop.runtime.runId,
|
|
214
|
+
costUsd: runCostUsd(loop),
|
|
215
|
+
});
|
|
216
|
+
throw err;
|
|
106
217
|
}
|
|
107
218
|
finally {
|
|
108
|
-
if (loop.
|
|
219
|
+
if (loop.acpSession.current) {
|
|
220
|
+
try {
|
|
221
|
+
await terminateAcpSession(loop.acpSession.current);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
/* best-effort */
|
|
225
|
+
}
|
|
226
|
+
loop.acpSession.current = undefined;
|
|
227
|
+
}
|
|
228
|
+
if (loop.piSession.current) {
|
|
229
|
+
try {
|
|
230
|
+
await terminatePiSession(loop.piSession.current);
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
/* best-effort */
|
|
234
|
+
}
|
|
235
|
+
loop.piSession.current = undefined;
|
|
236
|
+
}
|
|
237
|
+
if (loop.claudeSdkSession.current) {
|
|
238
|
+
try {
|
|
239
|
+
await terminateClaudeSdkSession(loop.claudeSdkSession.current);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
/* best-effort */
|
|
243
|
+
}
|
|
244
|
+
loop.claudeSdkSession.current = undefined;
|
|
245
|
+
}
|
|
246
|
+
if (loop.commandSession.current) {
|
|
109
247
|
try {
|
|
110
|
-
|
|
248
|
+
process.kill(loop.commandSession.current.pid, "SIGTERM");
|
|
111
249
|
}
|
|
112
250
|
catch {
|
|
113
251
|
/* best-effort */
|
|
114
252
|
}
|
|
253
|
+
loop.commandSession.current = undefined;
|
|
115
254
|
}
|
|
116
255
|
runOptions.signal?.removeEventListener("abort", onAbort);
|
|
117
256
|
}
|
|
@@ -173,11 +312,25 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
173
312
|
}
|
|
174
313
|
}
|
|
175
314
|
}
|
|
315
|
+
const postRunResult = await runPhaseHooks(loop, "post_run", buildHookEnv(loop, { stopReason: summary.stopReason }));
|
|
316
|
+
if (postRunResult.blocked) {
|
|
317
|
+
throw new Error(`post_run hook failed: ${postRunResult.blockedMessage ?? "post_run hook blocked"}`);
|
|
318
|
+
}
|
|
319
|
+
runFinishNotification({
|
|
320
|
+
projectDir: loop.paths.mainProjectDir,
|
|
321
|
+
journalFile: loop.paths.journalFile,
|
|
322
|
+
runId: loop.runtime.runId,
|
|
323
|
+
preset: loop.launch.preset,
|
|
324
|
+
stopReason: summary.stopReason,
|
|
325
|
+
iterations: summary.iterations,
|
|
326
|
+
});
|
|
327
|
+
const costUsd = runCostUsd(loop);
|
|
176
328
|
loop.onEvent?.({
|
|
177
329
|
type: "summary",
|
|
178
330
|
runId: loop.runtime.runId,
|
|
179
331
|
iterations: summary.iterations,
|
|
180
332
|
stopReason: summary.stopReason,
|
|
333
|
+
costUsd,
|
|
181
334
|
journalFile: loop.paths.journalFile,
|
|
182
335
|
memoryFile: loop.paths.memoryFile,
|
|
183
336
|
reviewEvery: loop.review.every,
|
|
@@ -188,9 +341,11 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
188
341
|
iterations: summary.iterations,
|
|
189
342
|
stopReason: summary.stopReason,
|
|
190
343
|
runId: loop.runtime.runId,
|
|
344
|
+
costUsd,
|
|
191
345
|
});
|
|
192
346
|
return { ...summary, runId: loop.runtime.runId };
|
|
193
347
|
}
|
|
348
|
+
export { buildResumeContext, determineResumeIteration, resume, } from "./resume.js";
|
|
194
349
|
export { emitCmd as emit };
|
|
195
350
|
export async function runParallelBranchCli(projectDir, branchDir, selfCommand, onEvent) {
|
|
196
351
|
const launch = loadParallelBranchLaunch(branchDir);
|
|
@@ -212,9 +367,54 @@ export async function runParallelBranchCli(projectDir, branchDir, selfCommand, o
|
|
|
212
367
|
installRuntimeTools(branchLoop);
|
|
213
368
|
appendLoopStart(branchLoop);
|
|
214
369
|
registryStart(branchLoop);
|
|
370
|
+
branchLoop.controlAdapter = buildControlAdapter(branchLoop);
|
|
371
|
+
if (branchLoop.controlAdapter) {
|
|
372
|
+
publishCapabilities(branchLoop.paths.stateDir, branchLoop.controlAdapter);
|
|
373
|
+
}
|
|
215
374
|
const seeded = seedBranchContext(branchLoop, routingEvent);
|
|
216
375
|
const startMs = Date.now();
|
|
217
|
-
|
|
376
|
+
let summary;
|
|
377
|
+
try {
|
|
378
|
+
summary = await iterate(seeded, 1);
|
|
379
|
+
}
|
|
380
|
+
finally {
|
|
381
|
+
if (seeded.acpSession.current) {
|
|
382
|
+
try {
|
|
383
|
+
await terminateAcpSession(seeded.acpSession.current);
|
|
384
|
+
}
|
|
385
|
+
catch {
|
|
386
|
+
/* best-effort */
|
|
387
|
+
}
|
|
388
|
+
seeded.acpSession.current = undefined;
|
|
389
|
+
}
|
|
390
|
+
if (seeded.piSession.current) {
|
|
391
|
+
try {
|
|
392
|
+
await terminatePiSession(seeded.piSession.current);
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
/* best-effort */
|
|
396
|
+
}
|
|
397
|
+
seeded.piSession.current = undefined;
|
|
398
|
+
}
|
|
399
|
+
if (seeded.claudeSdkSession.current) {
|
|
400
|
+
try {
|
|
401
|
+
await terminateClaudeSdkSession(seeded.claudeSdkSession.current);
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
/* best-effort */
|
|
405
|
+
}
|
|
406
|
+
seeded.claudeSdkSession.current = undefined;
|
|
407
|
+
}
|
|
408
|
+
if (seeded.commandSession.current) {
|
|
409
|
+
try {
|
|
410
|
+
process.kill(seeded.commandSession.current.pid, "SIGTERM");
|
|
411
|
+
}
|
|
412
|
+
catch {
|
|
413
|
+
/* best-effort */
|
|
414
|
+
}
|
|
415
|
+
seeded.commandSession.current = undefined;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
218
418
|
const finishedMs = Date.now();
|
|
219
419
|
const elapsedMs = finishedMs - startMs;
|
|
220
420
|
const output = iterationFieldForRun(seeded.paths.journalFile, seeded.runtime.runId, "1", "iteration.finish", "output");
|
|
@@ -237,14 +437,30 @@ export async function runParallelBranchCli(projectDir, branchDir, selfCommand, o
|
|
|
237
437
|
// --- Private implementation ---
|
|
238
438
|
function iterateWith(loop, iteration, recurse) {
|
|
239
439
|
const liveLoop = reloadLoop(loop);
|
|
240
|
-
liveLoop.
|
|
440
|
+
liveLoop.controlAdapter = loop.controlAdapter;
|
|
241
441
|
installRuntimeTools(liveLoop);
|
|
242
442
|
return runReviewThenIterate(liveLoop, iteration, recurse);
|
|
243
443
|
}
|
|
244
444
|
async function runReviewThenIterate(liveLoop, iteration, recurse) {
|
|
445
|
+
if (liveLoop.controlAdapter) {
|
|
446
|
+
try {
|
|
447
|
+
drainControlRequests(liveLoop.paths.stateDir, liveLoop.controlAdapter);
|
|
448
|
+
}
|
|
449
|
+
catch {
|
|
450
|
+
/* control drain is best-effort; next pass will retry */
|
|
451
|
+
}
|
|
452
|
+
}
|
|
245
453
|
const reviewed = await maybeRunMetareview(liveLoop, iteration);
|
|
246
454
|
const verdict = reviewed.lastVerdict;
|
|
247
455
|
if (verdict) {
|
|
456
|
+
// Fail-closed: an UNKNOWN verdict carries no trustworthy signal. Never let
|
|
457
|
+
// it advance the loop like CONTINUE — route it by on_error.
|
|
458
|
+
if (verdict.verdict === "UNKNOWN" &&
|
|
459
|
+
reviewed.review.onError !== "continue") {
|
|
460
|
+
if (reviewed.review.onError === "exit")
|
|
461
|
+
return completeLoop(reviewed, iteration, "verdict_unknown");
|
|
462
|
+
return stopReviewUnknown(reviewed, iteration, verdict.reasoning);
|
|
463
|
+
}
|
|
248
464
|
if (verdict.verdict === "EXIT")
|
|
249
465
|
return completeLoop(reviewed, iteration, "verdict_exit");
|
|
250
466
|
if (verdict.verdict === "TAKEOVER")
|
|
@@ -264,9 +480,126 @@ async function runReviewThenIterate(liveLoop, iteration, recurse) {
|
|
|
264
480
|
if (iteration > reviewed.limits.maxIterations) {
|
|
265
481
|
return stopMaxIterations(reviewed, iteration);
|
|
266
482
|
}
|
|
483
|
+
// Guard checks between iterations: both are journal-derived so they cover
|
|
484
|
+
// every continue path (routed, rejected, plain) without in-memory state.
|
|
485
|
+
if (iteration > 1) {
|
|
486
|
+
const runLines = readRunLines(reviewed.paths.journalFile, reviewed.runtime.runId);
|
|
487
|
+
const stall = detectStall(runLines, reviewed.limits.stallIterations ?? 0);
|
|
488
|
+
if (stall.stalled) {
|
|
489
|
+
// A stall with authorized work remaining and no blocker is a premature
|
|
490
|
+
// quit (announce-then-halt / drift-stop), not a legitimate stop. Re-arm
|
|
491
|
+
// it (bounded) with a nudge, then escalate to attention if it persists.
|
|
492
|
+
const pq = detectPrematureQuit(reviewed, runLines);
|
|
493
|
+
if (pq.premature) {
|
|
494
|
+
if (countRearms(runLines) < (reviewed.limits.prematureMaxRearms ?? 1)) {
|
|
495
|
+
rearmPrematureQuit(reviewed, iteration - 1, pq);
|
|
496
|
+
return runIteration(reviewed, iteration, recurse);
|
|
497
|
+
}
|
|
498
|
+
return stopPrematureQuit(reviewed, iteration - 1, pq.reasons);
|
|
499
|
+
}
|
|
500
|
+
return stopStalled(reviewed, iteration - 1, stall.repeats);
|
|
501
|
+
}
|
|
502
|
+
const budget = checkCostBudget(runLines, reviewed.limits.maxCostUsd ?? 0);
|
|
503
|
+
if (budget.exceeded) {
|
|
504
|
+
return stopCostBudget(reviewed, iteration - 1, budget.costUsd, reviewed.limits.maxCostUsd ?? 0);
|
|
505
|
+
}
|
|
506
|
+
const runtime = checkRuntimeBudget(runLines, reviewed.limits.maxRuntimeMs ?? 0);
|
|
507
|
+
if (runtime.exceeded) {
|
|
508
|
+
return stopMaxRuntime(reviewed, iteration - 1, runtime.elapsedMs, reviewed.limits.maxRuntimeMs ?? 0);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
267
511
|
return runIteration(reviewed, iteration, recurse);
|
|
268
512
|
}
|
|
269
513
|
function iterate(loop, iteration) {
|
|
270
514
|
return iterateWith(loop, iteration, iterate);
|
|
271
515
|
}
|
|
516
|
+
export function buildControlAdapter(loop) {
|
|
517
|
+
if (loop.backend.kind === "acp") {
|
|
518
|
+
return acpControlAdapter(loop.runtime.runId, loop.backend.provider, {
|
|
519
|
+
triggerInterrupt: () => {
|
|
520
|
+
if (loop.acpSession.current?.process.pid) {
|
|
521
|
+
try {
|
|
522
|
+
process.kill(-loop.acpSession.current.process.pid, "SIGINT");
|
|
523
|
+
}
|
|
524
|
+
catch {
|
|
525
|
+
/* best-effort */
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
},
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
if (loop.backend.kind === "pi") {
|
|
532
|
+
return piControlAdapter(loop.runtime.runId, {
|
|
533
|
+
triggerInterrupt: () => {
|
|
534
|
+
if (loop.piSession.current) {
|
|
535
|
+
abortPiTurn(loop.piSession.current);
|
|
536
|
+
}
|
|
537
|
+
},
|
|
538
|
+
triggerSteer: (message) => {
|
|
539
|
+
if (loop.piSession.current) {
|
|
540
|
+
steerPiTurn(loop.piSession.current, message);
|
|
541
|
+
}
|
|
542
|
+
},
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
if (loop.backend.kind === "claude-sdk") {
|
|
546
|
+
return claudeSdkControlAdapter(loop.runtime.runId, {
|
|
547
|
+
triggerInterrupt: () => {
|
|
548
|
+
if (loop.claudeSdkSession.current) {
|
|
549
|
+
abortClaudeSdkTurn(loop.claudeSdkSession.current);
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
triggerSteer: (message) => {
|
|
553
|
+
if (loop.claudeSdkSession.current) {
|
|
554
|
+
steerClaudeSdkTurn(loop.claudeSdkSession.current, message);
|
|
555
|
+
}
|
|
556
|
+
},
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
if (loop.backend.kind === "command") {
|
|
560
|
+
return commandControlAdapter(loop.runtime.runId, {
|
|
561
|
+
triggerInterrupt: () => escalateCommandInterrupt(loop),
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
return undefined;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* SIGUSR1 → grace period → SIGTERM → grace period → SIGKILL against the
|
|
568
|
+
* in-flight `command` iteration's child. Non-blocking (setTimeout-driven) so
|
|
569
|
+
* it never stalls the harness's own control-drain or iteration loop. No-op if
|
|
570
|
+
* no `command` iteration is currently running, or if the process has already
|
|
571
|
+
* exited (each `kill` call below is best-effort and independently guarded).
|
|
572
|
+
*/
|
|
573
|
+
function escalateCommandInterrupt(loop, graceMs = 5000) {
|
|
574
|
+
const session = loop.commandSession.current;
|
|
575
|
+
if (!session?.pid)
|
|
576
|
+
return;
|
|
577
|
+
const stillRunning = () => loop.commandSession.current?.pid === session.pid;
|
|
578
|
+
try {
|
|
579
|
+
process.kill(session.pid, "SIGUSR1");
|
|
580
|
+
}
|
|
581
|
+
catch {
|
|
582
|
+
return; // already exited
|
|
583
|
+
}
|
|
584
|
+
setTimeout(() => {
|
|
585
|
+
if (!stillRunning())
|
|
586
|
+
return;
|
|
587
|
+
try {
|
|
588
|
+
process.kill(session.pid, "SIGTERM");
|
|
589
|
+
}
|
|
590
|
+
catch {
|
|
591
|
+
/* already exited */
|
|
592
|
+
}
|
|
593
|
+
setTimeout(() => {
|
|
594
|
+
if (!stillRunning())
|
|
595
|
+
return;
|
|
596
|
+
try {
|
|
597
|
+
process.kill(session.pid, "SIGKILL");
|
|
598
|
+
}
|
|
599
|
+
catch {
|
|
600
|
+
/* already exited */
|
|
601
|
+
}
|
|
602
|
+
}, graceMs);
|
|
603
|
+
}, graceMs);
|
|
604
|
+
}
|
|
272
605
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,GACnB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,QAAQ,EACR,YAAY,IAAI,oBAAoB,GACrC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,6BAA6B,EAC7B,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQvE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,UAAkB,EAClB,cAA6B,EAC7B,WAAmB,EACnB,UAAsB;IAEtB,IAAI,IAAI,GAAG,gBAAgB,CACzB,UAAU,EACV,cAAc,EACd,WAAW,EACX,UAAU,CACX,CAAC;IACF,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAClC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAChC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,6EAA6E;IAC7E,yEAAyE;IACzE,IAAI,CAAC;QACH,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,wFAAwF;IAC1F,CAAC;IACD,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE1B,wEAAwE;IACxE,2EAA2E;IAC3E,2EAA2E;IAC3E,qCAAqC;IACrC,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAI,cAAc,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,wBAAwB,cAAc,CAAC,KAAK,YAAY,cAAc,CAAC,MAAM,KAAK;YAChF,0GAA0G,CAC7G,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,2EAA2E;IAC3E,6CAA6C;IAC7C,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,iBAAiB,YAAY,CAAC,cAAc,IAAI,sBAAsB,EAAE,CACzE,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,aAAa,CAC3B,IAAI,EACJ,CAAC,EACD,YAAY,CAAC,cAAc,IAAI,gCAAgC,CAChE,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAiB,EACjB,UAAsB,EACtB,cAAsB;IAEtB,8DAA8D;IAC9D,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,uEAAuE;QACvE,gEAAgE;QAChE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;YACpC,mBAAmB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtC,iBAAiB;YACnB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACrC,iBAAiB;YACnB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC;YAC1C,yBAAyB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC5C,iBAAiB;YACnB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;QACD,2DAA2D;QAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;QACH,CAAC;QACD,2DAA2D;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,UAAU,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,qEAAqE;IACrE,sEAAsE;IACtE,oEAAoE;IACpE,wEAAwE;IACxE,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACjC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO;QAAE,QAAQ,EAAE,CAAC;IAE3C,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QACjC,IAAI,CAAC;YACH,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEjC,GAAG,CACD,IAAI,EACJ,MAAM,EACN,qBAAqB,IAAI,CAAC,OAAO,CAAC,KAAK,mBAAmB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CACtF,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;QACzB,MAAM,EAAE,IAAI,CAAC,SAAS;QACtB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;QAC3B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;QACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;QAC1B,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACpD,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;QACxC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;QACtC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;KAC3C,CAAC,CAAC;IAEH,IAAI,OAAmB,CAAC;IACxB,MAAM,cAAc,GAAG,KAAK,EAC1B,GAAgB,EAChB,IAAY,EACS,EAAE;QACvB,IAAI,OAAO;YACT,OAAO;gBACL,UAAU,EAAE,IAAI,GAAG,CAAC;gBACpB,UAAU,EAAE,aAAa;gBACzB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK;aACzB,CAAC;QACJ,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACpC,OAAO,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,gBAAgB,GAAG,IAAI,CAAC;QACxB,GAAG,CAAC,OAAO,EAAE,CAAC;YACZ,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;YACvC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK;SACzB,CAAC,CAAC;QACH,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,2EAA2E;QAC3E,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,yCAAyC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,UAAU,EAAE,OAAO;YACnB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC;QACH,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;QACtC,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACjE,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1C,CAAC;QACD,UAAU,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,iEAAiE;IACjE,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,KAAK,WAAW,CAAC;QACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpD,IAAI,CAAC;YACH,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,KAAK,CAAC;QACtD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;QAExE,4CAA4C;QAC5C,wFAAwF;QACxF,IACE,SAAS;YACT,SAAS;YACT,CAAC,YAAY;YACb,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,EAC/B,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAClD,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,QAAQ,CAGrC,CAAC;gBACb,IAAI,CAAC;oBACH,aAAa,CAAC;wBACZ,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;wBACnC,QAAQ;wBACR,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;qBAC5B,CAAC,CAAC;oBACH,GAAG,CACD,IAAI,EACJ,MAAM,EACN,oBAAoB,QAAQ,aAAa,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAC9D,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,0BAA0B,GAAG,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,WAAW,GACf,aAAa,KAAK,QAAQ;gBAC1B,CAAC,aAAa,KAAK,YAAY,IAAI,SAAS,CAAC,CAAC;YAChD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,cAAc,CAAC;wBACb,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;wBACrC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;wBACzB,KAAK,EAAE,aAAa,KAAK,QAAQ;wBACjC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;qBAC5B,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,4BAA4B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACtE,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,4BAA4B,GAAG,EAAE,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,aAAa,CACvC,IAAI,EACJ,UAAU,EACV,YAAY,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CACvD,CAAC;IACF,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,yBAAyB,aAAa,CAAC,cAAc,IAAI,uBAAuB,EAAE,CACnF,CAAC;IACJ,CAAC;IACD,qBAAqB,CAAC;QACpB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;QACrC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;QACnC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;QACzB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO;QACP,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;QACnC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;QACjC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;QAC9B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;KAC9B,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;QACzB,OAAO;KACR,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACnD,CAAC;AAED,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EAGxB,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,SAAiB,EACjB,WAAmB,EACnB,OAA0D;IAE1D,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC;IACzD,MAAM,eAAe,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC5C,IAAI,UAAU,GAAG,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE;QACvE,OAAO,EAAE,SAAS;QAClB,eAAe;QACf,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IACH,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7B,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IACrC,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACnD,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAChC,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5B,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1B,UAAU,CAAC,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;QAC9B,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,OAAmB,CAAC;IACxB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;QACxC,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;QACvC,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,yBAAyB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC9C,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,SAAS,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACvC,MAAM,MAAM,GAAG,oBAAoB,CACjC,MAAM,CAAC,KAAK,CAAC,WAAW,EACxB,MAAM,CAAC,OAAO,CAAC,KAAK,EACpB,GAAG,EACH,kBAAkB,EAClB,QAAQ,CACT,CAAC;IACF,MAAM,UAAU,GAAG,gBAAgB,CACjC,OAAO,CAAC,UAAU,EAClB,SAAS,EACT,MAAM,CAAC,QAAQ,CAAC,eAAe,CAChC,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,UAAU;QACvB,MAAM;QACN,aAAa,EAAE,YAAY;QAC3B,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,UAAU;KAC3B,CAAC;IAEF,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,iCAAiC;AAEjC,SAAS,WAAW,CAClB,IAAiB,EACjB,SAAiB,EACjB,OAAsE;IAEtE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC9C,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,QAAqB,EACrB,SAAiB,EACjB,OAAsE;IAEtE,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC;IAErC,IAAI,OAAO,EAAE,CAAC;QACZ,2EAA2E;QAC3E,4DAA4D;QAC5D,IACE,OAAO,CAAC,OAAO,KAAK,SAAS;YAC7B,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EACtC,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM;gBACpC,OAAO,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC9D,OAAO,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM;YAC5B,OAAO,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU;YAChC,OAAO,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAClE,MAAM,eAAe,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,eAAe,EAAE,CAAC;gBACpB,QAAQ,CAAC,SAAS;oBAChB,0GAA0G;wBAC1G,eAAe;wBACf,MAAM;wBACN,QAAQ,CAAC,SAAS,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC9C,OAAO,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IACD,0EAA0E;IAC1E,yEAAyE;IACzE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,YAAY,CAC3B,QAAQ,CAAC,KAAK,CAAC,WAAW,EAC1B,QAAQ,CAAC,OAAO,CAAC,KAAK,CACvB,CAAC;QACF,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,uEAAuE;YACvE,wEAAwE;YACxE,wEAAwE;YACxE,MAAM,EAAE,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnD,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC,EAAE,CAAC;oBACtE,kBAAkB,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;oBAChD,OAAO,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACpD,CAAC;gBACD,OAAO,iBAAiB,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,WAAW,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,cAAc,CACnB,QAAQ,EACR,SAAS,GAAG,CAAC,EACb,MAAM,CAAC,OAAO,EACd,QAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAChC,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,kBAAkB,CAChC,QAAQ,EACR,QAAQ,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAClC,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,cAAc,CACnB,QAAQ,EACR,SAAS,GAAG,CAAC,EACb,OAAO,CAAC,SAAS,EACjB,QAAQ,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAClC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,OAAO,CAAC,IAAiB,EAAE,SAAiB;IACnD,OAAO,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAiB;IAEjB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAChC,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAClE,gBAAgB,EAAE,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;oBACzC,IAAI,CAAC;wBACH,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBAC/D,CAAC;oBAAC,MAAM,CAAC;wBACP,iBAAiB;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAC1C,gBAAgB,EAAE,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC3B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YACD,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;gBACxB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC3B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACvC,OAAO,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACjD,gBAAgB,EAAE,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAClC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;gBACxB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAClC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAC/C,gBAAgB,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC;SACvD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,IAAiB,EAAE,OAAO,GAAG,IAAI;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,GAAG;QAAE,OAAO;IAC1B,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;IAC5E,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,iBAAiB;IAC3B,CAAC;IACD,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO;QAC5B,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;QACD,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,EAAE;gBAAE,OAAO;YAC5B,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB;YACtB,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC"}
|
package/dist/intent.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { LoopContext } from "./types.js";
|
|
2
|
+
export interface AcceptanceCriterion {
|
|
3
|
+
/** The stated criterion text (intent). */
|
|
4
|
+
text: string;
|
|
5
|
+
/** Optional deterministic shell check bound to the criterion. */
|
|
6
|
+
check?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IntentResult {
|
|
9
|
+
/** True when at least one checkable criterion was evaluated. */
|
|
10
|
+
ran: boolean;
|
|
11
|
+
/** True when every checkable criterion passed. */
|
|
12
|
+
passed: boolean;
|
|
13
|
+
failures: Array<{
|
|
14
|
+
text: string;
|
|
15
|
+
check: string;
|
|
16
|
+
exitCode: number;
|
|
17
|
+
tail: string;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
/** Parse one criterion line into text + optional bound check. */
|
|
21
|
+
export declare function parseCriterion(line: string): AcceptanceCriterion;
|
|
22
|
+
/**
|
|
23
|
+
* Extract acceptance criteria from an objective's "Acceptance criteria" (or
|
|
24
|
+
* "Acceptance Criteria") section: the bullet/numbered lines following the
|
|
25
|
+
* heading, up to the next blank line or heading. Returns [] when absent.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseObjectiveCriteria(objective: string): string[];
|
|
28
|
+
/**
|
|
29
|
+
* Capture the intent-binding contract at loop start: config criteria first,
|
|
30
|
+
* then any parsed from the objective (deduped by text). This is the bound
|
|
31
|
+
* record of "what was asked" the deterministic gate keys off.
|
|
32
|
+
*/
|
|
33
|
+
export declare function captureAcceptanceContract(loop: LoopContext): AcceptanceCriterion[];
|
|
34
|
+
/** Journal the bound acceptance contract once at loop start (audit/durability). */
|
|
35
|
+
export declare function journalAcceptanceContract(loop: LoopContext): void;
|
|
36
|
+
/**
|
|
37
|
+
* Evaluate the intent-binding criteria at the acceptance gate. Criteria that
|
|
38
|
+
* bind a deterministic check (`text :: cmd`) are run HARNESS-side in the work
|
|
39
|
+
* dir; a non-zero exit fails acceptance so a run that passes its tests but does
|
|
40
|
+
* not satisfy the stated intent is still rejected. Criteria without a check are
|
|
41
|
+
* advisory (recorded in the contract, not a hard blocker).
|
|
42
|
+
*/
|
|
43
|
+
export declare function runIntentCriteria(loop: LoopContext, iteration: number): IntentResult;
|
|
44
|
+
/** Re-inject failed intent criteria as operator guidance. */
|
|
45
|
+
export declare function reinjectIntentFailure(loop: LoopContext, iteration: number, result: IntentResult): void;
|