poly-weaver 0.7.1 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/dist/agents/implementors/handler.d.ts.map +1 -1
  2. package/dist/agents/implementors/handler.js +2 -1
  3. package/dist/agents/implementors/handler.js.map +1 -1
  4. package/dist/agents/planners/handler.d.ts.map +1 -1
  5. package/dist/agents/planners/handler.js +2 -1
  6. package/dist/agents/planners/handler.js.map +1 -1
  7. package/dist/agents/reviewers/handler.d.ts.map +1 -1
  8. package/dist/agents/reviewers/handler.js +2 -1
  9. package/dist/agents/reviewers/handler.js.map +1 -1
  10. package/dist/agents/runner.d.ts +25 -0
  11. package/dist/agents/runner.d.ts.map +1 -1
  12. package/dist/agents/runner.js +63 -1
  13. package/dist/agents/runner.js.map +1 -1
  14. package/dist/agents/simplifiers/handler.d.ts.map +1 -1
  15. package/dist/agents/simplifiers/handler.js +2 -1
  16. package/dist/agents/simplifiers/handler.js.map +1 -1
  17. package/dist/ansi.d.ts +21 -0
  18. package/dist/ansi.d.ts.map +1 -1
  19. package/dist/ansi.js +45 -0
  20. package/dist/ansi.js.map +1 -1
  21. package/dist/app-header.d.ts +16 -0
  22. package/dist/app-header.d.ts.map +1 -0
  23. package/dist/app-header.js +74 -0
  24. package/dist/app-header.js.map +1 -0
  25. package/dist/cli.js +81 -59
  26. package/dist/cli.js.map +1 -1
  27. package/dist/config.d.ts +1 -0
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +6 -0
  30. package/dist/config.js.map +1 -1
  31. package/dist/dump/collector.d.ts +2 -1
  32. package/dist/dump/collector.d.ts.map +1 -1
  33. package/dist/dump/collector.js +12 -0
  34. package/dist/dump/collector.js.map +1 -1
  35. package/dist/dump/hotkey.d.ts +9 -30
  36. package/dist/dump/hotkey.d.ts.map +1 -1
  37. package/dist/dump/hotkey.js +15 -158
  38. package/dist/dump/hotkey.js.map +1 -1
  39. package/dist/dump/pty-tail-buffer.d.ts +25 -0
  40. package/dist/dump/pty-tail-buffer.d.ts.map +1 -0
  41. package/dist/dump/pty-tail-buffer.js +48 -0
  42. package/dist/dump/pty-tail-buffer.js.map +1 -0
  43. package/dist/dump/service.d.ts +3 -2
  44. package/dist/dump/service.d.ts.map +1 -1
  45. package/dist/dump/service.js +6 -1
  46. package/dist/dump/service.js.map +1 -1
  47. package/dist/dump/types.d.ts +13 -0
  48. package/dist/dump/types.d.ts.map +1 -1
  49. package/dist/dump/types.js.map +1 -1
  50. package/dist/flow/built-in/default-factory.d.ts +21 -0
  51. package/dist/flow/built-in/default-factory.d.ts.map +1 -0
  52. package/dist/flow/built-in/default-factory.js +155 -0
  53. package/dist/flow/built-in/default-factory.js.map +1 -0
  54. package/dist/flow/built-in/default.d.ts +4 -4
  55. package/dist/flow/built-in/default.d.ts.map +1 -1
  56. package/dist/flow/built-in/default.js +3 -141
  57. package/dist/flow/built-in/default.js.map +1 -1
  58. package/dist/flow/built-in/default.ts +5 -169
  59. package/dist/flow/built-in/why-so-serious-factory.d.ts +16 -0
  60. package/dist/flow/built-in/why-so-serious-factory.d.ts.map +1 -0
  61. package/dist/flow/built-in/why-so-serious-factory.js +187 -0
  62. package/dist/flow/built-in/why-so-serious-factory.js.map +1 -0
  63. package/dist/flow/built-in/why-so-serious.d.ts +3 -2
  64. package/dist/flow/built-in/why-so-serious.d.ts.map +1 -1
  65. package/dist/flow/built-in/why-so-serious.js +3 -164
  66. package/dist/flow/built-in/why-so-serious.js.map +1 -1
  67. package/dist/flow/custom/AUTHORING.md +13 -0
  68. package/dist/flow/custom/load.d.ts +16 -1
  69. package/dist/flow/custom/load.d.ts.map +1 -1
  70. package/dist/flow/custom/load.js +69 -18
  71. package/dist/flow/custom/load.js.map +1 -1
  72. package/dist/flow/dsl.js +1 -1
  73. package/dist/flow/dsl.js.map +1 -1
  74. package/dist/flow/executor.d.ts.map +1 -1
  75. package/dist/flow/executor.js +52 -9
  76. package/dist/flow/executor.js.map +1 -1
  77. package/dist/flow/types.d.ts +24 -2
  78. package/dist/flow/types.d.ts.map +1 -1
  79. package/dist/flow/types.js.map +1 -1
  80. package/dist/flow-editor/tui.d.ts.map +1 -1
  81. package/dist/flow-editor/tui.js +9 -18
  82. package/dist/flow-editor/tui.js.map +1 -1
  83. package/dist/orchestrator.d.ts +43 -0
  84. package/dist/orchestrator.d.ts.map +1 -1
  85. package/dist/orchestrator.js +230 -92
  86. package/dist/orchestrator.js.map +1 -1
  87. package/dist/providers/base-completion.d.ts +18 -0
  88. package/dist/providers/base-completion.d.ts.map +1 -1
  89. package/dist/providers/base-completion.js +29 -0
  90. package/dist/providers/base-completion.js.map +1 -1
  91. package/dist/providers/claude/completion-plan-mode.d.ts +9 -1
  92. package/dist/providers/claude/completion-plan-mode.d.ts.map +1 -1
  93. package/dist/providers/claude/completion-plan-mode.js +58 -4
  94. package/dist/providers/claude/completion-plan-mode.js.map +1 -1
  95. package/dist/providers/claude/plan-mode-pty-monitor.d.ts +51 -0
  96. package/dist/providers/claude/plan-mode-pty-monitor.d.ts.map +1 -0
  97. package/dist/providers/claude/plan-mode-pty-monitor.js +97 -0
  98. package/dist/providers/claude/plan-mode-pty-monitor.js.map +1 -0
  99. package/dist/providers/claude/strategy.d.ts.map +1 -1
  100. package/dist/providers/claude/strategy.js +6 -1
  101. package/dist/providers/claude/strategy.js.map +1 -1
  102. package/dist/providers/claude/tool-tracking.d.ts +1 -0
  103. package/dist/providers/claude/tool-tracking.d.ts.map +1 -1
  104. package/dist/providers/claude/tool-tracking.js +3 -0
  105. package/dist/providers/claude/tool-tracking.js.map +1 -1
  106. package/dist/providers/codex/plan-mode-activator.d.ts +23 -0
  107. package/dist/providers/codex/plan-mode-activator.d.ts.map +1 -0
  108. package/dist/providers/codex/plan-mode-activator.js +207 -0
  109. package/dist/providers/codex/plan-mode-activator.js.map +1 -0
  110. package/dist/providers/codex/session.d.ts +1 -0
  111. package/dist/providers/codex/session.d.ts.map +1 -1
  112. package/dist/providers/codex/session.js +35 -18
  113. package/dist/providers/codex/session.js.map +1 -1
  114. package/dist/providers/codex/strategy.d.ts +2 -1
  115. package/dist/providers/codex/strategy.d.ts.map +1 -1
  116. package/dist/providers/codex/strategy.js +17 -13
  117. package/dist/providers/codex/strategy.js.map +1 -1
  118. package/dist/providers/copilot/session.d.ts.map +1 -1
  119. package/dist/providers/copilot/session.js +11 -20
  120. package/dist/providers/copilot/session.js.map +1 -1
  121. package/dist/providers/types.d.ts +76 -0
  122. package/dist/providers/types.d.ts.map +1 -1
  123. package/dist/providers/types.js.map +1 -1
  124. package/dist/pty/spawn.d.ts.map +1 -1
  125. package/dist/pty/spawn.js +6 -1
  126. package/dist/pty/spawn.js.map +1 -1
  127. package/dist/pty/types.d.ts +7 -2
  128. package/dist/pty/types.d.ts.map +1 -1
  129. package/dist/resume-tui.d.ts +52 -0
  130. package/dist/resume-tui.d.ts.map +1 -0
  131. package/dist/resume-tui.js +344 -0
  132. package/dist/resume-tui.js.map +1 -0
  133. package/dist/session/flow-snapshot.d.ts +14 -0
  134. package/dist/session/flow-snapshot.d.ts.map +1 -0
  135. package/dist/session/flow-snapshot.js +28 -0
  136. package/dist/session/flow-snapshot.js.map +1 -0
  137. package/dist/session/list.d.ts +16 -0
  138. package/dist/session/list.d.ts.map +1 -0
  139. package/dist/session/list.js +89 -0
  140. package/dist/session/list.js.map +1 -0
  141. package/dist/session/locator.d.ts +15 -0
  142. package/dist/session/locator.d.ts.map +1 -1
  143. package/dist/session/locator.js +46 -27
  144. package/dist/session/locator.js.map +1 -1
  145. package/dist/session/lock.d.ts +26 -0
  146. package/dist/session/lock.d.ts.map +1 -0
  147. package/dist/session/lock.js +95 -0
  148. package/dist/session/lock.js.map +1 -0
  149. package/dist/session/manifest.d.ts +80 -0
  150. package/dist/session/manifest.d.ts.map +1 -0
  151. package/dist/session/manifest.js +2 -0
  152. package/dist/session/manifest.js.map +1 -0
  153. package/dist/session/persistence.d.ts +19 -0
  154. package/dist/session/persistence.d.ts.map +1 -0
  155. package/dist/session/persistence.js +68 -0
  156. package/dist/session/persistence.js.map +1 -0
  157. package/dist/session/process-start-time.d.ts +17 -0
  158. package/dist/session/process-start-time.d.ts.map +1 -0
  159. package/dist/session/process-start-time.js +99 -0
  160. package/dist/session/process-start-time.js.map +1 -0
  161. package/dist/session/restore.d.ts +31 -0
  162. package/dist/session/restore.d.ts.map +1 -0
  163. package/dist/session/restore.js +111 -0
  164. package/dist/session/restore.js.map +1 -0
  165. package/dist/session/resume.d.ts +5 -0
  166. package/dist/session/resume.d.ts.map +1 -0
  167. package/dist/session/resume.js +109 -0
  168. package/dist/session/resume.js.map +1 -0
  169. package/dist/session/session-store.d.ts +43 -0
  170. package/dist/session/session-store.d.ts.map +1 -0
  171. package/dist/session/session-store.js +134 -0
  172. package/dist/session/session-store.js.map +1 -0
  173. package/dist/startup-tui.d.ts +10 -11
  174. package/dist/startup-tui.d.ts.map +1 -1
  175. package/dist/startup-tui.js +25 -108
  176. package/dist/startup-tui.js.map +1 -1
  177. package/dist/status-bar.js +1 -26
  178. package/dist/status-bar.js.map +1 -1
  179. package/dist/terminal/host.d.ts +22 -9
  180. package/dist/terminal/host.d.ts.map +1 -1
  181. package/dist/terminal/host.js +67 -78
  182. package/dist/terminal/host.js.map +1 -1
  183. package/dist/terminal/input-router.d.ts +24 -103
  184. package/dist/terminal/input-router.d.ts.map +1 -1
  185. package/dist/terminal/input-router.js +63 -364
  186. package/dist/terminal/input-router.js.map +1 -1
  187. package/dist/terminal/key-event-source.d.ts +52 -0
  188. package/dist/terminal/key-event-source.d.ts.map +1 -0
  189. package/dist/terminal/key-event-source.js +31 -0
  190. package/dist/terminal/key-event-source.js.map +1 -0
  191. package/dist/terminal/key-to-bytes.d.ts +11 -0
  192. package/dist/terminal/key-to-bytes.d.ts.map +1 -0
  193. package/dist/terminal/key-to-bytes.js +81 -0
  194. package/dist/terminal/key-to-bytes.js.map +1 -0
  195. package/dist/terminal/koffi-loader.d.ts +14 -0
  196. package/dist/terminal/koffi-loader.d.ts.map +1 -1
  197. package/dist/terminal/koffi-loader.js.map +1 -1
  198. package/dist/terminal/render.d.ts +1 -2
  199. package/dist/terminal/render.d.ts.map +1 -1
  200. package/dist/terminal/render.js +1 -30
  201. package/dist/terminal/render.js.map +1 -1
  202. package/dist/terminal/stdin-byte-source.d.ts +27 -0
  203. package/dist/terminal/stdin-byte-source.d.ts.map +1 -0
  204. package/dist/terminal/stdin-byte-source.js +92 -0
  205. package/dist/terminal/stdin-byte-source.js.map +1 -0
  206. package/dist/terminal/win32-console-mode.d.ts.map +1 -1
  207. package/dist/terminal/win32-console-mode.js.map +1 -1
  208. package/dist/terminal/win32-console-source.d.ts +26 -0
  209. package/dist/terminal/win32-console-source.d.ts.map +1 -0
  210. package/dist/terminal/win32-console-source.js +275 -0
  211. package/dist/terminal/win32-console-source.js.map +1 -0
  212. package/dist/terminal/win32-key-translator.d.ts +26 -0
  213. package/dist/terminal/win32-key-translator.d.ts.map +1 -0
  214. package/dist/terminal/win32-key-translator.js +87 -0
  215. package/dist/terminal/win32-key-translator.js.map +1 -0
  216. package/dist/terminal-input.d.ts +10 -0
  217. package/dist/terminal-input.d.ts.map +1 -1
  218. package/dist/terminal-input.js +132 -113
  219. package/dist/terminal-input.js.map +1 -1
  220. package/dist/user/host-curate-prompt.d.ts +2 -1
  221. package/dist/user/host-curate-prompt.d.ts.map +1 -1
  222. package/dist/user/host-curate-prompt.js +13 -11
  223. package/dist/user/host-curate-prompt.js.map +1 -1
  224. package/dist/user/host-prompt.d.ts +4 -1
  225. package/dist/user/host-prompt.d.ts.map +1 -1
  226. package/dist/user/host-prompt.js +24 -6
  227. package/dist/user/host-prompt.js.map +1 -1
  228. package/dist/user/prompt.d.ts +7 -9
  229. package/dist/user/prompt.d.ts.map +1 -1
  230. package/dist/user/prompt.js +14 -23
  231. package/dist/user/prompt.js.map +1 -1
  232. package/package.json +1 -1
@@ -1,8 +1,9 @@
1
1
  import _Ajv from "ajv";
2
2
  const Ajv = _Ajv.default ?? _Ajv;
3
- import { createSessionDir } from "./session/dir.js";
3
+ import { isAgentInterruptedError } from "./agents/runner.js";
4
+ import { createSessionDir, cleanupSessionDir } from "./session/dir.js";
4
5
  import { getVerdictSchema } from "./prompts.js";
5
- import { readFile, writeFile, unlink } from "node:fs/promises";
6
+ import { readFile, writeFile, unlink, mkdir } from "node:fs/promises";
6
7
  import { join } from "node:path";
7
8
  import { AutoUserPrompt } from "./user/prompt.js";
8
9
  import { HostBackedUserPrompt } from "./user/host-prompt.js";
@@ -17,6 +18,11 @@ import { MapArtifactStore } from "./flow/artifacts.js";
17
18
  import { FlowExecutor } from "./flow/executor.js";
18
19
  import { inspectFlow } from "./flow/inspect.js";
19
20
  import { createHandler } from "./agents/registry.js";
21
+ import { randomUUID } from "node:crypto";
22
+ import { getSessionsDir } from "./config.js";
23
+ import { captureFlowSnapshot } from "./session/flow-snapshot.js";
24
+ import { SessionStore } from "./session/session-store.js";
25
+ import { acquireLock, releaseLock } from "./session/lock.js";
20
26
  import { TASK, handlerKey, } from "./flow/types.js";
21
27
  export class PlannerContractError extends Error {
22
28
  constructor(message) {
@@ -30,6 +36,52 @@ export class ReviewerContractError extends Error {
30
36
  this.name = "ReviewerContractError";
31
37
  }
32
38
  }
39
+ /** Map an `OrchestratorResult` to the CLI's exit code + summary message. */
40
+ export function interpretOrchestrationResult(result) {
41
+ if (result.approved) {
42
+ const implInfo = result.implementation
43
+ ? ` Implementation approved after ${result.implementation.iterations} iteration(s).`
44
+ : "";
45
+ return {
46
+ exitCode: 0,
47
+ exitMessage: `\nPlan approved after ${result.iterations} iteration(s).${implInfo}`,
48
+ };
49
+ }
50
+ if (result.implementation && !result.implementation.approved) {
51
+ return {
52
+ exitCode: 2,
53
+ exitMessage: `\nPlan approved, but implementation NOT approved after ` +
54
+ `${result.implementation.iterations} iteration(s).`,
55
+ };
56
+ }
57
+ return {
58
+ exitCode: 2,
59
+ exitMessage: `\nPlan was NOT approved after ${result.iterations} iteration(s).`,
60
+ };
61
+ }
62
+ /**
63
+ * Map a thrown error from `orchestrateWithTemplate` to the CLI's exit code +
64
+ * summary message. Ctrl+C → 130 (concise), `ClaudeQACaptureError` → 1 (the
65
+ * executor-level hook already dumped). Any other error → 1, with `appendStack`
66
+ * controlling whether the stack trace is appended.
67
+ */
68
+ export function interpretOrchestrationError(err, opts = {}) {
69
+ if (isAgentInterruptedError(err)) {
70
+ return { exitCode: 130, exitMessage: "\nInterrupted." };
71
+ }
72
+ if (err instanceof Error && err.name === "ClaudeQACaptureError") {
73
+ return {
74
+ exitCode: 1,
75
+ exitMessage: `\nFatal: user QA capture failed — ${err.message}. ` +
76
+ `Session dumped to ~/.poly-weaver/troubleshooting/.`,
77
+ };
78
+ }
79
+ const base = `\nFatal error: ${err instanceof Error ? err.message : err}`;
80
+ const exitMessage = opts.appendStack && err instanceof Error
81
+ ? `${base}\n${err.stack}`
82
+ : base;
83
+ return { exitCode: 1, exitMessage };
84
+ }
33
85
  /**
34
86
  * Resolve task content: if the task looks like a file path and exists, read it.
35
87
  * Otherwise, treat it as inline task text.
@@ -174,102 +226,188 @@ export async function orchestrateWithTemplate(opts) {
174
226
  planOnly: !!opts.paramValues.planOnly,
175
227
  }));
176
228
  const handler = createUserPromptHandler(!!opts.paramValues.auto, opts.terminalHost);
177
- const sessionDir = await createSessionDir(opts.workdir ?? process.cwd());
178
- const artifacts = new MapArtifactStore();
179
- if (opts.task) {
180
- const taskContent = await resolveTaskContent(opts.task);
181
- const taskFile = join(sessionDir, "task.md");
182
- await writeFile(taskFile, taskContent, "utf-8");
183
- artifacts.set(TASK, { file: taskFile, text: taskContent });
229
+ const isResume = !!opts.resumeFrom;
230
+ // Persistence is mandatory: fresh runs MUST provide `sourceFile` (so the
231
+ // flow factory can be snapshotted for later resume); resumed runs supply
232
+ // `resumeFrom` (the rehydrated session state). The only escape hatch is
233
+ // `persistence: "disabled"` on the options, used by programmatic callers
234
+ // (unit tests, embedders) that do not exercise the session lifecycle.
235
+ if (!isResume && !opts.sourceFile && opts.persistence !== "disabled") {
236
+ throw new Error("orchestrateWithTemplate: `sourceFile` is required for fresh runs. " +
237
+ "Pass the absolute path to the flow factory file (e.g. its " +
238
+ "SOURCE_FILE export) so the session can be snapshotted and resumed. " +
239
+ "If you are calling the orchestrator programmatically and do not " +
240
+ "want a session directory, set `persistence: \"disabled\"`.");
184
241
  }
185
- const workdir = opts.workdir ?? process.cwd();
186
- // Build flow FIRST so we can scan steps for handler creation
187
- const flow = opts.template.build(opts.paramValues);
188
- // Build handler map by scanning flow steps
189
- const handlers = new Map();
190
- for (const step of collectAgentSteps(flow.steps)) {
191
- const key = handlerKey(step);
192
- if (handlers.has(key))
193
- continue;
194
- handlers.set(key, createHandler(step.role, step.driver, workdir, {
195
- opinionless: opts.opinionless, variant: step.variant, yolo: opts.yolo,
196
- }));
242
+ const persistenceActive = isResume || (!!opts.sourceFile && opts.persistence !== "disabled");
243
+ const workdir = isResume
244
+ ? opts.resumeFrom.manifest.workdir
245
+ : (opts.workdir ?? process.cwd());
246
+ let persistentDir;
247
+ let manifest;
248
+ let sessionStore;
249
+ if (persistenceActive) {
250
+ if (isResume) {
251
+ persistentDir = opts.resumeFrom.persistentDir;
252
+ manifest = opts.resumeFrom.manifest;
253
+ }
254
+ else {
255
+ const tsSlug = new Date().toISOString().replace(/[:.]/g, "-");
256
+ const sessionId = `${tsSlug}-${randomUUID().slice(0, 8)}`;
257
+ persistentDir = join(getSessionsDir(), sessionId);
258
+ await mkdir(persistentDir, { recursive: true });
259
+ await captureFlowSnapshot(opts.sourceFile, persistentDir);
260
+ manifest = {
261
+ version: 1,
262
+ sessionId,
263
+ createdAt: new Date().toISOString(),
264
+ lastActivityAt: new Date().toISOString(),
265
+ status: "active",
266
+ workdir,
267
+ taskText: opts.task ?? "",
268
+ flow: {
269
+ name: opts.template.name,
270
+ kind: opts.flowKind ?? "built-in",
271
+ params: opts.paramValues,
272
+ },
273
+ options: {
274
+ opinionless: !!opts.opinionless,
275
+ yolo: !!opts.yolo,
276
+ },
277
+ lastCompletedSeq: -1,
278
+ polyWeaverVersion: opts.polyWeaverVersion ?? "0.0.0",
279
+ };
280
+ }
281
+ await acquireLock(persistentDir, manifest.createdAt);
282
+ sessionStore = new SessionStore(persistentDir, manifest);
283
+ if (isResume) {
284
+ await sessionStore.initForResume();
285
+ }
286
+ else {
287
+ await sessionStore.init();
288
+ }
197
289
  }
198
- handlers.set("user", new UserRoleHandler(handler));
199
- const curatePrompt = createCuratePromptHandler(!!opts.paramValues.auto, opts.terminalHost);
200
- handlers.set("user:curate-verdict", new CurateVerdictRoleHandler(curatePrompt));
201
- // Build context
202
- const ctx = {
203
- sessionDir,
204
- artifacts,
205
- sessionIds: new Map(),
206
- loopIterations: new Map(),
207
- loopCycle: new Map(),
208
- totalIterations: 0,
209
- nextClarificationNumber: 1,
210
- statusBar: opts.statusBar,
211
- output: opts.output ?? defaultOutput,
212
- terminalHost: opts.terminalHost,
213
- };
214
- // Wire dump service
215
- if (opts.dumpService) {
216
- opts.dumpService.init(flow.name, opts.paramValues, workdir, ctx);
217
- ctx.onStepCompleted = opts.dumpService.onStepCompleted;
218
- ctx.onInFlightStepFailed = async (err) => {
219
- // Filter on noRetry so only fail-fast errors (currently
220
- // ClaudeQACaptureError) auto-trigger a dump. Other planner/
221
- // reviewer errors continue to retry as before.
222
- if (err?.noRetry === true) {
223
- await opts.dumpService.trigger();
224
- }
290
+ const ephemeralSessionDir = await createSessionDir(workdir);
291
+ const artifacts = new MapArtifactStore();
292
+ try {
293
+ // Seed TASK from opts.task (fresh) or from manifest.taskText (resume).
294
+ const taskSource = isResume ? opts.resumeFrom.manifest.taskText : (opts.task ?? "");
295
+ if (taskSource) {
296
+ const taskContent = await resolveTaskContent(taskSource);
297
+ const taskFile = join(ephemeralSessionDir, "task.md");
298
+ await writeFile(taskFile, taskContent, "utf-8");
299
+ artifacts.set(TASK, { file: taskFile, text: taskContent });
300
+ }
301
+ // Build flow before handlers so we can scan steps to know which roles to register.
302
+ const flow = opts.template.build(opts.paramValues);
303
+ const handlers = new Map();
304
+ for (const step of collectAgentSteps(flow.steps)) {
305
+ const key = handlerKey(step);
306
+ if (handlers.has(key))
307
+ continue;
308
+ handlers.set(key, createHandler(step.role, step.driver, workdir, {
309
+ opinionless: opts.opinionless, variant: step.variant, yolo: opts.yolo,
310
+ }));
311
+ }
312
+ handlers.set("user", new UserRoleHandler(handler));
313
+ const curatePrompt = createCuratePromptHandler(!!opts.paramValues.auto, opts.terminalHost);
314
+ handlers.set("user:curate-verdict", new CurateVerdictRoleHandler(curatePrompt));
315
+ const ctx = {
316
+ sessionDir: ephemeralSessionDir,
317
+ artifacts,
318
+ sessionIds: new Map(),
319
+ loopIterations: new Map(),
320
+ loopCycle: new Map(),
321
+ totalIterations: 0,
322
+ nextClarificationNumber: 1,
323
+ statusBar: opts.statusBar,
324
+ output: opts.output ?? defaultOutput,
325
+ terminalHost: opts.terminalHost,
225
326
  };
226
- }
227
- // Execute
228
- const executor = new FlowExecutor(flow, handlers, opts.statusBar);
229
- await executor.execute(ctx);
230
- // Extract results via semantic flow inspection
231
- const { loops } = inspectFlow(flow);
232
- // Plan loops: all loops that produce a "plan" write key
233
- const planLoopsAll = loops.filter(l => "plan" in l.ownWrites);
234
- // Use the deepest plan loop for iteration count (inner agent-review loop in interactive mode)
235
- const agentReviewLoop = planLoopsAll.length > 0
236
- ? planLoopsAll.reduce((deepest, l) => l.depth > deepest.depth ? l : deepest)
237
- : undefined;
238
- // Use the shallowest plan loop for artifact extraction (outer loop has plan + verdict)
239
- const planLoop = planLoopsAll.length > 0
240
- ? planLoopsAll.reduce((shallowest, l) => l.depth < shallowest.depth ? l : shallowest)
241
- : undefined;
242
- const planText = planLoop
243
- ? ctx.artifacts.getText(planLoop.ownWrites.plan) ?? ""
244
- : "";
245
- const planVerdictData = planLoop && "verdict" in planLoop.ownWrites
246
- ? ctx.artifacts.getData(planLoop.ownWrites.verdict)
247
- : undefined;
248
- const planIterations = agentReviewLoop
249
- ? ctx.loopIterations.get(agentReviewLoop.id) ?? ctx.totalIterations
250
- : ctx.totalIterations;
251
- const result = {
252
- plan: planText,
253
- iterations: planIterations,
254
- approved: planVerdictData?.approved ?? false,
255
- verdict: planVerdictData,
256
- };
257
- // Impl loop: a different top-level loop with "verdict" but not the plan loop
258
- const topLoops = loops.filter(l => l.depth === 0);
259
- const implLoop = topLoops.find(l => l !== planLoop && "verdict" in l.ownWrites);
260
- if (implLoop) {
261
- const implVerdictData = ctx.artifacts.getData(implLoop.ownWrites.verdict);
262
- if (implVerdictData !== undefined) {
263
- const implIterations = ctx.loopIterations.get(implLoop.id) ?? 0;
264
- result.implementation = {
265
- approved: implVerdictData.approved ?? false,
266
- iterations: implIterations,
267
- verdict: implVerdictData,
327
+ if (isResume) {
328
+ const rf = opts.resumeFrom;
329
+ ctx.resumeEphemeralDir = ephemeralSessionDir;
330
+ if (rf.manifest.lastCompletedSeq >= 0) {
331
+ ctx.resumeUntilSeq = rf.manifest.lastCompletedSeq;
332
+ ctx.completedSnapshots = rf.steps;
333
+ }
334
+ // else: no-checkpoint resume leave resumeUntilSeq undefined so the
335
+ // executor runs from seq = 0 with the seeded TASK artifact.
336
+ }
337
+ sessionStore?.bindContext(ctx);
338
+ const dumpCb = opts.dumpService?.onStepCompleted;
339
+ const storeCb = sessionStore?.onStepCompleted;
340
+ if (opts.dumpService) {
341
+ const resumedFrom = isResume
342
+ ? { sessionId: opts.resumeFrom.sessionId, resumedAt: new Date().toISOString() }
343
+ : undefined;
344
+ opts.dumpService.init(flow.name, opts.paramValues, workdir, ctx, resumedFrom);
345
+ ctx.onInFlightStepFailed = async (err) => {
346
+ if (err?.noRetry === true) {
347
+ await opts.dumpService.trigger();
348
+ }
268
349
  };
269
- result.approved = result.approved && (implVerdictData.approved ?? false);
270
350
  }
351
+ if (dumpCb || storeCb) {
352
+ ctx.onStepCompleted = async (r) => {
353
+ if (dumpCb)
354
+ dumpCb(r);
355
+ if (storeCb)
356
+ await storeCb(r);
357
+ };
358
+ }
359
+ const executor = new FlowExecutor(flow, handlers, opts.statusBar);
360
+ await executor.execute(ctx);
361
+ const { loops } = inspectFlow(flow);
362
+ // Plan loops: all loops that produce a "plan" write key
363
+ const planLoopsAll = loops.filter(l => "plan" in l.ownWrites);
364
+ // Use the deepest plan loop for iteration count (inner agent-review loop in interactive mode)
365
+ const agentReviewLoop = planLoopsAll.length > 0
366
+ ? planLoopsAll.reduce((deepest, l) => l.depth > deepest.depth ? l : deepest)
367
+ : undefined;
368
+ // Use the shallowest plan loop for artifact extraction (outer loop has plan + verdict)
369
+ const planLoop = planLoopsAll.length > 0
370
+ ? planLoopsAll.reduce((shallowest, l) => l.depth < shallowest.depth ? l : shallowest)
371
+ : undefined;
372
+ const planText = planLoop
373
+ ? ctx.artifacts.getText(planLoop.ownWrites.plan) ?? ""
374
+ : "";
375
+ const planVerdictData = planLoop && "verdict" in planLoop.ownWrites
376
+ ? ctx.artifacts.getData(planLoop.ownWrites.verdict)
377
+ : undefined;
378
+ const planIterations = agentReviewLoop
379
+ ? ctx.loopIterations.get(agentReviewLoop.id) ?? ctx.totalIterations
380
+ : ctx.totalIterations;
381
+ const result = {
382
+ plan: planText,
383
+ iterations: planIterations,
384
+ approved: planVerdictData?.approved ?? false,
385
+ verdict: planVerdictData,
386
+ };
387
+ // Impl loop: a different top-level loop with "verdict" but not the plan loop
388
+ const topLoops = loops.filter(l => l.depth === 0);
389
+ const implLoop = topLoops.find(l => l !== planLoop && "verdict" in l.ownWrites);
390
+ if (implLoop) {
391
+ const implVerdictData = ctx.artifacts.getData(implLoop.ownWrites.verdict);
392
+ if (implVerdictData !== undefined) {
393
+ const implIterations = ctx.loopIterations.get(implLoop.id) ?? 0;
394
+ result.implementation = {
395
+ approved: implVerdictData.approved ?? false,
396
+ iterations: implIterations,
397
+ verdict: implVerdictData,
398
+ };
399
+ result.approved = result.approved && (implVerdictData.approved ?? false);
400
+ }
401
+ }
402
+ if (sessionStore)
403
+ await sessionStore.markComplete();
404
+ return result;
405
+ }
406
+ finally {
407
+ await cleanupSessionDir(ephemeralSessionDir);
408
+ if (persistentDir)
409
+ await releaseLock(persistentDir).catch(() => { });
271
410
  }
272
- return result;
273
411
  }
274
412
  /** Recursively walk flow steps and yield all AgentStep nodes. */
275
413
  function collectAgentSteps(steps) {
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,24 @@ export declare abstract class AbstractCompletionDetector implements CompletionDe
65
65
  * the task is done (e.g., Codex, Copilot).
66
66
  */
67
67
  protected shouldSuppressPtyTimerReset(): boolean;
68
+ /**
69
+ * Return true when a secondary completion signal has corroborated readiness
70
+ * (e.g. PTY-rendered dialog + JSONL artifact agree). Resolves immediately
71
+ * — no quiet-debounce wait, no stale-fallback wait. Default: false.
72
+ *
73
+ * Order in the no-growth branch: primary > secondary > stale.
74
+ *
75
+ * MUST be a pure predicate — no side effects. Use
76
+ * `onSecondarySignalResolved()` for observability hooks that should fire
77
+ * exactly once when the secondary arm actually wins.
78
+ */
79
+ protected isSecondarySignalReady(): boolean;
80
+ /**
81
+ * Invoked exactly once when the secondary-signal arm resolves the run,
82
+ * immediately before `dispose()` and `resolve()`. Default: no-op.
83
+ * Subclasses override to emit observability logs.
84
+ */
85
+ protected onSecondarySignalResolved(): void;
68
86
  /**
69
87
  * Return true when relaxed completion conditions are met, enabling the
70
88
  * staleness fallback. The fallback resolves when the session file has not
@@ -1 +1 @@
1
- {"version":3,"file":"base-completion.d.ts","sourceRoot":"","sources":["../../src/providers/base-completion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAAsB,0BAA2B,YAAW,kBAAkB;IAwB1E,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAzBlC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAK;IAEvB,SAAS,CAAC,YAAY,SAAK;IAC3B,4EAA4E;IAC5E,SAAS,CAAC,kBAAkB,SAAK;IACjC,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,CAAM;IAC9C;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,CAAM;gBAGtB,MAAM,SAAM,EACZ,OAAO,SAAM,EACb,eAAe,SAAW;IAG7C,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB3D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B,OAAO,IAAI,IAAI;IAUf,qEAAqE;IACrE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;IAE3D,2EAA2E;IAC3E,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,OAAO;IAElD,iEAAiE;IACjE,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM;IAEhE;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO;IAI5D;;;;OAIG;IACH,SAAS,CAAC,2BAA2B,IAAI,OAAO;IAIhD;;;;;;;;OAQG;IACH,SAAS,CAAC,oBAAoB,IAAI,OAAO;YAM3B,IAAI;CAmDnB"}
1
+ {"version":3,"file":"base-completion.d.ts","sourceRoot":"","sources":["../../src/providers/base-completion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAAsB,0BAA2B,YAAW,kBAAkB;IAwB1E,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAzBlC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAK;IAEvB,SAAS,CAAC,YAAY,SAAK;IAC3B,4EAA4E;IAC5E,SAAS,CAAC,kBAAkB,SAAK;IACjC,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,CAAM;IAC9C;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,CAAM;gBAGtB,MAAM,SAAM,EACZ,OAAO,SAAM,EACb,eAAe,SAAW;IAG7C,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB3D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B,OAAO,IAAI,IAAI;IAUf,qEAAqE;IACrE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;IAE3D,2EAA2E;IAC3E,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,OAAO;IAElD,iEAAiE;IACjE,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM;IAEhE;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO;IAI5D;;;;OAIG;IACH,SAAS,CAAC,2BAA2B,IAAI,OAAO;IAIhD;;;;;;;;;;OAUG;IACH,SAAS,CAAC,sBAAsB,IAAI,OAAO;IAI3C;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,IAAI,IAAI;IAE3C;;;;;;;;OAQG;IACH,SAAS,CAAC,oBAAoB,IAAI,OAAO;YAM3B,IAAI;CA4DnB"}
@@ -89,6 +89,26 @@ export class AbstractCompletionDetector {
89
89
  shouldSuppressPtyTimerReset() {
90
90
  return false;
91
91
  }
92
+ /**
93
+ * Return true when a secondary completion signal has corroborated readiness
94
+ * (e.g. PTY-rendered dialog + JSONL artifact agree). Resolves immediately
95
+ * — no quiet-debounce wait, no stale-fallback wait. Default: false.
96
+ *
97
+ * Order in the no-growth branch: primary > secondary > stale.
98
+ *
99
+ * MUST be a pure predicate — no side effects. Use
100
+ * `onSecondarySignalResolved()` for observability hooks that should fire
101
+ * exactly once when the secondary arm actually wins.
102
+ */
103
+ isSecondarySignalReady() {
104
+ return false;
105
+ }
106
+ /**
107
+ * Invoked exactly once when the secondary-signal arm resolves the run,
108
+ * immediately before `dispose()` and `resolve()`. Default: no-op.
109
+ * Subclasses override to emit observability logs.
110
+ */
111
+ onSecondarySignalResolved() { }
92
112
  /**
93
113
  * Return true when relaxed completion conditions are met, enabling the
94
114
  * staleness fallback. The fallback resolves when the session file has not
@@ -115,6 +135,15 @@ export class AbstractCompletionDetector {
115
135
  this.dispose();
116
136
  this.resolve?.(text);
117
137
  }
138
+ // Secondary signal: corroborating evidence outside the JSONL (e.g.,
139
+ // PTY-rendered dialog + matching JSONL artifact) resolves immediately,
140
+ // without waiting for the quiet debounce or the stale-fallback timer.
141
+ else if (this.isSecondarySignalReady()) {
142
+ const text = this.extractResponse(this.lastParsedLines);
143
+ this.onSecondarySignalResolved();
144
+ this.dispose();
145
+ this.resolve?.(text);
146
+ }
118
147
  // Staleness fallback: resolve when the primary signal can't fire (e.g.,
119
148
  // missing end_turn JSONL entry) but relaxed conditions are met and the
120
149
  // session file has been quiet for staleFallbackMs.
@@ -1 +1 @@
1
- {"version":3,"file":"base-completion.js","sourceRoot":"","sources":["../../src/providers/base-completion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-completion.js","sourceRoot":"","sources":["../../src/providers/base-completion.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { SessionLine } from "../../session/reader.js";
2
2
  import { AbstractCompletionDetector } from "../base-completion.js";
3
+ import type { ClaudePlanModePtyMonitor } from "./plan-mode-pty-monitor.js";
3
4
  /**
4
5
  * Native Claude plan-mode completion detection.
5
6
  *
@@ -9,6 +10,7 @@ import { AbstractCompletionDetector } from "../base-completion.js";
9
10
  */
10
11
  export declare class ClaudePlanModeDetector extends AbstractCompletionDetector {
11
12
  private readonly exitToolName;
13
+ private readonly ptyMonitor?;
12
14
  private pendingToolUses;
13
15
  private pendingNonAsyncToolUses;
14
16
  private exitToolCalled;
@@ -17,12 +19,18 @@ export declare class ClaudePlanModeDetector extends AbstractCompletionDetector {
17
19
  private sawResolvedAskUserQuestionPrefetch;
18
20
  private lastRelevantToolResultIdx;
19
21
  private lastResolvedPlanFileWriteResultIdx;
22
+ private lastResolvedPlanFileWritePath;
20
23
  private lastToolResultIdx;
21
24
  private lastAssistantLineIdx;
22
- constructor(pollMs?: number, quietMs?: number, exitToolName?: string, staleFallbackMs?: number);
25
+ constructor(pollMs?: number, quietMs?: number, exitToolName?: string, staleFallbackMs?: number, ptyMonitor?: ClaudePlanModePtyMonitor | undefined);
26
+ onPtyData(data: string): void;
27
+ dispose(): void;
23
28
  protected analyzeLines(currentLines: SessionLine[]): void;
24
29
  protected isPrimarySignalFired(): boolean;
25
30
  protected shouldShortCircuit(_lines: SessionLine[]): boolean;
31
+ protected isSecondarySignalReady(): boolean;
32
+ protected onSecondarySignalResolved(): void;
33
+ private resolvedPlanFileBasename;
26
34
  protected isStaleFallbackReady(): boolean;
27
35
  protected shouldSuppressPtyTimerReset(): boolean;
28
36
  protected extractResponse(lines: SessionLine[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"completion-plan-mode.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/completion-plan-mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAOnE;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,0BAA0B;IAelE,OAAO,CAAC,QAAQ,CAAC,YAAY;IAd/B,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,+BAA+B,CAAS;IAChD,OAAO,CAAC,kCAAkC,CAAS;IACnD,OAAO,CAAC,yBAAyB,CAAM;IACvC,OAAO,CAAC,kCAAkC,CAAM;IAChD,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,oBAAoB,CAAM;gBAGhC,MAAM,SAAM,EACZ,OAAO,SAAM,EACI,YAAY,SAAiB,EAC9C,eAAe,SAAS;IAK1B,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI;IA8DzD,SAAS,CAAC,oBAAoB,IAAI,OAAO;cAItB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO;cAIlD,oBAAoB,IAAI,OAAO;cAoB/B,2BAA2B,IAAI,OAAO;IAOzD,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM;CAGxD"}
1
+ {"version":3,"file":"completion-plan-mode.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/completion-plan-mode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAKnE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG3E;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,0BAA0B;IAgBlE,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAjB9B,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,+BAA+B,CAAS;IAChD,OAAO,CAAC,kCAAkC,CAAS;IACnD,OAAO,CAAC,yBAAyB,CAAM;IACvC,OAAO,CAAC,kCAAkC,CAAM;IAChD,OAAO,CAAC,6BAA6B,CAAqB;IAC1D,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,oBAAoB,CAAM;gBAGhC,MAAM,SAAM,EACZ,OAAO,SAAM,EACI,YAAY,SAAiB,EAC9C,eAAe,SAAU,EACR,UAAU,CAAC,EAAE,wBAAwB,YAAA;IAK/C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK7B,OAAO,IAAI,IAAI;IAKxB,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI;IAkEzD,SAAS,CAAC,oBAAoB,IAAI,OAAO;cAItB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO;cAIlD,sBAAsB,IAAI,OAAO;cA4BjC,yBAAyB,IAAI,IAAI;IAOpD,OAAO,CAAC,wBAAwB;cAMb,oBAAoB,IAAI,OAAO;cAoB/B,2BAA2B,IAAI,OAAO;IAQzD,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM;CAGxD"}