copperhead 0.7.0 → 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 (79) hide show
  1. package/README.md +36 -4
  2. package/dist/agent/animate.js +76 -0
  3. package/dist/agent/animate.js.map +1 -0
  4. package/dist/agent/box.js +89 -0
  5. package/dist/agent/box.js.map +1 -0
  6. package/dist/agent/dock-renderer.js +173 -0
  7. package/dist/agent/dock-renderer.js.map +1 -0
  8. package/dist/agent/logo.js +21 -0
  9. package/dist/agent/logo.js.map +1 -0
  10. package/dist/agent/loop.js +15 -5
  11. package/dist/agent/loop.js.map +1 -1
  12. package/dist/agent/providers/claude-code.js +1 -212
  13. package/dist/agent/providers/claude-code.js.map +1 -1
  14. package/dist/agent/providers/cursor.js +317 -0
  15. package/dist/agent/providers/cursor.js.map +1 -0
  16. package/dist/agent/providers/tool-protocol.js +205 -0
  17. package/dist/agent/providers/tool-protocol.js.map +1 -0
  18. package/dist/agent/render.js +32 -15
  19. package/dist/agent/render.js.map +1 -1
  20. package/dist/agent/runmeta.js +4 -5
  21. package/dist/agent/runmeta.js.map +1 -1
  22. package/dist/agent/theme.js +84 -0
  23. package/dist/agent/theme.js.map +1 -0
  24. package/dist/cli.js +134 -13
  25. package/dist/cli.js.map +1 -1
  26. package/dist/commands/create.js +41 -32
  27. package/dist/commands/create.js.map +1 -1
  28. package/dist/commands/demo.js +146 -0
  29. package/dist/commands/demo.js.map +1 -0
  30. package/dist/commands/doctor.js +240 -0
  31. package/dist/commands/doctor.js.map +1 -0
  32. package/dist/commands/repl-inspect.js +342 -0
  33. package/dist/commands/repl-inspect.js.map +1 -0
  34. package/dist/commands/repl.js +618 -0
  35. package/dist/commands/repl.js.map +1 -0
  36. package/dist/config.js +5 -2
  37. package/dist/config.js.map +1 -1
  38. package/dist/kicad/cli.js +126 -6
  39. package/dist/kicad/cli.js.map +1 -1
  40. package/dist/util/cli-args.js +35 -0
  41. package/dist/util/cli-args.js.map +1 -0
  42. package/dist/util/dock.js +155 -0
  43. package/dist/util/dock.js.map +1 -0
  44. package/dist/util/git.js +129 -4
  45. package/dist/util/git.js.map +1 -1
  46. package/dist/util/live-prompt.js +542 -0
  47. package/dist/util/live-prompt.js.map +1 -0
  48. package/dist/util/paths.js +9 -0
  49. package/dist/util/paths.js.map +1 -1
  50. package/dist/util/select.js +172 -0
  51. package/dist/util/select.js.map +1 -0
  52. package/package.json +4 -6
  53. package/src/agent/animate.ts +90 -0
  54. package/src/agent/box.ts +99 -0
  55. package/src/agent/dock-renderer.ts +181 -0
  56. package/src/agent/logo.ts +23 -0
  57. package/src/agent/loop.ts +15 -5
  58. package/src/agent/providers/claude-code.ts +2 -216
  59. package/src/agent/providers/cursor.ts +364 -0
  60. package/src/agent/providers/tool-protocol.ts +212 -0
  61. package/src/agent/render.ts +33 -16
  62. package/src/agent/runmeta.ts +6 -7
  63. package/src/agent/theme.ts +91 -0
  64. package/src/cli.ts +139 -15
  65. package/src/commands/create.ts +81 -30
  66. package/src/commands/demo.ts +184 -0
  67. package/src/commands/doctor.ts +289 -0
  68. package/src/commands/repl-inspect.ts +353 -0
  69. package/src/commands/repl.ts +685 -0
  70. package/src/config.ts +6 -3
  71. package/src/kicad/cli.ts +132 -7
  72. package/src/layout/claude-ui-layout.md +72 -0
  73. package/src/layout/repl-ui-layout.md +139 -0
  74. package/src/util/cli-args.ts +42 -0
  75. package/src/util/dock.ts +161 -0
  76. package/src/util/git.ts +140 -4
  77. package/src/util/live-prompt.ts +595 -0
  78. package/src/util/paths.ts +10 -0
  79. package/src/util/select.ts +192 -0
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/util/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/util/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,542 @@
1
+ /**
2
+ * Dock-based line prompt with live slash-command suggestions.
3
+ * The input renders inside a bordered box pinned to the bottom of the
4
+ * viewport (Claude Code-style), with an optional status bar underneath.
5
+ * Typing `/` shows matching commands under the box; ↑/↓ + Enter picks one.
6
+ */
7
+ import { bright, copper, copperLight, dim, warn } from '../agent/theme.js';
8
+ import { rule, statusBar, visibleWidth, wrapSpans } from '../agent/box.js';
9
+ import { TerminalDock } from './dock.js';
10
+ /** Visible width ignoring SGR; kept for existing callers/tests. */
11
+ export function visibleLen(s) {
12
+ return visibleWidth(s);
13
+ }
14
+ /** How many terminal rows `prompt + buffer` occupies at `cols` width. */
15
+ export function inputRowRows(prompt, buffer, cols) {
16
+ const w = Math.max(1, cols || 80);
17
+ return Math.max(1, Math.ceil(visibleLen(prompt + buffer) / w));
18
+ }
19
+ function matchesFor(buffer, commands) {
20
+ if (!buffer.startsWith('/'))
21
+ return [];
22
+ const p = buffer.toLowerCase();
23
+ if (p === '/')
24
+ return commands;
25
+ return commands.filter((c) => c.value.startsWith(p));
26
+ }
27
+ /**
28
+ * Visible slash-menu lines (exported for tests): Claude Code-style rows of
29
+ * `label description`. The hovered row is recolored (no inverse video) and
30
+ * its description wraps to a second row instead of truncating. Long lists
31
+ * are windowed to `maxVisible` rows around the hovered item.
32
+ */
33
+ export function suggestionLines(matches, index, maxVisible = 10, width = 100) {
34
+ if (!matches.length)
35
+ return [dim(' (no matching commands)')];
36
+ const clamped = Math.max(0, Math.min(index, matches.length - 1));
37
+ const labelW = Math.max(...matches.map((m) => m.label.length), 8);
38
+ /** ` ❯ ` + label + two-space gap. */
39
+ const prefix = 4 + labelW + 2;
40
+ const descW = Math.max(10, width - prefix);
41
+ let start = 0;
42
+ if (matches.length > maxVisible) {
43
+ start = Math.min(Math.max(0, clamped - (maxVisible >> 1)), matches.length - maxVisible);
44
+ }
45
+ const end = Math.min(matches.length, start + maxVisible);
46
+ const rows = [];
47
+ for (let i = start; i < end; i++) {
48
+ const item = matches[i];
49
+ const hovered = i === clamped;
50
+ const label = item.label.padEnd(labelW);
51
+ const desc = item.description ?? '';
52
+ if (!hovered) {
53
+ rows.push(` ${label} ${desc}`);
54
+ continue;
55
+ }
56
+ const first = desc.slice(0, descW);
57
+ const rest = desc.slice(descW);
58
+ rows.push(` ${copper('❯')} ${copperLight(label)} ${copperLight(first)}`);
59
+ if (rest) {
60
+ const cont = rest.length > descW ? `${rest.slice(0, descW - 1)}…` : rest;
61
+ rows.push(' '.repeat(prefix) + copperLight(cont));
62
+ }
63
+ }
64
+ return [
65
+ ...(start > 0 ? [dim(` ↑ ${start} more`)] : []),
66
+ ...rows,
67
+ ...(end < matches.length ? [dim(` ↓ ${matches.length - end} more`)] : []),
68
+ ];
69
+ }
70
+ /** Normalize arrow key aliases (CSI + SS3) to a small set. */
71
+ export function normalizeNavKey(key) {
72
+ // CSI: \x1b[A SS3: \x1bOA (common across terminals / tmux)
73
+ if (key === '\x1b[A' || key === '\x1bOA' || key === '\x1b[1;2A')
74
+ return 'up';
75
+ if (key === '\x1b[B' || key === '\x1bOB' || key === '\x1b[1;2B')
76
+ return 'down';
77
+ if (key === '\x1b[C' || key === '\x1bOC')
78
+ return 'right';
79
+ if (key === '\x1b[D' || key === '\x1bOD')
80
+ return 'left';
81
+ return key;
82
+ }
83
+ /** Bracketed-paste mode (DECSET 2004): on while the prompt owns the terminal. */
84
+ export const PASTE_ON = '\x1b[?2004h';
85
+ export const PASTE_OFF = '\x1b[?2004l';
86
+ const PASTE_START = '\x1b[200~';
87
+ const PASTE_END = '\x1b[201~';
88
+ /**
89
+ * Length of the trailing slice of `s` that could still grow into `marker`,
90
+ * so a marker split across two reads is never mistaken for pasted text.
91
+ */
92
+ function partialTail(s, marker) {
93
+ for (let n = Math.min(marker.length - 1, s.length); n > 0; n--) {
94
+ if (marker.startsWith(s.slice(s.length - n)))
95
+ return n;
96
+ }
97
+ return 0;
98
+ }
99
+ /**
100
+ * Push bytes through an escape-sequence assembler. Handles arrows that arrive
101
+ * split across reads (`\x1b` then `[A`), and treats a bracketed paste as
102
+ * literal text so a pasted newline cannot submit the line mid-request.
103
+ *
104
+ * A lone `\x1b` is held back, because it is also the first byte of every arrow
105
+ * key; KeyReader flushes it as a real Esc once its disambiguation timer fires.
106
+ */
107
+ export function pushKeys(pending, chunk, emit) {
108
+ pending.buf += chunk;
109
+ while (pending.buf.length) {
110
+ const s = pending.buf;
111
+ // Inside a paste: everything up to the end marker is content, never a
112
+ // command. Control characters fold to spaces so a multi-line paste lands
113
+ // in the buffer as one request instead of submitting its first line.
114
+ if (pending.paste) {
115
+ const end = s.indexOf(PASTE_END);
116
+ const body = end === -1 ? s.slice(0, s.length - partialTail(s, PASTE_END)) : s.slice(0, end);
117
+ // Indexed, not for-of: the rest of the assembler emits single code
118
+ // units, and surrogate halves reassemble in the caller's buffer.
119
+ for (let i = 0; i < body.length; i++)
120
+ emit(body[i] < ' ' ? ' ' : body[i]);
121
+ if (end === -1) {
122
+ pending.buf = s.slice(body.length);
123
+ return;
124
+ }
125
+ pending.paste = false;
126
+ pending.buf = s.slice(end + PASTE_END.length);
127
+ continue;
128
+ }
129
+ if (s[0] !== '\x1b') {
130
+ emit(s[0]);
131
+ pending.buf = s.slice(1);
132
+ continue;
133
+ }
134
+ // Incomplete ESC — wait for more bytes (or for the Esc flush timer).
135
+ if (s.length === 1)
136
+ return;
137
+ // SS3: ESC O A/B/C/D
138
+ if (s[1] === 'O') {
139
+ if (s.length < 3)
140
+ return;
141
+ emit(s.slice(0, 3));
142
+ pending.buf = s.slice(3);
143
+ continue;
144
+ }
145
+ // CSI: ESC [ … letter
146
+ if (s[1] === '[') {
147
+ // Need at least ESC [ X
148
+ if (s.length < 3)
149
+ return;
150
+ // Consume until a final byte (@-~) for longer sequences (e.g. \x1b[1;2A)
151
+ let j = 2;
152
+ while (j < s.length && s.charCodeAt(j) >= 0x20 && s.charCodeAt(j) < 0x40)
153
+ j++;
154
+ if (j >= s.length)
155
+ return; // incomplete
156
+ const seq = s.slice(0, j + 1);
157
+ pending.buf = s.slice(j + 1);
158
+ // Paste markers steer the assembler; they are never keys themselves.
159
+ if (seq === PASTE_START) {
160
+ pending.paste = true;
161
+ continue;
162
+ }
163
+ if (seq === PASTE_END)
164
+ continue; // stray end marker: nothing to close
165
+ emit(seq);
166
+ continue;
167
+ }
168
+ // Lone ESC (or ESC + non-CSI) — emit Esc
169
+ emit('\x1b');
170
+ pending.buf = s.slice(1);
171
+ }
172
+ }
173
+ /**
174
+ * Session-long key reader. Keeps the stream alive across many prompts
175
+ * (unlike `for await` of a Readable, which destroys it on exit).
176
+ */
177
+ export class KeyReader {
178
+ input;
179
+ escFlushMs;
180
+ queue = [];
181
+ waiters = [];
182
+ ended = false;
183
+ paused = false;
184
+ wasRaw;
185
+ pending = { buf: '' };
186
+ onData;
187
+ onEnd;
188
+ /** Pending "is this a bare Esc or the head of an arrow key?" decision. */
189
+ escTimer = null;
190
+ /**
191
+ * How long a lone `\x1b` waits for the rest of an escape sequence before it
192
+ * is delivered as a real Escape keypress. Every arrow key starts with the
193
+ * same byte, so without this a bare Esc would either be swallowed forever or
194
+ * eat the next arrow. 40ms is the usual terminal-emulator figure: far longer
195
+ * than the microseconds a real sequence takes to arrive, far shorter than a
196
+ * human follow-up keystroke.
197
+ */
198
+ constructor(input, escFlushMs = 40) {
199
+ this.input = input;
200
+ this.escFlushMs = escFlushMs;
201
+ this.wasRaw = input.isRaw;
202
+ if (typeof input.setRawMode === 'function')
203
+ input.setRawMode(true);
204
+ input.resume();
205
+ input.setEncoding('utf8');
206
+ this.onData = (c) => {
207
+ // While paused (agent run in flight): forward Ctrl+C as a real SIGINT
208
+ // so the user can interrupt the turn; swallow everything else so typed
209
+ // keys are neither queued nor echoed.
210
+ if (this.paused) {
211
+ if (String(c).includes('\x03'))
212
+ process.kill(process.pid, 'SIGINT');
213
+ return;
214
+ }
215
+ this.clearEscTimer();
216
+ pushKeys(this.pending, String(c), (key) => this.deliver(key));
217
+ // A trailing lone ESC is ambiguous until either more bytes or the timer
218
+ // arrives; anything else left over is a genuinely partial sequence.
219
+ //
220
+ // Never inside a paste: there the held `\x1b` is the first byte of a
221
+ // split `\x1b[201~` end marker, not a keypress. Flushing it would both
222
+ // deliver a phantom Escape and eat the ESC the marker needs, so paste
223
+ // mode could never close: every later byte would fold to a space
224
+ // (including Enter and Ctrl+C), leaving the session unusable from the
225
+ // keyboard. A real Esc typed inside a paste is content, and folds to a
226
+ // space like any other control byte.
227
+ if (this.pending.buf === '\x1b' && !this.pending.paste) {
228
+ this.escTimer = setTimeout(() => {
229
+ this.escTimer = null;
230
+ if (this.pending.buf !== '\x1b')
231
+ return;
232
+ this.pending.buf = '';
233
+ this.deliver('\x1b');
234
+ }, this.escFlushMs);
235
+ // Never hold the process open for a keypress that may never come.
236
+ this.escTimer.unref?.();
237
+ }
238
+ };
239
+ this.onEnd = () => {
240
+ this.clearEscTimer();
241
+ // Flush a dangling ESC if the stream ends mid-sequence.
242
+ if (this.pending.buf) {
243
+ for (const ch of this.pending.buf)
244
+ this.deliver(ch);
245
+ this.pending.buf = '';
246
+ }
247
+ this.ended = true;
248
+ while (this.waiters.length)
249
+ this.waiters.shift()(null);
250
+ };
251
+ input.on('data', this.onData);
252
+ input.on('end', this.onEnd);
253
+ }
254
+ deliver(key) {
255
+ const waiter = this.waiters.shift();
256
+ if (waiter)
257
+ waiter(key);
258
+ else
259
+ this.queue.push(key);
260
+ }
261
+ clearEscTimer() {
262
+ if (this.escTimer) {
263
+ clearTimeout(this.escTimer);
264
+ this.escTimer = null;
265
+ }
266
+ }
267
+ async next() {
268
+ if (this.queue.length)
269
+ return this.queue.shift();
270
+ if (this.ended)
271
+ return null;
272
+ return new Promise((resolve) => this.waiters.push(resolve));
273
+ }
274
+ /** Sync: pull every already-queued printable character (paste batch). */
275
+ drainPrintable() {
276
+ let out = '';
277
+ while (this.queue.length) {
278
+ const k = this.queue[0];
279
+ if (k.length === 1 && k >= ' ') {
280
+ out += this.queue.shift();
281
+ }
282
+ else {
283
+ break;
284
+ }
285
+ }
286
+ return out;
287
+ }
288
+ /**
289
+ * Swallow keys while an agent turn owns the terminal. Raw mode stays ON:
290
+ * cooked mode would echo typed keys (PgUp becomes `^[[5~` garbage on the
291
+ * screen); instead Ctrl+C is forwarded as a real SIGINT and everything
292
+ * else is discarded.
293
+ */
294
+ pause() {
295
+ this.paused = true;
296
+ this.clearEscTimer();
297
+ this.queue.length = 0;
298
+ this.pending.buf = '';
299
+ this.pending.paste = false;
300
+ }
301
+ /** Resume delivering keys to the prompt. */
302
+ resume() {
303
+ this.paused = false;
304
+ if (typeof this.input.setRawMode === 'function')
305
+ this.input.setRawMode(true);
306
+ this.input.resume();
307
+ }
308
+ close() {
309
+ this.clearEscTimer();
310
+ this.input.off('data', this.onData);
311
+ this.input.off('end', this.onEnd);
312
+ this.ended = true;
313
+ this.paused = true;
314
+ while (this.waiters.length)
315
+ this.waiters.shift()(null);
316
+ if (typeof this.input.setRawMode === 'function') {
317
+ this.input.setRawMode(this.wasRaw ?? false);
318
+ }
319
+ }
320
+ }
321
+ /** Tiny key source for unit tests. */
322
+ export function keySequence(keys) {
323
+ let i = 0;
324
+ return async () => (i < keys.length ? keys[i++] : null);
325
+ }
326
+ /**
327
+ * Read one line inside the bottom dock. When the buffer starts with `/`,
328
+ * live suggestions appear under the input box. Returns the submitted line,
329
+ * a selected slash command, or null on Ctrl+C / EOF.
330
+ */
331
+ export async function promptWithSlashHints(opts) {
332
+ const output = opts.output ?? process.stdout;
333
+ const dock = opts.dock ?? new TerminalDock(output);
334
+ let buffer = '';
335
+ let index = 0;
336
+ /** First Ctrl+C clears the input and arms; a second one exits. */
337
+ let ctrlCArmed = false;
338
+ /** Lines scrolled up into the session history (0 = live view). */
339
+ let scrollOffset = 0;
340
+ const boxWidth = () => Math.max(10, dock.cols() - 1);
341
+ const inputAreaLines = () => {
342
+ const w = boxWidth();
343
+ const spans = [{ text: opts.prompt, paint: copper }];
344
+ if (buffer === '' && opts.placeholder) {
345
+ spans.push({ text: opts.placeholder, paint: dim });
346
+ }
347
+ else {
348
+ spans.push({ text: buffer, paint: bright });
349
+ }
350
+ // Claude Code-style: full-width rules above and below, no side borders.
351
+ return [rule(w), ...wrapSpans(spans, w), rule(w)];
352
+ };
353
+ /** Real-cursor position: dock-relative row (1-based) and column of the caret. */
354
+ const caretPos = (headRows) => {
355
+ const w = boxWidth();
356
+ const len = visibleWidth(opts.prompt) + visibleWidth(buffer);
357
+ const bodyRows = Math.max(1, Math.ceil(Math.max(1, len + 1) / w));
358
+ const rowIdx = Math.min(Math.floor(len / w), bodyRows - 1);
359
+ const col = Math.min(len - rowIdx * w + 1, w);
360
+ return { row: headRows + 1 + rowIdx + 1, col };
361
+ };
362
+ const renderDock = () => {
363
+ const w = boxWidth();
364
+ const inputLines = inputAreaLines();
365
+ const statusLine = ctrlCArmed
366
+ ? statusBar(` ${warn('press ctrl+c again to exit')}`, '', w)
367
+ : scrollOffset > 0
368
+ ? statusBar(` ${warn(`history ↑${scrollOffset} · pgup/pgdn scroll · any key returns`)}`, '', w)
369
+ : opts.status
370
+ ? (() => {
371
+ const { left, right } = opts.status();
372
+ return statusBar(` ${left}`, `${right} `, w);
373
+ })()
374
+ : null;
375
+ // Idle dock is small (meta + rules + input + status) so the content
376
+ // region above stays large. The menu overlays upward on open: the dock
377
+ // grows into the rows above without scrolling (Claude Code behavior) and
378
+ // clears them again on close.
379
+ const winRows = typeof output.rows === 'number' && output.rows
380
+ ? output.rows
381
+ : 24;
382
+ const maxItems = Math.max(3, Math.min(10, winRows - inputLines.length - (statusLine ? 1 : 0) - 12));
383
+ let head;
384
+ if (buffer.startsWith('/')) {
385
+ const matches = matchesFor(buffer, opts.commands);
386
+ if (index >= matches.length)
387
+ index = Math.max(0, matches.length - 1);
388
+ head = suggestionLines(matches, index, maxItems, w);
389
+ }
390
+ else {
391
+ head = opts.meta ? [statusBar('', `${opts.meta()} `, w)] : [];
392
+ }
393
+ dock.set([...head, ...inputLines, ...(statusLine !== null ? [statusLine] : [])], caretPos(head.length));
394
+ };
395
+ const finish = (value) => {
396
+ if (value === null) {
397
+ // Session is ending (quit / EOF / double Ctrl+C): drop the dock.
398
+ dock.release();
399
+ output.write('\n');
400
+ return value;
401
+ }
402
+ // Keep the dock (and its scroll fence) through the turn so output stays
403
+ // in the content region and the banner is never scrolled away; show a
404
+ // passive input row until the next prompt.
405
+ const w = boxWidth();
406
+ dock.set([
407
+ ...(opts.meta ? [statusBar('', `${opts.meta()} `, w)] : []),
408
+ rule(w),
409
+ dim(' … working — ctrl+c interrupts'),
410
+ rule(w),
411
+ ...(opts.status ? [(() => {
412
+ const { left, right } = opts.status();
413
+ return statusBar(` ${left}`, `${right} `, w);
414
+ })()] : []),
415
+ ]);
416
+ // Commit the submitted line into the content region so history shows
417
+ // what actually ran (e.g. `/demo` picked from the bare-`/` dropdown).
418
+ if (opts.echo)
419
+ opts.echo(opts.prompt + value);
420
+ else
421
+ output.write(opts.prompt + value + '\n');
422
+ return value;
423
+ };
424
+ /** Repaint the content region at the current history offset. */
425
+ const paintHistory = () => {
426
+ const hist = opts.history?.() ?? [];
427
+ const end = Math.max(0, hist.length - scrollOffset);
428
+ dock.paintContent(hist.slice(Math.max(0, end - dock.contentRows()), end));
429
+ };
430
+ renderDock();
431
+ for (;;) {
432
+ const raw = await opts.readKey();
433
+ if (raw === null)
434
+ return finish(null);
435
+ const key = normalizeNavKey(raw);
436
+ // PgUp/PgDn scroll the session history in the content region; any other
437
+ // key snaps back to the live tail.
438
+ if ((key === '\x1b[5~' || key === '\x1b[6~') && opts.history) {
439
+ const hist = opts.history();
440
+ const page = Math.max(1, dock.contentRows() - 2);
441
+ const maxOff = Math.max(0, hist.length - dock.contentRows());
442
+ scrollOffset =
443
+ key === '\x1b[5~'
444
+ ? Math.min(maxOff, scrollOffset + page)
445
+ : Math.max(0, scrollOffset - page);
446
+ paintHistory();
447
+ renderDock();
448
+ continue;
449
+ }
450
+ if (scrollOffset > 0 && key !== 'up' && key !== 'down') {
451
+ scrollOffset = 0;
452
+ paintHistory();
453
+ renderDock();
454
+ }
455
+ if (key === '\x03') {
456
+ if (ctrlCArmed)
457
+ return finish(null);
458
+ ctrlCArmed = true;
459
+ buffer = '';
460
+ index = 0;
461
+ renderDock();
462
+ continue;
463
+ }
464
+ if (ctrlCArmed) {
465
+ ctrlCArmed = false;
466
+ renderDock();
467
+ }
468
+ if (key === '\x04' && buffer === '')
469
+ return finish(null);
470
+ if (key === '\r' || key === '\n') {
471
+ const matches = matchesFor(buffer, opts.commands);
472
+ if (buffer.startsWith('/') && matches.length > 0) {
473
+ return finish(matches[index].value);
474
+ }
475
+ return finish(buffer);
476
+ }
477
+ if (key === '\x1b') {
478
+ if (buffer.startsWith('/')) {
479
+ buffer = '';
480
+ index = 0;
481
+ renderDock();
482
+ }
483
+ continue;
484
+ }
485
+ // Arrows move the hover highlight; j/k only alias them on a bare "/"
486
+ // so they stay typeable inside a longer command (e.g. "/check" needs no
487
+ // j/k, but a future command might).
488
+ const navUp = key === 'up' || key === 'left' || (buffer === '/' && raw === 'k');
489
+ const navDown = key === 'down' || key === 'right' || (buffer === '/' && raw === 'j');
490
+ if (navUp || navDown) {
491
+ const matches = matchesFor(buffer, opts.commands);
492
+ if (matches.length) {
493
+ index = navUp
494
+ ? (index - 1 + matches.length) % matches.length
495
+ : (index + 1) % matches.length;
496
+ renderDock();
497
+ }
498
+ else if (buffer === '' && opts.history) {
499
+ // Mouse wheels send arrow keys in the alternate screen: line-scroll
500
+ // the session history at an empty prompt.
501
+ const hist = opts.history();
502
+ const maxOff = Math.max(0, hist.length - dock.contentRows());
503
+ scrollOffset = navUp ? Math.min(maxOff, scrollOffset + 2) : Math.max(0, scrollOffset - 2);
504
+ paintHistory();
505
+ renderDock();
506
+ }
507
+ continue;
508
+ }
509
+ if (key === '\t') {
510
+ const matches = matchesFor(buffer, opts.commands);
511
+ if (matches.length >= 1) {
512
+ buffer = matches[index].value;
513
+ renderDock();
514
+ }
515
+ continue;
516
+ }
517
+ if (key === '\x7f' || key === '\b') {
518
+ if (buffer.length) {
519
+ buffer = buffer.slice(0, -1);
520
+ index = 0;
521
+ renderDock();
522
+ }
523
+ continue;
524
+ }
525
+ if (key === '\x15') {
526
+ buffer = '';
527
+ index = 0;
528
+ renderDock();
529
+ continue;
530
+ }
531
+ // Printable input; coalesce paste so we paint once per burst instead of
532
+ // once per character.
533
+ if (key.length === 1 && key >= ' ') {
534
+ buffer += key;
535
+ if (opts.drainPrintable)
536
+ buffer += opts.drainPrintable();
537
+ index = 0;
538
+ renderDock();
539
+ }
540
+ }
541
+ }
542
+ //# sourceMappingURL=live-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-prompt.js","sourceRoot":"","sources":["../../src/util/live-prompt.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import path from 'node:path';
2
+ import os from 'node:os';
2
3
  export class SandboxError extends Error {
3
4
  attempted;
4
5
  constructor(attempted) {
@@ -22,4 +23,12 @@ export function resolveInRepo(repoRoot, p) {
22
23
  export function isKicadFile(p) {
23
24
  return /\.(kicad_sch|kicad_pcb|kicad_pro|kicad_sym|kicad_mod)$/.test(p);
24
25
  }
26
+ /** Shorten absolute paths for TTY chrome: `$HOME/…` → `~/…`. */
27
+ export function shortPath(p) {
28
+ const home = os.homedir();
29
+ if (home && (p === home || p.startsWith(home + path.sep))) {
30
+ return '~' + p.slice(home.length);
31
+ }
32
+ return p;
33
+ }
25
34
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/util/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,OAAO,YAAa,SAAQ,KAAK;IACT;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QADpB,cAAS,GAAT,SAAS,CAAQ;QAE3C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,CAAS;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,wDAAwD,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/util/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,OAAO,YAAa,SAAQ,KAAK;IACT;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QADpB,cAAS,GAAT,SAAS,CAAQ;QAE3C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,CAAS;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,wDAAwD,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}