poly-weaver 0.4.4 → 0.5.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 (125) hide show
  1. package/dist/agents/implementors/handler.d.ts.map +1 -1
  2. package/dist/agents/implementors/handler.js +7 -2
  3. package/dist/agents/implementors/handler.js.map +1 -1
  4. package/dist/agents/planners/adapter.d.ts.map +1 -1
  5. package/dist/agents/planners/adapter.js +1 -0
  6. package/dist/agents/planners/adapter.js.map +1 -1
  7. package/dist/agents/planners/handler.d.ts.map +1 -1
  8. package/dist/agents/planners/handler.js +7 -2
  9. package/dist/agents/planners/handler.js.map +1 -1
  10. package/dist/agents/planners/types.d.ts +1 -0
  11. package/dist/agents/planners/types.d.ts.map +1 -1
  12. package/dist/agents/reviewers/adapter.d.ts +3 -2
  13. package/dist/agents/reviewers/adapter.d.ts.map +1 -1
  14. package/dist/agents/reviewers/adapter.js +14 -2
  15. package/dist/agents/reviewers/adapter.js.map +1 -1
  16. package/dist/agents/reviewers/dsl.d.ts +11 -1
  17. package/dist/agents/reviewers/dsl.d.ts.map +1 -1
  18. package/dist/agents/reviewers/dsl.js.map +1 -1
  19. package/dist/agents/reviewers/handler.d.ts.map +1 -1
  20. package/dist/agents/reviewers/handler.js +51 -2
  21. package/dist/agents/reviewers/handler.js.map +1 -1
  22. package/dist/agents/reviewers/index.d.ts +3 -3
  23. package/dist/agents/reviewers/index.d.ts.map +1 -1
  24. package/dist/agents/reviewers/index.js +9 -5
  25. package/dist/agents/reviewers/index.js.map +1 -1
  26. package/dist/agents/reviewers/prompts.d.ts +14 -2
  27. package/dist/agents/reviewers/prompts.d.ts.map +1 -1
  28. package/dist/agents/reviewers/prompts.js +106 -2
  29. package/dist/agents/reviewers/prompts.js.map +1 -1
  30. package/dist/agents/reviewers/types.d.ts +19 -1
  31. package/dist/agents/reviewers/types.d.ts.map +1 -1
  32. package/dist/agents/reviewers/types.js.map +1 -1
  33. package/dist/agents/runner.d.ts +9 -0
  34. package/dist/agents/runner.d.ts.map +1 -1
  35. package/dist/agents/runner.js +2 -1
  36. package/dist/agents/runner.js.map +1 -1
  37. package/dist/agents/simplifiers/adapter.d.ts.map +1 -1
  38. package/dist/agents/simplifiers/adapter.js +1 -0
  39. package/dist/agents/simplifiers/adapter.js.map +1 -1
  40. package/dist/agents/simplifiers/handler.d.ts.map +1 -1
  41. package/dist/agents/simplifiers/handler.js +7 -2
  42. package/dist/agents/simplifiers/handler.js.map +1 -1
  43. package/dist/cli.js +9 -1
  44. package/dist/cli.js.map +1 -1
  45. package/dist/flow/built-in/default.d.ts +1 -0
  46. package/dist/flow/built-in/default.d.ts.map +1 -1
  47. package/dist/flow/built-in/default.js +37 -0
  48. package/dist/flow/built-in/default.js.map +1 -1
  49. package/dist/flow/built-in/default.ts +43 -0
  50. package/dist/flow/built-in/why-so-serious.d.ts +1 -0
  51. package/dist/flow/built-in/why-so-serious.d.ts.map +1 -1
  52. package/dist/flow/built-in/why-so-serious.js +37 -0
  53. package/dist/flow/built-in/why-so-serious.js.map +1 -1
  54. package/dist/flow/diagram.d.ts.map +1 -1
  55. package/dist/flow/diagram.js +26 -11
  56. package/dist/flow/diagram.js.map +1 -1
  57. package/dist/flow/dsl.d.ts +7 -0
  58. package/dist/flow/dsl.d.ts.map +1 -1
  59. package/dist/flow/dsl.js +35 -0
  60. package/dist/flow/dsl.js.map +1 -1
  61. package/dist/flow/executor.d.ts.map +1 -1
  62. package/dist/flow/executor.js +17 -0
  63. package/dist/flow/executor.js.map +1 -1
  64. package/dist/flow/types.d.ts +17 -0
  65. package/dist/flow/types.d.ts.map +1 -1
  66. package/dist/flow/types.js.map +1 -1
  67. package/dist/orchestrator.d.ts.map +1 -1
  68. package/dist/orchestrator.js +14 -0
  69. package/dist/orchestrator.js.map +1 -1
  70. package/dist/prompts.d.ts.map +1 -1
  71. package/dist/prompts.js +8 -1
  72. package/dist/prompts.js.map +1 -1
  73. package/dist/providers/claude/completion-plan-mode.d.ts +30 -0
  74. package/dist/providers/claude/completion-plan-mode.d.ts.map +1 -0
  75. package/dist/providers/claude/completion-plan-mode.js +151 -0
  76. package/dist/providers/claude/completion-plan-mode.js.map +1 -0
  77. package/dist/providers/claude/completion.d.ts +9 -68
  78. package/dist/providers/claude/completion.d.ts.map +1 -1
  79. package/dist/providers/claude/completion.js +21 -322
  80. package/dist/providers/claude/completion.js.map +1 -1
  81. package/dist/providers/claude/session.d.ts +24 -4
  82. package/dist/providers/claude/session.d.ts.map +1 -1
  83. package/dist/providers/claude/session.js +96 -13
  84. package/dist/providers/claude/session.js.map +1 -1
  85. package/dist/providers/claude/strategy.d.ts +4 -3
  86. package/dist/providers/claude/strategy.d.ts.map +1 -1
  87. package/dist/providers/claude/strategy.js +8 -10
  88. package/dist/providers/claude/strategy.js.map +1 -1
  89. package/dist/providers/claude/tool-tracking.d.ts +28 -0
  90. package/dist/providers/claude/tool-tracking.d.ts.map +1 -0
  91. package/dist/providers/claude/tool-tracking.js +149 -0
  92. package/dist/providers/claude/tool-tracking.js.map +1 -0
  93. package/dist/providers/codex/strategy.d.ts +3 -1
  94. package/dist/providers/codex/strategy.d.ts.map +1 -1
  95. package/dist/providers/codex/strategy.js +1 -1
  96. package/dist/providers/codex/strategy.js.map +1 -1
  97. package/dist/providers/copilot/strategy.d.ts +3 -1
  98. package/dist/providers/copilot/strategy.d.ts.map +1 -1
  99. package/dist/providers/copilot/strategy.js +1 -1
  100. package/dist/providers/copilot/strategy.js.map +1 -1
  101. package/dist/providers/invoke.js +1 -1
  102. package/dist/providers/invoke.js.map +1 -1
  103. package/dist/providers/types.d.ts +3 -1
  104. package/dist/providers/types.d.ts.map +1 -1
  105. package/dist/user/curate-handler.d.ts +32 -0
  106. package/dist/user/curate-handler.d.ts.map +1 -0
  107. package/dist/user/curate-handler.js +156 -0
  108. package/dist/user/curate-handler.js.map +1 -0
  109. package/dist/user/curate-prompt.d.ts +41 -0
  110. package/dist/user/curate-prompt.d.ts.map +1 -0
  111. package/dist/user/curate-prompt.js +473 -0
  112. package/dist/user/curate-prompt.js.map +1 -0
  113. package/dist/user/dsl.d.ts +1 -0
  114. package/dist/user/dsl.d.ts.map +1 -1
  115. package/dist/user/dsl.js +1 -0
  116. package/dist/user/dsl.js.map +1 -1
  117. package/dist/user/index.d.ts +3 -0
  118. package/dist/user/index.d.ts.map +1 -1
  119. package/dist/user/index.js +2 -0
  120. package/dist/user/index.js.map +1 -1
  121. package/dist/user/prompt.d.ts +11 -0
  122. package/dist/user/prompt.d.ts.map +1 -1
  123. package/dist/user/prompt.js +40 -7
  124. package/dist/user/prompt.js.map +1 -1
  125. package/package.json +2 -2
@@ -0,0 +1,473 @@
1
+ import { RawInputParser } from "./prompt.js";
2
+ import { bold, cyan, dim, green, red, reset, yellow, clearToEol, cursorUp, visibleLength, } from "../ansi.js";
3
+ const DECISION_CYCLE = ["keep", "drop", "revise"];
4
+ function tagFor(decision) {
5
+ switch (decision) {
6
+ case "keep":
7
+ return `${green}[K]${reset}`;
8
+ case "drop":
9
+ return `${red}[D]${reset}`;
10
+ case "revise":
11
+ return `${yellow}[R]${reset}`;
12
+ }
13
+ }
14
+ /**
15
+ * Visible width of a single code point, accounting for wide emoji.
16
+ * Mirrors the per-codepoint logic in `visibleLength` from `../ansi.js`.
17
+ */
18
+ function codePointWidth(cp) {
19
+ if (cp === 0xfe0f)
20
+ return 0;
21
+ if (cp > 0xffff)
22
+ return 2;
23
+ // Reuse `visibleLength` for BMP wideness; cheap because input is one char.
24
+ return visibleLength(String.fromCodePoint(cp));
25
+ }
26
+ /**
27
+ * Wrap `text` to fit within `width` visible columns per output line.
28
+ *
29
+ * Splits on `\n` first (paragraph breaks), then word-wraps each paragraph,
30
+ * then hard-breaks any single token that exceeds `width`. Empty input
31
+ * returns `[""]` so callers always emit at least one row. Width measurement
32
+ * uses `visibleLength` so wide emoji and ANSI styling are accounted for.
33
+ *
34
+ * Contract: every returned string satisfies `visibleLength(line) <= width`.
35
+ */
36
+ export function wrapToWidth(text, width) {
37
+ if (width < 1)
38
+ width = 1;
39
+ if (text.length === 0)
40
+ return [""];
41
+ const paragraphs = text.split("\n");
42
+ const out = [];
43
+ for (const paragraph of paragraphs) {
44
+ const tokens = paragraph.split(/\s+/).filter((t) => t.length > 0);
45
+ if (tokens.length === 0) {
46
+ out.push("");
47
+ continue;
48
+ }
49
+ let line = "";
50
+ let lineWidth = 0;
51
+ for (const token of tokens) {
52
+ const tokenWidth = visibleLength(token);
53
+ // Hard-break any single token longer than width into width-sized chunks.
54
+ if (tokenWidth > width) {
55
+ if (line.length > 0) {
56
+ out.push(line);
57
+ line = "";
58
+ lineWidth = 0;
59
+ }
60
+ let chunk = "";
61
+ let chunkWidth = 0;
62
+ for (const ch of token) {
63
+ const cw = codePointWidth(ch.codePointAt(0));
64
+ if (chunkWidth + cw > width) {
65
+ out.push(chunk);
66
+ chunk = ch;
67
+ chunkWidth = cw;
68
+ }
69
+ else {
70
+ chunk += ch;
71
+ chunkWidth += cw;
72
+ }
73
+ }
74
+ if (chunk.length > 0) {
75
+ line = chunk;
76
+ lineWidth = chunkWidth;
77
+ }
78
+ continue;
79
+ }
80
+ const sepWidth = line.length === 0 ? 0 : 1;
81
+ if (lineWidth + sepWidth + tokenWidth > width) {
82
+ out.push(line);
83
+ line = token;
84
+ lineWidth = tokenWidth;
85
+ }
86
+ else {
87
+ line = line.length === 0 ? token : `${line} ${token}`;
88
+ lineWidth += sepWidth + tokenWidth;
89
+ }
90
+ }
91
+ if (line.length > 0 || tokens.length === 0) {
92
+ out.push(line);
93
+ }
94
+ }
95
+ return out;
96
+ }
97
+ /**
98
+ * Clip a single (possibly ANSI-styled) line so its visible width does not
99
+ * exceed `width`. ANSI escape sequences pass through with zero width. If the
100
+ * input contained any ANSI styling and we had to truncate, append `reset`
101
+ * so styling does not bleed past the clipped boundary.
102
+ *
103
+ * Contract: returned string satisfies `visibleLength(line) <= width`.
104
+ */
105
+ export function clipToWidth(line, width) {
106
+ if (width < 0)
107
+ width = 0;
108
+ if (visibleLength(line) <= width)
109
+ return line;
110
+ // eslint-disable-next-line no-control-regex
111
+ const ansi = /\x1b\[[0-9;]*m/g;
112
+ let hadStyle = false;
113
+ let out = "";
114
+ let visWidth = 0;
115
+ let i = 0;
116
+ while (i < line.length) {
117
+ ansi.lastIndex = i;
118
+ const m = ansi.exec(line);
119
+ if (m && m.index === i) {
120
+ out += m[0];
121
+ hadStyle = true;
122
+ i += m[0].length;
123
+ continue;
124
+ }
125
+ const cp = line.codePointAt(i);
126
+ const ch = String.fromCodePoint(cp);
127
+ const w = codePointWidth(cp);
128
+ if (visWidth + w > width)
129
+ break;
130
+ out += ch;
131
+ visWidth += w;
132
+ i += ch.length;
133
+ }
134
+ if (hadStyle)
135
+ out += reset;
136
+ return out;
137
+ }
138
+ export class CurateVerdictPrompt {
139
+ onDumpRequested;
140
+ constructor(onDumpRequested) {
141
+ this.onDumpRequested = onDumpRequested;
142
+ }
143
+ async prompt(verdict) {
144
+ if (!process.stdin.isTTY || verdict.issues.length === 0) {
145
+ return {
146
+ decisions: verdict.issues.map((_, index) => ({ index, decision: "keep" })),
147
+ };
148
+ }
149
+ return this.runChecklist(verdict);
150
+ }
151
+ runChecklist(verdict) {
152
+ const issues = verdict.issues;
153
+ const decisions = issues.map(() => "keep");
154
+ const comments = issues.map(() => undefined);
155
+ let cursor = 0;
156
+ let prevRendered = 0;
157
+ return new Promise((resolve) => {
158
+ process.stdin.setRawMode(true);
159
+ process.stdin.resume();
160
+ const parser = new RawInputParser();
161
+ const renderHeader = (cols) => {
162
+ const n = issues.length;
163
+ const s = n === 1 ? "" : "s";
164
+ const title = clipToWidth(`${bold}${cyan}User Verdict Curation${reset} — ${n} issue${s}`, cols);
165
+ const summaryLines = wrapToWidth(verdict.summary, cols).map((l) => `${dim}${l}${reset}`);
166
+ return [title, ...summaryLines];
167
+ };
168
+ const renderRow = (i, cols) => {
169
+ const isCursor = i === cursor;
170
+ const arrow = isCursor ? `${bold}❯${reset}` : " ";
171
+ const tag = tagFor(decisions[i]);
172
+ const issue = issues[i];
173
+ const meta = [];
174
+ if (issue.severity)
175
+ meta.push(issue.severity);
176
+ if (issue.category)
177
+ meta.push(issue.category);
178
+ const metaStr = meta.length ? `${dim}[${meta.join("/")}]${reset} ` : "";
179
+ const prefix = `${arrow} ${tag} ${metaStr}`;
180
+ const tail = decisions[i] === "revise" && comments[i] ? ` ${dim}— …${reset}` : "";
181
+ const desc = issue.description.replace(/\s+/g, " ");
182
+ const avail = cols - visibleLength(prefix) - visibleLength(tail);
183
+ if (avail <= 0) {
184
+ // Not enough room for any description text; fall back to prefix-only.
185
+ // The detail panel below still shows the full issue body.
186
+ return clipToWidth(prefix, cols);
187
+ }
188
+ // Clip the description alone to the available width, then concat the
189
+ // tail. Composing first and clipping last would silently drop the tail
190
+ // when the description is long — the revise-marker would never render.
191
+ const clippedDesc = clipToWidth(desc, avail);
192
+ return `${prefix}${clippedDesc}${tail}`;
193
+ };
194
+ const renderDetail = (i, cols) => {
195
+ const n = issues.length;
196
+ const issue = issues[i];
197
+ const out = [];
198
+ out.push(clipToWidth(` ${dim}─── Issue ${i + 1} of ${n} — Details ───${reset}`, cols));
199
+ const bodyWidth = Math.max(1, cols - 2);
200
+ for (const l of wrapToWidth(issue.description, bodyWidth)) {
201
+ out.push(` ${l}`);
202
+ }
203
+ if (decisions[i] === "revise" && comments[i]) {
204
+ out.push(clipToWidth(` ${dim}[Revise comment]${reset}`, cols));
205
+ for (const l of wrapToWidth(comments[i], bodyWidth)) {
206
+ out.push(` ${l}`);
207
+ }
208
+ }
209
+ return out;
210
+ };
211
+ const renderFooter = (cols) => {
212
+ const plain = "↑/↓ navigate · k/d/r set · Tab cycle · Enter edit comment · Ctrl+D submit · Ctrl+C keep-all";
213
+ return wrapToWidth(plain, cols).map((l) => `${dim}${l}${reset}`);
214
+ };
215
+ const drawAll = () => {
216
+ const cols = Math.max(20, process.stdout.columns ?? 80);
217
+ const lines = [
218
+ ...renderHeader(cols),
219
+ ...issues.map((_, i) => renderRow(i, cols)),
220
+ "",
221
+ ...renderDetail(cursor, cols),
222
+ "",
223
+ ...renderFooter(cols),
224
+ ];
225
+ for (const line of lines) {
226
+ process.stdout.write(`\r${clearToEol}${line}\n`);
227
+ }
228
+ // Erase any stale trailing rows from a taller previous draw.
229
+ const stale = Math.max(0, prevRendered - lines.length);
230
+ for (let i = 0; i < stale; i++) {
231
+ process.stdout.write(`\r${clearToEol}\n`);
232
+ }
233
+ // Walk cursor back to the top of the rendered region.
234
+ const totalAdvanced = lines.length + stale;
235
+ for (let i = 0; i < totalAdvanced; i++) {
236
+ process.stdout.write(cursorUp);
237
+ }
238
+ prevRendered = lines.length;
239
+ };
240
+ const moveToRow = (rowIdx) => {
241
+ if (rowIdx > 0)
242
+ process.stdout.write(`\x1b[${rowIdx}B`);
243
+ };
244
+ const moveToTop = (rowIdx) => {
245
+ if (rowIdx > 0)
246
+ process.stdout.write(`\x1b[${rowIdx}A`);
247
+ };
248
+ // Active event sink — swapped between the curate-mode and comment-mode
249
+ // handlers. Both stdin chunks AND deferred events (bare ESC after the
250
+ // escape-timeout in legacy VT mode) flow through this sink, so Esc is
251
+ // observable regardless of whether the terminal is in passive kitty mode.
252
+ let activeSink;
253
+ parser.onDeferred((events) => activeSink?.(events));
254
+ const finalize = (result) => {
255
+ process.stdin.removeListener("data", onCurateChunk);
256
+ process.stdin.setRawMode(false);
257
+ process.stdin.resume();
258
+ // Move cursor below all rendered rows
259
+ moveToRow(prevRendered);
260
+ process.stdout.write("\r");
261
+ resolve(result);
262
+ };
263
+ const ensureCommentForRevise = async (prevDecision) => {
264
+ if (decisions[cursor] !== "revise" || comments[cursor])
265
+ return;
266
+ const c = await collectComment(cursor);
267
+ if (c !== undefined) {
268
+ comments[cursor] = c;
269
+ }
270
+ else {
271
+ // User cancelled the comment prompt without typing anything.
272
+ // Revert the decision so a comment-less revise can never be
273
+ // submitted from the checklist.
274
+ decisions[cursor] = prevDecision === "revise" ? "keep" : prevDecision;
275
+ }
276
+ drawAll();
277
+ };
278
+ const handleCurateEvents = async (events) => {
279
+ for (const event of events) {
280
+ if (event.type === "dump") {
281
+ this.onDumpRequested?.();
282
+ continue;
283
+ }
284
+ if (event.type === "ctrl-c") {
285
+ const result = {
286
+ decisions: issues.map((_, index) => ({ index, decision: "keep" })),
287
+ };
288
+ finalize(result);
289
+ return;
290
+ }
291
+ if (event.type === "submit") {
292
+ // A `revise` without a non-empty comment is meaningless: the sub-loop
293
+ // only advances when the user provides a revise instruction. Defensively
294
+ // downgrade those rows to "keep" before emitting the result.
295
+ for (let i = 0; i < issues.length; i++) {
296
+ if (decisions[i] === "revise" && !comments[i]) {
297
+ decisions[i] = "keep";
298
+ }
299
+ }
300
+ const result = {
301
+ decisions: issues.map((_, index) => {
302
+ const dec = decisions[index];
303
+ const rec = { index, decision: dec };
304
+ if (dec === "revise" && comments[index]) {
305
+ rec.comment = comments[index];
306
+ }
307
+ return rec;
308
+ }),
309
+ };
310
+ finalize(result);
311
+ return;
312
+ }
313
+ if (event.type === "arrow") {
314
+ const prev = cursor;
315
+ if (event.direction === "up") {
316
+ cursor = (cursor - 1 + issues.length) % issues.length;
317
+ }
318
+ else if (event.direction === "down") {
319
+ cursor = (cursor + 1) % issues.length;
320
+ }
321
+ if (prev !== cursor)
322
+ drawAll();
323
+ continue;
324
+ }
325
+ if (event.type === "newline") {
326
+ // Enter on a revise row → edit comment. Otherwise, no-op.
327
+ if (decisions[cursor] === "revise") {
328
+ const prevDecision = decisions[cursor];
329
+ const c = await collectComment(cursor);
330
+ if (c !== undefined) {
331
+ comments[cursor] = c;
332
+ drawAll();
333
+ }
334
+ else if (!comments[cursor]) {
335
+ decisions[cursor] = "keep";
336
+ drawAll();
337
+ }
338
+ void prevDecision;
339
+ }
340
+ continue;
341
+ }
342
+ if (event.type === "tab") {
343
+ const prevDecision = decisions[cursor];
344
+ const i = DECISION_CYCLE.indexOf(decisions[cursor]);
345
+ decisions[cursor] = DECISION_CYCLE[(i + 1) % DECISION_CYCLE.length];
346
+ if (decisions[cursor] !== prevDecision) {
347
+ drawAll();
348
+ await ensureCommentForRevise(prevDecision);
349
+ }
350
+ continue;
351
+ }
352
+ if (event.type === "insert") {
353
+ const ch = event.text.toLowerCase();
354
+ const prevDecision = decisions[cursor];
355
+ if (ch === "k")
356
+ decisions[cursor] = "keep";
357
+ else if (ch === "d")
358
+ decisions[cursor] = "drop";
359
+ else if (ch === "r")
360
+ decisions[cursor] = "revise";
361
+ else
362
+ continue;
363
+ if (decisions[cursor] !== prevDecision) {
364
+ drawAll();
365
+ await ensureCommentForRevise(prevDecision);
366
+ }
367
+ continue;
368
+ }
369
+ // esc, backspace — ignored in curate mode
370
+ }
371
+ };
372
+ const onCurateChunk = (chunk) => {
373
+ void handleCurateEvents(parser.parseChunk(chunk));
374
+ };
375
+ const collectComment = (issueIdx) => {
376
+ return new Promise((resolveComment) => {
377
+ // Snapshot the rendered area we need to walk back over after input.
378
+ const baseRows = prevRendered;
379
+ const cols = Math.max(20, process.stdout.columns ?? 80);
380
+ // Move just below the rendered region (single physical line).
381
+ moveToRow(baseRows);
382
+ const rawLabel = `Revise comment for issue ${issueIdx + 1} (Enter submits, Esc cancels): `;
383
+ // Reserve at least 4 cols of input area; clip the label as needed so
384
+ // the prompt + visible buffer always fit on a single physical row.
385
+ const maxLabelWidth = Math.max(0, cols - 4);
386
+ const label = clipToWidth(`${dim}${rawLabel}${reset}`, maxLabelWidth);
387
+ const labelVisible = visibleLength(label);
388
+ const inputCols = Math.max(1, cols - labelVisible);
389
+ let buffer = comments[issueIdx] ?? "";
390
+ const renderPrompt = () => {
391
+ // Single-line render: clear, then write label + tail-of-buffer that
392
+ // fits in `inputCols`. When the buffer is wider than the input
393
+ // area, prepend `…` and slice off the head so the typing cursor
394
+ // stays visible at the right edge. ASCII-only fast path on slice;
395
+ // for wide-glyph content `clipToWidth` is the safety net below.
396
+ let display;
397
+ const bufWidth = visibleLength(buffer);
398
+ if (buffer.length === 0) {
399
+ display = "";
400
+ }
401
+ else if (bufWidth > inputCols) {
402
+ const tail = buffer.slice(-(Math.max(1, inputCols - 1)));
403
+ display = `…${tail}`;
404
+ }
405
+ else {
406
+ display = buffer;
407
+ }
408
+ // Defense in depth: clip the entire composed line. Guarantees the
409
+ // physical row stays within `cols` even if a wide glyph slipped
410
+ // through the slice math.
411
+ const line = clipToWidth(`${label}${display}`, cols);
412
+ process.stdout.write(`\r${clearToEol}${line}`);
413
+ };
414
+ renderPrompt();
415
+ const finishComment = (result) => {
416
+ // Restore curate sink before redrawing so any deferred events that
417
+ // arrive during `drawAll` route to the curate handler.
418
+ process.stdin.removeListener("data", onCommentChunk);
419
+ activeSink = handleCurateEvents;
420
+ process.stdin.on("data", onCurateChunk);
421
+ // Clear prompt line, walk back to top of the rendered region,
422
+ // then redraw (drawAll handles cursor accounting via prevRendered).
423
+ process.stdout.write(`\r${clearToEol}`);
424
+ moveToTop(baseRows);
425
+ drawAll();
426
+ resolveComment(result);
427
+ };
428
+ const handleCommentEvents = (events) => {
429
+ for (const event of events) {
430
+ if (event.type === "dump") {
431
+ this.onDumpRequested?.();
432
+ continue;
433
+ }
434
+ if (event.type === "ctrl-c" || event.type === "esc") {
435
+ finishComment(undefined);
436
+ return;
437
+ }
438
+ if (event.type === "submit" || event.type === "newline") {
439
+ finishComment(buffer.trim() ? buffer.trim() : undefined);
440
+ return;
441
+ }
442
+ if (event.type === "backspace") {
443
+ if (buffer.length > 0) {
444
+ buffer = buffer.slice(0, -1);
445
+ renderPrompt();
446
+ }
447
+ continue;
448
+ }
449
+ if (event.type === "insert") {
450
+ buffer += event.text;
451
+ renderPrompt();
452
+ continue;
453
+ }
454
+ // tab, arrow — ignored while editing the comment
455
+ }
456
+ };
457
+ const onCommentChunk = (chunk) => {
458
+ handleCommentEvents(parser.parseChunk(chunk));
459
+ };
460
+ // Swap from curate to comment handler.
461
+ process.stdin.removeListener("data", onCurateChunk);
462
+ activeSink = handleCommentEvents;
463
+ process.stdin.on("data", onCommentChunk);
464
+ });
465
+ };
466
+ // Initial render and listener wiring.
467
+ drawAll();
468
+ activeSink = handleCurateEvents;
469
+ process.stdin.on("data", onCurateChunk);
470
+ });
471
+ }
472
+ }
473
+ //# sourceMappingURL=curate-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curate-prompt.js","sourceRoot":"","sources":["../../src/user/curate-prompt.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { UserStep } from "../flow/types.js";
2
2
  import type { WhenCondition, PhaseLabelSpec } from "../flow/dsl.js";
3
3
  export declare function user(label: string, opts?: {
4
4
  id?: string;
5
+ variant?: string;
5
6
  when?: WhenCondition;
6
7
  whenLabel?: string;
7
8
  reads?: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../../src/user/dsl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAEjF,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IACzC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,GAAG,QAAQ,CAiBX"}
1
+ {"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../../src/user/dsl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAEjF,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IACzC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,GAAG,QAAQ,CAkBX"}
package/dist/user/dsl.js CHANGED
@@ -4,6 +4,7 @@ export function user(label, opts) {
4
4
  type: "user",
5
5
  id: opts?.id ?? "",
6
6
  role: "user",
7
+ variant: opts?.variant,
7
8
  reads: opts?.reads ?? { display: "plan" },
8
9
  writes: opts?.writes ?? {},
9
10
  feedbackToTask: opts?.feedbackToTask ?? true,
@@ -1 +1 @@
1
- {"version":3,"file":"dsl.js","sourceRoot":"","sources":["../../src/user/dsl.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,IASnC;IACC,MAAM,WAAW,GAAG,IAAI,EAAE,UAAU,IAAI,mBAAmB,CAAC;IAC5D,MAAM,GAAG,GAAgB;QACvB,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;QAClB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;QACzC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE;QAC1B,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,IAAI;QAC5C,aAAa,EAAE,IAAI,EAAE,aAAa;QAClC,UAAU,EAAE,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QAC9D,SAAS,EAAE,QAAQ,KAAK,EAAE;QAC1B,KAAK,EAAE,IAAI,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI,EAAE,SAAS;QAC3B,WAAW;KACZ,CAAC;IACF,OAAO,GAA0B,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"dsl.js","sourceRoot":"","sources":["../../src/user/dsl.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,IAUnC;IACC,MAAM,WAAW,GAAG,IAAI,EAAE,UAAU,IAAI,mBAAmB,CAAC;IAC5D,MAAM,GAAG,GAAgB;QACvB,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;QAClB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI,EAAE,OAAO;QACtB,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;QACzC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE;QAC1B,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,IAAI;QAC5C,aAAa,EAAE,IAAI,EAAE,aAAa;QAClC,UAAU,EAAE,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QAC9D,SAAS,EAAE,QAAQ,KAAK,EAAE;QAC1B,KAAK,EAAE,IAAI,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI,EAAE,SAAS;QAC3B,WAAW;KACZ,CAAC;IACF,OAAO,GAA0B,CAAC;AACpC,CAAC"}
@@ -2,4 +2,7 @@ export type { UserPromptHandler, UserPromptResult, UserPromptContext } from "./p
2
2
  export { InteractiveUserPrompt, AutoUserPrompt, RawInputParser } from "./prompt.js";
3
3
  export { UserRoleHandler } from "./handler.js";
4
4
  export { user } from "./dsl.js";
5
+ export { CurateVerdictRoleHandler, buildCuratedVerdict } from "./curate-handler.js";
6
+ export { CurateVerdictPrompt } from "./curate-prompt.js";
7
+ export type { CuratePromptHandler, CurateDecision, CurateDecisionRecord, CurateResult, } from "./curate-prompt.js";
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,YAAY,GACb,MAAM,oBAAoB,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export { InteractiveUserPrompt, AutoUserPrompt, RawInputParser } from "./prompt.js";
2
2
  export { UserRoleHandler } from "./handler.js";
3
3
  export { user } from "./dsl.js";
4
+ export { CurateVerdictRoleHandler, buildCuratedVerdict } from "./curate-handler.js";
5
+ export { CurateVerdictPrompt } from "./curate-prompt.js";
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -15,6 +15,10 @@ type RawInputEvent = {
15
15
  type: "newline";
16
16
  } | {
17
17
  type: "ctrl-c";
18
+ } | {
19
+ type: "tab";
20
+ } | {
21
+ type: "esc";
18
22
  } | {
19
23
  type: "arrow";
20
24
  direction: "up" | "down";
@@ -27,7 +31,14 @@ type RawInputEvent = {
27
31
  */
28
32
  export declare class RawInputParser {
29
33
  private parser;
34
+ private deferredHandler;
35
+ constructor();
30
36
  parseChunk(chunk: Buffer): RawInputEvent[];
37
+ /**
38
+ * Subscribe to events that arrive after a delay (currently only bare ESC
39
+ * in legacy VT mode, surfaced after the escape timeout fires).
40
+ */
41
+ onDeferred(cb: (events: RawInputEvent[]) => void): void;
31
42
  private mapKey;
32
43
  }
33
44
  export interface UserPromptContext {
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/user/prompt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,aAAa,GACd;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAA2B;IAEzC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE;IAI1C,OAAO,CAAC,MAAM;CAyCf;AAED,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAE3D,QAAQ,CAAC,KAAK,EAAE,YAAY;IAC5B,QAAQ,CAAC,eAAe,CAAC,GAAE,MAAM,IAAI;gBAD5B,KAAK,GAAE,YAA4B,EACnC,eAAe,CAAC,GAAE,MAAM,IAAI,aAAA;IAGjC,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IA6B5B,oFAAoF;IACpF,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,SAAS;IAiBjB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;CAkOxB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IAChD,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAG1C"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/user/prompt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,aAAa,GACd;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAkD;;IAazE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE;IAI1C;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,IAAI,GAAG,IAAI;IAIvD,OAAO,CAAC,MAAM;CAmDf;AAED,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAE3D,QAAQ,CAAC,KAAK,EAAE,YAAY;IAC5B,QAAQ,CAAC,eAAe,CAAC,GAAE,MAAM,IAAI;gBAD5B,KAAK,GAAE,YAA4B,EACnC,eAAe,CAAC,GAAE,MAAM,IAAI,aAAA;IAGjC,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IA6B5B,oFAAoF;IACpF,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,SAAS;IAiBjB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;CAkOxB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IAChD,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAG1C"}