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,167 +1,24 @@
1
1
  /** VT control byte for Ctrl+] (0x1D — works on all terminals). */
2
2
  export const DUMP_HOTKEY_BYTE = 0x1d;
3
- function isDumpHotkeyCsi(finalByte, csiParams) {
4
- if (finalByte !== 0x75 /* 'u' */) {
5
- return false;
6
- }
7
- const parts = csiParams.split(";");
8
- const keyCode = parseInt(parts[0]?.split(":")[0] ?? "", 10);
9
- const modifierPart = parts[1] ?? "1";
10
- const modifiers = parseInt(modifierPart.split(":")[0] ?? "1", 10);
11
- const eventTypeRaw = modifierPart.split(":")[1];
12
- const eventType = eventTypeRaw ? parseInt(eventTypeRaw, 10) : 1;
13
- if (!Number.isFinite(keyCode) || !Number.isFinite(modifiers)) {
14
- return false;
15
- }
16
- if (eventType === 3) {
17
- return false;
18
- }
19
- return keyCode === 93 && ((modifiers - 1) & 0x04) !== 0;
20
- }
21
- /**
22
- * Win32-input-mode: CSI Vk;Sc;Uc;Kd;Cs;Rc _
23
- * Returns "trigger" on matching key-down, "consume" on matching key-up
24
- * (so the orphan half doesn't leak to the child), or false for non-matching.
25
- */
26
- function isDumpHotkeyWin32(csiParams) {
27
- const parts = csiParams.split(";");
28
- if (parts.length !== 6)
29
- return false;
30
- const uc = parseInt(parts[2], 10);
31
- if (!Number.isFinite(uc) || uc !== DUMP_HOTKEY_BYTE)
32
- return false;
33
- const kd = parseInt(parts[3], 10);
34
- if (kd === 1)
35
- return "trigger";
36
- if (kd === 0)
37
- return "consume";
38
- return false;
39
- }
40
3
  /**
41
- * Triple-path Ctrl+] detector (VT byte 0x1D, passive kitty CSI, win32-input-mode).
42
- *
43
- * VT path: byte 0x1D in the "idle" state triggers immediately — no
44
- * multi-byte ambiguity, works on all terminals.
4
+ * Single dump-hotkey check operating on a structured `TerminalKey`.
45
5
  *
46
- * Passive kitty path: \x1b[93;5u (and variants like \x1b[93;5:1u) are
47
- * recognized via the CSI state machine for terminals that independently
48
- * enable the Kitty keyboard protocol.
6
+ * Matches:
7
+ * - VT path: `{ kind: "control", byte: 0x1D }` (Ctrl+])
8
+ * - Kitty path: `{ kind: "kitty-key", keyCode: 93, modifiers }` with
9
+ * Ctrl bit set (`(modifiers - 1) & 0x04`).
49
10
  *
50
- * Win32-input-mode path: CSI Vk;Sc;Uc;Kd;Cs;Rc _ where Uc === 0x1D.
51
- * Key-down (Kd=1) triggers the dump; key-up (Kd=0) is consumed silently
52
- * so the child PTY does not receive an orphan half of the hotkey.
53
- *
54
- * Handles CSI sequences split across chunk boundaries by buffering ESC +
55
- * parameter bytes until a final byte arrives.
11
+ * The Win32-input-mode path emits `control:0x1D` after the parser
12
+ * translates it, so no separate branch is needed here.
56
13
  */
57
- export class DumpHotkeyDetector {
58
- onTrigger;
59
- onDeferredFlush;
60
- timeoutMs;
61
- state = "idle";
62
- buffer = [];
63
- csiParams = "";
64
- flushTimer;
65
- constructor(onTrigger, onDeferredFlush, timeoutMs = 50) {
66
- this.onTrigger = onTrigger;
67
- this.onDeferredFlush = onDeferredFlush;
68
- this.timeoutMs = timeoutMs;
69
- }
70
- /**
71
- * Process incoming stdin data. Returns a Buffer of bytes to forward
72
- * to the PTY process. Consumed hotkey bytes are excluded.
73
- */
74
- process(data) {
75
- if (this.flushTimer != null) {
76
- clearTimeout(this.flushTimer);
77
- this.flushTimer = undefined;
78
- }
79
- const forward = [];
80
- for (const byte of data) {
81
- switch (this.state) {
82
- case "idle":
83
- if (byte === DUMP_HOTKEY_BYTE) {
84
- this.onTrigger();
85
- // Consume the byte — don't forward it
86
- }
87
- else if (byte === 0x1b) {
88
- this.state = "gotEsc";
89
- this.buffer = [byte];
90
- }
91
- else {
92
- forward.push(byte);
93
- }
94
- break;
95
- case "gotEsc":
96
- if (byte === 0x5b) { // '['
97
- this.state = "inCsi";
98
- this.buffer.push(byte);
99
- this.csiParams = "";
100
- }
101
- else {
102
- // Not a CSI — flush buffer + this byte
103
- forward.push(...this.buffer, byte);
104
- this.reset();
105
- }
106
- break;
107
- case "inCsi":
108
- if (byte >= 0x40 && byte <= 0x7e) {
109
- // CSI final byte
110
- if (isDumpHotkeyCsi(byte, this.csiParams)) {
111
- // Match: passive kitty Ctrl+] — consume, trigger callback
112
- this.onTrigger();
113
- this.reset();
114
- }
115
- else {
116
- const win32 = byte === 0x5f /* '_' */
117
- ? isDumpHotkeyWin32(this.csiParams)
118
- : false;
119
- if (win32 === "trigger") {
120
- this.onTrigger();
121
- this.reset();
122
- }
123
- else if (win32 === "consume") {
124
- // Key-up half — consume silently so child PTY doesn't get orphan
125
- this.reset();
126
- }
127
- else {
128
- // Not our sequence — flush everything
129
- forward.push(...this.buffer, byte);
130
- this.reset();
131
- }
132
- }
133
- }
134
- else {
135
- // CSI parameter/intermediate byte — accumulate
136
- this.buffer.push(byte);
137
- this.csiParams += String.fromCharCode(byte);
138
- }
139
- break;
140
- }
141
- }
142
- // If we're mid-sequence at the end of a chunk, set a timeout to flush
143
- // in case the rest of the sequence never arrives (e.g., bare ESC key)
144
- if (this.state !== "idle") {
145
- this.flushTimer = setTimeout(() => {
146
- this.flushTimer = undefined;
147
- const stale = Buffer.from(this.buffer);
148
- this.reset();
149
- if (stale.length > 0)
150
- this.onDeferredFlush(stale);
151
- }, this.timeoutMs);
152
- }
153
- return Buffer.from(forward);
154
- }
155
- destroy() {
156
- if (this.flushTimer != null) {
157
- clearTimeout(this.flushTimer);
158
- this.flushTimer = undefined;
159
- }
160
- }
161
- reset() {
162
- this.state = "idle";
163
- this.buffer = [];
164
- this.csiParams = "";
14
+ export function isDumpHotkey(key) {
15
+ if (key.kind === "control" && key.byte === DUMP_HOTKEY_BYTE)
16
+ return true;
17
+ if (key.kind === "kitty-key"
18
+ && key.keyCode === 93
19
+ && ((key.modifiers - 1) & 0x04) !== 0) {
20
+ return true;
165
21
  }
22
+ return false;
166
23
  }
167
24
  //# sourceMappingURL=hotkey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hotkey.js","sourceRoot":"","sources":["../../src/dump/hotkey.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,SAAS,eAAe,CAAC,SAAiB,EAAE,SAAiB;IAC3D,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAErC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAElE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,kBAAkB;IAOV;IACA;IACA;IARX,KAAK,GAAgC,MAAM,CAAC;IAC5C,MAAM,GAAa,EAAE,CAAC;IACtB,SAAS,GAAG,EAAE,CAAC;IACf,UAAU,CAA4C;IAE9D,YACmB,SAAqB,EACrB,eAAuC,EACvC,YAAY,EAAE;QAFd,cAAS,GAAT,SAAS,CAAY;QACrB,oBAAe,GAAf,eAAe,CAAwB;QACvC,cAAS,GAAT,SAAS,CAAK;IAC9B,CAAC;IAEJ;;;OAGG;IACH,OAAO,CAAC,IAAY;QAClB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;QAED,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,KAAK,MAAM;oBACT,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,sCAAsC;oBACxC,CAAC;yBAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBACzB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;wBACtB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;oBACvB,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC;oBACD,MAAM;gBAER,KAAK,QAAQ;oBACX,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC,CAAE,MAAM;wBAC1B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;oBACtB,CAAC;yBAAM,CAAC;wBACN,uCAAuC;wBACvC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBACnC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,CAAC;oBACD,MAAM;gBAER,KAAK,OAAO;oBACV,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;wBACjC,iBAAiB;wBACjB,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC1C,0DAA0D;4BAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;4BACjB,IAAI,CAAC,KAAK,EAAE,CAAC;wBACf,CAAC;6BAAM,CAAC;4BACN,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS;gCACnC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;gCACnC,CAAC,CAAC,KAAK,CAAC;4BACV,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gCACxB,IAAI,CAAC,SAAS,EAAE,CAAC;gCACjB,IAAI,CAAC,KAAK,EAAE,CAAC;4BACf,CAAC;iCAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gCAC/B,iEAAiE;gCACjE,IAAI,CAAC,KAAK,EAAE,CAAC;4BACf,CAAC;iCAAM,CAAC;gCACN,sCAAsC;gCACtC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gCACnC,IAAI,CAAC,KAAK,EAAE,CAAC;4BACf,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,+CAA+C;wBAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC9C,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,sEAAsE;QACtE,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACpD,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"hotkey.js","sourceRoot":"","sources":["../../src/dump/hotkey.ts"],"names":[],"mappings":"AAEA,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,GAAgB;IAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACzE,IACE,GAAG,CAAC,IAAI,KAAK,WAAW;WACrB,GAAG,CAAC,OAAO,KAAK,EAAE;WAClB,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EACrC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,25 @@
1
+ export interface PtyTailSnapshot {
2
+ /** Raw bytes — last N bytes of PTY child output, byte-exact. */
3
+ raw: Buffer;
4
+ /** UTF-8 decode of `raw` with broad ANSI / CSI / OSC / bracketed-paste stripping. */
5
+ stripped: string;
6
+ }
7
+ /**
8
+ * Byte-faithful ring buffer that retains the latest N bytes of PTY output.
9
+ *
10
+ * node-pty delivers `string` (UTF-8 decoded) chunks; this buffer re-encodes
11
+ * each chunk as UTF-8 bytes so the stored tail is byte-identical to the
12
+ * underlying PTY stream. Capacity is enforced in bytes — mid-codepoint
13
+ * splits at the head are tolerated and surface as U+FFFD when the tail is
14
+ * decoded for the .txt artifact.
15
+ */
16
+ export declare class PtyTailBuffer {
17
+ private readonly capacityBytes;
18
+ private chunks;
19
+ private byteSize;
20
+ constructor(capacityBytes?: number);
21
+ append(chunk: string): void;
22
+ private trim;
23
+ snapshot(): PtyTailSnapshot;
24
+ }
25
+ //# sourceMappingURL=pty-tail-buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty-tail-buffer.d.ts","sourceRoot":"","sources":["../../src/dump/pty-tail-buffer.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID;;;;;;;;GAQG;AACH,qBAAa,aAAa;IAIZ,OAAO,CAAC,QAAQ,CAAC,aAAa;IAH1C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAK;gBAEQ,aAAa,SAAyB;IAEnE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3B,OAAO,CAAC,IAAI;IAeZ,QAAQ,IAAI,eAAe;CAK5B"}
@@ -0,0 +1,48 @@
1
+ import { STRIP_ALL_ANSI_RE } from "../ansi.js";
2
+ const DEFAULT_CAPACITY_BYTES = 256 * 1024;
3
+ /**
4
+ * Byte-faithful ring buffer that retains the latest N bytes of PTY output.
5
+ *
6
+ * node-pty delivers `string` (UTF-8 decoded) chunks; this buffer re-encodes
7
+ * each chunk as UTF-8 bytes so the stored tail is byte-identical to the
8
+ * underlying PTY stream. Capacity is enforced in bytes — mid-codepoint
9
+ * splits at the head are tolerated and surface as U+FFFD when the tail is
10
+ * decoded for the .txt artifact.
11
+ */
12
+ export class PtyTailBuffer {
13
+ capacityBytes;
14
+ chunks = [];
15
+ byteSize = 0;
16
+ constructor(capacityBytes = DEFAULT_CAPACITY_BYTES) {
17
+ this.capacityBytes = capacityBytes;
18
+ }
19
+ append(chunk) {
20
+ if (chunk.length === 0)
21
+ return;
22
+ const buf = Buffer.from(chunk, "utf-8");
23
+ this.chunks.push(buf);
24
+ this.byteSize += buf.length;
25
+ this.trim();
26
+ }
27
+ trim() {
28
+ while (this.byteSize > this.capacityBytes && this.chunks.length > 0) {
29
+ const head = this.chunks[0];
30
+ if (this.byteSize - head.length >= this.capacityBytes) {
31
+ this.chunks.shift();
32
+ this.byteSize -= head.length;
33
+ }
34
+ else {
35
+ const dropBytes = this.byteSize - this.capacityBytes;
36
+ this.chunks[0] = head.subarray(dropBytes);
37
+ this.byteSize -= dropBytes;
38
+ break;
39
+ }
40
+ }
41
+ }
42
+ snapshot() {
43
+ const raw = Buffer.concat(this.chunks, this.byteSize);
44
+ const stripped = raw.toString("utf-8").replace(STRIP_ALL_ANSI_RE, "");
45
+ return { raw, stripped };
46
+ }
47
+ }
48
+ //# sourceMappingURL=pty-tail-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty-tail-buffer.js","sourceRoot":"","sources":["../../src/dump/pty-tail-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAS/C,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,CAAC;AAE1C;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAa;IAIK;IAHrB,MAAM,GAAa,EAAE,CAAC;IACtB,QAAQ,GAAG,CAAC,CAAC;IAErB,YAA6B,gBAAgB,sBAAsB;QAAtC,kBAAa,GAAb,aAAa,CAAyB;IAAG,CAAC;IAEvE,MAAM,CAAC,KAAa;QAClB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC;gBAC3B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACtE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import type { StatusBar } from "../status-bar.js";
2
2
  import type { StepContext } from "../flow/types.js";
3
- import { type StepRecord } from "./types.js";
3
+ import { type ResumedFromInfo, type StepRecord } from "./types.js";
4
4
  export declare class DumpService {
5
5
  private readonly version;
6
6
  private readonly statusBar?;
@@ -11,13 +11,14 @@ export declare class DumpService {
11
11
  private workdir;
12
12
  private flowName;
13
13
  private flowParams;
14
+ private resumedFrom;
14
15
  private static DEBOUNCE_MS;
15
16
  constructor(version: string, statusBar?: StatusBar | undefined);
16
17
  /**
17
18
  * Called by orchestrator after ctx is created.
18
19
  * @param workdir - the real project directory (NOT ctx.sessionDir)
19
20
  */
20
- init(flowName: string, flowParams: Record<string, unknown>, workdir: string, ctx: StepContext): void;
21
+ init(flowName: string, flowParams: Record<string, unknown>, workdir: string, ctx: StepContext, resumedFrom?: ResumedFromInfo): void;
21
22
  readonly onStepCompleted: (record: StepRecord) => void;
22
23
  /** Best-effort snapshot of output artifacts for the in-flight step. */
23
24
  private snapshotOutputs;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/dump/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGvF,qBAAa,WAAW;IAYpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAZ7B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,UAAU,CAA+B;IAEjD,OAAO,CAAC,MAAM,CAAC,WAAW,CAAQ;gBAGf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,SAAS,YAAA;IAGxC;;;OAGG;IACH,IAAI,CACF,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,WAAW,GACf,IAAI;IAOP,QAAQ,CAAC,eAAe,GAAI,QAAQ,UAAU,KAAG,IAAI,CAEnD;IAEF,uEAAuE;IACvE,OAAO,CAAC,eAAe;IAKjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA4C/B"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/dump/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAA4C,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7G,qBAAa,WAAW;IAapB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAb7B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,MAAM,CAAC,WAAW,CAAQ;gBAGf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,SAAS,YAAA;IAGxC;;;OAGG;IACH,IAAI,CACF,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,WAAW,EAChB,WAAW,CAAC,EAAE,eAAe,GAC5B,IAAI;IAQP,QAAQ,CAAC,eAAe,GAAI,QAAQ,UAAU,KAAG,IAAI,CAEnD;IAEF,uEAAuE;IACvE,OAAO,CAAC,eAAe;IAKjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA+C/B"}
@@ -10,6 +10,7 @@ export class DumpService {
10
10
  workdir = "";
11
11
  flowName = "";
12
12
  flowParams = {};
13
+ resumedFrom;
13
14
  static DEBOUNCE_MS = 5000;
14
15
  constructor(version, statusBar) {
15
16
  this.version = version;
@@ -19,11 +20,12 @@ export class DumpService {
19
20
  * Called by orchestrator after ctx is created.
20
21
  * @param workdir - the real project directory (NOT ctx.sessionDir)
21
22
  */
22
- init(flowName, flowParams, workdir, ctx) {
23
+ init(flowName, flowParams, workdir, ctx, resumedFrom) {
23
24
  this.flowName = flowName;
24
25
  this.flowParams = flowParams;
25
26
  this.workdir = workdir;
26
27
  this.ctx = ctx;
28
+ this.resumedFrom = resumedFrom;
27
29
  }
28
30
  onStepCompleted = (record) => {
29
31
  this.steps.push(record);
@@ -47,6 +49,7 @@ export class DumpService {
47
49
  // Append in-flight step if one is currently executing
48
50
  const inflight = this.ctx.inFlightStep;
49
51
  if (inflight) {
52
+ const ptyTailSnapshot = inflight.ptyTailBuffer?.snapshot();
50
53
  steps.push({
51
54
  seq: inflight.seq,
52
55
  stepId: inflight.stepId,
@@ -57,6 +60,7 @@ export class DumpService {
57
60
  outputs: this.snapshotOutputs(inflight.writes),
58
61
  sessionFilePaths: this.ctx.lastStepSessionFilePaths ?? [],
59
62
  inFlight: true,
63
+ ...(ptyTailSnapshot && { ptyTailSnapshot }),
60
64
  });
61
65
  }
62
66
  const result = await collectDump({
@@ -69,6 +73,7 @@ export class DumpService {
69
73
  totalIterations: this.ctx.totalIterations,
70
74
  loopIterations: Object.fromEntries(this.ctx.loopIterations),
71
75
  },
76
+ ...(this.resumedFrom && { resumedFrom: this.resumedFrom }),
72
77
  });
73
78
  this.statusBar?.flash(`Dump saved: ${result}`);
74
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/dump/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA0C,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,OAAO,WAAW;IAYH;IACA;IAZX,KAAK,GAAiB,EAAE,CAAC;IACzB,IAAI,GAAG,KAAK,CAAC;IACb,eAAe,GAAG,CAAC,CAAC;IACpB,GAAG,CAA0B;IAC7B,OAAO,GAAG,EAAE,CAAC;IACb,QAAQ,GAAG,EAAE,CAAC;IACd,UAAU,GAA4B,EAAE,CAAC;IAEzC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IAElC,YACmB,OAAe,EACf,SAAqB;QADrB,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAY;IACrC,CAAC;IAEJ;;;OAGG;IACH,IAAI,CACF,QAAgB,EAChB,UAAmC,EACnC,OAAe,EACf,GAAgB;QAEhB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAEQ,eAAe,GAAG,CAAC,MAAkB,EAAQ,EAAE;QACtD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,uEAAuE;IAC/D,eAAe,CAAC,MAA8B;QACpD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACzB,OAAO,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,WAAW;YAAE,OAAO;QAC9E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,GAAG;gBAAE,OAAO;YAEtB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAE9B,sDAAsD;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACvC,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC9C,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;oBACzD,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;gBAC/B,KAAK;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,iBAAiB,EAAE,IAAI,CAAC,OAAO;gBAC/B,SAAS,EAAE;oBACT,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe;oBACzC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;iBAC5D;aACF,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpF,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/dump/service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ArtifactStore } from "../flow/types.js";
2
+ import type { PtyTailSnapshot } from "./pty-tail-buffer.js";
2
3
  export interface ArtifactSnapshot {
3
4
  artifactName: string;
4
5
  file?: string;
@@ -16,6 +17,8 @@ export interface StepRecord {
16
17
  outputs: Record<string, ArtifactSnapshot>;
17
18
  sessionFilePaths: string[];
18
19
  inFlight?: boolean;
20
+ /** Byte-faithful snapshot of the latest PTY output for this step's run. */
21
+ ptyTailSnapshot?: PtyTailSnapshot;
19
22
  }
20
23
  export interface DumpStepEntry {
21
24
  seq: number;
@@ -27,6 +30,15 @@ export interface DumpStepEntry {
27
30
  outputs: Record<string, string>;
28
31
  sessions: string[];
29
32
  inFlight?: boolean;
33
+ /** Relative paths under the step dir for the PTY tail artifacts. */
34
+ pty?: {
35
+ raw: string;
36
+ stripped: string;
37
+ };
38
+ }
39
+ export interface ResumedFromInfo {
40
+ sessionId: string;
41
+ resumedAt: string;
30
42
  }
31
43
  export interface DumpManifest {
32
44
  version: 1;
@@ -42,5 +54,6 @@ export interface DumpManifest {
42
54
  totalIterations: number;
43
55
  loopIterations: Record<string, number>;
44
56
  };
57
+ resumedFrom?: ResumedFromInfo;
45
58
  }
46
59
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dump/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,aAAa,GACvB,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAclC;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACxD,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAChF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dump/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,aAAa,GACvB,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAclC;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,GAAG,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACxD,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAC/E,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dump/types.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,iBAAiB,CAC/B,OAA+B,EAC/B,SAAwB;IAExB,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,GAAG;gBACd,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,QAAQ,EAAE,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;aAClF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dump/types.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,iBAAiB,CAC/B,OAA+B,EAC/B,SAAwB;IAExB,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,GAAG;gBACd,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,QAAQ,EAAE,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;aAClF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @param {FlowDSL} dsl
3
+ * @returns {FlowTemplate}
4
+ */
5
+ export default function createDefaultFlow(dsl: FlowDSL): FlowTemplate;
6
+ /** @typedef {import("../../dsl.js").FlowDSL} FlowDSL */
7
+ /** @typedef {import("../types.js").FlowTemplate} FlowTemplate */
8
+ /** @typedef {import("../types.js").FlowDefinition} FlowDefinition */
9
+ /** @typedef {import("../types.js").FlowParam} FlowParam */
10
+ /** @typedef {import("../types.js").FlowParamValues} FlowParamValues */
11
+ /** @typedef {import("../../agents/reviewers/types.js").ReviewVerdict} ReviewVerdict */
12
+ /** @type {readonly FlowParam[]} */
13
+ export const defaultParams: readonly FlowParam[];
14
+ export const SOURCE_FILE: string;
15
+ export type FlowDSL = import("../../dsl.js").FlowDSL;
16
+ export type FlowTemplate = import("../types.js").FlowTemplate;
17
+ export type FlowDefinition = import("../types.js").FlowDefinition;
18
+ export type FlowParam = import("../types.js").FlowParam;
19
+ export type FlowParamValues = import("../types.js").FlowParamValues;
20
+ export type ReviewVerdict = import("../../agents/reviewers/types.js").ReviewVerdict;
21
+ //# sourceMappingURL=default-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-factory.d.ts","sourceRoot":"","sources":["../../../src/flow/built-in/default-factory.js"],"names":[],"mappings":"AAuCA;;;GAGG;AACH,+CAHW,OAAO,GACL,YAAY,CA2IxB;AA1KD,wDAAwD;AACxD,iEAAiE;AACjE,qEAAqE;AACrE,2DAA2D;AAC3D,uEAAuE;AACvE,uFAAuF;AAEvF,mCAAmC;AACnC,4BADW,SAAS,SAAS,EAAE,CAoB7B;AAiJF,iCAA0D;sBA5K5C,OAAO,cAAc,EAAE,OAAO;2BAC9B,OAAO,aAAa,EAAE,YAAY;6BAClC,OAAO,aAAa,EAAE,cAAc;wBACpC,OAAO,aAAa,EAAE,SAAS;8BAC/B,OAAO,aAAa,EAAE,eAAe;4BACrC,OAAO,iCAAiC,EAAE,aAAa"}
@@ -0,0 +1,155 @@
1
+ // @ts-check
2
+ // IMPORTANT: This file is snapshotted verbatim into session directories
3
+ // (`flow-source.mjs`) and re-imported on resume. It must therefore be valid
4
+ // plain ESM JavaScript — no TypeScript-only syntax (no `import type`, no
5
+ // type annotations on parameters/returns). Use JSDoc comments for type info
6
+ // so the TypeScript compiler still checks the file but the source content
7
+ // is loadable by Node/vite as ESM.
8
+ import { fileURLToPath } from "node:url";
9
+ /** @typedef {import("../../dsl.js").FlowDSL} FlowDSL */
10
+ /** @typedef {import("../types.js").FlowTemplate} FlowTemplate */
11
+ /** @typedef {import("../types.js").FlowDefinition} FlowDefinition */
12
+ /** @typedef {import("../types.js").FlowParam} FlowParam */
13
+ /** @typedef {import("../types.js").FlowParamValues} FlowParamValues */
14
+ /** @typedef {import("../../agents/reviewers/types.js").ReviewVerdict} ReviewVerdict */
15
+ /** @type {readonly FlowParam[]} */
16
+ export const defaultParams = [
17
+ { key: "planner", type: "driver", role: "planner", label: "Planner", default: "claude",
18
+ description: "Which CLI plans" },
19
+ { key: "reviewer", type: "driver", role: "reviewer", label: "Reviewer", default: "codex",
20
+ description: "Which CLI reviews" },
21
+ { key: "implementor", type: "driver", role: "implementor", label: "Implementor", default: "claude",
22
+ description: "Which CLI implements" },
23
+ { key: "maxIterations", type: "number", label: "Max Planning Iterations",
24
+ default: 5, min: 1, max: 50 },
25
+ { key: "maxImplIterations", type: "number", label: "Max Impl Iterations",
26
+ default: 5, min: 1, max: 50 },
27
+ { key: "auto", type: "boolean", label: "Auto Mode", default: false,
28
+ description: "Skip user review phases" },
29
+ { key: "planOnly", type: "boolean", label: "Plan Only", default: false,
30
+ description: "Skip implementation phase" },
31
+ { key: "curateAllVerdicts", type: "boolean", label: "Curate All Verdicts", default: false,
32
+ description: "Curate every plan-review verdict (off = first verdict only)" },
33
+ ];
34
+ /**
35
+ * @param {FlowDSL} dsl
36
+ * @returns {FlowTemplate}
37
+ */
38
+ export default function createDefaultFlow(dsl) {
39
+ const { defineFlow, loop, artifactData, ctxField, cyclePhase, plan, review, implement, user, TASK } = dsl;
40
+ return {
41
+ name: "default",
42
+ params: defaultParams,
43
+ /**
44
+ * @param {FlowParamValues} values
45
+ * @returns {FlowDefinition}
46
+ */
47
+ build(values) {
48
+ const maxPlan = /** @type {number} */ (values.maxIterations);
49
+ const maxImpl = /** @type {number} */ (values.maxImplIterations);
50
+ const isPlanOnly = /** @type {boolean} */ (values.planOnly);
51
+ const isAuto = /** @type {boolean} */ (values.auto);
52
+ const curateAll = /** @type {boolean} */ (values.curateAllVerdicts);
53
+ const plannerDriver = /** @type {string} */ (values.planner);
54
+ const reviewerDriver = /** @type {string} */ (values.reviewer);
55
+ const implementorDriver = /** @type {string} */ (values.implementor);
56
+ const steps = [];
57
+ if (isAuto) {
58
+ steps.push(loop(maxPlan, artifactData("verdict", "approved"), [
59
+ plan({
60
+ driver: plannerDriver,
61
+ phaseLabel: cyclePhase("📝 Planning...", "✏️ Revising Plan..."),
62
+ reads: { task: TASK, verdict: "verdict" },
63
+ writes: { plan: "plan" },
64
+ }),
65
+ review({
66
+ driver: reviewerDriver,
67
+ variant: "plan",
68
+ reads: { task: TASK, plan: "plan" },
69
+ writes: { verdict: "verdict" },
70
+ }),
71
+ ]));
72
+ }
73
+ else {
74
+ steps.push(loop(Infinity, () => false, [
75
+ plan({
76
+ driver: plannerDriver,
77
+ phaseLabel: cyclePhase("📝 Planning...", "✏️ Addressing Feedback..."),
78
+ reads: { task: TASK, verdict: "verdict" },
79
+ writes: { plan: "plan" },
80
+ }),
81
+ user("user:feedback", { writes: { verdict: "verdict" } }),
82
+ loop(maxPlan, artifactData("verdict", "approved"), [
83
+ plan({
84
+ driver: plannerDriver,
85
+ when: ctxField("iteration", "!=", 1),
86
+ phaseLabel: "✏️ Revising Plan...",
87
+ reads: { task: TASK, verdict: "verdict" },
88
+ writes: { plan: "plan" },
89
+ }),
90
+ review({
91
+ driver: reviewerDriver,
92
+ variant: "plan",
93
+ sessionShareKey: "reviewer-plan",
94
+ reads: { task: TASK, plan: "plan" },
95
+ writes: { verdict: "verdict" },
96
+ sessionBoundary: ctxField("iteration", "==", 1),
97
+ }),
98
+ loop(Infinity, (ctx) => {
99
+ const v = /** @type {ReviewVerdict | undefined} */ (ctx.artifacts.getData("verdict"));
100
+ if (!v || v.approved || (v.issues?.length ?? 0) === 0)
101
+ return true;
102
+ const decisions = /** @type {{decisions: Array<{decision: string}>} | undefined} */ (ctx.artifacts.getData("user-decisions"))?.decisions;
103
+ return !decisions?.some((d) => d.decision === "revise");
104
+ }, [
105
+ review({
106
+ driver: reviewerDriver,
107
+ variant: "plan",
108
+ sessionShareKey: "reviewer-plan",
109
+ when: ctxField("iteration", "!=", 1),
110
+ reads: { task: TASK, plan: "plan", userDecisions: "user-decisions" },
111
+ writes: { verdict: "verdict" },
112
+ }),
113
+ user("user:curate-verdict", {
114
+ variant: "curate-verdict",
115
+ when: (ctx) => {
116
+ const v = /** @type {ReviewVerdict | undefined} */ (ctx.artifacts.getData("verdict"));
117
+ return !!v && (v.issues?.length ?? 0) > 0;
118
+ },
119
+ reads: { verdict: "verdict", plan: "plan" },
120
+ writes: { verdict: "verdict", userDecisions: "user-decisions" },
121
+ feedbackToTask: false,
122
+ }),
123
+ ], {
124
+ when: curateAll ? () => true : ctxField("iteration", "==", 1),
125
+ untilLabel: "no revise comments",
126
+ }),
127
+ ]),
128
+ user("user:approval", {
129
+ breakOnAccept: true,
130
+ writes: { verdict: "verdict" },
131
+ }),
132
+ ]));
133
+ }
134
+ if (!isPlanOnly) {
135
+ const implVerdict = "impl-verdict";
136
+ steps.push(loop(maxImpl, artifactData(implVerdict, "approved"), [
137
+ implement({
138
+ driver: implementorDriver,
139
+ phaseLabel: cyclePhase("🔨 Implementing...", "✏️ Revising Impl..."),
140
+ reads: { plan: "plan", verdict: implVerdict },
141
+ }),
142
+ review({
143
+ driver: reviewerDriver,
144
+ variant: "impl",
145
+ reads: { task: TASK, plan: "plan" },
146
+ writes: { verdict: implVerdict },
147
+ }),
148
+ ]));
149
+ }
150
+ return defineFlow("default", steps);
151
+ },
152
+ };
153
+ }
154
+ export const SOURCE_FILE = fileURLToPath(import.meta.url);
155
+ //# sourceMappingURL=default-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-factory.js","sourceRoot":"","sources":["../../../src/flow/built-in/default-factory.js"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { type FlowDSL } from "../../dsl.js";
2
- import type { FlowDefinition, FlowTemplate, FlowParam } from "../types.js";
3
- export declare const defaultParams: readonly FlowParam[];
4
- export default function createDefaultFlow({ defineFlow, loop, artifactData, ctxField, cyclePhase, plan, review, implement, user, TASK }: FlowDSL): FlowTemplate;
1
+ import createDefaultFlow, { defaultParams, SOURCE_FILE } from "./default-factory.js";
2
+ import type { FlowTemplate, FlowDefinition } from "../types.js";
3
+ export { defaultParams, SOURCE_FILE };
4
+ export default createDefaultFlow;
5
5
  export declare const defaultFlowTemplate: FlowTemplate;
6
6
  /**
7
7
  * Convenience wrapper used by tests to build a default flow definition.