poly-weaver 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/implementors/handler.d.ts.map +1 -1
- package/dist/agents/implementors/handler.js +2 -1
- package/dist/agents/implementors/handler.js.map +1 -1
- package/dist/agents/planners/handler.d.ts.map +1 -1
- package/dist/agents/planners/handler.js +2 -1
- package/dist/agents/planners/handler.js.map +1 -1
- package/dist/agents/reviewers/handler.d.ts.map +1 -1
- package/dist/agents/reviewers/handler.js +9 -2
- package/dist/agents/reviewers/handler.js.map +1 -1
- package/dist/agents/runner.d.ts +40 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +213 -14
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/simplifiers/handler.d.ts.map +1 -1
- package/dist/agents/simplifiers/handler.js +2 -1
- package/dist/agents/simplifiers/handler.js.map +1 -1
- package/dist/ansi.d.ts +26 -0
- package/dist/ansi.d.ts.map +1 -1
- package/dist/ansi.js +26 -0
- package/dist/ansi.js.map +1 -1
- package/dist/cli.js +46 -16
- package/dist/cli.js.map +1 -1
- package/dist/flow/built-in/default.js +1 -1
- package/dist/flow/built-in/default.js.map +1 -1
- package/dist/flow/built-in/default.ts +1 -1
- package/dist/flow/built-in/why-so-serious.js +1 -1
- package/dist/flow/built-in/why-so-serious.js.map +1 -1
- package/dist/flow/executor.d.ts.map +1 -1
- package/dist/flow/executor.js +7 -2
- package/dist/flow/executor.js.map +1 -1
- package/dist/flow/types.d.ts +5 -0
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/flow/types.js.map +1 -1
- package/dist/orchestrator.d.ts +10 -4
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +34 -14
- package/dist/orchestrator.js.map +1 -1
- package/dist/providers/claude/session.d.ts +3 -1
- package/dist/providers/claude/session.d.ts.map +1 -1
- package/dist/providers/claude/session.js +2 -2
- package/dist/providers/claude/session.js.map +1 -1
- package/dist/providers/codex/session.d.ts +6 -3
- package/dist/providers/codex/session.d.ts.map +1 -1
- package/dist/providers/codex/session.js +24 -4
- package/dist/providers/codex/session.js.map +1 -1
- package/dist/providers/copilot/session.d.ts +3 -1
- package/dist/providers/copilot/session.d.ts.map +1 -1
- package/dist/providers/copilot/session.js +15 -2
- package/dist/providers/copilot/session.js.map +1 -1
- package/dist/providers/types.d.ts +14 -2
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/pty/exit.d.ts +13 -5
- package/dist/pty/exit.d.ts.map +1 -1
- package/dist/pty/exit.js +19 -19
- package/dist/pty/exit.js.map +1 -1
- package/dist/pty/spawn.d.ts +12 -6
- package/dist/pty/spawn.d.ts.map +1 -1
- package/dist/pty/spawn.js +22 -70
- package/dist/pty/spawn.js.map +1 -1
- package/dist/pty/types.d.ts +12 -3
- package/dist/pty/types.d.ts.map +1 -1
- package/dist/session/locator.d.ts +23 -2
- package/dist/session/locator.d.ts.map +1 -1
- package/dist/session/locator.js +67 -4
- package/dist/session/locator.js.map +1 -1
- package/dist/status-bar.d.ts +21 -1
- package/dist/status-bar.d.ts.map +1 -1
- package/dist/status-bar.js +109 -34
- package/dist/status-bar.js.map +1 -1
- package/dist/terminal/cleanup.d.ts +21 -0
- package/dist/terminal/cleanup.d.ts.map +1 -0
- package/dist/terminal/cleanup.js +22 -0
- package/dist/terminal/cleanup.js.map +1 -0
- package/dist/terminal/host.d.ts +244 -0
- package/dist/terminal/host.d.ts.map +1 -0
- package/dist/terminal/host.js +642 -0
- package/dist/terminal/host.js.map +1 -0
- package/dist/terminal/input-router.d.ts +146 -0
- package/dist/terminal/input-router.d.ts.map +1 -0
- package/dist/terminal/input-router.js +426 -0
- package/dist/terminal/input-router.js.map +1 -0
- package/dist/terminal/layout.d.ts +55 -0
- package/dist/terminal/layout.d.ts.map +1 -0
- package/dist/terminal/layout.js +51 -0
- package/dist/terminal/layout.js.map +1 -0
- package/dist/terminal/output.d.ts +83 -0
- package/dist/terminal/output.d.ts.map +1 -0
- package/dist/terminal/output.js +107 -0
- package/dist/terminal/output.js.map +1 -0
- package/dist/terminal/render.d.ts +36 -0
- package/dist/terminal/render.d.ts.map +1 -0
- package/dist/terminal/render.js +233 -0
- package/dist/terminal/render.js.map +1 -0
- package/dist/terminal/virtual-terminal.d.ts +54 -0
- package/dist/terminal/virtual-terminal.d.ts.map +1 -0
- package/dist/terminal/virtual-terminal.js +110 -0
- package/dist/terminal/virtual-terminal.js.map +1 -0
- package/dist/terminal-input.d.ts +10 -0
- package/dist/terminal-input.d.ts.map +1 -1
- package/dist/terminal-input.js +46 -0
- package/dist/terminal-input.js.map +1 -1
- package/dist/user/auto-curate-prompt.d.ts +17 -0
- package/dist/user/auto-curate-prompt.d.ts.map +1 -0
- package/dist/user/auto-curate-prompt.js +22 -0
- package/dist/user/auto-curate-prompt.js.map +1 -0
- package/dist/user/curate-handler.d.ts.map +1 -1
- package/dist/user/curate-handler.js +10 -2
- package/dist/user/curate-handler.js.map +1 -1
- package/dist/user/curate-prompt.d.ts +9 -7
- package/dist/user/curate-prompt.d.ts.map +1 -1
- package/dist/user/curate-prompt.js +2 -341
- package/dist/user/curate-prompt.js.map +1 -1
- package/dist/user/handler.d.ts +13 -1
- package/dist/user/handler.d.ts.map +1 -1
- package/dist/user/handler.js +27 -15
- package/dist/user/handler.js.map +1 -1
- package/dist/user/hard-wrap.d.ts +11 -0
- package/dist/user/hard-wrap.d.ts.map +1 -0
- package/dist/user/hard-wrap.js +44 -0
- package/dist/user/hard-wrap.js.map +1 -0
- package/dist/user/host-curate-prompt.d.ts +34 -0
- package/dist/user/host-curate-prompt.d.ts.map +1 -0
- package/dist/user/host-curate-prompt.js +453 -0
- package/dist/user/host-curate-prompt.js.map +1 -0
- package/dist/user/host-prompt.d.ts +21 -0
- package/dist/user/host-prompt.d.ts.map +1 -0
- package/dist/user/host-prompt.js +337 -0
- package/dist/user/host-prompt.js.map +1 -0
- package/dist/user/index.d.ts +3 -3
- package/dist/user/index.d.ts.map +1 -1
- package/dist/user/index.js +2 -2
- package/dist/user/index.js.map +1 -1
- package/dist/user/plan-pane.d.ts +18 -0
- package/dist/user/plan-pane.d.ts.map +1 -0
- package/dist/user/plan-pane.js +33 -0
- package/dist/user/plan-pane.js.map +1 -0
- package/dist/user/prompt.d.ts +25 -42
- package/dist/user/prompt.d.ts.map +1 -1
- package/dist/user/prompt.js +16 -278
- package/dist/user/prompt.js.map +1 -1
- package/dist/user/split-surface.d.ts +32 -0
- package/dist/user/split-surface.d.ts.map +1 -0
- package/dist/user/split-surface.js +66 -0
- package/dist/user/split-surface.js.map +1 -0
- package/package.json +2 -1
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
const DECISION_CYCLE = ["keep", "drop", "revise"];
|
|
4
|
-
function tagFor(decision) {
|
|
1
|
+
import { green, red, reset, yellow, visibleLength, } from "../ansi.js";
|
|
2
|
+
export function tagFor(decision) {
|
|
5
3
|
switch (decision) {
|
|
6
4
|
case "keep":
|
|
7
5
|
return `${green}[K]${reset}`;
|
|
@@ -20,7 +18,6 @@ function codePointWidth(cp) {
|
|
|
20
18
|
return 0;
|
|
21
19
|
if (cp > 0xffff)
|
|
22
20
|
return 2;
|
|
23
|
-
// Reuse `visibleLength` for BMP wideness; cheap because input is one char.
|
|
24
21
|
return visibleLength(String.fromCodePoint(cp));
|
|
25
22
|
}
|
|
26
23
|
/**
|
|
@@ -50,7 +47,6 @@ export function wrapToWidth(text, width) {
|
|
|
50
47
|
let lineWidth = 0;
|
|
51
48
|
for (const token of tokens) {
|
|
52
49
|
const tokenWidth = visibleLength(token);
|
|
53
|
-
// Hard-break any single token longer than width into width-sized chunks.
|
|
54
50
|
if (tokenWidth > width) {
|
|
55
51
|
if (line.length > 0) {
|
|
56
52
|
out.push(line);
|
|
@@ -135,339 +131,4 @@ export function clipToWidth(line, width) {
|
|
|
135
131
|
out += reset;
|
|
136
132
|
return out;
|
|
137
133
|
}
|
|
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
134
|
//# sourceMappingURL=curate-prompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curate-prompt.js","sourceRoot":"","sources":["../../src/user/curate-prompt.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"curate-prompt.js","sourceRoot":"","sources":["../../src/user/curate-prompt.ts"],"names":[],"mappings":"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"}
|
package/dist/user/handler.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { UserPromptHandler } from "./prompt.js";
|
|
1
|
+
import type { UserPromptHandler, UserPhaseLabel } from "./prompt.js";
|
|
2
2
|
import type { BaseStep, StepContext, StepSignal, RetryFn, RoleHandler } from "../flow/types.js";
|
|
3
3
|
/**
|
|
4
4
|
* RoleHandler adapter that bridges UserPromptHandler with the flow executor.
|
|
@@ -13,4 +13,16 @@ export declare class UserRoleHandler implements RoleHandler {
|
|
|
13
13
|
constructor(userPhase: UserPromptHandler);
|
|
14
14
|
execute(step: BaseStep, ctx: StepContext, _retry: RetryFn): Promise<StepSignal>;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Compute the phase label from the verdict artifact and previous step role.
|
|
18
|
+
*
|
|
19
|
+
* Rules:
|
|
20
|
+
* - No verdict artifact yet → `"first"` (first review before any reviewer runs)
|
|
21
|
+
* - Verdict with `meta.source === "user"` → `"revised"` (planner regenerated
|
|
22
|
+
* in response to user feedback)
|
|
23
|
+
* - Verdict with `data.approved === true` → `"approved"`
|
|
24
|
+
* - Verdict with `data.approved === false` (and not user-source) → `"unapproved"`
|
|
25
|
+
* (reviewer rejected and max iterations were reached)
|
|
26
|
+
*/
|
|
27
|
+
export declare function computePhaseLabel(step: BaseStep, ctx: StepContext): UserPhaseLabel;
|
|
16
28
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/user/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/user/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,QAAQ,EAER,WAAW,EACX,UAAU,EACV,OAAO,EACP,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAE1C,OAAO,CACX,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,UAAU,CAAC;CAyBvB;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,GACf,cAAc,CAShB"}
|
package/dist/user/handler.js
CHANGED
|
@@ -15,26 +15,13 @@ export class UserRoleHandler {
|
|
|
15
15
|
const displayArtifact = step.reads.display;
|
|
16
16
|
const displayText = displayArtifact
|
|
17
17
|
? ctx.artifacts.getText(displayArtifact) ?? "" : "";
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
const verdictData = verdictArtifactName
|
|
21
|
-
? ctx.artifacts.getData(verdictArtifactName)
|
|
22
|
-
: undefined;
|
|
23
|
-
const verdictSource = verdictArtifactName
|
|
24
|
-
? ctx.artifacts.getMeta(verdictArtifactName, "source")
|
|
25
|
-
: undefined;
|
|
26
|
-
const promptCtx = {
|
|
27
|
-
verdictApproved: verdictData?.approved,
|
|
28
|
-
isFirstReview: verdictData === undefined,
|
|
29
|
-
verdictSource,
|
|
30
|
-
previousStepRole: ctx.previousStepRole,
|
|
31
|
-
};
|
|
18
|
+
const phaseLabel = computePhaseLabel(step, ctx);
|
|
19
|
+
const promptCtx = { phaseLabel };
|
|
32
20
|
const result = await this.userPhase.prompt(displayText, step.id, promptCtx);
|
|
33
21
|
if (result.accepted) {
|
|
34
22
|
const userStep = step;
|
|
35
23
|
return { kind: userStep.breakOnAccept ? "break-loop" : "continue" };
|
|
36
24
|
}
|
|
37
|
-
// Rejected — write to verdict artifact with data + text + meta
|
|
38
25
|
const verdictKey = step.writes.verdict;
|
|
39
26
|
if (verdictKey) {
|
|
40
27
|
ctx.artifacts.set(verdictKey, {
|
|
@@ -46,4 +33,29 @@ export class UserRoleHandler {
|
|
|
46
33
|
return { kind: "restart-loop" };
|
|
47
34
|
}
|
|
48
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Compute the phase label from the verdict artifact and previous step role.
|
|
38
|
+
*
|
|
39
|
+
* Rules:
|
|
40
|
+
* - No verdict artifact yet → `"first"` (first review before any reviewer runs)
|
|
41
|
+
* - Verdict with `meta.source === "user"` → `"revised"` (planner regenerated
|
|
42
|
+
* in response to user feedback)
|
|
43
|
+
* - Verdict with `data.approved === true` → `"approved"`
|
|
44
|
+
* - Verdict with `data.approved === false` (and not user-source) → `"unapproved"`
|
|
45
|
+
* (reviewer rejected and max iterations were reached)
|
|
46
|
+
*/
|
|
47
|
+
export function computePhaseLabel(step, ctx) {
|
|
48
|
+
const verdictKey = step.writes.verdict;
|
|
49
|
+
if (!verdictKey)
|
|
50
|
+
return "first";
|
|
51
|
+
const data = ctx.artifacts.getData(verdictKey);
|
|
52
|
+
if (data === undefined)
|
|
53
|
+
return "first";
|
|
54
|
+
const source = ctx.artifacts.getMeta(verdictKey, "source");
|
|
55
|
+
if (source === "user")
|
|
56
|
+
return "revised";
|
|
57
|
+
if (data.approved === true)
|
|
58
|
+
return "approved";
|
|
59
|
+
return "unapproved";
|
|
60
|
+
}
|
|
49
61
|
//# sourceMappingURL=handler.js.map
|
package/dist/user/handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/user/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/user/handler.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAEpD,KAAK,CAAC,OAAO,CACX,IAAc,EACd,GAAgB,EAChB,MAAe;QAEf,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3C,MAAM,WAAW,GAAG,eAAe;YACjC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,SAAS,GAAsB,EAAE,UAAU,EAAE,CAAC;QAEpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAE5E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAgB,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC5B,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBACzB,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;gBAC3B,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;aACzB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAClC,CAAC;CACF;AAMD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAc,EACd,GAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IACvC,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAc,UAAU,CAAC,CAAC;IAC5D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAS,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IAC9C,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hard-wrap `line` to fit within `width` visible columns, preserving every
|
|
3
|
+
* character (no whitespace-aware reflow, no dropped trailing text). SGR escape
|
|
4
|
+
* sequences are passed through without consuming visible width. Empty input
|
|
5
|
+
* yields a single empty string so blank lines are preserved.
|
|
6
|
+
*
|
|
7
|
+
* Shared between `plan-pane.ts` (used by both user-review and curate prompts)
|
|
8
|
+
* and any other surface that needs character-preserving wrap.
|
|
9
|
+
*/
|
|
10
|
+
export declare function hardWrapLine(line: string, width: number): string[];
|
|
11
|
+
//# sourceMappingURL=hard-wrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hard-wrap.d.ts","sourceRoot":"","sources":["../../src/user/hard-wrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAkClE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hard-wrap `line` to fit within `width` visible columns, preserving every
|
|
3
|
+
* character (no whitespace-aware reflow, no dropped trailing text). SGR escape
|
|
4
|
+
* sequences are passed through without consuming visible width. Empty input
|
|
5
|
+
* yields a single empty string so blank lines are preserved.
|
|
6
|
+
*
|
|
7
|
+
* Shared between `plan-pane.ts` (used by both user-review and curate prompts)
|
|
8
|
+
* and any other surface that needs character-preserving wrap.
|
|
9
|
+
*/
|
|
10
|
+
export function hardWrapLine(line, width) {
|
|
11
|
+
if (width < 1)
|
|
12
|
+
width = 1;
|
|
13
|
+
if (line.length === 0)
|
|
14
|
+
return [""];
|
|
15
|
+
const out = [];
|
|
16
|
+
let cur = "";
|
|
17
|
+
let curVis = 0;
|
|
18
|
+
let i = 0;
|
|
19
|
+
while (i < line.length) {
|
|
20
|
+
if (line[i] === "\x1b" && line[i + 1] === "[") {
|
|
21
|
+
// eslint-disable-next-line no-control-regex
|
|
22
|
+
const m = /^\x1b\[[0-9;]*m/.exec(line.slice(i));
|
|
23
|
+
if (m) {
|
|
24
|
+
cur += m[0];
|
|
25
|
+
i += m[0].length;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const cp = line.codePointAt(i);
|
|
30
|
+
const ch = String.fromCodePoint(cp);
|
|
31
|
+
const cw = cp === 0xFE0F ? 0 : cp > 0xFFFF ? 2 : 1;
|
|
32
|
+
if (curVis + cw > width && cur.length > 0) {
|
|
33
|
+
out.push(cur);
|
|
34
|
+
cur = "";
|
|
35
|
+
curVis = 0;
|
|
36
|
+
}
|
|
37
|
+
cur += ch;
|
|
38
|
+
curVis += cw;
|
|
39
|
+
i += ch.length;
|
|
40
|
+
}
|
|
41
|
+
out.push(cur);
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=hard-wrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hard-wrap.js","sourceRoot":"","sources":["../../src/user/hard-wrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,IAAI,KAAK,GAAG,CAAC;QAAE,KAAK,GAAG,CAAC,CAAC;IACzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9C,4CAA4C;YAC5C,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,EAAE,CAAC;gBACN,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACjB,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnD,IAAI,MAAM,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,GAAG,GAAG,EAAE,CAAC;YACT,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;QACD,GAAG,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,EAAE,CAAC;QACb,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACjB,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type CuratePromptHandler, type CurateResult } from "./curate-prompt.js";
|
|
2
|
+
import type { ReviewVerdict } from "../agents/reviewers/types.js";
|
|
3
|
+
import type { TerminalHost } from "../terminal/host.js";
|
|
4
|
+
/**
|
|
5
|
+
* Host-backed curate-verdict prompt. The plan is always visible:
|
|
6
|
+
*
|
|
7
|
+
* - When `cols >= COLLAPSE_AT_COLS`: side-by-side. Issues panel on the
|
|
8
|
+
* left, plan on the right, with a `dim │` divider per row.
|
|
9
|
+
* - When `cols < COLLAPSE_AT_COLS`: top-down stack. Plan on top
|
|
10
|
+
* (`max(3, floor((rows - 1) / 2))` rows), full-width `dim ─` divider,
|
|
11
|
+
* issues panel below for the remaining rows. Both panels scroll
|
|
12
|
+
* independently — plan via PageUp/PageDown/Home/End/wheel, issues via
|
|
13
|
+
* Up/Down cursor movement (the issues pane auto-scrolls to keep the
|
|
14
|
+
* active issue visible).
|
|
15
|
+
*
|
|
16
|
+
* Issues panel: title + summary + per-issue rows. Each issue's full
|
|
17
|
+
* description is wrapped inline; when the cursor row is in revise mode and
|
|
18
|
+
* the editor is open, an inline buffer line renders directly under the
|
|
19
|
+
* issue.
|
|
20
|
+
*
|
|
21
|
+
* - k/d/r toggles the cursor row's decision.
|
|
22
|
+
* - Tab cycles keep → drop → revise → keep.
|
|
23
|
+
* - Enter on a revise row begins or finishes the inline edit; Esc cancels.
|
|
24
|
+
* - PageUp/PageDown/Home/End/wheel scrolls the plan.
|
|
25
|
+
* - Up/Down moves the cursor among issues.
|
|
26
|
+
* - Ctrl+D submits, Ctrl+C accepts all (keep all).
|
|
27
|
+
* - Ctrl+] is consumed by the host's `InputRouter` for dump capture.
|
|
28
|
+
*/
|
|
29
|
+
export declare class HostBackedCuratePrompt implements CuratePromptHandler {
|
|
30
|
+
private readonly host;
|
|
31
|
+
constructor(host: TerminalHost);
|
|
32
|
+
prompt(verdict: ReviewVerdict, planText?: string): Promise<CurateResult>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=host-curate-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-curate-prompt.d.ts","sourceRoot":"","sources":["../../src/user/host-curate-prompt.ts"],"names":[],"mappings":"AAQA,OAAO,EAML,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAmC,MAAM,qBAAqB,CAAC;AAMzF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,YAAY;IAEzC,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAiM/E"}
|