mindweave 3.1.0 → 3.2.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 +116 -14
- package/dist/cli/App.js.map +1 -1
- package/dist/cli/components/BlockView.js +5 -5
- package/dist/cli/components/BlockView.js.map +1 -1
- package/dist/cli/components/CommandGroup.js +100 -0
- package/dist/cli/components/CommandGroup.js.map +1 -0
- package/dist/cli/components/TipLine.js +1 -0
- package/dist/cli/components/TipLine.js.map +1 -1
- package/dist/cli/components/ToolLine.js +69 -14
- package/dist/cli/components/ToolLine.js.map +1 -1
- package/dist/cli/components/WorkGroup.js +115 -0
- package/dist/cli/components/WorkGroup.js.map +1 -0
- package/dist/cli/diffWrap.js +24 -0
- package/dist/cli/diffWrap.js.map +1 -0
- package/dist/cli/expandHits.js +74 -0
- package/dist/cli/expandHits.js.map +1 -0
- package/dist/cli/mouse.js +16 -8
- package/dist/cli/mouse.js.map +1 -1
- package/dist/cli/scrollGlide.js +72 -0
- package/dist/cli/scrollGlide.js.map +1 -0
- package/dist/cli/scrollPill.js +21 -1
- package/dist/cli/scrollPill.js.map +1 -1
- package/dist/cli/selfUpdate.js +7 -0
- package/dist/cli/selfUpdate.js.map +1 -1
- package/dist/cli/terminalRestore.js +1 -1
- package/dist/cli/terminalRestore.js.map +1 -1
- package/dist/cli/toolDisplay.js +14 -10
- package/dist/cli/toolDisplay.js.map +1 -1
- package/dist/cli/transcript.js +100 -29
- package/dist/cli/transcript.js.map +1 -1
- package/dist/cli/uiLines.js +60 -0
- package/dist/cli/uiLines.js.map +1 -0
- package/dist/cli/wheelStep.js +29 -0
- package/dist/cli/wheelStep.js.map +1 -0
- package/dist/cli/workLines.js +84 -0
- package/dist/cli/workLines.js.map +1 -0
- package/dist/core/turnRunner.js +8 -6
- package/dist/core/turnRunner.js.map +1 -1
- package/dist/dynamo/engine.js +6 -0
- package/dist/dynamo/engine.js.map +1 -1
- package/dist/memory/compaction.js +24 -1
- package/dist/memory/compaction.js.map +1 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/tools/detail.js +113 -1
- package/dist/tools/detail.js.map +1 -1
- package/dist/tools/readFile.js +9 -1
- package/dist/tools/readFile.js.map +1 -1
- package/dist/tools/rebuildDetail.js +155 -0
- package/dist/tools/rebuildDetail.js.map +1 -0
- package/dist/tools/runCommand.js +3 -3
- package/dist/tools/runCommand.js.map +1 -1
- package/dist/tools/ui.js +54 -1
- package/dist/tools/ui.js.map +1 -1
- package/package.json +3 -3
|
@@ -19,7 +19,7 @@ import { wrapAnsi, visibleWidth } from "../wrap.js";
|
|
|
19
19
|
import { BAD, USER_BG, USER_FG } from "../theme.js";
|
|
20
20
|
import { compactionLines } from "../compaction.js";
|
|
21
21
|
import { ToolLine } from "./ToolLine.js";
|
|
22
|
-
import {
|
|
22
|
+
import { WorkGroup } from "./WorkGroup.js";
|
|
23
23
|
import { SubagentView } from "./SubagentView.js";
|
|
24
24
|
/**
|
|
25
25
|
* Text pre-wrapped to `width`, one <Text> row per line — see the file header.
|
|
@@ -55,7 +55,7 @@ function UserBand({ text, columns }) {
|
|
|
55
55
|
return (_jsx(Text, { backgroundColor: USER_BG, color: USER_FG, wrap: "truncate-end", children: `${i === 0 ? ">" : " "} ${body}${" ".repeat(pad)} ` }, i));
|
|
56
56
|
}) }));
|
|
57
57
|
}
|
|
58
|
-
function BlockViewInner({ block, columns, tightTop }) {
|
|
58
|
+
function BlockViewInner({ block, columns, tightTop, hovered, hoveredItem }) {
|
|
59
59
|
const textWidth = Math.max(8, columns - 4);
|
|
60
60
|
switch (block.kind) {
|
|
61
61
|
case "user":
|
|
@@ -75,9 +75,9 @@ function BlockViewInner({ block, columns, tightTop }) {
|
|
|
75
75
|
return (_jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { children: "●" }) }), _jsx(WrappedText, { text: renderMarkdown(block.text, proseWidth), width: proseWidth })] }));
|
|
76
76
|
}
|
|
77
77
|
case "tool":
|
|
78
|
-
return (_jsx(ToolLine, { name: block.name, arg: block.arg, status: block.status, action: block.action, summary: block.summary, detail: block.detail, detailKind: block.detailKind, meta: block.meta, columns: columns, live: block.live, tightTop: tightTop, since: block.since, waited: block.waited, startedAt: block.startedAt }));
|
|
79
|
-
case "
|
|
80
|
-
return _jsx(
|
|
78
|
+
return (_jsx(ToolLine, { id: block.id, full: block.full, expanded: block.expanded, hovered: hovered, name: block.name, arg: block.arg, status: block.status, action: block.action, summary: block.summary, detail: block.detail, detailKind: block.detailKind, meta: block.meta, columns: columns, live: block.live, tightTop: tightTop, since: block.since, waited: block.waited, startedAt: block.startedAt }));
|
|
79
|
+
case "work":
|
|
80
|
+
return (_jsx(WorkGroup, { id: block.id, items: block.items, open: block.open, live: block.live, columns: columns, tightTop: tightTop, hovered: hovered, hoveredItem: hoveredItem }));
|
|
81
81
|
case "subagent":
|
|
82
82
|
return (_jsx(SubagentView, { agents: block.agents, done: block.done, columns: columns, tightTop: tightTop }));
|
|
83
83
|
case "error":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockView.js","sourceRoot":"","sources":["../../../src/cli/components/BlockView.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAmD;IAC1F,OAAO,CACL,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAC,QAAQ,YACtC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtC,KAAC,IAAI,IAAS,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,cAAc,YAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAA9D,CAAC,CAAqE,CAClF,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAqC;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,oDAAoD;IAC1F,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnC,OAAO,CACL,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAE,KAAK,YACnD,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,OAAO,CACL,KAAC,IAAI,IAAS,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,cAAc,YACxE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAD3C,CAAC,CAEL,CACR,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"BlockView.js","sourceRoot":"","sources":["../../../src/cli/components/BlockView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* CommandGroup — everything the agent ran in the shell between two other things, as ONE
|
|
4
|
+
* folded row.
|
|
5
|
+
*
|
|
6
|
+
* ● Ran 4 commands ✓ ✓ ✗ ✓ ▸
|
|
7
|
+
*
|
|
8
|
+
* Commands are the agent's own working. Most print nothing worth reading, and a long
|
|
9
|
+
* conversation of them was a wall of rows, so they are folded: one line that says how many
|
|
10
|
+
* ran and, in a mark each, how every one ended. A failure shows red in that line without
|
|
11
|
+
* anything being opened. While any of them runs the dot pulses and the header is in the
|
|
12
|
+
* present tense ("Running 2 commands"); a command that joins keeps the same row going.
|
|
13
|
+
*
|
|
14
|
+
* A click opens the list, one line per command with its verdict in a column; a click on a
|
|
15
|
+
* command opens what it printed. Everything is a click away and nothing is thrown out, and
|
|
16
|
+
* the row is the same for one command as for ten.
|
|
17
|
+
*
|
|
18
|
+
* A question for the user is not in here: it is asked on its own, on the screen, and never
|
|
19
|
+
* waits behind a fold.
|
|
20
|
+
*/
|
|
21
|
+
import { Box, Text } from "ink";
|
|
22
|
+
import { PulseDot } from "./PulseDot.js";
|
|
23
|
+
import { Elapsed, MORE_MARKER, OUTCOME, lastOutcome } from "./ToolLine.js";
|
|
24
|
+
import { commandLabel } from "../commandLabel.js";
|
|
25
|
+
import { registerExpandable, itemHit } from "../expandHits.js";
|
|
26
|
+
import { BAD, GOOD } from "../theme.js";
|
|
27
|
+
const DOT = "●";
|
|
28
|
+
/** Marks beyond this many are counted instead, so the header never wraps. */
|
|
29
|
+
export const MAX_MARKS = 10;
|
|
30
|
+
/** Columns the verdict column holds: `✗ 130 · 2m 10s`. */
|
|
31
|
+
const VERDICT_WIDTH = 16;
|
|
32
|
+
/** What the header says (pure): the tense, the count, and one mark per command. */
|
|
33
|
+
export function commandHeader(items, live) {
|
|
34
|
+
const working = !!live && items.some((it) => it.status === "running");
|
|
35
|
+
const n = items.length;
|
|
36
|
+
const marks = items.map((it) => it.status);
|
|
37
|
+
const more = Math.max(0, marks.length - MAX_MARKS);
|
|
38
|
+
return {
|
|
39
|
+
text: `${working ? "Running" : "Ran"} ${n} ${n === 1 ? "command" : "commands"}`,
|
|
40
|
+
marks: marks.slice(more),
|
|
41
|
+
more,
|
|
42
|
+
working,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** The line of a command's output that says how it ended, if it printed one (pure). */
|
|
46
|
+
export function verdictLine(it) {
|
|
47
|
+
if (it.detailKind !== "shell" || !it.detail)
|
|
48
|
+
return undefined;
|
|
49
|
+
const lines = it.detail.split("\n");
|
|
50
|
+
const at = lastOutcome(lines);
|
|
51
|
+
return at >= 0 ? lines[at] : undefined;
|
|
52
|
+
}
|
|
53
|
+
/** What a command left to read once opened (pure): its command line, its output, no verdict. */
|
|
54
|
+
export function openedLines(it) {
|
|
55
|
+
const source = it.full ?? it.detail;
|
|
56
|
+
const lines = source ? source.split("\n") : [];
|
|
57
|
+
const verdict = it.detailKind === "shell" ? lastOutcome(lines) : -1;
|
|
58
|
+
const body = lines
|
|
59
|
+
.filter((_, i) => i !== verdict)
|
|
60
|
+
.map((l) => (it.full || !MORE_MARKER.test(l) ? l : `${l.trimEnd().replace(/\)$/, "")}, not saved in this chat)`));
|
|
61
|
+
const printed = body.filter((l) => !l.startsWith("$ ") && l.trim() !== "");
|
|
62
|
+
if (printed.length === 0) {
|
|
63
|
+
const said = it.summary && it.summary.trim() ? [it.summary.trim()] : ["(no output)"];
|
|
64
|
+
return [...body.filter((l) => l.startsWith("$ ")), ...said];
|
|
65
|
+
}
|
|
66
|
+
return body;
|
|
67
|
+
}
|
|
68
|
+
/** The words that name a command on its line (pure). */
|
|
69
|
+
export function commandName(it, room) {
|
|
70
|
+
if (it.arg)
|
|
71
|
+
return commandLabel(it.arg, room);
|
|
72
|
+
const word = it.name.toLowerCase();
|
|
73
|
+
return it.name === "Shell" ? "shell status" : word;
|
|
74
|
+
}
|
|
75
|
+
export function CommandGroup({ id, items, open, live, columns, tightTop, hovered, hoveredItem, }) {
|
|
76
|
+
const head = commandHeader(items, live);
|
|
77
|
+
const running = items.filter((it) => it.status === "running" && it.startedAt !== undefined);
|
|
78
|
+
const since = running.length > 0 ? Math.min(...running.map((it) => it.startedAt)) : undefined;
|
|
79
|
+
return (_jsxs(Box, { marginTop: tightTop ? 0 : 1, flexDirection: "column", children: [_jsxs(Box, { ref: (node) => registerExpandable(id, node), flexDirection: "row", width: columns, children: [_jsx(Box, { minWidth: 2, flexShrink: 0, children: head.working ? _jsx(PulseDot, { glyph: DOT }) : _jsx(Text, { children: DOT }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { bold: true, dimColor: !hovered, children: head.text }) }), _jsxs(Box, { flexShrink: 0, children: [_jsx(Text, { children: " " }), head.more > 0 ? _jsx(Text, { dimColor: true, children: `+${head.more} ` }) : null, head.marks.map((m, i) => (_jsxs(Text, { color: m === "ok" ? GOOD : m === "error" ? BAD : undefined, dimColor: m === "running", children: [m === "ok" ? "✓" : m === "error" ? "✗" : "·", i < head.marks.length - 1 ? " " : ""] }, i)))] }), head.working && since !== undefined ? (_jsx(Box, { flexShrink: 0, children: _jsx(Elapsed, { since: since }) })) : null, _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: !hovered, bold: hovered, children: open ? " ▾" : " ▸" }) })] }), open ? _jsx(CommandList, { id: id, items: items, columns: columns, live: live, hoveredItem: hoveredItem ?? -1 }) : null] }));
|
|
80
|
+
}
|
|
81
|
+
function CommandList({ id, items, columns, live, hoveredItem }) {
|
|
82
|
+
// The verdict column sits at the right of what the longest command needs, so on a wide
|
|
83
|
+
// terminal the verdicts stay beside their commands instead of drifting to the far edge.
|
|
84
|
+
const room = Math.max(8, columns - 4 - VERDICT_WIDTH - 4);
|
|
85
|
+
const labels = items.map((it) => commandName(it, room));
|
|
86
|
+
const labelWidth = Math.min(room, Math.max(...labels.map((l) => l.length)) + 2);
|
|
87
|
+
return (_jsx(Box, { flexDirection: "column", children: items.map((it, i) => {
|
|
88
|
+
const last = i === items.length - 1;
|
|
89
|
+
const hot = hoveredItem === i;
|
|
90
|
+
const verdict = verdictLine(it);
|
|
91
|
+
const running = it.status === "running";
|
|
92
|
+
const shown = running ? "" : verdict ?? (it.status === "error" ? "✗" : it.summary ? it.summary : "✓");
|
|
93
|
+
const verdictColor = running ? undefined : it.status === "error" || (verdict && !verdict.startsWith("✓")) ? BAD : GOOD;
|
|
94
|
+
const outcomeOnly = OUTCOME.test(shown) || shown === "";
|
|
95
|
+
const body = it.open ? openedLines(it) : [];
|
|
96
|
+
const bodyWidth = Math.max(8, columns - 8);
|
|
97
|
+
return (_jsxs(Box, { flexDirection: "column", ref: (node) => registerExpandable(itemHit(id, i), node), children: [_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { dimColor: !hot, children: last ? " └ " : " ├ " }), _jsx(Box, { width: labelWidth, flexShrink: 0, children: _jsx(Text, { bold: hot, dimColor: !hot, wrap: "truncate-end", children: labels[i] }) }), _jsx(Box, { width: outcomeOnly ? VERDICT_WIDTH : Math.max(VERDICT_WIDTH, columns - 4 - labelWidth - 3), flexShrink: 0, children: running ? (_jsxs(_Fragment, { children: [_jsx(PulseDot, { glyph: "\u25CF" }), live && it.startedAt !== undefined ? _jsx(Elapsed, { since: it.startedAt }) : null] })) : (_jsx(Text, { color: outcomeOnly ? verdictColor : undefined, dimColor: !outcomeOnly, wrap: outcomeOnly ? "truncate-end" : "wrap", children: shown })) }), _jsx(Text, { dimColor: !hot, bold: hot, children: it.open ? " ▾" : " ▸" })] }), body.map((line, j) => (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { dimColor: !hot, children: last ? " " : " │ " }), _jsx(Text, { dimColor: !hot, children: "│ " }), _jsx(Box, { width: bodyWidth, children: _jsx(Text, { dimColor: true, wrap: "wrap", children: line === "" ? " " : line }) })] }, j)))] }, it.toolId));
|
|
98
|
+
}) }));
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=CommandGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandGroup.js","sourceRoot":"","sources":["../../../src/cli/components/CommandGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export const TIPS = [
|
|
|
12
12
|
{ key: "/think", text: "sets how hard the model reasons" },
|
|
13
13
|
{ key: "ctrl+left", text: "moves the cursor a word at a time" },
|
|
14
14
|
{ key: "/undo", text: "restores the last checkpoint" },
|
|
15
|
+
{ key: "click", text: "a long output to open it, again to fold it (ctrl+o: the newest)" },
|
|
15
16
|
{ key: "/screen", text: "chooses the shell — fullscreen, or inline (beta)" },
|
|
16
17
|
];
|
|
17
18
|
/** The next tip to show. A rotation, so every tip is seen before any is seen twice. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TipLine.js","sourceRoot":"","sources":["../../../src/cli/components/TipLine.tsx"],"names":[],"mappings":";AAcA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,qDAAqD;AACrD,MAAM,CAAC,MAAM,IAAI,GAAU;IACzB,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,yCAAyC,EAAE;IACrE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAC7C,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE;IAClD,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACjD,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,8BAA8B,EAAE;IACvD,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,qDAAqD,EAAE;IAC9E,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,iCAAiC,EAAE;IAC1D,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,mCAAmC,EAAE;IAC/D,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE;IACtD,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,kDAAkD,EAAE;CAC7E,CAAC;AAEF,uFAAuF;AACvF,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM;IACxD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM;IAChD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE,GAAG,EAAgB;IAC3C,OAAO,CACL,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,MAAC,IAAI,eACF,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,YAAG,GAAG,CAAC,GAAG,GAAQ,EACrC,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAG,GAAG,CAAC,IAAI,GAAQ,IAClC,GACH,CACP,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"TipLine.js","sourceRoot":"","sources":["../../../src/cli/components/TipLine.tsx"],"names":[],"mappings":";AAcA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,qDAAqD;AACrD,MAAM,CAAC,MAAM,IAAI,GAAU;IACzB,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,yCAAyC,EAAE;IACrE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAC7C,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE;IAClD,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACjD,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,8BAA8B,EAAE;IACvD,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,qDAAqD,EAAE;IAC9E,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,iCAAiC,EAAE;IAC1D,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,mCAAmC,EAAE;IAC/D,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE;IACtD,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,iEAAiE,EAAE;IACzF,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,kDAAkD,EAAE;CAC7E,CAAC;AAEF,uFAAuF;AACvF,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM;IACxD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM;IAChD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE,GAAG,EAAgB;IAC3C,OAAO,CACL,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,MAAC,IAAI,eACF,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,YAAG,GAAG,CAAC,GAAG,GAAQ,EACrC,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAG,GAAG,CAAC,IAAI,GAAQ,IAClC,GACH,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -18,7 +18,11 @@ import { Box, Text } from "ink";
|
|
|
18
18
|
import { PulseDot } from "./PulseDot.js";
|
|
19
19
|
import { activeForm } from "../toolItems.js";
|
|
20
20
|
import { commandLabel } from "../commandLabel.js";
|
|
21
|
-
import { BAD, CODE, GOOD } from "../theme.js";
|
|
21
|
+
import { ACCENT, BAD, CODE, GOOD } from "../theme.js";
|
|
22
|
+
import { uiSegments } from "../uiLines.js";
|
|
23
|
+
import { registerExpandable } from "../expandHits.js";
|
|
24
|
+
import { wrapDiffLine } from "../diffWrap.js";
|
|
25
|
+
import { oneLineSteps } from "../../tools/detail.js";
|
|
22
26
|
const DOT = "●";
|
|
23
27
|
const BRANCH = "⎿";
|
|
24
28
|
// The rail beside quoted machine output (a command's stdout). Distinct from BRANCH:
|
|
@@ -37,17 +41,19 @@ const BRANCH_INDENT = 4;
|
|
|
37
41
|
* as one. A resumed session replays the text it stored, so dropping the old one would
|
|
38
42
|
* leave every past failure's verdict buried at the bottom of its block.
|
|
39
43
|
*/
|
|
40
|
-
const OUTCOME = /^[✓✗✖]/;
|
|
44
|
+
export const OUTCOME = /^[✓✗✖]/;
|
|
45
|
+
/** The `… (N more lines)` line `capLines` leaves where it cut a block short. */
|
|
46
|
+
export const MORE_MARKER = /^\s*… \(\d+ more lines?\)$/;
|
|
41
47
|
/** Where the verdict sits in a block's lines, or -1. Written as a loop because the
|
|
42
48
|
* project's TypeScript target predates `findLastIndex`. */
|
|
43
|
-
function lastOutcome(lines) {
|
|
49
|
+
export function lastOutcome(lines) {
|
|
44
50
|
for (let i = lines.length - 1; i >= 0; i--) {
|
|
45
51
|
if (OUTCOME.test(lines[i]))
|
|
46
52
|
return i;
|
|
47
53
|
}
|
|
48
54
|
return -1;
|
|
49
55
|
}
|
|
50
|
-
export function ToolLine({ name, arg, status, action, summary, detail, detailKind, meta, columns, live, tightTop, since, waited, startedAt }) {
|
|
56
|
+
export function ToolLine({ id, full, expanded, hovered, name, arg, status, action, summary, detail, detailKind, meta, columns, live, tightTop, since, waited, startedAt }) {
|
|
51
57
|
const errored = status === "error";
|
|
52
58
|
// "Updating(home.html)" while the tool works, "Update(home.html)" the moment it is done.
|
|
53
59
|
// `live` is false for a row from a turn that has ended (or a resumed session), which is
|
|
@@ -58,7 +64,8 @@ export function ToolLine({ name, arg, status, action, summary, detail, detailKin
|
|
|
58
64
|
const verb = activeForm(name, working);
|
|
59
65
|
const metaRoom = meta ? meta.length + 1 : 0;
|
|
60
66
|
// The branch content: rich detail lines if present, else the one-line summary.
|
|
61
|
-
const
|
|
67
|
+
const open = !!full && !!expanded;
|
|
68
|
+
const rawLines = open ? full.split("\n") : detail ? detail.split("\n") : summary ? [summary] : [];
|
|
62
69
|
// The wait joins the END of the facts line, beside the size and the format, rather than
|
|
63
70
|
// taking a line of its own: it is another fact about the same thing, and a row that grew
|
|
64
71
|
// a line once it settled would change shape after the fact.
|
|
@@ -79,7 +86,23 @@ export function ToolLine({ name, arg, status, action, summary, detail, detailKin
|
|
|
79
86
|
// test into the header and left the actual verdict at the bottom.
|
|
80
87
|
const outcomeAt = detailKind === "shell" ? lastOutcome(allLines) : -1;
|
|
81
88
|
const outcome = outcomeAt >= 0 ? allLines[outcomeAt] : undefined;
|
|
82
|
-
const
|
|
89
|
+
const withoutVerdict = outcomeAt >= 0 ? allLines.filter((_, i) => i !== outcomeAt) : allLines;
|
|
90
|
+
// The "… (30 more lines)" marker says what the row below it says better, in words that
|
|
91
|
+
// can be clicked. Said once, not twice.
|
|
92
|
+
// Where there is nothing to open (a chat saved before the uncut text was kept) the marker
|
|
93
|
+
// stays, and says so: a count of hidden lines with nothing to click reads as a broken row.
|
|
94
|
+
const shortened = full
|
|
95
|
+
? open
|
|
96
|
+
? withoutVerdict
|
|
97
|
+
: withoutVerdict.filter((l) => !MORE_MARKER.test(l))
|
|
98
|
+
: withoutVerdict.map((l) => (MORE_MARKER.test(l) ? `${l.trimEnd().replace(/\)$/, "")}, not saved in this chat)` : l));
|
|
99
|
+
// A UI test that is still running is a header and ONE changing row: the step it is on. The
|
|
100
|
+
// log of every step so far is for when it has finished; showing it growing line by line
|
|
101
|
+
// while the page is being driven only makes the row jump.
|
|
102
|
+
const latestOnly = working && action === "screenshot" && detailKind === "shell";
|
|
103
|
+
const latestStep = latestOnly ? oneLineSteps(shortened.join("\n")).slice(-1) : [];
|
|
104
|
+
// A progress note that is not a numbered step ("Waiting for the app to come up…") is the row too.
|
|
105
|
+
const branchLines = latestOnly ? (latestStep.length > 0 ? latestStep : shortened.filter((l) => l.trim() !== "").slice(-1)) : shortened;
|
|
83
106
|
// Trim a long arg from the FRONT so the meaningful tail (a filename) stays
|
|
84
107
|
// visible and the header never wraps to column 0.
|
|
85
108
|
//
|
|
@@ -102,7 +125,10 @@ export function ToolLine({ name, arg, status, action, summary, detail, detailKin
|
|
|
102
125
|
: arg.length > headerRoom
|
|
103
126
|
? "…" + arg.slice(-(headerRoom - 1))
|
|
104
127
|
: arg;
|
|
105
|
-
return (_jsxs(Box, { marginTop: tightTop ? 0 : 1, flexDirection: "column",
|
|
128
|
+
return (_jsxs(Box, { marginTop: tightTop ? 0 : 1, flexDirection: "column",
|
|
129
|
+
// Only a row that has more to show is clickable. The registry measures this box at
|
|
130
|
+
// the moment of a click, so nothing here has to know where on screen it is.
|
|
131
|
+
ref: full && id !== undefined ? (node) => registerExpandable(id, node) : undefined, children: [_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Box, { minWidth: 2, flexShrink: 0, children: working ? _jsx(PulseDot, { glyph: DOT }) : _jsx(Text, { children: DOT }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { bold: true, dimColor: !!full && status !== "running" && !hovered, children: verb }) }), shownArg ? (_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { wrap: "truncate-end", children: ["(", shownArg, ")"] }) })) : null, meta ? (_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { dimColor: true, wrap: "truncate-end", children: [" ", meta] }) })) : null, status === "running" && action === "run" && startedAt !== undefined ? (_jsx(Box, { flexShrink: 0, children: _jsx(Elapsed, { since: startedAt }) })) : null, live && since !== undefined ? (_jsx(Box, { flexShrink: 0, children: _jsx(Elapsed, { since: since }) })) : null, outcome ? (_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { color: errored ? BAD : GOOD, bold: true, wrap: "truncate-end", children: [" ", outcome] }) })) : null] }), (status !== "running" || (working && detailKind === "shell")) && branchLines.length > 0 ? (detailKind === "shell" ? (_jsx(ShellLines, { lines: branchLines, columns: columns, errored: errored, headerHasCommand: !!arg, hot: hovered, wrap: open })) : action === "screenshot" && detailKind !== "diff" ? (_jsx(UiLines, { lines: branchLines, columns: columns, errored: errored, hot: hovered, wrap: open })) : (_jsx(BranchLines, { lines: branchLines, columns: columns, errored: errored, diff: detailKind === "diff", hot: hovered, wrap: open }))) : null, full && status !== "running" ? (_jsx(Text, { dimColor: !hovered, bold: hovered, children: open ? " ▾ click to fold" : ` ▸ click to show all ${full.split("\n").length} lines` })) : null] }));
|
|
106
132
|
}
|
|
107
133
|
/** The indented `⎿` result block, one source line per row, diff-colored when the
|
|
108
134
|
* content is a real diff (`+ ` green, `- ` red; everything else dim).
|
|
@@ -111,17 +137,45 @@ export function ToolLine({ name, arg, status, action, summary, detail, detailKin
|
|
|
111
137
|
* "does this row have a detail block". Inferring it painted every command whose output
|
|
112
138
|
* happened to start with `-` as a deletion — a `Get-ChildItem` listing came out half
|
|
113
139
|
* red, since PowerShell writes its column rule as `----` and its file rows as `-a----`. */
|
|
114
|
-
function BranchLines({ lines, columns, errored, diff, }) {
|
|
140
|
+
function BranchLines({ lines, columns, errored, diff, hot, wrap, }) {
|
|
115
141
|
const content = Math.max(8, columns - BRANCH_INDENT - 1);
|
|
116
142
|
return (_jsx(Box, { flexDirection: "column", children: lines.map((line, i) => {
|
|
117
143
|
const style = errored ? { color: BAD } : diff ? diffStyle(line) : undefined;
|
|
118
144
|
const dim = !errored && style === undefined;
|
|
119
145
|
// Padded to the full content width so the tint is a continuous band rather than
|
|
120
146
|
// stopping wherever the code happens to end, which reads as a ragged smear.
|
|
121
|
-
|
|
122
|
-
|
|
147
|
+
// An opened diff carries a long line onto more rows by hand, so each one can keep the
|
|
148
|
+
// band and a hanging indent; the terminal's own wrapping would drop both.
|
|
149
|
+
const rows = wrap && diff ? wrapDiffLine(line, content) : [line];
|
|
150
|
+
return rows.map((row, r) => {
|
|
151
|
+
const painted = style?.backgroundColor ? row.padEnd(content) : row;
|
|
152
|
+
return (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { dimColor: !hot, children: i === 0 && r === 0 ? ` ${BRANCH} ` : " " }), _jsx(Box, { width: content, children: _jsx(Text, { ...style, dimColor: dim, wrap: wrap && !diff ? "wrap" : "truncate-end", children: painted }) })] }, `${i}.${r}`));
|
|
153
|
+
});
|
|
123
154
|
}) }));
|
|
124
155
|
}
|
|
156
|
+
/** How one piece of a UI row's line is painted (see uiLines.ts for what each kind is). */
|
|
157
|
+
function segStyle(seg, errored) {
|
|
158
|
+
if (seg.kind === "title")
|
|
159
|
+
return { bold: true, ...(errored ? { color: BAD } : {}) };
|
|
160
|
+
if (errored)
|
|
161
|
+
return { color: BAD };
|
|
162
|
+
if (seg.kind === "ref")
|
|
163
|
+
return { color: ACCENT };
|
|
164
|
+
if (seg.kind === "dim")
|
|
165
|
+
return { dimColor: true };
|
|
166
|
+
return {};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* A UI test's result under its row: the steps in plain text, the controls dim, the numbers
|
|
170
|
+
* that tie them together in the accent colour, and a bold title over each part.
|
|
171
|
+
*
|
|
172
|
+
* Its own renderer because the same grey for everything made the steps, which are the part
|
|
173
|
+
* worth reading, indistinguishable from the thirty controls of the page.
|
|
174
|
+
*/
|
|
175
|
+
function UiLines({ lines, columns, errored, hot, wrap }) {
|
|
176
|
+
const content = Math.max(8, columns - BRANCH_INDENT - 1);
|
|
177
|
+
return (_jsx(Box, { flexDirection: "column", children: lines.map((line, i) => (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { dimColor: !hot, children: i === 0 ? ` ${BRANCH} ` : " " }), _jsx(Box, { width: content, children: line === "" ? (_jsx(Text, { children: " " })) : (_jsx(Text, { wrap: wrap ? "wrap" : "truncate-end", children: uiSegments(line).map((seg, j) => (_jsx(Text, { ...segStyle(seg, errored), children: seg.text }, j))) })) })] }, i))) }));
|
|
178
|
+
}
|
|
125
179
|
/**
|
|
126
180
|
* A shell command's block: its output on a rail, then the outcome.
|
|
127
181
|
*
|
|
@@ -145,8 +199,9 @@ function BranchLines({ lines, columns, errored, diff, }) {
|
|
|
145
199
|
* The zones are told apart by the prefixes the tool wrote (`$ ` and `✓`/`✖`), the
|
|
146
200
|
* same convention the diff block uses for `+ `/`- `.
|
|
147
201
|
*/
|
|
148
|
-
function ShellLines({ lines, columns, errored, headerHasCommand, }) {
|
|
202
|
+
function ShellLines({ lines, columns, errored, headerHasCommand, hot, wrap, }) {
|
|
149
203
|
const content = Math.max(8, columns - BRANCH_INDENT - 2);
|
|
204
|
+
const fit = wrap ? "wrap" : "truncate-end";
|
|
150
205
|
// Only when the header had to trim it away. A command that fits is said once.
|
|
151
206
|
const shown = headerHasCommand ? lines.filter((l) => !l.startsWith("$ ")) : lines;
|
|
152
207
|
return (_jsx(Box, { flexDirection: "column", children: shown.map((line, i) => {
|
|
@@ -154,12 +209,12 @@ function ShellLines({ lines, columns, errored, headerHasCommand, }) {
|
|
|
154
209
|
// Same both-marks rule as OUTCOME above: `✗` now, `✖` in sessions recorded before it.
|
|
155
210
|
const outcome = OUTCOME.test(line);
|
|
156
211
|
const railed = !command && !outcome;
|
|
157
|
-
return (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { dimColor:
|
|
212
|
+
return (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { dimColor: !hot, children: railed ? ` ${RAIL} ` : " " }), _jsx(Box, { width: content, children: command ? (
|
|
158
213
|
// The `$` gets its own colour so the command is findable at a glance in
|
|
159
214
|
// a block of output. It is the one line here the user WROTE, in effect,
|
|
160
215
|
// and it was previously distinguished only by being bold, which loses
|
|
161
216
|
// against a screenful of equally plain machine text.
|
|
162
|
-
_jsxs(Text, { wrap:
|
|
217
|
+
_jsxs(Text, { wrap: fit, children: [_jsx(Text, { dimColor: true, children: "$ " }), _jsx(Text, { bold: true, color: CODE, children: line.slice(2) })] })) : (_jsx(Text, { color: outcome ? (line.startsWith("✓") ? GOOD : BAD) : errored ? BAD : undefined, dimColor: railed && !errored, bold: outcome, wrap: fit, children: line })) })] }, i));
|
|
163
218
|
}) }));
|
|
164
219
|
}
|
|
165
220
|
/**
|
|
@@ -194,7 +249,7 @@ function diffStyle(line) {
|
|
|
194
249
|
* Whole seconds: a wait is read at a glance, and a tenths place would be motion for its
|
|
195
250
|
* own sake right next to text someone is trying to read.
|
|
196
251
|
*/
|
|
197
|
-
function Elapsed({ since }) {
|
|
252
|
+
export function Elapsed({ since }) {
|
|
198
253
|
const [now, setNow] = useState(() => Date.now());
|
|
199
254
|
useEffect(() => {
|
|
200
255
|
const id = setInterval(() => setNow(Date.now()), 1000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolLine.js","sourceRoot":"","sources":["../../../src/cli/components/ToolLine.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ToolLine.js","sourceRoot":"","sources":["../../../src/cli/components/ToolLine.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* WorkGroup — everything the agent ran and read between two other things, as ONE folded row.
|
|
4
|
+
*
|
|
5
|
+
* ● Ran 4 commands, read 2 files ✓ ✓ ✗ ✓ ▸
|
|
6
|
+
*
|
|
7
|
+
* Commands and reads are the agent's own working. Most print nothing worth reading, and a long
|
|
8
|
+
* conversation of them was a wall of rows, so they are folded: one line that says how many
|
|
9
|
+
* commands ran and how many files were read, and, in a mark each, how every command ended. A
|
|
10
|
+
* failure shows red in that line without anything being opened. While any of it works the dot
|
|
11
|
+
* pulses and that part of the header is in the present tense ("Running 2 commands"); a call
|
|
12
|
+
* that joins keeps the same row going. Commands and reads share a row in whichever order they
|
|
13
|
+
* come, until the agent says or does something else.
|
|
14
|
+
*
|
|
15
|
+
* A click opens the list. A command is one line with its verdict in a column, and a click on
|
|
16
|
+
* it opens what it printed. A read is one line too: the file, and which part of it was read
|
|
17
|
+
* (`lines 410–551`, or the whole file). Everything is a click away and nothing is thrown out,
|
|
18
|
+
* and the row is the same for one call as for ten.
|
|
19
|
+
*
|
|
20
|
+
* A question for the user is not in here: it is asked on its own, on the screen, and never
|
|
21
|
+
* waits behind a fold.
|
|
22
|
+
*/
|
|
23
|
+
import { Box, Text } from "ink";
|
|
24
|
+
import { PulseDot } from "./PulseDot.js";
|
|
25
|
+
import { Elapsed, MORE_MARKER, OUTCOME, lastOutcome } from "./ToolLine.js";
|
|
26
|
+
import { commandLabel } from "../commandLabel.js";
|
|
27
|
+
import { registerExpandable, itemHit } from "../expandHits.js";
|
|
28
|
+
import { BAD, GOOD } from "../theme.js";
|
|
29
|
+
import { isRead, readRows, workHeader } from "../workLines.js";
|
|
30
|
+
const DOT = "●";
|
|
31
|
+
/** Marks beyond this many are counted instead, so the header never wraps. */
|
|
32
|
+
export const MAX_MARKS = 10;
|
|
33
|
+
/** Columns the verdict column holds: `✗ 130 · 2m 10s`. */
|
|
34
|
+
const VERDICT_WIDTH = 16;
|
|
35
|
+
/**
|
|
36
|
+
* What the header says (pure): the tense and count of each part, and one mark per command.
|
|
37
|
+
* A read earns a mark only when it failed; a read that worked is a count and a list line.
|
|
38
|
+
*/
|
|
39
|
+
export function commandHeader(items, live) {
|
|
40
|
+
const head = workHeader(items, live);
|
|
41
|
+
const marks = items.filter((it) => !isRead(it) || it.status === "error").map((it) => it.status);
|
|
42
|
+
const more = Math.max(0, marks.length - MAX_MARKS);
|
|
43
|
+
return { text: head.text, marks: marks.slice(more), more, working: head.working };
|
|
44
|
+
}
|
|
45
|
+
/** The line of a command's output that says how it ended, if it printed one (pure). */
|
|
46
|
+
export function verdictLine(it) {
|
|
47
|
+
if (it.detailKind !== "shell" || !it.detail)
|
|
48
|
+
return undefined;
|
|
49
|
+
const lines = it.detail.split("\n");
|
|
50
|
+
const at = lastOutcome(lines);
|
|
51
|
+
return at >= 0 ? lines[at] : undefined;
|
|
52
|
+
}
|
|
53
|
+
/** What a command left to read once opened (pure): its command line, its output, no verdict. */
|
|
54
|
+
export function openedLines(it) {
|
|
55
|
+
const source = it.full ?? it.detail;
|
|
56
|
+
const lines = source ? source.split("\n") : [];
|
|
57
|
+
const verdict = it.detailKind === "shell" ? lastOutcome(lines) : -1;
|
|
58
|
+
const body = lines
|
|
59
|
+
.filter((_, i) => i !== verdict)
|
|
60
|
+
.map((l) => (it.full || !MORE_MARKER.test(l) ? l : `${l.trimEnd().replace(/\)$/, "")}, not saved in this chat)`));
|
|
61
|
+
const printed = body.filter((l) => !l.startsWith("$ ") && l.trim() !== "");
|
|
62
|
+
if (printed.length === 0) {
|
|
63
|
+
const said = it.summary && it.summary.trim() ? [it.summary.trim()] : ["(no output)"];
|
|
64
|
+
return [...body.filter((l) => l.startsWith("$ ")), ...said];
|
|
65
|
+
}
|
|
66
|
+
return body;
|
|
67
|
+
}
|
|
68
|
+
/** The words that name a command on its line (pure). */
|
|
69
|
+
export function commandName(it, room) {
|
|
70
|
+
if (it.arg)
|
|
71
|
+
return commandLabel(it.arg, room);
|
|
72
|
+
const word = it.name.toLowerCase();
|
|
73
|
+
return it.name === "Shell" ? "shell status" : word;
|
|
74
|
+
}
|
|
75
|
+
function listRows(items, room) {
|
|
76
|
+
return items.flatMap((it, index) => isRead(it)
|
|
77
|
+
? readRows(it).map((r, j) => ({ key: `${it.toolId}.${j}`, index, item: it, label: r.label, range: r.range }))
|
|
78
|
+
: [{ key: it.toolId, index, item: it, label: commandName(it, room) }]);
|
|
79
|
+
}
|
|
80
|
+
export function WorkGroup({ id, items, open, live, columns, tightTop, hovered, hoveredItem, }) {
|
|
81
|
+
const head = commandHeader(items, live);
|
|
82
|
+
const running = items.filter((it) => it.status === "running" && it.startedAt !== undefined);
|
|
83
|
+
const since = running.length > 0 ? Math.min(...running.map((it) => it.startedAt)) : undefined;
|
|
84
|
+
return (_jsxs(Box, { marginTop: tightTop ? 0 : 1, flexDirection: "column", children: [_jsxs(Box, { ref: (node) => registerExpandable(id, node), flexDirection: "row", width: columns, children: [_jsx(Box, { minWidth: 2, flexShrink: 0, children: head.working ? _jsx(PulseDot, { glyph: DOT }) : _jsx(Text, { children: DOT }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { bold: true, dimColor: !hovered, children: head.text }) }), head.marks.length > 0 ? (_jsxs(Box, { flexShrink: 0, children: [_jsx(Text, { children: " " }), head.more > 0 ? _jsx(Text, { dimColor: true, children: `+${head.more} ` }) : null, head.marks.map((m, i) => (_jsxs(Text, { color: m === "ok" ? GOOD : m === "error" ? BAD : undefined, dimColor: m === "running", children: [m === "ok" ? "✓" : m === "error" ? "✗" : "·", i < head.marks.length - 1 ? " " : ""] }, i)))] })) : null, head.working && since !== undefined ? (_jsx(Box, { flexShrink: 0, children: _jsx(Elapsed, { since: since }) })) : null, _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: !hovered, bold: hovered, children: open ? " ▾" : " ▸" }) })] }), open ? _jsx(WorkList, { id: id, items: items, columns: columns, live: live, hoveredItem: hoveredItem ?? -1 }) : null] }));
|
|
85
|
+
}
|
|
86
|
+
function WorkList({ id, items, columns, live, hoveredItem }) {
|
|
87
|
+
// The verdict column sits at the right of what the longest name needs, so on a wide
|
|
88
|
+
// terminal the verdicts stay beside their commands instead of drifting to the far edge.
|
|
89
|
+
const room = Math.max(8, columns - 4 - VERDICT_WIDTH - 4);
|
|
90
|
+
const rows = listRows(items, room);
|
|
91
|
+
const labelWidth = Math.min(room, Math.max(...rows.map((r) => r.label.length)) + 2);
|
|
92
|
+
return (_jsx(Box, { flexDirection: "column", children: rows.map((row, i) => {
|
|
93
|
+
const it = row.item;
|
|
94
|
+
const last = i === rows.length - 1;
|
|
95
|
+
const reading = isRead(it);
|
|
96
|
+
const hot = !reading && hoveredItem === row.index;
|
|
97
|
+
const running = it.status === "running";
|
|
98
|
+
const verdict = reading ? undefined : verdictLine(it);
|
|
99
|
+
const shown = reading
|
|
100
|
+
? row.range ?? ""
|
|
101
|
+
: running
|
|
102
|
+
? ""
|
|
103
|
+
: verdict ?? (it.status === "error" ? "✗" : it.summary ? it.summary : "✓");
|
|
104
|
+
const verdictColor = running ? undefined : it.status === "error" || (verdict && !verdict.startsWith("✓")) ? BAD : GOOD;
|
|
105
|
+
const outcomeOnly = !reading && (OUTCOME.test(shown) || shown === "");
|
|
106
|
+
const failedRead = reading && it.status === "error";
|
|
107
|
+
const body = !reading && it.open ? openedLines(it) : [];
|
|
108
|
+
const bodyWidth = Math.max(8, columns - 8);
|
|
109
|
+
const verdictBox = outcomeOnly ? VERDICT_WIDTH : Math.max(VERDICT_WIDTH, columns - 4 - labelWidth - 3);
|
|
110
|
+
// Only a command opens; a read has nothing behind its line to show.
|
|
111
|
+
const registered = reading ? undefined : (node) => registerExpandable(itemHit(id, row.index), node);
|
|
112
|
+
return (_jsxs(Box, { flexDirection: "column", ref: registered, children: [_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { dimColor: !hot, children: last ? " └ " : " ├ " }), _jsx(Box, { width: labelWidth, flexShrink: 0, children: _jsx(Text, { bold: hot, dimColor: !hot, wrap: "truncate-end", children: row.label }) }), _jsx(Box, { width: verdictBox, flexShrink: 0, children: running ? (_jsxs(_Fragment, { children: [_jsx(PulseDot, { glyph: "\u25CF" }), live && it.startedAt !== undefined ? _jsx(Elapsed, { since: it.startedAt }) : null] })) : (_jsx(Text, { color: outcomeOnly ? verdictColor : failedRead ? BAD : undefined, dimColor: !outcomeOnly && !failedRead, wrap: outcomeOnly ? "truncate-end" : "wrap", children: shown })) }), reading ? null : _jsx(Text, { dimColor: !hot, bold: hot, children: it.open ? " ▾" : " ▸" })] }), body.map((line, j) => (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { dimColor: !hot, children: last ? " " : " │ " }), _jsx(Text, { dimColor: !hot, children: "│ " }), _jsx(Box, { width: bodyWidth, children: _jsx(Text, { dimColor: true, wrap: "wrap", children: line === "" ? " " : line }) })] }, j)))] }, row.key));
|
|
113
|
+
}) }));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=WorkGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkGroup.js","sourceRoot":"","sources":["../../../src/cli/components/WorkGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* diffWrap.ts — a long diff line carried onto more rows (pure).
|
|
3
|
+
*
|
|
4
|
+
* The first row keeps the line as it was, with its `+ ` or `- ` mark. A continuation has a blank
|
|
5
|
+
* mark and two columns of indent, so it reads as the rest of the line above it and never as a
|
|
6
|
+
* line of its own that was added or removed. Each row is a whole row of the band, so the tint
|
|
7
|
+
* can be painted under all of them.
|
|
8
|
+
*/
|
|
9
|
+
const GUTTER = 2;
|
|
10
|
+
const INDENT = 2;
|
|
11
|
+
export function wrapDiffLine(line, width) {
|
|
12
|
+
if (line.length <= width)
|
|
13
|
+
return [line];
|
|
14
|
+
const room = Math.max(4, width - GUTTER - INDENT);
|
|
15
|
+
const first = Math.max(4, width - GUTTER);
|
|
16
|
+
const mark = line.slice(0, GUTTER);
|
|
17
|
+
const body = line.slice(GUTTER);
|
|
18
|
+
const rows = [mark + body.slice(0, first)];
|
|
19
|
+
for (let at = first; at < body.length; at += room) {
|
|
20
|
+
rows.push(" ".repeat(GUTTER + INDENT) + body.slice(at, at + room));
|
|
21
|
+
}
|
|
22
|
+
return rows;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=diffWrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffWrap.js","sourceRoot":"","sources":["../../src/cli/diffWrap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,MAAM,MAAM,GAAG,CAAC,CAAC;AAEjB,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3C,KAAK,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|