@phamvuhoang/otto-core 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/agent-runtime.d.ts +75 -0
  2. package/dist/agent-runtime.d.ts.map +1 -0
  3. package/dist/agent-runtime.js +121 -0
  4. package/dist/agent-runtime.js.map +1 -0
  5. package/dist/cli-help.d.ts +34 -0
  6. package/dist/cli-help.d.ts.map +1 -1
  7. package/dist/cli-help.js +65 -8
  8. package/dist/cli-help.js.map +1 -1
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/loop.d.ts +13 -0
  14. package/dist/loop.d.ts.map +1 -1
  15. package/dist/loop.js +84 -16
  16. package/dist/loop.js.map +1 -1
  17. package/dist/panel.d.ts +5 -0
  18. package/dist/panel.d.ts.map +1 -1
  19. package/dist/panel.js +7 -4
  20. package/dist/panel.js.map +1 -1
  21. package/dist/preflight.d.ts +12 -0
  22. package/dist/preflight.d.ts.map +1 -1
  23. package/dist/preflight.js +65 -13
  24. package/dist/preflight.js.map +1 -1
  25. package/dist/rate-limit.d.ts.map +1 -1
  26. package/dist/rate-limit.js +2 -1
  27. package/dist/rate-limit.js.map +1 -1
  28. package/dist/run-bin.d.ts.map +1 -1
  29. package/dist/run-bin.js +86 -0
  30. package/dist/run-bin.js.map +1 -1
  31. package/dist/runner.d.ts +84 -3
  32. package/dist/runner.d.ts.map +1 -1
  33. package/dist/runner.js +301 -46
  34. package/dist/runner.js.map +1 -1
  35. package/dist/stage-exec.d.ts +3 -0
  36. package/dist/stage-exec.d.ts.map +1 -1
  37. package/dist/stage-exec.js +5 -3
  38. package/dist/stage-exec.js.map +1 -1
  39. package/dist/state.d.ts +4 -0
  40. package/dist/state.d.ts.map +1 -1
  41. package/dist/state.js.map +1 -1
  42. package/dist/watch.d.ts +11 -0
  43. package/dist/watch.d.ts.map +1 -1
  44. package/dist/watch.js +5 -0
  45. package/dist/watch.js.map +1 -1
  46. package/package.json +1 -1
  47. package/templates/review-lens.md +2 -0
  48. package/templates/review-synth.md +2 -0
  49. package/templates/review-verify.md +2 -0
  50. package/templates/review.md +2 -0
package/dist/runner.js CHANGED
@@ -2,11 +2,16 @@ import { spawn } from "node:child_process";
2
2
  import { appendFileSync, closeSync, mkdirSync, openSync, rmSync, writeFileSync, } from "node:fs";
3
3
  import { createInterface } from "node:readline";
4
4
  import { join, posix } from "node:path";
5
- import { dim, renderEvent, } from "./stream-render.js";
5
+ import { AGENT_DISPLAY_NAMES } from "./agent-runtime.js";
6
+ import { boldOut, dim, renderEvent, SYM_OUT, } from "./stream-render.js";
6
7
  import { RateLimitError, isLimitResult, resetsAtFromEvent, } from "./rate-limit.js";
7
8
  import { emptyTokenUsage, parseTokenUsage } from "./tokens.js";
8
- /** Pure extraction of the fields Otto tracks from a stream-json `result` event. */
9
- export function resultFromEvent(ev) {
9
+ /**
10
+ * Pure extraction of the fields Otto tracks from a stream-json `result` event.
11
+ * `runtimeId` stamps which runtime produced it (defaults to claude — the only
12
+ * runtime whose output is this stream-json shape today).
13
+ */
14
+ export function resultFromEvent(ev, runtimeId = "claude") {
10
15
  const e = (ev ?? {});
11
16
  return {
12
17
  result: typeof e.result === "string" ? e.result : "",
@@ -14,8 +19,147 @@ export function resultFromEvent(ev) {
14
19
  isError: e.is_error === true,
15
20
  apiErrorStatus: typeof e.api_error_status === "string" ? e.api_error_status : null,
16
21
  usage: parseTokenUsage(e),
22
+ runtimeId,
23
+ };
24
+ }
25
+ function usageNumber(value) {
26
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
27
+ return 0;
28
+ }
29
+ return Math.floor(value);
30
+ }
31
+ function codexUsageFromEvent(ev) {
32
+ const e = (ev ?? {});
33
+ const u = (e.usage ?? {});
34
+ return {
35
+ inputTokens: usageNumber(u.input_tokens),
36
+ outputTokens: usageNumber(u.output_tokens),
37
+ cacheCreationInputTokens: 0,
38
+ cacheReadInputTokens: usageNumber(u.cached_input_tokens),
17
39
  };
18
40
  }
41
+ function codexErrorMessage(ev) {
42
+ const e = (ev ?? {});
43
+ const err = (e.error ?? {});
44
+ if (typeof err.message === "string")
45
+ return err.message;
46
+ if (typeof e.message === "string")
47
+ return e.message;
48
+ return null;
49
+ }
50
+ function codexAgentMessage(ev) {
51
+ const e = (ev ?? {});
52
+ if (e.type !== "item.completed")
53
+ return null;
54
+ const item = (e.item ?? {});
55
+ if (typeof item.text !== "string")
56
+ return null;
57
+ return item.type === "agent_message" || typeof item.text === "string"
58
+ ? item.text
59
+ : null;
60
+ }
61
+ function renderCodexEvent(ev) {
62
+ const text = codexAgentMessage(ev);
63
+ if (text == null)
64
+ return;
65
+ const lines = text.split("\n");
66
+ const formatted = lines
67
+ .map((line, idx) => idx === 0 ? `${boldOut(SYM_OUT.bullet)} ${line}` : ` ${line}`)
68
+ .join("\r\n");
69
+ process.stdout.write(formatted + "\r\n\n");
70
+ }
71
+ /**
72
+ * Create a per-run parser for `codex exec --json` JSONL. Codex reports the
73
+ * final assistant text as the last `item.completed` agent_message and emits the
74
+ * terminal status on `turn.completed` / `turn.failed` / `error`.
75
+ */
76
+ export function createCodexStreamParser() {
77
+ let result = "";
78
+ let usage = emptyTokenUsage();
79
+ let isError = false;
80
+ let apiErrorStatus = null;
81
+ const finish = () => ({
82
+ result,
83
+ costUsd: 0,
84
+ isError,
85
+ apiErrorStatus,
86
+ usage,
87
+ runtimeId: "codex",
88
+ });
89
+ return (ev) => {
90
+ const e = (ev ?? {});
91
+ const type = e.type;
92
+ const text = codexAgentMessage(ev);
93
+ if (text != null) {
94
+ result = text;
95
+ return undefined;
96
+ }
97
+ if (type === "turn.completed") {
98
+ usage = codexUsageFromEvent(ev);
99
+ return finish();
100
+ }
101
+ if (type === "turn.failed" || type === "error") {
102
+ isError = true;
103
+ const msg = codexErrorMessage(ev);
104
+ if (msg) {
105
+ apiErrorStatus = msg;
106
+ if (!result)
107
+ result = msg;
108
+ }
109
+ return finish();
110
+ }
111
+ return undefined;
112
+ };
113
+ }
114
+ function numericUnixSeconds(value) {
115
+ return Math.floor(value > 10_000_000_000 ? value / 1000 : value);
116
+ }
117
+ function valueFromObject(obj, keys) {
118
+ for (const key of keys) {
119
+ if (obj[key] != null)
120
+ return obj[key];
121
+ }
122
+ return undefined;
123
+ }
124
+ /**
125
+ * Opportunistically read a Codex reset hint from failed-turn/error events. The
126
+ * CLI does not currently promise a single stable reset field, so absent or
127
+ * unknown shapes return null and the loop falls back to its default wait.
128
+ */
129
+ export function resetsAtFromCodexEvent(ev, nowSeconds = Math.floor(Date.now() / 1000)) {
130
+ const e = (ev ?? {});
131
+ if (e.type !== "turn.failed" && e.type !== "error")
132
+ return null;
133
+ const err = (e.error ?? e ?? {});
134
+ const rateLimits = (err.rate_limits ?? e.rate_limits);
135
+ const seconds = valueFromObject(err, [
136
+ "resets_in_seconds",
137
+ "reset_in_seconds",
138
+ "retry_after_seconds",
139
+ ]);
140
+ if (typeof seconds === "number" && Number.isFinite(seconds) && seconds >= 0) {
141
+ return nowSeconds + Math.floor(seconds);
142
+ }
143
+ const retryAfterMs = valueFromObject(err, ["retry_after_ms"]);
144
+ if (typeof retryAfterMs === "number" &&
145
+ Number.isFinite(retryAfterMs) &&
146
+ retryAfterMs >= 0) {
147
+ return nowSeconds + Math.ceil(retryAfterMs / 1000);
148
+ }
149
+ const resetAt = valueFromObject(err, ["resets_at", "reset_at", "resetsAt"]) ??
150
+ (rateLimits
151
+ ? valueFromObject(rateLimits, ["resets_at", "reset_at", "resetsAt"])
152
+ : undefined);
153
+ if (typeof resetAt === "number" && Number.isFinite(resetAt) && resetAt >= 0) {
154
+ return numericUnixSeconds(resetAt);
155
+ }
156
+ if (typeof resetAt === "string") {
157
+ const parsed = Date.parse(resetAt);
158
+ if (Number.isFinite(parsed))
159
+ return Math.floor(parsed / 1000);
160
+ }
161
+ return null;
162
+ }
19
163
  const STDERR_TAIL_LINES = 40;
20
164
  const DEFAULT_RESULT_GRACE_MS = 30_000;
21
165
  /**
@@ -50,6 +194,25 @@ export function resolveModelArgs(raw) {
50
194
  return [];
51
195
  return ["--model", trimmed];
52
196
  }
197
+ /**
198
+ * Resolve the model spec for the active runtime (issue #24 P3). A
199
+ * provider-specific override (`OTTO_CLAUDE_MODEL` / `OTTO_CODEX_MODEL`) wins
200
+ * over the provider-neutral `OTTO_MODEL`, so a user who keeps both runtimes
201
+ * configured can pin a model per runtime. Returns the resolved spec plus the
202
+ * env var it came from (for `--print-config`), or `undefined` when nothing is
203
+ * set (the runtime's CLI default applies). Empty/whitespace overrides are
204
+ * ignored so they fall through to the generic value.
205
+ */
206
+ export function resolveModelSelection(runtimeId, env = process.env) {
207
+ const specificVar = `OTTO_${runtimeId.toUpperCase()}_MODEL`;
208
+ const specific = env[specificVar]?.trim();
209
+ if (specific)
210
+ return { spec: specific, source: specificVar };
211
+ const generic = env.OTTO_MODEL?.trim();
212
+ if (generic)
213
+ return { spec: generic, source: "OTTO_MODEL" };
214
+ return undefined;
215
+ }
53
216
  /** `OTTO_RUNNER=host` → bare host run; anything else (incl. unset) → sandbox. */
54
217
  export function resolveRunner(raw) {
55
218
  return raw?.trim() === "host" ? "host" : "sandbox";
@@ -84,14 +247,15 @@ export function buildSandboxSettings(workspaceDir, allowedDomains) {
84
247
  }
85
248
  return { sandbox };
86
249
  }
87
- function abortError() {
88
- const err = new Error("claude command aborted");
250
+ function abortError(command) {
251
+ const err = new Error(`${command} command aborted`);
89
252
  err.name = "AbortError";
90
253
  return err;
91
254
  }
92
- export function stageLogPath(workspaceDir, iteration, stageName) {
255
+ export function stageLogPath(workspaceDir, iteration, stageName, runtimeId) {
93
256
  const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
94
- return join(workspaceDir, ".otto-tmp", "logs", `${timestamp}-iter${iteration}-${stageName}.ndjson`);
257
+ const suffix = runtimeId ? `-${runtimeId}` : "";
258
+ return join(workspaceDir, ".otto-tmp", "logs", `${timestamp}-iter${iteration}-${stageName}${suffix}.ndjson`);
95
259
  }
96
260
  /**
97
261
  * Build the `claude` argv. Extracted as a pure helper so callers can unit-test
@@ -124,6 +288,79 @@ export function buildClaudeArgs(stage, promptRelPath, modelArgs, settingsPath) {
124
288
  args.push(`Read the full instructions from the file ./${promptRelPath} in the current workspace and execute them.`);
125
289
  return args;
126
290
  }
291
+ /** Map Otto's runner mode to Codex's own sandbox vocabulary. */
292
+ export function resolveCodexSandboxMode(raw) {
293
+ return resolveRunner(raw) === "host"
294
+ ? "danger-full-access"
295
+ : "workspace-write";
296
+ }
297
+ /**
298
+ * Build the `codex exec` argv. Codex owns sandboxing itself, so Otto never
299
+ * passes Claude's transient `--settings` file here.
300
+ */
301
+ export function buildCodexArgs(_stage, promptRelPath, modelArgs, _settingsPath, sandboxMode = resolveCodexSandboxMode(process.env.OTTO_RUNNER)) {
302
+ return [
303
+ "codex",
304
+ "exec",
305
+ "--json",
306
+ "--skip-git-repo-check",
307
+ "--sandbox",
308
+ sandboxMode,
309
+ "--ask-for-approval",
310
+ "never",
311
+ ...modelArgs,
312
+ `Read the full instructions from the file ./${promptRelPath} in the current workspace and execute them.`,
313
+ ];
314
+ }
315
+ /**
316
+ * Codex's current CLI docs call out CODEX_API_KEY for `codex exec`; issue #31's
317
+ * acceptance criteria also mention OPENAI_API_KEY. Preserve both by mapping the
318
+ * OpenAI key into Codex's expected env var for this child process only.
319
+ */
320
+ export function buildCodexEnv(env = process.env) {
321
+ const next = { ...env };
322
+ // Keep the compatibility mapping scoped to the child so Otto's own process
323
+ // does not mutate the user's shell-level credential environment.
324
+ if (!next.CODEX_API_KEY && next.OPENAI_API_KEY) {
325
+ next.CODEX_API_KEY = next.OPENAI_API_KEY;
326
+ }
327
+ return next;
328
+ }
329
+ /** The Claude Code adapter — Otto's default and historically-hardcoded runtime. */
330
+ export const claudeRuntime = {
331
+ id: "claude",
332
+ displayName: AGENT_DISPLAY_NAMES.claude,
333
+ command: "claude",
334
+ supportsSandboxSettings: true,
335
+ buildArgs: buildClaudeArgs,
336
+ parseResultEvent: (ev) => resultFromEvent(ev, "claude"),
337
+ };
338
+ /** The Codex CLI adapter, powered by `codex exec --json`. */
339
+ export const codexRuntime = {
340
+ id: "codex",
341
+ displayName: AGENT_DISPLAY_NAMES.codex,
342
+ command: "codex",
343
+ supportsSandboxSettings: false,
344
+ buildArgs: buildCodexArgs,
345
+ parseResultEvent: (ev) => resultFromEvent(ev, "codex"),
346
+ createStreamParser: createCodexStreamParser,
347
+ resetsAtFromEvent: resetsAtFromCodexEvent,
348
+ buildEnv: buildCodexEnv,
349
+ };
350
+ const AGENT_RUNTIMES = {
351
+ claude: claudeRuntime,
352
+ codex: codexRuntime,
353
+ };
354
+ /**
355
+ * Select the adapter for a resolved runtime id.
356
+ */
357
+ export function getAgentRuntime(id) {
358
+ const runtime = AGENT_RUNTIMES[id];
359
+ if (!runtime) {
360
+ throw new Error(`the ${AGENT_DISPLAY_NAMES[id]} runtime is not available in this build.`);
361
+ }
362
+ return runtime;
363
+ }
127
364
  export async function runStage(stage, renderedPrompt, workspaceDir, iteration, spillHostDir, logPathOverride, options = {}) {
128
365
  const tmpHostDir = join(workspaceDir, ".otto-tmp");
129
366
  mkdirSync(tmpHostDir, { recursive: true });
@@ -134,16 +371,18 @@ export async function runStage(stage, renderedPrompt, workspaceDir, iteration, s
134
371
  const promptHostPath = join(tmpHostDir, promptName);
135
372
  const promptRelPath = posix.join(".otto-tmp", promptName);
136
373
  writeFileSync(promptHostPath, renderedPrompt, "utf8");
374
+ const runtime = options.runtime ?? claudeRuntime;
137
375
  let settingsHostPath;
138
- if (resolveRunner(process.env.OTTO_RUNNER) === "sandbox") {
376
+ if (runtime.supportsSandboxSettings &&
377
+ resolveRunner(process.env.OTTO_RUNNER) === "sandbox") {
139
378
  const settings = buildSandboxSettings(workspaceDir, resolveSandboxNet(process.env.OTTO_SANDBOX_NET));
140
379
  settingsHostPath = join(tmpHostDir, `.sandbox-${process.pid}-${iteration}-${Date.now()}.json`);
141
380
  writeFileSync(settingsHostPath, JSON.stringify(settings), "utf8");
142
381
  }
143
382
  process.stderr.write(`${dim("log → " + logPath)}\n`);
144
383
  try {
145
- const argv = buildClaudeArgs(stage, promptRelPath, resolveModelArgs(process.env.OTTO_MODEL), settingsHostPath);
146
- return await streamClaude(argv, workspaceDir, logPath, options);
384
+ const argv = runtime.buildArgs(stage, promptRelPath, resolveModelArgs(resolveModelSelection(runtime.id)?.spec), settingsHostPath);
385
+ return await streamRuntime(argv, workspaceDir, logPath, runtime, options);
147
386
  }
148
387
  finally {
149
388
  rmSync(promptHostPath, { force: true });
@@ -153,18 +392,44 @@ export async function runStage(stage, renderedPrompt, workspaceDir, iteration, s
153
392
  rmSync(spillHostDir, { recursive: true, force: true });
154
393
  }
155
394
  }
156
- function streamClaude(argv, cwd, logPath, options = {}) {
395
+ function streamRuntime(argv, cwd, logPath, runtime, options = {}) {
157
396
  if (options.signal?.aborted) {
158
- return Promise.reject(abortError());
397
+ return Promise.reject(abortError(runtime.command));
159
398
  }
160
399
  return new Promise((resolve, reject) => {
161
400
  const logFd = openSync(logPath, "a");
162
401
  const toolMap = new Map();
163
402
  const graceMs = parseGraceMs(process.env.OTTO_RESULT_GRACE_MS);
164
- // Spawn claude (argv[0]) on the host instead of docker.
403
+ const parseStreamEvent = runtime.createStreamParser?.();
404
+ const settleFinalAfterGrace = () => {
405
+ // Arm one-shot post-result grace timer to recover from CLI self-deadlocks
406
+ // where the child emits its final NDJSON but never exits.
407
+ if (graceTimer || graceMs <= 0)
408
+ return;
409
+ graceTimer = setTimeout(() => {
410
+ if (settled)
411
+ return;
412
+ process.stderr.write(`${dim(`grace timer fired after ${graceMs}ms post-result — killing ${runtime.command} child`)}\n`);
413
+ try {
414
+ child.kill();
415
+ }
416
+ catch {
417
+ // Already dead; close handler will be a no-op via settle guard.
418
+ }
419
+ if (final && isLimitResult(final)) {
420
+ rejectOnce(new RateLimitError(final.result || "rate limit", lastResetsAt));
421
+ }
422
+ else {
423
+ resolveOnce(final);
424
+ }
425
+ }, graceMs);
426
+ graceTimer.unref?.();
427
+ };
428
+ // Spawn the selected agent CLI on the host instead of docker.
165
429
  const child = spawn(argv[0], argv.slice(1), {
166
430
  cwd,
167
431
  stdio: ["ignore", "pipe", "pipe"],
432
+ env: runtime.buildEnv?.(process.env) ?? process.env,
168
433
  });
169
434
  let final = {
170
435
  result: "",
@@ -172,6 +437,7 @@ function streamClaude(argv, cwd, logPath, options = {}) {
172
437
  isError: false,
173
438
  apiErrorStatus: null,
174
439
  usage: emptyTokenUsage(),
440
+ runtimeId: runtime.id,
175
441
  };
176
442
  let lastResetsAt = null;
177
443
  const stderrTail = [];
@@ -218,7 +484,7 @@ function streamClaude(argv, cwd, logPath, options = {}) {
218
484
  catch {
219
485
  // Already dead; close handling below will settle if needed.
220
486
  }
221
- rejectOnce(abortError());
487
+ rejectOnce(abortError(runtime.command));
222
488
  };
223
489
  rl = createInterface({ input: child.stdout });
224
490
  rl.on("line", (line) => {
@@ -234,37 +500,26 @@ function streamClaude(argv, cwd, logPath, options = {}) {
234
500
  catch {
235
501
  return;
236
502
  }
237
- renderEvent(parsed, toolMap);
238
- if (parsed.type === "rate_limit_event") {
239
- const r = resetsAtFromEvent(parsed);
240
- if (r != null)
241
- lastResetsAt = r;
503
+ if (runtime.id === "codex")
504
+ renderCodexEvent(parsed);
505
+ else
506
+ renderEvent(parsed, toolMap);
507
+ const runtimeReset = runtime.resetsAtFromEvent?.(parsed);
508
+ if (runtimeReset != null)
509
+ lastResetsAt = runtimeReset;
510
+ else if (parsed.type === "rate_limit_event") {
511
+ const claudeReset = resetsAtFromEvent(parsed);
512
+ if (claudeReset != null)
513
+ lastResetsAt = claudeReset;
242
514
  }
243
- if (parsed.type === "result") {
244
- final = resultFromEvent(parsed);
245
- // Arm one-shot post-result grace timer to recover from claude-CLI
246
- // self-deadlocks where the child emits its final NDJSON but never
247
- // exits. See docs/prd/result-grace-timer.md.
248
- if (!graceTimer && graceMs > 0) {
249
- graceTimer = setTimeout(() => {
250
- if (settled)
251
- return;
252
- process.stderr.write(`${dim(`grace timer fired after ${graceMs}ms post-result — killing claude child`)}\n`);
253
- try {
254
- child.kill();
255
- }
256
- catch {
257
- // Already dead; close handler will be a no-op via settle guard.
258
- }
259
- if (final && isLimitResult(final)) {
260
- rejectOnce(new RateLimitError(final.result || "rate limit", lastResetsAt));
261
- }
262
- else {
263
- resolveOnce(final);
264
- }
265
- }, graceMs);
266
- graceTimer.unref?.();
267
- }
515
+ const streamResult = parseStreamEvent?.(parsed);
516
+ if (streamResult) {
517
+ final = streamResult;
518
+ settleFinalAfterGrace();
519
+ }
520
+ else if (parsed.type === "result") {
521
+ final = runtime.parseResultEvent(parsed);
522
+ settleFinalAfterGrace();
268
523
  }
269
524
  });
270
525
  rlErr = createInterface({ input: child.stderr });
@@ -274,7 +529,7 @@ function streamClaude(argv, cwd, logPath, options = {}) {
274
529
  stderrTail.push(line);
275
530
  if (stderrTail.length > STDERR_TAIL_LINES)
276
531
  stderrTail.shift();
277
- process.stderr.write(`${dim("claude " + line)}\n`);
532
+ process.stderr.write(`${dim(runtime.command + " " + line)}\n`);
278
533
  });
279
534
  if (options.signal?.aborted) {
280
535
  onAbort();
@@ -290,7 +545,7 @@ function streamClaude(argv, cwd, logPath, options = {}) {
290
545
  return;
291
546
  }
292
547
  if (code !== 0) {
293
- rejectOnce(new Error(`claude exited with ${code}\n${stderrTail.join("\n")}`));
548
+ rejectOnce(new Error(`${runtime.command} exited with ${code}\n${stderrTail.join("\n")}`));
294
549
  return;
295
550
  }
296
551
  resolveOnce(final);
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAuB,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EACL,OAAO,EACP,GAAG,EACH,WAAW,EACX,OAAO,GAGR,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAmB,MAAM,aAAa,CAAC;AAkBhF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAW,EACX,YAA4B,QAAQ;IAEpC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAA4B,CAAC;IAChD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACpD,OAAO,EAAE,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,EAAE,CAAC,CAAC,QAAQ,KAAK,IAAI;QAC5B,cAAc,EACZ,OAAO,CAAC,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI;QACpE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;QACzB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACtE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAW;IACtC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAA4B,CAAC;IAChD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;IACrD,OAAO;QACL,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;QACxC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;QAC1C,wBAAwB,EAAE,CAAC;QAC3B,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAW;IACpC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAA4B,CAAC;IAChD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;IACvD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACxD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAW;IACpC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAA4B,CAAC;IAChD,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;IACvD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QACnE,CAAC,CAAC,IAAI,CAAC,IAAI;QACX,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAW;IACnC,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO;IACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,KAAK;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CACjB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAC/D;SACA,IAAI,CAAC,MAAM,CAAC,CAAC;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAID;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,cAAc,GAAkB,IAAI,CAAC;IAEzC,MAAM,MAAM,GAAG,GAAgB,EAAE,CAAC,CAAC;QACjC,MAAM;QACN,OAAO,EAAE,CAAC;QACV,OAAO;QACP,cAAc;QACd,KAAK;QACL,SAAS,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,OAAO,CAAC,EAAW,EAA2B,EAAE;QAC9C,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAA4B,CAAC;QAChD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAEpB,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,GAAG,IAAI,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,KAAK,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAChC,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/C,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,GAAG,EAAE,CAAC;gBACR,cAAc,GAAG,GAAG,CAAC;gBACrB,IAAI,CAAC,MAAM;oBAAE,MAAM,GAAG,GAAG,CAAC;YAC5B,CAAC;YACD,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CACtB,GAA4B,EAC5B,IAAc;IAEd,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI;YAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAW,EACX,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAE1C,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAA4B,CAAC;IAChD,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;IAC5D,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAEvC,CAAC;IAEd,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE;QACnC,mBAAmB;QACnB,kBAAkB;QAClB,qBAAqB;KACtB,CAAC,CAAC;IACH,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC5E,OAAO,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9D,IACE,OAAO,YAAY,KAAK,QAAQ;QAChC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC7B,YAAY,IAAI,CAAC,EACjB,CAAC;QACD,OAAO,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,OAAO,GACX,eAAe,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC3D,CAAC,UAAU;YACT,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACpE,CAAC,CAAC,SAAS,CAAC,CAAC;IACjB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC5E,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAuB,EACvB,YAAoB,uBAAuB;IAE3C,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAuB;IACtD,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAyB,EACzB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,WAAW,GAAG,QAAQ,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1C,IAAI,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC;AAID,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,GAAuB;IACnD,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,iFAAiF;AACjF,+EAA+E;AAC/E,MAAM,yBAAyB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,YAAoB,EACpB,cAAwB;IAExB,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE;QAC1C,gBAAgB,EAAE,yBAAyB;KAC5C,CAAC;IACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,OAAO,GAAG,EAAE,cAAc,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,OAAO,kBAAkB,CAAC,CAAC;IACpD,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,SAAiB,EACjB,SAAiB,EACjB,SAA0B;IAE1B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,OAAO,IAAI,CACT,YAAY,EACZ,WAAW,EACX,MAAM,EACN,GAAG,SAAS,QAAQ,SAAS,IAAI,SAAS,GAAG,MAAM,SAAS,CAC7D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAY,EACZ,aAAqB,EACrB,SAAmB,EACnB,YAAqB;IAErB,MAAM,IAAI,GAAG;QACX,QAAQ;QACR,WAAW;QACX,SAAS;QACT,iBAAiB;QACjB,aAAa;KACd,CAAC;IACF,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACxB,IAAI,CAAC,IAAI,CACP,8CAA8C,aAAa,6CAA6C,CACzG,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAID,gEAAgE;AAChE,MAAM,UAAU,uBAAuB,CACrC,GAAuB;IAEvB,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,MAAM;QAClC,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,iBAAiB,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAa,EACb,aAAqB,EACrB,SAAmB,EACnB,aAAsB,EACtB,cAAgC,uBAAuB,CACrD,OAAO,CAAC,GAAG,CAAC,WAAW,CACxB;IAED,OAAO;QACL,OAAO;QACP,MAAM;QACN,QAAQ;QACR,uBAAuB;QACvB,WAAW;QACX,WAAW;QACX,oBAAoB;QACpB,OAAO;QACP,GAAG,SAAS;QACZ,8CAA8C,aAAa,6CAA6C;KACzG,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,IAAI,GAAsB,EAAE,GAAG,GAAG,EAAE,CAAC;IAC3C,2EAA2E;IAC3E,iEAAiE;IACjE,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAgCD,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,EAAE,EAAE,QAAQ;IACZ,WAAW,EAAE,mBAAmB,CAAC,MAAM;IACvC,OAAO,EAAE,QAAQ;IACjB,uBAAuB,EAAE,IAAI;IAC7B,SAAS,EAAE,eAAe;IAC1B,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC;CACxD,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,mBAAmB,CAAC,KAAK;IACtC,OAAO,EAAE,OAAO;IAChB,uBAAuB,EAAE,KAAK;IAC9B,SAAS,EAAE,cAAc;IACzB,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC;IACtD,kBAAkB,EAAE,uBAAuB;IAC3C,iBAAiB,EAAE,sBAAsB;IACzC,QAAQ,EAAE,aAAa;CACxB,CAAC;AAEF,MAAM,cAAc,GAAkD;IACpE,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,YAAY;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAkB;IAChD,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,OAAO,mBAAmB,CAAC,EAAE,CAAC,0CAA0C,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,KAAY,EACZ,cAAsB,EACtB,YAAoB,EACpB,SAAiB,EACjB,YAAqB,EACrB,eAAwB,EACxB,UAA2B,EAAE;IAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACnD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACzC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GACX,eAAe,IAAI,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAG,QAAQ,OAAO,CAAC,GAAG,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;IACvE,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1D,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC;IAEjD,IAAI,gBAAoC,CAAC;IACzC,IACE,OAAO,CAAC,uBAAuB;QAC/B,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,SAAS,EACpD,CAAC;QACD,MAAM,QAAQ,GAAG,oBAAoB,CACnC,YAAY,EACZ,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAChD,CAAC;QACF,gBAAgB,GAAG,IAAI,CACrB,UAAU,EACV,YAAY,OAAO,CAAC,GAAG,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,CAC1D,CAAC;QACF,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAC5B,KAAK,EACL,aAAa,EACb,gBAAgB,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACzD,gBAAgB,CACjB,CAAC;QACF,OAAO,MAAM,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,IAAI,gBAAgB;YAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,YAAY;YAAE,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,IAAc,EACd,GAAW,EACX,OAAe,EACf,OAAqB,EACrB,UAA2B,EAAE;IAE7B,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC/D,MAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAExD,MAAM,qBAAqB,GAAG,GAAS,EAAE;YACvC,0EAA0E;YAC1E,0DAA0D;YAC1D,IAAI,UAAU,IAAI,OAAO,IAAI,CAAC;gBAAE,OAAO;YACvC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3B,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,GAAG,CAAC,2BAA2B,OAAO,4BAA4B,OAAO,CAAC,OAAO,QAAQ,CAAC,IAAI,CAClG,CAAC;gBACF,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,CAAC;gBAAC,MAAM,CAAC;oBACP,gEAAgE;gBAClE,CAAC;gBACD,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClC,UAAU,CACR,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY,EAAE,YAAY,CAAC,CAC/D,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;QACvB,CAAC,CAAC;QAEF,8DAA8D;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC1C,GAAG;YACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG;SACpD,CAAC,CAAC;QAEH,IAAI,KAAK,GAAgB;YACvB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE,eAAe,EAAE;YACxB,SAAS,EAAE,OAAO,CAAC,EAAE;SACtB,CAAC;QACF,IAAI,YAAY,GAAkB,IAAI,CAAC;QACvC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,OAAO,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;QAC7B,IAAI,EAAkD,CAAC;QACvD,IAAI,KAAqD,CAAC;QAC1D,IAAI,UAAqD,CAAC;QAE1D,MAAM,MAAM,GAAG,CAAC,EAAc,EAAQ,EAAE;YACtC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,UAAU,EAAE,CAAC;gBACf,YAAY,CAAC,UAAU,CAAC,CAAC;gBACzB,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC;gBACH,EAAE,EAAE,KAAK,EAAE,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;YACD,IAAI,CAAC;gBACH,KAAK,EAAE,KAAK,EAAE,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;YACD,IAAI,CAAC;gBACH,SAAS,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;YACD,EAAE,EAAE,CAAC;QACP,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,GAAY,EAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,CAAC,KAAkB,EAAQ,EAAE,CAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/B,OAAO,GAAG,GAAS,EAAE;YACnB,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,4DAA4D;YAC9D,CAAC;YACD,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO;YAElC,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;YAEnC,IAAI,MAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;YACD,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO;gBAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;;gBAChD,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAElC,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,YAAY,IAAI,IAAI;gBAAE,YAAY,GAAG,YAAY,CAAC;iBACjD,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC5C,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,WAAW,IAAI,IAAI;oBAAE,YAAY,GAAG,WAAW,CAAC;YACtD,CAAC;YAED,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,YAAY,EAAE,CAAC;gBACjB,KAAK,GAAG,YAAY,CAAC;gBACrB,qBAAqB,EAAE,CAAC;YAC1B,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACzC,qBAAqB,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,OAAO;gBAAE,OAAO;YACpB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,UAAU,CAAC,MAAM,GAAG,iBAAiB;gBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;YAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,UAAU,CACR,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY,EAAE,YAAY,CAAC,CAC/D,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,UAAU,CACR,IAAI,KAAK,CACP,GAAG,OAAO,CAAC,OAAO,gBAAgB,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnE,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type AgentRuntimeId } from "./agent-runtime.js";
1
2
  import { type StageResult } from "./runner.js";
2
3
  import type { Stage } from "./stages.js";
3
4
  import type { TokenMode } from "./tokens.js";
@@ -12,6 +13,8 @@ export type ExecuteStageOptions = {
12
13
  signal?: AbortSignal;
13
14
  /** Disambiguates spill/log paths when multiple sub-stages share an iteration (panel lenses). */
14
15
  logLabel?: string;
16
+ /** Active runtime id; suffixes the NDJSON log filename so logs are runtime-labelled. */
17
+ agentId?: AgentRuntimeId;
15
18
  };
16
19
  /** Render a stage's template (inside the retry, so flaky shell tags retry) and run it. */
17
20
  export declare function executeStage(opts: ExecuteStageOptions): Promise<StageResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"stage-exec.d.ts","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,0FAA0F;AAC1F,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,WAAW,CAAC,CA4DtB"}
1
+ {"version":3,"file":"stage-exec.d.ts","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIxE,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,0FAA0F;AAC1F,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,WAAW,CAAC,CA6DtB"}
@@ -1,9 +1,10 @@
1
1
  import { appendFileSync, mkdirSync } from "node:fs";
2
2
  import { dirname, join, posix } from "node:path";
3
+ import { DEFAULT_AGENT } from "./agent-runtime.js";
3
4
  import { applyPromptReduction } from "./prompt-reduction.js";
4
5
  import { renderTemplate } from "./render.js";
5
6
  import { DEFAULT_BACKOFF_MS, backoffFor, withRetries } from "./retry.js";
6
- import { runStage, stageLogPath } from "./runner.js";
7
+ import { getAgentRuntime, runStage, stageLogPath, } from "./runner.js";
7
8
  import { USE_COLOR, dim } from "./stream-render.js";
8
9
  /** Render a stage's template (inside the retry, so flaky shell tags retry) and run it. */
9
10
  export async function executeStage(opts) {
@@ -12,8 +13,9 @@ export async function executeStage(opts) {
12
13
  const spillRel = `spill-${process.pid}-${iteration}-${label}-${Date.now()}`;
13
14
  const spillHostDir = join(workspaceDir, ".otto-tmp", spillRel);
14
15
  const spillRefPath = posix.join(".otto-tmp", spillRel);
15
- const stageLog = stageLogPath(workspaceDir, iteration, label);
16
+ const stageLog = stageLogPath(workspaceDir, iteration, label, opts.agentId);
16
17
  mkdirSync(dirname(stageLog), { recursive: true });
18
+ const runtime = getAgentRuntime(opts.agentId ?? DEFAULT_AGENT);
17
19
  return withRetries(() => {
18
20
  let prompt = renderTemplate(join(packageDir, "templates", stage.template), vars, { cwd: workspaceDir, spillHostDir, spillRefPath });
19
21
  if (tokenMode === "reduce") {
@@ -22,7 +24,7 @@ export async function executeStage(opts) {
22
24
  const { originalChars, reducedChars, cacheHits } = reduced.stats;
23
25
  process.stderr.write(`${dim(`prompt reduce ${originalChars} -> ${reducedChars} chars | cache hits ${cacheHits}`)}\n`);
24
26
  }
25
- return runStage(stage, prompt, workspaceDir, iteration, spillHostDir, stageLog, { signal });
27
+ return runStage(stage, prompt, workspaceDir, iteration, spillHostDir, stageLog, { signal, runtime });
26
28
  }, {
27
29
  max: maxRetries,
28
30
  backoffMs: DEFAULT_BACKOFF_MS,
@@ -1 +1 @@
1
- {"version":3,"file":"stage-exec.js","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stage-exec.js","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"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"}
package/dist/state.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { AgentRuntimeId } from "./agent-runtime.js";
1
2
  export type RunStatus = "running" | "waiting-rate-limit" | "interrupted" | "complete";
2
3
  export type RunState = {
3
4
  bin: string;
@@ -7,6 +8,9 @@ export type RunState = {
7
8
  of: number;
8
9
  status: RunStatus;
9
10
  resetsAt?: number | null;
11
+ /** Active runtime at persist time. Records an auto-switch so a resumed run
12
+ * keeps the fallback (unless --fresh clears state). Absent on pre-switch runs. */
13
+ agent?: AgentRuntimeId;
10
14
  startedAt: string;
11
15
  updatedAt: string;
12
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,oBAAoB,GACpB,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAIF,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQ/D;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAMlE;AAED,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAQT"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,oBAAoB,GACpB,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;uFACmF;IACnF,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAIF,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQ/D;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAMlE;AAED,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAQT"}
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAoBjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAE9C,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,YAAoB;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CACf,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CACxC,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,UAAU,CAAC,YAAoB,EAAE,CAAW;IAC1D,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,aAAa,CACX,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAClC,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,UAAU,CAAC,YAAoB;IAC7C,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAC3B,IAAqB,EACrB,GAAkD;IAElD,OAAO,CACL,IAAI,IAAI,IAAI;QACZ,IAAI,CAAC,MAAM,KAAK,UAAU;QAC1B,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;QACpB,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;QACtB,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,CAC3B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAyBjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAE9C,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,YAAoB;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CACf,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CACxC,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,UAAU,CAAC,YAAoB,EAAE,CAAW;IAC1D,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,aAAa,CACX,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAClC,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,UAAU,CAAC,YAAoB;IAC7C,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAC3B,IAAqB,EACrB,GAAkD;IAElD,OAAO,CACL,IAAI,IAAI,IAAI;QACZ,IAAI,CAAC,MAAM,KAAK,UAAU;QAC1B,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;QACpB,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;QACtB,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,CAC3B,CAAC;AACJ,CAAC"}
package/dist/watch.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { AgentRuntimeId } from "./agent-runtime.js";
1
2
  import { type LinearAuth, type LinearClient } from "./linear-api.js";
2
3
  import { type WorkScope } from "./task-key.js";
3
4
  import type { Stage } from "./stages.js";
@@ -82,6 +83,16 @@ export type RunWatchOptions = {
82
83
  * watch never picks up issues from outside the scope.
83
84
  */
84
85
  scope?: WorkScope;
86
+ /** Active agent runtime id, threaded into each loop. Default "claude". */
87
+ agentId?: AgentRuntimeId;
88
+ /** Active runtime display name, shown in the per-run banner. Default "Claude Code". */
89
+ agentDisplayName?: string;
90
+ /** Fallback runtime for auto-switch-on-limit, threaded into each loop. */
91
+ fallbackAgentId?: AgentRuntimeId;
92
+ /** Display name for the fallback runtime. */
93
+ fallbackAgentDisplayName?: string;
94
+ /** Switch to the fallback runtime on a limit instead of waiting. Default false. */
95
+ autoSwitchOnLimit?: boolean;
85
96
  /**
86
97
  * Multi-target watch: several GitHub scopes the daemon rotates through. When
87
98
  * set, each cycle polls every scope, runs one loop for the first scope with
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAU9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,UAAU,CAsCZ;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IACtC,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;CAClE,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,UAAU,CAAC,CA0BrB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAI9D,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CACX,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,KACV,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB,CAAC;AAEF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqKnE"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAU9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,UAAU,CAsCZ;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IACtC,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;CAClE,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,UAAU,CAAC,CA0BrB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAI9D,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CACX,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,KACV,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,6CAA6C;IAC7C,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB,CAAC;AAEF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0KnE"}