mindweave 3.0.1 → 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/README.md +36 -4
- package/dist/alternator/chassis/lsp.js +36 -4
- package/dist/alternator/chassis/lsp.js.map +1 -1
- package/dist/alternator/chassis/provision.js +54 -6
- package/dist/alternator/chassis/provision.js.map +1 -1
- package/dist/alternator/chassis/servers.js +34 -21
- package/dist/alternator/chassis/servers.js.map +1 -1
- package/dist/cli/App.js +118 -16
- package/dist/cli/App.js.map +1 -1
- package/dist/cli/attachments.js +37 -1
- package/dist/cli/attachments.js.map +1 -1
- package/dist/cli/bootstrap.js +25 -3
- package/dist/cli/bootstrap.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/MarathonBox.js +2 -1
- package/dist/cli/components/MarathonBox.js.map +1 -1
- 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/marathonUi.js +2 -0
- package/dist/cli/marathonUi.js.map +1 -1
- 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/permissions.js +26 -1
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/spendView.js +8 -1
- package/dist/core/spendView.js.map +1 -1
- package/dist/core/turnRunner.js +36 -8
- package/dist/core/turnRunner.js.map +1 -1
- package/dist/drivers/deepseek/inlineTools.js +36 -2
- package/dist/drivers/deepseek/inlineTools.js.map +1 -1
- package/dist/drivers/ollama/endpoint.js +25 -0
- package/dist/drivers/ollama/endpoint.js.map +1 -1
- package/dist/dynamo/engine.js +414 -88
- package/dist/dynamo/engine.js.map +1 -1
- package/dist/dynamo/guard.js +11 -4
- package/dist/dynamo/guard.js.map +1 -1
- package/dist/dynamo/hooks.js +209 -0
- package/dist/dynamo/hooks.js.map +1 -0
- package/dist/dynamo/marathon.js +67 -10
- package/dist/dynamo/marathon.js.map +1 -1
- package/dist/dynamo/todoReminder.js +26 -0
- package/dist/dynamo/todoReminder.js.map +1 -0
- package/dist/governor/forbidden.js +19 -0
- package/dist/governor/forbidden.js.map +1 -1
- package/dist/governor/freshness.js +1 -1
- package/dist/governor/freshness.js.map +1 -1
- package/dist/governor/index.js +8 -1
- package/dist/governor/index.js.map +1 -1
- package/dist/governor/rules.js +1 -0
- package/dist/governor/rules.js.map +1 -1
- package/dist/governor/write.js +50 -2
- package/dist/governor/write.js.map +1 -1
- package/dist/mcp/config.js +0 -41
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/projectApproval.js +117 -0
- package/dist/mcp/projectApproval.js.map +1 -0
- package/dist/mcp/resultStore.js +19 -5
- package/dist/mcp/resultStore.js.map +1 -1
- package/dist/mcp/transport/stdio.js +4 -1
- package/dist/mcp/transport/stdio.js.map +1 -1
- package/dist/memory/allMetas.js +1 -1
- package/dist/memory/allMetas.js.map +1 -1
- package/dist/memory/autoMemory.js +1 -0
- package/dist/memory/autoMemory.js.map +1 -1
- package/dist/memory/clearedArchive.js +120 -0
- package/dist/memory/clearedArchive.js.map +1 -0
- package/dist/memory/compaction.js +178 -15
- package/dist/memory/compaction.js.map +1 -1
- package/dist/memory/counters.js +64 -0
- package/dist/memory/counters.js.map +1 -0
- package/dist/memory/projectNotes.js +61 -13
- package/dist/memory/projectNotes.js.map +1 -1
- package/dist/memory/rewind.js +6 -2
- package/dist/memory/rewind.js.map +1 -1
- package/dist/memory/session.js +13 -5
- package/dist/memory/session.js.map +1 -1
- package/dist/memory/sessionMemory.js +6 -2
- package/dist/memory/sessionMemory.js.map +1 -1
- package/dist/memory/store.js +3 -0
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/memory/workingSet.js +0 -375
- package/dist/memory/workingSet.js.map +1 -1
- package/dist/project/context.js +54 -7
- package/dist/project/context.js.map +1 -1
- package/dist/tools/approval.js +19 -4
- package/dist/tools/approval.js.map +1 -1
- package/dist/tools/backgroundShells.js +8 -1
- package/dist/tools/backgroundShells.js.map +1 -1
- package/dist/tools/browser.js +2 -1
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/checkpoints.js +28 -4
- package/dist/tools/checkpoints.js.map +1 -1
- package/dist/tools/childEnv.js +50 -0
- package/dist/tools/childEnv.js.map +1 -0
- package/dist/tools/codeIntel.js +4 -1
- package/dist/tools/codeIntel.js.map +1 -1
- package/dist/tools/commandParse.js +238 -0
- package/dist/tools/commandParse.js.map +1 -0
- package/dist/tools/commandPolicy.js +283 -0
- package/dist/tools/commandPolicy.js.map +1 -0
- package/dist/tools/detail.js +113 -1
- package/dist/tools/detail.js.map +1 -1
- package/dist/tools/edit.js +2 -1
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/editRipple.js +18 -3
- package/dist/tools/editRipple.js.map +1 -1
- package/dist/tools/editTarget.js +11 -6
- package/dist/tools/editTarget.js.map +1 -1
- package/dist/tools/governorTools.js +61 -1
- package/dist/tools/governorTools.js.map +1 -1
- package/dist/tools/grep.js +13 -5
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/guard.js +249 -2
- package/dist/tools/guard.js.map +1 -1
- package/dist/tools/invisible.js +62 -0
- package/dist/tools/invisible.js.map +1 -0
- package/dist/tools/killTree.js +3 -0
- package/dist/tools/killTree.js.map +1 -1
- package/dist/tools/readFile.js +11 -3
- package/dist/tools/readFile.js.map +1 -1
- package/dist/tools/readSymbol.js +5 -24
- package/dist/tools/readSymbol.js.map +1 -1
- package/dist/tools/rebuildDetail.js +155 -0
- package/dist/tools/rebuildDetail.js.map +1 -0
- package/dist/tools/replaceSymbol.js +1 -1
- package/dist/tools/replaceSymbol.js.map +1 -1
- package/dist/tools/ripgrepShell.js +56 -0
- package/dist/tools/ripgrepShell.js.map +1 -0
- package/dist/tools/runCommand.js +77 -18
- package/dist/tools/runCommand.js.map +1 -1
- package/dist/tools/runsLater.js +50 -0
- package/dist/tools/runsLater.js.map +1 -0
- package/dist/tools/serverConsent.js +27 -0
- package/dist/tools/serverConsent.js.map +1 -0
- package/dist/tools/ui.js +81 -1
- package/dist/tools/ui.js.map +1 -1
- package/dist/tools/untrusted.js +22 -1
- package/dist/tools/untrusted.js.map +1 -1
- package/dist/tools/viewImage.js +2 -2
- package/dist/tools/viewImage.js.map +1 -1
- package/dist/tools/webFetch.js +76 -8
- package/dist/tools/webFetch.js.map +1 -1
- package/dist/tools/workspace.js +87 -24
- package/dist/tools/workspace.js.map +1 -1
- package/dist/tools/writeFile.js +9 -4
- package/dist/tools/writeFile.js.map +1 -1
- package/package.json +4 -4
|
@@ -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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* expandHits.ts — which row a click landed on.
|
|
3
|
+
*
|
|
4
|
+
* A row that can open (see Block `full`) registers its box here while it is on screen.
|
|
5
|
+
* Nothing is recorded about WHERE it is: positions change every time the view scrolls,
|
|
6
|
+
* a row above grows, or the window is resized, so a stored position is wrong a moment
|
|
7
|
+
* after it is written. The box is measured at the instant of the click instead, which
|
|
8
|
+
* is the one time the answer is certain.
|
|
9
|
+
*
|
|
10
|
+
* A row that has scrolled out of the virtual window is unmounted and drops out of the
|
|
11
|
+
* map by itself (its ref is called with null), so a click can never land on a row that
|
|
12
|
+
* is not there.
|
|
13
|
+
*/
|
|
14
|
+
import { measureElement } from "ink";
|
|
15
|
+
const nodes = new Map();
|
|
16
|
+
/**
|
|
17
|
+
* One command inside a commands row is its own place to click, next to the row's header.
|
|
18
|
+
* It is registered under a NEGATIVE number built from the row and the command's place in it,
|
|
19
|
+
* so the registry stays one flat map of numbers and an ordinary row's id is never mistaken
|
|
20
|
+
* for one. `hitBlock` and `hitItem` take it apart again.
|
|
21
|
+
*/
|
|
22
|
+
const ITEMS_PER_BLOCK = 4096;
|
|
23
|
+
export function itemHit(blockId, index) {
|
|
24
|
+
return -(blockId * ITEMS_PER_BLOCK + index + 1);
|
|
25
|
+
}
|
|
26
|
+
/** The block a hit belongs to, whether it landed on the block or on one command in it. */
|
|
27
|
+
export function hitBlock(hit) {
|
|
28
|
+
return hit >= 0 ? hit : Math.floor((-hit - 1) / ITEMS_PER_BLOCK);
|
|
29
|
+
}
|
|
30
|
+
/** Which command in the block a hit landed on, or -1 when it landed on the block itself. */
|
|
31
|
+
export function hitItem(hit) {
|
|
32
|
+
return hit >= 0 ? -1 : (-hit - 1) % ITEMS_PER_BLOCK;
|
|
33
|
+
}
|
|
34
|
+
/** Called from a row's ref. `null` is the row going away. */
|
|
35
|
+
export function registerExpandable(id, node) {
|
|
36
|
+
if (node)
|
|
37
|
+
nodes.set(id, node);
|
|
38
|
+
else
|
|
39
|
+
nodes.delete(id);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The block under a screen row, or null (pure).
|
|
43
|
+
*
|
|
44
|
+
* `view` is the transcript's own area. A block scrolled out of it is still laid out, and
|
|
45
|
+
* its box can sit over the input or the status line; without this check a click on the
|
|
46
|
+
* input would fold something that is not even visible.
|
|
47
|
+
*/
|
|
48
|
+
export function rowAt(spans, y, view) {
|
|
49
|
+
if (y < view.top || y >= view.top + view.height)
|
|
50
|
+
return null;
|
|
51
|
+
for (const s of spans) {
|
|
52
|
+
if (y >= s.top && y < s.top + s.height)
|
|
53
|
+
return s.id;
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The expandable block under a click, measured now.
|
|
59
|
+
*
|
|
60
|
+
* `frameTop` is where the layout's first row sits on the screen: zero for the full-screen
|
|
61
|
+
* shell, which owns every row, and the live region's offset in the inline reading view.
|
|
62
|
+
*/
|
|
63
|
+
export function expandableAt(y, frameTop, chat, measure = measureElement) {
|
|
64
|
+
if (!chat || nodes.size === 0)
|
|
65
|
+
return null;
|
|
66
|
+
const c = measure(chat);
|
|
67
|
+
const spans = [];
|
|
68
|
+
for (const [id, node] of nodes) {
|
|
69
|
+
const m = measure(node);
|
|
70
|
+
spans.push({ id, top: frameTop + m.y, height: m.height });
|
|
71
|
+
}
|
|
72
|
+
return rowAt(spans, y, { top: frameTop + c.y, height: c.height });
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=expandHits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expandHits.js","sourceRoot":"","sources":["../../src/cli/expandHits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,cAAc,EAAmB,MAAM,KAAK,CAAC;AAEtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,KAAa;IACpD,OAAO,CAAC,CAAC,OAAO,GAAG,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AACD,0FAA0F;AAC1F,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;AACnE,CAAC;AACD,4FAA4F;AAC5F,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AACtD,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,kBAAkB,CAAC,EAAU,EAAE,IAAuB;IACpE,IAAI,IAAI;QAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;;QACzB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AASD;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAAgB,EAAE,CAAS,EAAE,IAAqC;IACtF,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,CAAS,EACT,QAAgB,EAChB,IAAuB,EACvB,UAA+D,cAAc;IAE7E,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/cli/marathonUi.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marathonUi.js","sourceRoot":"","sources":["../../src/cli/marathonUi.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,qBAAqB,EAAsB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"marathonUi.js","sourceRoot":"","sources":["../../src/cli/marathonUi.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/mouse.js
CHANGED
|
@@ -23,16 +23,18 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import { MOUSE_OFF } from "./terminalRestore.js";
|
|
25
25
|
/**
|
|
26
|
-
* Report button presses AND
|
|
27
|
-
*
|
|
26
|
+
* Report button presses AND all pointer movement (1003), using SGR encoding (1006), the
|
|
27
|
+
* only encoding that stays correct past column 223.
|
|
28
28
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
29
|
+
* Motion is needed for two things. A drag is the movement BETWEEN a press and a release, so
|
|
30
|
+
* under plain 1000 a selection could only ever be told where it started and where it
|
|
31
|
+
* stopped. And a row that can be pressed has to light up when the pointer is over it, which
|
|
32
|
+
* is movement with NO button held. 1002 reports only the first; 1003 reports both, at the
|
|
33
|
+
* price of an event for every cell the pointer crosses. That price is paid in one place:
|
|
34
|
+
* App turns a burst of them into one lookup and redraws only when the row under the
|
|
35
|
+
* pointer actually changes.
|
|
34
36
|
*/
|
|
35
|
-
const MOUSE_ON = "\x1b[?
|
|
37
|
+
const MOUSE_ON = "\x1b[?1003h\x1b[?1006h";
|
|
36
38
|
/**
|
|
37
39
|
* An SGR mouse report: `ESC [ < button ; col ; row (M|m)`.
|
|
38
40
|
*
|
|
@@ -72,6 +74,12 @@ export function readMouse(data) {
|
|
|
72
74
|
const button = Number(match[1]);
|
|
73
75
|
if ((button & 64) !== 0)
|
|
74
76
|
continue; // a wheel notch, not a button
|
|
77
|
+
// Movement with NO button held: bit 5 (motion) and the "no button" code 3 in bits 0-1.
|
|
78
|
+
// Only there because the pointer being over something is worth knowing (see 1003 above).
|
|
79
|
+
if ((button & 35) === 35) {
|
|
80
|
+
out.push({ kind: "move", x: Number(match[2]) - 1, y: Number(match[3]) - 1 });
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
75
83
|
// Bits 0-1 name the button. A RELEASE under SGR reports the button that was let go,
|
|
76
84
|
// so this stays correct for both ends of a drag.
|
|
77
85
|
if ((button & 3) !== 0)
|
package/dist/cli/mouse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mouse.js","sourceRoot":"","sources":["../../src/cli/mouse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"mouse.js","sourceRoot":"","sources":["../../src/cli/mouse.ts"],"names":[],"mappings":"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"}
|