mindweave 2.3.1 → 2.4.1

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 (129) hide show
  1. package/README.md +26 -43
  2. package/dist/alternator/chassis/lsp.js +67 -0
  3. package/dist/alternator/chassis/lsp.js.map +1 -1
  4. package/dist/cli/App.js +1201 -108
  5. package/dist/cli/App.js.map +1 -1
  6. package/dist/cli/altScreen.js +80 -10
  7. package/dist/cli/altScreen.js.map +1 -1
  8. package/dist/cli/appIdentity.js +54 -0
  9. package/dist/cli/appIdentity.js.map +1 -0
  10. package/dist/cli/attachments.js +27 -3
  11. package/dist/cli/attachments.js.map +1 -1
  12. package/dist/cli/blockHeights.js +58 -0
  13. package/dist/cli/blockHeights.js.map +1 -0
  14. package/dist/cli/caretPark.js +94 -0
  15. package/dist/cli/caretPark.js.map +1 -0
  16. package/dist/cli/clipboard.js +68 -0
  17. package/dist/cli/clipboard.js.map +1 -0
  18. package/dist/cli/commandLabel.js +19 -2
  19. package/dist/cli/commandLabel.js.map +1 -1
  20. package/dist/cli/commands.js +1 -0
  21. package/dist/cli/commands.js.map +1 -1
  22. package/dist/cli/components/BlockView.js +1 -1
  23. package/dist/cli/components/BlockView.js.map +1 -1
  24. package/dist/cli/components/KeyManager.js +11 -5
  25. package/dist/cli/components/KeyManager.js.map +1 -1
  26. package/dist/cli/components/Picker.js +18 -3
  27. package/dist/cli/components/Picker.js.map +1 -1
  28. package/dist/cli/components/PromptInput.js +300 -74
  29. package/dist/cli/components/PromptInput.js.map +1 -1
  30. package/dist/cli/components/TipLine.js +33 -0
  31. package/dist/cli/components/TipLine.js.map +1 -0
  32. package/dist/cli/components/ToolLine.js +30 -3
  33. package/dist/cli/components/ToolLine.js.map +1 -1
  34. package/dist/cli/dropHandles.js +76 -0
  35. package/dist/cli/dropHandles.js.map +1 -0
  36. package/dist/cli/exitCursor.js +56 -0
  37. package/dist/cli/exitCursor.js.map +1 -0
  38. package/dist/cli/framebuffer/overlay.js +42 -0
  39. package/dist/cli/framebuffer/overlay.js.map +1 -0
  40. package/dist/cli/framebuffer/paint.js +8 -1
  41. package/dist/cli/framebuffer/paint.js.map +1 -1
  42. package/dist/cli/framebuffer/parse.js +54 -4
  43. package/dist/cli/framebuffer/parse.js.map +1 -1
  44. package/dist/cli/framebuffer/writer.js +357 -6
  45. package/dist/cli/framebuffer/writer.js.map +1 -1
  46. package/dist/cli/groupReveal.js +29 -3
  47. package/dist/cli/groupReveal.js.map +1 -1
  48. package/dist/cli/inputView.js +45 -0
  49. package/dist/cli/inputView.js.map +1 -1
  50. package/dist/cli/keyManager.js +12 -2
  51. package/dist/cli/keyManager.js.map +1 -1
  52. package/dist/cli/livePad.js +53 -0
  53. package/dist/cli/livePad.js.map +1 -0
  54. package/dist/cli/memoryTuning.js +31 -0
  55. package/dist/cli/memoryTuning.js.map +1 -0
  56. package/dist/cli/messageQueue.js +76 -7
  57. package/dist/cli/messageQueue.js.map +1 -1
  58. package/dist/cli/mouse.js +40 -7
  59. package/dist/cli/mouse.js.map +1 -1
  60. package/dist/cli/pickerOrder.js +49 -0
  61. package/dist/cli/pickerOrder.js.map +1 -0
  62. package/dist/cli/quietConsole.js +50 -0
  63. package/dist/cli/quietConsole.js.map +1 -0
  64. package/dist/cli/screenMode.js +118 -0
  65. package/dist/cli/screenMode.js.map +1 -0
  66. package/dist/cli/screenShell.js +67 -0
  67. package/dist/cli/screenShell.js.map +1 -0
  68. package/dist/cli/screenStore.js +46 -0
  69. package/dist/cli/screenStore.js.map +1 -0
  70. package/dist/cli/scrollPill.js +101 -0
  71. package/dist/cli/scrollPill.js.map +1 -0
  72. package/dist/cli/selection.js +130 -0
  73. package/dist/cli/selection.js.map +1 -0
  74. package/dist/cli/startupFill.js +48 -0
  75. package/dist/cli/startupFill.js.map +1 -0
  76. package/dist/cli/terminalRestore.js +1 -1
  77. package/dist/cli/terminalRestore.js.map +1 -1
  78. package/dist/cli/toolDisplay.js +11 -2
  79. package/dist/cli/toolDisplay.js.map +1 -1
  80. package/dist/cli/toolItems.js +1 -0
  81. package/dist/cli/toolItems.js.map +1 -1
  82. package/dist/cli/transcript.js +54 -3
  83. package/dist/cli/transcript.js.map +1 -1
  84. package/dist/cli/wordEdit.js +95 -0
  85. package/dist/cli/wordEdit.js.map +1 -0
  86. package/dist/drivers/deepseek/manifest.js +54 -56
  87. package/dist/drivers/deepseek/manifest.js.map +1 -1
  88. package/dist/drivers/openai/manifest.js +4 -1
  89. package/dist/drivers/openai/manifest.js.map +1 -1
  90. package/dist/drivers/registry.js +7 -1
  91. package/dist/drivers/registry.js.map +1 -1
  92. package/dist/dynamo/engine.js +126 -20
  93. package/dist/dynamo/engine.js.map +1 -1
  94. package/dist/index.js +42 -3
  95. package/dist/index.js.map +1 -1
  96. package/dist/memory/pastedText.js +37 -0
  97. package/dist/memory/pastedText.js.map +1 -0
  98. package/dist/memory/presence.js +47 -0
  99. package/dist/memory/presence.js.map +1 -1
  100. package/dist/memory/session.js +78 -4
  101. package/dist/memory/session.js.map +1 -1
  102. package/dist/memory/store.js +22 -1
  103. package/dist/memory/store.js.map +1 -1
  104. package/dist/memory/types.js.map +1 -1
  105. package/dist/tools/backgroundShells.js +105 -18
  106. package/dist/tools/backgroundShells.js.map +1 -1
  107. package/dist/tools/commandOutput.js +207 -0
  108. package/dist/tools/commandOutput.js.map +1 -0
  109. package/dist/tools/detail.js +2 -2
  110. package/dist/tools/detail.js.map +1 -1
  111. package/dist/tools/openDefault.js +150 -0
  112. package/dist/tools/openDefault.js.map +1 -0
  113. package/dist/tools/outputShape.js +31 -6
  114. package/dist/tools/outputShape.js.map +1 -1
  115. package/dist/tools/pathList.js +32 -0
  116. package/dist/tools/pathList.js.map +1 -0
  117. package/dist/tools/readFile.js +3 -15
  118. package/dist/tools/readFile.js.map +1 -1
  119. package/dist/tools/registry.js +3 -1
  120. package/dist/tools/registry.js.map +1 -1
  121. package/dist/tools/runCommand.js +154 -58
  122. package/dist/tools/runCommand.js.map +1 -1
  123. package/dist/tools/screenshot.js +35 -3
  124. package/dist/tools/screenshot.js.map +1 -1
  125. package/dist/tools/viewImage.js +88 -0
  126. package/dist/tools/viewImage.js.map +1 -0
  127. package/dist/tools/writeFile.js +9 -1
  128. package/dist/tools/writeFile.js.map +1 -1
  129. package/package.json +74 -74
@@ -0,0 +1,37 @@
1
+ /**
2
+ * pastedText.ts — how a large paste is stored, and how it is shown again.
3
+ *
4
+ * A paste is split three ways: the chat shows a short chip, the model gets the whole
5
+ * thing, and the TRANSCRIPT stores the model's copy. That last one is what a resumed
6
+ * session rebuilds the chat from, which is why the convention lives here beside the
7
+ * transcript rather than with the input that produces it — both the writer and the
8
+ * reader need it, and they are on opposite sides of the app.
9
+ */
10
+ /**
11
+ * Wrap a large paste so it can be told apart from what was typed.
12
+ *
13
+ * The chat shows a `[Pasted text …]` chip and the model gets the whole thing, which is
14
+ * the right split — but the model's copy is what the transcript stores, and a resumed
15
+ * session rebuilds the chat from that. Spliced in bare, the paste was indistinguishable
16
+ * from typing: `/continue` replayed thousands of lines into the chat as if the user had
17
+ * sat and typed them, which is the one place the collapse mattered most.
18
+ *
19
+ * A boundary is also better for the model than a bare splice. It says where the pasted
20
+ * material starts and stops, and that it was pasted rather than written — the same thing
21
+ * `<attached_file>` says about a file, in the same shape.
22
+ */
23
+ export function wrapPastedText(content) {
24
+ return `<pasted_text lines="${content.split("\n").length}">\n${content}\n</pasted_text>`;
25
+ }
26
+ /**
27
+ * Turn wrapped pastes back into their chips, for display.
28
+ *
29
+ * Collapsed, not removed — the counterpart to `stripAttachments`, and the difference is
30
+ * deliberate. An attached file was NAMED in the line the user typed, so its body can go
31
+ * entirely and the sentence still reads. A paste has no name: drop it and the message
32
+ * loses the only sign that anything was there.
33
+ */
34
+ export function collapsePastes(content) {
35
+ return content.replace(/<pasted_text lines="(\d+)">\n[\s\S]*?\n<\/pasted_text>/g, (_match, lines) => `[Pasted text +${lines} lines]`);
36
+ }
37
+ //# sourceMappingURL=pastedText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pastedText.js","sourceRoot":"","sources":["../../src/memory/pastedText.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,uBAAuB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,OAAO,OAAO,kBAAkB,CAAC;AAC3F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,OAAO,CAAC,OAAO,CACpB,yDAAyD,EACzD,CAAC,MAAM,EAAE,KAAa,EAAE,EAAE,CAAC,iBAAiB,KAAK,SAAS,CAC3D,CAAC;AACJ,CAAC"}
@@ -56,4 +56,51 @@ export function fullReadPaths(entries, resolve) {
56
56
  }
57
57
  return present;
58
58
  }
59
+ /**
60
+ * Absolute paths the model has WRITTEN or EDITED, from tool calls that succeeded.
61
+ *
62
+ * The companion to `fullReadPaths`, and needed for the same reason on resume: a file the
63
+ * model wrote last session is a file it has seen. Its whole content was in the call's own
64
+ * arguments, and an edit could only have happened after a read. Without this the
65
+ * read-before-overwrite gate refuses a file the model itself created, and the model
66
+ * re-reads it — appending another full copy to the transcript, which is the cost the
67
+ * ledger restore exists to stop.
68
+ *
69
+ * Failures are skipped: a write that was refused wrote nothing, and claiming it would
70
+ * open the gate on a file nobody has seen.
71
+ */
72
+ export function writtenPaths(entries, resolve) {
73
+ const callById = new Map();
74
+ for (const e of entries) {
75
+ if (e.role === "assistant" && e.toolCalls) {
76
+ for (const tc of e.toolCalls)
77
+ callById.set(tc.id, { name: tc.name, arguments: tc.arguments });
78
+ }
79
+ }
80
+ const written = new Set();
81
+ for (const e of entries) {
82
+ if (e.role !== "tool")
83
+ continue;
84
+ if (e.isError || e.content.startsWith("Error:"))
85
+ continue;
86
+ const call = callById.get(e.toolCallId ?? "");
87
+ if (!call || !WRITING_TOOLS.has(call.name))
88
+ continue;
89
+ let args;
90
+ try {
91
+ args = JSON.parse(call.arguments);
92
+ }
93
+ catch {
94
+ continue;
95
+ }
96
+ if (typeof args.path !== "string")
97
+ continue;
98
+ const abs = resolve(args.path);
99
+ if (abs)
100
+ written.add(abs);
101
+ }
102
+ return written;
103
+ }
104
+ /** Tools whose successful use means the model has seen the file it names. */
105
+ const WRITING_TOOLS = new Set(["write_file", "edit", "replace_symbol_body"]);
59
106
  //# sourceMappingURL=presence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"presence.js","sourceRoot":"","sources":["../../src/memory/presence.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB,EAAE,OAA6C;IAC3F,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+C,CAAC;IACxE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAC1C,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,SAAS;gBAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAChC,qFAAqF;QACrF,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,SAAS;QAE/C,iFAAiF;QACjF,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,mFAAmF;QACnF,iFAAiF;QACjF,gFAAgF;QAChF,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACjD,IAAI,IAA2D,CAAC;QAChE,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAgB,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,oCAAoC;QAChD,CAAC;QACD,yEAAyE;QACzE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACpE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"presence.js","sourceRoot":"","sources":["../../src/memory/presence.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import { promises as fs, existsSync } from "node:fs";
10
10
  import { randomUUID } from "node:crypto";
11
11
  import { resolvePath, nextTouch, canonicalRoot } from "../tools/paths.js";
12
12
  import { latestSession, listSessions, loadMeta, loadTranscript, loadSessionNotes } from "./store.js";
13
+ import { fullReadPaths, writtenPaths } from "./presence.js";
13
14
  import { startChassis } from "../alternator/lane.js";
14
15
  import { BackgroundShells } from "../tools/backgroundShells.js";
15
16
  import { Checkpoints } from "../tools/checkpoints.js";
@@ -197,10 +198,10 @@ export function forkSession(parent, task, opts = {}) {
197
198
  // which is the failing direction to pick.
198
199
  guardAllowed: undefined,
199
200
  // Cleared for the same reason, and it was missed when this one was added: a folder
200
- // the user allowed writing to is a judgement about work they were watching. Claude
201
- // Code draws the identical line when it scopes a child — it keeps the permissions
202
- // given on the command line and clears the SESSION ones, "to prevent unintended
203
- // leakage".
201
+ // the user allowed writing to is a judgement about work they were watching. The line
202
+ // to draw is between permissions the session was STARTED with, which describe the job
203
+ // and belong to every part of it, and permissions granted mid-session in answer to a
204
+ // question about one specific piece of work. Only the first kind is inherited.
204
205
  allowedOutsideDirs: undefined,
205
206
  // The parent's approved plan is NOT the child's work. Two things go wrong when it
206
207
  // rides along: the child is handed a binding instruction to follow a plan it was not
@@ -435,6 +436,9 @@ export async function resumeSession(cwd = process.cwd(), id) {
435
436
  }
436
437
  attachMcp(toolContext, cwd);
437
438
  await seedProjectMemoryRead(toolContext, projectMemory);
439
+ // What the model has already read is in the transcript it is about to be handed, so the
440
+ // ledger has to agree with it. See restoreReadLedger for what a stale ledger cost.
441
+ await restoreReadLedger(toolContext, transcript, meta.updatedAt ?? 0);
438
442
  return {
439
443
  id: meta.id,
440
444
  cwd,
@@ -469,4 +473,74 @@ export async function resumeSession(cwd = process.cwd(), id) {
469
473
  ...(meta.callLog ? { callLog: meta.callLog } : {}),
470
474
  };
471
475
  }
476
+ /**
477
+ * Put back what the model has ALREADY READ, on resume.
478
+ *
479
+ * The read ledger lives on the tool context, so `/continue` started with it empty while
480
+ * the transcript still carried whole files the model could plainly see. Everything
481
+ * downstream then disagreed with what was on screen: the read-before-overwrite gate
482
+ * refused ("hasn't been read this session") for a file whose contents were three
483
+ * messages up, and the read-dedup could not fire, so the model re-read it and appended a
484
+ * SECOND full copy to the transcript.
485
+ *
486
+ * That is a compounding cost, not a one-off. Every resume added another copy of the same
487
+ * file, so each `/continue` replayed a bigger transcript than the last — with a cold
488
+ * provider cache — and took longer than the last. Restoring the ledger is what stops the
489
+ * loop; the transcript was always the evidence, it just was not being read.
490
+ *
491
+ * SAFETY, and why this cannot simply trust the transcript. A file may have been edited on
492
+ * disk while the session was closed, and the copy in the transcript is then stale — so
493
+ * opening the write gate on it would let the model replace a file it has an out-of-date
494
+ * view of. A path is therefore only restored when the file has NOT been touched since the
495
+ * session was last saved. The failure direction is the safe one: a file that changed
496
+ * while away is re-read, exactly as it is today.
497
+ */
498
+ async function restoreReadLedger(ctx, transcript, savedAt) {
499
+ const resolve = (p) => {
500
+ try {
501
+ return resolvePath(ctx, p);
502
+ }
503
+ catch {
504
+ return undefined;
505
+ }
506
+ };
507
+ // READ **and** WRITTEN. A file the model wrote last session is a file it has seen: the
508
+ // whole content was in the call's own arguments, and an edit could only have followed a
509
+ // read. Restoring reads alone left the gate refusing files the model itself created,
510
+ // and it re-read them — appending another full copy of each, which is the exact cost
511
+ // this restore exists to remove.
512
+ const seen = new Set([...fullReadPaths(transcript, resolve), ...writtenPaths(transcript, resolve)]);
513
+ // When each file was last read or written, so freshness is judged per file rather than
514
+ // against the moment the session closed. A file touched after the model read it, but
515
+ // before the session ended, is stale — and comparing everything against one session-wide
516
+ // time cannot see that. Entries from before stamps existed fall back to the session's
517
+ // own save time, which is the best that can be said about them.
518
+ const lastSeenAt = new Map();
519
+ for (const entry of transcript) {
520
+ const at = entry.ts ?? savedAt;
521
+ for (const path of new Set([...fullReadPaths([entry], resolve), ...writtenPaths([entry], resolve)])) {
522
+ lastSeenAt.set(path, Math.max(lastSeenAt.get(path) ?? 0, at));
523
+ }
524
+ }
525
+ // Newest first, capped. An unbounded restore turns a long session's every mentioned
526
+ // file into a stat at startup, and the oldest of them are the least likely to be what
527
+ // the next turn is about.
528
+ const ordered = [...seen].sort((a, b) => (lastSeenAt.get(b) ?? 0) - (lastSeenAt.get(a) ?? 0));
529
+ for (const abs of ordered.slice(0, RESTORE_LEDGER_MAX)) {
530
+ try {
531
+ const st = await fs.stat(abs);
532
+ // Touched since the model last saw it: the transcript's copy may be stale, so it is
533
+ // left out and re-read. The failure direction is the safe one.
534
+ if (st.mtimeMs > (lastSeenAt.get(abs) ?? savedAt))
535
+ continue;
536
+ ctx.reads.set(abs, { mtimeMs: st.mtimeMs, size: st.size, full: true, touchedAt: nextTouch() });
537
+ }
538
+ catch {
539
+ // Gone from disk. Nothing to claim, and the model will find out when it looks.
540
+ }
541
+ }
542
+ }
543
+ /** How many files a resume puts back. Past this it stops being "where I was" and becomes
544
+ * a stat of the whole session's history at startup. */
545
+ const RESTORE_LEDGER_MAX = 100;
472
546
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/memory/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/memory/session.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ import { promises as fs } from "node:fs";
23
23
  import { homedir } from "node:os";
24
24
  import { join } from "node:path";
25
25
  import { writeFileAtomic } from "../tools/atomicWrite.js";
26
+ import { collapsePastes } from "./pastedText.js";
26
27
  /** Turn a project path into a single safe directory name (e.g. `D:\proj` → `D--proj`). */
27
28
  export function sanitizeProjectPath(cwd) {
28
29
  return cwd.replace(/[/\\:]+/g, "-").replace(/^-+|-+$/g, "") || "root";
@@ -87,8 +88,10 @@ function firstUserText(transcript) {
87
88
  function lastUserText(transcript) {
88
89
  for (let i = transcript.length - 1; i >= 0; i--) {
89
90
  const e = transcript[i];
91
+ // Collapsed, or a session that opened with a paste is labelled by the paste — or, once
92
+ // it is wrapped, by the wrapper. The label is meant to be the thing the person typed.
90
93
  if (e.role === "user" && !e.synthetic)
91
- return e.content.trim();
94
+ return collapsePastes(e.content).trim();
92
95
  }
93
96
  return "";
94
97
  }
@@ -104,6 +107,24 @@ export async function saveSession(session) {
104
107
  try {
105
108
  const dir = sessionDir(session.cwd);
106
109
  await fs.mkdir(dir, { recursive: true });
110
+ // Stamp anything not yet stamped, in place, on its way to disk.
111
+ //
112
+ // The stamp is what lets a resumed session judge each file on its OWN read rather
113
+ // than on when the session happened to close: a file touched after the model read it
114
+ // but before the session ended is stale, and without a per-entry time there is
115
+ // nothing to notice that with. Done here because it is the ONE place every entry
116
+ // passes through — stamping at the eighteen call sites that append to a transcript
117
+ // would be eighteen chances to forget.
118
+ //
119
+ // First save wins, so the time recorded is when the entry was written rather than
120
+ // when it was last persisted, and re-saving a long transcript never rewrites history.
121
+ // Entries from sessions written before this simply have no stamp, and everything
122
+ // reading it treats that as unknown rather than as zero.
123
+ const now = Date.now();
124
+ for (const e of session.transcript) {
125
+ if (e.ts === undefined)
126
+ e.ts = now;
127
+ }
107
128
  const lines = session.transcript.map((e) => JSON.stringify(e)).join("\n");
108
129
  // ATOMIC, like every other write in the project. `fs.writeFile` truncates the
109
130
  // destination and then streams the new bytes in, so between those two moments the
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAmGA;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAC7D,OAAO,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAqIA;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAC7D,OAAO,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;AAC/F,CAAC"}
@@ -26,7 +26,22 @@
26
26
  */
27
27
  import { promises as fs } from "node:fs";
28
28
  import { killTree, killTreeSync } from "./killTree.js";
29
- const MAX_BUFFER_CHARS = 5_000_000; // cap one shell's retained output (runaway server)
29
+ import { OutputReader, removeOutputFile, sizeOf } from "./commandOutput.js";
30
+ const MAX_BUFFER_CHARS = 5_000_000;
31
+ /** How often a running shell's output file is read. Fast enough that returns
32
+ * something current, slow enough to be free on a machine doing real work. */
33
+ const POLL_MS = 500;
34
+ /** How much one poll reads. A bound, not a budget: whatever is left arrives next tick. */
35
+ const POLL_READ_BYTES = 256 * 1024;
36
+ /**
37
+ * How large one shell's output file may grow before the shell is stopped.
38
+ *
39
+ * Backgrounded, nothing else limits it. The foreground timeout is gone, the child writes
40
+ * straight to the descriptor with nothing in the way, and a process stuck in an append
41
+ * loop will take the disk with it — which is a far worse outcome than losing the command.
42
+ */
43
+ const MAX_OUTPUT_BYTES = 2 * 1024 * 1024 * 1024;
44
+ const MAX_OUTPUT_DISPLAY = "2GB"; // cap one shell's retained output (runaway server)
30
45
  export const MAX_READ_CHARS = 30_000; // cap a single `shells` read
31
46
  const TAIL_CHARS = 2_000; // how much trailing output rides on a completion note
32
47
  /**
@@ -186,7 +201,7 @@ export class BackgroundShells {
186
201
  setOnChange(cb) {
187
202
  this.onChange = cb;
188
203
  }
189
- /** Take ownership of a live child process and start buffering its output. */
204
+ /** Take ownership of a live child process and the file it is writing into. */
190
205
  adopt(child, opts) {
191
206
  const id = ++this.seq;
192
207
  const entry = {
@@ -198,8 +213,10 @@ export class BackgroundShells {
198
213
  startedAt: Date.now(),
199
214
  finishedAt: null,
200
215
  child,
201
- buffer: "",
202
- readOffset: 0,
216
+ outputPath: opts.outputPath ?? null,
217
+ reader: opts.outputPath ? new OutputReader(opts.outputPath) : null,
218
+ seen: "",
219
+ handed: 0,
203
220
  truncated: false,
204
221
  notify: opts.notify ?? guessNotifyPolicy(opts.command),
205
222
  ready: false,
@@ -209,12 +226,25 @@ export class BackgroundShells {
209
226
  readyReported: false,
210
227
  readyUiNotified: false,
211
228
  readyTimer: null,
229
+ pollTimer: null,
212
230
  cwdFile: opts.cwdFile,
213
231
  tempFile: opts.tempFile,
214
232
  };
215
233
  this.shells.set(id, entry);
216
- if (opts.initial)
217
- this.append(entry, opts.initial);
234
+ if (opts.outputPath) {
235
+ // The child already has this file as its output and keeps writing to it, so nothing
236
+ // is attached and nothing is copied — the reader starts at the beginning, which
237
+ // means everything printed before the hand-off is still there to be read.
238
+ this.poll(entry);
239
+ }
240
+ else if (child.stdout || child.stderr) {
241
+ // A child spawned with pipes by someone else. Its output has nowhere to go unless
242
+ // something drains it — and an undrained pipe does not merely lose output, it STOPS
243
+ // the process once the kernel buffer fills. Reading it is what keeps it alive.
244
+ const collect = (chunk) => this.append(entry, chunk.toString());
245
+ child.stdout?.on("data", collect);
246
+ child.stderr?.on("data", collect);
247
+ }
218
248
  // The readiness signal. A server that is still alive after the startup grace has
219
249
  // come up, and that is the one positive event worth reporting for something that
220
250
  // never "finishes". Without it the model was told to promise a report it could not
@@ -230,9 +260,6 @@ export class BackgroundShells {
230
260
  }, this.startupGraceMs);
231
261
  entry.readyTimer.unref?.();
232
262
  }
233
- const collect = (chunk) => this.append(entry, chunk.toString("utf8"));
234
- child.stdout?.on("data", collect);
235
- child.stderr?.on("data", collect);
236
263
  // `signal` is captured, not dropped: a process ended by SIGTERM/SIGINT reports
237
264
  // `code === null`, and without the signal there is no way to tell that from a
238
265
  // crash.
@@ -248,12 +275,44 @@ export class BackgroundShells {
248
275
  this.emit();
249
276
  return view(entry);
250
277
  }
278
+ /**
279
+ * Follow one shell's output file while it runs.
280
+ *
281
+ * A poll rather than a watch, because the point of the file is that nothing has to be
282
+ * listening for the child to keep working. Missing a tick costs nothing: the next one
283
+ * reads everything since, and the reader carries a partial character across the gap.
284
+ *
285
+ * It also guards the disk. Backgrounded, the only limit on what a stuck append loop can
286
+ * write is free space, and there is no foreground timeout left to stop it — so a file
287
+ * past the ceiling ends its process rather than the machine.
288
+ */
289
+ poll(entry) {
290
+ const tick = async () => {
291
+ if (entry.status !== "running" || !entry.reader)
292
+ return;
293
+ const chunk = await entry.reader.next(POLL_READ_BYTES);
294
+ if (chunk)
295
+ this.append(entry, chunk);
296
+ if (entry.outputPath && (await sizeOf(entry.outputPath)) > MAX_OUTPUT_BYTES) {
297
+ this.append(entry, `
298
+ [output passed ${MAX_OUTPUT_DISPLAY}; the command was stopped]
299
+ `);
300
+ this.kill(entry.id, "system");
301
+ }
302
+ };
303
+ const timer = setInterval(() => void tick(), POLL_MS);
304
+ timer.unref?.();
305
+ entry.pollTimer = timer;
306
+ }
251
307
  append(entry, text) {
252
- entry.buffer += text;
253
- if (entry.buffer.length > MAX_BUFFER_CHARS) {
254
- // Keep the tail — the recent output is what matters for tests/errors.
255
- entry.buffer = entry.buffer.slice(entry.buffer.length - MAX_BUFFER_CHARS);
256
- entry.readOffset = Math.min(entry.readOffset, entry.buffer.length);
308
+ entry.seen += text;
309
+ if (entry.seen.length > MAX_BUFFER_CHARS) {
310
+ // Keep the tail — the recent output is what matters for tests and errors.
311
+ const cut = entry.seen.length - MAX_BUFFER_CHARS;
312
+ entry.seen = entry.seen.slice(cut);
313
+ // The handed mark moves with the text it points into. Left alone it would point past
314
+ // the end after a trim and every later read would return nothing.
315
+ entry.handed = Math.max(0, entry.handed - cut);
257
316
  entry.truncated = true;
258
317
  }
259
318
  }
@@ -268,6 +327,28 @@ export class BackgroundShells {
268
327
  entry.child = null;
269
328
  if (by)
270
329
  entry.stoppedBy = by;
330
+ if (entry.pollTimer) {
331
+ clearInterval(entry.pollTimer);
332
+ entry.pollTimer = null;
333
+ }
334
+ // ONE more read, after the process is gone.
335
+ //
336
+ // A command writes right up to the moment it exits, and the last poll was up to half
337
+ // a second before that. Stopping here without this loses whatever it said last — which
338
+ // for a build or a test run is the entire point: the failing assertion, the summary,
339
+ // the exit reason. Then the file goes, since everything in it is now held in .
340
+ if (entry.reader && entry.outputPath) {
341
+ const reader = entry.reader;
342
+ const path = entry.outputPath;
343
+ void (async () => {
344
+ const rest = await reader.next(MAX_BUFFER_CHARS);
345
+ if (rest) {
346
+ this.append(entry, rest);
347
+ this.emit();
348
+ }
349
+ removeOutputFile(path);
350
+ })();
351
+ }
271
352
  if (entry.readyTimer) {
272
353
  clearTimeout(entry.readyTimer);
273
354
  entry.readyTimer = null;
@@ -298,8 +379,14 @@ export class BackgroundShells {
298
379
  const entry = this.shells.get(id);
299
380
  if (!entry)
300
381
  return null;
301
- let chunk = entry.buffer.slice(entry.readOffset);
302
- entry.readOffset = entry.buffer.length;
382
+ // Read the file NOW rather than trusting the poll to have caught up. A read arriving
383
+ // between ticks would otherwise miss whatever was written in the gap, which is exactly
384
+ // the output somebody asked for.
385
+ const fresh = entry.reader ? await entry.reader.next(POLL_READ_BYTES) : "";
386
+ if (fresh)
387
+ this.append(entry, fresh);
388
+ let chunk = entry.seen.slice(entry.handed);
389
+ entry.handed = entry.seen.length;
303
390
  if (chunk.length > MAX_READ_CHARS) {
304
391
  chunk = `… (earlier output omitted)\n${chunk.slice(chunk.length - MAX_READ_CHARS)}`;
305
392
  }
@@ -369,7 +456,7 @@ export class BackgroundShells {
369
456
  */
370
457
  async drainEvents() {
371
458
  const out = [];
372
- const tailOf = (entry) => entry.buffer.slice(Math.max(0, entry.buffer.length - TAIL_CHARS));
459
+ const tailOf = (entry) => entry.seen.slice(Math.max(0, entry.seen.length - TAIL_CHARS));
373
460
  for (const entry of this.shells.values()) {
374
461
  if (entry.ready && !entry.readyReported) {
375
462
  entry.readyReported = true;
@@ -431,7 +518,7 @@ function view(e) {
431
518
  ...(e.signal ? { signal: e.signal } : {}),
432
519
  ...(e.stoppedBy ? { stoppedBy: e.stoppedBy } : {}),
433
520
  ...(e.truncated ? { truncated: true } : {}),
434
- ...(detectPort(e.buffer) !== undefined ? { port: detectPort(e.buffer) } : {}),
521
+ ...(detectPort(e.seen) !== undefined ? { port: detectPort(e.seen) } : {}),
435
522
  };
436
523
  }
437
524
  /** Kill any background processes still running when the process exits. */
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundShells.js","sourceRoot":"","sources":["../../src/tools/backgroundShells.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backgroundShells.js","sourceRoot":"","sources":["../../src/tools/backgroundShells.ts"],"names":[],"mappings":"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"}