mindweave 3.2.7 → 3.3.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/cli/App.js +536 -36
- package/dist/cli/App.js.map +1 -1
- package/dist/cli/altScreen.js +6 -0
- package/dist/cli/altScreen.js.map +1 -1
- package/dist/cli/blockBoxes.js +57 -0
- package/dist/cli/blockBoxes.js.map +1 -0
- package/dist/cli/blockHeights.js +3 -0
- package/dist/cli/blockHeights.js.map +1 -1
- package/dist/cli/chatAnchor.js +51 -0
- package/dist/cli/chatAnchor.js.map +1 -1
- package/dist/cli/commandBackground.js +16 -0
- package/dist/cli/commandBackground.js.map +1 -0
- package/dist/cli/components/BlockView.js +10 -1
- package/dist/cli/components/BlockView.js.map +1 -1
- package/dist/cli/components/KeyManager.js +63 -7
- package/dist/cli/components/KeyManager.js.map +1 -1
- package/dist/cli/components/Picker.js +31 -5
- package/dist/cli/components/Picker.js.map +1 -1
- package/dist/cli/components/PromptInput.js +57 -12
- package/dist/cli/components/PromptInput.js.map +1 -1
- package/dist/cli/components/ToolLine.js +6 -0
- package/dist/cli/components/ToolLine.js.map +1 -1
- package/dist/cli/components/WorkGroup.js +90 -19
- package/dist/cli/components/WorkGroup.js.map +1 -1
- package/dist/cli/expandHits.js +18 -0
- package/dist/cli/expandHits.js.map +1 -1
- package/dist/cli/framebuffer/frameHold.js +58 -0
- package/dist/cli/framebuffer/frameHold.js.map +1 -0
- package/dist/cli/framebuffer/writer.js +47 -6
- package/dist/cli/framebuffer/writer.js.map +1 -1
- package/dist/cli/help.js +9 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/messageQueue.js +7 -2
- package/dist/cli/messageQueue.js.map +1 -1
- package/dist/cli/pickerSearch.js +59 -0
- package/dist/cli/pickerSearch.js.map +1 -0
- package/dist/cli/selectionGrow.js +327 -0
- package/dist/cli/selectionGrow.js.map +1 -0
- package/dist/cli/toolDisplay.js +40 -7
- package/dist/cli/toolDisplay.js.map +1 -1
- package/dist/cli/transcript.js +24 -7
- package/dist/cli/transcript.js.map +1 -1
- package/dist/cli/wheelStep.js +2 -2
- package/dist/cli/workLines.js +107 -6
- package/dist/cli/workLines.js.map +1 -1
- package/dist/core/turnRunner.js +7 -1
- package/dist/core/turnRunner.js.map +1 -1
- package/dist/dynamo/engine.js +21 -7
- package/dist/dynamo/engine.js.map +1 -1
- package/dist/dynamo/prompt.js +9 -0
- package/dist/dynamo/prompt.js.map +1 -1
- package/dist/dynamo/verify.js +21 -1
- package/dist/dynamo/verify.js.map +1 -1
- package/dist/mcp/connection.js +52 -9
- package/dist/mcp/connection.js.map +1 -1
- package/dist/mcp/manager.js +61 -42
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/resultView.js +116 -0
- package/dist/mcp/resultView.js.map +1 -0
- package/dist/mcp/transport/http.js +12 -4
- package/dist/mcp/transport/http.js.map +1 -1
- package/dist/mcp/transport/stdio.js +30 -5
- package/dist/mcp/transport/stdio.js.map +1 -1
- package/dist/mcp/transport/types.js +14 -0
- package/dist/mcp/transport/types.js.map +1 -1
- package/dist/memory/compaction.js +15 -3
- package/dist/memory/compaction.js.map +1 -1
- package/dist/memory/localCommand.js +138 -0
- package/dist/memory/localCommand.js.map +1 -0
- package/dist/memory/session.js +2 -0
- package/dist/memory/session.js.map +1 -1
- package/dist/memory/store.js +4 -1
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/tools/detail.js +2 -0
- package/dist/tools/detail.js.map +1 -1
- package/dist/tools/foregroundCommands.js +67 -0
- package/dist/tools/foregroundCommands.js.map +1 -0
- package/dist/tools/mcpAdd.js +124 -16
- package/dist/tools/mcpAdd.js.map +1 -1
- package/dist/tools/mindweaveStatus.js +1 -1
- package/dist/tools/mindweaveStatus.js.map +1 -1
- package/dist/tools/rebuildDetail.js +49 -1
- package/dist/tools/rebuildDetail.js.map +1 -1
- package/dist/tools/runCommand.js +69 -28
- package/dist/tools/runCommand.js.map +1 -1
- package/dist/tools/untrusted.js +7 -0
- package/dist/tools/untrusted.js.map +1 -1
- package/dist/tools/userCommand.js +52 -0
- package/dist/tools/userCommand.js.map +1 -0
- package/dist/tools/viewImage.js +14 -2
- package/dist/tools/viewImage.js.map +1 -1
- package/dist/tools/webSearch.js +42 -20
- package/dist/tools/webSearch.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* selectionGrow.ts — a selection that keeps growing while the view scrolls.
|
|
3
|
+
*
|
|
4
|
+
* `selection.ts` selects cells of the SCREEN and copies what is on the screen. That is
|
|
5
|
+
* simple and safe, and it has two limits a reader meets at once: scrolling moves the text
|
|
6
|
+
* out from under the highlight (so it was dropped), and a screen is all that can be copied
|
|
7
|
+
* (a long output, or a reply taller than the terminal, took several separate selections).
|
|
8
|
+
*
|
|
9
|
+
* Here the two ends of a selection are positions in the CONVERSATION, not on the screen:
|
|
10
|
+
*
|
|
11
|
+
* block id + a row inside that block + a column
|
|
12
|
+
*
|
|
13
|
+
* A block's id never changes, and a row counted from the top of its own block does not move
|
|
14
|
+
* when something ABOVE it grows, shrinks or re-measures (a row opened, a height estimate
|
|
15
|
+
* corrected as old text is scrolled into view) nor when something is appended below. A row
|
|
16
|
+
* counted from the top of the whole transcript has neither property, and an earlier version
|
|
17
|
+
* of this idea that used one could shift the join between two scrolls by a few rows.
|
|
18
|
+
*
|
|
19
|
+
* What gets copied cannot be read back from anything but the screen, because the text of a
|
|
20
|
+
* row only exists once it has been laid out and wrapped. So while a selection is alive,
|
|
21
|
+
* every frame hands the rows it shows to a `RowStore`, keyed the same way. Scrolling past a
|
|
22
|
+
* row is what puts it in the store; copying is assembling the rows between the two ends.
|
|
23
|
+
* A row that was never on screen cannot be copied, and the store knows which those are
|
|
24
|
+
* (`complete`), so the caller can say so rather than hand over a quiet hole.
|
|
25
|
+
*
|
|
26
|
+
* Pure apart from the store and the cell writes of `applyGrowSelection`; nothing here knows
|
|
27
|
+
* about React, Ink or the pointer, which is what lets the rules be tested without a terminal.
|
|
28
|
+
*/
|
|
29
|
+
import { ATTR, DEFAULT_COLOR, WIDE_CONTINUATION } from "./framebuffer/screen.js";
|
|
30
|
+
/** Order two rows of the conversation. Block ids rise along the transcript. */
|
|
31
|
+
export function compareKeys(a, b) {
|
|
32
|
+
return a.id !== b.id ? a.id - b.id : a.off - b.off;
|
|
33
|
+
}
|
|
34
|
+
/** The block boxes on screen, ordered by where they start (pure). */
|
|
35
|
+
export function sortSpans(spans) {
|
|
36
|
+
return [...spans].sort((a, b) => a.top - b.top);
|
|
37
|
+
}
|
|
38
|
+
/** The conversation row shown on screen row `y`, or null where no block is (pure). */
|
|
39
|
+
export function keyAtRow(spans, y) {
|
|
40
|
+
for (const s of spans) {
|
|
41
|
+
if (y >= s.top && y < s.top + s.height)
|
|
42
|
+
return { id: s.id, off: y - s.top };
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/** The screen row currently showing a conversation row, or null when it is not on screen (pure). */
|
|
47
|
+
export function rowOfKey(spans, key) {
|
|
48
|
+
const s = spans.find((b) => b.id === key.id);
|
|
49
|
+
if (!s || key.off < 0 || key.off >= s.height)
|
|
50
|
+
return null;
|
|
51
|
+
return s.top + key.off;
|
|
52
|
+
}
|
|
53
|
+
/** True when the drag never left the cell it began on, so nothing is selected. */
|
|
54
|
+
export function isEmptyGrow(sel) {
|
|
55
|
+
return compareKeys(sel.anchor, sel.focus) === 0 && sel.anchor.x === sel.focus.x;
|
|
56
|
+
}
|
|
57
|
+
/** The two ends in reading order, whichever way the drag went. */
|
|
58
|
+
export function normalizeGrow(sel) {
|
|
59
|
+
const { anchor, focus } = sel;
|
|
60
|
+
const c = compareKeys(anchor, focus);
|
|
61
|
+
const anchorFirst = c < 0 || (c === 0 && anchor.x <= focus.x);
|
|
62
|
+
return anchorFirst ? { start: anchor, end: focus } : { start: focus, end: anchor };
|
|
63
|
+
}
|
|
64
|
+
/** The columns the selection covers on one row, or null when the row is outside it (pure). */
|
|
65
|
+
export function coverage(sel, key, width) {
|
|
66
|
+
const { start, end } = normalizeGrow(sel);
|
|
67
|
+
if (compareKeys(key, start) < 0 || compareKeys(key, end) > 0)
|
|
68
|
+
return null;
|
|
69
|
+
const from = compareKeys(key, start) === 0 ? start.x : 0;
|
|
70
|
+
const to = compareKeys(key, end) === 0 ? end.x + 1 : width;
|
|
71
|
+
return { from: Math.max(0, Math.min(from, width)), to: Math.max(0, Math.min(to, width)) };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Where the pointer is, as a place in the conversation (pure).
|
|
75
|
+
*
|
|
76
|
+
* Above the view is the start of its first row and below it is the end of its last: a
|
|
77
|
+
* pointer pulled out past an edge to make the view scroll keeps selecting whole lines, the
|
|
78
|
+
* way it does in a document. Null when there is no block there to select (blank space
|
|
79
|
+
* above a conversation that does not fill the screen).
|
|
80
|
+
*/
|
|
81
|
+
export function focusFromPointer(spans, view, x, y, width) {
|
|
82
|
+
let row = y;
|
|
83
|
+
let col = x;
|
|
84
|
+
if (y < view.top) {
|
|
85
|
+
row = view.top;
|
|
86
|
+
col = 0;
|
|
87
|
+
}
|
|
88
|
+
else if (y >= view.bottom) {
|
|
89
|
+
row = view.bottom - 1;
|
|
90
|
+
col = width - 1;
|
|
91
|
+
}
|
|
92
|
+
const key = keyAtRow(spans, row);
|
|
93
|
+
if (!key)
|
|
94
|
+
return null;
|
|
95
|
+
return { ...key, x: Math.max(0, Math.min(col, width - 1)) };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* How far to scroll for a pointer held at `y` while dragging (pure). Positive scrolls back
|
|
99
|
+
* (up), negative forward (down), zero not at all.
|
|
100
|
+
*
|
|
101
|
+
* Past the edge of the view the pointer asks for it, and the further past, the faster. When
|
|
102
|
+
* the view reaches the top or bottom of the whole screen there is nothing beyond it for the
|
|
103
|
+
* pointer to go to, so the edge row itself asks, gently: otherwise a conversation that fills
|
|
104
|
+
* the screen could never be selected past its first or last row.
|
|
105
|
+
*/
|
|
106
|
+
export function edgeLines(y, view, screenRows) {
|
|
107
|
+
const speed = (d) => (d <= 1 ? 2 : d <= 3 ? 3 : 6);
|
|
108
|
+
if (y < view.top || (y === view.top && view.top === 0))
|
|
109
|
+
return speed(view.top - y);
|
|
110
|
+
if (y >= view.bottom || (y === view.bottom - 1 && view.bottom >= screenRows))
|
|
111
|
+
return -speed(y - (view.bottom - 1));
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
/** Write one row's worth of the highlight: the same flat inverse block `selection.ts` draws. */
|
|
115
|
+
function tint(screen, y, from, to) {
|
|
116
|
+
for (let x = from; x < to; x++) {
|
|
117
|
+
const i = screen.index(x, y);
|
|
118
|
+
screen.fg[i] = DEFAULT_COLOR;
|
|
119
|
+
screen.bg[i] = DEFAULT_COLOR;
|
|
120
|
+
screen.attrs[i] = (screen.attrs[i] | ATTR.inverse) & ~ATTR.dim;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** Highlight the part of the selection that is on screen, in place, on the frame about to be drawn. */
|
|
124
|
+
export function applyGrowSelection(screen, sel, spans, view) {
|
|
125
|
+
if (!sel || isEmptyGrow(sel))
|
|
126
|
+
return;
|
|
127
|
+
const top = Math.max(0, view.top);
|
|
128
|
+
const bottom = Math.min(screen.height, view.bottom);
|
|
129
|
+
// The two-column strip on the left holds the dot or the ">" and nothing else, so it is never
|
|
130
|
+
// highlighted: not the marker, not the blank cells beside it, and not the same strip on the rows
|
|
131
|
+
// under it or on the empty rows between messages. Only a strip that really is that (a marker and a
|
|
132
|
+
// space, or two blanks) is left out, so text that starts at column 0 stays selectable.
|
|
133
|
+
for (let y = top; y < bottom; y++) {
|
|
134
|
+
const key = keyAtRow(spans, y);
|
|
135
|
+
if (!key)
|
|
136
|
+
continue;
|
|
137
|
+
const cov = coverage(sel, key, screen.width);
|
|
138
|
+
if (!cov)
|
|
139
|
+
continue;
|
|
140
|
+
let from = cov.from;
|
|
141
|
+
if (from < 2) {
|
|
142
|
+
const c0 = screen.chars[screen.index(0, y)];
|
|
143
|
+
const c1 = screen.chars[screen.index(1, y)];
|
|
144
|
+
if (((c0 === 0x25cf || c0 === 0x3e) && c1 === 32) || (blankCell(c0) && blankCell(c1)))
|
|
145
|
+
from = 2;
|
|
146
|
+
}
|
|
147
|
+
// A stretch with nothing written in it is not highlighted: empty space has nothing to select.
|
|
148
|
+
let written = false;
|
|
149
|
+
for (let x = from; x < cov.to && !written; x++)
|
|
150
|
+
written = !blankCell(screen.chars[screen.index(x, y)]);
|
|
151
|
+
if (written)
|
|
152
|
+
tint(screen, y, from, cov.to);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Which click in a row this one is (pure).
|
|
157
|
+
*
|
|
158
|
+
* A click counts as the next one only when it comes soon enough after the last and lands on the
|
|
159
|
+
* same place (the same row, within a couple of columns). Too late, or somewhere else, and it is a
|
|
160
|
+
* first click again, so a stray second click never selects anything by accident. A fourth click
|
|
161
|
+
* starts over rather than counting on.
|
|
162
|
+
*/
|
|
163
|
+
export function nextClick(prev, now, x, y, windowMs) {
|
|
164
|
+
const again = !!prev && now - prev.at <= windowMs && prev.y === y && Math.abs(prev.x - x) <= 2 && prev.count < 3;
|
|
165
|
+
return { at: now, x, y, count: again ? prev.count + 1 : 1 };
|
|
166
|
+
}
|
|
167
|
+
/** Whether a cell holds nothing to select: a space, or a cell that was never written. */
|
|
168
|
+
function blankCell(ch) {
|
|
169
|
+
return ch === 32 || ch === 0;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* The word under a click, as the columns it covers, both ends included (pure): the unbroken
|
|
173
|
+
* run of characters on the row around column `x`. Null when `x` is on a blank, where there is
|
|
174
|
+
* nothing to select.
|
|
175
|
+
*/
|
|
176
|
+
export function wordBounds(cells, x) {
|
|
177
|
+
if (x < 0 || x >= cells.length || blankCell(cells[x]))
|
|
178
|
+
return null;
|
|
179
|
+
let from = x;
|
|
180
|
+
while (from > 0 && !blankCell(cells[from - 1]))
|
|
181
|
+
from--;
|
|
182
|
+
let to = x;
|
|
183
|
+
while (to < cells.length - 1 && !blankCell(cells[to + 1]))
|
|
184
|
+
to++;
|
|
185
|
+
return { from, to };
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* The whole line, as the columns from its first character to its last (pure). Null when the
|
|
189
|
+
* row is blank.
|
|
190
|
+
*/
|
|
191
|
+
export function lineBounds(cells) {
|
|
192
|
+
let from = 0;
|
|
193
|
+
while (from < cells.length && blankCell(cells[from]))
|
|
194
|
+
from++;
|
|
195
|
+
if (from >= cells.length)
|
|
196
|
+
return null;
|
|
197
|
+
let to = cells.length - 1;
|
|
198
|
+
while (to > from && blankCell(cells[to]))
|
|
199
|
+
to--;
|
|
200
|
+
return { from, to };
|
|
201
|
+
}
|
|
202
|
+
/** The marker a block starts with in the gutter: the agent's dot, or the ">" of your own message, and its space. */
|
|
203
|
+
const GUTTER_MARK = /^[●>] /;
|
|
204
|
+
/** The two columns of gutter the rest of a block's rows are indented by. */
|
|
205
|
+
const GUTTER_INDENT = /^ {1,2}/;
|
|
206
|
+
/**
|
|
207
|
+
* The rows seen on screen while a selection was alive.
|
|
208
|
+
*
|
|
209
|
+
* Keyed by block and row-in-block, so what is stored stays right however the transcript
|
|
210
|
+
* moves around it. A row is stored again every frame it is visible, so text that is still
|
|
211
|
+
* being written (a streaming reply, a running command) is the latest version of it.
|
|
212
|
+
*/
|
|
213
|
+
export class RowStore {
|
|
214
|
+
rows = new Map();
|
|
215
|
+
/** The last height each block was seen at, to know which rows of it should exist. */
|
|
216
|
+
heights = new Map();
|
|
217
|
+
width = 0;
|
|
218
|
+
clear() {
|
|
219
|
+
this.rows.clear();
|
|
220
|
+
this.heights.clear();
|
|
221
|
+
this.width = 0;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Take what the frame shows.
|
|
225
|
+
*
|
|
226
|
+
* `mask` is a stretch of one row that is not conversation: the "catch up" chip drawn over
|
|
227
|
+
* the view's last row. A row already stored is left alone then (it was captured clean
|
|
228
|
+
* when it was somewhere else); one that was not is stored with those cells blanked, so
|
|
229
|
+
* the chip's words can never end up in what is copied.
|
|
230
|
+
*/
|
|
231
|
+
capture(screen, spans, view, mask) {
|
|
232
|
+
this.width = screen.width;
|
|
233
|
+
for (const s of spans)
|
|
234
|
+
this.heights.set(s.id, s.height);
|
|
235
|
+
const top = Math.max(0, view.top);
|
|
236
|
+
const bottom = Math.min(screen.height, view.bottom);
|
|
237
|
+
for (let y = top; y < bottom; y++) {
|
|
238
|
+
const key = keyAtRow(spans, y);
|
|
239
|
+
if (!key)
|
|
240
|
+
continue;
|
|
241
|
+
let inner = this.rows.get(key.id);
|
|
242
|
+
if (!inner)
|
|
243
|
+
this.rows.set(key.id, (inner = new Map()));
|
|
244
|
+
const masked = mask && mask.y === y;
|
|
245
|
+
if (masked && inner.has(key.off))
|
|
246
|
+
continue;
|
|
247
|
+
const cells = new Uint32Array(screen.width);
|
|
248
|
+
for (let x = 0; x < screen.width; x++)
|
|
249
|
+
cells[x] = screen.chars[screen.index(x, y)];
|
|
250
|
+
if (masked)
|
|
251
|
+
for (let x = Math.max(0, mask.x0); x < Math.min(screen.width, mask.x1); x++)
|
|
252
|
+
cells[x] = 32;
|
|
253
|
+
inner.set(key.off, cells);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/** Whether a conversation row has been seen. */
|
|
257
|
+
has(key) {
|
|
258
|
+
return this.rows.get(key.id)?.has(key.off) ?? false;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* The text between the two ends, as it would be pasted.
|
|
262
|
+
*
|
|
263
|
+
* `orderedIds` is every block in transcript order, and `knownHeight` what is known of a
|
|
264
|
+
* block that was measured without being drawn. Together they say which rows SHOULD exist
|
|
265
|
+
* between the ends, so a row that never reached the screen is reported (`complete`)
|
|
266
|
+
* instead of leaving the join quietly wrong.
|
|
267
|
+
*/
|
|
268
|
+
text(sel, orderedIds, knownHeight) {
|
|
269
|
+
const { start, end } = normalizeGrow(sel);
|
|
270
|
+
const out = [];
|
|
271
|
+
let complete = true;
|
|
272
|
+
for (const id of orderedIds) {
|
|
273
|
+
if (id < start.id || id > end.id)
|
|
274
|
+
continue;
|
|
275
|
+
const inner = this.rows.get(id);
|
|
276
|
+
const height = this.heights.get(id) ?? knownHeight?.(id);
|
|
277
|
+
if (height === undefined) {
|
|
278
|
+
// Never drawn and never measured: nothing about it is known.
|
|
279
|
+
complete = false;
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
const first = id === start.id ? start.off : 0;
|
|
283
|
+
const last = id === end.id ? Math.min(end.off, height - 1) : height - 1;
|
|
284
|
+
// Whether this block's marker (the dot or the ">") was taken off its first row, so the rows
|
|
285
|
+
// that carry on under it lose the gutter they were indented by.
|
|
286
|
+
let markerGone = false;
|
|
287
|
+
for (let off = first; off <= last; off++) {
|
|
288
|
+
const cells = inner?.get(off);
|
|
289
|
+
if (!cells) {
|
|
290
|
+
complete = false;
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
const cov = coverage(sel, { id, off }, cells.length);
|
|
294
|
+
if (!cov)
|
|
295
|
+
continue;
|
|
296
|
+
let line = cellsText(cells, cov.from, cov.to);
|
|
297
|
+
// The marker in the gutter belongs to the screen, not to the text. It goes only when the
|
|
298
|
+
// selection takes in the start of the row: a word picked from the middle has no marker.
|
|
299
|
+
if (cov.from === 0) {
|
|
300
|
+
if (off === 0 && GUTTER_MARK.test(line)) {
|
|
301
|
+
line = line.replace(GUTTER_MARK, "");
|
|
302
|
+
markerGone = true;
|
|
303
|
+
}
|
|
304
|
+
else if (markerGone) {
|
|
305
|
+
line = line.replace(GUTTER_INDENT, "");
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
out.push(line);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return { text: out.join("\n"), complete };
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/** A stretch of a row as text: no right halves of wide characters, no padding at the end. */
|
|
315
|
+
function cellsText(cells, from, to) {
|
|
316
|
+
let line = "";
|
|
317
|
+
for (let x = from; x < to; x++) {
|
|
318
|
+
const ch = cells[x];
|
|
319
|
+
// The right half of a wide character carries no codepoint of its own, and the renderer's
|
|
320
|
+
// "unknown cell" sentinel is not a character; neither may reach fromCodePoint, which throws.
|
|
321
|
+
if (ch === WIDE_CONTINUATION || ch > 0x10ffff)
|
|
322
|
+
continue;
|
|
323
|
+
line += String.fromCodePoint(ch);
|
|
324
|
+
}
|
|
325
|
+
return line.replace(/\s+$/, "");
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=selectionGrow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionGrow.js","sourceRoot":"","sources":["../../src/cli/selectionGrow.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/toolDisplay.js
CHANGED
|
@@ -6,9 +6,12 @@
|
|
|
6
6
|
* test)`. Pure, display-only (never sent to a model), and deterministic from the
|
|
7
7
|
* tool name + parsed args.
|
|
8
8
|
*/
|
|
9
|
+
import { isAbsolute, resolve } from "node:path";
|
|
9
10
|
import { toPathList } from "../tools/pathList.js";
|
|
10
11
|
import { formatDuration } from "../tools/detail.js";
|
|
11
12
|
import { BAD, GOOD } from "./theme.js";
|
|
13
|
+
/** What a picture the agent looked at is called on its line. */
|
|
14
|
+
export const VIEWED_NAME = "Viewed";
|
|
12
15
|
/** Raw tool name → the bold display name shown in the row. */
|
|
13
16
|
const DISPLAY_NAME = {
|
|
14
17
|
read_file: "Read",
|
|
@@ -25,7 +28,7 @@ const DISPLAY_NAME = {
|
|
|
25
28
|
web_search: "WebSearch",
|
|
26
29
|
screenshot: "WindowCapture",
|
|
27
30
|
ui: "App",
|
|
28
|
-
view_image:
|
|
31
|
+
view_image: VIEWED_NAME,
|
|
29
32
|
use_skill: "Skill",
|
|
30
33
|
skill: "Skill",
|
|
31
34
|
todo_write: "Todo",
|
|
@@ -85,6 +88,16 @@ const COMMANDS = new Set(["run_command", "shells", "kill_shell"]);
|
|
|
85
88
|
* row with the commands and reads, as steps of one test.
|
|
86
89
|
*/
|
|
87
90
|
const TEST_STEPS = new Set(["ui"]);
|
|
91
|
+
/**
|
|
92
|
+
* A call to a tool an MCP server offers (`mcp__rea__open_binary`). They fold into the work
|
|
93
|
+
* row with commands and reads, as "Called 3 MCP tools", for the same reason those do: most
|
|
94
|
+
* answer something nobody needs to read, and a burst of them was a wall of rows.
|
|
95
|
+
*/
|
|
96
|
+
export function isMcpCall(name) {
|
|
97
|
+
return name.startsWith("mcp__");
|
|
98
|
+
}
|
|
99
|
+
/** What a folded MCP call is named on its line. The tool is the point, the server says whose. */
|
|
100
|
+
export const MCP_CALL_NAME = "MCP tool";
|
|
88
101
|
/** Whether a call is the agent working in the shell. */
|
|
89
102
|
export function isCommandTool(name) {
|
|
90
103
|
return COMMANDS.has(name);
|
|
@@ -149,7 +162,7 @@ export function neverShown(name) {
|
|
|
149
162
|
}
|
|
150
163
|
/** Whether a tool call should fold into the discovery group rather than its own row. */
|
|
151
164
|
export function isGroupable(name) {
|
|
152
|
-
return GROUPABLE.has(name) || COMMANDS.has(name) || TEST_STEPS.has(name);
|
|
165
|
+
return GROUPABLE.has(name) || COMMANDS.has(name) || TEST_STEPS.has(name) || isMcpCall(name) || name === "mcp_server" || name === "view_image";
|
|
153
166
|
}
|
|
154
167
|
const TOOL_KIND = {
|
|
155
168
|
read_file: "read",
|
|
@@ -209,14 +222,22 @@ export function dotColorFor(kind, status) {
|
|
|
209
222
|
return undefined;
|
|
210
223
|
}
|
|
211
224
|
/** Build the `Name(arg)` display parts for a tool call. */
|
|
212
|
-
export function toolDisplay(name, args) {
|
|
225
|
+
export function toolDisplay(name, args, cwd) {
|
|
213
226
|
const kind = toolKind(name);
|
|
214
227
|
// mcp__<server>__<tool> has no static DISPLAY_NAME entry (the name is generated
|
|
215
228
|
// per-server, see src/mcp/manager.ts) — parse it back into "MCPServer(server)"
|
|
216
229
|
// the way the tool header for everything else reads.
|
|
217
230
|
if (name.startsWith("mcp__")) {
|
|
218
|
-
const [, server] = name.split("__");
|
|
219
|
-
|
|
231
|
+
const [, server, ...rest] = name.split("__");
|
|
232
|
+
const tool = rest.join("__");
|
|
233
|
+
return { name: MCP_CALL_NAME, arg: server && tool ? `${server} · ${tool}` : server || undefined, kind };
|
|
234
|
+
}
|
|
235
|
+
// Changing a server's setup: the ACTION leads the argument ("MCP(add rea)", "MCP(reconnect
|
|
236
|
+
// rea)"), so the row says what was done before it says whether it worked.
|
|
237
|
+
if (name === "mcp_server") {
|
|
238
|
+
const action = typeof args.action === "string" && args.action.trim() ? args.action.trim() : "add";
|
|
239
|
+
const server = typeof args.name === "string" ? args.name.trim() : "";
|
|
240
|
+
return { name: "MCP", arg: server ? `${action} ${server}` : action, kind };
|
|
220
241
|
}
|
|
221
242
|
// Every REGISTERED tool has an entry above (enforced by test), so reaching the
|
|
222
243
|
// fallback means the model named a tool that does not exist.
|
|
@@ -318,9 +339,9 @@ export function toolDisplay(name, args) {
|
|
|
318
339
|
const many = toPathList(args);
|
|
319
340
|
const path = many.length === 1 ? (many[0] ?? "") : "";
|
|
320
341
|
const detail = many.length > 1
|
|
321
|
-
? many.map(
|
|
342
|
+
? many.map((p) => fullPath(p, cwd)).join(", ")
|
|
322
343
|
: path
|
|
323
|
-
?
|
|
344
|
+
? fullPath(path, cwd)
|
|
324
345
|
: str(args.symbol) || str(args.name) || str(args.query) || str(args.label);
|
|
325
346
|
return {
|
|
326
347
|
name: display,
|
|
@@ -338,6 +359,18 @@ function base(p) {
|
|
|
338
359
|
const parts = p.split(/[\\/]/).filter(Boolean);
|
|
339
360
|
return parts.length > 0 ? parts[parts.length - 1] : p;
|
|
340
361
|
}
|
|
362
|
+
/**
|
|
363
|
+
* A path as the row names it. The terminal passes the project folder and gets the whole path,
|
|
364
|
+
* forward slashes, so it can be found and copied (`C:/Projects/Cutio/src/app.ts`); a relative
|
|
365
|
+
* path is resolved against that folder. A caller without one (the desktop app draws its own
|
|
366
|
+
* rows) keeps the short form, the file's name.
|
|
367
|
+
*/
|
|
368
|
+
function fullPath(p, cwd) {
|
|
369
|
+
if (!cwd)
|
|
370
|
+
return base(p);
|
|
371
|
+
const abs = isAbsolute(p) ? p : resolve(cwd, p);
|
|
372
|
+
return abs.replace(/\\/g, "/");
|
|
373
|
+
}
|
|
341
374
|
function clip(s, max) {
|
|
342
375
|
const flat = s.replace(/\s+/g, " ").trim();
|
|
343
376
|
return flat.length <= max ? flat : flat.slice(0, max - 1) + "…";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolDisplay.js","sourceRoot":"","sources":["../../src/cli/toolDisplay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolDisplay.js","sourceRoot":"","sources":["../../src/cli/toolDisplay.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/transcript.js
CHANGED
|
@@ -73,7 +73,7 @@ export function lastExpandable(s) {
|
|
|
73
73
|
for (const list of [s.tail, s.committed]) {
|
|
74
74
|
for (let i = list.length - 1; i >= 0; i--) {
|
|
75
75
|
const b = list[i];
|
|
76
|
-
if ((b.kind === "tool" && b.full) || b.kind === "work" || b.kind === "subagent")
|
|
76
|
+
if ((b.kind === "tool" && b.full) || b.kind === "work" || b.kind === "subagent" || b.kind === "help")
|
|
77
77
|
return b.id;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -282,21 +282,27 @@ export function reduce(s, a) {
|
|
|
282
282
|
status: "running",
|
|
283
283
|
startedAt: a.at ?? Date.now(),
|
|
284
284
|
...(a.covers ? { covers: a.covers } : {}),
|
|
285
|
+
...(a.byUser ? { byUser: true } : {}),
|
|
285
286
|
};
|
|
286
|
-
|
|
287
|
+
// A command the person ran and a call the agent made are never in one row: "You ran" would
|
|
288
|
+
// be a claim about calls that are not theirs. Whichever is open when the other kind arrives
|
|
289
|
+
// is closed first.
|
|
290
|
+
const found = sealed.tail.find((b) => b.kind === "work" && !b.closed);
|
|
291
|
+
const open = found && found.kind === "work" && found.items.every((it) => !!it.byUser === !!a.byUser) ? found : undefined;
|
|
292
|
+
const base = found && !open ? closeToolGroup(sealed) : sealed;
|
|
287
293
|
if (open && open.kind === "work") {
|
|
288
294
|
return {
|
|
289
295
|
...sealed,
|
|
290
296
|
toolMap: { ...sealed.toolMap, [a.toolId]: open.id },
|
|
291
|
-
tail: sealed.tail.map((b) => (b.id === open.id && b.kind === "work" ? { ...b, items: [...b.items, item], done: false } : b)),
|
|
297
|
+
tail: sealed.tail.map((b) => (b.id === open.id && b.kind === "work" ? { ...b, items: [...b.items, item], done: false, live: true } : b)),
|
|
292
298
|
};
|
|
293
299
|
}
|
|
294
|
-
const gid =
|
|
300
|
+
const gid = base.seq + 1;
|
|
295
301
|
return {
|
|
296
|
-
...
|
|
302
|
+
...base,
|
|
297
303
|
seq: gid,
|
|
298
|
-
toolMap: { ...
|
|
299
|
-
tail:
|
|
304
|
+
toolMap: { ...base.toolMap, [a.toolId]: gid },
|
|
305
|
+
tail: base.tail.concat({ kind: "work", id: gid, done: false, live: true, items: [item] }),
|
|
300
306
|
};
|
|
301
307
|
}
|
|
302
308
|
// A mutating/standalone tool: close any open group, then show it on its own row.
|
|
@@ -392,6 +398,12 @@ export function reduce(s, a) {
|
|
|
392
398
|
return drain({ ...sealed, seq: id, tail: sealed.tail.concat({ kind: "error", id, done: true, text: a.text }) });
|
|
393
399
|
}
|
|
394
400
|
case "toggleExpand": {
|
|
401
|
+
// The command list is not opened or folded: a click takes it away, and the conversation
|
|
402
|
+
// is as it was before it was asked for.
|
|
403
|
+
const isHelp = (b) => b.kind === "help" && b.id === a.id;
|
|
404
|
+
if (s.committed.some(isHelp) || s.tail.some(isHelp)) {
|
|
405
|
+
return { ...s, committed: s.committed.filter((b) => !isHelp(b)), tail: s.tail.filter((b) => !isHelp(b)) };
|
|
406
|
+
}
|
|
395
407
|
// Committed rows too: every block is re-rendered each frame, and the row being
|
|
396
408
|
// clicked is nearly always one that finished a while ago.
|
|
397
409
|
const flip = (b) => b.kind === "tool" && b.id === a.id && b.full
|
|
@@ -459,6 +471,11 @@ export function reduce(s, a) {
|
|
|
459
471
|
const id = c.seq + 1;
|
|
460
472
|
return drain({ ...c, seq: id, tail: c.tail.concat({ kind: "notice", id, done: true, title: a.title, body: a.body }) });
|
|
461
473
|
}
|
|
474
|
+
case "help": {
|
|
475
|
+
const c = closeToolGroup(s);
|
|
476
|
+
const id = c.seq + 1;
|
|
477
|
+
return drain({ ...c, seq: id, tail: c.tail.concat({ kind: "help", id, done: true, text: a.text }) });
|
|
478
|
+
}
|
|
462
479
|
case "compaction": {
|
|
463
480
|
const c = closeToolGroup(s);
|
|
464
481
|
const id = c.seq + 1;
|