mindweave 3.4.0 → 3.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/README.md +26 -3
  2. package/dist/alternator/chassis/lsp.js +1 -1
  3. package/dist/alternator/chassis/lsp.js.map +1 -1
  4. package/dist/alternator/chassis/provision.js +2 -2
  5. package/dist/alternator/chassis/provision.js.map +1 -1
  6. package/dist/cli/App.js +152 -42
  7. package/dist/cli/App.js.map +1 -1
  8. package/dist/cli/attachments.js +2 -1
  9. package/dist/cli/attachments.js.map +1 -1
  10. package/dist/cli/blockHeights.js +14 -0
  11. package/dist/cli/blockHeights.js.map +1 -1
  12. package/dist/cli/commands.js +1 -0
  13. package/dist/cli/commands.js.map +1 -1
  14. package/dist/cli/components/BlockView.js +9 -1
  15. package/dist/cli/components/BlockView.js.map +1 -1
  16. package/dist/cli/components/EditGroup.js +50 -0
  17. package/dist/cli/components/EditGroup.js.map +1 -0
  18. package/dist/cli/components/PromptInput.js +4 -3
  19. package/dist/cli/components/PromptInput.js.map +1 -1
  20. package/dist/cli/components/ToolLine.js +5 -3
  21. package/dist/cli/components/ToolLine.js.map +1 -1
  22. package/dist/cli/components/WorkGroup.js +85 -56
  23. package/dist/cli/components/WorkGroup.js.map +1 -1
  24. package/dist/cli/editGroup.js +122 -0
  25. package/dist/cli/editGroup.js.map +1 -0
  26. package/dist/cli/inkSpeedLoader.js +9 -5
  27. package/dist/cli/inkSpeedLoader.js.map +1 -1
  28. package/dist/cli/inkThrottlePatch.js +43 -0
  29. package/dist/cli/inkThrottlePatch.js.map +1 -0
  30. package/dist/cli/screenMode.js +8 -1
  31. package/dist/cli/screenMode.js.map +1 -1
  32. package/dist/cli/sessionCarry.js.map +1 -1
  33. package/dist/cli/startupArgs.js +24 -4
  34. package/dist/cli/startupArgs.js.map +1 -1
  35. package/dist/cli/toolDisplay.js +2 -2
  36. package/dist/cli/toolDisplay.js.map +1 -1
  37. package/dist/cli/transcript.js +81 -14
  38. package/dist/cli/transcript.js.map +1 -1
  39. package/dist/cli/workLines.js +67 -4
  40. package/dist/cli/workLines.js.map +1 -1
  41. package/dist/core/turnRunner.js +133 -30
  42. package/dist/core/turnRunner.js.map +1 -1
  43. package/dist/dynamo/cacheBreak.js +8 -5
  44. package/dist/dynamo/cacheBreak.js.map +1 -1
  45. package/dist/dynamo/contextWindow.js +28 -36
  46. package/dist/dynamo/contextWindow.js.map +1 -1
  47. package/dist/dynamo/engine.js +119 -57
  48. package/dist/dynamo/engine.js.map +1 -1
  49. package/dist/dynamo/guard.js +1 -1
  50. package/dist/dynamo/guard.js.map +1 -1
  51. package/dist/dynamo/prompt.js +9 -3
  52. package/dist/dynamo/prompt.js.map +1 -1
  53. package/dist/dynamo/toolAliases.js +73 -0
  54. package/dist/dynamo/toolAliases.js.map +1 -0
  55. package/dist/dynamo/toolArgs.js +82 -0
  56. package/dist/dynamo/toolArgs.js.map +1 -0
  57. package/dist/dynamo/verify.js +16 -2
  58. package/dist/dynamo/verify.js.map +1 -1
  59. package/dist/headless/args.js +82 -0
  60. package/dist/headless/args.js.map +1 -0
  61. package/dist/headless/main.js +87 -0
  62. package/dist/headless/main.js.map +1 -0
  63. package/dist/headless/output.js +150 -0
  64. package/dist/headless/output.js.map +1 -0
  65. package/dist/headless/run.js +188 -0
  66. package/dist/headless/run.js.map +1 -0
  67. package/dist/index.js +8 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/main.js +5 -0
  70. package/dist/main.js.map +1 -1
  71. package/dist/memory/clearedArchive.js +2 -20
  72. package/dist/memory/clearedArchive.js.map +1 -1
  73. package/dist/memory/compaction.js +94 -2
  74. package/dist/memory/compaction.js.map +1 -1
  75. package/dist/memory/presence.js +44 -0
  76. package/dist/memory/presence.js.map +1 -1
  77. package/dist/memory/rewind.js +10 -6
  78. package/dist/memory/rewind.js.map +1 -1
  79. package/dist/memory/session.js +2 -2
  80. package/dist/memory/session.js.map +1 -1
  81. package/dist/memory/sessionMemory.js +270 -69
  82. package/dist/memory/sessionMemory.js.map +1 -1
  83. package/dist/memory/store.js +27 -4
  84. package/dist/memory/store.js.map +1 -1
  85. package/dist/memory/types.js.map +1 -1
  86. package/dist/memory/userNotes.js +17 -0
  87. package/dist/memory/userNotes.js.map +1 -0
  88. package/dist/project/context.js +34 -6
  89. package/dist/project/context.js.map +1 -1
  90. package/dist/tools/backgroundShells.js +7 -4
  91. package/dist/tools/backgroundShells.js.map +1 -1
  92. package/dist/tools/coauthor.js +154 -0
  93. package/dist/tools/coauthor.js.map +1 -0
  94. package/dist/tools/codeIntel.js +38 -10
  95. package/dist/tools/codeIntel.js.map +1 -1
  96. package/dist/tools/docOutline.js +250 -0
  97. package/dist/tools/docOutline.js.map +1 -0
  98. package/dist/tools/edit.js +18 -3
  99. package/dist/tools/edit.js.map +1 -1
  100. package/dist/tools/editCore.js +107 -1
  101. package/dist/tools/editCore.js.map +1 -1
  102. package/dist/tools/editRipple.js +29 -2
  103. package/dist/tools/editRipple.js.map +1 -1
  104. package/dist/tools/emptyResult.js +24 -0
  105. package/dist/tools/emptyResult.js.map +1 -0
  106. package/dist/tools/glob.js +11 -2
  107. package/dist/tools/glob.js.map +1 -1
  108. package/dist/tools/grep.js +4 -3
  109. package/dist/tools/grep.js.map +1 -1
  110. package/dist/tools/missingPath.js +90 -0
  111. package/dist/tools/missingPath.js.map +1 -0
  112. package/dist/tools/readFile.js +19 -2
  113. package/dist/tools/readFile.js.map +1 -1
  114. package/dist/tools/rebuildDetail.js +101 -6
  115. package/dist/tools/rebuildDetail.js.map +1 -1
  116. package/dist/tools/runCommand.js +6 -2
  117. package/dist/tools/runCommand.js.map +1 -1
  118. package/dist/tools/screenshot.js +42 -3
  119. package/dist/tools/screenshot.js.map +1 -1
  120. package/dist/tools/screenshotWin.js +221 -216
  121. package/dist/tools/screenshotWin.js.map +1 -1
  122. package/dist/tools/search.js +4 -1
  123. package/dist/tools/search.js.map +1 -1
  124. package/dist/tools/shellTools.js +7 -2
  125. package/dist/tools/shellTools.js.map +1 -1
  126. package/dist/tools/ui.js +26 -9
  127. package/dist/tools/ui.js.map +1 -1
  128. package/dist/tools/uiWin.js +4 -1
  129. package/dist/tools/uiWin.js.map +1 -1
  130. package/dist/tools/webSearch.js +3 -1
  131. package/dist/tools/webSearch.js.map +1 -1
  132. package/package.json +78 -78
@@ -29,7 +29,7 @@ import { COMMAND_OFFER_AFTER_MS, offerBackground } from "../commandBackground.js
29
29
  import { registerExpandable, registerRowBox, itemHit } from "../expandHits.js";
30
30
  import { BAD, GOOD, USER_BG, USER_FG } from "../theme.js";
31
31
  import { visibleWidth, wrapAnsi } from "../wrap.js";
32
- import { FOLD_SEP, foldControls, plainLine, compactLine, isMcp, isRead, isServerChange, isStep, isView, keepIndent, mcpReason, mcpVerdict, readRows, serverReason, serverVerdict, viewSummary, wasDeclined, stepLabel, stepReason, workHeader } from "../workLines.js";
32
+ import { FILE_HIT_BASE, FOLD_SEP, fileTextLines, foldControls, plainLine, compactLine, isMcp, isRead, isSearch, isServerChange, isStep, isView, keepIndent, mcpReason, mcpVerdict, readRows, searchVerdict, serverReason, serverVerdict, viewSummary, wasDeclined, stepLabel, stepReason, workHeader } from "../workLines.js";
33
33
  const DOT = "●";
34
34
  /** Marks beyond this many are counted instead, so the header never wraps. */
35
35
  export const MAX_MARKS = 10;
@@ -42,7 +42,7 @@ const VERDICT_WIDTH = 16;
42
42
  export function commandHeader(items, live) {
43
43
  const head = workHeader(items, live);
44
44
  // A change the user refused is not a success: it gets the dim mark, not a tick.
45
- const marks = items.filter((it) => !isRead(it) || it.status === "error").map((it) => (wasDeclined(it) ? "skipped" : it.status));
45
+ const marks = items.filter((it) => (!isRead(it) && !isSearch(it)) || it.status === "error").map((it) => (wasDeclined(it) ? "skipped" : it.status));
46
46
  const more = Math.max(0, marks.length - MAX_MARKS);
47
47
  return { text: head.text, marks: marks.slice(more), more, working: head.working };
48
48
  }
@@ -107,7 +107,7 @@ export function fitPath(path, room) {
107
107
  function listRows(items, room) {
108
108
  return items.flatMap((it, index) => isRead(it)
109
109
  ? readRows(it).map((r, j) => ({ key: `${it.toolId}.${j}`, index, item: it, label: fitPath(r.label, room), range: r.range }))
110
- : [{ key: it.toolId, index, item: it, label: isView(it) ? fitPath(it.arg ?? it.name, room) : isStep(it) ? stepLabel(it) : isMcp(it) || isServerChange(it) ? (it.arg ?? it.name) : commandName(it, room) }]);
110
+ : [{ key: it.toolId, index, item: it, label: isSearch(it) ? (it.arg ?? it.name.toLowerCase()) : isView(it) ? fitPath(it.arg ?? it.name, room) : isStep(it) ? stepLabel(it) : isMcp(it) || isServerChange(it) ? (it.arg ?? it.name) : commandName(it, room) }]);
111
111
  }
112
112
  /** Whether this call is a command the turn waits on, which ctrl+X can move: not a check on a shell, not a read. */
113
113
  function isMovable(it) {
@@ -139,7 +139,7 @@ export function WorkGroup({ id, items, open, live, columns, tightTop, hovered, h
139
139
  const movableSince = movable.length > 0 ? Math.min(...movable.map((it) => it.startedAt)) : undefined;
140
140
  // A test that is working says which step it is on, so a long one does not look stuck behind a fold.
141
141
  const onStep = head.working && !open ? items.filter((it) => isStep(it) && it.status === "running").pop() : undefined;
142
- return (_jsxs(Box, { ref: (node) => registerRowBox(id, node), 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 && !(open && items.some((it) => isMcp(it) || isServerChange(it))) ? (_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" || m === "skipped", children: [m === "ok" ? "✓" : m === "error" ? "✗" : "·", i < head.marks.length - 1 ? " " : ""] }, i)))] })) : null, onStep ? (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: " " + stepLabel(onStep).slice(0, Math.max(12, columns - head.text.length - 24)) }) })) : null, head.working && since !== undefined ? (_jsx(Box, { flexShrink: 0, children: _jsx(Elapsed, { since: since }) })) : null, movableSince !== undefined && columns - head.text.length - head.marks.length * 2 >= 62 ? (_jsx(Box, { flexShrink: 0, children: _jsx(BackgroundHint, { since: movableSince }) })) : 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] }));
142
+ return (_jsxs(Box, { ref: (node) => registerRowBox(id, node), 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 }) }), onStep ? (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: " " + stepLabel(onStep).slice(0, Math.max(12, columns - head.text.length - 24)) }) })) : null, head.working && since !== undefined ? (_jsx(Box, { flexShrink: 0, children: _jsx(Elapsed, { since: since }) })) : null, movableSince !== undefined && columns - head.text.length >= 62 ? (_jsx(Box, { flexShrink: 0, children: _jsx(BackgroundHint, { since: movableSince }) })) : 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] }));
143
143
  }
144
144
  /**
145
145
  * The opened text as rows of exact width (pure). A line is wrapped to fit; a `kind<SEP>names` line
@@ -177,61 +177,90 @@ function WorkList({ id, items, columns, live, hoveredItem }) {
177
177
  // A row of ONE call opens straight onto what that call did: nothing is behind a second click.
178
178
  const single = items.length === 1;
179
179
  const rows = listRows(items, room);
180
- const labelWidth = Math.min(room, Math.max(...rows.map((r) => r.label.length)) + 2);
180
+ // Reads and commands each size their name column to their own longest name. Sharing one made a long
181
+ // command push every file's range to the far edge, or onto a line of its own under the path.
182
+ const widthOf = (reads) => Math.min(room, Math.max(0, ...rows.filter((r) => isRead(r.item) === reads).map((r) => r.label.length)) + 2);
183
+ const readWidth = widthOf(true);
184
+ const otherWidth = widthOf(false);
185
+ // The rows of one call are one place to click, so a call that read two files is not half dead.
186
+ const calls = items.map((_, index) => rows.map((row, i) => ({ row, i })).filter((x) => x.row.index === index)).filter((c) => c.length > 0);
181
187
  // MCP lines (a tool call, a server change) share one shape and one name column of their own.
182
188
  const mcpLabels = rows.filter((r) => isMcp(r.item) || isServerChange(r.item)).map((r) => r.label.length);
183
189
  const compactWidth = Math.min(34, Math.max(0, ...mcpLabels) + 2);
184
- return (_jsx(Box, { flexDirection: "column", children: rows.map((row, i) => {
185
- const it = row.item;
186
- const last = i === rows.length - 1;
187
- const reading = isRead(it);
188
- const step = isStep(it);
189
- const hot = !reading && hoveredItem === row.index;
190
- const running = it.status === "running";
191
- const mcp = isMcp(it);
192
- // A server change (add, enable, reconnect...) has a line and nothing behind it to open.
193
- const setup = isServerChange(it);
194
- const compact = mcp || setup;
195
- const line = compact ? compactLine(it) : undefined;
196
- const verdict = reading || step || mcp || setup ? undefined : verdictLine(it);
197
- const shown = reading
198
- ? row.range ?? ""
199
- : running
200
- ? ""
201
- : isView(it)
202
- ? viewSummary(it)
203
- : step
204
- ? it.status === "error" ? "✗" : "✓"
205
- : mcp
206
- ? mcpVerdict(it)
207
- : setup
208
- ? serverVerdict(it)
209
- : verdict ?? (it.status === "error" ? "✗" : it.summary ? it.summary : "✓");
210
- // Why a step failed, under it, in red: the one thing a folded failure must still say.
211
- const reason = step && it.status === "error" ? stepReason(it) : mcp ? mcpReason(it) : setup ? serverReason(it) : "";
212
- // Words that do not fit beside a long command go on a line of their own under it. Squeezed
213
- // into what is left of the line they broke across rows ("Running as shell" / "#1") and ran
214
- // into the end of the command.
215
- const room2 = columns - 4 - labelWidth - 3;
216
- const below = !running && shown.length > 0 && !(!reading && OUTCOME.test(shown)) && shown.length > Math.max(VERDICT_WIDTH, room2) ? shown : "";
217
- const verdictColor = running ? undefined : it.status === "error" || (verdict && !verdict.startsWith("✓")) ? BAD : GOOD;
218
- const outcomeOnly = !reading && (OUTCOME.test(shown) || shown === "" || (setup && wasDeclined(it)));
219
- const beside = below ? "" : shown;
220
- const failedRead = reading && it.status === "error";
221
- const body = !reading && !setup && (it.open || single) ? openedLines(it) : [];
222
- // The one being read stands out: bright, with its text on a shaded band under it. The ones
223
- // that are folded stay dim, so it is plain which is open.
224
- const isOpen = body.length > 0;
225
- const bodyWidth = Math.max(8, columns - 4);
226
- const shade = isOpen ? shadeRows(body, columns - 4) : [];
227
- // What an MCP line says at its right ("✓ connected · 170 tools") is longer than a command's.
228
- const verdictBox = setup ? Math.min(Math.max(VERDICT_WIDTH, room2), 34) : outcomeOnly || below ? VERDICT_WIDTH : Math.max(VERDICT_WIDTH, room2);
229
- // Only a command opens; a read has nothing behind its line to show.
230
- // A row of one call opens onto that call, so its box is a place to click too: it folds the row (see toggleItem).
231
- const registered = reading || setup ? undefined : (node) => registerExpandable(itemHit(id, row.index), node);
232
- return (_jsxs(Box, { flexDirection: "column", ref: registered, children: [single && step && it.name === "Steps" ? null : compact ? (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsx(Box, { width: 2, flexShrink: 0, children: running ? _jsx(PulseDot, { glyph: "\u25CF" }) : _jsx(Text, { color: line.tone === "ok" ? GOOD : line.tone === "error" ? BAD : undefined, dimColor: line.tone === "skipped", children: line.mark }) }), _jsx(Box, { width: compactWidth, paddingRight: 2, flexShrink: 0, children: _jsx(Text, { bold: hot || isOpen, dimColor: !hot && !isOpen, wrap: "truncate-end", children: row.label }) }), _jsx(Box, { width: Math.max(8, columns - 4 - compactWidth - 3), flexShrink: 0, children: running ? (live && it.startedAt !== undefined ? _jsx(Elapsed, { since: it.startedAt }) : null) : _jsx(Text, { dimColor: true, wrap: "truncate-end", children: line.text }) }), _jsx(Box, { width: 3, flexShrink: 0, children: setup || single ? null : _jsx(Text, { dimColor: !hot && !isOpen, bold: hot || isOpen, children: it.open ? " ▾" : " ▸" }) })] })) : (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsx(Box, { width: labelWidth, paddingRight: 2, flexShrink: 0, children: _jsx(Text, { bold: hot || isOpen, dimColor: !hot && !isOpen, 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: beside })) }), reading || setup || single ? null : _jsx(Text, { dimColor: !hot && !isOpen, bold: hot || isOpen, children: it.open ? " ▾" : " ▸" })] })), below && !compact ? (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsx(Box, { width: bodyWidth, children: _jsx(Text, { dimColor: true, wrap: "wrap", children: below }) })] })) : null, reason && !compact ? (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsx(Box, { width: bodyWidth, children: _jsx(Text, { color: BAD, wrap: "wrap", children: reason }) })] })) : null, isOpen ? (
233
- // What it printed sits on a shaded band, the way a message the user wrote does.
234
- _jsx(Box, { flexDirection: "column", width: columns, children: shade.map((r, j) => (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsxs(Text, { backgroundColor: USER_BG, color: USER_FG, children: [" ", r.kind !== undefined ? _jsx(Text, { dimColor: true, children: r.kind }) : null, r.text, " ".repeat(r.pad), " "] })] }, j))) })) : null] }, row.key));
190
+ return (_jsx(Box, { flexDirection: "column", children: calls.map((call) => {
191
+ const first = call[0].row.item;
192
+ // A read that took several files has no click of its own: each file is its own line and its own click.
193
+ const clickable = !isServerChange(first) && !(isRead(first) && (first.status === "error" || call.length > 1));
194
+ return (_jsx(Box, { flexDirection: "column", ref: clickable ? (node) => registerExpandable(itemHit(id, call[0].row.index), node) : undefined, children: call.map(({ row, i }) => {
195
+ const it = row.item;
196
+ const reading = isRead(it);
197
+ const labelWidth = reading ? readWidth : otherWidth;
198
+ const lastOfCall = call[call.length - 1].i === i;
199
+ const step = isStep(it);
200
+ // A read opens onto the text it took. A call that read several files has one such line, its first.
201
+ const firstOfCall = rows.findIndex((r) => r.index === row.index) === i;
202
+ const readOpens = reading && firstOfCall && it.status !== "error";
203
+ const fileOfList = reading && call.length > 1 && it.status !== "error";
204
+ const fileNo = call.findIndex((x) => x.i === i);
205
+ const fileOpen = fileOfList && !!it.openFiles?.includes(fileNo);
206
+ const hot = fileOfList ? hoveredItem === FILE_HIT_BASE + i : (!reading || it.status !== "error") && hoveredItem === row.index;
207
+ const running = it.status === "running";
208
+ const mcp = isMcp(it);
209
+ // A server change (add, enable, reconnect...) has a line and nothing behind it to open.
210
+ const setup = isServerChange(it);
211
+ const compact = mcp || setup;
212
+ const line = compact ? compactLine(it) : undefined;
213
+ const search = isSearch(it);
214
+ const verdict = reading || step || mcp || setup || search ? undefined : verdictLine(it);
215
+ // No tick or cross anywhere: what is left of a verdict is its words ("0 · 0.2s").
216
+ const shownRaw = reading
217
+ ? row.range ?? ""
218
+ : running
219
+ ? ""
220
+ : search
221
+ ? searchVerdict(it)
222
+ : isView(it)
223
+ ? viewSummary(it)
224
+ : step
225
+ ? it.status === "error" ? "✗" : "✓"
226
+ : mcp
227
+ ? mcpVerdict(it)
228
+ : setup
229
+ ? serverVerdict(it)
230
+ : verdict ?? (it.status === "error" ? "✗" : it.summary ? it.summary : "✓");
231
+ const shown = shownRaw.replace(/^[✓✗✖]s*/, "");
232
+ // Why a step failed, under it, in red: the one thing a folded failure must still say.
233
+ const reason = step && it.status === "error" ? stepReason(it) : mcp ? mcpReason(it) : setup ? serverReason(it) : "";
234
+ // Words that do not fit beside a long command go on a line of their own under it. Squeezed
235
+ // into what is left of the line they broke across rows ("Running as shell" / "#1") and ran
236
+ // into the end of the command.
237
+ const room2 = columns - 4 - labelWidth - 3;
238
+ const below = !running && shown.length > 0 && !(!reading && OUTCOME.test(shownRaw)) && shown.length > Math.max(VERDICT_WIDTH, room2) ? shown : "";
239
+ const verdictColor = running ? undefined : it.status === "error" || (verdict && !verdict.startsWith("✓")) ? BAD : GOOD;
240
+ const outcomeOnly = !reading && (OUTCOME.test(shownRaw) || shown === "" || (setup && wasDeclined(it)));
241
+ const beside = below ? "" : shown;
242
+ const failedRead = reading && it.status === "error";
243
+ const body = fileOfList
244
+ ? fileOpen ? fileTextLines(it, fileNo) : []
245
+ : reading && it.status !== "error"
246
+ ? it.open || single ? openedLines(it) : []
247
+ : !reading && !setup && !(search && running) && (it.open || single) ? openedLines(it) : [];
248
+ // The one being read stands out: bright, with its text on a shaded band under it. The ones
249
+ // that are folded stay dim, so it is plain which is open.
250
+ const isOpen = body.length > 0;
251
+ // What a read took sits under the last file of its call, not between two of them.
252
+ const bandHere = isOpen && (!reading || fileOfList || lastOfCall);
253
+ const bodyWidth = Math.max(8, columns - 4);
254
+ const shade = bandHere ? shadeRows(body, columns - 4) : [];
255
+ // The arrow is always in the last column of the line, so it is in the same place on every row, and the whole line is the click.
256
+ // What an MCP line says at its right ("✓ connected · 170 tools") is longer than a command's.
257
+ const verdictBox = setup ? Math.min(Math.max(VERDICT_WIDTH, room2), 34) : Math.max(VERDICT_WIDTH, room2);
258
+ // A command, a search and a read open; a read only when it worked, and on its first line.
259
+ // A row of one call opens onto that call, so its box is a place to click too: it folds the row (see toggleItem).
260
+ return (_jsxs(Box, { flexDirection: "column", ref: fileOfList ? (node) => registerExpandable(itemHit(id, FILE_HIT_BASE + i), node) : undefined, children: [single && step && it.name === "Steps" ? null : compact ? (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsx(Box, { width: 2, flexShrink: 0, children: running ? _jsx(PulseDot, { glyph: "\u25CF" }) : _jsx(Text, { children: " " }) }), _jsx(Box, { width: compactWidth, paddingRight: 2, flexShrink: 0, children: _jsx(Text, { bold: hot || isOpen, dimColor: !hot && !isOpen, wrap: "truncate-end", children: row.label }) }), _jsx(Box, { width: Math.max(8, columns - 4 - compactWidth - 3), flexShrink: 0, children: running ? (live && it.startedAt !== undefined ? _jsx(Elapsed, { since: it.startedAt }) : null) : _jsx(Text, { dimColor: true, wrap: "truncate-end", children: line.text }) }), _jsx(Box, { width: 3, flexShrink: 0, children: setup || single ? null : _jsx(Text, { dimColor: !hot && !isOpen, bold: hot || isOpen, children: it.open ? " ▾" : " ▸" }) })] })) : (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsx(Box, { width: labelWidth, paddingRight: 2, flexShrink: 0, children: _jsx(Text, { bold: hot || isOpen, dimColor: !hot && !isOpen, 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, { dimColor: true, wrap: outcomeOnly ? "truncate-end" : "wrap", children: beside })) }), fileOfList ? (_jsx(Text, { dimColor: !hot && !isOpen, bold: hot || isOpen, children: fileOpen ? " ▾" : " ▸" })) : (readOpens && !single) || !(reading || setup || single) ? _jsx(Text, { dimColor: !hot && !isOpen, bold: hot || isOpen, children: it.open ? " ▾" : " ▸" }) : null] })), below && !compact ? (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsx(Box, { width: bodyWidth, children: _jsx(Text, { dimColor: true, wrap: "wrap", children: below }) })] })) : null, reason && !compact ? (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsx(Box, { width: bodyWidth, children: _jsx(Text, { color: BAD, wrap: "wrap", children: reason }) })] })) : null, bandHere ? (
261
+ // What it printed sits on a shaded band, the way a message the user wrote does.
262
+ _jsx(Box, { flexDirection: "column", width: columns, children: shade.map((r, j) => (_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Text, { children: " " }), _jsxs(Text, { backgroundColor: USER_BG, color: USER_FG, children: [" ", r.kind !== undefined ? _jsx(Text, { dimColor: true, children: r.kind }) : null, r.text, " ".repeat(r.pad), " "] })] }, j))) })) : null] }, row.key));
263
+ }) }, first.toolId));
235
264
  }) }));
236
265
  }
237
266
  //# sourceMappingURL=WorkGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkGroup.js","sourceRoot":"","sources":["../../../src/cli/components/WorkGroup.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkGroup.js","sourceRoot":"","sources":["../../../src/cli/components/WorkGroup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /** The fewest edits that make one row: two. */
2
+ export const GROUP_FROM = 2;
3
+ /** Whether this block's items are drawn as one row (and not as the separate rows of one or two edits). */
4
+ export const isGrouped = (items) => items.length >= GROUP_FROM;
5
+ const WORDS = { Update: ["Editing", "Edited"], Write: ["Writing", "Wrote"] };
6
+ const word = (name, going) => (WORDS[name] ?? ["Changing", "Changed"])[going ? 0 : 1];
7
+ /** The file's own name: the end of its path. */
8
+ export function baseName(path) {
9
+ const parts = String(path ?? "").split(/[\\/]/).filter(Boolean);
10
+ return parts.length > 0 ? parts[parts.length - 1] : String(path ?? "");
11
+ }
12
+ /** Lines added and removed by one edit, from the text it left behind (pure). */
13
+ export function editStats(it) {
14
+ const text = it.full ?? it.detail ?? "";
15
+ if (!text)
16
+ return { add: 0, del: 0 };
17
+ const lines = text.split("\n");
18
+ const label = /^[+\- ]/.test(lines[0] ?? "") ? "" : (lines[0] ?? "");
19
+ const counted = /[−-](\d+)\s*\+(\d+)|\+(\d+)\s*[−-](\d+)/.exec(label);
20
+ if (counted)
21
+ return { del: Number(counted[1] ?? counted[4]), add: Number(counted[2] ?? counted[3]) };
22
+ const whole = /(?:new|whole) file · (\d+) lines?/.exec(label);
23
+ if (whole)
24
+ return { add: Number(whole[1]), del: 0 };
25
+ let add = 0;
26
+ let del = 0;
27
+ for (const l of lines) {
28
+ if (/^\+(?!\+\+)/.test(l))
29
+ add++;
30
+ else if (/^-(?!--)/.test(l))
31
+ del++;
32
+ }
33
+ return { add, del };
34
+ }
35
+ /** Totals over the whole row. */
36
+ export function editTotals(items) {
37
+ let add = 0;
38
+ let del = 0;
39
+ let failed = 0;
40
+ for (const it of items) {
41
+ const s = editStats(it);
42
+ add += s.add;
43
+ del += s.del;
44
+ if (it.status === "error")
45
+ failed++;
46
+ }
47
+ return { add, del, failed };
48
+ }
49
+ /** The files in the row, each once, in the order they were first changed; `index` is the first edit of it. */
50
+ export function editFiles(items) {
51
+ const seen = new Map();
52
+ items.forEach((it, index) => {
53
+ const path = it.arg ?? it.name;
54
+ if (!seen.has(path))
55
+ seen.set(path, { path, name: baseName(path), index });
56
+ });
57
+ return [...seen.values()];
58
+ }
59
+ /** The words at the start of the row: "Wrote 7 files", "Edited 3 files · 5 edits", "Wrote 2, edited 5 files". */
60
+ export function editsHead(items, live) {
61
+ const going = !!live && items.some((it) => it.status === "running");
62
+ const order = [];
63
+ for (const it of items)
64
+ if (!order.includes(it.name))
65
+ order.push(it.name);
66
+ if (order.length === 1) {
67
+ const files = editFiles(items).length;
68
+ return `${word(order[0], going)} ${files} files${items.length > files ? ` · ${items.length} edits` : ""}`;
69
+ }
70
+ // Still going, with both kinds in it: one word for all of it until it settles.
71
+ if (going)
72
+ return `Changing ${editFiles(items).length} files`;
73
+ const parts = order.map((n, i) => {
74
+ const w = word(n, going);
75
+ return `${i === 0 ? w : w.toLowerCase()} ${items.filter((it) => it.name === n).length}`;
76
+ });
77
+ return `${parts.join(", ")} files`;
78
+ }
79
+ /** Columns kept free at the right of the header for the arrow. */
80
+ const ARROW_ROOM = 4;
81
+ /** What stands for the names that do not fit. A click on it, like one anywhere else on the row, opens the list. */
82
+ const CUT = "…";
83
+ /**
84
+ * Where everything sits in the closed header (pure), so the row is drawn from it and a click is found in it:
85
+ * `● ` then the words, two spaces, the lines added and removed, two spaces, the names. As many names as fit,
86
+ * the rest counted. The same numbers draw the row and answer the click, so they cannot disagree.
87
+ */
88
+ export function headerLayout(items, columns, live) {
89
+ const head = editsHead(items, live);
90
+ const t = editTotals(items);
91
+ const failed = t.failed > 0 ? `${t.failed} failed` : "";
92
+ const stat = [failed, t.add ? `+${t.add}` : "", t.del ? `−${t.del}` : ""].filter(Boolean).join(" ");
93
+ let col = 2 + head.length;
94
+ if (stat)
95
+ col += 2 + stat.length;
96
+ col += 2;
97
+ const files = editFiles(items);
98
+ const limit = columns - ARROW_ROOM;
99
+ const names = [];
100
+ let more = 0;
101
+ for (let i = 0; i < files.length; i++) {
102
+ const f = files[i];
103
+ const lead = names.length === 0 ? 0 : 2;
104
+ const left = files.length - i - 1;
105
+ const tail = left > 0 ? `, ${CUT}`.length : 0;
106
+ if (col + lead + f.name.length + tail > limit && names.length > 0)
107
+ break;
108
+ const start = col + lead;
109
+ const room = Math.max(4, limit - start - tail);
110
+ const label = f.name.length > room ? `${f.name.slice(0, Math.max(1, room - 1))}…` : f.name;
111
+ names.push({ label, index: f.index, start, end: start + label.length });
112
+ col = start + label.length;
113
+ }
114
+ more = files.length - names.length;
115
+ return { head, stat, add: t.add, del: t.del, failed: t.failed, names, more, cut: CUT };
116
+ }
117
+ /** The edit a click at column `x` on the closed header opens, or -1 when it landed on the row itself. */
118
+ export function nameAt(items, columns, x, live) {
119
+ const hit = headerLayout(items, columns, live).names.find((n) => x >= n.start && x < n.end);
120
+ return hit ? hit.index : -1;
121
+ }
122
+ //# sourceMappingURL=editGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editGroup.js","sourceRoot":"","sources":["../../src/cli/editGroup.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * inkSpeedLoader.ts — the module load hook that swaps in the faster Ink renderer text.
3
3
  *
4
- * It touches exactly two files, `ink/build/output.js` and `widest-line/index.js`, and each only
5
- * when its content is the stock one this was written against (see inkOutputPatch.ts and
6
- * widestLinePatch.ts); everything else passes through untouched.
4
+ * It touches exactly three files, `ink/build/output.js`, `widest-line/index.js` and
5
+ * `ink/build/ink.js`, and each only when its content is the stock one this was written against
6
+ * (see inkOutputPatch.ts, widestLinePatch.ts and inkThrottlePatch.ts); everything else passes
7
+ * through untouched.
7
8
  *
8
9
  * Two shapes of the same hook. `loadSync` is the one used: it runs in the main thread through
9
10
  * `module.registerHooks`. `load` is the asynchronous form for `module.register`, kept only as a
@@ -13,12 +14,15 @@
13
14
  */
14
15
  import { patchInkOutput } from "./inkOutputPatch.js";
15
16
  import { patchWidestLine } from "./widestLinePatch.js";
16
- /** The patch for this module, or null when it is not one of the two this changes. */
17
+ import { patchInkThrottle } from "./inkThrottlePatch.js";
18
+ /** The patch for this module, or null when it is not one of the three this changes. */
17
19
  function patchFor(url) {
18
20
  if (/\/node_modules\/ink\/build\/output\.js$/.test(url))
19
21
  return patchInkOutput;
20
22
  if (/\/node_modules\/widest-line\/index\.js$/.test(url))
21
23
  return patchWidestLine;
24
+ if (/\/node_modules\/ink\/build\/ink\.js$/.test(url))
25
+ return patchInkThrottle;
22
26
  return null;
23
27
  }
24
28
  function asText(source) {
@@ -32,7 +36,7 @@ function apply(url, result) {
32
36
  const patch = patchFor(url);
33
37
  if (!patch || result.source == null)
34
38
  return result;
35
- const patched = patch(asText(result.source));
39
+ const patched = patch(asText(result.source), url);
36
40
  return patched ? { ...result, source: patched } : result;
37
41
  }
38
42
  /** For `module.registerHooks`: synchronous, in the main thread. */
@@ -1 +1 @@
1
- {"version":3,"file":"inkSpeedLoader.js","sourceRoot":"","sources":["../../src/cli/inkSpeedLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAKvD,qFAAqF;AACrF,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAC/E,IAAI,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,eAAe,CAAC;IAChF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,MAAc;IAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzH,OAAO,MAAM,CAAC,IAAI,CAAC,MAAqB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,KAAK,CAAC,GAAW,EAAE,MAAkB;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IACnD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3D,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,OAAgB,EAAE,QAAuD;IAC7G,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,OAAgB,EAAE,QAAgE;IACxH,OAAO,KAAK,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"inkSpeedLoader.js","sourceRoot":"","sources":["../../src/cli/inkSpeedLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAKzD,uFAAuF;AACvF,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAC/E,IAAI,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,eAAe,CAAC;IAChF,IAAI,sCAAsC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,MAAc;IAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzH,OAAO,MAAM,CAAC,IAAI,CAAC,MAAqB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,KAAK,CAAC,GAAW,EAAE,MAAkB;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IACnD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3D,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,OAAgB,EAAE,QAAuD;IAC7G,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,OAAgB,EAAE,QAAgE;IACxH,OAAO,KAAK,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * inkThrottlePatch.ts — load Ink's `throttle` from the one file that holds it.
3
+ *
4
+ * Ink imports a single function, `throttle`, from `es-toolkit/compat`. That entry point is an
5
+ * index which loads the whole compatibility layer behind it: hundreds of small files, opened and
6
+ * checked one by one before the first screen. On Windows each file costs real time (more on a cold
7
+ * disk or under a virus scanner), and this one import was close to half of all the files read at
8
+ * startup and about 0.3s of a 0.9s launch.
9
+ *
10
+ * `es-toolkit/compat/function/throttle.mjs` is the very module the index re-exports, so the
11
+ * function is the same one, not a lookalike. The package does not export that path, so the hook
12
+ * points Ink at it by file address.
13
+ *
14
+ * Same mechanism as inkOutputPatch.ts: the loader hook rewrites the module text, and
15
+ * `MINDWEAVE_NO_INK_PATCH=1` turns it off. Unlike that one it keys on the exact stock import line
16
+ * instead of a whole-file hash, so an Ink update that keeps the line keeps the speedup; one that
17
+ * changes it simply loads the stock import. If the target file is not where it is expected, the
18
+ * stock import is kept too.
19
+ */
20
+ import { existsSync } from "node:fs";
21
+ import { fileURLToPath } from "node:url";
22
+ /** The line this replaces, exactly as Ink writes it. */
23
+ export const STOCK_THROTTLE_IMPORT = "import { throttle } from 'es-toolkit/compat';";
24
+ /** Where the throttle module sits, relative to `ink/build/ink.js`: hoisted beside Ink, or nested under it. */
25
+ export const THROTTLE_LOCATIONS = [
26
+ "../../es-toolkit/dist/compat/function/throttle.mjs",
27
+ "../node_modules/es-toolkit/dist/compat/function/throttle.mjs",
28
+ ];
29
+ /** The patched text for Ink's `ink.js` at `url`, or null when it is not the stock import (or patching is off). */
30
+ export function patchInkThrottle(source, url) {
31
+ if (process.env["MINDWEAVE_NO_INK_PATCH"] === "1")
32
+ return null;
33
+ if (!source.includes(STOCK_THROTTLE_IMPORT))
34
+ return null;
35
+ for (const location of THROTTLE_LOCATIONS) {
36
+ const target = new URL(location, url);
37
+ if (target.protocol === "file:" && existsSync(fileURLToPath(target))) {
38
+ return source.replace(STOCK_THROTTLE_IMPORT, `import { throttle } from '${target.href}';`);
39
+ }
40
+ }
41
+ return null;
42
+ }
43
+ //# sourceMappingURL=inkThrottlePatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inkThrottlePatch.js","sourceRoot":"","sources":["../../src/cli/inkThrottlePatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,wDAAwD;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,+CAA+C,CAAC;AAErF,8GAA8G;AAC9G,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,oDAAoD;IACpD,8DAA8D;CAC/D,CAAC;AAEF,kHAAkH;AAClH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,GAAW;IAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,6BAA6B,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -111,8 +111,15 @@ export function screenChoices(current) {
111
111
  {
112
112
  mode: "inline",
113
113
  label: `Inline (beta)${tick("inline")}`,
114
- description: "prints to scrollback; a work in progress, still has rough edges",
114
+ description: INLINE_UNAVAILABLE,
115
115
  },
116
116
  ];
117
117
  }
118
+ /**
119
+ * Whether the inline shell can be chosen. It cannot, for now: it has too many bugs to hand
120
+ * to anyone. The row stays in the chooser so it is clear the shell exists and is coming;
121
+ * choosing it, in the list or with `/screen inline`, only says so.
122
+ */
123
+ export const INLINE_AVAILABLE = false;
124
+ export const INLINE_UNAVAILABLE = "not available yet — we are working on it, it has too many bugs to use for now";
118
125
  //# sourceMappingURL=screenMode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenMode.js","sourceRoot":"","sources":["../../src/cli/screenMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAyB;IAC1F,MAAM,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,OAAO,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAClD,OAAO,KAAK,IAAI,YAAY,CAAC;AAC/B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,GAAuB;IACpD,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IAChF,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC;IACnF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,2EAA2E;QAC7E,CAAC,CAAC,8EAA8E,CAAC;AACrF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,WAAW,GAAe,QAAQ,CAAC;AAShD;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,OAAmB;IAC/C,MAAM,IAAI,GAAG,CAAC,IAAgB,EAAU,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO;QACL;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,aAAa,IAAI,CAAC,YAAY,CAAC,EAAE;YACxC,WAAW,EAAE,yEAAyE;SACvF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE;YACvC,WAAW,EAAE,iEAAiE;SAC/E;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"screenMode.js","sourceRoot":"","sources":["../../src/cli/screenMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAyB;IAC1F,MAAM,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,OAAO,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAClD,OAAO,KAAK,IAAI,YAAY,CAAC;AAC/B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,GAAuB;IACpD,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IAChF,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC;IACnF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,2EAA2E;QAC7E,CAAC,CAAC,8EAA8E,CAAC;AACrF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,WAAW,GAAe,QAAQ,CAAC;AAShD;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,OAAmB;IAC/C,MAAM,IAAI,GAAG,CAAC,IAAgB,EAAU,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO;QACL;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,aAAa,IAAI,CAAC,YAAY,CAAC,EAAE;YACxC,WAAW,EAAE,yEAAyE;SACvF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE;YACvC,WAAW,EAAE,kBAAkB;SAChC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,+EAA+E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessionCarry.js","sourceRoot":"","sources":["../../src/cli/sessionCarry.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAiB,EAAE,EAAe;IACxE,4EAA4E;IAC5E,6CAA6C;IAC7C,IAAI,IAAI,CAAC,WAAW;QAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"sessionCarry.js","sourceRoot":"","sources":["../../src/cli/sessionCarry.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAiB,EAAE,EAAe;IACxE,4EAA4E;IAC5E,6CAA6C;IAC7C,IAAI,IAAI,CAAC,WAAW;QAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1D,CAAC"}