mindweave 3.0.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +36 -4
  2. package/dist/alternator/chassis/lsp.js +36 -4
  3. package/dist/alternator/chassis/lsp.js.map +1 -1
  4. package/dist/alternator/chassis/provision.js +54 -6
  5. package/dist/alternator/chassis/provision.js.map +1 -1
  6. package/dist/alternator/chassis/servers.js +34 -21
  7. package/dist/alternator/chassis/servers.js.map +1 -1
  8. package/dist/cli/App.js +118 -16
  9. package/dist/cli/App.js.map +1 -1
  10. package/dist/cli/attachments.js +37 -1
  11. package/dist/cli/attachments.js.map +1 -1
  12. package/dist/cli/bootstrap.js +25 -3
  13. package/dist/cli/bootstrap.js.map +1 -1
  14. package/dist/cli/components/BlockView.js +5 -5
  15. package/dist/cli/components/BlockView.js.map +1 -1
  16. package/dist/cli/components/CommandGroup.js +100 -0
  17. package/dist/cli/components/CommandGroup.js.map +1 -0
  18. package/dist/cli/components/MarathonBox.js +2 -1
  19. package/dist/cli/components/MarathonBox.js.map +1 -1
  20. package/dist/cli/components/TipLine.js +1 -0
  21. package/dist/cli/components/TipLine.js.map +1 -1
  22. package/dist/cli/components/ToolLine.js +69 -14
  23. package/dist/cli/components/ToolLine.js.map +1 -1
  24. package/dist/cli/components/WorkGroup.js +115 -0
  25. package/dist/cli/components/WorkGroup.js.map +1 -0
  26. package/dist/cli/diffWrap.js +24 -0
  27. package/dist/cli/diffWrap.js.map +1 -0
  28. package/dist/cli/expandHits.js +74 -0
  29. package/dist/cli/expandHits.js.map +1 -0
  30. package/dist/cli/marathonUi.js +2 -0
  31. package/dist/cli/marathonUi.js.map +1 -1
  32. package/dist/cli/mouse.js +16 -8
  33. package/dist/cli/mouse.js.map +1 -1
  34. package/dist/cli/scrollGlide.js +72 -0
  35. package/dist/cli/scrollGlide.js.map +1 -0
  36. package/dist/cli/scrollPill.js +21 -1
  37. package/dist/cli/scrollPill.js.map +1 -1
  38. package/dist/cli/selfUpdate.js +7 -0
  39. package/dist/cli/selfUpdate.js.map +1 -1
  40. package/dist/cli/terminalRestore.js +1 -1
  41. package/dist/cli/terminalRestore.js.map +1 -1
  42. package/dist/cli/toolDisplay.js +14 -10
  43. package/dist/cli/toolDisplay.js.map +1 -1
  44. package/dist/cli/transcript.js +100 -29
  45. package/dist/cli/transcript.js.map +1 -1
  46. package/dist/cli/uiLines.js +60 -0
  47. package/dist/cli/uiLines.js.map +1 -0
  48. package/dist/cli/wheelStep.js +29 -0
  49. package/dist/cli/wheelStep.js.map +1 -0
  50. package/dist/cli/workLines.js +84 -0
  51. package/dist/cli/workLines.js.map +1 -0
  52. package/dist/core/permissions.js +26 -1
  53. package/dist/core/permissions.js.map +1 -1
  54. package/dist/core/spendView.js +8 -1
  55. package/dist/core/spendView.js.map +1 -1
  56. package/dist/core/turnRunner.js +36 -8
  57. package/dist/core/turnRunner.js.map +1 -1
  58. package/dist/drivers/deepseek/inlineTools.js +36 -2
  59. package/dist/drivers/deepseek/inlineTools.js.map +1 -1
  60. package/dist/drivers/ollama/endpoint.js +25 -0
  61. package/dist/drivers/ollama/endpoint.js.map +1 -1
  62. package/dist/dynamo/engine.js +414 -88
  63. package/dist/dynamo/engine.js.map +1 -1
  64. package/dist/dynamo/guard.js +11 -4
  65. package/dist/dynamo/guard.js.map +1 -1
  66. package/dist/dynamo/hooks.js +209 -0
  67. package/dist/dynamo/hooks.js.map +1 -0
  68. package/dist/dynamo/marathon.js +67 -10
  69. package/dist/dynamo/marathon.js.map +1 -1
  70. package/dist/dynamo/todoReminder.js +26 -0
  71. package/dist/dynamo/todoReminder.js.map +1 -0
  72. package/dist/governor/forbidden.js +19 -0
  73. package/dist/governor/forbidden.js.map +1 -1
  74. package/dist/governor/freshness.js +1 -1
  75. package/dist/governor/freshness.js.map +1 -1
  76. package/dist/governor/index.js +8 -1
  77. package/dist/governor/index.js.map +1 -1
  78. package/dist/governor/rules.js +1 -0
  79. package/dist/governor/rules.js.map +1 -1
  80. package/dist/governor/write.js +50 -2
  81. package/dist/governor/write.js.map +1 -1
  82. package/dist/mcp/config.js +0 -41
  83. package/dist/mcp/config.js.map +1 -1
  84. package/dist/mcp/projectApproval.js +117 -0
  85. package/dist/mcp/projectApproval.js.map +1 -0
  86. package/dist/mcp/resultStore.js +19 -5
  87. package/dist/mcp/resultStore.js.map +1 -1
  88. package/dist/mcp/transport/stdio.js +4 -1
  89. package/dist/mcp/transport/stdio.js.map +1 -1
  90. package/dist/memory/allMetas.js +1 -1
  91. package/dist/memory/allMetas.js.map +1 -1
  92. package/dist/memory/autoMemory.js +1 -0
  93. package/dist/memory/autoMemory.js.map +1 -1
  94. package/dist/memory/clearedArchive.js +120 -0
  95. package/dist/memory/clearedArchive.js.map +1 -0
  96. package/dist/memory/compaction.js +178 -15
  97. package/dist/memory/compaction.js.map +1 -1
  98. package/dist/memory/counters.js +64 -0
  99. package/dist/memory/counters.js.map +1 -0
  100. package/dist/memory/projectNotes.js +61 -13
  101. package/dist/memory/projectNotes.js.map +1 -1
  102. package/dist/memory/rewind.js +6 -2
  103. package/dist/memory/rewind.js.map +1 -1
  104. package/dist/memory/session.js +13 -5
  105. package/dist/memory/session.js.map +1 -1
  106. package/dist/memory/sessionMemory.js +6 -2
  107. package/dist/memory/sessionMemory.js.map +1 -1
  108. package/dist/memory/store.js +3 -0
  109. package/dist/memory/store.js.map +1 -1
  110. package/dist/memory/types.js.map +1 -1
  111. package/dist/memory/workingSet.js +0 -375
  112. package/dist/memory/workingSet.js.map +1 -1
  113. package/dist/project/context.js +54 -7
  114. package/dist/project/context.js.map +1 -1
  115. package/dist/tools/approval.js +19 -4
  116. package/dist/tools/approval.js.map +1 -1
  117. package/dist/tools/backgroundShells.js +8 -1
  118. package/dist/tools/backgroundShells.js.map +1 -1
  119. package/dist/tools/browser.js +2 -1
  120. package/dist/tools/browser.js.map +1 -1
  121. package/dist/tools/checkpoints.js +28 -4
  122. package/dist/tools/checkpoints.js.map +1 -1
  123. package/dist/tools/childEnv.js +50 -0
  124. package/dist/tools/childEnv.js.map +1 -0
  125. package/dist/tools/codeIntel.js +4 -1
  126. package/dist/tools/codeIntel.js.map +1 -1
  127. package/dist/tools/commandParse.js +238 -0
  128. package/dist/tools/commandParse.js.map +1 -0
  129. package/dist/tools/commandPolicy.js +283 -0
  130. package/dist/tools/commandPolicy.js.map +1 -0
  131. package/dist/tools/detail.js +113 -1
  132. package/dist/tools/detail.js.map +1 -1
  133. package/dist/tools/edit.js +2 -1
  134. package/dist/tools/edit.js.map +1 -1
  135. package/dist/tools/editRipple.js +18 -3
  136. package/dist/tools/editRipple.js.map +1 -1
  137. package/dist/tools/editTarget.js +11 -6
  138. package/dist/tools/editTarget.js.map +1 -1
  139. package/dist/tools/governorTools.js +61 -1
  140. package/dist/tools/governorTools.js.map +1 -1
  141. package/dist/tools/grep.js +13 -5
  142. package/dist/tools/grep.js.map +1 -1
  143. package/dist/tools/guard.js +249 -2
  144. package/dist/tools/guard.js.map +1 -1
  145. package/dist/tools/invisible.js +62 -0
  146. package/dist/tools/invisible.js.map +1 -0
  147. package/dist/tools/killTree.js +3 -0
  148. package/dist/tools/killTree.js.map +1 -1
  149. package/dist/tools/readFile.js +11 -3
  150. package/dist/tools/readFile.js.map +1 -1
  151. package/dist/tools/readSymbol.js +5 -24
  152. package/dist/tools/readSymbol.js.map +1 -1
  153. package/dist/tools/rebuildDetail.js +155 -0
  154. package/dist/tools/rebuildDetail.js.map +1 -0
  155. package/dist/tools/replaceSymbol.js +1 -1
  156. package/dist/tools/replaceSymbol.js.map +1 -1
  157. package/dist/tools/ripgrepShell.js +56 -0
  158. package/dist/tools/ripgrepShell.js.map +1 -0
  159. package/dist/tools/runCommand.js +77 -18
  160. package/dist/tools/runCommand.js.map +1 -1
  161. package/dist/tools/runsLater.js +50 -0
  162. package/dist/tools/runsLater.js.map +1 -0
  163. package/dist/tools/serverConsent.js +27 -0
  164. package/dist/tools/serverConsent.js.map +1 -0
  165. package/dist/tools/ui.js +81 -1
  166. package/dist/tools/ui.js.map +1 -1
  167. package/dist/tools/untrusted.js +22 -1
  168. package/dist/tools/untrusted.js.map +1 -1
  169. package/dist/tools/viewImage.js +2 -2
  170. package/dist/tools/viewImage.js.map +1 -1
  171. package/dist/tools/webFetch.js +76 -8
  172. package/dist/tools/webFetch.js.map +1 -1
  173. package/dist/tools/workspace.js +87 -24
  174. package/dist/tools/workspace.js.map +1 -1
  175. package/dist/tools/writeFile.js +9 -4
  176. package/dist/tools/writeFile.js.map +1 -1
  177. package/package.json +4 -4
@@ -15,7 +15,8 @@
15
15
  * per-root chassis landed, and it described the tool as weaker than it is.
16
16
  */
17
17
  import { promises as fs } from "node:fs";
18
- import { basename, isAbsolute, resolve } from "node:path";
18
+ import { homedir, tmpdir } from "node:os";
19
+ import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
19
20
  import { canonicalRoot, rootLabel, rootsOf } from "./paths.js";
20
21
  import { discoverRelatedRoots } from "./workspaceDiscover.js";
21
22
  import { startChassis, stopChassis } from "../alternator/lane.js";
@@ -37,9 +38,10 @@ export const workspaceTool = {
37
38
  // channel to ask through), which the model has to be able to act on.
38
39
  description: "Widen this session's workspace so you can read, search and edit across more than " +
39
40
  "one folder: a separate backend, a frontend, a shared library.\n" +
40
- "With a `path` it adds THAT folder. Use it when the user asks to include a " +
41
- "directory, or when you NOTICE the task reaching into a folder that is not in the " +
42
- "workspace yet — in that case set `proactive: true`, which asks the user first.\n" +
41
+ "With a `path` it adds THAT folder, after the user confirms. Use it when the user asks " +
42
+ "to include a directory, or when you NOTICE the task reaching into a folder that is not " +
43
+ "in the workspace yet (then set `proactive: true`, so the question says why). A home " +
44
+ "folder, a drive root or a system folder is never added this way.\n" +
43
45
  "With NO `path` it DISCOVERS the rest of the project — monorepo members, sibling " +
44
46
  "repos, a backend beside a frontend — and offers the whole set. Use it when the task " +
45
47
  "clearly spans the project. It finds folders by their project files, not by " +
@@ -60,7 +62,7 @@ export const workspaceTool = {
60
62
  proactive: {
61
63
  type: "boolean",
62
64
  description: "Adding a known path only: set true when YOU spotted the need (not an explicit user " +
63
- "request); the user is asked to confirm first. Discovery always asks regardless.",
65
+ "request), so the question tells the user why. Every add asks either way.",
64
66
  },
65
67
  },
66
68
  },
@@ -72,25 +74,35 @@ export const workspaceTool = {
72
74
  };
73
75
  async function addOne(args, ctx, raw) {
74
76
  const abs = isAbsolute(raw) ? resolve(raw) : resolve(ctx.cwd, raw);
75
- // Proactive adds (the model noticed) ask first; explicit requests just add.
76
- if (args.proactive === true) {
77
- if (!(await isDir(abs)))
78
- return fail(`directory not found: ${abs}`);
79
- // With no way to ask, a proactive add must NOT happen. The old guard folded the
80
- // missing channel into the condition, so exactly the case that needed consent
81
- // silently proceeded without it — and that is the case a sub-agent is in.
82
- if (!ctx.requestApproval) {
83
- return {
84
- output: `Did not add '${basename(abs)}' to the workspace: widening it needs the user's ` +
85
- `agreement and there is no way to ask from here. Work within the current roots, ` +
86
- `and if you genuinely need that folder, say so in your result.`,
87
- summary: "cannot ask to widen workspace",
88
- };
89
- }
90
- const choice = await ctx.requestApproval(`This work also reaches into '${basename(abs)}' (${abs}), which isn't in the workspace. Include it?`, ["Yes, include it", "No, stay in the current folder"]);
91
- if (!choice.startsWith("Yes")) {
92
- return { output: `Left '${basename(abs)}' out of the workspace at the user's request.`, summary: "kept workspace as-is" };
93
- }
77
+ // Every add the MODEL makes asks first. Whether a request was "explicit" is the
78
+ // model's own claim, and leaving `proactive` out was enough to widen the workspace
79
+ // to any folder (the home folder included) with no question, after which writes
80
+ // there no longer counted as outside the workspace. The user's own /include does
81
+ // not come through here.
82
+ if (!(await isDir(abs)))
83
+ return fail(`directory not found: ${abs}`);
84
+ const broad = tooBroadReason(abs);
85
+ if (broad) {
86
+ return {
87
+ output: `Did not add '${abs}' to the workspace: it is ${broad}, and adding it would make ` +
88
+ `everything under it count as the project. Work within the current roots; if the user ` +
89
+ `really wants this folder, they can add it themselves with /include.`,
90
+ summary: "refused: folder too broad",
91
+ };
92
+ }
93
+ // With no way to ask, the add must NOT happen. That is the case a sub-agent is in.
94
+ if (!ctx.requestApproval) {
95
+ return {
96
+ output: `Did not add '${basename(abs)}' to the workspace: widening it needs the user's ` +
97
+ `agreement and there is no way to ask from here. Work within the current roots, ` +
98
+ `and if you genuinely need that folder, say so in your result.`,
99
+ summary: "cannot ask to widen workspace",
100
+ };
101
+ }
102
+ const why = args.proactive === true ? "This work also reaches into" : "Add to the workspace:";
103
+ const choice = await ctx.requestApproval(`${why} '${basename(abs)}' (${abs}), which isn't in the workspace. Include it?`, ["Yes, include it", "No, stay in the current folder"]);
104
+ if (!choice.startsWith("Yes")) {
105
+ return { output: `Left '${basename(abs)}' out of the workspace at the user's request.`, summary: "kept workspace as-is" };
94
106
  }
95
107
  const result = await addRoot(ctx, abs);
96
108
  if (result.error)
@@ -103,6 +115,57 @@ async function addOne(args, ctx, raw) {
103
115
  summary: `added root '${result.label}'`,
104
116
  };
105
117
  }
118
+ /**
119
+ * Why `abs` is too broad for the model to add, or null (pure but for the environment).
120
+ *
121
+ * The workspace is the boundary the "write outside the workspace?" question guards.
122
+ * These folders would switch it off for everything that matters: the whole home folder
123
+ * (and anything above it, or a drive root), the folders programs start from and keep
124
+ * their settings in, keys, Mindweave's own state, and the operating system.
125
+ */
126
+ export function tooBroadReason(abs) {
127
+ const win = process.platform === "win32";
128
+ const norm = (p) => {
129
+ const r = resolve(p);
130
+ return win ? r.toLowerCase() : r;
131
+ };
132
+ const target = norm(abs);
133
+ const isOrUnder = (dir) => {
134
+ const d = norm(dir);
135
+ const rel = relative(d, target);
136
+ return rel === "" || (!rel.startsWith("..") && !isAbsolute(rel));
137
+ };
138
+ if (dirname(target) === target)
139
+ return "the root of a drive";
140
+ const home = homedir();
141
+ const homeRel = relative(target, norm(home));
142
+ if (homeRel === "" || (!homeRel.startsWith("..") && !isAbsolute(homeRel))) {
143
+ return "your home folder or a folder that contains it";
144
+ }
145
+ // The temporary folder sits inside AppData on Windows and under /var on macOS, and a
146
+ // folder made there is ordinary scratch space.
147
+ if (isOrUnder(tmpdir()) && norm(tmpdir()) !== target)
148
+ return null;
149
+ const env = process.env;
150
+ const sensitive = [
151
+ join(home, ".ssh"),
152
+ join(home, ".gnupg"),
153
+ join(home, ".aws"),
154
+ join(home, ".config"),
155
+ join(home, ".local"),
156
+ join(home, ".mindweave"),
157
+ join(home, "Library"),
158
+ ...(win ? [env.APPDATA, env.LOCALAPPDATA, join(home, "AppData")] : []),
159
+ ].filter((d) => !!d);
160
+ if (sensitive.some(isOrUnder))
161
+ return "a folder where keys, settings or startup programs live";
162
+ const system = win
163
+ ? [env.SystemRoot, env.ProgramFiles, env["ProgramFiles(x86)"], env.ProgramData].filter((d) => !!d)
164
+ : ["/etc", "/usr", "/bin", "/sbin", "/boot", "/System", "/Library", "/private/etc", "/var"];
165
+ if (system.some(isOrUnder))
166
+ return "a system folder";
167
+ return null;
168
+ }
106
169
  // "The user is asked to confirm" was unconditionally true in the old text and
107
170
  // conditionally true in the code. It is now unconditional in both.
108
171
  async function discoverAll(ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,qFAAqF;IACrF,kFAAkF;IAClF,+EAA+E;IAC/E,qEAAqE;IACrE,WAAW,EACT,mFAAmF;QACnF,iEAAiE;QACjE,wFAAwF;QACxF,yFAAyF;QACzF,sFAAsF;QACtF,oEAAoE;QACpE,kFAAkF;QAClF,sFAAsF;QACtF,6EAA6E;QAC7E,kDAAkD;QAClD,qFAAqF;QACrF,mFAAmF;QACnF,mFAAmF;QACnF,sFAAsF;QACtF,8EAA8E;IAChF,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,+GAA+G;aAClH;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,qFAAqF;oBACrF,0EAA0E;aAC7E;SACF;KACF;IAED,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,yEAAyE;QACzE,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;CACF,CAAC;AAEF,KAAK,UAAU,MAAM,CACnB,IAA6B,EAC7B,GAAmC,EACnC,GAAW;IAET,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEnE,gFAAgF;IAChF,mFAAmF;IACnF,gFAAgF;IAChF,iFAAiF;IACjF,yBAAyB;IACzB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,MAAM,EACJ,gBAAgB,GAAG,6BAA6B,KAAK,6BAA6B;gBAClF,uFAAuF;gBACvF,qEAAqE;YACvE,OAAO,EAAE,2BAA2B;SACrC,CAAC;IACJ,CAAC;IACD,mFAAmF;IACnF,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO;YACL,MAAM,EACJ,gBAAgB,QAAQ,CAAC,GAAG,CAAC,mDAAmD;gBAChF,iFAAiF;gBACjF,+DAA+D;YACjE,OAAO,EAAE,+BAA+B;SACzC,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAC9F,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CACtC,GAAG,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,8CAA8C,EAC/E,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CACtD,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,SAAS,QAAQ,CAAC,GAAG,CAAC,+CAA+C,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAC5H,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,gCAAgC,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,iBAAiB,EAAE,CAAC;IACzG,CAAC;IACD,OAAO;QACL,MAAM,EAAE,UAAU,GAAG,0BAA0B,MAAM,CAAC,KAAK,8DAA8D,MAAM,CAAC,KAAK,MAAM;QAC3I,OAAO,EAAE,eAAe,MAAM,CAAC,KAAK,GAAG;KACxC,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAChC,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,MAAM;QAAE,OAAO,qBAAqB,CAAC;IAC7D,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,+CAA+C,CAAC;IACzD,CAAC;IACD,qFAAqF;IACrF,+CAA+C;IAC/C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,MAAM,SAAS,GAAG;QAChB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,wDAAwD,CAAC;IAC/F,MAAM,MAAM,GAAG,GAAG;QAChB,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAC9F,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,mEAAmE;AACnE,KAAK,UAAU,WAAW,CAAC,GAAmC;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,EAAE,mFAAmF,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IACrI,CAAC;IAED,oFAAoF;IACpF,qFAAqF;IACrF,mFAAmF;IACnF,0EAA0E;IAC1E,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO;YACL,MAAM,EACJ,SAAS,OAAO,CAAC,MAAM,kBAAkB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,eAAe;gBACvF,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,kDAAkD;gBACzF,sEAAsE;gBACtE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACvD,OAAO,EAAE,8BAA8B;SACxC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CACtC,uDAAuD,IAAI,iBAAiB,EAC5E,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAC5B,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,iDAAiD,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACjG,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,IAAI,GAAG,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;aACxC,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IACD,iFAAiF;IACjF,gEAAgE;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,MAAM,EAAE,8BAA8B,IAAI,IAAI,+CAA+C,EAAE;YAC/F,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,oBAAoB;SAC9F,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EACJ,UAAU,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,uBAAuB;YACpF,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2EAA2E,IAAI,EAAE;QACtG,OAAO,EAAE,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;KAC9F,CAAC;AACN,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAgB,EAChB,SAAiB;IAEjB,iFAAiF;IACjF,kFAAkF;IAClF,4EAA4E;IAC5E,kFAAkF;IAClF,iFAAiF;IACjF,mFAAmF;IACnF,8EAA8E;IAC9E,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,uBAAuB,EAAE,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,wBAAwB,SAAS,EAAE,EAAE,CAAC;IACxD,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IAChF,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5B,kFAAkF;IAClF,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,GAAG,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,UAAU,CAAC,GAAgB,EAAE,WAAmB;IAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;IAC9F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CACrH,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,WAAW,IAAI,EAAE,CAAC;IACxE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IAC7C,mEAAmE;IACnE,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACzC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;IACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC"}
@@ -15,8 +15,9 @@
15
15
  */
16
16
  import { promises as fs } from "node:fs";
17
17
  import { dirname } from "node:path";
18
- import { foreignAgentReason, protectedPathReason } from "./guard.js";
19
- import { forbiddenPathReason } from "../governor/forbidden.js";
18
+ import { foreignAgentReason, guardedPathReason } from "./guard.js";
19
+ import { forbiddenRealPathReason } from "../governor/forbidden.js";
20
+ import { requestRunsLaterWrite } from "./runsLater.js";
20
21
  import { requestAgentDataAccess, requestForbiddenLift, requestOutsideWorkspaceWrite } from "./approval.js";
21
22
  import { recordWrite, relativize, resolvePath } from "./paths.js";
22
23
  import { FULL_DETAIL_MAX, writeDetail, withScope } from "./detail.js";
@@ -68,7 +69,7 @@ export const writeFile = {
68
69
  }
69
70
  const content = args.content;
70
71
  const filePath = resolvePath(ctx, rawPath);
71
- const blocked = protectedPathReason(filePath);
72
+ const blocked = await guardedPathReason(filePath);
72
73
  if (blocked) {
73
74
  return fail(`Refusing to write ${rawPath}: it is ${blocked}.`);
74
75
  }
@@ -79,7 +80,7 @@ export const writeFile = {
79
80
  if (denied)
80
81
  return denied;
81
82
  }
82
- const forbidden = forbiddenPathReason(ctx.governance?.forbidden, filePath, ctx.roots ?? []);
83
+ const forbidden = await forbiddenRealPathReason(ctx.governance?.forbidden, filePath, ctx.roots ?? []);
83
84
  if (forbidden) {
84
85
  const lift = await requestForbiddenLift(ctx, forbidden, `writing ${rawPath}`, `the user has forbidden touching '${forbidden}'.`);
85
86
  if (lift)
@@ -89,6 +90,10 @@ export const writeFile = {
89
90
  const outside = await requestOutsideWorkspaceWrite(ctx, filePath, `writing ${rawPath}`);
90
91
  if (outside)
91
92
  return outside;
93
+ // A file that runs code later (an editor task, a hook, a workflow) asks first.
94
+ const later = await requestRunsLaterWrite(ctx, filePath, rawPath, content);
95
+ if (later)
96
+ return later;
92
97
  let existed = false;
93
98
  try {
94
99
  const stat = await fs.stat(filePath);
@@ -1 +1 @@
1
- {"version":3,"file":"writeFile.js","sourceRoot":"","sources":["../../src/tools/writeFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writeFile.js","sourceRoot":"","sources":["../../src/tools/writeFile.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mindweave",
3
- "version": "3.0.1",
3
+ "version": "3.2.0",
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/tools/webSecurity.test.ts src/tools/codeIntel.test.ts src/memory/resumeFidelity.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/sessionMemoryCompact.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/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/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/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/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/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/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/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/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/wheelAccel.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/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/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",
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": {
@@ -48,7 +48,7 @@
48
48
  },
49
49
  "dependencies": {
50
50
  "@anthropic-ai/sdk": "^0.115.0",
51
- "adm-zip": "^0.6.0",
51
+ "adm-zip": "^0.6.1",
52
52
  "chalk": "^5.6.2",
53
53
  "cli-highlight": "^2.1.11",
54
54
  "ink": "^7.1.1",