mindweave 2.5.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/README.md +81 -145
  2. package/dist/cli/App.js +579 -304
  3. package/dist/cli/App.js.map +1 -1
  4. package/dist/cli/analytics.js +27 -18
  5. package/dist/cli/analytics.js.map +1 -1
  6. package/dist/cli/attachments.js +34 -0
  7. package/dist/cli/attachments.js.map +1 -1
  8. package/dist/cli/bannerFit.js +70 -0
  9. package/dist/cli/bannerFit.js.map +1 -0
  10. package/dist/cli/bootstrap.js +41 -3
  11. package/dist/cli/bootstrap.js.map +1 -1
  12. package/dist/cli/commands.js +4 -1
  13. package/dist/cli/commands.js.map +1 -1
  14. package/dist/cli/components/ApprovalBox.js +3 -2
  15. package/dist/cli/components/ApprovalBox.js.map +1 -1
  16. package/dist/cli/components/BlockView.js +27 -6
  17. package/dist/cli/components/BlockView.js.map +1 -1
  18. package/dist/cli/components/FirstRunFrame.js +2 -1
  19. package/dist/cli/components/FirstRunFrame.js.map +1 -1
  20. package/dist/cli/components/KeyManager.js +5 -4
  21. package/dist/cli/components/KeyManager.js.map +1 -1
  22. package/dist/cli/components/KeySetup.js +29 -13
  23. package/dist/cli/components/KeySetup.js.map +1 -1
  24. package/dist/cli/components/MarathonBox.js +64 -0
  25. package/dist/cli/components/MarathonBox.js.map +1 -0
  26. package/dist/cli/components/McpMinitabs.js +8 -7
  27. package/dist/cli/components/McpMinitabs.js.map +1 -1
  28. package/dist/cli/components/Picker.js +4 -3
  29. package/dist/cli/components/Picker.js.map +1 -1
  30. package/dist/cli/components/PromptInput.js +47 -8
  31. package/dist/cli/components/PromptInput.js.map +1 -1
  32. package/dist/cli/components/PulseDot.js +42 -0
  33. package/dist/cli/components/PulseDot.js.map +1 -0
  34. package/dist/cli/components/SubagentView.js +9 -6
  35. package/dist/cli/components/SubagentView.js.map +1 -1
  36. package/dist/cli/components/TipLine.js +2 -1
  37. package/dist/cli/components/TipLine.js.map +1 -1
  38. package/dist/cli/components/ToolGroup.js +65 -49
  39. package/dist/cli/components/ToolGroup.js.map +1 -1
  40. package/dist/cli/components/ToolLine.js +20 -19
  41. package/dist/cli/components/ToolLine.js.map +1 -1
  42. package/dist/cli/components/TrustGate.js +2 -1
  43. package/dist/cli/components/TrustGate.js.map +1 -1
  44. package/dist/cli/components/minitabs.js +3 -2
  45. package/dist/cli/components/minitabs.js.map +1 -1
  46. package/dist/cli/desktopApp.js +45 -0
  47. package/dist/cli/desktopApp.js.map +1 -0
  48. package/dist/cli/help.js +1 -0
  49. package/dist/cli/help.js.map +1 -1
  50. package/dist/cli/inkOutputPatch.js +285 -0
  51. package/dist/cli/inkOutputPatch.js.map +1 -0
  52. package/dist/cli/inkSpeed.js +29 -0
  53. package/dist/cli/inkSpeed.js.map +1 -0
  54. package/dist/cli/inkSpeedLoader.js +47 -0
  55. package/dist/cli/inkSpeedLoader.js.map +1 -0
  56. package/dist/cli/inputText.js +30 -0
  57. package/dist/cli/inputText.js.map +1 -0
  58. package/dist/cli/keyManager.js +2 -1
  59. package/dist/cli/keyManager.js.map +1 -1
  60. package/dist/cli/keyPrefs.js +90 -0
  61. package/dist/cli/keyPrefs.js.map +1 -0
  62. package/dist/cli/keySetup.js +5 -2
  63. package/dist/cli/keySetup.js.map +1 -1
  64. package/dist/cli/marathonUi.js +113 -0
  65. package/dist/cli/marathonUi.js.map +1 -0
  66. package/dist/cli/markdown.js +63 -11
  67. package/dist/cli/markdown.js.map +1 -1
  68. package/dist/cli/modes.js +3 -3
  69. package/dist/cli/modes.js.map +1 -1
  70. package/dist/cli/prodEnv.js +43 -0
  71. package/dist/cli/prodEnv.js.map +1 -0
  72. package/dist/cli/revealPace.js +5 -5
  73. package/dist/cli/revealPace.js.map +1 -1
  74. package/dist/cli/revealQueue.js +120 -0
  75. package/dist/cli/revealQueue.js.map +1 -0
  76. package/dist/cli/theme.js +47 -0
  77. package/dist/cli/theme.js.map +1 -0
  78. package/dist/cli/toolDisplay.js +112 -18
  79. package/dist/cli/toolDisplay.js.map +1 -1
  80. package/dist/cli/transcript.js +1 -1
  81. package/dist/cli/transcript.js.map +1 -1
  82. package/dist/cli/virtualWindow.js +14 -2
  83. package/dist/cli/virtualWindow.js.map +1 -1
  84. package/dist/cli/wheelAccel.js +73 -0
  85. package/dist/cli/wheelAccel.js.map +1 -0
  86. package/dist/cli/widestLinePatch.js +48 -0
  87. package/dist/cli/widestLinePatch.js.map +1 -0
  88. package/dist/cli/workingVerb.js +88 -28
  89. package/dist/cli/workingVerb.js.map +1 -1
  90. package/dist/cli/wrap.js +1 -1
  91. package/dist/cli/wrap.js.map +1 -1
  92. package/dist/core/contextSettings.js +84 -0
  93. package/dist/core/contextSettings.js.map +1 -0
  94. package/dist/core/limitsView.js +40 -0
  95. package/dist/core/limitsView.js.map +1 -0
  96. package/dist/core/mcpServers.js +164 -0
  97. package/dist/core/mcpServers.js.map +1 -0
  98. package/dist/core/permissions.js +209 -0
  99. package/dist/core/permissions.js.map +1 -0
  100. package/dist/core/providerKeys.js +187 -0
  101. package/dist/core/providerKeys.js.map +1 -0
  102. package/dist/core/rulesSkills.js +142 -0
  103. package/dist/core/rulesSkills.js.map +1 -0
  104. package/dist/core/spendView.js +90 -0
  105. package/dist/core/spendView.js.map +1 -0
  106. package/dist/core/turnRunner.js +759 -0
  107. package/dist/core/turnRunner.js.map +1 -0
  108. package/dist/drivers/anthropic/client.js +101 -26
  109. package/dist/drivers/anthropic/client.js.map +1 -1
  110. package/dist/drivers/anthropic/manifest.js +43 -13
  111. package/dist/drivers/anthropic/manifest.js.map +1 -1
  112. package/dist/drivers/cerebras/manifest.js +13 -3
  113. package/dist/drivers/cerebras/manifest.js.map +1 -1
  114. package/dist/drivers/deepseek/manifest.js +24 -34
  115. package/dist/drivers/deepseek/manifest.js.map +1 -1
  116. package/dist/drivers/glm/manifest.js +21 -6
  117. package/dist/drivers/glm/manifest.js.map +1 -1
  118. package/dist/drivers/groq/manifest.js +5 -2
  119. package/dist/drivers/groq/manifest.js.map +1 -1
  120. package/dist/drivers/kimi/manifest.js +13 -10
  121. package/dist/drivers/kimi/manifest.js.map +1 -1
  122. package/dist/drivers/meta/manifest.js +21 -16
  123. package/dist/drivers/meta/manifest.js.map +1 -1
  124. package/dist/drivers/minimax/manifest.js +15 -12
  125. package/dist/drivers/minimax/manifest.js.map +1 -1
  126. package/dist/drivers/ollama/catalog.js +71 -0
  127. package/dist/drivers/ollama/catalog.js.map +1 -0
  128. package/dist/drivers/ollama/client.js +164 -0
  129. package/dist/drivers/ollama/client.js.map +1 -0
  130. package/dist/drivers/ollama/endpoint.js +42 -0
  131. package/dist/drivers/ollama/endpoint.js.map +1 -0
  132. package/dist/drivers/ollama/index.js +5 -0
  133. package/dist/drivers/ollama/index.js.map +1 -0
  134. package/dist/drivers/ollama/manifest.js +64 -0
  135. package/dist/drivers/ollama/manifest.js.map +1 -0
  136. package/dist/drivers/openai/client.js +10 -4
  137. package/dist/drivers/openai/client.js.map +1 -1
  138. package/dist/drivers/openai/manifest.js +69 -18
  139. package/dist/drivers/openai/manifest.js.map +1 -1
  140. package/dist/drivers/qwen/manifest.js +19 -6
  141. package/dist/drivers/qwen/manifest.js.map +1 -1
  142. package/dist/drivers/registry.js +11 -0
  143. package/dist/drivers/registry.js.map +1 -1
  144. package/dist/drivers/retryPolicy.js +26 -1
  145. package/dist/drivers/retryPolicy.js.map +1 -1
  146. package/dist/drivers/xai/client.js +12 -10
  147. package/dist/drivers/xai/client.js.map +1 -1
  148. package/dist/drivers/xai/manifest.js +62 -25
  149. package/dist/drivers/xai/manifest.js.map +1 -1
  150. package/dist/dynamo/auxModel.js +54 -0
  151. package/dist/dynamo/auxModel.js.map +1 -0
  152. package/dist/dynamo/engine.js +407 -99
  153. package/dist/dynamo/engine.js.map +1 -1
  154. package/dist/dynamo/guard.js +10 -0
  155. package/dist/dynamo/guard.js.map +1 -1
  156. package/dist/dynamo/liveMeter.js +25 -6
  157. package/dist/dynamo/liveMeter.js.map +1 -1
  158. package/dist/dynamo/marathon.js +409 -0
  159. package/dist/dynamo/marathon.js.map +1 -0
  160. package/dist/dynamo/marathonPrompt.js +45 -0
  161. package/dist/dynamo/marathonPrompt.js.map +1 -0
  162. package/dist/dynamo/model.js +6 -2
  163. package/dist/dynamo/model.js.map +1 -1
  164. package/dist/dynamo/toolBatches.js +58 -0
  165. package/dist/dynamo/toolBatches.js.map +1 -0
  166. package/dist/dynamo/usageLimits.js +446 -0
  167. package/dist/dynamo/usageLimits.js.map +1 -0
  168. package/dist/governor/freshness.js +10 -7
  169. package/dist/governor/freshness.js.map +1 -1
  170. package/dist/governor/index.js +76 -9
  171. package/dist/governor/index.js.map +1 -1
  172. package/dist/governor/write.js +43 -14
  173. package/dist/governor/write.js.map +1 -1
  174. package/dist/index.js +18 -151
  175. package/dist/index.js.map +1 -1
  176. package/dist/main.js +162 -0
  177. package/dist/main.js.map +1 -0
  178. package/dist/mcp/manager.js +18 -0
  179. package/dist/mcp/manager.js.map +1 -1
  180. package/dist/memory/allMetas.js +69 -0
  181. package/dist/memory/allMetas.js.map +1 -0
  182. package/dist/memory/compaction.js +70 -15
  183. package/dist/memory/compaction.js.map +1 -1
  184. package/dist/memory/earlier.js +15 -0
  185. package/dist/memory/earlier.js.map +1 -0
  186. package/dist/memory/profile.js +93 -0
  187. package/dist/memory/profile.js.map +1 -0
  188. package/dist/memory/rewind.js +262 -0
  189. package/dist/memory/rewind.js.map +1 -0
  190. package/dist/memory/session.js +42 -10
  191. package/dist/memory/session.js.map +1 -1
  192. package/dist/memory/sessionMemory.js +48 -13
  193. package/dist/memory/sessionMemory.js.map +1 -1
  194. package/dist/memory/sessionMemoryCompact.js +1 -1
  195. package/dist/memory/sessionMemoryCompact.js.map +1 -1
  196. package/dist/memory/sessionTitle.js +50 -0
  197. package/dist/memory/sessionTitle.js.map +1 -0
  198. package/dist/memory/store.js +42 -1
  199. package/dist/memory/store.js.map +1 -1
  200. package/dist/memory/types.js.map +1 -1
  201. package/dist/tools/askUser.js +14 -0
  202. package/dist/tools/askUser.js.map +1 -1
  203. package/dist/tools/backgroundShells.js +208 -5
  204. package/dist/tools/backgroundShells.js.map +1 -1
  205. package/dist/tools/browser.js +176 -0
  206. package/dist/tools/browser.js.map +1 -0
  207. package/dist/tools/cdp.js +165 -0
  208. package/dist/tools/cdp.js.map +1 -0
  209. package/dist/tools/checkpoints.js +208 -5
  210. package/dist/tools/checkpoints.js.map +1 -1
  211. package/dist/tools/deferredNative.js +2 -0
  212. package/dist/tools/deferredNative.js.map +1 -1
  213. package/dist/tools/detail.js +9 -6
  214. package/dist/tools/detail.js.map +1 -1
  215. package/dist/tools/edit.js +2 -1
  216. package/dist/tools/edit.js.map +1 -1
  217. package/dist/tools/exitPlan.js +4 -0
  218. package/dist/tools/exitPlan.js.map +1 -1
  219. package/dist/tools/hiddenDesktop.js +273 -0
  220. package/dist/tools/hiddenDesktop.js.map +1 -0
  221. package/dist/tools/listeningPorts.js +134 -0
  222. package/dist/tools/listeningPorts.js.map +1 -0
  223. package/dist/tools/mcpSearch.js +8 -0
  224. package/dist/tools/mcpSearch.js.map +1 -1
  225. package/dist/tools/mindweaveStatus.js +1 -1
  226. package/dist/tools/mindweaveStatus.js.map +1 -1
  227. package/dist/tools/registry.js +3 -0
  228. package/dist/tools/registry.js.map +1 -1
  229. package/dist/tools/replaceSymbol.js +2 -1
  230. package/dist/tools/replaceSymbol.js.map +1 -1
  231. package/dist/tools/runCommand.js +113 -9
  232. package/dist/tools/runCommand.js.map +1 -1
  233. package/dist/tools/screenshot.js +4 -6
  234. package/dist/tools/screenshot.js.map +1 -1
  235. package/dist/tools/screenshotWin.js +26 -9
  236. package/dist/tools/screenshotWin.js.map +1 -1
  237. package/dist/tools/stateCheckpoint.js +128 -0
  238. package/dist/tools/stateCheckpoint.js.map +1 -0
  239. package/dist/tools/todo.js +6 -0
  240. package/dist/tools/todo.js.map +1 -1
  241. package/dist/tools/ui.js +1295 -0
  242. package/dist/tools/ui.js.map +1 -0
  243. package/dist/tools/uiHide.js +356 -0
  244. package/dist/tools/uiHide.js.map +1 -0
  245. package/dist/tools/uiPage.js +861 -0
  246. package/dist/tools/uiPage.js.map +1 -0
  247. package/dist/tools/uiWin.js +506 -0
  248. package/dist/tools/uiWin.js.map +1 -0
  249. package/dist/tools/webFetch.js +32 -25
  250. package/dist/tools/webFetch.js.map +1 -1
  251. package/dist/tools/webSearch.js +12 -0
  252. package/dist/tools/webSearch.js.map +1 -1
  253. package/dist/tools/writeFile.js +2 -1
  254. package/dist/tools/writeFile.js.map +1 -1
  255. package/package.json +78 -75
@@ -6,18 +6,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  * ⎿ - <a href="#" class="btn">
7
7
  * + <a href="catalog.html" class="btn">
8
8
  *
9
- * The dot reflects lifecycle: dim while running, white when ok, red on error. The
10
- * bold `Name(arg)` sits on the first row; once resolved, an indented `⎿` branch
11
- * hangs beneath with the rich detail (an edit diff, a file preview, command
12
- * output) or a one-line summary. The whole result appears AT ONCE on resolve —
13
- * never a live, line-by-line scroll (that churn is what made the old version
14
- * glitch).
9
+ * The row appears while its tool is still working: the dot pulses and the verb is in the
10
+ * present tense ("Reading views.py"). When the result comes the dot goes still and the verb
11
+ * settles ("Read views.py"), with an indented `⎿` branch beneath holding the rich detail (an
12
+ * edit diff, a file preview, command output) or a one-line summary. A command shows the tail
13
+ * of its output while it runs. The dot is white, always: the pulse says working, stillness
14
+ * says done, and a failure says so in words.
15
15
  */
16
16
  import { useEffect, useState } from "react";
17
17
  import { Box, Text } from "ink";
18
- import { KIND_COLOR, ERROR_COLOR } from "../toolDisplay.js";
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
22
  const DOT = "●";
22
23
  const BRANCH = "⎿";
23
24
  // The rail beside quoted machine output (a command's stdout). Distinct from BRANCH:
@@ -48,13 +49,13 @@ function lastOutcome(lines) {
48
49
  }
49
50
  export function ToolLine({ name, arg, status, action, summary, detail, detailKind, meta, columns, live, tightTop, since, waited, startedAt }) {
50
51
  const errored = status === "error";
51
- // "Updating(home.html)" while the turn runs, "Update(home.html)" once it ends —
52
- // the same row, one word apart. The row is not shown at all until its result is
53
- // in hand, so this is the only change the user ever sees it make.
54
- const verb = activeForm(name, !!live);
55
- // The dot carries the action at a glance: its category colour when it succeeds,
56
- // dim while still running, red when it failed.
57
- const dotColor = errored ? ERROR_COLOR : action ? KIND_COLOR[action] : undefined;
52
+ // "Updating(home.html)" while the tool works, "Update(home.html)" the moment it is done.
53
+ // `live` is false for a row from a turn that has ended (or a resumed session), which is
54
+ // done whatever its status says: an interrupted call never sent a result.
55
+ // An image handed to the model is still being worked on after the tool returns: the model is
56
+ // looking at it (`since` set, no total yet), so the row keeps its present tense and its pulse.
57
+ const working = !!live && (status === "running" || (since !== undefined && waited === undefined));
58
+ const verb = activeForm(name, working);
58
59
  const metaRoom = meta ? meta.length + 1 : 0;
59
60
  // The branch content: rich detail lines if present, else the one-line summary.
60
61
  const rawLines = detail ? detail.split("\n") : summary ? [summary] : [];
@@ -101,7 +102,7 @@ export function ToolLine({ name, arg, status, action, summary, detail, detailKin
101
102
  : arg.length > headerRoom
102
103
  ? "…" + arg.slice(-(headerRoom - 1))
103
104
  : arg;
104
- return (_jsxs(Box, { marginTop: tightTop ? 0 : 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Box, { minWidth: 2, flexShrink: 0, children: _jsx(Text, { color: dotColor, dimColor: status === "running", children: DOT }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { bold: true, 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 ? ERROR_COLOR : "green", bold: true, wrap: "truncate-end", children: [" ", outcome] }) })) : null] }), status !== "running" && branchLines.length > 0 ? (detailKind === "shell" ? (_jsx(ShellLines, { lines: branchLines, columns: columns, errored: errored, headerHasCommand: !!arg })) : (_jsx(BranchLines, { lines: branchLines, columns: columns, errored: errored, diff: detailKind === "diff" }))) : null] }));
105
+ return (_jsxs(Box, { marginTop: tightTop ? 0 : 1, flexDirection: "column", 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, 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 })) : (_jsx(BranchLines, { lines: branchLines, columns: columns, errored: errored, diff: detailKind === "diff" }))) : null] }));
105
106
  }
106
107
  /** The indented `⎿` result block, one source line per row, diff-colored when the
107
108
  * content is a real diff (`+ ` green, `- ` red; everything else dim).
@@ -113,7 +114,7 @@ export function ToolLine({ name, arg, status, action, summary, detail, detailKin
113
114
  function BranchLines({ lines, columns, errored, diff, }) {
114
115
  const content = Math.max(8, columns - BRANCH_INDENT - 1);
115
116
  return (_jsx(Box, { flexDirection: "column", children: lines.map((line, i) => {
116
- const style = errored ? { color: "red" } : diff ? diffStyle(line) : undefined;
117
+ const style = errored ? { color: BAD } : diff ? diffStyle(line) : undefined;
117
118
  const dim = !errored && style === undefined;
118
119
  // Padded to the full content width so the tint is a continuous band rather than
119
120
  // stopping wherever the code happens to end, which reads as a ragged smear.
@@ -158,7 +159,7 @@ function ShellLines({ lines, columns, errored, headerHasCommand, }) {
158
159
  // a block of output. It is the one line here the user WROTE, in effect,
159
160
  // and it was previously distinguished only by being bold, which loses
160
161
  // against a screenful of equally plain machine text.
161
- _jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: KIND_COLOR.run, children: "$ " }), _jsx(Text, { bold: true, children: line.slice(2) })] })) : (_jsx(Text, { color: outcome ? (line.startsWith("✓") ? "green" : ERROR_COLOR) : errored ? "red" : undefined, dimColor: railed && !errored, bold: outcome, wrap: "truncate-end", children: line })) })] }, i));
162
+ _jsxs(Text, { wrap: "truncate-end", 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: "truncate-end", children: line })) })] }, i));
162
163
  }) }));
163
164
  }
164
165
  /**
@@ -177,9 +178,9 @@ const ADDED_BG = "#0d2818";
177
178
  const REMOVED_BG = "#2d1113";
178
179
  function diffStyle(line) {
179
180
  if (line.startsWith("+"))
180
- return { color: "green", backgroundColor: ADDED_BG };
181
+ return { color: GOOD, backgroundColor: ADDED_BG };
181
182
  if (line.startsWith("-"))
182
- return { color: "red", backgroundColor: REMOVED_BG };
183
+ return { color: BAD, backgroundColor: REMOVED_BG };
183
184
  return undefined;
184
185
  }
185
186
  /**
@@ -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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"}
@@ -15,6 +15,7 @@ import { Box, Text } from "ink";
15
15
  import { useInput } from "ink";
16
16
  import { useState } from "react";
17
17
  import { FirstRunFrame } from "./FirstRunFrame.js";
18
+ import { ACCENT, WARN } from "../theme.js";
18
19
  const CHOICES = ["Yes, work in this folder", "No, quit"];
19
20
  export function TrustGate({ cwd, rows, breadth, warning, persists, version, docsUrl, onTrust, onQuit, active = true }) {
20
21
  const [sel, setSel] = useState(0);
@@ -30,7 +31,7 @@ export function TrustGate({ cwd, rows, breadth, warning, persists, version, docs
30
31
  else if (input === "2")
31
32
  onQuit();
32
33
  }, { isActive: active });
33
- return (_jsxs(FirstRunFrame, { rows: rows, version: version, subtitle: "Work in this folder?", children: [_jsx(Box, { marginTop: 1, children: _jsx(Text, { bold: true, color: "cyan", children: cwd }) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { children: "Mindweave will be able to read, change and run files here." }), _jsx(Text, { dimColor: true, children: "Open it somewhere you trust \u2014 your own project, your team's, or open source you know. If you are not sure what is in this folder, look before you say yes." })] }), warning ? (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "yellow", children: warning }) })) : null, _jsx(Box, { marginTop: 1, flexDirection: "column", children: CHOICES.map((label, i) => (_jsx(Box, { children: _jsxs(Text, { color: i === sel ? "cyan" : undefined, bold: i === sel, children: [i === sel ? " › " : " ", `[${i + 1}] ${label}`] }) }, label))) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: persists
34
+ return (_jsxs(FirstRunFrame, { rows: rows, version: version, subtitle: "Work in this folder?", children: [_jsx(Box, { marginTop: 1, children: _jsx(Text, { bold: true, color: ACCENT, children: cwd }) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { children: "Mindweave will be able to read, change and run files here." }), _jsx(Text, { dimColor: true, children: "Open it somewhere you trust \u2014 your own project, your team's, or open source you know. If you are not sure what is in this folder, look before you say yes." })] }), warning ? (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: WARN, children: warning }) })) : null, _jsx(Box, { marginTop: 1, flexDirection: "column", children: CHOICES.map((label, i) => (_jsx(Box, { children: _jsxs(Text, { color: i === sel ? ACCENT : undefined, bold: i === sel, children: [i === sel ? " › " : " ", `[${i + 1}] ${label}`] }) }, label))) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: persists
34
35
  ? "Remembered for this folder — you won't be asked again."
35
36
  : `Just for this session${breadth === "root" ? " (a whole drive is never remembered)" : " (your home directory is never remembered)"}.` }), _jsxs(Text, { dimColor: true, children: ["\u2191/\u2193 or 1-2 \u00B7 Enter to choose \u00B7 Esc to quit \u00B7 ", docsUrl] })] })] }));
36
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TrustGate.js","sourceRoot":"","sources":["../../../src/cli/components/TrustGate.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TrustGate.js","sourceRoot":"","sources":["../../../src/cli/components/TrustGate.tsx"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
16
16
  * "edit a key" and "disable a server."
17
17
  */
18
18
  import { Box, Text } from "ink";
19
+ import { ACCENT } from "../theme.js";
19
20
  /** Rows visible at once, for a caller with no real budget to pass. Every real caller gets
20
21
  * its budget from the shared footer box instead — see `maxRows` on `MiniTabPanel`. */
21
22
  export const MINITAB_WINDOW = 7;
@@ -65,7 +66,7 @@ export function MiniTabRow({ on, n, numWidth = 1, showNumber = true, left, leftC
65
66
  // its usual share first, so a two-column row (a label plus a status) is unchanged.
66
67
  const leftWidth = right === undefined ? Math.max(4, inner - prefixWidth - midWidth) : mid === undefined ? 24 : 10;
67
68
  const rightWidth = Math.max(4, inner - prefixWidth - leftWidth - midWidth);
68
- const labelColor = leftColor ?? (on ? "cyan" : undefined);
69
- return (_jsxs(Box, { flexShrink: 0, width: inner, children: [_jsxs(Text, { color: on ? "cyan" : undefined, bold: on, children: [on ? " › " : " ", showNumber ? `${String(n).padStart(numWidth)} ` : ""] }), _jsx(Box, { width: leftWidth, children: _jsx(Text, { color: labelColor, dimColor: leftDim === true && !on, bold: on, wrap: "truncate-end", children: left }) }), mid === undefined ? null : (_jsx(Box, { width: midWidth, children: _jsx(Text, { dimColor: true, wrap: "truncate-end", children: mid }) })), right ? (_jsx(Box, { width: rightWidth, flexShrink: 0, children: _jsx(Text, { color: rightColor, dimColor: !rightColor, wrap: "truncate-end", children: right }) })) : null] }));
69
+ const labelColor = leftColor ?? (on ? ACCENT : undefined);
70
+ return (_jsxs(Box, { flexShrink: 0, width: inner, children: [_jsxs(Text, { color: on ? ACCENT : undefined, bold: on, children: [on ? " › " : " ", showNumber ? `${String(n).padStart(numWidth)} ` : ""] }), _jsx(Box, { width: leftWidth, children: _jsx(Text, { color: labelColor, dimColor: leftDim === true && !on, bold: on, wrap: "truncate-end", children: left }) }), mid === undefined ? null : (_jsx(Box, { width: midWidth, children: _jsx(Text, { dimColor: true, wrap: "truncate-end", children: mid }) })), right ? (_jsx(Box, { width: rightWidth, flexShrink: 0, children: _jsx(Text, { color: rightColor, dimColor: !rightColor, wrap: "truncate-end", children: right }) })) : null] }));
70
71
  }
71
72
  //# sourceMappingURL=minitabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"minitabs.js","sourceRoot":"","sources":["../../../src/cli/components/minitabs.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"minitabs.js","sourceRoot":"","sources":["../../../src/cli/components/minitabs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * desktopApp.ts — the pointer from the terminal to the desktop app.
3
+ *
4
+ * The line shown when a session starts, the text of the /app screen, and the one thing that screen
5
+ * does: open the download page in the user's own browser. The browser is the right place for it, because
6
+ * that page says which file to take and what each system will ask before it opens the app, and a
7
+ * terminal cannot download an installer for them.
8
+ */
9
+ import { spawn } from "node:child_process";
10
+ /** The home page, where the download buttons are. */
11
+ export const APP_PAGE_URL = "https://mindweavedev.netlify.app/";
12
+ /** The one line shown at the start of every session. */
13
+ export function appAnnouncement() {
14
+ return "The Mindweave desktop app is out for Windows, macOS and Linux. Run /app to get it. It is free and open source.";
15
+ }
16
+ /** What the /app screen says above its single choice. */
17
+ export const APP_EXPLANATION = "The desktop app is out for Windows, macOS and Linux. It is free and open source, and it includes " +
18
+ "this command line, so one download gives you both. Enter opens the download page in your browser.";
19
+ /** The command that opens a link in the default browser, for each system. */
20
+ export function browserCommand(platform, url) {
21
+ if (platform === "win32")
22
+ return { cmd: "cmd", args: ["/c", "start", "", url] };
23
+ if (platform === "darwin")
24
+ return { cmd: "open", args: [url] };
25
+ return { cmd: "xdg-open", args: [url] };
26
+ }
27
+ /**
28
+ * Open a link in the default browser. Never throws: a machine with no browser (a server over SSH)
29
+ * gets `false` and the caller prints the address instead. Only https links are ever opened.
30
+ */
31
+ export function openInBrowser(url, platform = process.platform, spawnFn = spawn) {
32
+ if (!/^https:\/\//.test(url))
33
+ return false;
34
+ try {
35
+ const { cmd, args } = browserCommand(platform, url);
36
+ const child = spawnFn(cmd, args, { detached: true, stdio: "ignore", windowsHide: true });
37
+ child.on("error", () => { });
38
+ child.unref();
39
+ return true;
40
+ }
41
+ catch {
42
+ return false;
43
+ }
44
+ }
45
+ //# sourceMappingURL=desktopApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktopApp.js","sourceRoot":"","sources":["../../src/cli/desktopApp.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,qDAAqD;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAEhE,wDAAwD;AACxD,MAAM,UAAU,eAAe;IAC7B,OAAO,gHAAgH,CAAC;AAC1H,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,eAAe,GAC1B,mGAAmG;IACnG,mGAAmG,CAAC;AAItG,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,QAAyB,EAAE,GAAW;IACnE,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;IAChF,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,WAA4B,OAAO,CAAC,QAAQ,EAAE,UAAiB,KAAK;IAC7G,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/dist/cli/help.js CHANGED
@@ -34,6 +34,7 @@ export function formatHelp(sections) {
34
34
  "Also\n" +
35
35
  " @path attach a file to your message (Tab completes the path)\n" +
36
36
  " Esc stop what's running\n" +
37
+ " Esc Esc on an empty box, rewind to an earlier message\n" +
37
38
  // The input stays live while a turn runs and the placeholder says so, so
38
39
  // QUEUEING is discoverable. Getting back OUT of the queue is not: nothing on
39
40
  // screen mentions it until something is already queued, and by then a user who
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,wEAAwE;AACxE,SAAS,MAAM,CAAC,QAAgC;IAC9C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgC;IACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3D,0EAA0E;IAC1E,mDAAmD;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,MAAM;QACT,8EAA8E;QAC9E,oEAAoE;QACpE,QAAQ;YACN,8EAA8E;YAC9E,2CAA2C;YAC3C,yEAAyE;YACzE,6EAA6E;YAC7E,+EAA+E;YAC/E,2EAA2E;YAC3E,yEAAyE;QAC3E,8EAA8E;QAC9E,gFAAgF;QAChF,iFAAiF;QACjF,qEAAqE;QACrE,oBAAoB;YAClB,+EAA+E;YAC/E,oFAAoF;YACpF,mFAAmF;YACnF,mFAAmF;YACnF,oFAAoF;YACpF,4EAA4E;KAC/E,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,wEAAwE;AACxE,SAAS,MAAM,CAAC,QAAgC;IAC9C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgC;IACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3D,0EAA0E;IAC1E,mDAAmD;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,MAAM;QACT,8EAA8E;QAC9E,oEAAoE;QACpE,QAAQ;YACN,8EAA8E;YAC9E,2CAA2C;YAC3C,qEAAqE;YACrE,yEAAyE;YACzE,6EAA6E;YAC7E,+EAA+E;YAC/E,2EAA2E;YAC3E,yEAAyE;QAC3E,8EAA8E;QAC9E,gFAAgF;QAChF,iFAAiF;QACjF,qEAAqE;QACrE,oBAAoB;YAClB,+EAA+E;YAC/E,oFAAoF;YACpF,mFAAmF;YACnF,mFAAmF;YACnF,oFAAoF;YACpF,4EAA4E;KAC/E,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC"}
@@ -0,0 +1,285 @@
1
+ /**
2
+ * inkOutputPatch.ts — a faster `Output` for Ink, applied to the stock one only when it is
3
+ * exactly the one this was written against.
4
+ *
5
+ * ## What was slow
6
+ *
7
+ * Every frame, Ink turns its layout tree into text in `ink/build/output.js`. That class is built
8
+ * fresh for each frame, so its caches (widths, tokenised lines) lived for one frame and were
9
+ * thrown away, and it then painted EVERY cell of the screen as an object, built each row's string
10
+ * from those cells, and let the garbage collector clean up ten thousand objects. On a 200x50
11
+ * window with a long transcript, profiled in a real terminal, that was about 60% of all the CPU
12
+ * the app used while scrolling, and the garbage collector alone took more than the whole of our
13
+ * own code. Scrolling reached about 80 frames a second.
14
+ *
15
+ * ## What this does instead
16
+ *
17
+ * Rows do not influence one another: a row is a pure function of the lines written into it, in
18
+ * order. So the patched `get()` collects what each row was written, and looks the row up by that
19
+ * list in a cache that survives between frames. A row that has been drawn before (which is nearly
20
+ * every row of a scroll, since the same lines just move) costs one lookup instead of a paint, and
21
+ * the cells are only built for rows never seen. The width, tokenising and slicing caches also
22
+ * outlive the frame. Measured in the same terminal: scroll at 100 frames a second, with 3.6x less
23
+ * CPU and the garbage collector's share down from 2s to 0.2s.
24
+ *
25
+ * ## Why it is applied this way, and why it can be trusted
26
+ *
27
+ * It is a replacement for the text of one internal module, installed by a loader hook (see
28
+ * inkSpeedLoader.ts) at load time, and only when the stock file's hash is one of
29
+ * `KNOWN_ORIGINALS`. A different Ink changes nothing: the stock renderer runs, a little slower.
30
+ * `inkOutputPatch.test.ts` renders random write sequences through both the stock class and this
31
+ * one and requires byte-identical output, so a new Ink version is caught there rather than on
32
+ * a screen.
33
+ *
34
+ * Set `MINDWEAVE_NO_INK_PATCH=1` to run the stock renderer.
35
+ */
36
+ import { createHash } from "node:crypto";
37
+ /** SHA-256 of the `ink/build/output.js` this replaces (Ink 7.1.1). */
38
+ export const KNOWN_ORIGINALS = ["54d62805875cc0644787f19038ac6adbd3a01aca367c048ec94f8822485fd2cf"];
39
+ /** The replacement module text. Plain JavaScript, resolved from Ink's own folder, so its imports find the same packages the stock file does. */
40
+ export const PATCHED_OUTPUT = String.raw `import sliceAnsi from 'slice-ansi';
41
+ import stringWidth from 'string-width';
42
+ import { styledCharsFromTokens, styledCharsToString, tokenize, } from '@alcalzone/ansi-tokenize';
43
+ // MINDWEAVE-PATCHED: caches live across frames, and each finished row is remembered by what was
44
+ // written into it, so a frame that only moves or repeats rows reuses their strings.
45
+ const CAP = 6000;
46
+ function remember(map, key, value) {
47
+ if (map.size >= CAP) {
48
+ map.clear();
49
+ }
50
+ map.set(key, value);
51
+ return value;
52
+ }
53
+ class OutputCaches {
54
+ widths = new Map();
55
+ blockWidths = new Map();
56
+ styledChars = new Map();
57
+ slices = new Map();
58
+ getStyledChars(line) {
59
+ let cached = this.styledChars.get(line);
60
+ if (cached === undefined) {
61
+ cached = remember(this.styledChars, line, styledCharsFromTokens(tokenize(line)));
62
+ }
63
+ return cached;
64
+ }
65
+ getStringWidth(text) {
66
+ let cached = this.widths.get(text);
67
+ if (cached === undefined) {
68
+ cached = remember(this.widths, text, stringWidth(text));
69
+ }
70
+ return cached;
71
+ }
72
+ getWidestLine(text) {
73
+ let cached = this.blockWidths.get(text);
74
+ if (cached === undefined) {
75
+ let lineWidth = 0;
76
+ for (const line of text.split('\n')) {
77
+ lineWidth = Math.max(lineWidth, this.getStringWidth(line));
78
+ }
79
+ cached = remember(this.blockWidths, text, lineWidth);
80
+ }
81
+ return cached;
82
+ }
83
+ getSlice(line, from, to) {
84
+ const key = from + '\u0001' + to + '\u0001' + line;
85
+ let cached = this.slices.get(key);
86
+ if (cached === undefined) {
87
+ cached = remember(this.slices, key, sliceAnsi(line, from, to));
88
+ }
89
+ return cached;
90
+ }
91
+ }
92
+ const SHARED_CACHES = new OutputCaches();
93
+ const ROWS = new Map();
94
+ export default class Output {
95
+ width;
96
+ height;
97
+ operations = [];
98
+ caches = SHARED_CACHES;
99
+ constructor(options) {
100
+ const { width, height } = options;
101
+ this.width = width;
102
+ this.height = height;
103
+ }
104
+ write(x, y, text, options) {
105
+ const { transformers } = options;
106
+ if (!text) {
107
+ return;
108
+ }
109
+ this.operations.push({
110
+ type: 'write',
111
+ x,
112
+ y,
113
+ text,
114
+ transformers,
115
+ });
116
+ }
117
+ clip(clip) {
118
+ this.operations.push({
119
+ type: 'clip',
120
+ clip,
121
+ });
122
+ }
123
+ unclip() {
124
+ this.operations.push({
125
+ type: 'unclip',
126
+ });
127
+ }
128
+ // One finished row from what was written into it: [x, line, x, line, ...] in write order.
129
+ paintRow(records) {
130
+ const width = this.width;
131
+ const spaceCell = {
132
+ type: 'char',
133
+ value: ' ',
134
+ fullWidth: false,
135
+ styles: [],
136
+ };
137
+ const currentLine = new Array(width);
138
+ for (let x = 0; x < width; x++) {
139
+ currentLine[x] = spaceCell;
140
+ }
141
+ for (let r = 0; r < records.length; r += 2) {
142
+ const x = records[r];
143
+ const line = records[r + 1];
144
+ const characters = this.caches.getStyledChars(line);
145
+ let offsetX = x;
146
+ // Nothing to write (e.g. line was clipped away).
147
+ if (characters.length === 0) {
148
+ continue;
149
+ }
150
+ // Wide characters (e.g. CJK) occupy two cells: a leading
151
+ // cell with the character and a trailing placeholder with
152
+ // value ''. When an overlapping write lands in the middle
153
+ // of a wide character, the boundary cells need cleanup so
154
+ // the terminal never renders a half-visible wide character.
155
+ if (currentLine[offsetX]?.value === '' &&
156
+ offsetX > 0 &&
157
+ this.caches.getStringWidth(currentLine[offsetX - 1]?.value ?? '') >
158
+ 1) {
159
+ currentLine[offsetX - 1] = spaceCell;
160
+ }
161
+ for (const character of characters) {
162
+ currentLine[offsetX] = character;
163
+ // Determine printed width using string-width to align with measurement
164
+ const characterWidth = Math.max(1, this.caches.getStringWidth(character.value));
165
+ // For multi-column characters, clear following cells to avoid stray spaces/artifacts
166
+ if (characterWidth > 1) {
167
+ for (let index = 1; index < characterWidth; index++) {
168
+ currentLine[offsetX + index] = {
169
+ type: 'char',
170
+ value: '',
171
+ fullWidth: false,
172
+ styles: character.styles,
173
+ };
174
+ }
175
+ }
176
+ offsetX += characterWidth;
177
+ }
178
+ if (currentLine[offsetX]?.value === '') {
179
+ currentLine[offsetX] = spaceCell;
180
+ }
181
+ }
182
+ // See https://github.com/vadimdemedes/ink/pull/564#issuecomment-1637022742
183
+ const lineWithoutEmptyItems = currentLine.filter(item => item !== undefined);
184
+ return styledCharsToString(lineWithoutEmptyItems).trimEnd();
185
+ }
186
+ get() {
187
+ // Every row's writes, in order. Rows do not influence one another, so a row is a pure
188
+ // function of its own list.
189
+ const rows = new Array(this.height);
190
+ const clips = [];
191
+ for (const operation of this.operations) {
192
+ if (operation.type === 'clip') {
193
+ clips.push(operation.clip);
194
+ }
195
+ if (operation.type === 'unclip') {
196
+ clips.pop();
197
+ }
198
+ if (operation.type === 'write') {
199
+ const { text, transformers } = operation;
200
+ let { x, y } = operation;
201
+ let lines = text.split('\n');
202
+ const clip = clips.at(-1);
203
+ if (clip) {
204
+ const clipHorizontally = typeof clip?.x1 === 'number' && typeof clip?.x2 === 'number';
205
+ const clipVertically = typeof clip?.y1 === 'number' && typeof clip?.y2 === 'number';
206
+ // If text is positioned outside of clipping area altogether,
207
+ // skip to the next operation to avoid unnecessary calculations
208
+ if (clipHorizontally) {
209
+ const width = this.caches.getWidestLine(text);
210
+ if (x + width < clip.x1 || x > clip.x2) {
211
+ continue;
212
+ }
213
+ }
214
+ if (clipVertically) {
215
+ const height = lines.length;
216
+ if (y + height < clip.y1 || y > clip.y2) {
217
+ continue;
218
+ }
219
+ }
220
+ if (clipHorizontally) {
221
+ lines = lines.map(line => {
222
+ const from = x < clip.x1 ? clip.x1 - x : 0;
223
+ const width = this.caches.getStringWidth(line);
224
+ const to = x + width > clip.x2 ? clip.x2 - x : width;
225
+ return this.caches.getSlice(line, from, to);
226
+ });
227
+ if (x < clip.x1) {
228
+ x = clip.x1;
229
+ }
230
+ }
231
+ if (clipVertically) {
232
+ const from = y < clip.y1 ? clip.y1 - y : 0;
233
+ const height = lines.length;
234
+ const to = y + height > clip.y2 ? clip.y2 - y : height;
235
+ lines = lines.slice(from, to);
236
+ if (y < clip.y1) {
237
+ y = clip.y1;
238
+ }
239
+ }
240
+ }
241
+ let offsetY = 0;
242
+ for (let [index, line] of lines.entries()) {
243
+ const row = y + offsetY;
244
+ // Line can be missing if the text is taller than height of pre-initialized rows
245
+ if (row < 0 || row >= this.height) {
246
+ continue;
247
+ }
248
+ for (const transformer of transformers) {
249
+ line = transformer(line, index);
250
+ }
251
+ (rows[row] ??= []).push(x, line);
252
+ offsetY++;
253
+ }
254
+ }
255
+ }
256
+ const out = new Array(this.height);
257
+ const w = this.width;
258
+ for (let y = 0; y < this.height; y++) {
259
+ const records = rows[y];
260
+ if (records === undefined) {
261
+ out[y] = '';
262
+ continue;
263
+ }
264
+ const key = w + '\u0002' + records.join('\u0001');
265
+ let line = ROWS.get(key);
266
+ if (line === undefined) {
267
+ line = remember(ROWS, key, this.paintRow(records));
268
+ }
269
+ out[y] = line;
270
+ }
271
+ return {
272
+ output: out.join('\n'),
273
+ height: out.length,
274
+ };
275
+ }
276
+ }
277
+ `;
278
+ /** The patched text when `source` is a stock file this knows how to replace, else null. */
279
+ export function patchInkOutput(source) {
280
+ if (process.env["MINDWEAVE_NO_INK_PATCH"] === "1")
281
+ return null;
282
+ const hash = createHash("sha256").update(source).digest("hex");
283
+ return KNOWN_ORIGINALS.includes(hash) ? PATCHED_OUTPUT : null;
284
+ }
285
+ //# sourceMappingURL=inkOutputPatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inkOutputPatch.js","sourceRoot":"","sources":["../../src/cli/inkOutputPatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,sEAAsE;AACtE,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,kEAAkE,CAAC,CAAC;AAEvH,gJAAgJ;AAChJ,MAAM,CAAC,MAAM,cAAc,GAAW,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6O/C,CAAC;AAEF,2FAA2F;AAC3F,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * inkSpeed.ts — install the faster Ink renderer before Ink is loaded.
3
+ *
4
+ * A load hook only sees modules loaded AFTER it is registered, and ES imports are all loaded
5
+ * before any module runs. So the entry point (index.ts) registers this first and only then
6
+ * imports the application with `await import()`. If registering fails for any reason the app
7
+ * simply runs on the stock renderer.
8
+ *
9
+ * `module.registerHooks` runs the hook in the main thread, synchronously. The older
10
+ * `module.register` runs it on a separate thread, and every module load then waits on a round
11
+ * trip to that thread: about 700ms of startup, measured. `register` is only the fallback.
12
+ */
13
+ import * as nodeModule from "node:module";
14
+ import { load, loadSync } from "./inkSpeedLoader.js";
15
+ export function registerInkSpeedups() {
16
+ try {
17
+ const registerHooks = nodeModule.registerHooks;
18
+ if (typeof registerHooks === "function") {
19
+ registerHooks({ load: loadSync });
20
+ return;
21
+ }
22
+ void load; // the fallback below loads the same file as a loader-thread module
23
+ nodeModule.register("./inkSpeedLoader.js", import.meta.url);
24
+ }
25
+ catch {
26
+ // Not available here: the stock renderer is fine.
27
+ }
28
+ }
29
+ //# sourceMappingURL=inkSpeed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inkSpeed.js","sourceRoot":"","sources":["../../src/cli/inkSpeed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIrD,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,MAAM,aAAa,GAAI,UAA2D,CAAC,aAAa,CAAC;QACjG,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;YACxC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,mEAAmE;QAC9E,UAAU,CAAC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;AACH,CAAC"}