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,207 @@
1
+ /**
2
+ * commandOutput.ts — where a command's output goes while it runs.
3
+ *
4
+ * A FILE, opened before the spawn and handed to the child as its stdout and stderr. The
5
+ * child writes to it directly; the bytes never pass through this process at all.
6
+ *
7
+ * ## Why not pipes
8
+ *
9
+ * Pipes were the obvious thing and they carry three problems that a file does not.
10
+ *
11
+ * A pipe has a fixed kernel buffer, a few tens of kilobytes. It only drains while
12
+ * something is reading, so the moment nothing is, the child BLOCKS on its next write —
13
+ * not slowed, stopped, indefinitely, in a way that looks exactly like a hang. Every place
14
+ * that detaches a reader has to remember to attach another one, and getting that wrong is
15
+ * invisible until a chatty command deadlocks.
16
+ *
17
+ * Output also had to be held in memory, so a long build's scrollback was this process's
18
+ * heap, and handing a command to the background meant handing over the job of draining it
19
+ * forever.
20
+ *
21
+ * With a file, none of those exist. The child never blocks, memory is flat however much
22
+ * it prints, backgrounding is just closing our end, and the output survives a crash.
23
+ *
24
+ * ## Both streams, one file
25
+ *
26
+ * stdout and stderr are given the SAME descriptor, so the two interleave in the order
27
+ * they were actually written rather than being reassembled afterwards. On POSIX the file
28
+ * is opened `O_APPEND`, which makes each write atomic — seek-to-end and write in one
29
+ * step, so two streams cannot tear each other's lines apart.
30
+ *
31
+ * ## Reading it back
32
+ *
33
+ * Nothing here ever reads a whole file. A command that prints for ten minutes can leave
34
+ * gigabytes; the head and the tail are what anyone wants and the middle is named rather
35
+ * than loaded. Every read is a bounded range.
36
+ */
37
+ import { promises as fs } from "node:fs";
38
+ import { open } from "node:fs/promises";
39
+ import { randomBytes } from "node:crypto";
40
+ import { tmpdir } from "node:os";
41
+ import { join } from "node:path";
42
+ import { StringDecoder } from "node:string_decoder";
43
+ /**
44
+ * `mindweave-` so the startup sweep collects anything a crash left behind — see
45
+ * tempSweep.ts, which owns every prefix this process writes into the temp directory.
46
+ */
47
+ const PREFIX = "mindweave-out-";
48
+ /**
49
+ * Open a fresh output file.
50
+ *
51
+ * The flags differ by platform and both are deliberate.
52
+ *
53
+ * POSIX gets `O_APPEND` so the two streams sharing this descriptor cannot interleave
54
+ * mid-line, and `O_NOFOLLOW` so a symlink planted at the path cannot redirect a
55
+ * command's output somewhere it should not go.
56
+ *
57
+ * Windows gets plain `w`. Opening for append there grants `FILE_APPEND_DATA` without
58
+ * `FILE_WRITE_DATA`, and a process running under MSYS2 or Cygwin inspects the handle it
59
+ * inherited, decides it is read-only, and discards everything it writes — silently, with
60
+ * an empty output file and no error anywhere.
61
+ */
62
+ export async function createOutputFile() {
63
+ const path = join(tmpdir(), `${PREFIX}${randomBytes(8).toString("hex")}.log`);
64
+ const handle = await open(path, process.platform === "win32"
65
+ ? "w"
66
+ : // eslint-disable-next-line no-bitwise
67
+ fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_APPEND | (fs.constants.O_NOFOLLOW ?? 0));
68
+ return { path, handle };
69
+ }
70
+ /** Size in bytes, or 0 for a file that does not exist yet. */
71
+ export async function sizeOf(path) {
72
+ try {
73
+ const s = await fs.stat(path);
74
+ return s.size;
75
+ }
76
+ catch {
77
+ // Nothing written yet, or already cleaned up.
78
+ return 0;
79
+ }
80
+ }
81
+ /** Remove an output file. Best-effort: a leftover is swept at the next startup. */
82
+ export function removeOutputFile(path) {
83
+ void fs.rm(path, { force: true }).catch(() => { });
84
+ }
85
+ /**
86
+ * Drop bytes at the front that are the tail of a character starting before them.
87
+ *
88
+ * Every range read here begins at an arbitrary byte offset, which lands mid-character
89
+ * about as often as a build prints anything but ASCII. Decoding from there produces a
90
+ * replacement character at the start of the text — a visible corruption on the first row
91
+ * of every progress update, forever.
92
+ *
93
+ * A UTF-8 continuation byte is `10xxxxxx`; at most three can precede a start byte.
94
+ */
95
+ function skipPartialLead(buf) {
96
+ let i = 0;
97
+ while (i < buf.length && i < 3 && (buf[i] & 0xc0) === 0x80)
98
+ i++;
99
+ return buf.subarray(i);
100
+ }
101
+ /** Read a byte range and decode it, tolerating a boundary mid-character at either end. */
102
+ async function readRange(path, start, length) {
103
+ if (length <= 0)
104
+ return "";
105
+ let handle;
106
+ try {
107
+ handle = await open(path, "r");
108
+ const buf = Buffer.alloc(length);
109
+ const { bytesRead } = await handle.read(buf, 0, length, start);
110
+ // A decoder rather than toString, so a character split across the END of the range is
111
+ // held back instead of becoming a replacement character.
112
+ const decoder = new StringDecoder("utf8");
113
+ return decoder.write(skipPartialLead(buf.subarray(0, bytesRead)));
114
+ }
115
+ catch {
116
+ return "";
117
+ }
118
+ finally {
119
+ await handle?.close().catch(() => { });
120
+ }
121
+ }
122
+ /**
123
+ * The last `bytes` of the file, for a glance at what a running command is doing.
124
+ *
125
+ * A byte budget, not a line count, because the caller wants a bounded read and the file
126
+ * may have no newlines at all. Trimming to whole lines is the caller's job.
127
+ */
128
+ export async function tailOf(path, bytes) {
129
+ const size = await sizeOf(path);
130
+ const start = Math.max(0, size - bytes);
131
+ return readRange(path, start, Math.min(bytes, size));
132
+ }
133
+ /**
134
+ * The head and the tail of the file, with the middle named rather than loaded.
135
+ *
136
+ * Both ends, weighted toward the tail, because a build or a test run puts its banner and
137
+ * its progress at the start and its diagnosis — the failing assertion, the stack, the
138
+ * count — at the very end. Keeping only the first N characters throws away the half that
139
+ * says what happened.
140
+ *
141
+ * The budgets are in BYTES here, where the caller thinks in characters. For anything but
142
+ * ASCII a byte budget yields slightly fewer characters, which is the safe direction: the
143
+ * read stays bounded and the caller is never handed more than it asked for.
144
+ */
145
+ export async function composeFileOutput(path, headBytes, tailBytes) {
146
+ const size = await sizeOf(path);
147
+ if (size <= headBytes + tailBytes) {
148
+ return { text: await readRange(path, 0, size), dropped: 0 };
149
+ }
150
+ const head = await readRange(path, 0, headBytes);
151
+ const tail = await readRange(path, size - tailBytes, tailBytes);
152
+ const dropped = size - headBytes - tailBytes;
153
+ // The same wording the in-memory path used, because it is what the MODEL reads: a gap
154
+ // named one way here and another way elsewhere is a difference it has to account for.
155
+ // Bytes rather than characters, since bytes are what was actually skipped.
156
+ return { text: `${head}\n… [${dropped.toLocaleString("en-US")} bytes omitted from the middle] …\n${tail}`, dropped };
157
+ }
158
+ /**
159
+ * An incremental reader over one file, for a background shell.
160
+ *
161
+ * Holds a byte offset and a decoder. The decoder is the point: a read almost always ends
162
+ * mid-character, and without one carrying those bytes to the next read every chunk
163
+ * boundary would corrupt a character. It cannot be recreated per read for the same
164
+ * reason.
165
+ */
166
+ export class OutputReader {
167
+ path;
168
+ #offset = 0;
169
+ #decoder = new StringDecoder("utf8");
170
+ constructor(path) {
171
+ this.path = path;
172
+ }
173
+ /** Everything written since the last call. Empty when nothing is new. */
174
+ async next(maxBytes) {
175
+ const size = await sizeOf(this.path);
176
+ if (size <= this.#offset) {
177
+ // Truncated or replaced under us — start again rather than reading past the end.
178
+ if (size < this.#offset)
179
+ this.#offset = size;
180
+ return "";
181
+ }
182
+ const length = Math.min(maxBytes, size - this.#offset);
183
+ let handle;
184
+ try {
185
+ handle = await open(this.path, "r");
186
+ const buf = Buffer.alloc(length);
187
+ const { bytesRead } = await handle.read(buf, 0, length, this.#offset);
188
+ this.#offset += bytesRead;
189
+ return this.#decoder.write(buf.subarray(0, bytesRead));
190
+ }
191
+ catch {
192
+ return "";
193
+ }
194
+ finally {
195
+ await handle?.close().catch(() => { });
196
+ }
197
+ }
198
+ /** Skip to the end without returning anything — for a reader that only wants what is next. */
199
+ async seekToEnd() {
200
+ this.#offset = await sizeOf(this.path);
201
+ }
202
+ /** How far this reader has got, in bytes. */
203
+ get offset() {
204
+ return this.#offset;
205
+ }
206
+ }
207
+ //# sourceMappingURL=commandOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandOutput.js","sourceRoot":"","sources":["../../src/tools/commandOutput.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * a diff or a command's stdout. Lines are prefixed so the
9
9
  * renderer can colour them: `+ ` added (green), `- ` removed (red), bare = plain.
10
10
  */
11
- import { condense, tailCap } from "./outputShape.js";
11
+ import { capEnds, condense } from "./outputShape.js";
12
12
  /** Cap a list of display lines, noting how many were hidden. */
13
13
  export function capLines(lines, max) {
14
14
  if (lines.length <= max)
@@ -116,7 +116,7 @@ export const SHELL_ROWS_FAILED = 12;
116
116
  export function shellOutput(body, max) {
117
117
  if (!body)
118
118
  return "";
119
- return tailCap(condense(collapseBlanks(stripAnsi(body).split("\n"))), max).join("\n");
119
+ return capEnds(condense(collapseBlanks(stripAnsi(body).split("\n"))), max).join("\n");
120
120
  }
121
121
  /**
122
122
  * The two outcome marks.
@@ -1 +1 @@
1
- {"version":3,"file":"detail.js","sourceRoot":"","sources":["../../src/tools/detail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detail.js","sourceRoot":"","sources":["../../src/tools/detail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAErD,gEAAgE;AAChE,MAAM,UAAU,QAAQ,CAAC,KAAe,EAAE,GAAW;IACnD,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IAClC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,MAAM,aAAa,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpG,CAAC;AAED,mFAAmF;AACnF,6EAA6E;AAE7E,qEAAqE;AACrE,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC7C,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,OAAe;IAC3D,OAAO,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;AAC5E,CAAC;AAED;0DAC0D;AAC1D,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,KAAa;IACtD,OAAO,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;AACjC,CAAC;AAED;yEACyE;AACzE,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,IAAY;IACnD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,MAAc;IACvD,MAAM,KAAK,GAAG;QACZ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACjE,CAAC;IACF,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,eAAe,CAAC,KAAiD;IAC/E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACpC,uFAAuF;AACvF,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,uBAAuB,GAAG,QAAQ,GAAG,uBAAuB,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;AAE9G;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAAe;IAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YAAE,SAAS;QAC7F,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IACvE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;6DAC6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B;oEACoE;AACpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,GAAW;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,IAAI,OAAO,GAAG,IAAI;QAAE,OAAO,GAAG,OAAO,IAAI,CAAC;IAC1C,IAAI,OAAO,GAAG,MAAM;QAAE,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IACtD,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,QAAiB,EACjB,QAAuB,EACvB,MAAqB,EACrB,SAAiB,EACjB,SAAiB,EACjB,GAAY;IAEZ,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,QAAQ;QACnB,CAAC,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;QACtD,CAAC,CAAC,MAAM;YACN,CAAC,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE;YAC/B,CAAC,CAAC,QAAQ,KAAK,IAAI;gBACjB,CAAC,CAAC,iBAAiB,IAAI,EAAE;gBACzB,CAAC,CAAC,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;IAC3D,+EAA+E;IAC/E,sFAAsF;IACtF,yEAAyE;IACzE,MAAM,MAAM,GAAG,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC;IAC3C,MAAM,MAAM,GACV,MAAM,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,MAAM,IAAI,SAAS,yBAAyB,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACrD,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAS;IACrC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * openDefault.ts — a command that names a browser is rewritten to use the user's own.
3
+ *
4
+ * Opening a file "in a browser" to show it to someone has exactly one correct target: the
5
+ * browser they actually use. A model does not know which that is, so it guesses a name it
6
+ * has seen before — `msedge` on Windows — and a window opens in an application the user
7
+ * may never have chosen, next to the browser they already had open.
8
+ *
9
+ * Telling the model not to do that does not work. It was tried as a line in run_command's
10
+ * description, which is the most-read place a rule can sit, and the very next run still
11
+ * launched Edge by name. A rule a model has to remember under load is a rule that gets
12
+ * dropped, so this is the mechanical version: the command is rewritten on the way to the
13
+ * shell, and there is nothing left to remember.
14
+ *
15
+ * WHAT IS DELIBERATELY LEFT ALONE. A browser invoked with flags is not someone being shown
16
+ * a page — it is automation (`--headless` for a render, a profile for a test) where the
17
+ * specific binary is the point. Rewriting that would break real work to fix a presentation
18
+ * problem, so anything carrying flags passes through untouched.
19
+ */
20
+ /** Browser executables a model reaches for, matched on the program name alone. */
21
+ const BROWSERS = new Set([
22
+ "msedge",
23
+ "microsoft-edge",
24
+ "chrome",
25
+ "googlechrome",
26
+ "google-chrome",
27
+ "chromium",
28
+ "firefox",
29
+ "iexplore",
30
+ "brave",
31
+ "opera",
32
+ "vivaldi",
33
+ "safari",
34
+ ]);
35
+ /** Words that only introduce a command; the program being launched is what follows. */
36
+ const LAUNCHERS = new Set(["start", "start-process", "&", "cmd", "/c", "/k", "-filepath"]);
37
+ /** Split on whitespace, keeping quoted runs together and remembering nothing else. */
38
+ function tokenize(command) {
39
+ return command.match(/"[^"]*"|'[^']*'|\S+/g) ?? [];
40
+ }
41
+ const unquote = (s) => (s.startsWith('"') && s.endsWith('"')) || (s.startsWith("'") && s.endsWith("'")) ? s.slice(1, -1) : s;
42
+ /** The program name from a token that may be a bare name or a full path, with or without
43
+ * an extension: `msedge`, `msedge.exe`, `"C:\...\Application\chrome.exe"`. */
44
+ function programName(token) {
45
+ const bare = unquote(token);
46
+ const base = bare.split(/[\\/]/).pop() ?? bare;
47
+ return base.replace(/\.exe$/i, "").toLowerCase();
48
+ }
49
+ /** The command that hands something to the system to open with whatever the user has set. */
50
+ function openWith(target, platform) {
51
+ const quoted = `"${target}"`;
52
+ if (platform === "win32")
53
+ return `Start-Process ${quoted}`;
54
+ if (platform === "darwin")
55
+ return `open ${quoted}`;
56
+ return `xdg-open ${quoted}`;
57
+ }
58
+ /**
59
+ * If `command` launches a named browser on one file or URL, the equivalent that opens it
60
+ * in the user's default application instead. Null when the command is anything else —
61
+ * including a browser run with flags, which is automation rather than a page being shown.
62
+ */
63
+ export function defaultOpenRewrite(command, platform = process.platform) {
64
+ // A CHAIN is the shape this actually arrives in, and refusing to touch chains is why
65
+ // the first version of this never fired once in real use. What the model writes is
66
+ //
67
+ // Start-Process msedge file:///…/mockup.html; Start-Sleep -Seconds 3
68
+ //
69
+ // — launch, then wait for the window to appear — so the only form that mattered was
70
+ // the one being skipped. Each link is rewritten on its own and the rest is passed
71
+ // through untouched, which is both safer and more useful than declining the lot.
72
+ const links = splitChain(command);
73
+ if (links.length > 1) {
74
+ let found;
75
+ const rebuilt = links.map((link) => {
76
+ if (link.separator)
77
+ return link.text;
78
+ const one = rewriteOne(link.text.trim(), platform);
79
+ if (!one)
80
+ return link.text;
81
+ if (!found)
82
+ found = one;
83
+ // Keep the original spacing around the link so the chain reads as it was written.
84
+ return link.text.replace(link.text.trim(), one.command);
85
+ });
86
+ return found ? { browser: found.browser, target: found.target, command: rebuilt.join("") } : null;
87
+ }
88
+ return rewriteOne(command.trim(), platform);
89
+ }
90
+ /** One link of a chain, or the separator between two. Quotes are respected, so a
91
+ * semicolon inside a path is not mistaken for the end of a command. */
92
+ function splitChain(command) {
93
+ const parts = [];
94
+ let buf = "";
95
+ let quote = null;
96
+ for (let i = 0; i < command.length; i++) {
97
+ const ch = command[i];
98
+ if (quote) {
99
+ buf += ch;
100
+ if (ch === quote)
101
+ quote = null;
102
+ continue;
103
+ }
104
+ if (ch === '"' || ch === "'") {
105
+ quote = ch;
106
+ buf += ch;
107
+ continue;
108
+ }
109
+ const two = command.slice(i, i + 2);
110
+ if (ch === ";" || two === "&&" || two === "||" || (ch === "|" && command[i + 1] !== "|")) {
111
+ const sep = ch === ";" || ch === "|" ? ch : two;
112
+ parts.push({ text: buf, separator: false });
113
+ parts.push({ text: sep, separator: true });
114
+ buf = "";
115
+ i += sep.length - 1;
116
+ continue;
117
+ }
118
+ buf += ch;
119
+ }
120
+ parts.push({ text: buf, separator: false });
121
+ return parts;
122
+ }
123
+ /** The rewrite for a single command with no chaining in it. */
124
+ function rewriteOne(command, platform) {
125
+ const tokens = tokenize(command.trim());
126
+ if (tokens.length < 2)
127
+ return null;
128
+ let i = 0;
129
+ while (i < tokens.length && LAUNCHERS.has(programName(tokens[i])))
130
+ i++;
131
+ // `start "" chrome url` — cmd's title argument, an empty quoted string.
132
+ while (i < tokens.length && unquote(tokens[i]) === "")
133
+ i++;
134
+ if (i >= tokens.length)
135
+ return null;
136
+ const browser = programName(tokens[i]);
137
+ if (!BROWSERS.has(browser))
138
+ return null;
139
+ const rest = tokens.slice(i + 1).map(unquote).filter((t) => t !== "");
140
+ // Flags mean automation; leave it alone. `-ArgumentList` is PowerShell's way of passing
141
+ // the same single target, so it is skipped rather than treated as a flag.
142
+ const args = rest.filter((t) => t.toLowerCase() !== "-argumentlist");
143
+ if (args.length !== 1)
144
+ return null;
145
+ const target = args[0];
146
+ if (target.startsWith("-") || target.startsWith("/"))
147
+ return null;
148
+ return { command: openWith(target, platform), browser, target };
149
+ }
150
+ //# sourceMappingURL=openDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openDefault.js","sourceRoot":"","sources":["../../src/tools/openDefault.ts"],"names":[],"mappings":"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"}
@@ -121,17 +121,42 @@ export function condense(lines) {
121
121
  return stripTimestamps(stripCommonPrefix(lines));
122
122
  }
123
123
  /**
124
- * Keep the last `max` lines, naming what was dropped.
124
+ * Keep the first line and the last `max - 1`, naming what was dropped between them.
125
125
  *
126
- * The notice goes ABOVE the kept lines, where it reads as "this is the end of something
127
- * longer". Below them it reads as more output, which is how the old middle-drop marker
128
- * ended up looking like a line the command had printed.
126
+ * The tail alone was not enough, and the case that showed it is worth stating. A
127
+ * scaffolder — `npm create`, a generator, an installer — announces what it BUILT in its
128
+ * opening line and finishes with boilerplate about what you might do next. Capped from
129
+ * the end, a command that wrote an entire project directory displayed three lines of
130
+ * advice about Android builds, and the twenty files it had just created were never
131
+ * mentioned on screen at all. The user's next sight of them was a write being refused
132
+ * because a file "already exists", about files they had never seen created.
133
+ *
134
+ * So the first line is kept. One row, and it is the row that says what a command that
135
+ * SUCCEEDED actually did — where a failure keeps saying its news at the end, which the
136
+ * remaining budget still covers in full.
137
+ *
138
+ * The notice sits directly ABOVE the tail, unchanged: there it reads as "this is the end
139
+ * of something longer", where below them it reads as more output — which is how an
140
+ * earlier middle-drop marker ended up looking like a line the command had printed. The
141
+ * opening line above it is not that; it is where the output genuinely starts.
129
142
  */
130
- export function tailCap(lines, max) {
143
+ export function capEnds(lines, max) {
131
144
  const limit = Math.max(1, max);
132
145
  if (lines.length <= limit)
133
146
  return lines;
147
+ // No room for both ends: one line of budget can only be the end, which is where a
148
+ // failure's news is, and a failure is the case that cannot afford to lose it.
149
+ if (limit === 1) {
150
+ const dropped = lines.length - 1;
151
+ return [`… ${dropped.toLocaleString("en-US")} earlier line${dropped === 1 ? "" : "s"} hidden`, ...lines.slice(-1)];
152
+ }
153
+ const head = lines[0];
154
+ const tail = lines.slice(-(limit - 1));
134
155
  const hidden = lines.length - limit;
135
- return [`… ${hidden.toLocaleString("en-US")} earlier line${hidden === 1 ? "" : "s"} hidden`, ...lines.slice(-limit)];
156
+ // Every line accounted for. Nothing hidden between the two ends means they meet, and a
157
+ // notice claiming "0 lines hidden" would be a hole reported where there is none.
158
+ if (hidden <= 0)
159
+ return [head, ...tail];
160
+ return [head, `… ${hidden.toLocaleString("en-US")} earlier line${hidden === 1 ? "" : "s"} hidden`, ...tail];
136
161
  }
137
162
  //# sourceMappingURL=outputShape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outputShape.js","sourceRoot":"","sources":["../../src/tools/outputShape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,6DAA6D;AAC7D,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,mEAAmE;AACnE,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B;0CAC0C;AAC1C,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB;;8EAE8E;AAC9E,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB;oDACoD;AACpD,MAAM,MAAM,GAAG,QAAQ,CAAC;AAExB;;;;;;;GAOG;AACH,MAAM,iBAAiB,GACrB,gHAAgH,CAAC;AAEnH;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,GAAuB,CAAC;IAC5B,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnC,IAAI,IAAI,GAAG,UAAU;YAAE,MAAM;QAC7B,iFAAiF;QACjF,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM;QAC/B,GAAG,GAAG,IAAI,CAAC;IACb,CAAC;IACD,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAe;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,MAAM,GAAG,oBAAoB;QAAE,OAAO,KAAK,CAAC;IAEvD,qFAAqF;IACrF,qEAAqE;IACrE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,IAAwB,CAAC;IAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,qFAAqF;QACrF,4DAA4D;QAC5D,IAAI,KAAK,GAAG,SAAS,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAClG,IAAI,GAAG,IAAI,CAAC;YACZ,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5F,MAAM,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;0EAC0E;AAC1E,MAAM,UAAU,eAAe,CAAC,KAAe;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;IAC3D,oFAAoF;IACpF,+EAA+E;IAC/E,wEAAwE;IACxE,IAAI,MAAM,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,MAAM;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,QAAQ,CAAC,KAAe;IACtC,OAAO,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,KAAe,EAAE,GAAW;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IACpC,OAAO,CAAC,KAAK,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACvH,CAAC"}
1
+ {"version":3,"file":"outputShape.js","sourceRoot":"","sources":["../../src/tools/outputShape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * pathList.ts — the files one tool call asked for.
3
+ *
4
+ * Its own module because TWO things need the answer and they must not disagree: the
5
+ * tool that reads the files, and the row that says which files are being read.
6
+ *
7
+ * They did disagree. The tool accepts the list under `paths` or the older singular
8
+ * `path`, as a list or as a bare string — deliberately, because a resumed session
9
+ * replays calls the model made under the previous schema, and refusing those would turn
10
+ * every restore into a wall of errors. The display accepted a narrower set. So a call
11
+ * that passed four files under `path` read all four and rendered as `Reading 1 file`
12
+ * with no filenames: the header contradicting its own result, and the one line that
13
+ * would have said WHICH files simply absent.
14
+ *
15
+ * A lenient reader and a strict display is a bug waiting to happen every time either
16
+ * side moves. One function, both callers.
17
+ */
18
+ /**
19
+ * Every path in `args`, in order, however the call happened to spell it (pure).
20
+ *
21
+ * Empty and whitespace-only entries are dropped: they are not files, and a blank
22
+ * name in a row is indistinguishable from a rendering fault.
23
+ */
24
+ export function toPathList(args) {
25
+ const raw = args["paths"] ?? args["path"];
26
+ if (typeof raw === "string")
27
+ return raw.trim() ? [raw] : [];
28
+ if (!Array.isArray(raw))
29
+ return [];
30
+ return raw.filter((v) => typeof v === "string" && v.trim().length > 0);
31
+ }
32
+ //# sourceMappingURL=pathList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathList.js","sourceRoot":"","sources":["../../src/tools/pathList.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAA6B;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtF,CAAC"}
@@ -19,6 +19,9 @@ import { chassisForPath } from "./chassisMux.js";
19
19
  import { renderOutlineEntries } from "./codeIntel.js";
20
20
  import { estimateTokens } from "../memory/compaction.js";
21
21
  import { failQuietly } from "./results.js";
22
+ // Shared with the row that displays the call, so what is read and what is named can
23
+ // never disagree about which files a call asked for. See pathList.ts.
24
+ import { toPathList } from "./pathList.js";
22
25
  // Caps protect the model's context window, not the disk. They are deliberately
23
26
  // MODEL-AGNOSTIC fixed defaults, not derived from any one model's context window —
24
27
  // so they stay correct as other models are added.
@@ -323,21 +326,6 @@ async function readOne(rawPath, ctx, offset, limit) {
323
326
  ...(wholeFileSent ? { fullPath: filePath } : {}),
324
327
  };
325
328
  }
326
- /**
327
- * The paths one call asked for.
328
- *
329
- * Accepts a bare string as well as a list, and still reads the old singular `path`,
330
- * because a resumed session replays tool calls the model made under the previous schema
331
- * — refusing those would turn every `/continue` into a wall of errors.
332
- */
333
- function toPathList(args) {
334
- const raw = args.paths ?? args.path;
335
- if (typeof raw === "string")
336
- return raw.trim() ? [raw] : [];
337
- if (!Array.isArray(raw))
338
- return [];
339
- return raw.filter((v) => typeof v === "string" && v.trim().length > 0);
340
- }
341
329
  /** A positive integer from an env var, or `fallback`. Lets caps be tuned without
342
330
  * baking any one model's limits into the code. */
343
331
  function envInt(name, fallback) {
@@ -1 +1 @@
1
- {"version":3,"file":"readFile.js","sourceRoot":"","sources":["../../src/tools/readFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readFile.js","sourceRoot":"","sources":["../../src/tools/readFile.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { readSymbolTool } from "./readSymbol.js";
8
8
  import { replaceSymbolBody } from "./replaceSymbol.js";
9
9
  import { web } from "./web.js";
10
10
  import { screenshot } from "./screenshot.js";
11
+ import { viewImage } from "./viewImage.js";
11
12
  import { exitPlan } from "./exitPlan.js";
12
13
  import { todoWrite } from "./todo.js";
13
14
  import { useSkill } from "./useSkill.js";
@@ -43,7 +44,8 @@ export const TOOLS = [
43
44
  useSkill,
44
45
  // Clarification (read-only: asks the user a focused question, changes nothing)
45
46
  askUserTool,
46
- // Sight (read-only: photographs one approved window, changes nothing)
47
+ // Sight (read-only: looks at a picture, changes nothing)
48
+ viewImage,
47
49
  screenshot,
48
50
  // Planning (read-only, and offered only while planning — see `planOnly`)
49
51
  exitPlan,