mindweave 3.2.2 → 3.2.3

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 (53) hide show
  1. package/dist/cli/App.js +2 -2
  2. package/dist/cli/App.js.map +1 -1
  3. package/dist/cli/agentLines.js +196 -0
  4. package/dist/cli/agentLines.js.map +1 -0
  5. package/dist/cli/components/BlockView.js +1 -1
  6. package/dist/cli/components/BlockView.js.map +1 -1
  7. package/dist/cli/components/SubagentView.js +43 -74
  8. package/dist/cli/components/SubagentView.js.map +1 -1
  9. package/dist/cli/help.js +3 -1
  10. package/dist/cli/help.js.map +1 -1
  11. package/dist/cli/transcript.js +13 -3
  12. package/dist/cli/transcript.js.map +1 -1
  13. package/dist/core/turnRunner.js +2 -2
  14. package/dist/core/turnRunner.js.map +1 -1
  15. package/dist/dynamo/engine.js +6 -3
  16. package/dist/dynamo/engine.js.map +1 -1
  17. package/dist/dynamo/guard.js +6 -0
  18. package/dist/dynamo/guard.js.map +1 -1
  19. package/dist/dynamo/marathon.js +17 -4
  20. package/dist/dynamo/marathon.js.map +1 -1
  21. package/dist/memory/compaction.js +60 -6
  22. package/dist/memory/compaction.js.map +1 -1
  23. package/dist/memory/session.js +2 -0
  24. package/dist/memory/session.js.map +1 -1
  25. package/dist/tools/guard.js +13 -0
  26. package/dist/tools/guard.js.map +1 -1
  27. package/dist/tools/registry.js +1 -1
  28. package/dist/tools/registry.js.map +1 -1
  29. package/dist/tools/runCommand.js +9 -0
  30. package/dist/tools/runCommand.js.map +1 -1
  31. package/dist/tools/screenshot.js +28 -9
  32. package/dist/tools/screenshot.js.map +1 -1
  33. package/dist/tools/screenshotWin.js +258 -175
  34. package/dist/tools/screenshotWin.js.map +1 -1
  35. package/dist/tools/subagent.js +55 -27
  36. package/dist/tools/subagent.js.map +1 -1
  37. package/dist/tools/subagentOutcome.js +24 -0
  38. package/dist/tools/subagentOutcome.js.map +1 -0
  39. package/dist/tools/treeGuard.js +164 -0
  40. package/dist/tools/treeGuard.js.map +1 -0
  41. package/dist/tools/ui.js +27 -0
  42. package/dist/tools/ui.js.map +1 -1
  43. package/dist/tools/uiHide.js +19 -6
  44. package/dist/tools/uiHide.js.map +1 -1
  45. package/dist/tools/verifierCommands.js +188 -0
  46. package/dist/tools/verifierCommands.js.map +1 -0
  47. package/dist/tools/verifierRun.js +88 -0
  48. package/dist/tools/verifierRun.js.map +1 -0
  49. package/dist/tools/verifierTools.js +19 -0
  50. package/dist/tools/verifierTools.js.map +1 -0
  51. package/dist/tools/verifyReport.js +79 -9
  52. package/dist/tools/verifyReport.js.map +1 -1
  53. package/package.json +3 -3
@@ -0,0 +1,88 @@
1
+ import { changeCount, giveToUndo, listChanges, snapshotTree, treeChanges } from "./treeGuard.js";
2
+ import { parseVerdict } from "./verifyReport.js";
3
+ /**
4
+ * What a call was, in the words a report would cite it by, or undefined when it is not a command
5
+ * or a look at the app (a file read is a look at a file, and cannot back a check).
6
+ */
7
+ export function describeRun(name, args) {
8
+ if (name === "run_command") {
9
+ const c = typeof args.command === "string" ? args.command.trim() : "";
10
+ return c || undefined;
11
+ }
12
+ if (name === "ui") {
13
+ if (Array.isArray(args.steps) && args.steps.length > 0) {
14
+ return `ui ${args.steps.map((s) => (s && typeof s === "object" && typeof s.action === "string" ? s.action : "step")).join(" ")}`;
15
+ }
16
+ const bits = [args.action, args.name, args.target, args.text, args.key, args.url, args.port].filter((x) => typeof x === "string" || typeof x === "number");
17
+ return `ui ${bits.length > 0 ? bits.join(" ") : "look"}`;
18
+ }
19
+ return undefined;
20
+ }
21
+ /** A call that was turned away rather than run: no command was made, so none can back a check. */
22
+ function turnedAway(summary) {
23
+ return /^(blocked|declined|refused|interrupted|not run)/i.test(summary.trim());
24
+ }
25
+ /** Watches a worker's events and remembers each command it really ran. */
26
+ export function watchRuns() {
27
+ const started = new Map();
28
+ const ran = [];
29
+ return {
30
+ onEvent(e) {
31
+ if (e.type !== "tool")
32
+ return;
33
+ if (e.phase === "start") {
34
+ const what = describeRun(e.name, e.args);
35
+ if (what)
36
+ started.set(e.id, what);
37
+ }
38
+ else if (e.phase === "end") {
39
+ const what = started.get(e.id);
40
+ started.delete(e.id);
41
+ if (what && !(e.error && turnedAway(e.summary)))
42
+ ran.push(what);
43
+ }
44
+ },
45
+ ran: () => [...ran],
46
+ };
47
+ }
48
+ /**
49
+ * Stop the background shells that were not there before the verifier began and are still running: the app
50
+ * or server it started to test. Its own, not the session's: a shell the session had running is left alone,
51
+ * and the verifier has no tool to stop one either.
52
+ */
53
+ export function stopStartedBy(shells, known) {
54
+ if (!shells)
55
+ return 0;
56
+ let stopped = 0;
57
+ for (const s of shells.list()) {
58
+ if (known.has(s.id) || s.status !== "running")
59
+ continue;
60
+ if (shells.kill(s.id))
61
+ stopped++;
62
+ }
63
+ return stopped;
64
+ }
65
+ /**
66
+ * Run a verifier and judge its report against what it did.
67
+ *
68
+ * `run` runs the worker and returns its reply; it is given the function to feed every event of the
69
+ * worker's to, which is how the commands it makes are known. The project's files are looked at
70
+ * before and after; any that changed are handed to the undo net and named in the verdict.
71
+ */
72
+ export async function verifyWithGuards(o) {
73
+ const before = await snapshotTree(o.cwd);
74
+ const runs = watchRuns();
75
+ const knownShells = new Set((o.shells?.list() ?? []).map((s) => s.id));
76
+ let reply;
77
+ try {
78
+ reply = await o.run(runs.onEvent);
79
+ }
80
+ finally {
81
+ stopStartedBy(o.shells, knownShells);
82
+ }
83
+ const changes = await treeChanges(before);
84
+ if (changeCount(changes) > 0)
85
+ await giveToUndo(o.checkpoints, changes);
86
+ return parseVerdict(reply, { executed: runs.ran(), modified: listChanges(o.cwd, changes) });
87
+ }
88
+ //# sourceMappingURL=verifierRun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifierRun.js","sourceRoot":"","sources":["../../src/tools/verifierRun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * verifierTools.ts — what a verifier may run that an ordinary read-only worker may not.
3
+ *
4
+ * A verifier's whole job is to RUN things: the build, the tests, the typechecker, a script
5
+ * that calls the changed function, the app under test. Its instructions said so, and its tool
6
+ * set did not allow it: a verifier was made read-only like any research worker, which removes
7
+ * the command tool and the app driver, so it could only read the code and write PASS next to
8
+ * what it read. Every verdict it gave came back `partial`, because it could not make a check.
9
+ *
10
+ * These are added to the read-only set for a verifier and nobody else. The edit and write
11
+ * tools stay removed, so it still cannot change the project through them; a command that writes
12
+ * a file by other means is caught afterwards (see treeGuard.ts) rather than trusted not to.
13
+ *
14
+ * `kill_shell` is not here. It stops a background shell by number, and the numbers are shared with the
15
+ * session that spawned the verifier: it could stop the app the user is looking at. What a verifier
16
+ * starts in the background is stopped for it when it finishes instead (see verifierRun.ts).
17
+ */
18
+ export const VERIFIER_EXTRA_TOOLS = new Set(["run_command", "ui"]);
19
+ //# sourceMappingURL=verifierTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifierTools.js","sourceRoot":"","sources":["../../src/tools/verifierTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC"}
@@ -37,7 +37,9 @@ These are the exact sentences you will reach for. Each one is wrong:
37
37
  - "This is probably fine" — probably is not verified.
38
38
  - "I don't have the tools for this" — check what you actually have before deciding that.
39
39
 
40
- YOU CANNOT MODIFY ANYTHING. Your edit and write tools are removed, not discouraged — this is enforced, so do not plan around it. Read, search, and run commands. A scratch file under the system temp directory is fine; the project is not.
40
+ YOU CANNOT MODIFY ANYTHING. Your edit and write tools are removed, not discouraged — this is enforced, so do not plan around it. You can read, search, run builds, tests, the typechecker and scripts that call the code, start the app and drive it, and run commands that only read. You cannot delete, move, rename or copy files, install or publish packages, change a git repository, stop processes, fetch from outside this machine or write anywhere but the system temp directory: those are refused, with the reason. Do not use the app's own delete or reset controls unless testing them is the job. A scratch file under the system temp directory is fine; the project is not, and it is checked: the project's files are looked at before you start and after you finish, and if a command of yours changed one, it is named in the verdict and the verdict cannot be pass.
41
+
42
+ WHAT COUNTS AS A CHECK. Only a command you really ran. The call you made is compared with what you report: a \`$ ...\` line whose command was never run is marked as not a check, and reading a file is not a command. A check you could not run — because a tool was refused, or the app would not start — is a skip: say so, and say why.
41
43
 
42
44
  WHAT TO DO. Run the build. Run the tests, including the full suite when the change is broad enough to warrant it. Run the typechecker and any linter. Then — and this is the part that matters — exercise the change itself: call the function, hit the endpoint, run the command, drive the UI. Finally, try to break it: boundary values, empty and malformed input, the same operation twice, an id that does not exist.
43
45
 
@@ -81,7 +83,10 @@ const VERDICT_LINE = /^[ \t>*_#-]*VERDICT[:\s]+\s*(pass|fail|partial)[ \t*_.!]*$
81
83
  * OUTPUT to follow, which is the half that cannot be produced without running anything.
82
84
  */
83
85
  export function evidenceCount(text) {
84
- let count = 0;
86
+ return checkLines(text).length;
87
+ }
88
+ export function checkLines(text) {
89
+ const out = [];
85
90
  const lines = text.split(/\r?\n/);
86
91
  for (let i = 0; i < lines.length; i++) {
87
92
  const line = lines[i];
@@ -91,10 +96,58 @@ export function evidenceCount(text) {
91
96
  // A command with nothing after it is a command someone typed into a report, not one
92
97
  // they ran. Something non-empty has to follow before the next check heading.
93
98
  const next = lines.slice(i + 1, i + 6).find((l) => l.trim() && !/^\s*\$\s+\S/.test(l));
94
- if (next && !/^#{1,6}\s/.test(next))
95
- count += 1;
99
+ if (next && !/^#{1,6}\s/.test(next)) {
100
+ out.push({ at: i, command: line.replace(/^\s*\$\s+/, "").replace(/^\s*\*{0,2}Command run:?\**\s*/i, "").trim() });
101
+ }
102
+ }
103
+ return out;
104
+ }
105
+ /** The words of a command, lowercased, with quotes and flags' punctuation off (pure). */
106
+ function words(command) {
107
+ return command
108
+ .toLowerCase()
109
+ .replace(/["'`]/g, "")
110
+ .split(/\s+/)
111
+ .filter(Boolean);
112
+ }
113
+ /**
114
+ * Is a command the report cites one the run really made (pure)?
115
+ *
116
+ * The report abbreviates: it says `npm test` where the call was `npm run test 2>&1 | tail`. So a cited
117
+ * command is backed when every word of it appears, in order, in some command that ran. What it
118
+ * cannot be is something that never ran at all: `read src/main/index.ts:91-123` is a look at a file,
119
+ * and there is no command behind it.
120
+ */
121
+ export function commandMatches(reported, executed) {
122
+ const need = words(reported);
123
+ if (need.length === 0)
124
+ return false;
125
+ return executed.some((e) => {
126
+ const have = words(e);
127
+ let at = 0;
128
+ for (const w of need) {
129
+ const found = have.indexOf(w, at);
130
+ if (found < 0)
131
+ return false;
132
+ at = found + 1;
133
+ }
134
+ return true;
135
+ });
136
+ }
137
+ /** A PASS under a check that no command backs says so, where the reader will see it (pure). */
138
+ function markUnbacked(body, unbacked) {
139
+ if (unbacked.length === 0)
140
+ return body;
141
+ const lines = body.split(/\r?\n/);
142
+ for (const c of unbacked) {
143
+ for (let i = c.at + 1; i < lines.length && !/^#{1,6}\s/.test(lines[i]); i++) {
144
+ if (/^\s*=>\s*PASS\b/i.test(lines[i])) {
145
+ lines[i] = `${lines[i].trimEnd()} [NOT A CHECK: no command like this was run, so this is reading, not verifying]`;
146
+ break;
147
+ }
148
+ }
96
149
  }
97
- return count;
150
+ return lines.join("\n");
98
151
  }
99
152
  /**
100
153
  * Read the verifier's conclusion, and refuse to take an unevidenced PASS at face value.
@@ -105,15 +158,32 @@ export function evidenceCount(text) {
105
158
  * downgraded: claiming something is broken, or that you were blocked, is not a claim that
106
159
  * benefits the claimer, so there is no incentive to fake it and no reason to second-guess.
107
160
  */
108
- export function parseVerdict(reply) {
161
+ export function parseVerdict(reply, run) {
109
162
  const text = (reply ?? "").trim();
110
163
  const match = VERDICT_LINE.exec(text);
111
164
  const stated = (match?.[1]?.toLowerCase() ?? "unstated");
112
- const body = match ? text.replace(VERDICT_LINE, "").trim() : text;
113
- const evidence = evidenceCount(body);
165
+ let body = match ? text.replace(VERDICT_LINE, "").trim() : text;
166
+ const cited = checkLines(body);
167
+ // With the run's own record, a check counts only when a command like it ran. Without one (an old
168
+ // caller, a test) the report's own lines are all there is, as before.
169
+ const unbackedLines = run ? cited.filter((c) => !commandMatches(c.command, run.executed)) : [];
170
+ const evidence = cited.length - unbackedLines.length;
171
+ if (run)
172
+ body = markUnbacked(body, unbackedLines);
114
173
  const concerns = [];
174
+ if (unbackedLines.length > 0) {
175
+ concerns.push(`${unbackedLines.length} check${unbackedLines.length === 1 ? "" : "s"} cite${unbackedLines.length === 1 ? "s" : ""} a command that never ran, so ${unbackedLines.length === 1 ? "it is" : "they are"} reading the code, not testing it`);
176
+ }
177
+ const modified = run?.modified ?? [];
178
+ if (modified.length > 0) {
179
+ concerns.push(`it changed ${modified.length} project file${modified.length === 1 ? "" : "s"} while it ran (${modified.slice(0, 4).join(", ")}${modified.length > 4 ? ` and ${modified.length - 4} more` : ""}); a verifier that changes the code can make it pass, so do not trust this verdict, and undo puts them back`);
180
+ }
115
181
  let verdict = stated;
116
182
  let downgraded = false;
183
+ if (stated === "pass" && modified.length > 0) {
184
+ verdict = "partial";
185
+ downgraded = true;
186
+ }
117
187
  if (stated === "pass" && evidence === 0) {
118
188
  verdict = "partial";
119
189
  downgraded = true;
@@ -127,7 +197,7 @@ export function parseVerdict(reply) {
127
197
  // adversarial probe the contract asks for as well as the happy path.
128
198
  concerns.push("only one check carried evidence; nothing here looks like an attempt to break it");
129
199
  }
130
- return { verdict, body, evidence, downgraded, concerns };
200
+ return { verdict, body, evidence, downgraded, concerns, unbacked: unbackedLines.length, modified };
131
201
  }
132
202
  /** One line for the transcript. The caller gets the body; the user gets this. */
133
203
  export function renderVerdict(report) {
@@ -1 +1 @@
1
- {"version":3,"file":"verifyReport.js","sourceRoot":"","sources":["../../src/tools/verifyReport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyReport.js","sourceRoot":"","sources":["../../src/tools/verifyReport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mindweave",
3
- "version": "3.2.2",
3
+ "version": "3.2.3",
4
4
  "description": "Mindweave — a fast, model-adaptive terminal coding agent.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -39,8 +39,8 @@
39
39
  "install-global": "npm run build && npm link",
40
40
  "typecheck": "tsc --noEmit",
41
41
  "test": "npm run test:main && npm run test:cli && npm run test:lang",
42
- "test:main": "node --max-old-space-size=4096 --import tsx --import ./scripts/testState.mjs --test --test-concurrency=4 --test-timeout=120000 src/drivers/clientId.test.ts src/core/turnRunner.test.ts src/drivers/openrouter/openrouter.test.ts src/drivers/ollama/ollama.test.ts src/drivers/contextOverflow.test.ts src/drivers/retryPolicy.test.ts src/drivers/partialTurn.test.ts src/drivers/retryTransport.test.ts src/tools/tools.test.ts src/tools/quietFailures.test.ts src/tools/readBatch.test.ts src/tools/readLines.test.ts src/tools/readBudget.test.ts src/tools/search.test.ts src/tools/searchPrecision.test.ts src/tools/ripgrepBundle.test.ts src/tools/shellLint.test.ts src/tools/askUser.test.ts src/tools/newtools.test.ts src/tools/selfService.test.ts src/tools/webSearch.test.ts src/tools/webFetch.test.ts src/tools/screenshot.test.ts src/tools/ui.test.ts src/tools/uiPage.test.ts src/tools/uiBatch.test.ts src/tools/listeningPorts.test.ts src/tools/hiddenDesktop.test.ts src/dynamo/auxModel.test.ts src/dynamo/usageLimits.test.ts src/dynamo/limitStop.test.ts src/dynamo/marathon.test.ts src/tools/viewImage.test.ts src/tools/openDefault.test.ts src/tools/commandOutput.test.ts src/tools/commandProgress.test.ts src/tools/runCommandExit.test.ts src/tools/exitPlan.test.ts src/dynamo/planLifecycle.test.ts src/dynamo/steering.test.ts src/dynamo/loopLab.test.ts src/dynamo/toolBatches.test.ts src/dynamo/stopAtTurnStart.test.ts src/dynamo/backgroundNotes.test.ts src/dynamo/streamStall.test.ts src/dynamo/callCap.test.ts src/dynamo/hooks.test.ts src/dynamo/todoReminder.test.ts src/dynamo/todoReminderEngine.test.ts src/dynamo/truncationRecovery.test.ts src/dynamo/callTags.test.ts src/tools/webSecurity.test.ts src/tools/stateGuard.test.ts src/tools/guardedPath.test.ts src/tools/runsLater.test.ts src/tools/destructiveDelete.test.ts src/tools/commandPolicy.test.ts src/tools/codeIntel.test.ts src/memory/resumeFidelity.test.ts src/memory/clearedKeepsWhatWasSaid.test.ts src/memory/memory.test.ts src/memory/durability.test.ts src/memory/memoryIndex.test.ts src/memory/callLog.test.ts src/memory/earlier.test.ts src/memory/sessionTitle.test.ts src/memory/callRecords.test.ts src/memory/auditFixes.test.ts src/memory/compactionHygiene.test.ts src/memory/rounds.test.ts src/memory/subagentCost.test.ts src/memory/sessionMemory.test.ts src/memory/sessionMemoryRefresh.test.ts src/memory/sessionMemoryMidTurn.test.ts src/memory/sessionMemoryCompact.test.ts src/memory/notesInTail.test.ts src/memory/clearedArchive.test.ts src/memory/clearKinds.test.ts src/memory/todosResume.test.ts src/memory/counters.test.ts src/cli/attachBudget.test.ts src/memory/summaryHistory.test.ts src/memory/restore.test.ts src/memory/rewind.test.ts src/memory/resumeReads.test.ts src/memory/autoMemory.test.ts src/memory/projectMemory.test.ts src/memory/projectNotes.test.ts src/memory/workingSet.test.ts src/memory/presence.test.ts src/memory/pastedText.test.ts src/memory/profile.test.ts src/cli/projectEnv.test.ts src/core/providerKeys.test.ts src/core/mcpServers.test.ts src/core/permissions.test.ts src/core/rulesSkills.test.ts src/core/contextSettings.test.ts src/core/spendView.test.ts src/core/marathonRun.test.ts src/core/agentAdded.test.ts src/memory/images.test.ts src/dynamo/contextWindow.test.ts src/dynamo/contextBudget.test.ts src/dynamo/compactPaths.test.ts src/dynamo/cacheBreak.test.ts src/dynamo/coldCache.test.ts src/drivers/anthropic/cachePoints.test.ts src/dynamo/planArtifact.test.ts src/tools/focus.test.ts src/tools/workingSetTools.test.ts src/project/context.test.ts src/dynamo/hiddenText.test.ts src/tools/invisible.test.ts src/dynamo/model.test.ts src/dynamo/engine.test.ts src/drivers/docsCurrent.test.ts src/drivers/registry.test.ts src/drivers/providerSwitch.test.ts src/drivers/dynamicManifest.test.ts src/drivers/newProviders.test.ts src/drivers/providerError.test.ts src/drivers/deepseek/client.test.ts src/drivers/deepseek/vision.test.ts src/drivers/deepseek/live.test.ts src/drivers/anthropic/client.test.ts src/drivers/openai/client.test.ts src/drivers/qwen/client.test.ts src/drivers/kimi/client.test.ts src/drivers/glm/client.test.ts src/drivers/tencent/client.test.ts src/drivers/gemini/client.test.ts src/drivers/gemini/thoughtSignature.test.ts src/drivers/meta/client.test.ts src/drivers/minimax/client.test.ts src/dynamo/pricing.test.ts src/dynamo/spend.test.ts src/dynamo/liveMeter.test.ts src/drivers/deepseek/inlineTools.test.ts src/dynamo/verify.test.ts src/dynamo/promptAssembly.test.ts src/dynamo/prefixStability.test.ts src/dynamo/providerNeutrality.test.ts src/dynamo/guard.test.ts src/tools/sessionTools.test.ts src/tools/registry.test.ts src/tools/toolFuzz.test.ts src/tools/toolSurface.test.ts src/tools/runCommandShell.test.ts src/tools/runCommandCross.test.ts src/tools/childEnv.test.ts src/tools/untrusted.test.ts src/tools/runCommandEncoding.test.ts src/tools/ripgrepShell.test.ts src/tools/posixShell.test.ts src/tools/processOwnership.test.ts src/tools/editRipple.test.ts src/tools/editCore.test.ts src/tools/workspaceBoundary.test.ts src/tools/atomicWrite.test.ts src/tools/edit.test.ts src/tools/checkpoints.test.ts src/tools/shellCheckpoint.test.ts src/tools/spanCore.test.ts src/tools/symbolTools.test.ts src/tools/subagent.test.ts src/tools/subagentReport.test.ts src/tools/verifyReport.test.ts src/tools/testSummary.test.ts src/tools/outputShape.test.ts src/tools/detail.test.ts src/tools/rebuildDetail.test.ts src/tools/writtenFromDisk.test.ts src/tools/uiRow.test.ts src/tools/approval.test.ts src/tools/agentData.test.ts src/tools/multiroot.test.ts src/tools/gitignore.test.ts src/tools/chassisMux.test.ts src/tools/workspaceDiscover.test.ts src/tools/backgroundShells.test.ts src/tools/appLaunchSettle.test.ts src/tools/killTree.test.ts src/governor/scope.test.ts src/governor/freshness.test.ts src/governor/governor.test.ts src/tools/governorTools.test.ts src/alternator/chassis/chassis.test.ts src/alternator/chassis/domRefs.test.ts src/alternator/chassis/servers.test.ts src/alternator/chassis/provision.test.ts src/tools/serverConsent.test.ts src/alternator/chassis/lsp.test.ts src/mcp/protocol.test.ts src/mcp/mrtr.test.ts src/mcp/discover.test.ts src/mcp/catalog.test.ts src/mcp/paramHeaders.test.ts src/mcp/paramHeadersLive.test.ts src/mcp/transport/stdio.test.ts src/mcp/config.test.ts src/mcp/projectApproval.test.ts src/mcp/transport/http.test.ts src/mcp/manager.test.ts src/mcp/subscriptions.test.ts src/mcp/deferred.test.ts src/tools/mcpSearch.test.ts src/mcp/trust.test.ts src/mcp/governance.test.ts src/mcp/configWrite.test.ts src/tools/mcpAdd.test.ts src/mcp/resultStore.test.ts src/mcp/resources.test.ts src/mcp/prompts.test.ts src/mcp/oauth/metadata.test.ts src/mcp/oauth/flow.test.ts src/mcp/oauth/callback.test.ts src/mcp/oauth/tokenStore.test.ts src/mcp/oauth/index.test.ts src/mcp/oauth/endToEnd.test.ts src/tools/editMatching.test.ts src/tools/editScope.test.ts src/tools/editFreshness.test.ts src/dynamo/batchEdit.test.ts",
43
- "test:cli": "node --max-old-space-size=4096 --import tsx --import ./scripts/testState.mjs --test --test-concurrency=4 --test-timeout=120000 src/cli/approvalText.probe.test.tsx src/cli/analytics.test.ts src/cli/desktopApp.test.ts src/cli/userBandAlign.probe.test.tsx src/cli/version.test.ts src/cli/updateCheck.test.ts src/cli/quietConsole.test.ts src/cli/appIdentity.test.ts src/cli/memoryTuning.test.ts src/cli/keyField.test.ts src/cli/keyStore.test.ts src/cli/keyManager.probe.test.tsx src/cli/mcpMinitabs.probe.test.tsx src/cli/components/minitabs.probe.test.tsx src/cli/trust.probe.test.tsx src/cli/firstRunFrame.probe.test.tsx src/cli/keySetup.probe.test.tsx src/cli/firstRun.test.ts src/cli/startupFill.test.ts src/cli/liveSize.test.ts src/cli/frameBottom.probe.test.tsx src/cli/screenMode.test.ts src/cli/screenPicker.probe.test.tsx src/cli/pickerFilter.probe.test.tsx src/cli/toolRowClip.probe.test.tsx src/cli/screenShell.test.ts src/cli/screenStore.test.ts src/cli/inlineShell.probe.test.tsx src/cli/inlineCaret.probe.test.tsx src/cli/startupArgs.test.ts src/cli/markdown.test.ts src/cli/help.test.ts src/cli/feedback.test.ts src/cli/approvalText.addLine.probe.test.tsx src/cli/providerSwitch.test.ts src/cli/attachments.test.ts src/cli/pasteAssembler.test.ts src/cli/approvalQueue.test.ts src/cli/transcript.test.ts src/cli/expandRow.probe.test.tsx src/cli/openWrap.probe.test.tsx src/cli/workGroup.probe.test.tsx src/cli/diffWrap.test.ts src/cli/uiLines.test.ts src/cli/uiRow.probe.test.tsx src/cli/expandHover.probe.test.tsx src/cli/viewWait.probe.test.tsx src/cli/compaction.test.ts src/cli/commandLabel.test.ts src/cli/restart.test.ts src/cli/selfUpdate.test.ts src/cli/blockHeights.test.ts src/cli/resizePolicy.probe.test.tsx src/cli/blockSpacing.test.ts src/cli/shellNotes.test.ts src/cli/inputView.test.ts src/cli/wordEdit.test.ts src/cli/wordEdit.probe.test.tsx src/cli/dropHandles.test.ts src/cli/dropHandles.probe.test.tsx src/cli/tipLine.probe.test.tsx src/cli/marathonUi.test.ts src/cli/marathonBox.probe.test.tsx src/cli/selection.test.ts src/cli/mouseLayer.probe.test.tsx src/cli/caret.probe.test.tsx src/cli/caretPark.test.ts src/cli/shuttle.probe.test.tsx src/cli/toolReveal.test.tsx src/cli/blockPerf.probe.test.tsx src/cli/blockSpacing.probe.test.tsx src/cli/workingVerb.test.ts src/cli/typingPerf.probe.test.tsx src/cli/inkOutputPatch.test.ts src/cli/widestLinePatch.test.ts src/cli/prodEnv.test.ts src/cli/inputText.test.ts src/cli/appInlineStart.test.ts src/cli/bannerFit.test.ts src/cli/scrollPerf.probe.test.tsx src/cli/virtualWindow.test.ts src/cli/virtualRender.probe.test.tsx src/cli/incrementalResize.probe.test.tsx src/cli/framebuffer/paint.test.ts src/cli/framebuffer/terminalAgreement.test.ts src/cli/framebuffer/writer.test.tsx src/cli/framebuffer/stoodDown.test.tsx src/cli/framebuffer/resizeCorruption.probe.test.tsx src/cli/toolItems.test.ts src/cli/toolDisplay.test.ts src/cli/toolColour.probe.test.tsx src/cli/mouse.test.ts src/cli/wheelCoalesce.test.ts src/cli/wheelStep.test.ts src/cli/terminalRestore.test.ts src/cli/exitCursor.test.ts src/cli/ctrlC.test.ts src/cli/wrap.test.ts src/cli/chatAnchor.test.ts src/cli/chatAnchor.probe.test.tsx src/cli/scrollPill.test.ts src/cli/scrollPill.probe.test.tsx src/cli/pillClick.probe.test.tsx src/cli/inlineReading.probe.test.tsx src/cli/readingClose.probe.test.tsx src/cli/footerRemount.probe.test.tsx src/cli/scrollFlicker.probe.test.tsx src/cli/headerScroll.probe.test.tsx src/cli/reflowAnchor.test.ts src/cli/growAnchor.test.ts src/cli/revealPace.test.ts src/cli/messageQueue.test.ts src/cli/backgroundWake.test.ts src/cli/resumeParity.test.ts src/cli/commands.test.ts src/cli/commandRoute.test.ts src/cli/commandArgs.test.ts src/cli/pickerOrder.test.ts src/cli/clearSession.test.ts src/cli/queuePop.probe.test.tsx src/cli/menuContinuity.probe.test.tsx src/cli/refusalNotice.probe.test.tsx src/cli/modes.test.ts",
42
+ "test:main": "node --max-old-space-size=4096 --import tsx --import ./scripts/testState.mjs --test --test-concurrency=4 --test-timeout=120000 src/drivers/clientId.test.ts src/core/turnRunner.test.ts src/drivers/openrouter/openrouter.test.ts src/drivers/ollama/ollama.test.ts src/drivers/contextOverflow.test.ts src/drivers/retryPolicy.test.ts src/drivers/partialTurn.test.ts src/drivers/retryTransport.test.ts src/tools/tools.test.ts src/tools/quietFailures.test.ts src/tools/readBatch.test.ts src/tools/readLines.test.ts src/tools/readBudget.test.ts src/tools/search.test.ts src/tools/searchPrecision.test.ts src/tools/ripgrepBundle.test.ts src/tools/shellLint.test.ts src/tools/askUser.test.ts src/tools/newtools.test.ts src/tools/selfService.test.ts src/tools/webSearch.test.ts src/tools/webFetch.test.ts src/tools/screenshot.test.ts src/tools/ui.test.ts src/tools/uiPage.test.ts src/tools/uiBatch.test.ts src/tools/listeningPorts.test.ts src/tools/hiddenDesktop.test.ts src/dynamo/auxModel.test.ts src/dynamo/usageLimits.test.ts src/dynamo/limitStop.test.ts src/dynamo/marathon.test.ts src/tools/viewImage.test.ts src/tools/openDefault.test.ts src/tools/commandOutput.test.ts src/tools/commandProgress.test.ts src/tools/runCommandExit.test.ts src/tools/exitPlan.test.ts src/dynamo/planLifecycle.test.ts src/dynamo/steering.test.ts src/dynamo/loopLab.test.ts src/dynamo/toolBatches.test.ts src/dynamo/stopAtTurnStart.test.ts src/dynamo/backgroundNotes.test.ts src/dynamo/streamStall.test.ts src/dynamo/callCap.test.ts src/dynamo/hooks.test.ts src/dynamo/todoReminder.test.ts src/dynamo/todoReminderEngine.test.ts src/dynamo/truncationRecovery.test.ts src/dynamo/callTags.test.ts src/tools/webSecurity.test.ts src/tools/stateGuard.test.ts src/tools/guardedPath.test.ts src/tools/runsLater.test.ts src/tools/destructiveDelete.test.ts src/tools/commandPolicy.test.ts src/tools/codeIntel.test.ts src/memory/resumeFidelity.test.ts src/memory/clearedKeepsWhatWasSaid.test.ts src/memory/memory.test.ts src/memory/durability.test.ts src/memory/memoryIndex.test.ts src/memory/callLog.test.ts src/memory/earlier.test.ts src/memory/sessionTitle.test.ts src/memory/callRecords.test.ts src/memory/auditFixes.test.ts src/memory/compactionHygiene.test.ts src/memory/rounds.test.ts src/memory/subagentCost.test.ts src/memory/sessionMemory.test.ts src/memory/sessionMemoryRefresh.test.ts src/memory/sessionMemoryMidTurn.test.ts src/memory/sessionMemoryCompact.test.ts src/memory/notesInTail.test.ts src/memory/clearedArchive.test.ts src/memory/clearKinds.test.ts src/memory/todosResume.test.ts src/memory/counters.test.ts src/cli/attachBudget.test.ts src/memory/summaryHistory.test.ts src/memory/restore.test.ts src/memory/rewind.test.ts src/memory/resumeReads.test.ts src/memory/autoMemory.test.ts src/memory/projectMemory.test.ts src/memory/projectNotes.test.ts src/memory/workingSet.test.ts src/memory/presence.test.ts src/memory/pastedText.test.ts src/memory/profile.test.ts src/cli/projectEnv.test.ts src/core/providerKeys.test.ts src/core/mcpServers.test.ts src/core/permissions.test.ts src/core/rulesSkills.test.ts src/core/contextSettings.test.ts src/core/spendView.test.ts src/core/marathonRun.test.ts src/core/agentAdded.test.ts src/memory/images.test.ts src/dynamo/contextWindow.test.ts src/dynamo/contextBudget.test.ts src/dynamo/compactPaths.test.ts src/dynamo/cacheBreak.test.ts src/dynamo/coldCache.test.ts src/drivers/anthropic/cachePoints.test.ts src/dynamo/planArtifact.test.ts src/tools/focus.test.ts src/tools/workingSetTools.test.ts src/project/context.test.ts src/dynamo/hiddenText.test.ts src/tools/invisible.test.ts src/dynamo/model.test.ts src/dynamo/engine.test.ts src/drivers/docsCurrent.test.ts src/drivers/registry.test.ts src/drivers/providerSwitch.test.ts src/drivers/dynamicManifest.test.ts src/drivers/newProviders.test.ts src/drivers/providerError.test.ts src/drivers/deepseek/client.test.ts src/drivers/deepseek/vision.test.ts src/drivers/deepseek/live.test.ts src/drivers/anthropic/client.test.ts src/drivers/openai/client.test.ts src/drivers/qwen/client.test.ts src/drivers/kimi/client.test.ts src/drivers/glm/client.test.ts src/drivers/tencent/client.test.ts src/drivers/gemini/client.test.ts src/drivers/gemini/thoughtSignature.test.ts src/drivers/meta/client.test.ts src/drivers/minimax/client.test.ts src/dynamo/pricing.test.ts src/dynamo/spend.test.ts src/dynamo/liveMeter.test.ts src/drivers/deepseek/inlineTools.test.ts src/dynamo/verify.test.ts src/dynamo/promptAssembly.test.ts src/dynamo/prefixStability.test.ts src/dynamo/providerNeutrality.test.ts src/dynamo/guard.test.ts src/tools/sessionTools.test.ts src/tools/registry.test.ts src/tools/toolFuzz.test.ts src/tools/toolSurface.test.ts src/tools/runCommandShell.test.ts src/tools/runCommandCross.test.ts src/tools/childEnv.test.ts src/tools/untrusted.test.ts src/tools/runCommandEncoding.test.ts src/tools/ripgrepShell.test.ts src/tools/posixShell.test.ts src/tools/processOwnership.test.ts src/tools/editRipple.test.ts src/tools/editCore.test.ts src/tools/workspaceBoundary.test.ts src/tools/atomicWrite.test.ts src/tools/edit.test.ts src/tools/checkpoints.test.ts src/tools/shellCheckpoint.test.ts src/tools/spanCore.test.ts src/tools/symbolTools.test.ts src/tools/subagent.test.ts src/tools/subagentReport.test.ts src/tools/subagentOutcome.test.ts src/tools/verifierRun.test.ts src/tools/verifierCommands.test.ts src/tools/treeGuard.test.ts src/tools/verifyReport.test.ts src/tools/testSummary.test.ts src/tools/outputShape.test.ts src/tools/detail.test.ts src/tools/rebuildDetail.test.ts src/tools/writtenFromDisk.test.ts src/tools/uiRow.test.ts src/tools/approval.test.ts src/tools/agentData.test.ts src/tools/multiroot.test.ts src/tools/gitignore.test.ts src/tools/chassisMux.test.ts src/tools/workspaceDiscover.test.ts src/tools/backgroundShells.test.ts src/tools/appLaunchSettle.test.ts src/tools/killTree.test.ts src/governor/scope.test.ts src/governor/freshness.test.ts src/governor/governor.test.ts src/tools/governorTools.test.ts src/alternator/chassis/chassis.test.ts src/alternator/chassis/domRefs.test.ts src/alternator/chassis/servers.test.ts src/alternator/chassis/provision.test.ts src/tools/serverConsent.test.ts src/alternator/chassis/lsp.test.ts src/mcp/protocol.test.ts src/mcp/mrtr.test.ts src/mcp/discover.test.ts src/mcp/catalog.test.ts src/mcp/paramHeaders.test.ts src/mcp/paramHeadersLive.test.ts src/mcp/transport/stdio.test.ts src/mcp/config.test.ts src/mcp/projectApproval.test.ts src/mcp/transport/http.test.ts src/mcp/manager.test.ts src/mcp/subscriptions.test.ts src/mcp/deferred.test.ts src/tools/mcpSearch.test.ts src/mcp/trust.test.ts src/mcp/governance.test.ts src/mcp/configWrite.test.ts src/tools/mcpAdd.test.ts src/mcp/resultStore.test.ts src/mcp/resources.test.ts src/mcp/prompts.test.ts src/mcp/oauth/metadata.test.ts src/mcp/oauth/flow.test.ts src/mcp/oauth/callback.test.ts src/mcp/oauth/tokenStore.test.ts src/mcp/oauth/index.test.ts src/mcp/oauth/endToEnd.test.ts src/tools/editMatching.test.ts src/tools/editScope.test.ts src/tools/editFreshness.test.ts src/dynamo/batchEdit.test.ts",
43
+ "test:cli": "node --max-old-space-size=4096 --import tsx --import ./scripts/testState.mjs --test --test-concurrency=4 --test-timeout=120000 src/cli/approvalText.probe.test.tsx src/cli/analytics.test.ts src/cli/desktopApp.test.ts src/cli/userBandAlign.probe.test.tsx src/cli/version.test.ts src/cli/updateCheck.test.ts src/cli/quietConsole.test.ts src/cli/appIdentity.test.ts src/cli/memoryTuning.test.ts src/cli/keyField.test.ts src/cli/keyStore.test.ts src/cli/keyManager.probe.test.tsx src/cli/mcpMinitabs.probe.test.tsx src/cli/components/minitabs.probe.test.tsx src/cli/trust.probe.test.tsx src/cli/firstRunFrame.probe.test.tsx src/cli/keySetup.probe.test.tsx src/cli/firstRun.test.ts src/cli/startupFill.test.ts src/cli/liveSize.test.ts src/cli/frameBottom.probe.test.tsx src/cli/screenMode.test.ts src/cli/screenPicker.probe.test.tsx src/cli/pickerFilter.probe.test.tsx src/cli/toolRowClip.probe.test.tsx src/cli/screenShell.test.ts src/cli/screenStore.test.ts src/cli/inlineShell.probe.test.tsx src/cli/inlineCaret.probe.test.tsx src/cli/startupArgs.test.ts src/cli/markdown.test.ts src/cli/help.test.ts src/cli/feedback.test.ts src/cli/approvalText.addLine.probe.test.tsx src/cli/providerSwitch.test.ts src/cli/attachments.test.ts src/cli/pasteAssembler.test.ts src/cli/approvalQueue.test.ts src/cli/transcript.test.ts src/cli/expandRow.probe.test.tsx src/cli/openWrap.probe.test.tsx src/cli/workGroup.probe.test.tsx src/cli/diffWrap.test.ts src/cli/uiLines.test.ts src/cli/uiRow.probe.test.tsx src/cli/expandHover.probe.test.tsx src/cli/viewWait.probe.test.tsx src/cli/compaction.test.ts src/cli/commandLabel.test.ts src/cli/restart.test.ts src/cli/selfUpdate.test.ts src/cli/blockHeights.test.ts src/cli/resizePolicy.probe.test.tsx src/cli/blockSpacing.test.ts src/cli/shellNotes.test.ts src/cli/inputView.test.ts src/cli/wordEdit.test.ts src/cli/wordEdit.probe.test.tsx src/cli/dropHandles.test.ts src/cli/dropHandles.probe.test.tsx src/cli/tipLine.probe.test.tsx src/cli/marathonUi.test.ts src/cli/marathonBox.probe.test.tsx src/cli/selection.test.ts src/cli/mouseLayer.probe.test.tsx src/cli/caret.probe.test.tsx src/cli/caretPark.test.ts src/cli/shuttle.probe.test.tsx src/cli/toolReveal.test.tsx src/cli/blockPerf.probe.test.tsx src/cli/blockSpacing.probe.test.tsx src/cli/workingVerb.test.ts src/cli/typingPerf.probe.test.tsx src/cli/inkOutputPatch.test.ts src/cli/widestLinePatch.test.ts src/cli/prodEnv.test.ts src/cli/inputText.test.ts src/cli/appInlineStart.test.ts src/cli/bannerFit.test.ts src/cli/scrollPerf.probe.test.tsx src/cli/virtualWindow.test.ts src/cli/virtualRender.probe.test.tsx src/cli/incrementalResize.probe.test.tsx src/cli/framebuffer/paint.test.ts src/cli/framebuffer/terminalAgreement.test.ts src/cli/framebuffer/writer.test.tsx src/cli/framebuffer/stoodDown.test.tsx src/cli/framebuffer/resizeCorruption.probe.test.tsx src/cli/toolItems.test.ts src/cli/agentLines.test.ts src/cli/toolDisplay.test.ts src/cli/toolColour.probe.test.tsx src/cli/mouse.test.ts src/cli/wheelCoalesce.test.ts src/cli/wheelStep.test.ts src/cli/terminalRestore.test.ts src/cli/exitCursor.test.ts src/cli/ctrlC.test.ts src/cli/wrap.test.ts src/cli/chatAnchor.test.ts src/cli/chatAnchor.probe.test.tsx src/cli/scrollPill.test.ts src/cli/scrollPill.probe.test.tsx src/cli/pillClick.probe.test.tsx src/cli/inlineReading.probe.test.tsx src/cli/readingClose.probe.test.tsx src/cli/footerRemount.probe.test.tsx src/cli/scrollFlicker.probe.test.tsx src/cli/headerScroll.probe.test.tsx src/cli/reflowAnchor.test.ts src/cli/growAnchor.test.ts src/cli/revealPace.test.ts src/cli/messageQueue.test.ts src/cli/backgroundWake.test.ts src/cli/resumeParity.test.ts src/cli/commands.test.ts src/cli/commandRoute.test.ts src/cli/commandArgs.test.ts src/cli/pickerOrder.test.ts src/cli/clearSession.test.ts src/cli/queuePop.probe.test.tsx src/cli/menuContinuity.probe.test.tsx src/cli/refusalNotice.probe.test.tsx src/cli/modes.test.ts",
44
44
  "test:lang": "node --max-old-space-size=4096 --import tsx --import ./scripts/testState.mjs --test --test-concurrency=1 src/alternator/chassis/treesitter.test.ts src/alternator/chassis/treesitterIsolation.test.ts src/alternator/chassis/markup.test.ts src/alternator/chassis/treesitterLangs.test.ts src/alternator/chassis/treesitterLangs2.test.ts src/alternator/chassis/treesitterLangs3.test.ts src/alternator/chassis/treesitterLangs4.test.ts src/alternator/chassis/langBudget.test.ts"
45
45
  },
46
46
  "engines": {