mindweave 3.0.0 → 3.1.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 (140) 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 +6 -6
  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/FirstRunFrame.js +1 -1
  15. package/dist/cli/components/MarathonBox.js +2 -1
  16. package/dist/cli/components/MarathonBox.js.map +1 -1
  17. package/dist/cli/marathonUi.js +2 -0
  18. package/dist/cli/marathonUi.js.map +1 -1
  19. package/dist/cli/startupArgs.js +1 -1
  20. package/dist/core/permissions.js +26 -1
  21. package/dist/core/permissions.js.map +1 -1
  22. package/dist/core/spendView.js +8 -1
  23. package/dist/core/spendView.js.map +1 -1
  24. package/dist/core/turnRunner.js +28 -2
  25. package/dist/core/turnRunner.js.map +1 -1
  26. package/dist/drivers/deepseek/inlineTools.js +36 -2
  27. package/dist/drivers/deepseek/inlineTools.js.map +1 -1
  28. package/dist/drivers/ollama/endpoint.js +25 -0
  29. package/dist/drivers/ollama/endpoint.js.map +1 -1
  30. package/dist/dynamo/engine.js +408 -88
  31. package/dist/dynamo/engine.js.map +1 -1
  32. package/dist/dynamo/guard.js +11 -4
  33. package/dist/dynamo/guard.js.map +1 -1
  34. package/dist/dynamo/hooks.js +209 -0
  35. package/dist/dynamo/hooks.js.map +1 -0
  36. package/dist/dynamo/marathon.js +67 -10
  37. package/dist/dynamo/marathon.js.map +1 -1
  38. package/dist/dynamo/todoReminder.js +26 -0
  39. package/dist/dynamo/todoReminder.js.map +1 -0
  40. package/dist/governor/forbidden.js +19 -0
  41. package/dist/governor/forbidden.js.map +1 -1
  42. package/dist/governor/freshness.js +1 -1
  43. package/dist/governor/freshness.js.map +1 -1
  44. package/dist/governor/index.js +8 -1
  45. package/dist/governor/index.js.map +1 -1
  46. package/dist/governor/rules.js +1 -0
  47. package/dist/governor/rules.js.map +1 -1
  48. package/dist/governor/write.js +50 -2
  49. package/dist/governor/write.js.map +1 -1
  50. package/dist/mcp/config.js +0 -41
  51. package/dist/mcp/config.js.map +1 -1
  52. package/dist/mcp/projectApproval.js +117 -0
  53. package/dist/mcp/projectApproval.js.map +1 -0
  54. package/dist/mcp/resultStore.js +19 -5
  55. package/dist/mcp/resultStore.js.map +1 -1
  56. package/dist/mcp/transport/stdio.js +4 -1
  57. package/dist/mcp/transport/stdio.js.map +1 -1
  58. package/dist/memory/allMetas.js +1 -1
  59. package/dist/memory/allMetas.js.map +1 -1
  60. package/dist/memory/autoMemory.js +1 -0
  61. package/dist/memory/autoMemory.js.map +1 -1
  62. package/dist/memory/clearedArchive.js +120 -0
  63. package/dist/memory/clearedArchive.js.map +1 -0
  64. package/dist/memory/compaction.js +154 -14
  65. package/dist/memory/compaction.js.map +1 -1
  66. package/dist/memory/counters.js +64 -0
  67. package/dist/memory/counters.js.map +1 -0
  68. package/dist/memory/projectNotes.js +61 -13
  69. package/dist/memory/projectNotes.js.map +1 -1
  70. package/dist/memory/rewind.js +6 -2
  71. package/dist/memory/rewind.js.map +1 -1
  72. package/dist/memory/session.js +13 -5
  73. package/dist/memory/session.js.map +1 -1
  74. package/dist/memory/sessionMemory.js +6 -2
  75. package/dist/memory/sessionMemory.js.map +1 -1
  76. package/dist/memory/store.js +3 -0
  77. package/dist/memory/store.js.map +1 -1
  78. package/dist/memory/workingSet.js +0 -375
  79. package/dist/memory/workingSet.js.map +1 -1
  80. package/dist/project/context.js +54 -7
  81. package/dist/project/context.js.map +1 -1
  82. package/dist/tools/approval.js +19 -4
  83. package/dist/tools/approval.js.map +1 -1
  84. package/dist/tools/backgroundShells.js +8 -1
  85. package/dist/tools/backgroundShells.js.map +1 -1
  86. package/dist/tools/browser.js +2 -1
  87. package/dist/tools/browser.js.map +1 -1
  88. package/dist/tools/checkpoints.js +28 -4
  89. package/dist/tools/checkpoints.js.map +1 -1
  90. package/dist/tools/childEnv.js +50 -0
  91. package/dist/tools/childEnv.js.map +1 -0
  92. package/dist/tools/codeIntel.js +4 -1
  93. package/dist/tools/codeIntel.js.map +1 -1
  94. package/dist/tools/commandParse.js +238 -0
  95. package/dist/tools/commandParse.js.map +1 -0
  96. package/dist/tools/commandPolicy.js +283 -0
  97. package/dist/tools/commandPolicy.js.map +1 -0
  98. package/dist/tools/edit.js +2 -1
  99. package/dist/tools/edit.js.map +1 -1
  100. package/dist/tools/editRipple.js +18 -3
  101. package/dist/tools/editRipple.js.map +1 -1
  102. package/dist/tools/editTarget.js +11 -6
  103. package/dist/tools/editTarget.js.map +1 -1
  104. package/dist/tools/governorTools.js +61 -1
  105. package/dist/tools/governorTools.js.map +1 -1
  106. package/dist/tools/grep.js +13 -5
  107. package/dist/tools/grep.js.map +1 -1
  108. package/dist/tools/guard.js +249 -2
  109. package/dist/tools/guard.js.map +1 -1
  110. package/dist/tools/invisible.js +62 -0
  111. package/dist/tools/invisible.js.map +1 -0
  112. package/dist/tools/killTree.js +3 -0
  113. package/dist/tools/killTree.js.map +1 -1
  114. package/dist/tools/readFile.js +2 -2
  115. package/dist/tools/readFile.js.map +1 -1
  116. package/dist/tools/readSymbol.js +5 -24
  117. package/dist/tools/readSymbol.js.map +1 -1
  118. package/dist/tools/replaceSymbol.js +1 -1
  119. package/dist/tools/replaceSymbol.js.map +1 -1
  120. package/dist/tools/ripgrepShell.js +56 -0
  121. package/dist/tools/ripgrepShell.js.map +1 -0
  122. package/dist/tools/runCommand.js +74 -15
  123. package/dist/tools/runCommand.js.map +1 -1
  124. package/dist/tools/runsLater.js +50 -0
  125. package/dist/tools/runsLater.js.map +1 -0
  126. package/dist/tools/serverConsent.js +27 -0
  127. package/dist/tools/serverConsent.js.map +1 -0
  128. package/dist/tools/ui.js +27 -0
  129. package/dist/tools/ui.js.map +1 -1
  130. package/dist/tools/untrusted.js +22 -1
  131. package/dist/tools/untrusted.js.map +1 -1
  132. package/dist/tools/viewImage.js +2 -2
  133. package/dist/tools/viewImage.js.map +1 -1
  134. package/dist/tools/webFetch.js +76 -8
  135. package/dist/tools/webFetch.js.map +1 -1
  136. package/dist/tools/workspace.js +87 -24
  137. package/dist/tools/workspace.js.map +1 -1
  138. package/dist/tools/writeFile.js +9 -4
  139. package/dist/tools/writeFile.js.map +1 -1
  140. package/package.json +3 -3
@@ -61,6 +61,79 @@ function clearMutationArgs(raw) {
61
61
  return JSON.stringify(kept);
62
62
  }
63
63
  /** Cheap token estimate for a string. */
64
+ /**
65
+ * What kind of result a tool makes, for clearing (pure).
66
+ *
67
+ * pinned never cleared while the work lives: what cannot be had again, or is the
68
+ * record of a decision. The user's answer to a question, a loaded skill's
69
+ * steps, a sub-agent's report (up to 60 rounds of work), what a memory,
70
+ * rule or skill save said, an approved plan, and a workspace add (which names
71
+ * the label every later path uses).
72
+ * latest a SNAPSHOT of a changing thing: only the newest is kept whole, older ones
73
+ * are history. The task list, running shells, the app inspection, the session
74
+ * list, the tool search.
75
+ * history everything else: a finished command, a file read, a search, a page. Old ones
76
+ * may be cleared, and their originals are saved (memory/clearedArchive.ts).
77
+ *
78
+ * Before this every result was history, so the task list was cleared down to its first
79
+ * line, a user's answer could be stubbed, and a sub-agent's whole report could go.
80
+ */
81
+ export function clearKind(toolName) {
82
+ if (PINNED_TOOLS.has(toolName))
83
+ return "pinned";
84
+ if (LATEST_TOOLS.has(toolName))
85
+ return "latest";
86
+ return "history";
87
+ }
88
+ const PINNED_TOOLS = new Set([
89
+ "ask_user",
90
+ "use_skill",
91
+ "spawn_subagent",
92
+ "save_memory",
93
+ "governor",
94
+ "skill",
95
+ "exit_plan",
96
+ "workspace",
97
+ "mcp_server",
98
+ ]);
99
+ const LATEST_TOOLS = new Set(["todo_write", "shells", "ui", "sessions", "find_tools"]);
100
+ /**
101
+ * Whether the session notes say anything the conversation does not (pure).
102
+ *
103
+ * The notes ride in the per-call tail, after the conversation, so they are never served
104
+ * from the provider's cache: they were the largest recurring uncached cost, a median of
105
+ * 2.7K tokens on every call. While the conversation still holds everything they
106
+ * summarise they are a second copy, so they are sent only once something is gone: a
107
+ * compaction, a cleared tool result or image, a condensed reply, an edit's cleared body.
108
+ * And not when the notes are already in the conversation as the summary a compaction made
109
+ * from them, which sent the same text twice on every call.
110
+ */
111
+ export function notesAddSomething(transcript, notes) {
112
+ const text = notes.trim();
113
+ if (!text)
114
+ return false;
115
+ let lost = false;
116
+ for (const e of transcript) {
117
+ if (e.role === "summary") {
118
+ if (e.content.includes(text))
119
+ return false;
120
+ lost = true;
121
+ }
122
+ else if (e.role === "tool") {
123
+ if (e.content.includes(CLEARED_STUB))
124
+ lost = true;
125
+ }
126
+ else if (e.role === "assistant") {
127
+ if (e.content === RECAP_STUB || e.toolCalls?.some((c) => c.arguments.includes(CLEARED_INPUT_NOTE)))
128
+ lost = true;
129
+ }
130
+ else if (e.role === "user") {
131
+ if (e.content.includes(IMAGE_CLEARED_STUB) || e.content.includes(ATTACHMENT_CLEARED))
132
+ lost = true;
133
+ }
134
+ }
135
+ return lost;
136
+ }
64
137
  export function estimateTokens(text) {
65
138
  return estimateTokensForChars(text.length);
66
139
  }
@@ -116,7 +189,9 @@ export function estimateEntriesTokens(entries) {
116
189
  * hasn't been superseded by a newer assistant tool-call round (the model has not
117
190
  * even seen those yet). An already-cleared stub is left alone (idempotent).
118
191
  */
119
- export function microcompact(entries, keepLastN = KEEP_LAST_N, supersededPaths = new Set()) {
192
+ export function microcompact(entries, keepLastN = KEEP_LAST_N, supersededPaths = new Set(),
193
+ /** A finished task's sweep: results kept for the task's life may go too (see clearKind). */
194
+ releasePinned = false) {
120
195
  const toolIdx = entries.flatMap((e, i) => (e.role === "tool" ? [i] : []));
121
196
  let clearable = new Set(keepLastN > 0 ? toolIdx.slice(0, -keepLastN) : toolIdx);
122
197
  // Never clear the most recent tool round — the results after the last
@@ -130,11 +205,38 @@ export function microcompact(entries, keepLastN = KEEP_LAST_N, supersededPaths =
130
205
  if (lastRoundStart >= 0) {
131
206
  clearable = new Set([...clearable].filter((i) => i < lastRoundStart));
132
207
  }
133
- // A file the WORKING SET carries in full is represented twice: once here in the
134
- // transcript, and once again in the <working_files> block that is rebuilt at the
135
- // boundary every step. Those copies are not equivalent — the working-set one is
136
- // current by construction, and the transcript one is a snapshot of whatever the file
137
- // said when it was read — so the transcript copy is the redundant one, and clearing
208
+ // What each result is FOR decides whether it may go (see clearKind). The tool that made
209
+ // a result is found through the call it answers.
210
+ const nameOf = new Map();
211
+ for (const e of entries) {
212
+ if (e.role === "assistant" && e.toolCalls)
213
+ for (const tc of e.toolCalls)
214
+ nameOf.set(tc.id, tc.name);
215
+ }
216
+ const newestOfLatest = new Map();
217
+ for (const i of toolIdx) {
218
+ const e = entries[i];
219
+ if (e?.role !== "tool")
220
+ continue;
221
+ const name = nameOf.get(e.toolCallId);
222
+ if (name && clearKind(name) === "latest")
223
+ newestOfLatest.set(name, i);
224
+ }
225
+ for (const i of [...clearable]) {
226
+ const e = entries[i];
227
+ if (e?.role !== "tool")
228
+ continue;
229
+ const name = nameOf.get(e.toolCallId);
230
+ if (!name)
231
+ continue;
232
+ const kind = clearKind(name);
233
+ if ((kind === "pinned" && !releasePinned) || (kind === "latest" && newestOfLatest.get(name) === i))
234
+ clearable.delete(i);
235
+ }
236
+ // A file whose read is SUPERSEDED (a later read of the same file carries its current
237
+ // content in full) is represented twice. Those copies are not equivalent — the later one
238
+ // is current, and the earlier one is a snapshot of whatever the file said when it was
239
+ // read — so the earlier copy is the redundant one, and clearing
138
240
  // it costs the model nothing it cannot already see, fresher.
139
241
  //
140
242
  // This deliberately overrides BOTH protections above. keepLastN and the live-round
@@ -176,6 +278,16 @@ export function microcompact(entries, keepLastN = KEEP_LAST_N, supersededPaths =
176
278
  clearInputIds.add(e.toolCallId);
177
279
  }
178
280
  }
281
+ // A result smaller than the stub that would replace it is left as it is: clearing it
282
+ // made the context bigger (a write_file confirmation is about 16 tokens, its stub about
283
+ // 36) and moved no cache boundary. Decided AFTER the inputs above, so the large body of
284
+ // the edit or write that produced such a result still shrinks.
285
+ const stubTokens = estimateTokens(CLEARED_STUB);
286
+ for (const i of [...clearable]) {
287
+ const e = entries[i];
288
+ if (e?.role === "tool" && estimateTokens(e.content) < stubTokens * 1.5 && !e.content.includes(CLEARED_STUB))
289
+ clearable.delete(i);
290
+ }
179
291
  // Old assistant recaps are condensed beyond the recent window — this is what stops a
180
292
  // finished task from resurfacing. Recent replies (last keepLastN entries) are kept.
181
293
  const recapBoundary = Math.max(0, entries.length - keepLastN);
@@ -187,6 +299,7 @@ export function microcompact(entries, keepLastN = KEEP_LAST_N, supersededPaths =
187
299
  let recapsCleared = 0;
188
300
  let inputsCleared = 0;
189
301
  let imagesCleared = 0;
302
+ let attachmentsCleared = 0;
190
303
  const clearedIds = [];
191
304
  const out = entries.map((e, i) => {
192
305
  // 1) Old tool-result bodies → stub (with first line kept for navigation).
@@ -244,18 +357,45 @@ export function microcompact(entries, keepLastN = KEEP_LAST_N, supersededPaths =
244
357
  // live round could be evicted while every tool result around it was kept —
245
358
  // dropping the picture the model was in the middle of looking at. The comment
246
359
  // here claimed the two windows already matched. They did not.
247
- if (i < imageBoundary && e.role === "user" && e.images && e.images.length > 0) {
248
- imagesCleared += e.images.length;
249
- const names = e.images.map((img) => img.path).join(", ");
250
- const { images: _dropped, ...rest } = e;
251
- return { ...rest, content: `${e.content}\n\n[${names} ${IMAGE_CLEARED_STUB}]` };
360
+ if (i < imageBoundary && e.role === "user") {
361
+ // 5) Old attached files. A file attached with @ or a drop became part of the user
362
+ // message, and nothing cleared it: a 250 KB attachment (about 70K tokens) rode in
363
+ // every request for the rest of the session, while the same file read through
364
+ // read_file is cleared after a few results. It is on disk, so the stub says so.
365
+ const att = clearAttachmentBodies(e.content);
366
+ attachmentsCleared += att.count;
367
+ const text = att.count > 0 ? att.content : e.content;
368
+ if (e.images && e.images.length > 0) {
369
+ imagesCleared += e.images.length;
370
+ const names = e.images.map((img) => img.path).join(", ");
371
+ const { images: _dropped, ...rest } = e;
372
+ return { ...rest, content: `${text}\n\n[${names} ${IMAGE_CLEARED_STUB}]` };
373
+ }
374
+ return att.count > 0 ? { ...e, content: text } : e;
252
375
  }
253
376
  return e;
254
377
  });
255
- if (cleared === 0 && recapsCleared === 0 && inputsCleared === 0 && imagesCleared === 0) {
256
- return { entries: [...entries], cleared: 0, clearedIds: [], recapsCleared: 0, inputsCleared: 0, imagesCleared: 0 };
378
+ if (cleared === 0 && recapsCleared === 0 && inputsCleared === 0 && imagesCleared === 0 && attachmentsCleared === 0) {
379
+ return { entries: [...entries], cleared: 0, clearedIds: [], recapsCleared: 0, inputsCleared: 0, imagesCleared: 0, attachmentsCleared: 0 };
257
380
  }
258
- return { entries: out, cleared, clearedIds, recapsCleared, inputsCleared, imagesCleared };
381
+ return { entries: out, cleared, clearedIds, recapsCleared, inputsCleared, imagesCleared, attachmentsCleared };
382
+ }
383
+ /** What replaces an old attachment's body (see clearAttachmentBodies). */
384
+ export const ATTACHMENT_CLEARED = "attachment cleared to save context";
385
+ /**
386
+ * Replace each attached file's body in a user message with a one-line stub that keeps its
387
+ * path, size and where to get it back (pure). Small ones stay: a stub would be bigger.
388
+ */
389
+ export function clearAttachmentBodies(content) {
390
+ let count = 0;
391
+ const out = content.replace(/<attached_file path="([^"]*)">\n([\s\S]*?)\n<\/attached_file>/g, (whole, path, body) => {
392
+ if (body.startsWith(`[${ATTACHMENT_CLEARED}`) || estimateTokens(body) < estimateTokens(CLEARED_STUB) * 1.5)
393
+ return whole;
394
+ count++;
395
+ const lines = body.split("\n").length - (body.endsWith("\n") ? 1 : 0);
396
+ return `<attached_file path="${path}">\n[${ATTACHMENT_CLEARED} · ${lines} lines · ~${estimateTokens(body)} tokens · it is still on disk: read_file ${path} with a line range if you need it]\n</attached_file>`;
397
+ });
398
+ return { content: out, count };
259
399
  }
260
400
  // Trivial continuations that do NOT open a new task — so a "continue"/"yes" after a
261
401
  // finished task doesn't trigger a task-boundary sweep (there's no new task to make
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/memory/compaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/memory/compaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ export function emptyCounters() {
2
+ return { toolCalls: 0, toolErrors: 0, reads: 0, rereadsVisible: 0, rereadsCleared: 0, stubbed: 0, steers: 0 };
3
+ }
4
+ /** Files read earlier in this session and not edited since. Runtime only. */
5
+ const seen = new WeakMap();
6
+ /** The files a call names, as the caller resolves them (pure but for `resolve`). */
7
+ function pathsOf(call, resolve) {
8
+ const raw = [];
9
+ if (Array.isArray(call.args.paths))
10
+ raw.push(...call.args.paths);
11
+ if (typeof call.args.path === "string")
12
+ raw.push(call.args.path);
13
+ return raw
14
+ .map((p) => (typeof p === "string" ? p : p && typeof p === "object" ? p.path : undefined))
15
+ .filter((p) => typeof p === "string")
16
+ .map((p) => resolve(p))
17
+ .filter((p) => typeof p === "string");
18
+ }
19
+ const EDITS = new Set(["edit", "write_file", "replace_symbol_body"]);
20
+ /**
21
+ * Count one round of finished calls. `fullyVisible` is the set of files whose whole read is
22
+ * still in the conversation (ToolContext.transcriptFull), as it stood when the model made
23
+ * these calls.
24
+ */
25
+ export function countRound(session, calls, resolve, fullyVisible) {
26
+ const c = (session.counters ??= emptyCounters());
27
+ const read = seen.get(session) ?? new Set();
28
+ seen.set(session, read);
29
+ for (const call of calls) {
30
+ c.toolCalls++;
31
+ if (call.isError)
32
+ c.toolErrors++;
33
+ if (call.isError)
34
+ continue;
35
+ if (call.name === "read_file") {
36
+ for (const path of pathsOf(call, resolve)) {
37
+ c.reads++;
38
+ if (read.has(path)) {
39
+ if (fullyVisible?.has(path))
40
+ c.rereadsVisible++;
41
+ else
42
+ c.rereadsCleared++;
43
+ }
44
+ read.add(path);
45
+ }
46
+ }
47
+ else if (EDITS.has(call.name)) {
48
+ // What the file says has changed: reading it again is no longer a repeat.
49
+ for (const path of pathsOf(call, resolve))
50
+ read.delete(path);
51
+ }
52
+ }
53
+ }
54
+ /** Count `n` results turned into stubs. */
55
+ export function countStubbed(session, n) {
56
+ if (n > 0)
57
+ (session.counters ??= emptyCounters()).stubbed += n;
58
+ }
59
+ /** Count `n` messages typed into a running turn. */
60
+ export function countSteers(session, n) {
61
+ if (n > 0)
62
+ (session.counters ??= emptyCounters()).steers += n;
63
+ }
64
+ //# sourceMappingURL=counters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counters.js","sourceRoot":"","sources":["../../src/memory/counters.ts"],"names":[],"mappings":"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"}
@@ -31,9 +31,22 @@
31
31
  */
32
32
  import { promises as fs } from "node:fs";
33
33
  import { homedir } from "node:os";
34
- import { dirname, isAbsolute, join, normalize, relative, resolve, sep } from "node:path";
34
+ import { basename, dirname, isAbsolute, join, normalize, relative, resolve, sep } from "node:path";
35
+ import { guardedPathReason, realPathOf, withinFolder } from "../tools/guard.js";
35
36
  /** The one filename, everywhere. */
36
37
  export const NOTES_FILE = "MINDWEAVE.md";
38
+ /**
39
+ * Instruction files other coding tools read, in the order Mindweave prefers them. A repository
40
+ * that ships one is telling every agent how it wants to be worked on, and an agent that starts
41
+ * without it "does not know my repo", which is the first thing someone moving from another tool
42
+ * notices. The FIRST one found is read; `CLAUDE.md` often just points at `AGENTS.md` or repeats it.
43
+ *
44
+ * They are notes, not instructions from the user: labelled as written for another tool, inside
45
+ * the same size budget as MINDWEAVE.md (and cut first when it is over), and following the same
46
+ * rule for what they may import. Another tool's saved conversations, memory and settings are a
47
+ * different thing and stay off-limits (tools/guard.ts).
48
+ */
49
+ export const OTHER_TOOL_NOTES = ["AGENTS.md", "CLAUDE.md", "GEMINI.md"];
37
50
  /**
38
51
  * How far an import chain may go before it stops.
39
52
  *
@@ -121,11 +134,24 @@ async function readIfPresent(path) {
121
134
  * from two places is included once and a cycle simply stops. Both are the same
122
135
  * mechanism, which is why an import loop is not a special case here.
123
136
  */
124
- async function collect(path, kind, seen, out, missing, depth, importedBy) {
137
+ async function collect(path, kind, seen, out, missing, depth, importedBy, refused = [], bound = null) {
125
138
  const key = normalize(path).toLowerCase();
126
139
  if (seen.has(key) || depth >= MAX_IMPORT_DEPTH)
127
140
  return;
128
141
  seen.add(key);
142
+ // An import is read at session start and its text goes into the system prompt, so it
143
+ // decides what leaves the machine with the first request. A protected file (.env, a
144
+ // key) is never imported. Notes that came with the PROJECT may only import from inside
145
+ // it, links resolved: a cloned repository could otherwise send ~/.ssh/id_rsa to the
146
+ // provider before the user typed anything. The user's own notes may import anything
147
+ // else; they wrote them.
148
+ if (kind === "import") {
149
+ const outside = bound !== null && !withinFolder(bound, await realPathOf(path));
150
+ if (outside || (await guardedPathReason(path)) !== null) {
151
+ refused.push(path);
152
+ return;
153
+ }
154
+ }
129
155
  const body = await readIfPresent(path);
130
156
  if (body === null) {
131
157
  // Only an IMPORT is worth reporting. A project with no notes file at all, or a
@@ -136,7 +162,7 @@ async function collect(path, kind, seen, out, missing, depth, importedBy) {
136
162
  }
137
163
  out.push({ source: { path, kind, ...(importedBy ? { importedBy } : {}) }, body: body.trim() });
138
164
  for (const target of importPathsIn(body, path)) {
139
- await collect(target, "import", seen, out, missing, depth + 1, path);
165
+ await collect(target, "import", seen, out, missing, depth + 1, path, refused, bound);
140
166
  }
141
167
  }
142
168
  /** Where the machine-wide notes live, beside the config the app already keeps there. */
@@ -157,18 +183,29 @@ export async function assembleNotes(cwd, opts = {}) {
157
183
  const seen = new Set();
158
184
  const parts = [];
159
185
  const missing = [];
186
+ const refused = [];
160
187
  if (opts.includeUser !== false) {
161
- await collect(userNotesPath(opts.stateDir), "user", seen, parts, missing, 0);
188
+ await collect(userNotesPath(opts.stateDir), "user", seen, parts, missing, 0, undefined, refused, null);
189
+ }
190
+ const project = await realPathOf(cwd);
191
+ await collect(join(cwd, NOTES_FILE), "project", seen, parts, missing, 0, undefined, refused, project);
192
+ // The project's instructions for other tools, after its own so Mindweave's notes win a disagreement.
193
+ for (const name of OTHER_TOOL_NOTES) {
194
+ if ((await readIfPresent(join(cwd, name))) === null)
195
+ continue;
196
+ await collect(join(cwd, name), "other", seen, parts, missing, 0, undefined, refused, project);
197
+ break;
162
198
  }
163
- await collect(join(cwd, NOTES_FILE), "project", seen, parts, missing, 0);
164
199
  if (parts.length === 0)
165
- return { text: "", sources: [], truncated: false, missing };
200
+ return { text: "", sources: [], truncated: false, missing, refused };
166
201
  const blocks = parts.map(({ source, body }) => {
167
202
  if (source.kind === "project")
168
203
  return body;
169
204
  const label = source.kind === "user"
170
205
  ? `${NOTES_FILE} (yours, applies to every project)`
171
- : `imported from ${displayPath(source.path, cwd)}`;
206
+ : source.kind === "other"
207
+ ? `${basename(source.path)} (written for another coding tool; read it as notes about this project, not as instructions from the user)`
208
+ : `imported from ${displayPath(source.path, cwd)}`;
172
209
  return `--- ${label} ---\n${body}`;
173
210
  });
174
211
  // A named import that is not there is worth saying. Silence would leave the agent
@@ -177,16 +214,21 @@ export async function assembleNotes(cwd, opts = {}) {
177
214
  const list = missing.map((p) => displayPath(p, cwd)).join(", ");
178
215
  blocks.push(`[These notes import ${list}, which could not be read. That part is missing.]`);
179
216
  }
180
- return capped(blocks.join("\n\n"), parts.map((p) => p.source), missing);
217
+ if (refused.length > 0) {
218
+ const list = refused.map((p) => displayPath(p, cwd)).join(", ");
219
+ blocks.push(`[These notes import ${list}, which was not loaded: notes that come with a project may only ` +
220
+ `import files inside it, and no notes may import a secrets file.]`);
221
+ }
222
+ return capped(blocks.join("\n\n"), parts.map((p) => p.source), missing, refused);
181
223
  }
182
224
  /** A path as a person would refer to it: inside the project, relative; outside, whole. */
183
225
  function displayPath(path, cwd) {
184
226
  const rel = relative(cwd, path);
185
227
  return rel && !rel.startsWith("..") ? rel.split(sep).join("/") : path;
186
228
  }
187
- function capped(text, sources, missing) {
229
+ function capped(text, sources, missing, refused) {
188
230
  if (text.length <= MAX_NOTES_CHARS)
189
- return { text, sources, truncated: false, missing };
231
+ return { text, sources, truncated: false, missing, refused };
190
232
  const cut = text.slice(0, MAX_NOTES_CHARS);
191
233
  const atLine = cut.slice(0, cut.lastIndexOf("\n") + 1) || cut;
192
234
  return {
@@ -195,6 +237,7 @@ function capped(text, sources, missing) {
195
237
  sources,
196
238
  truncated: true,
197
239
  missing,
240
+ refused,
198
241
  };
199
242
  }
200
243
  /**
@@ -237,10 +280,15 @@ export async function directoryNotesFor(root, files) {
237
280
  // Shallowest first: a folder's notes should read before the notes of a folder inside
238
281
  // it, so the more specific text is the last thing the model sees.
239
282
  for (const dir of [...dirs].sort((a, b) => a.length - b.length)) {
240
- const path = join(dir, NOTES_FILE);
241
- const body = await readIfPresent(path);
242
- if (body !== null)
283
+ // A folder's own notes, else the instruction file another tool left there.
284
+ for (const name of [NOTES_FILE, ...OTHER_TOOL_NOTES]) {
285
+ const path = join(dir, name);
286
+ const body = await readIfPresent(path);
287
+ if (body === null)
288
+ continue;
243
289
  out.push({ path, text: body.trim() });
290
+ break;
291
+ }
244
292
  }
245
293
  return out;
246
294
  }
@@ -1 +1 @@
1
- {"version":3,"file":"projectNotes.js","sourceRoot":"","sources":["../../src/memory/projectNotes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectNotes.js","sourceRoot":"","sources":["../../src/memory/projectNotes.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ import { resolvePath } from "../tools/paths.js";
21
21
  import { rebuildReadLedger } from "./session.js";
22
22
  import { clearSessionNotes, saveSession } from "./store.js";
23
23
  import { loadMemoryIndex } from "./autoMemory.js";
24
- import { loadMcpConfig } from "../mcp/config.js";
24
+ import { planMcpServers } from "../mcp/projectApproval.js";
25
25
  import { refreshGovernance } from "../dynamo/engine.js";
26
26
  import { isStateItem, stateKindOf } from "../tools/stateCheckpoint.js";
27
27
  import { undoNotice } from "../tools/checkpoints.js";
@@ -150,7 +150,11 @@ export async function reloadAgentState(session, paths) {
150
150
  session.memoryIndex = await loadMemoryIndex(root);
151
151
  const mcp = session.toolContext.mcp;
152
152
  if (kinds.has("mcp") && mcp) {
153
- const wanted = new Map((await loadMcpConfig(root)).map((c) => [c.name, c]));
153
+ // Only what may start without asking; a project server that now needs approval is
154
+ // held and asked about at the next turn, as it is when a session opens.
155
+ const plan = await planMcpServers(root);
156
+ session.toolContext.mcpPending = plan.pending;
157
+ const wanted = new Map(plan.ready.map((c) => [c.name, c]));
154
158
  for (const s of mcp.statuses())
155
159
  if (!wanted.has(s.name))
156
160
  await mcp.removeServer(s.name);
@@ -1 +1 @@
1
- {"version":3,"file":"rewind.js","sourceRoot":"","sources":["../../src/memory/rewind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rewind.js","sourceRoot":"","sources":["../../src/memory/rewind.ts"],"names":[],"mappings":"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"}