mindweave 2.3.0 → 2.4.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.
Files changed (123) hide show
  1. package/README.md +26 -43
  2. package/dist/alternator/chassis/lsp.js +67 -0
  3. package/dist/alternator/chassis/lsp.js.map +1 -1
  4. package/dist/cli/App.js +1211 -100
  5. package/dist/cli/App.js.map +1 -1
  6. package/dist/cli/altScreen.js +80 -10
  7. package/dist/cli/altScreen.js.map +1 -1
  8. package/dist/cli/analytics.js +83 -0
  9. package/dist/cli/analytics.js.map +1 -0
  10. package/dist/cli/appIdentity.js +54 -0
  11. package/dist/cli/appIdentity.js.map +1 -0
  12. package/dist/cli/attachments.js +27 -3
  13. package/dist/cli/attachments.js.map +1 -1
  14. package/dist/cli/blockHeights.js +58 -0
  15. package/dist/cli/blockHeights.js.map +1 -0
  16. package/dist/cli/caretPark.js +94 -0
  17. package/dist/cli/caretPark.js.map +1 -0
  18. package/dist/cli/clipboard.js +68 -0
  19. package/dist/cli/clipboard.js.map +1 -0
  20. package/dist/cli/commandLabel.js +19 -2
  21. package/dist/cli/commandLabel.js.map +1 -1
  22. package/dist/cli/commands.js +2 -0
  23. package/dist/cli/commands.js.map +1 -1
  24. package/dist/cli/components/BlockView.js +1 -1
  25. package/dist/cli/components/BlockView.js.map +1 -1
  26. package/dist/cli/components/KeyManager.js +12 -6
  27. package/dist/cli/components/KeyManager.js.map +1 -1
  28. package/dist/cli/components/Picker.js +26 -7
  29. package/dist/cli/components/Picker.js.map +1 -1
  30. package/dist/cli/components/PromptInput.js +300 -74
  31. package/dist/cli/components/PromptInput.js.map +1 -1
  32. package/dist/cli/components/TipLine.js +33 -0
  33. package/dist/cli/components/TipLine.js.map +1 -0
  34. package/dist/cli/components/ToolLine.js +30 -3
  35. package/dist/cli/components/ToolLine.js.map +1 -1
  36. package/dist/cli/dropHandles.js +76 -0
  37. package/dist/cli/dropHandles.js.map +1 -0
  38. package/dist/cli/exitCursor.js +56 -0
  39. package/dist/cli/exitCursor.js.map +1 -0
  40. package/dist/cli/framebuffer/overlay.js +42 -0
  41. package/dist/cli/framebuffer/overlay.js.map +1 -0
  42. package/dist/cli/framebuffer/paint.js +8 -1
  43. package/dist/cli/framebuffer/paint.js.map +1 -1
  44. package/dist/cli/framebuffer/parse.js +54 -4
  45. package/dist/cli/framebuffer/parse.js.map +1 -1
  46. package/dist/cli/framebuffer/writer.js +357 -6
  47. package/dist/cli/framebuffer/writer.js.map +1 -1
  48. package/dist/cli/groupReveal.js +29 -3
  49. package/dist/cli/groupReveal.js.map +1 -1
  50. package/dist/cli/inputView.js +45 -0
  51. package/dist/cli/inputView.js.map +1 -1
  52. package/dist/cli/livePad.js +53 -0
  53. package/dist/cli/livePad.js.map +1 -0
  54. package/dist/cli/memoryTuning.js +31 -0
  55. package/dist/cli/memoryTuning.js.map +1 -0
  56. package/dist/cli/messageQueue.js +76 -7
  57. package/dist/cli/messageQueue.js.map +1 -1
  58. package/dist/cli/mouse.js +40 -7
  59. package/dist/cli/mouse.js.map +1 -1
  60. package/dist/cli/quietConsole.js +50 -0
  61. package/dist/cli/quietConsole.js.map +1 -0
  62. package/dist/cli/screenMode.js +118 -0
  63. package/dist/cli/screenMode.js.map +1 -0
  64. package/dist/cli/screenShell.js +67 -0
  65. package/dist/cli/screenShell.js.map +1 -0
  66. package/dist/cli/screenStore.js +46 -0
  67. package/dist/cli/screenStore.js.map +1 -0
  68. package/dist/cli/scrollPill.js +101 -0
  69. package/dist/cli/scrollPill.js.map +1 -0
  70. package/dist/cli/selection.js +130 -0
  71. package/dist/cli/selection.js.map +1 -0
  72. package/dist/cli/startupFill.js +48 -0
  73. package/dist/cli/startupFill.js.map +1 -0
  74. package/dist/cli/terminalRestore.js +1 -1
  75. package/dist/cli/terminalRestore.js.map +1 -1
  76. package/dist/cli/toolDisplay.js +11 -2
  77. package/dist/cli/toolDisplay.js.map +1 -1
  78. package/dist/cli/toolItems.js +1 -0
  79. package/dist/cli/toolItems.js.map +1 -1
  80. package/dist/cli/transcript.js +54 -3
  81. package/dist/cli/transcript.js.map +1 -1
  82. package/dist/cli/wordEdit.js +95 -0
  83. package/dist/cli/wordEdit.js.map +1 -0
  84. package/dist/drivers/openai/manifest.js +4 -1
  85. package/dist/drivers/openai/manifest.js.map +1 -1
  86. package/dist/dynamo/engine.js +126 -20
  87. package/dist/dynamo/engine.js.map +1 -1
  88. package/dist/index.js +42 -3
  89. package/dist/index.js.map +1 -1
  90. package/dist/memory/pastedText.js +37 -0
  91. package/dist/memory/pastedText.js.map +1 -0
  92. package/dist/memory/presence.js +47 -0
  93. package/dist/memory/presence.js.map +1 -1
  94. package/dist/memory/session.js +78 -4
  95. package/dist/memory/session.js.map +1 -1
  96. package/dist/memory/store.js +22 -1
  97. package/dist/memory/store.js.map +1 -1
  98. package/dist/memory/types.js.map +1 -1
  99. package/dist/tools/backgroundShells.js +105 -18
  100. package/dist/tools/backgroundShells.js.map +1 -1
  101. package/dist/tools/commandOutput.js +207 -0
  102. package/dist/tools/commandOutput.js.map +1 -0
  103. package/dist/tools/detail.js +2 -2
  104. package/dist/tools/detail.js.map +1 -1
  105. package/dist/tools/openDefault.js +150 -0
  106. package/dist/tools/openDefault.js.map +1 -0
  107. package/dist/tools/outputShape.js +31 -6
  108. package/dist/tools/outputShape.js.map +1 -1
  109. package/dist/tools/pathList.js +32 -0
  110. package/dist/tools/pathList.js.map +1 -0
  111. package/dist/tools/readFile.js +3 -15
  112. package/dist/tools/readFile.js.map +1 -1
  113. package/dist/tools/registry.js +3 -1
  114. package/dist/tools/registry.js.map +1 -1
  115. package/dist/tools/runCommand.js +154 -58
  116. package/dist/tools/runCommand.js.map +1 -1
  117. package/dist/tools/screenshot.js +35 -3
  118. package/dist/tools/screenshot.js.map +1 -1
  119. package/dist/tools/viewImage.js +88 -0
  120. package/dist/tools/viewImage.js.map +1 -0
  121. package/dist/tools/writeFile.js +9 -1
  122. package/dist/tools/writeFile.js.map +1 -1
  123. package/package.json +2 -2
@@ -16,10 +16,13 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
16
16
  * Backspace, and paste (inserted at the cursor).
17
17
  */
18
18
  import { useEffect, useReducer, useRef, useState } from "react";
19
- import { Box, Text, useInput } from "ink";
20
- import { inputView } from "../inputView.js";
19
+ import { Box, Text, measureElement, useCursor, useInput } from "ink";
20
+ import { clickToOffset, inputView } from "../inputView.js";
21
+ import { latestScreen } from "../framebuffer/overlay.js";
21
22
  import { feedPasteChunk, initPasteState } from "../pasteAssembler.js";
22
23
  import { stripMouse } from "../mouse.js";
24
+ import { killToLineEnd, wordEnd, wordStart } from "../wordEdit.js";
25
+ import { declareCaret } from "../caretPark.js";
23
26
  // A paste collapses to a `[Pasted text …]` chip (the full content is restored when
24
27
  // the message is sent) once it's big enough to flood the box — either many lines OR
25
28
  // a long chunk that happens to be few lines (e.g. a couple of wrapped paragraphs).
@@ -42,37 +45,90 @@ const PASTE_END_TIMEOUT_MS = 250;
42
45
  // continuation of one already buffering, is a paste chunk — never a typed key.
43
46
  const PASTE_COALESCE_MS = 30;
44
47
  const PASTE_CHUNK_MIN = 40;
45
- const INITIAL = { value: "", cursor: 0, histIdx: null, selected: 0, draft: "" };
48
+ const INITIAL = { value: "", cursor: 0, histIdx: null, selected: 0, draft: "", range: null };
49
+ /** The selected span as a safe, ordered pair inside the buffer, or null if there is none. */
50
+ function span(s) {
51
+ if (!s.range)
52
+ return null;
53
+ const from = Math.max(0, Math.min(s.range.from, s.value.length));
54
+ const to = Math.max(0, Math.min(s.range.to, s.value.length));
55
+ return from === to ? null : { from: Math.min(from, to), to: Math.max(from, to) };
56
+ }
46
57
  function reduce(s, a) {
58
+ // Every action but the two that manage it drops the selection. A selection is a thing
59
+ // you are about to act on, not a mode to be left lying around: once the cursor has moved
60
+ // or the text has changed, a range recorded against the old text means nothing.
61
+ const clear = a.t === "selectRange" ? s : { ...s, range: null };
47
62
  switch (a.t) {
48
- case "insert":
49
- // Typing leaves history-browsing and resets the suggestion highlight.
63
+ case "insert": {
64
+ // Typing over a selection replaces it, which is what selecting text is for.
65
+ const sel = span(s);
66
+ const from = sel ? sel.from : s.cursor;
67
+ const to = sel ? sel.to : s.cursor;
50
68
  return {
51
- ...s,
52
- value: s.value.slice(0, s.cursor) + a.text + s.value.slice(s.cursor),
53
- cursor: s.cursor + a.text.length,
69
+ ...clear,
70
+ value: s.value.slice(0, from) + a.text + s.value.slice(to),
71
+ cursor: from + a.text.length,
54
72
  histIdx: null,
55
73
  selected: 0,
56
74
  };
57
- case "backspace":
75
+ }
76
+ case "backspace": {
77
+ // With a selection, ONE press takes the whole of it rather than one character.
78
+ const sel = span(s);
79
+ if (sel) {
80
+ return {
81
+ ...clear,
82
+ value: s.value.slice(0, sel.from) + s.value.slice(sel.to),
83
+ cursor: sel.from,
84
+ selected: 0,
85
+ };
86
+ }
58
87
  if (s.cursor === 0)
59
- return s;
88
+ return clear;
60
89
  return {
61
- ...s,
90
+ ...clear,
62
91
  value: s.value.slice(0, s.cursor - 1) + s.value.slice(s.cursor),
63
92
  cursor: s.cursor - 1,
64
93
  selected: 0,
65
94
  };
95
+ }
96
+ case "selectRange":
97
+ return { ...s, range: { from: a.from, to: a.to } };
66
98
  case "left":
67
- return { ...s, cursor: Math.max(0, s.cursor - 1) };
99
+ return { ...clear, cursor: Math.max(0, s.cursor - 1) };
68
100
  case "right":
69
- return { ...s, cursor: Math.min(s.value.length, s.cursor + 1) };
101
+ return { ...clear, cursor: Math.min(s.value.length, s.cursor + 1) };
70
102
  case "home":
71
- return { ...s, cursor: 0 };
103
+ return { ...clear, cursor: 0 };
72
104
  case "end":
73
- return { ...s, cursor: s.value.length };
105
+ return { ...clear, cursor: s.value.length };
74
106
  case "killLine":
75
- return { ...s, value: s.value.slice(s.cursor), cursor: 0 };
107
+ return { ...clear, value: s.value.slice(s.cursor), cursor: 0 };
108
+ case "killWordBack": {
109
+ const start = wordStart(s.value, s.cursor);
110
+ if (start === s.cursor)
111
+ return s;
112
+ return { ...clear, value: s.value.slice(0, start) + s.value.slice(s.cursor), cursor: start, selected: 0 };
113
+ }
114
+ case "killWordForward": {
115
+ const end = wordEnd(s.value, s.cursor);
116
+ if (end === s.cursor)
117
+ return s;
118
+ return { ...clear, value: s.value.slice(0, s.cursor) + s.value.slice(end), selected: 0 };
119
+ }
120
+ case "killToEnd": {
121
+ const next = killToLineEnd(s.value, s.cursor);
122
+ if (next.value === s.value)
123
+ return s;
124
+ return { ...clear, value: next.value, cursor: next.cursor, selected: 0 };
125
+ }
126
+ case "wordLeft":
127
+ return { ...clear, cursor: wordStart(s.value, s.cursor) };
128
+ case "wordRight":
129
+ return { ...clear, cursor: wordEnd(s.value, s.cursor) };
130
+ case "moveTo":
131
+ return { ...clear, cursor: Math.max(0, Math.min(s.value.length, a.offset)) };
76
132
  case "newline":
77
133
  return {
78
134
  ...s,
@@ -81,12 +137,12 @@ function reduce(s, a) {
81
137
  };
82
138
  case "splice": {
83
139
  const value = s.value.slice(0, a.start) + a.text + s.value.slice(a.end);
84
- return { ...s, value, cursor: a.start + a.text.length, selected: 0 };
140
+ return { ...clear, value, cursor: a.start + a.text.length, selected: 0 };
85
141
  }
86
142
  case "selUp":
87
- return { ...s, selected: Math.max(0, s.selected - 1) };
143
+ return { ...clear, selected: Math.max(0, s.selected - 1) };
88
144
  case "selDown":
89
- return { ...s, selected: Math.min(a.max, s.selected + 1) };
145
+ return { ...clear, selected: Math.min(a.max, s.selected + 1) };
90
146
  case "histReplace":
91
147
  return {
92
148
  ...s,
@@ -99,7 +155,7 @@ function reduce(s, a) {
99
155
  // Unlike histReplace this keeps NO history position and no draft: the text
100
156
  // came from the queue, not from history, so ↑ afterwards should walk history
101
157
  // from the newest again rather than resuming a walk the user never started.
102
- return { ...s, value: a.value, cursor: Math.min(a.value.length, a.cursor), histIdx: null, selected: 0 };
158
+ return { ...clear, value: a.value, cursor: Math.min(a.value.length, a.cursor), histIdx: null, selected: 0 };
103
159
  case "reset":
104
160
  return INITIAL;
105
161
  }
@@ -110,8 +166,10 @@ const DEFAULT_MAX_SUGGESTIONS = 6;
110
166
  /** Rows the text area may grow to before it scrolls instead. Enough for a real
111
167
  * paragraph; small enough that the chat above it is never squeezed away. */
112
168
  const DEFAULT_MAX_INPUT_ROWS = 8;
113
- export function PromptInput({ onSubmit, disabled = false, placeholder = "", width, history = [], completions = [], pathComplete, onLargePaste, maxMenuRows = DEFAULT_MAX_SUGGESTIONS, onMenuChange, onQueuePop, maxInputRows = DEFAULT_MAX_INPUT_ROWS, overlay, opening = false, }) {
169
+ export function PromptInput({ onSubmit, disabled = false, placeholder = "", width, history = [], completions = [], pathComplete, onLargePaste, onDroppedPaths, registerCaretClick, registerTextSelect, maxMenuRows = DEFAULT_MAX_SUGGESTIONS, onMenuChange, placeCursor = false, menuAbove = false, settleKey = 0, onQueuePop, maxInputRows = DEFAULT_MAX_INPUT_ROWS, overlay, opening = false, }) {
114
170
  const [state, dispatch] = useReducer(reduce, INITIAL);
171
+ // Mirrors what the click handler needs, refreshed each render (see registerCaretClick).
172
+ const clickCtx = useRef({ value: "", cursor: 0, fieldWidth: 0, maxRows: 1 });
115
173
  const { value, cursor, histIdx, selected, draft } = state;
116
174
  // The two autocomplete sources. Command menu: a single `/token` (no space) at the
117
175
  // start. Path menu: a `@token` ending at the cursor, resolved against the
@@ -182,11 +240,31 @@ export function PromptInput({ onSubmit, disabled = false, placeholder = "", widt
182
240
  const pasteTimer = useRef(null);
183
241
  // Insert an assembled paste — as a `[Pasted text …]` chip when it's big enough to
184
242
  // flood the box, otherwise inline.
243
+ /**
244
+ * The one way text enters the buffer, so a dropped file path is shortened to its handle
245
+ * wherever it came in.
246
+ *
247
+ * That matters because a drop does NOT reliably arrive as a paste. Ink consumes the
248
+ * bracketed-paste markers itself and hands the content over as one ordinary input
249
+ * event, so whether a dropped path reaches the paste branch below or this one comes
250
+ * down to whether it happened to be long enough to look like a paste. Shortening at
251
+ * the single point every insert passes through makes that distinction irrelevant.
252
+ *
253
+ * A lone keystroke is never a path and typing is the hot path here, so anything one
254
+ * character wide skips the scan entirely.
255
+ */
256
+ function insertText(text) {
257
+ dispatch({ t: "insert", text: onDroppedPaths && text.length > 1 ? onDroppedPaths(text) : text });
258
+ }
185
259
  function emitPaste(text) {
186
260
  if (!text)
187
261
  return;
188
262
  const big = text.split("\n").length >= PASTE_MIN_LINES || text.length >= PASTE_MIN_CHARS;
189
- dispatch({ t: "insert", text: onLargePaste && big ? onLargePaste(text) : text });
263
+ if (onLargePaste && big) {
264
+ dispatch({ t: "insert", text: onLargePaste(text) });
265
+ return;
266
+ }
267
+ insertText(text);
190
268
  }
191
269
  function flushPaste() {
192
270
  pasteTimer.current = null;
@@ -278,6 +356,34 @@ export function PromptInput({ onSubmit, disabled = false, placeholder = "", widt
278
356
  historyNext();
279
357
  return;
280
358
  }
359
+ // Chunk-sized editing. Every one of these has to be tested BEFORE the plain
360
+ // backspace and arrow handlers below, which claim the same physical keys and would
361
+ // otherwise swallow the chord one character at a time.
362
+ //
363
+ // Ctrl+Backspace is deliberately absent. The terminal sends it as the same byte as
364
+ // a bare Backspace, so there is nothing to tell the two apart by: binding it would
365
+ // either do nothing or change what plain Backspace does. Ctrl+W and Alt+Backspace
366
+ // are the chords that survive the wire, and both are bound here.
367
+ if ((key.ctrl && input === "w") || (key.meta && key.backspace)) {
368
+ dispatch({ t: "killWordBack" });
369
+ return;
370
+ }
371
+ if (key.ctrl && key.delete) {
372
+ dispatch({ t: "killWordForward" });
373
+ return;
374
+ }
375
+ if (key.ctrl && input === "k") {
376
+ dispatch({ t: "killToEnd" });
377
+ return;
378
+ }
379
+ if (key.ctrl && key.leftArrow) {
380
+ dispatch({ t: "wordLeft" });
381
+ return;
382
+ }
383
+ if (key.ctrl && key.rightArrow) {
384
+ dispatch({ t: "wordRight" });
385
+ return;
386
+ }
281
387
  if (key.backspace || key.delete) {
282
388
  dispatch({ t: "backspace" });
283
389
  return;
@@ -328,7 +434,7 @@ export function PromptInput({ onSubmit, disabled = false, placeholder = "", widt
328
434
  pasteTimer.current = setTimeout(flushPaste, PASTE_COALESCE_MS);
329
435
  }
330
436
  else {
331
- dispatch({ t: "insert", text: input });
437
+ insertText(input);
332
438
  }
333
439
  }
334
440
  /** Take the queue back into the box. False when there was nothing to take. */
@@ -374,13 +480,116 @@ export function PromptInput({ onSubmit, disabled = false, placeholder = "", widt
374
480
  // pad to `maxMenuRows`) land at exactly this height and never resize as you filter or
375
481
  // switch, while a richer surface in the same box (the key manager, an approval) may grow
376
482
  // past it rather than being clipped.
377
- const menuBoxRows = maxMenuRows + 4;
378
- return (_jsxs(Box, { flexDirection: "column", width: width, flexShrink: 0, children: [_jsx(Box, { flexDirection: "column", width: width, flexShrink: 0, borderStyle: "single", borderColor: "gray", paddingX: 1, children: _jsx(Field, { value: value, cursor: cursor, active: !disabled && !overlay, placeholder: overlay ? "" : placeholder, width: fieldWidth, maxRows: maxInputRows }) }), overlay || menu || opening ? (_jsx(Box, { flexDirection: "column", width: width, height: menuBoxRows, flexShrink: 0, borderStyle: "single", borderColor: "gray", paddingX: 1, marginTop: 1, overflow: "hidden", children: overlay ? (overlay) : menu ? (_jsx(SuggestionMenu, { matches: menu.items, selected: sel, width: width, mode: menu.mode, maxRows: maxMenuRows })) : (
379
- // `opening`: a command that opens a surface here was submitted, and the surface
380
- // is a moment away. The frame is held open with an empty body so the transition
381
- // from the command list to what it opens is a change of CONTENT inside one box
382
- // that never leaves the screen.
383
- _jsx(Box, { flexDirection: "column", height: menuBoxRows - 2 })) })) : null] }));
483
+ // Bordered: a border (2) around a header (1), the item rows, and the hint (1). Bare —
484
+ // the inline shell — keeps only the rows and the hint, because the two it drops are two
485
+ // more rows the terminal has to scroll for and neither is part of the choice.
486
+ const menuBoxRows = maxMenuRows + (menuAbove ? 1 : 4);
487
+ // Clicking in the text moves the caret there.
488
+ //
489
+ // What the click has to be resolved against is the CURRENT buffer, so the handler reads
490
+ // through a ref that this render refreshes rather than closing over a snapshot: a
491
+ // handler registered once and holding last minute's text would place clicks against
492
+ // characters that are no longer on screen. The alternative — re-registering on every
493
+ // keystroke — would put a subscribe and unsubscribe on the typing path for no gain.
494
+ //
495
+ // The mapping itself deliberately knows nothing about where the box was laid out; it
496
+ // finds the row's text in what was actually painted. See clickToOffset.
497
+ clickCtx.current = { value, cursor, fieldWidth, maxRows: maxInputRows };
498
+ /** Screen cell to buffer offset, against the buffer as it stands right now. */
499
+ function offsetAt(x, y) {
500
+ const screen = latestScreen();
501
+ if (!screen)
502
+ return null;
503
+ const { value: text, cursor: at, fieldWidth: w, maxRows } = clickCtx.current;
504
+ const view = inputView(text, at, Math.max(1, w - 1), maxRows);
505
+ const rowAt = (row) => (col) => {
506
+ if (row < 0 || row >= screen.height || col < 0 || col >= screen.width)
507
+ return " ";
508
+ const ch = screen.chars[screen.index(col, row)];
509
+ // A grid caught mid-repaint holds sentinels that are not codepoints at all, and
510
+ // String.fromCodePoint throws on them. Reading them as blanks simply means the row
511
+ // will not match and the click is ignored, which is the right outcome.
512
+ return ch > 0x10ffff ? " " : String.fromCodePoint(ch);
513
+ };
514
+ return clickToOffset(view.rows, view.cursorRow, view.cursorCol, rowAt, screen.width, x, y);
515
+ }
516
+ useEffect(() => {
517
+ if (!registerCaretClick)
518
+ return;
519
+ registerCaretClick((x, y) => {
520
+ const offset = offsetAt(x, y);
521
+ if (offset !== null)
522
+ dispatch({ t: "moveTo", offset });
523
+ });
524
+ return () => registerCaretClick(null);
525
+ }, [registerCaretClick]);
526
+ useEffect(() => {
527
+ if (!registerTextSelect)
528
+ return;
529
+ registerTextSelect((a, b) => {
530
+ // Both ends have to land in the input. A drag that started in the transcript is
531
+ // something to copy, not something to edit, and must not be reported as text.
532
+ const from = offsetAt(a.x, a.y);
533
+ const to = offsetAt(b.x, b.y);
534
+ if (from === null || to === null || from === to)
535
+ return false;
536
+ // The far end of a drag is the cell the pointer is ON, and that character is part of
537
+ // what was highlighted, so the range has to reach past it.
538
+ const [lo, hi] = from < to ? [from, to + 1] : [to, from + 1];
539
+ dispatch({ t: "selectRange", from: lo, to: hi });
540
+ return true;
541
+ });
542
+ return () => registerTextSelect(null);
543
+ }, [registerTextSelect]);
544
+ // The ONE surface for everything: the command menu, every picker, the key manager, an
545
+ // approval prompt — they all render HERE, in a single box beside the input. It appears
546
+ // ONLY when something is open, and its height is FIXED at and NEVER grows:
547
+ // every surface inside windows or pads its content to fit and scrolls when there is
548
+ // more, so the box is one steady size no matter what it holds.
549
+ //
550
+ // WHERE it sits is the shells' only disagreement about it. Fullscreen puts it beneath
551
+ // the input, inside a frame of fixed height, so opening it shrinks the chat and closing
552
+ // it gives those rows back — nothing moves that does not come back. Inline has no frame:
553
+ // the region simply gets taller, the terminal SCROLLS to fit it, and that scroll is
554
+ // one-way. Above the input, the prompt stays the last thing on screen through all of it,
555
+ // and the rows the palette borrowed are given back above rather than below (see
556
+ // livePad.ts). The chrome goes too, because inline every row costs a scroll.
557
+ // Blank rows holding the prompt still when the palette closes.
558
+ //
559
+ // The palette makes the live region taller than the room below it, so the TERMINAL
560
+ // scrolls to fit — and a scroll is one-way. Closing it again would let Ink write a
561
+ // shorter region at the top of where the tall one was, dropping the prompt a dozen rows
562
+ // up the screen with a gap beneath it. The rows are held instead of given back.
563
+ //
564
+ // Computed HERE, beside the box it compensates for, and that placement is the fix for a
565
+ // bug that survived two attempts elsewhere. Held in App, the height had to arrive
566
+ // through a callback — a render late — so for exactly one frame the pad and the palette
567
+ // were BOTH on screen, the region grew by twice what it should have, and the correction
568
+ // on the next frame left the gap it was supposed to prevent. Same state, same render,
569
+ // and the two can no longer disagree.
570
+ //
571
+ // changes when something is committed to scrollback. That is when the hold
572
+ // is released: printing pushes the live region back to the bottom of the screen on its
573
+ // own, so the rows are no longer holding anything up, and keeping them would leave a
574
+ // band of blank above the prompt for the rest of the session.
575
+ const boxRows = overlay || menu || opening ? menuBoxRows + 1 : 0;
576
+ const holdRef = useRef(0);
577
+ const heldAt = useRef(settleKey);
578
+ if (heldAt.current !== settleKey) {
579
+ heldAt.current = settleKey;
580
+ holdRef.current = 0;
581
+ }
582
+ holdRef.current = Math.max(holdRef.current, boxRows);
583
+ // Only the inline shell needs this. Fullscreen has a frame of fixed height: the palette
584
+ // shrinks the chat and closing it gives those rows back, so nothing ever scrolls.
585
+ const holdPad = menuAbove ? Math.max(0, holdRef.current - boxRows) : 0;
586
+ const menuBox = overlay || menu || opening ? (_jsx(Box, { flexDirection: "column", width: width, height: menuBoxRows, flexShrink: 0, ...(menuAbove ? { marginBottom: 1 } : { borderStyle: "single", borderColor: "gray", paddingX: 1, marginTop: 1 }), overflow: "hidden", children: overlay ? (overlay) : menu ? (_jsx(SuggestionMenu, { matches: menu.items, selected: sel, width: width, mode: menu.mode, maxRows: maxMenuRows, bare: menuAbove })) : (
587
+ // `opening`: a command that opens a surface here was submitted, and the surface
588
+ // is a moment away. The frame is held open with an empty body so the transition
589
+ // from the command list to what it opens is a change of CONTENT inside one box
590
+ // that never leaves the screen.
591
+ _jsx(Box, { flexDirection: "column", height: menuBoxRows - 2 })) })) : null;
592
+ return (_jsxs(Box, { flexDirection: "column", width: width, flexShrink: 0, children: [holdPad > 0 ? _jsx(Box, { flexShrink: 0, height: holdPad }) : null, menuAbove ? menuBox : null, _jsx(Box, { flexDirection: "column", width: width, flexShrink: 0, borderStyle: "single", borderColor: "gray", paddingX: 1, children: _jsx(Field, { value: value, cursor: cursor, active: !disabled && !overlay, placeholder: overlay ? "" : placeholder, width: fieldWidth, maxRows: maxInputRows, placeCursor: placeCursor }) }), menuAbove ? null : menuBox] }));
384
593
  }
385
594
  /** The `@token` ending at the cursor (back to the nearest whitespace), or null.
386
595
  * Used to drive the file-path picker while typing a `@mention`. */
@@ -413,7 +622,7 @@ function atTokenAt(value, cursor) {
413
622
  * treatment, same reason: it's the other place the user is choosing something,
414
623
  * not just reading a log.
415
624
  */
416
- function SuggestionMenu({ matches, selected, width, mode, maxRows, }) {
625
+ function SuggestionMenu({ matches, selected, width, mode, maxRows, bare = false, }) {
417
626
  // Window the list so `selected` is always visible (same scheme as Picker).
418
627
  const start = Math.min(Math.max(0, selected - (maxRows - 1)), Math.max(0, matches.length - maxRows));
419
628
  const shown = matches.slice(start, start + maxRows);
@@ -444,7 +653,7 @@ function SuggestionMenu({ matches, selected, width, mode, maxRows, }) {
444
653
  // every row is what makes App.tsx's maxRows cap reliable: without it Yoga compresses an
445
654
  // overfull menu instead of respecting the cap computed so it wouldn't need to (confirmed
446
655
  // with a bare Ink render, same as the chat viewport's rows — see App.tsx).
447
- return (_jsxs(_Fragment, { children: [header, shown.map((m, i) => {
656
+ return (_jsxs(_Fragment, { children: [bare ? null : header, shown.map((m, i) => {
448
657
  const active = start + i === selected;
449
658
  return (_jsxs(Box, { width: rowWidth, flexShrink: 0, children: [_jsxs(Text, { color: active ? "cyan" : undefined, bold: active, children: [active ? "› " : " ", m.name.padEnd(nameWidth)] }), _jsx(Box, { width: descWidth, children: _jsx(Text, { dimColor: true, wrap: "truncate-end", children: " " + m.description }) })] }, m.name));
450
659
  }), Array.from({ length: pad }).map((_, i) => (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { children: " " }) }, `pad${i}`))), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: hint }) })] }));
@@ -459,49 +668,66 @@ function SuggestionMenu({ matches, selected, width, mode, maxRows, }) {
459
668
  * the tip vanished and the box looked cut in half. The wrapping and the cursor maths
460
669
  * live in inputView.ts, where they are unit-tested.
461
670
  */
462
- /**
463
- * How long each half of the blink lasts.
464
- *
465
- * 530ms is the rate terminals and editors have converged on. It is slow enough to read
466
- * as a pulse rather than a flicker, and fast enough that the caret is never missing long
467
- * enough to look lost.
468
- */
469
- const BLINK_MS = 530;
470
- /**
471
- * The text caret: a thin bar that blinks, rather than a solid block that sits still.
472
- *
473
- * The block was drawn by inverting the cell, which is the cheapest possible caret and
474
- * reads as a frozen artefact — a filled square parked in the box whether the tool is
475
- * waiting for you, thinking, or doing nothing at all. A bar that blinks is the one piece
476
- * of motion that says an input is LIVE, and it is what makes a terminal prompt feel like
477
- * talking to something rather than typing into a field.
478
- *
479
- * The blink state lives HERE, not in Field or PromptInput. It ticks twice a second
480
- * forever, and anywhere higher up that would re-render the input's whole subtree — the
481
- * wrapped rows, the suggestion menu — twice a second for one cell.
482
- *
483
- * `under` is the character the caret sits on. A terminal grid has no room between cells,
484
- * so the caret has to occupy one: it shows the bar on the on-beat and gives the cell back
485
- * on the off-beat, which keeps a character under mid-line editing readable. At the end of
486
- * the text, where the caret spends nearly all its time, there is nothing under it and it
487
- * is simply a blinking bar.
488
- *
489
- * `resetKey` restarts the cycle on the on-beat whenever it changes. Without it, typing
490
- * during an off-beat leaves the caret invisible at the exact moment the user is looking
491
- * for it, which reads as dropped input.
492
- */
493
- function Caret({ under, resetKey }) {
494
- const [on, setOn] = useState(true);
671
+ function Field({ value, cursor, active, placeholder, width, maxRows, placeCursor, }) {
672
+ // ---- NO EARLY RETURN ABOVE THIS BLOCK ----
673
+ // Every hook here runs before the empty-value branch below returns. A hook underneath
674
+ // an early return runs a different number of times on the two renders either side of
675
+ // it, which takes the whole tree down; this app has already been bitten by exactly that.
676
+ const caretRowRef = useRef(null);
677
+ const caretView = inputView(value, cursor, Math.max(1, width - 1), maxRows);
678
+ // Declared during RENDER, not from a layout effect.
679
+ //
680
+ // Ink writes its frame from resetAfterCommit, which React runs BEFORE layout effects.
681
+ // A declaration made in useLayoutEffect is therefore read by the NEXT frame, not this
682
+ // one — the cursor sat one keystroke behind, visibly at the old position for a moment
683
+ // before catching up. Declaring here happens before the frame is built.
684
+ //
685
+ // Only the column is a value; the box is a REF, resolved at paint time when it has been
686
+ // attached and yoga has measured it. So nothing here has to be current except the
687
+ // number, which is.
688
+ declareCaret(active ? { ref: caretRowRef, column: value.length === 0 ? 0 : caretView.cursorCol } : null);
689
+ // ── the inline shell: the same caret, placed by Ink instead of by us ──────
690
+ //
691
+ // Fullscreen parks the terminal's own cursor after each frame, because it owns the
692
+ // screen and knows where every cell is. Inline it owns nothing — but Ink does, and
693
+ // is its API for exactly this: hand it a position relative to the live
694
+ // output and it emits the move and the show on the end of its own frame.
695
+ //
696
+ // So the caret is the REAL terminal cursor in both shells. Thin, blinking or not
697
+ // according to the terminal's own setting, taking no column and hiding no character.
698
+ // The block that was here before was what every inline terminal app draws when it
699
+ // gives up on this, and it is worse in all three of those ways.
700
+ //
701
+ // The ROW comes from a measurement of the previous frame; the COLUMN is computed
702
+ // fresh every render. That split is what keeps typing exact: a keystroke moves the
703
+ // column and nothing else, so the caret is never a frame behind where the character
704
+ // just went. The row only moves when the layout does — a block landing, a wrap — and
705
+ // catches up on the frame after, when nobody is mid-keystroke.
706
+ const { setCursorPosition } = useCursor();
707
+ const [caretAnchor, setCaretAnchor] = useState(null);
495
708
  useEffect(() => {
496
- setOn(true);
497
- const id = setInterval(() => setOn((v) => !v), BLINK_MS);
498
- return () => clearInterval(id);
499
- }, [resetKey]);
500
- return on ? _jsx(Text, { color: "cyan", children: "│" }) : _jsx(Text, { children: under || " " });
501
- }
502
- function Field({ value, cursor, active, placeholder, width, maxRows, }) {
709
+ if (!placeCursor || !caretRowRef.current)
710
+ return;
711
+ try {
712
+ const box = measureElement(caretRowRef.current);
713
+ // A node that has never been laid out measures as nothing. Anchoring there would
714
+ // put the cursor at the top-left corner of the output.
715
+ if (box.width === 0 && box.height === 0)
716
+ return;
717
+ setCaretAnchor((a) => (a && a.x === box.x && a.y === box.y ? a : { x: box.x, y: box.y }));
718
+ }
719
+ catch {
720
+ // Unmounted between the render and the measurement.
721
+ }
722
+ });
723
+ if (placeCursor) {
724
+ const column = value.length === 0 ? 0 : caretView.cursorCol;
725
+ setCursorPosition(active && caretAnchor ? { x: caretAnchor.x + column, y: caretAnchor.y } : undefined);
726
+ }
503
727
  if (value.length === 0) {
504
- return (_jsxs(Box, { flexShrink: 0, children: [_jsx(Text, { bold: true, color: "cyan", children: "> " }), _jsx(Box, { width: width, overflow: "hidden", children: _jsxs(Text, { wrap: "truncate-end", children: [active ? _jsx(Caret, { under: "", resetKey: "placeholder" }) : null, placeholder ? _jsx(Text, { dimColor: true, children: placeholder }) : null] }) })] }));
728
+ // An empty prompt still has a caret, sitting where the first character will go: at
729
+ // the START of the placeholder, which is the row the renderer can find on screen.
730
+ return (_jsxs(Box, { flexShrink: 0, children: [_jsx(Text, { bold: true, color: "cyan", children: "> " }), _jsx(Box, { width: width, overflow: "hidden", ref: caretRowRef, children: _jsx(Text, { wrap: "truncate-end", children: placeholder ? _jsx(Text, { dimColor: true, children: placeholder }) : null }) })] }));
505
731
  }
506
732
  // One column narrower than the box, because the caret is a real column.
507
733
  //
@@ -511,6 +737,6 @@ function Field({ value, cursor, active, placeholder, width, maxRows, }) {
511
737
  // typed — so the box would hide exactly the letter being written, and only once a line
512
738
  // was full. The reserved column is never wasted: the caret is always somewhere.
513
739
  const view = inputView(value, cursor, Math.max(1, width - 1), maxRows);
514
- return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [view.hiddenAbove > 0 ? (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: ` ↑ ${view.hiddenAbove} more line${view.hiddenAbove === 1 ? "" : "s"}` }) })) : null, view.rows.map((row, i) => (_jsxs(Box, { flexShrink: 0, children: [_jsx(Text, { bold: true, color: "cyan", children: i === 0 && view.hiddenAbove === 0 ? "> " : " " }), _jsx(Box, { width: width, overflow: "hidden", children: _jsx(Text, { wrap: "truncate-end", children: active && i === view.cursorRow ? (_jsxs(_Fragment, { children: [row.text.slice(0, view.cursorCol), _jsx(Caret, { under: row.text.slice(view.cursorCol, view.cursorCol + 1), resetKey: `${cursor}:${value.length}` }), row.text.slice(view.cursorCol + 1)] })) : (row.text) }) })] }, i))), view.hiddenBelow > 0 ? (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: ` ↓ ${view.hiddenBelow} more line${view.hiddenBelow === 1 ? "" : "s"}` }) })) : null] }));
740
+ return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [view.hiddenAbove > 0 ? (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: ` ↑ ${view.hiddenAbove} more line${view.hiddenAbove === 1 ? "" : "s"}` }) })) : null, view.rows.map((row, i) => (_jsxs(Box, { flexShrink: 0, children: [_jsx(Text, { bold: true, color: "cyan", children: i === 0 && view.hiddenAbove === 0 ? "> " : " " }), _jsx(Box, { width: width, overflow: "hidden", ref: active && i === view.cursorRow ? caretRowRef : undefined, children: _jsx(Text, { wrap: "truncate-end", children: row.text }) })] }, i))), view.hiddenBelow > 0 ? (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: ` ↓ ${view.hiddenBelow} more line${view.hiddenBelow === 1 ? "" : "s"}` }) })) : null] }));
515
741
  }
516
742
  //# sourceMappingURL=PromptInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PromptInput.js","sourceRoot":"","sources":["../../../src/cli/components/PromptInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PromptInput.js","sourceRoot":"","sources":["../../../src/cli/components/PromptInput.tsx"],"names":[],"mappings":"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"}