mindweave 2.5.0 → 3.0.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 (255) hide show
  1. package/README.md +81 -145
  2. package/dist/cli/App.js +579 -304
  3. package/dist/cli/App.js.map +1 -1
  4. package/dist/cli/analytics.js +27 -18
  5. package/dist/cli/analytics.js.map +1 -1
  6. package/dist/cli/attachments.js +34 -0
  7. package/dist/cli/attachments.js.map +1 -1
  8. package/dist/cli/bannerFit.js +70 -0
  9. package/dist/cli/bannerFit.js.map +1 -0
  10. package/dist/cli/bootstrap.js +41 -3
  11. package/dist/cli/bootstrap.js.map +1 -1
  12. package/dist/cli/commands.js +4 -1
  13. package/dist/cli/commands.js.map +1 -1
  14. package/dist/cli/components/ApprovalBox.js +3 -2
  15. package/dist/cli/components/ApprovalBox.js.map +1 -1
  16. package/dist/cli/components/BlockView.js +27 -6
  17. package/dist/cli/components/BlockView.js.map +1 -1
  18. package/dist/cli/components/FirstRunFrame.js +2 -1
  19. package/dist/cli/components/FirstRunFrame.js.map +1 -1
  20. package/dist/cli/components/KeyManager.js +5 -4
  21. package/dist/cli/components/KeyManager.js.map +1 -1
  22. package/dist/cli/components/KeySetup.js +29 -13
  23. package/dist/cli/components/KeySetup.js.map +1 -1
  24. package/dist/cli/components/MarathonBox.js +64 -0
  25. package/dist/cli/components/MarathonBox.js.map +1 -0
  26. package/dist/cli/components/McpMinitabs.js +8 -7
  27. package/dist/cli/components/McpMinitabs.js.map +1 -1
  28. package/dist/cli/components/Picker.js +4 -3
  29. package/dist/cli/components/Picker.js.map +1 -1
  30. package/dist/cli/components/PromptInput.js +47 -8
  31. package/dist/cli/components/PromptInput.js.map +1 -1
  32. package/dist/cli/components/PulseDot.js +42 -0
  33. package/dist/cli/components/PulseDot.js.map +1 -0
  34. package/dist/cli/components/SubagentView.js +9 -6
  35. package/dist/cli/components/SubagentView.js.map +1 -1
  36. package/dist/cli/components/TipLine.js +2 -1
  37. package/dist/cli/components/TipLine.js.map +1 -1
  38. package/dist/cli/components/ToolGroup.js +65 -49
  39. package/dist/cli/components/ToolGroup.js.map +1 -1
  40. package/dist/cli/components/ToolLine.js +20 -19
  41. package/dist/cli/components/ToolLine.js.map +1 -1
  42. package/dist/cli/components/TrustGate.js +2 -1
  43. package/dist/cli/components/TrustGate.js.map +1 -1
  44. package/dist/cli/components/minitabs.js +3 -2
  45. package/dist/cli/components/minitabs.js.map +1 -1
  46. package/dist/cli/desktopApp.js +45 -0
  47. package/dist/cli/desktopApp.js.map +1 -0
  48. package/dist/cli/help.js +1 -0
  49. package/dist/cli/help.js.map +1 -1
  50. package/dist/cli/inkOutputPatch.js +285 -0
  51. package/dist/cli/inkOutputPatch.js.map +1 -0
  52. package/dist/cli/inkSpeed.js +29 -0
  53. package/dist/cli/inkSpeed.js.map +1 -0
  54. package/dist/cli/inkSpeedLoader.js +47 -0
  55. package/dist/cli/inkSpeedLoader.js.map +1 -0
  56. package/dist/cli/inputText.js +30 -0
  57. package/dist/cli/inputText.js.map +1 -0
  58. package/dist/cli/keyManager.js +2 -1
  59. package/dist/cli/keyManager.js.map +1 -1
  60. package/dist/cli/keyPrefs.js +90 -0
  61. package/dist/cli/keyPrefs.js.map +1 -0
  62. package/dist/cli/keySetup.js +5 -2
  63. package/dist/cli/keySetup.js.map +1 -1
  64. package/dist/cli/marathonUi.js +113 -0
  65. package/dist/cli/marathonUi.js.map +1 -0
  66. package/dist/cli/markdown.js +63 -11
  67. package/dist/cli/markdown.js.map +1 -1
  68. package/dist/cli/modes.js +3 -3
  69. package/dist/cli/modes.js.map +1 -1
  70. package/dist/cli/prodEnv.js +43 -0
  71. package/dist/cli/prodEnv.js.map +1 -0
  72. package/dist/cli/revealPace.js +5 -5
  73. package/dist/cli/revealPace.js.map +1 -1
  74. package/dist/cli/revealQueue.js +120 -0
  75. package/dist/cli/revealQueue.js.map +1 -0
  76. package/dist/cli/theme.js +47 -0
  77. package/dist/cli/theme.js.map +1 -0
  78. package/dist/cli/toolDisplay.js +112 -18
  79. package/dist/cli/toolDisplay.js.map +1 -1
  80. package/dist/cli/transcript.js +1 -1
  81. package/dist/cli/transcript.js.map +1 -1
  82. package/dist/cli/virtualWindow.js +14 -2
  83. package/dist/cli/virtualWindow.js.map +1 -1
  84. package/dist/cli/wheelAccel.js +73 -0
  85. package/dist/cli/wheelAccel.js.map +1 -0
  86. package/dist/cli/widestLinePatch.js +48 -0
  87. package/dist/cli/widestLinePatch.js.map +1 -0
  88. package/dist/cli/workingVerb.js +88 -28
  89. package/dist/cli/workingVerb.js.map +1 -1
  90. package/dist/cli/wrap.js +1 -1
  91. package/dist/cli/wrap.js.map +1 -1
  92. package/dist/core/contextSettings.js +84 -0
  93. package/dist/core/contextSettings.js.map +1 -0
  94. package/dist/core/limitsView.js +40 -0
  95. package/dist/core/limitsView.js.map +1 -0
  96. package/dist/core/mcpServers.js +164 -0
  97. package/dist/core/mcpServers.js.map +1 -0
  98. package/dist/core/permissions.js +209 -0
  99. package/dist/core/permissions.js.map +1 -0
  100. package/dist/core/providerKeys.js +187 -0
  101. package/dist/core/providerKeys.js.map +1 -0
  102. package/dist/core/rulesSkills.js +142 -0
  103. package/dist/core/rulesSkills.js.map +1 -0
  104. package/dist/core/spendView.js +90 -0
  105. package/dist/core/spendView.js.map +1 -0
  106. package/dist/core/turnRunner.js +759 -0
  107. package/dist/core/turnRunner.js.map +1 -0
  108. package/dist/drivers/anthropic/client.js +101 -26
  109. package/dist/drivers/anthropic/client.js.map +1 -1
  110. package/dist/drivers/anthropic/manifest.js +43 -13
  111. package/dist/drivers/anthropic/manifest.js.map +1 -1
  112. package/dist/drivers/cerebras/manifest.js +13 -3
  113. package/dist/drivers/cerebras/manifest.js.map +1 -1
  114. package/dist/drivers/deepseek/manifest.js +24 -34
  115. package/dist/drivers/deepseek/manifest.js.map +1 -1
  116. package/dist/drivers/glm/manifest.js +21 -6
  117. package/dist/drivers/glm/manifest.js.map +1 -1
  118. package/dist/drivers/groq/manifest.js +5 -2
  119. package/dist/drivers/groq/manifest.js.map +1 -1
  120. package/dist/drivers/kimi/manifest.js +13 -10
  121. package/dist/drivers/kimi/manifest.js.map +1 -1
  122. package/dist/drivers/meta/manifest.js +21 -16
  123. package/dist/drivers/meta/manifest.js.map +1 -1
  124. package/dist/drivers/minimax/manifest.js +15 -12
  125. package/dist/drivers/minimax/manifest.js.map +1 -1
  126. package/dist/drivers/ollama/catalog.js +71 -0
  127. package/dist/drivers/ollama/catalog.js.map +1 -0
  128. package/dist/drivers/ollama/client.js +164 -0
  129. package/dist/drivers/ollama/client.js.map +1 -0
  130. package/dist/drivers/ollama/endpoint.js +42 -0
  131. package/dist/drivers/ollama/endpoint.js.map +1 -0
  132. package/dist/drivers/ollama/index.js +5 -0
  133. package/dist/drivers/ollama/index.js.map +1 -0
  134. package/dist/drivers/ollama/manifest.js +64 -0
  135. package/dist/drivers/ollama/manifest.js.map +1 -0
  136. package/dist/drivers/openai/client.js +10 -4
  137. package/dist/drivers/openai/client.js.map +1 -1
  138. package/dist/drivers/openai/manifest.js +69 -18
  139. package/dist/drivers/openai/manifest.js.map +1 -1
  140. package/dist/drivers/qwen/manifest.js +19 -6
  141. package/dist/drivers/qwen/manifest.js.map +1 -1
  142. package/dist/drivers/registry.js +11 -0
  143. package/dist/drivers/registry.js.map +1 -1
  144. package/dist/drivers/retryPolicy.js +26 -1
  145. package/dist/drivers/retryPolicy.js.map +1 -1
  146. package/dist/drivers/xai/client.js +12 -10
  147. package/dist/drivers/xai/client.js.map +1 -1
  148. package/dist/drivers/xai/manifest.js +62 -25
  149. package/dist/drivers/xai/manifest.js.map +1 -1
  150. package/dist/dynamo/auxModel.js +54 -0
  151. package/dist/dynamo/auxModel.js.map +1 -0
  152. package/dist/dynamo/engine.js +407 -99
  153. package/dist/dynamo/engine.js.map +1 -1
  154. package/dist/dynamo/guard.js +10 -0
  155. package/dist/dynamo/guard.js.map +1 -1
  156. package/dist/dynamo/liveMeter.js +25 -6
  157. package/dist/dynamo/liveMeter.js.map +1 -1
  158. package/dist/dynamo/marathon.js +409 -0
  159. package/dist/dynamo/marathon.js.map +1 -0
  160. package/dist/dynamo/marathonPrompt.js +45 -0
  161. package/dist/dynamo/marathonPrompt.js.map +1 -0
  162. package/dist/dynamo/model.js +6 -2
  163. package/dist/dynamo/model.js.map +1 -1
  164. package/dist/dynamo/toolBatches.js +58 -0
  165. package/dist/dynamo/toolBatches.js.map +1 -0
  166. package/dist/dynamo/usageLimits.js +446 -0
  167. package/dist/dynamo/usageLimits.js.map +1 -0
  168. package/dist/governor/freshness.js +10 -7
  169. package/dist/governor/freshness.js.map +1 -1
  170. package/dist/governor/index.js +76 -9
  171. package/dist/governor/index.js.map +1 -1
  172. package/dist/governor/write.js +43 -14
  173. package/dist/governor/write.js.map +1 -1
  174. package/dist/index.js +18 -151
  175. package/dist/index.js.map +1 -1
  176. package/dist/main.js +162 -0
  177. package/dist/main.js.map +1 -0
  178. package/dist/mcp/manager.js +18 -0
  179. package/dist/mcp/manager.js.map +1 -1
  180. package/dist/memory/allMetas.js +69 -0
  181. package/dist/memory/allMetas.js.map +1 -0
  182. package/dist/memory/compaction.js +70 -15
  183. package/dist/memory/compaction.js.map +1 -1
  184. package/dist/memory/earlier.js +15 -0
  185. package/dist/memory/earlier.js.map +1 -0
  186. package/dist/memory/profile.js +93 -0
  187. package/dist/memory/profile.js.map +1 -0
  188. package/dist/memory/rewind.js +262 -0
  189. package/dist/memory/rewind.js.map +1 -0
  190. package/dist/memory/session.js +42 -10
  191. package/dist/memory/session.js.map +1 -1
  192. package/dist/memory/sessionMemory.js +48 -13
  193. package/dist/memory/sessionMemory.js.map +1 -1
  194. package/dist/memory/sessionMemoryCompact.js +1 -1
  195. package/dist/memory/sessionMemoryCompact.js.map +1 -1
  196. package/dist/memory/sessionTitle.js +50 -0
  197. package/dist/memory/sessionTitle.js.map +1 -0
  198. package/dist/memory/store.js +42 -1
  199. package/dist/memory/store.js.map +1 -1
  200. package/dist/memory/types.js.map +1 -1
  201. package/dist/tools/askUser.js +14 -0
  202. package/dist/tools/askUser.js.map +1 -1
  203. package/dist/tools/backgroundShells.js +208 -5
  204. package/dist/tools/backgroundShells.js.map +1 -1
  205. package/dist/tools/browser.js +176 -0
  206. package/dist/tools/browser.js.map +1 -0
  207. package/dist/tools/cdp.js +165 -0
  208. package/dist/tools/cdp.js.map +1 -0
  209. package/dist/tools/checkpoints.js +208 -5
  210. package/dist/tools/checkpoints.js.map +1 -1
  211. package/dist/tools/deferredNative.js +2 -0
  212. package/dist/tools/deferredNative.js.map +1 -1
  213. package/dist/tools/detail.js +9 -6
  214. package/dist/tools/detail.js.map +1 -1
  215. package/dist/tools/edit.js +2 -1
  216. package/dist/tools/edit.js.map +1 -1
  217. package/dist/tools/exitPlan.js +4 -0
  218. package/dist/tools/exitPlan.js.map +1 -1
  219. package/dist/tools/hiddenDesktop.js +273 -0
  220. package/dist/tools/hiddenDesktop.js.map +1 -0
  221. package/dist/tools/listeningPorts.js +134 -0
  222. package/dist/tools/listeningPorts.js.map +1 -0
  223. package/dist/tools/mcpSearch.js +8 -0
  224. package/dist/tools/mcpSearch.js.map +1 -1
  225. package/dist/tools/mindweaveStatus.js +1 -1
  226. package/dist/tools/mindweaveStatus.js.map +1 -1
  227. package/dist/tools/registry.js +3 -0
  228. package/dist/tools/registry.js.map +1 -1
  229. package/dist/tools/replaceSymbol.js +2 -1
  230. package/dist/tools/replaceSymbol.js.map +1 -1
  231. package/dist/tools/runCommand.js +113 -9
  232. package/dist/tools/runCommand.js.map +1 -1
  233. package/dist/tools/screenshot.js +4 -6
  234. package/dist/tools/screenshot.js.map +1 -1
  235. package/dist/tools/screenshotWin.js +26 -9
  236. package/dist/tools/screenshotWin.js.map +1 -1
  237. package/dist/tools/stateCheckpoint.js +128 -0
  238. package/dist/tools/stateCheckpoint.js.map +1 -0
  239. package/dist/tools/todo.js +6 -0
  240. package/dist/tools/todo.js.map +1 -1
  241. package/dist/tools/ui.js +1295 -0
  242. package/dist/tools/ui.js.map +1 -0
  243. package/dist/tools/uiHide.js +356 -0
  244. package/dist/tools/uiHide.js.map +1 -0
  245. package/dist/tools/uiPage.js +861 -0
  246. package/dist/tools/uiPage.js.map +1 -0
  247. package/dist/tools/uiWin.js +506 -0
  248. package/dist/tools/uiWin.js.map +1 -0
  249. package/dist/tools/webFetch.js +32 -25
  250. package/dist/tools/webFetch.js.map +1 -1
  251. package/dist/tools/webSearch.js +12 -0
  252. package/dist/tools/webSearch.js.map +1 -1
  253. package/dist/tools/writeFile.js +2 -1
  254. package/dist/tools/writeFile.js.map +1 -1
  255. package/package.json +78 -75
@@ -0,0 +1,128 @@
1
+ /**
2
+ * stateCheckpoint.ts — what the agent saves about itself goes into the undo net too.
3
+ *
4
+ * Memories, rules, skills, protected paths and MCP servers are all files, but the tools
5
+ * that write them (save_memory, governor, skill, mcp_server) write through their own
6
+ * helpers rather than the edit tools, so none of it was checkpointed: `/undo` and a
7
+ * rewind put the project back and left behind a rule, a memory or a server added by the
8
+ * very turns being taken back.
9
+ *
10
+ * So those tools are wrapped rather than rewritten: the files they could touch are read
11
+ * before the call and again after, and whatever changed is handed to the checkpoints
12
+ * exactly as an edit would be. From there the existing machinery does the rest,
13
+ * including leaving alone anything the user has changed since.
14
+ */
15
+ import { promises as fs } from "node:fs";
16
+ import { join } from "node:path";
17
+ import { projectDir, stateRoot } from "../memory/store.js";
18
+ import { memoryDir, MEMORY_INDEX } from "../memory/autoMemory.js";
19
+ import { globalConfigPath, projectConfigPath } from "../mcp/config.js";
20
+ /** The tools that write the agent's own state. */
21
+ const STATE_TOOLS = new Set(["save_memory", "governor", "skill", "mcp_server"]);
22
+ /** The permission lists of one scope, by file name. */
23
+ const PERMISSION_FILES = ["forbidden.md", "forbidden-commands.md", "forbidden-mcp-tools.md", "sentinel-allow.md"];
24
+ /** Whether a tool writes agent state that needs snapshotting around it. */
25
+ export function writesAgentState(toolName) {
26
+ return STATE_TOOLS.has(toolName);
27
+ }
28
+ /** The project root the governance tools write under (see governorTools' projectRoot). */
29
+ function rootOf(ctx) {
30
+ return ctx.governance?.forbidden.root ?? ctx.cwd;
31
+ }
32
+ async function filesUnder(dir, depth) {
33
+ let entries;
34
+ try {
35
+ entries = await fs.readdir(dir, { withFileTypes: true });
36
+ }
37
+ catch {
38
+ return [];
39
+ }
40
+ const out = [];
41
+ for (const e of entries) {
42
+ const path = join(dir, e.name);
43
+ if (e.isFile())
44
+ out.push(path);
45
+ else if (e.isDirectory() && depth > 0)
46
+ out.push(...(await filesUnder(path, depth - 1)));
47
+ }
48
+ return out;
49
+ }
50
+ /** Every file these tools can write, as it exists right now. */
51
+ async function candidates(ctx) {
52
+ const root = rootOf(ctx);
53
+ const project = projectDir(root);
54
+ const nested = await Promise.all([
55
+ filesUnder(join(project, "rules"), 0),
56
+ filesUnder(join(project, "skills"), 2),
57
+ filesUnder(memoryDir(root), 0),
58
+ ]);
59
+ return [
60
+ ...nested.flat(),
61
+ ...PERMISSION_FILES.map((f) => join(project, f)),
62
+ ...PERMISSION_FILES.map((f) => join(stateRoot(), f)),
63
+ projectConfigPath(root),
64
+ globalConfigPath(),
65
+ ];
66
+ }
67
+ async function readOrNull(path) {
68
+ try {
69
+ return await fs.readFile(path, "utf8");
70
+ }
71
+ catch {
72
+ return null;
73
+ }
74
+ }
75
+ /** Read everything a state tool could change, before it runs. */
76
+ export async function snapshotAgentState(ctx) {
77
+ const paths = await candidates(ctx);
78
+ const values = await Promise.all(paths.map(readOrNull));
79
+ return new Map(paths.map((p, i) => [p, values[i]]));
80
+ }
81
+ /**
82
+ * After the tool ran: hand every file it created, changed or deleted to the checkpoints,
83
+ * with what it was before. A file that appeared is recorded as "did not exist", so undo
84
+ * removes it; one that vanished is recorded as deleted, so undo puts it back.
85
+ */
86
+ export async function recordAgentStateChanges(ctx, before) {
87
+ const cp = ctx.checkpoints;
88
+ if (!cp)
89
+ return;
90
+ const paths = new Set([...before.keys(), ...(await candidates(ctx))]);
91
+ for (const path of paths) {
92
+ const was = before.get(path) ?? null;
93
+ const now = await readOrNull(path);
94
+ if (was !== now)
95
+ cp.backup(path, was, now);
96
+ }
97
+ }
98
+ const norm = (p) => p.replace(/\\/g, "/").toLowerCase();
99
+ /** Which agent state a path belongs to, or null for an ordinary project file. Every file
100
+ * in those places counts as agent state, the memory index and a skill's extra files too. */
101
+ export function stateKindOf(path, root) {
102
+ const project = projectDir(root);
103
+ const p = norm(path);
104
+ if (p === norm(projectConfigPath(root)) || p === norm(globalConfigPath()))
105
+ return "mcp";
106
+ if (p.startsWith(norm(memoryDir(root)) + "/"))
107
+ return "memory";
108
+ if (p.startsWith(norm(join(project, "rules")) + "/"))
109
+ return "rule";
110
+ if (p.startsWith(norm(join(project, "skills")) + "/"))
111
+ return "skill";
112
+ const name = p.split("/").pop() ?? "";
113
+ if (PERMISSION_FILES.includes(name) && (p.startsWith(norm(project) + "/") || p.startsWith(norm(stateRoot()) + "/")))
114
+ return "permission";
115
+ return null;
116
+ }
117
+ /** Whether this state file is one ITEM worth counting ("1 memory"), rather than an index
118
+ * or a skill's supporting file that changed along with it. */
119
+ export function isStateItem(path, root) {
120
+ const kind = stateKindOf(path, root);
121
+ const name = norm(path).split("/").pop() ?? "";
122
+ if (kind === "memory")
123
+ return name !== MEMORY_INDEX.toLowerCase();
124
+ if (kind === "skill")
125
+ return name === "skill.md";
126
+ return kind !== null;
127
+ }
128
+ //# sourceMappingURL=stateCheckpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateCheckpoint.js","sourceRoot":"","sources":["../../src/tools/stateCheckpoint.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,12 @@ export const todoWrite = {
75
75
  // All done → clear the list (a finished list disappears).
76
76
  const allDone = parsed.length > 0 && parsed.every((t) => t.status === "completed");
77
77
  ctx.todos = allDone ? [] : parsed;
78
+ // The structured copy for a front end's live checklist. The WHOLE list, sent before
79
+ // the all-done clear above takes effect, so the last tick can still be drawn. Lead
80
+ // agent only: a sub-agent inherits `emitEvent`, and its own private list would
81
+ // otherwise overwrite the one the user is watching.
82
+ if ((ctx.subagentDepth ?? 0) === 0)
83
+ ctx.emitEvent?.({ type: "todos", items: parsed });
78
84
  const inProgress = parsed.filter((t) => t.status === "in_progress").length;
79
85
  const notes = [];
80
86
  if (inProgress > 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"todo.js","sourceRoot":"","sources":["../../src/tools/todo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"todo.js","sourceRoot":"","sources":["../../src/tools/todo.ts"],"names":[],"mappings":"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"}