mindweave 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +6 -2
  2. package/dist/alternator/chassis/lsp.js +47 -2
  3. package/dist/alternator/chassis/lsp.js.map +1 -1
  4. package/dist/cli/App.js +104 -39
  5. package/dist/cli/App.js.map +1 -1
  6. package/dist/cli/altScreen.js +17 -1
  7. package/dist/cli/altScreen.js.map +1 -1
  8. package/dist/cli/blockSpacing.js +29 -0
  9. package/dist/cli/blockSpacing.js.map +1 -0
  10. package/dist/cli/commandLabel.js +85 -0
  11. package/dist/cli/commandLabel.js.map +1 -0
  12. package/dist/cli/commands.js +40 -0
  13. package/dist/cli/commands.js.map +1 -0
  14. package/dist/cli/components/PromptInput.js +8 -1
  15. package/dist/cli/components/PromptInput.js.map +1 -1
  16. package/dist/cli/components/ToolGroup.js +5 -1
  17. package/dist/cli/components/ToolGroup.js.map +1 -1
  18. package/dist/cli/components/ToolLine.js +61 -6
  19. package/dist/cli/components/ToolLine.js.map +1 -1
  20. package/dist/cli/framebuffer/parse.js +10 -4
  21. package/dist/cli/framebuffer/parse.js.map +1 -1
  22. package/dist/cli/framebuffer/screen.js +26 -0
  23. package/dist/cli/framebuffer/screen.js.map +1 -1
  24. package/dist/cli/framebuffer/writer.js +131 -23
  25. package/dist/cli/framebuffer/writer.js.map +1 -1
  26. package/dist/cli/restart.js +99 -0
  27. package/dist/cli/restart.js.map +1 -0
  28. package/dist/cli/selfUpdate.js +124 -0
  29. package/dist/cli/selfUpdate.js.map +1 -0
  30. package/dist/cli/startupArgs.js +29 -2
  31. package/dist/cli/startupArgs.js.map +1 -1
  32. package/dist/cli/terminalRestore.js +9 -1
  33. package/dist/cli/terminalRestore.js.map +1 -1
  34. package/dist/cli/toolDisplay.js +15 -6
  35. package/dist/cli/toolDisplay.js.map +1 -1
  36. package/dist/cli/transcript.js +1 -1
  37. package/dist/cli/transcript.js.map +1 -1
  38. package/dist/cli/updateRunner.js +105 -0
  39. package/dist/cli/updateRunner.js.map +1 -0
  40. package/dist/drivers/gemini/manifest.js +16 -11
  41. package/dist/drivers/gemini/manifest.js.map +1 -1
  42. package/dist/drivers/meta/client.js +15 -4
  43. package/dist/drivers/meta/client.js.map +1 -1
  44. package/dist/drivers/meta/manifest.js +40 -13
  45. package/dist/drivers/meta/manifest.js.map +1 -1
  46. package/dist/dynamo/engine.js +30 -4
  47. package/dist/dynamo/engine.js.map +1 -1
  48. package/dist/dynamo/prompt.js +7 -4
  49. package/dist/dynamo/prompt.js.map +1 -1
  50. package/dist/dynamo/verify.js +8 -5
  51. package/dist/dynamo/verify.js.map +1 -1
  52. package/dist/index.js +32 -2
  53. package/dist/index.js.map +1 -1
  54. package/dist/memory/types.js.map +1 -1
  55. package/dist/tools/askUser.js +17 -5
  56. package/dist/tools/askUser.js.map +1 -1
  57. package/dist/tools/detail.js +69 -11
  58. package/dist/tools/detail.js.map +1 -1
  59. package/dist/tools/exitPlan.js +17 -1
  60. package/dist/tools/exitPlan.js.map +1 -1
  61. package/dist/tools/outputShape.js +137 -0
  62. package/dist/tools/outputShape.js.map +1 -0
  63. package/dist/tools/registry.js +0 -2
  64. package/dist/tools/registry.js.map +1 -1
  65. package/dist/tools/runCommand.js +31 -7
  66. package/dist/tools/runCommand.js.map +1 -1
  67. package/dist/tools/screenshot.js +33 -5
  68. package/dist/tools/screenshot.js.map +1 -1
  69. package/dist/tools/testSummary.js +211 -0
  70. package/dist/tools/testSummary.js.map +1 -0
  71. package/package.json +2 -2
  72. package/dist/alternator/chassis/rank.js +0 -72
  73. package/dist/alternator/chassis/rank.js.map +0 -1
  74. package/dist/cli/components/MenuFrame.js +0 -24
  75. package/dist/cli/components/MenuFrame.js.map +0 -1
  76. package/dist/cli/reveal.js +0 -32
  77. package/dist/cli/reveal.js.map +0 -1
  78. package/dist/cli/smoothScroll.js +0 -74
  79. package/dist/cli/smoothScroll.js.map +0 -1
  80. package/dist/cli/viewport.js +0 -179
  81. package/dist/cli/viewport.js.map +0 -1
  82. package/dist/dynamo/_probe.tmp.js +0 -20
  83. package/dist/dynamo/_probe.tmp.js.map +0 -1
  84. package/dist/tools/captureSweep.js +0 -77
  85. package/dist/tools/captureSweep.js.map +0 -1
  86. package/dist/tools/diagnostics.js +0 -174
  87. package/dist/tools/diagnostics.js.map +0 -1
  88. package/dist/tools/editFile.js +0 -183
  89. package/dist/tools/editFile.js.map +0 -1
  90. package/dist/tools/multiEdit.js +0 -168
  91. package/dist/tools/multiEdit.js.map +0 -1
package/README.md CHANGED
@@ -41,6 +41,8 @@ the agent maintains across sessions, and a long list of things that were quietly
41
41
  Requires **Windows** and **Node.js 20+**. macOS and Linux are not supported yet, and the
42
42
  reason is written down in [KNOWN-ISSUES.md](KNOWN-ISSUES.md) rather than glossed over.
43
43
 
44
+ Big features coming out soon!
45
+
44
46
  ```bash
45
47
  npm install -g mindweave
46
48
  ```
@@ -69,7 +71,7 @@ else is configured inside a session.
69
71
 
70
72
  ## What it can do
71
73
 
72
- **14 providers, 52 models, one key.** DeepSeek, Anthropic, OpenAI, Gemini, xAI, Mistral,
74
+ **14 providers, 53 models, one key.** DeepSeek, Anthropic, OpenAI, Gemini, xAI, Mistral,
73
75
  Groq, Cerebras, Qwen, Kimi, GLM, Meta, MiniMax and Tencent. Each family gets its own driver so it
74
76
  runs at its best without bloating the shared core, and only the driver you are using is
75
77
  ever loaded. Switch with `/provider` and `/model`; the choice is remembered per project.
@@ -80,7 +82,8 @@ and language servers, costing no tokens, so the agent understands your codebase
80
82
  than just the file you opened.
81
83
 
82
84
  **Real tools.** File read and edit, multi-file edits, ripgrep search, a shell with
83
- background jobs, sub-agents, and compiler diagnostics. Read-before-edit is enforced, and
85
+ background jobs, and sub-agents. Every edit comes back with the language server's own
86
+ errors for that file, so a mistake surfaces where it was made. Read-before-edit is enforced, and
84
87
  `/undo` is a real net rather than a hope.
85
88
 
86
89
  **Session memory.** Long sessions stay sharp through automatic compaction plus a running
@@ -118,6 +121,7 @@ paths or commands the agent has to respect.
118
121
  | `/provider` · `/model` · `/think` | Who answers, which model, how hard it reasons |
119
122
  | `/clear` · `/continue` | Start fresh, or resume an earlier session |
120
123
  | `/undo` | Reverts what the last turn changed |
124
+ | `/update` | Installs the newest version and reopens on this conversation |
121
125
  | `/mcp` | Manages connected MCP servers |
122
126
  | `shift-tab` | Cycles interaction modes |
123
127
 
@@ -25,6 +25,17 @@ const SHUTDOWN_TIMEOUT = 2_000;
25
25
  const MAX_OPEN_DOCS = 300;
26
26
  /** Documents opened in a single `ensureProjectOpen` call, to bound its latency. */
27
27
  const OPEN_BATCH = 50;
28
+ /**
29
+ * How long to keep asking a just-opened server for a symbol before believing its
30
+ * empty answer, in milliseconds between attempts.
31
+ *
32
+ * Backing off rather than polling evenly, because the common case is a server that is
33
+ * ready almost at once and the expensive case is one that is not. Six attempts, ~4.6s
34
+ * in total, paid once per server and only when nothing came back — a cold pyright on a
35
+ * loaded four-core machine takes seconds to index where a warm laptop takes
36
+ * milliseconds, which is why a fixed wait tuned on the laptop was never going to hold.
37
+ */
38
+ const INDEX_RETRY_DELAYS = [100, 200, 400, 800, 1500, 1600];
28
39
  export class LspManager {
29
40
  root;
30
41
  sessions = new Map();
@@ -57,9 +68,18 @@ export class LspManager {
57
68
  continue;
58
69
  // A server like tsserver won't index a project until a file in it is
59
70
  // opened — open the project's files (bounded) before querying navto.
60
- await this.ensureProjectOpen(session, spec);
71
+ const opened = await this.ensureProjectOpen(session, spec);
61
72
  try {
62
- const res = (await this.request(session, "workspace/symbol", { query: name }));
73
+ // `textDocument/didOpen` is a NOTIFICATION: it returns the moment it is
74
+ // written, while the server is still building its index. A
75
+ // `workspace/symbol` sent immediately after is answered honestly and
76
+ // emptily, which reaches the caller as "no such symbol" rather than "not
77
+ // indexed yet" — a wrong answer, silently, and then a fall back to
78
+ // tree-sitter that nobody asked for. Retried while an empty result is
79
+ // still plausibly a cold index, and ONLY when this call actually opened
80
+ // documents: on a warm session an empty answer is the real one, and
81
+ // waiting for it again would tax every miss.
82
+ const res = await this.querySymbols(session, name, opened > 0);
63
83
  for (const s of res ?? []) {
64
84
  if (s.name !== name)
65
85
  continue; // workspace/symbol is fuzzy; keep exact
@@ -342,9 +362,34 @@ export class LspManager {
342
362
  }
343
363
  /** Open the noted files this server handles, so the project is loaded/indexed.
344
364
  * Bounded per call AND across the session — see `filesToOpen`. */
365
+ /** Opens what this query needs and reports HOW MANY it opened, which is what
366
+ * tells `symbols` whether an empty result might just be a cold index. */
345
367
  async ensureProjectOpen(session, spec) {
368
+ let opened = 0;
346
369
  for (const path of filesToOpen(this.files, session.opened, spec.key)) {
370
+ const before = session.opened.size;
347
371
  await this.didOpen(session, path);
372
+ if (session.opened.size > before)
373
+ opened++;
374
+ }
375
+ return opened;
376
+ }
377
+ /**
378
+ * `workspace/symbol`, retried while the index may still be filling.
379
+ *
380
+ * The delays back off and stop; the total is bounded and is paid at most once per
381
+ * server, on the first query after documents were opened. A server that has been
382
+ * asked and has nothing is answered on the first attempt — the retry exists for the
383
+ * server that has not finished reading yet, which is indistinguishable from it in
384
+ * the reply and distinguishable in time.
385
+ */
386
+ async querySymbols(session, name, mayBeCold) {
387
+ const delays = mayBeCold ? INDEX_RETRY_DELAYS : [];
388
+ for (let attempt = 0;; attempt++) {
389
+ const res = (await this.request(session, "workspace/symbol", { query: name }));
390
+ if ((res?.length ?? 0) > 0 || attempt >= delays.length)
391
+ return res;
392
+ await new Promise((r) => setTimeout(r, delays[attempt]));
348
393
  }
349
394
  }
350
395
  async didOpen(session, absPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"lsp.js","sourceRoot":"","sources":["../../../src/alternator/chassis/lsp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp.js","sourceRoot":"","sources":["../../../src/alternator/chassis/lsp.ts"],"names":[],"mappings":"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"}
package/dist/cli/App.js CHANGED
@@ -58,6 +58,10 @@ import { Picker } from "./components/Picker.js";
58
58
  import { ApprovalBox } from "./components/ApprovalBox.js";
59
59
  import { BlockView } from "./components/BlockView.js";
60
60
  import { initialState, reduce, trimNarration } from "./transcript.js";
61
+ import { isTight } from "./blockSpacing.js";
62
+ import { BASE_COMMANDS } from "./commands.js";
63
+ import { manualCommand, refusalReason } from "./selfUpdate.js";
64
+ import { currentInstall, requestRestart, runUpdate } from "./updateRunner.js";
61
65
  import { enableMouse, readWheel } from "./mouse.js";
62
66
  import { chatLayout, reflowScroll } from "./chatAnchor.js";
63
67
  import { virtualWindow } from "./virtualWindow.js";
@@ -106,7 +110,7 @@ const RESUME_MODES = [
106
110
  { label: "Continue as-is", description: "resume the full conversation unchanged" },
107
111
  { label: "Fresh start", description: "leave it and start a new empty session here instead" },
108
112
  ];
109
- export function App() {
113
+ export function App({ resumeSessionId }) {
110
114
  // The transcript state machine lives in a ref and is advanced by the reducer as
111
115
  // the stream arrives; `render` forces a paint. A ref (not useState) so the async
112
116
  // streaming loop always reads/writes the latest state without stale closures.
@@ -321,8 +325,14 @@ export function App() {
321
325
  // the SAME reducer actions the live stream uses — so a resumed chat shows the
322
326
  // exact rows it did before: user/assistant prose, every `● Tool(arg)` with its
323
327
  // `⎿` result/diff, the consolidated discovery groups, and a marker where context
324
- // was summarized. The tool display fields (summary/detail/isError) were stored on
325
- // each tool entry at run time, so nothing about a row is lost across a resume.
328
+ // was summarized. The tool display fields (summary/detail/detailKind/isError) were
329
+ // stored on each tool entry at run time, so nothing about a row is lost across a resume.
330
+ //
331
+ // `detailKind` used to be missing from that list while this comment already claimed
332
+ // the rows came back identical. They did not: the diff text survived and the fact that
333
+ // it WAS a diff did not, so every resumed edit rendered as dim plain lines. Anything
334
+ // added to a row's appearance has to be stored here too, or the claim above quietly
335
+ // stops being true again.
326
336
  function showResumed(transcript) {
327
337
  for (const e of transcript) {
328
338
  if (e.role === "user") {
@@ -346,8 +356,22 @@ export function App() {
346
356
  dispatch({ type: "say", text: intermediate ? trimNarration(e.content) : e.content });
347
357
  }
348
358
  for (const call of e.toolCalls ?? []) {
359
+ // The spawn itself is drawn by its sub-agent block live, never as a raw row.
360
+ // Replaying it as one puts a `● SpawnSubagent(...)` in a resumed transcript
361
+ // that was not in the live one.
362
+ if (call.name === "spawn_subagent")
363
+ continue;
349
364
  const d = toolDisplay(call.name, parseToolArgs(call.arguments));
350
- dispatch({ type: "toolStart", toolId: call.id, name: d.name, arg: d.arg, action: d.kind, group: isGroupable(call.name) });
365
+ dispatch({
366
+ type: "toolStart",
367
+ toolId: call.id,
368
+ name: d.name,
369
+ arg: d.arg,
370
+ ...(d.meta ? { meta: d.meta } : {}),
371
+ action: d.kind,
372
+ group: isGroupable(call.name),
373
+ ...(d.covers ? { covers: d.covers } : {}),
374
+ });
351
375
  }
352
376
  }
353
377
  else {
@@ -358,6 +382,10 @@ export function App() {
358
382
  ok: e.isError === undefined ? !e.content.startsWith("Error:") : !e.isError,
359
383
  summary: e.summary,
360
384
  detail: e.detail,
385
+ ...(e.detailKind ? { detailKind: e.detailKind } : {}),
386
+ ...(e.quiet ? { quiet: true } : {}),
387
+ ...(e.displayName ? { name: e.displayName } : {}),
388
+ ...(e.displayKind ? { action: e.displayKind } : {}),
361
389
  });
362
390
  }
363
391
  }
@@ -407,6 +435,9 @@ export function App() {
407
435
  }
408
436
  function attachApproval(s) {
409
437
  s.toolContext.requestApproval = (q, o, detail, title) => askApproval.current(q, o, detail, title);
438
+ // Same stop Esc performs. A tool reaches for this when the USER has said, by
439
+ // dismissing a question, that the work should not carry on without them.
440
+ s.toolContext.interrupt = () => abortRef.current?.abort();
410
441
  s.toolContext.backgroundShells?.setOnChange(handleBgChange);
411
442
  // Servers connect in the background and can die or revive at any time; without this
412
443
  // the /mcp view would only ever show what was true when the last key was pressed.
@@ -480,10 +511,22 @@ export function App() {
480
511
  // One session for the whole conversation (a ref so it survives re-renders).
481
512
  const session = useRef(null);
482
513
  useEffect(() => {
483
- createSession().then((s) => {
514
+ // A relaunch after `/update` opens on the conversation it left. A resume that does
515
+ // not work out — an id that names nothing, a session file that will not load —
516
+ // falls through to a normal start rather than refusing to open: the point of the
517
+ // whole mechanism is that an update costs you nothing, and failing to come up at
518
+ // all is the one outcome worse than losing the thread. `/continue` still reaches it.
519
+ const open = resumeSessionId
520
+ ? resumeSession(process.cwd(), resumeSessionId).then((s) => s ?? createSession())
521
+ : createSession();
522
+ open.then((s) => {
484
523
  attachApproval(s);
485
524
  session.current = s;
486
525
  setReady(true);
526
+ if (resumeSessionId && s.id === resumeSessionId) {
527
+ showResumed(s.transcript);
528
+ note(`— updated to v${appVersion()}, continuing —`);
529
+ }
487
530
  // The project may have a model saved from a different provider than the
488
531
  // default, so re-check against what we're actually about to run.
489
532
  const cur = session.current;
@@ -513,7 +556,7 @@ export function App() {
513
556
  void checkForUpdate().then((latest) => {
514
557
  if (!latest)
515
558
  return;
516
- note(`update available: v${appVersion()} → v${latest} — npm install -g mindweave`);
559
+ note(`update available: v${appVersion()} → v${latest} — /update to take it`);
517
560
  });
518
561
  }, []);
519
562
  // When a background shell finishes and Mindweave is idle, react to it automatically.
@@ -1035,7 +1078,7 @@ export function App() {
1035
1078
  enqueueReveal({ type: "subToolStart", agentId: e.agent, toolId: e.id, name: d.name, arg: d.arg, action: d.kind });
1036
1079
  }
1037
1080
  else {
1038
- enqueueReveal({ type: "toolStart", toolId: e.id, name: d.name, arg: d.arg, meta: d.meta, action: d.kind, group: isGroupable(e.name) });
1081
+ enqueueReveal({ type: "toolStart", toolId: e.id, name: d.name, arg: d.arg, meta: d.meta, action: d.kind, group: isGroupable(e.name), ...(d.covers ? { covers: d.covers } : {}) });
1039
1082
  }
1040
1083
  }
1041
1084
  else if (e.type === "tool" && e.phase === "end") {
@@ -1409,6 +1452,60 @@ export function App() {
1409
1452
  ]));
1410
1453
  return;
1411
1454
  }
1455
+ // /update — take the newer version and come back to this same conversation.
1456
+ //
1457
+ // The restart is the point. A process cannot replace its own code: driver modules
1458
+ // are imported lazily, so a copy that rewrote itself mid-session would be an old
1459
+ // process reading new files, which fails later and somewhere else. Ending and
1460
+ // reopening is what makes the new version actually the version running, and landing
1461
+ // back in this session is what makes that invisible.
1462
+ if (name === "/update") {
1463
+ if (busy) {
1464
+ note("Finish or stop the current turn first — restarting would strand it.", { error: true });
1465
+ return;
1466
+ }
1467
+ const install = currentInstall();
1468
+ if (install.kind !== "global") {
1469
+ // Never guessed at. Overwriting a working tree or another project's dependency
1470
+ // is the one thing this command must not do; see selfUpdate.ts.
1471
+ note(`${refusalReason(install)}\n\nTo do it by hand:\n ${manualCommand(install)}`, { error: true });
1472
+ return;
1473
+ }
1474
+ // Past the once-a-day cache deliberately: someone typing this is asking NOW, and
1475
+ // answering from a check made this morning would report "up to date" about a
1476
+ // release that has happened since.
1477
+ const latest = await checkForUpdate({ readCacheImpl: () => null });
1478
+ const current = appVersion();
1479
+ if (!latest) {
1480
+ note(`Already on the latest${current ? ` (v${current})` : ""}.`);
1481
+ return;
1482
+ }
1483
+ const choice = await askApproval.current(`Update from v${current} to v${latest}? Mindweave will restart into this same conversation.`, ["Yes, update and restart", "No"], manualCommand(install), "This will run");
1484
+ if (!choice.startsWith("Yes")) {
1485
+ note("Left as it is.");
1486
+ return;
1487
+ }
1488
+ note(`Updating to v${latest}…`);
1489
+ const result = await runUpdate(install.prefix);
1490
+ if (!result.ok) {
1491
+ // A failure here is a no-op rather than a half-state: npm either replaced the
1492
+ // package or it did not, and the copy running is the copy that always was.
1493
+ note(`The update did not run, and nothing was changed.\n${result.message}\n\nTo do it by hand:\n ${manualCommand(install)}`, { error: true });
1494
+ return;
1495
+ }
1496
+ // On disk before the successor goes looking for it.
1497
+ await saveSession(s);
1498
+ // Recorded rather than done here: the terminal can only be handed over once Ink
1499
+ // has unmounted, and unmounting is what ends this render. `index.ts` picks it up.
1500
+ requestRestart({
1501
+ packageRoot: install.packageRoot,
1502
+ sessionId: s.id,
1503
+ previousVersion: current,
1504
+ prefix: install.prefix,
1505
+ });
1506
+ exit();
1507
+ return;
1508
+ }
1412
1509
  // /clear — a fresh conversation without leaving the folder. Until now the only
1413
1510
  // way to start over was to quit and relaunch, or to go through /continue and pick
1414
1511
  // its third option, which is not somewhere anyone looks for "start over".
@@ -2243,14 +2340,6 @@ const MIN_CHAT_ROWS = 3;
2243
2340
  const FOOTER_BASE_ROWS = 7;
2244
2341
  /** The palette's own chrome: title, the "Tab completes" hint, top+bottom border. */
2245
2342
  const MENU_CHROME_ROWS = 4;
2246
- /** Whether a block hugs the one above it — consecutive tool rows have no blank
2247
- * line between them. Takes the FULL list, not the rendered slice, so the first
2248
- * visible block still spaces correctly against the one scrolled off above it. */
2249
- function isTight(all, i) {
2250
- const block = all[i];
2251
- const prev = i > 0 ? all[i - 1] : undefined;
2252
- return !!block && block.kind === "tool" && !!prev && prev.kind === "tool";
2253
- }
2254
2343
  /** Lines PageUp/PageDown move per press. */
2255
2344
  const PAGE_LINES = 10;
2256
2345
  /** Lines one wheel notch moves. Three is the usual terminal step, and a flick
@@ -2383,30 +2472,6 @@ function useTerminalSize() {
2383
2472
  }, [stdout]);
2384
2473
  return size;
2385
2474
  }
2386
- // The built-in slash commands offered by the input's autocomplete. Project skills
2387
- // are appended at render time from the live session.
2388
- const BASE_COMMANDS = [
2389
- { name: "/help", description: "show this list" },
2390
- { name: "/init", description: "write MINDWEAVE.md — what the agent should always know about this project" },
2391
- { name: "/provider", description: "choose which provider serves this project" },
2392
- { name: "/key", description: "add or replace an API key" },
2393
- { name: "/model", description: "choose which model answers, from the current provider" },
2394
- { name: "/think", description: "set the reasoning level for the model" },
2395
- { name: "/rules", description: "list rules, or add one: /rules <directive>" },
2396
- { name: "/skills", description: "list skills, or make one: /skills <description>" },
2397
- { name: "/forbidden", description: "list protected paths, or add: /forbidden <path>" },
2398
- { name: "/forbid-command", description: "list forbidden commands, or add: /forbid-command <command>" },
2399
- { name: "/link", description: "pull in the rest of the project (monorepo / sibling repos)" },
2400
- { name: "/include", description: "add a folder to the workspace: /include <path>" },
2401
- { name: "/exclude", description: "remove an added folder: /exclude <label>" },
2402
- { name: "/shells", description: "view or stop background commands (tests, servers)" },
2403
- { name: "/mcp", description: "view MCP servers; /mcp add <name> <command|url> to connect one" },
2404
- { name: "/context", description: "show what Mindweave sees about this project" },
2405
- { name: "/undo", description: "roll back file changes: /undo, /undo list, /undo <n>" },
2406
- { name: "/compact", description: "summarize the conversation to free up context" },
2407
- { name: "/clear", description: "start a fresh conversation in this project" },
2408
- { name: "/continue", description: "pick a past session to resume" },
2409
- ];
2410
2475
  /** Split a /include argument into paths: quoted segments (spaces) or bare tokens. */
2411
2476
  function parsePaths(arg) {
2412
2477
  const out = [];