@mobrienv/autoloop-harness 0.8.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +3 -0
- package/dist/backend/types.js +3 -0
- package/dist/backend/types.js.map +1 -1
- 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.js +141 -8
- package/dist/config-helpers.js.map +1 -1
- 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.js +14 -0
- package/dist/control/dispatch.js.map +1 -1
- package/dist/control/types.d.ts +11 -2
- 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 +321 -2
- 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/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 +181 -5
- 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 +383 -16
- package/dist/iteration.js.map +1 -1
- package/dist/metareview.d.ts +9 -1
- package/dist/metareview.js +68 -30
- package/dist/metareview.js.map +1 -1
- package/dist/notify.d.ts +9 -2
- package/dist/notify.js +16 -4
- package/dist/notify.js.map +1 -1
- package/dist/parallel.d.ts +16 -0
- package/dist/parallel.js +28 -1
- 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.js +8 -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 +25 -0
- 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 +29 -2
- package/dist/stop.js +106 -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 +247 -2
- 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 +56 -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 +83 -3
package/dist/index.js
CHANGED
|
@@ -1,37 +1,84 @@
|
|
|
1
1
|
import { existsSync, unlinkSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import { normalizeBackendLabel } from "@mobrienv/autoloop-backends";
|
|
3
4
|
import { terminateAcpSession } from "@mobrienv/autoloop-backends/acp-client";
|
|
4
5
|
import { abortClaudeSdkTurn, steerClaudeSdkTurn, terminateClaudeSdkSession, } from "@mobrienv/autoloop-backends/claude-sdk-client";
|
|
5
6
|
import { abortPiTurn, steerPiTurn, terminatePiSession, } from "@mobrienv/autoloop-backends/pi-rpc-client";
|
|
6
7
|
import * as config from "@mobrienv/autoloop-core/config";
|
|
7
|
-
import { readIfExists, readRunLines } from "@mobrienv/autoloop-core/journal";
|
|
8
|
+
import { quarantineJournal, readIfExists, readRunLines, } from "@mobrienv/autoloop-core/journal";
|
|
8
9
|
import { cleanWorktrees, mergeWorktree, readMeta, updateStatus as updateWorktreeStatus, } from "@mobrienv/autoloop-core/worktree";
|
|
9
10
|
import { applyRuntimeModeOverrides, buildLoopContext, ensureLayout, initStore, installRuntimeTools, iterationFieldForRun, reloadLoop, } from "./config-helpers.js";
|
|
10
11
|
import { acpControlAdapter } from "./control/acp-adapter.js";
|
|
11
12
|
import { claudeSdkControlAdapter } from "./control/claude-sdk-adapter.js";
|
|
13
|
+
import { commandControlAdapter } from "./control/command-adapter.js";
|
|
12
14
|
import { drainControlRequests, publishCapabilities, } from "./control/dispatch.js";
|
|
13
15
|
import { piControlAdapter } from "./control/pi-adapter.js";
|
|
14
|
-
import { log } from "./display.js";
|
|
16
|
+
import { log, runCostUsd } from "./display.js";
|
|
15
17
|
import { emit as emitCmd } from "./emit.js";
|
|
16
18
|
import { checkCostBudget, checkRuntimeBudget, detectStall } from "./guards.js";
|
|
19
|
+
import { buildHookEnv, runPhaseHooks } from "./hooks.js";
|
|
20
|
+
import { journalAcceptanceContract } from "./intent.js";
|
|
17
21
|
import { runIteration } from "./iteration.js";
|
|
18
22
|
import { maybeRunMetareview } from "./metareview.js";
|
|
19
23
|
import { runFinishNotification } from "./notify.js";
|
|
20
24
|
import { appendLoopStart, branchStopReason, loadParallelBranchLaunch, parallelBranchBackendOverride, renderBranchResult, seedBranchContext, writeParallelBranchSummary, } from "./parallel.js";
|
|
25
|
+
import { countRearms, detectPrematureQuit, rearmPrematureQuit, } from "./premature-quit.js";
|
|
21
26
|
import { registryStart, registryStop } from "./registry-bridge.js";
|
|
22
|
-
import { completeLoop, stopCostBudget, stopMaxIterations, stopMaxRuntime, stopStalled, } 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";
|
|
23
30
|
export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
24
31
|
let loop = buildLoopContext(projectDir, promptOverride, selfCommand, runOptions);
|
|
25
32
|
loop.onEvent = runOptions.onEvent;
|
|
33
|
+
loop.signal = runOptions.signal;
|
|
26
34
|
loop = initStore(loop);
|
|
27
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
|
+
}
|
|
28
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
|
+
}
|
|
29
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
|
+
}
|
|
30
66
|
registryStart(loop);
|
|
31
67
|
loop.controlAdapter = buildControlAdapter(loop);
|
|
32
68
|
if (loop.controlAdapter) {
|
|
33
69
|
publishCapabilities(loop.paths.stateDir, loop.controlAdapter);
|
|
34
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) {
|
|
35
82
|
// Track current iteration for abort handler (must be mutable)
|
|
36
83
|
let currentIteration = 0;
|
|
37
84
|
let aborted = false;
|
|
@@ -62,6 +109,16 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
62
109
|
/* best-effort */
|
|
63
110
|
});
|
|
64
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
|
+
}
|
|
65
122
|
try {
|
|
66
123
|
registryStop(loop, currentIteration, "interrupted");
|
|
67
124
|
}
|
|
@@ -108,6 +165,18 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
108
165
|
};
|
|
109
166
|
process.on("SIGUSR1", onSigusr1);
|
|
110
167
|
log(loop, "info", `loop start run_id=${loop.runtime.runId} max_iterations=${loop.limits.maxIterations}`);
|
|
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
|
+
});
|
|
111
180
|
let summary;
|
|
112
181
|
const trackedIterate = async (ctx, iter) => {
|
|
113
182
|
if (aborted)
|
|
@@ -116,6 +185,9 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
116
185
|
stopReason: "interrupted",
|
|
117
186
|
runId: ctx.runtime.runId,
|
|
118
187
|
};
|
|
188
|
+
if (iter > ctx.limits.maxIterations) {
|
|
189
|
+
return stopMaxIterations(ctx, iter);
|
|
190
|
+
}
|
|
119
191
|
currentIteration = iter;
|
|
120
192
|
ctx.onEvent?.({
|
|
121
193
|
type: "iteration.start",
|
|
@@ -126,7 +198,22 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
126
198
|
return iterateWith(ctx, iter, trackedIterate);
|
|
127
199
|
};
|
|
128
200
|
try {
|
|
129
|
-
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;
|
|
130
217
|
}
|
|
131
218
|
finally {
|
|
132
219
|
if (loop.acpSession.current) {
|
|
@@ -156,6 +243,15 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
156
243
|
}
|
|
157
244
|
loop.claudeSdkSession.current = undefined;
|
|
158
245
|
}
|
|
246
|
+
if (loop.commandSession.current) {
|
|
247
|
+
try {
|
|
248
|
+
process.kill(loop.commandSession.current.pid, "SIGTERM");
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
/* best-effort */
|
|
252
|
+
}
|
|
253
|
+
loop.commandSession.current = undefined;
|
|
254
|
+
}
|
|
159
255
|
runOptions.signal?.removeEventListener("abort", onAbort);
|
|
160
256
|
}
|
|
161
257
|
// Post-run worktree lifecycle: status update, automerge, cleanup
|
|
@@ -216,6 +312,10 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
216
312
|
}
|
|
217
313
|
}
|
|
218
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
|
+
}
|
|
219
319
|
runFinishNotification({
|
|
220
320
|
projectDir: loop.paths.mainProjectDir,
|
|
221
321
|
journalFile: loop.paths.journalFile,
|
|
@@ -224,11 +324,13 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
224
324
|
stopReason: summary.stopReason,
|
|
225
325
|
iterations: summary.iterations,
|
|
226
326
|
});
|
|
327
|
+
const costUsd = runCostUsd(loop);
|
|
227
328
|
loop.onEvent?.({
|
|
228
329
|
type: "summary",
|
|
229
330
|
runId: loop.runtime.runId,
|
|
230
331
|
iterations: summary.iterations,
|
|
231
332
|
stopReason: summary.stopReason,
|
|
333
|
+
costUsd,
|
|
232
334
|
journalFile: loop.paths.journalFile,
|
|
233
335
|
memoryFile: loop.paths.memoryFile,
|
|
234
336
|
reviewEvery: loop.review.every,
|
|
@@ -239,9 +341,11 @@ export async function run(projectDir, promptOverride, selfCommand, runOptions) {
|
|
|
239
341
|
iterations: summary.iterations,
|
|
240
342
|
stopReason: summary.stopReason,
|
|
241
343
|
runId: loop.runtime.runId,
|
|
344
|
+
costUsd,
|
|
242
345
|
});
|
|
243
346
|
return { ...summary, runId: loop.runtime.runId };
|
|
244
347
|
}
|
|
348
|
+
export { buildResumeContext, determineResumeIteration, resume, } from "./resume.js";
|
|
245
349
|
export { emitCmd as emit };
|
|
246
350
|
export async function runParallelBranchCli(projectDir, branchDir, selfCommand, onEvent) {
|
|
247
351
|
const launch = loadParallelBranchLaunch(branchDir);
|
|
@@ -301,6 +405,15 @@ export async function runParallelBranchCli(projectDir, branchDir, selfCommand, o
|
|
|
301
405
|
}
|
|
302
406
|
seeded.claudeSdkSession.current = undefined;
|
|
303
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
|
+
}
|
|
304
417
|
}
|
|
305
418
|
const finishedMs = Date.now();
|
|
306
419
|
const elapsedMs = finishedMs - startMs;
|
|
@@ -340,6 +453,14 @@ async function runReviewThenIterate(liveLoop, iteration, recurse) {
|
|
|
340
453
|
const reviewed = await maybeRunMetareview(liveLoop, iteration);
|
|
341
454
|
const verdict = reviewed.lastVerdict;
|
|
342
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
|
+
}
|
|
343
464
|
if (verdict.verdict === "EXIT")
|
|
344
465
|
return completeLoop(reviewed, iteration, "verdict_exit");
|
|
345
466
|
if (verdict.verdict === "TAKEOVER")
|
|
@@ -365,6 +486,17 @@ async function runReviewThenIterate(liveLoop, iteration, recurse) {
|
|
|
365
486
|
const runLines = readRunLines(reviewed.paths.journalFile, reviewed.runtime.runId);
|
|
366
487
|
const stall = detectStall(runLines, reviewed.limits.stallIterations ?? 0);
|
|
367
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
|
+
}
|
|
368
500
|
return stopStalled(reviewed, iteration - 1, stall.repeats);
|
|
369
501
|
}
|
|
370
502
|
const budget = checkCostBudget(runLines, reviewed.limits.maxCostUsd ?? 0);
|
|
@@ -381,7 +513,7 @@ async function runReviewThenIterate(liveLoop, iteration, recurse) {
|
|
|
381
513
|
function iterate(loop, iteration) {
|
|
382
514
|
return iterateWith(loop, iteration, iterate);
|
|
383
515
|
}
|
|
384
|
-
function buildControlAdapter(loop) {
|
|
516
|
+
export function buildControlAdapter(loop) {
|
|
385
517
|
if (loop.backend.kind === "acp") {
|
|
386
518
|
return acpControlAdapter(loop.runtime.runId, loop.backend.provider, {
|
|
387
519
|
triggerInterrupt: () => {
|
|
@@ -424,6 +556,50 @@ function buildControlAdapter(loop) {
|
|
|
424
556
|
},
|
|
425
557
|
});
|
|
426
558
|
}
|
|
559
|
+
if (loop.backend.kind === "command") {
|
|
560
|
+
return commandControlAdapter(loop.runtime.runId, {
|
|
561
|
+
triggerInterrupt: () => escalateCommandInterrupt(loop),
|
|
562
|
+
});
|
|
563
|
+
}
|
|
427
564
|
return undefined;
|
|
428
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
|
+
}
|
|
429
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;
|
package/dist/intent.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { jsonBool, jsonField, jsonFieldRaw } from "@mobrienv/autoloop-core";
|
|
3
|
+
import { appendEvent, appendOperatorEvent, } from "@mobrienv/autoloop-core/journal";
|
|
4
|
+
const CHECK_SEP = " :: ";
|
|
5
|
+
/** Parse one criterion line into text + optional bound check. */
|
|
6
|
+
export function parseCriterion(line) {
|
|
7
|
+
const idx = line.indexOf(CHECK_SEP);
|
|
8
|
+
if (idx === -1)
|
|
9
|
+
return { text: line.trim() };
|
|
10
|
+
return {
|
|
11
|
+
text: line.slice(0, idx).trim(),
|
|
12
|
+
check: line.slice(idx + CHECK_SEP.length).trim() || undefined,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Extract acceptance criteria from an objective's "Acceptance criteria" (or
|
|
17
|
+
* "Acceptance Criteria") section: the bullet/numbered lines following the
|
|
18
|
+
* heading, up to the next blank line or heading. Returns [] when absent.
|
|
19
|
+
*/
|
|
20
|
+
export function parseObjectiveCriteria(objective) {
|
|
21
|
+
const lines = objective.split("\n");
|
|
22
|
+
const out = [];
|
|
23
|
+
let inSection = false;
|
|
24
|
+
for (const raw of lines) {
|
|
25
|
+
const line = raw.trim();
|
|
26
|
+
if (/^#{0,6}\s*acceptance\s+criteria\b/i.test(line.replace(/[:*_]/g, ""))) {
|
|
27
|
+
inSection = true;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (!inSection)
|
|
31
|
+
continue;
|
|
32
|
+
if (line === "")
|
|
33
|
+
break;
|
|
34
|
+
// A new markdown heading ends the section.
|
|
35
|
+
if (/^#{1,6}\s/.test(line))
|
|
36
|
+
break;
|
|
37
|
+
const bullet = line.match(/^(?:[-*+]|\d+[.)])\s+(.*)$/);
|
|
38
|
+
if (bullet)
|
|
39
|
+
out.push(bullet[1].trim());
|
|
40
|
+
else
|
|
41
|
+
break; // non-bullet line ends a bullet list
|
|
42
|
+
}
|
|
43
|
+
return out;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Capture the intent-binding contract at loop start: config criteria first,
|
|
47
|
+
* then any parsed from the objective (deduped by text). This is the bound
|
|
48
|
+
* record of "what was asked" the deterministic gate keys off.
|
|
49
|
+
*/
|
|
50
|
+
export function captureAcceptanceContract(loop) {
|
|
51
|
+
const raw = [
|
|
52
|
+
...(loop.acceptance.criteria ?? []),
|
|
53
|
+
...parseObjectiveCriteria(loop.objective ?? ""),
|
|
54
|
+
];
|
|
55
|
+
const seen = new Set();
|
|
56
|
+
const criteria = [];
|
|
57
|
+
for (const line of raw) {
|
|
58
|
+
const c = parseCriterion(line);
|
|
59
|
+
if (!c.text || seen.has(c.text))
|
|
60
|
+
continue;
|
|
61
|
+
seen.add(c.text);
|
|
62
|
+
criteria.push(c);
|
|
63
|
+
}
|
|
64
|
+
return criteria;
|
|
65
|
+
}
|
|
66
|
+
/** Journal the bound acceptance contract once at loop start (audit/durability). */
|
|
67
|
+
export function journalAcceptanceContract(loop) {
|
|
68
|
+
const criteria = captureAcceptanceContract(loop);
|
|
69
|
+
if (criteria.length === 0)
|
|
70
|
+
return;
|
|
71
|
+
appendEvent(loop.paths.journalFile, loop.runtime.runId, "", "acceptance.contract", jsonField("count", String(criteria.length)) +
|
|
72
|
+
", " +
|
|
73
|
+
jsonField("criteria", criteria.map((c) => c.text).join(" | ")) +
|
|
74
|
+
", " +
|
|
75
|
+
jsonFieldRaw("checked", String(criteria.filter((c) => c.check).length)));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Evaluate the intent-binding criteria at the acceptance gate. Criteria that
|
|
79
|
+
* bind a deterministic check (`text :: cmd`) are run HARNESS-side in the work
|
|
80
|
+
* dir; a non-zero exit fails acceptance so a run that passes its tests but does
|
|
81
|
+
* not satisfy the stated intent is still rejected. Criteria without a check are
|
|
82
|
+
* advisory (recorded in the contract, not a hard blocker).
|
|
83
|
+
*/
|
|
84
|
+
export function runIntentCriteria(loop, iteration) {
|
|
85
|
+
const checked = captureAcceptanceContract(loop).filter((c) => c.check);
|
|
86
|
+
if (checked.length === 0)
|
|
87
|
+
return { ran: false, passed: true, failures: [] };
|
|
88
|
+
const iter = String(iteration);
|
|
89
|
+
const failures = [];
|
|
90
|
+
for (const c of checked) {
|
|
91
|
+
const check = c.check;
|
|
92
|
+
const res = spawnSync(check, {
|
|
93
|
+
shell: "/bin/sh",
|
|
94
|
+
cwd: loop.paths.workDir,
|
|
95
|
+
encoding: "utf-8",
|
|
96
|
+
timeout: loop.acceptance.timeoutMs,
|
|
97
|
+
maxBuffer: 50 * 1024 * 1024,
|
|
98
|
+
});
|
|
99
|
+
const timedOut = res.signal === "SIGTERM" ||
|
|
100
|
+
res.error?.code === "ETIMEDOUT";
|
|
101
|
+
const exitCode = timedOut ? 124 : (res.status ?? 1);
|
|
102
|
+
const tail = `${res.stdout ?? ""}${res.stderr ?? ""}`.slice(-1000);
|
|
103
|
+
appendEvent(loop.paths.journalFile, loop.runtime.runId, iter, "acceptance.criterion", jsonField("text", c.text) +
|
|
104
|
+
", " +
|
|
105
|
+
jsonField("check", check) +
|
|
106
|
+
", " +
|
|
107
|
+
jsonField("exit_code", String(exitCode)));
|
|
108
|
+
if (exitCode !== 0)
|
|
109
|
+
failures.push({ text: c.text, check, exitCode, tail });
|
|
110
|
+
}
|
|
111
|
+
const passed = failures.length === 0;
|
|
112
|
+
appendEvent(loop.paths.journalFile, loop.runtime.runId, iter, "acceptance.intent_result", jsonFieldRaw("passed", jsonBool(passed)) +
|
|
113
|
+
", " +
|
|
114
|
+
jsonField("failed", String(failures.length)));
|
|
115
|
+
return { ran: true, passed, failures };
|
|
116
|
+
}
|
|
117
|
+
/** Re-inject failed intent criteria as operator guidance. */
|
|
118
|
+
export function reinjectIntentFailure(loop, iteration, result) {
|
|
119
|
+
const detail = result.failures
|
|
120
|
+
.map((f) => `- "${f.text}" (check \`${f.check}\` exited ${f.exitCode}):\n${f.tail}`)
|
|
121
|
+
.join("\n\n");
|
|
122
|
+
const message = "Completion was blocked: the build does not satisfy the stated acceptance " +
|
|
123
|
+
"criteria (intent-binding), even if tests pass. Satisfy these before " +
|
|
124
|
+
`claiming completion:\n\n${detail}`;
|
|
125
|
+
appendOperatorEvent(loop.paths.journalFile, loop.runtime.runId, String(iteration), "operator.guidance", message);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface TextDelta {
|
|
2
|
+
aChars: number;
|
|
3
|
+
bChars: number;
|
|
4
|
+
charDelta: number;
|
|
5
|
+
linesAdded: number;
|
|
6
|
+
linesRemoved: number;
|
|
7
|
+
changed: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface IterationDiff {
|
|
10
|
+
iterA: number;
|
|
11
|
+
iterB: number;
|
|
12
|
+
prompt: TextDelta;
|
|
13
|
+
output: TextDelta;
|
|
14
|
+
cost: {
|
|
15
|
+
aUsd: number;
|
|
16
|
+
bUsd: number;
|
|
17
|
+
deltaUsd: number;
|
|
18
|
+
};
|
|
19
|
+
/** Event topics emitted in one iteration but not the other (structural). */
|
|
20
|
+
events: {
|
|
21
|
+
onlyInA: string[];
|
|
22
|
+
onlyInB: string[];
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Structural diff between two journaled iterations of a run: prompt (assembled
|
|
27
|
+
* context), backend output, cost, and the emitted-event topic set. Pure over
|
|
28
|
+
* the run's journal lines — the durable journal is the trustworthy source.
|
|
29
|
+
*/
|
|
30
|
+
export declare function diffIterations(runLines: string[], iterA: number, iterB: number): IterationDiff;
|
|
31
|
+
/** Render a structural iteration diff as a human-readable report. */
|
|
32
|
+
export declare function renderIterationDiff(runId: string, d: IterationDiff): string;
|