@nxuss/lemma 1.22.1 → 1.24.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 (176) hide show
  1. package/README.md +33 -7
  2. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  3. package/dist/cjs/cli/lemma-proxy.js +15 -3
  4. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  5. package/dist/cjs/cloud/store/FileBrainStore.d.ts.map +1 -1
  6. package/dist/cjs/cloud/store/FileBrainStore.js +5 -2
  7. package/dist/cjs/cloud/store/FileBrainStore.js.map +1 -1
  8. package/dist/cjs/infra/errorCause.d.ts +36 -0
  9. package/dist/cjs/infra/errorCause.d.ts.map +1 -0
  10. package/dist/cjs/infra/errorCause.js +143 -0
  11. package/dist/cjs/infra/errorCause.js.map +1 -0
  12. package/dist/cjs/infra/providers/JenkinsProvider.d.ts.map +1 -1
  13. package/dist/cjs/infra/providers/JenkinsProvider.js +5 -0
  14. package/dist/cjs/infra/providers/JenkinsProvider.js.map +1 -1
  15. package/dist/cjs/infra/providers/OKDProvider.d.ts.map +1 -1
  16. package/dist/cjs/infra/providers/OKDProvider.js +5 -1
  17. package/dist/cjs/infra/providers/OKDProvider.js.map +1 -1
  18. package/dist/cjs/infra/providers/TerraformProvider.d.ts.map +1 -1
  19. package/dist/cjs/infra/providers/TerraformProvider.js +3 -1
  20. package/dist/cjs/infra/providers/TerraformProvider.js.map +1 -1
  21. package/dist/cjs/mcp/index.js +21 -0
  22. package/dist/cjs/mcp/index.js.map +1 -1
  23. package/dist/cjs/mcp/tool-profiles.d.ts +6 -4
  24. package/dist/cjs/mcp/tool-profiles.d.ts.map +1 -1
  25. package/dist/cjs/mcp/tool-profiles.js +3 -0
  26. package/dist/cjs/mcp/tool-profiles.js.map +1 -1
  27. package/dist/cjs/mcp/tools/context-tools.d.ts.map +1 -1
  28. package/dist/cjs/mcp/tools/context-tools.js +3 -1
  29. package/dist/cjs/mcp/tools/context-tools.js.map +1 -1
  30. package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
  31. package/dist/cjs/mcp/tools/memory.js +255 -15
  32. package/dist/cjs/mcp/tools/memory.js.map +1 -1
  33. package/dist/cjs/mcp/tools/misc.d.ts.map +1 -1
  34. package/dist/cjs/mcp/tools/misc.js +21 -9
  35. package/dist/cjs/mcp/tools/misc.js.map +1 -1
  36. package/dist/cjs/mcp/tools/squeeze-cache.d.ts +6 -0
  37. package/dist/cjs/mcp/tools/squeeze-cache.d.ts.map +1 -1
  38. package/dist/cjs/mcp/tools/squeeze-cache.js +57 -17
  39. package/dist/cjs/mcp/tools/squeeze-cache.js.map +1 -1
  40. package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -1
  41. package/dist/cjs/mcp/tools/workspace.js +7 -2
  42. package/dist/cjs/mcp/tools/workspace.js.map +1 -1
  43. package/dist/cjs/mcp/tools.d.ts +18 -0
  44. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  45. package/dist/cjs/mcp/tools.js +97 -16
  46. package/dist/cjs/mcp/tools.js.map +1 -1
  47. package/dist/cjs/mcp/utils.d.ts.map +1 -1
  48. package/dist/cjs/mcp/utils.js +18 -4
  49. package/dist/cjs/mcp/utils.js.map +1 -1
  50. package/dist/cjs/mcp/workspaceShared.d.ts +1 -0
  51. package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -1
  52. package/dist/cjs/mcp/workspaceShared.js +27 -0
  53. package/dist/cjs/mcp/workspaceShared.js.map +1 -1
  54. package/dist/cjs/security/scrubForStorage.d.ts +16 -0
  55. package/dist/cjs/security/scrubForStorage.d.ts.map +1 -0
  56. package/dist/cjs/security/scrubForStorage.js +35 -0
  57. package/dist/cjs/security/scrubForStorage.js.map +1 -0
  58. package/dist/cjs/subconscious/BrainEncryption.d.ts +38 -0
  59. package/dist/cjs/subconscious/BrainEncryption.d.ts.map +1 -0
  60. package/dist/cjs/subconscious/BrainEncryption.js +137 -0
  61. package/dist/cjs/subconscious/BrainEncryption.js.map +1 -0
  62. package/dist/cjs/subconscious/TheBrainV2.d.ts +337 -0
  63. package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
  64. package/dist/cjs/subconscious/TheBrainV2.js +1149 -118
  65. package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
  66. package/dist/cjs/utils/AnomalyInventory.d.ts +29 -0
  67. package/dist/cjs/utils/AnomalyInventory.d.ts.map +1 -0
  68. package/dist/cjs/utils/AnomalyInventory.js +58 -0
  69. package/dist/cjs/utils/AnomalyInventory.js.map +1 -0
  70. package/dist/cjs/utils/ExecutiveReport.d.ts +10 -0
  71. package/dist/cjs/utils/ExecutiveReport.d.ts.map +1 -1
  72. package/dist/cjs/utils/ExecutiveReport.js +17 -1
  73. package/dist/cjs/utils/ExecutiveReport.js.map +1 -1
  74. package/dist/cjs/utils/SavingsLedger.d.ts +45 -2
  75. package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
  76. package/dist/cjs/utils/SavingsLedger.js +89 -5
  77. package/dist/cjs/utils/SavingsLedger.js.map +1 -1
  78. package/dist/cjs/utils/SessionEvidence.d.ts +28 -0
  79. package/dist/cjs/utils/SessionEvidence.d.ts.map +1 -0
  80. package/dist/cjs/utils/SessionEvidence.js +55 -0
  81. package/dist/cjs/utils/SessionEvidence.js.map +1 -0
  82. package/dist/cjs/utils/StateHashCache.d.ts +10 -0
  83. package/dist/cjs/utils/StateHashCache.d.ts.map +1 -1
  84. package/dist/cjs/utils/StateHashCache.js +15 -0
  85. package/dist/cjs/utils/StateHashCache.js.map +1 -1
  86. package/dist/cjs/utils/reportSavings.d.ts +4 -0
  87. package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
  88. package/dist/cjs/utils/reportSavings.js.map +1 -1
  89. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  90. package/dist/esm/cli/lemma-proxy.js +15 -3
  91. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  92. package/dist/esm/cloud/store/FileBrainStore.d.ts.map +1 -1
  93. package/dist/esm/cloud/store/FileBrainStore.js +5 -2
  94. package/dist/esm/cloud/store/FileBrainStore.js.map +1 -1
  95. package/dist/esm/infra/errorCause.d.ts +36 -0
  96. package/dist/esm/infra/errorCause.d.ts.map +1 -0
  97. package/dist/esm/infra/errorCause.js +138 -0
  98. package/dist/esm/infra/errorCause.js.map +1 -0
  99. package/dist/esm/infra/providers/JenkinsProvider.d.ts.map +1 -1
  100. package/dist/esm/infra/providers/JenkinsProvider.js +5 -0
  101. package/dist/esm/infra/providers/JenkinsProvider.js.map +1 -1
  102. package/dist/esm/infra/providers/OKDProvider.d.ts.map +1 -1
  103. package/dist/esm/infra/providers/OKDProvider.js +5 -1
  104. package/dist/esm/infra/providers/OKDProvider.js.map +1 -1
  105. package/dist/esm/infra/providers/TerraformProvider.d.ts.map +1 -1
  106. package/dist/esm/infra/providers/TerraformProvider.js +3 -1
  107. package/dist/esm/infra/providers/TerraformProvider.js.map +1 -1
  108. package/dist/esm/mcp/index.js +21 -0
  109. package/dist/esm/mcp/index.js.map +1 -1
  110. package/dist/esm/mcp/tool-profiles.d.ts +6 -4
  111. package/dist/esm/mcp/tool-profiles.d.ts.map +1 -1
  112. package/dist/esm/mcp/tool-profiles.js +3 -0
  113. package/dist/esm/mcp/tool-profiles.js.map +1 -1
  114. package/dist/esm/mcp/tools/context-tools.d.ts.map +1 -1
  115. package/dist/esm/mcp/tools/context-tools.js +3 -1
  116. package/dist/esm/mcp/tools/context-tools.js.map +1 -1
  117. package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
  118. package/dist/esm/mcp/tools/memory.js +255 -15
  119. package/dist/esm/mcp/tools/memory.js.map +1 -1
  120. package/dist/esm/mcp/tools/misc.d.ts.map +1 -1
  121. package/dist/esm/mcp/tools/misc.js +21 -9
  122. package/dist/esm/mcp/tools/misc.js.map +1 -1
  123. package/dist/esm/mcp/tools/squeeze-cache.d.ts +6 -0
  124. package/dist/esm/mcp/tools/squeeze-cache.d.ts.map +1 -1
  125. package/dist/esm/mcp/tools/squeeze-cache.js +56 -17
  126. package/dist/esm/mcp/tools/squeeze-cache.js.map +1 -1
  127. package/dist/esm/mcp/tools/workspace.d.ts.map +1 -1
  128. package/dist/esm/mcp/tools/workspace.js +8 -3
  129. package/dist/esm/mcp/tools/workspace.js.map +1 -1
  130. package/dist/esm/mcp/tools.d.ts +18 -0
  131. package/dist/esm/mcp/tools.d.ts.map +1 -1
  132. package/dist/esm/mcp/tools.js +96 -17
  133. package/dist/esm/mcp/tools.js.map +1 -1
  134. package/dist/esm/mcp/utils.d.ts.map +1 -1
  135. package/dist/esm/mcp/utils.js +18 -4
  136. package/dist/esm/mcp/utils.js.map +1 -1
  137. package/dist/esm/mcp/workspaceShared.d.ts +1 -0
  138. package/dist/esm/mcp/workspaceShared.d.ts.map +1 -1
  139. package/dist/esm/mcp/workspaceShared.js +26 -0
  140. package/dist/esm/mcp/workspaceShared.js.map +1 -1
  141. package/dist/esm/security/scrubForStorage.d.ts +16 -0
  142. package/dist/esm/security/scrubForStorage.d.ts.map +1 -0
  143. package/dist/esm/security/scrubForStorage.js +32 -0
  144. package/dist/esm/security/scrubForStorage.js.map +1 -0
  145. package/dist/esm/subconscious/BrainEncryption.d.ts +38 -0
  146. package/dist/esm/subconscious/BrainEncryption.d.ts.map +1 -0
  147. package/dist/esm/subconscious/BrainEncryption.js +126 -0
  148. package/dist/esm/subconscious/BrainEncryption.js.map +1 -0
  149. package/dist/esm/subconscious/TheBrainV2.d.ts +337 -0
  150. package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
  151. package/dist/esm/subconscious/TheBrainV2.js +1147 -118
  152. package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
  153. package/dist/esm/utils/AnomalyInventory.d.ts +29 -0
  154. package/dist/esm/utils/AnomalyInventory.d.ts.map +1 -0
  155. package/dist/esm/utils/AnomalyInventory.js +49 -0
  156. package/dist/esm/utils/AnomalyInventory.js.map +1 -0
  157. package/dist/esm/utils/ExecutiveReport.d.ts +10 -0
  158. package/dist/esm/utils/ExecutiveReport.d.ts.map +1 -1
  159. package/dist/esm/utils/ExecutiveReport.js +17 -1
  160. package/dist/esm/utils/ExecutiveReport.js.map +1 -1
  161. package/dist/esm/utils/SavingsLedger.d.ts +45 -2
  162. package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
  163. package/dist/esm/utils/SavingsLedger.js +89 -5
  164. package/dist/esm/utils/SavingsLedger.js.map +1 -1
  165. package/dist/esm/utils/SessionEvidence.d.ts +28 -0
  166. package/dist/esm/utils/SessionEvidence.d.ts.map +1 -0
  167. package/dist/esm/utils/SessionEvidence.js +49 -0
  168. package/dist/esm/utils/SessionEvidence.js.map +1 -0
  169. package/dist/esm/utils/StateHashCache.d.ts +10 -0
  170. package/dist/esm/utils/StateHashCache.d.ts.map +1 -1
  171. package/dist/esm/utils/StateHashCache.js +14 -0
  172. package/dist/esm/utils/StateHashCache.js.map +1 -1
  173. package/dist/esm/utils/reportSavings.d.ts +4 -0
  174. package/dist/esm/utils/reportSavings.d.ts.map +1 -1
  175. package/dist/esm/utils/reportSavings.js.map +1 -1
  176. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"context-tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/context-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/context-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhE,eAAO,MAAM,uBAAuB,EAAE,cAAc,EAqQnD,CAAC;AAgfF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAY5D,CAAC"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhE,eAAO,MAAM,uBAAuB,EAAE,cAAc,EAoTnD,CAAC;AAgrBF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAe5D,CAAC"}
@@ -8,9 +8,11 @@ import fs from "fs";
8
8
  import path from "path";
9
9
  import { getBrain, deriveProjectId, currentGitContext } from "../../subconscious/TheBrainV2.js";
10
10
  import { reportSavings } from "../../utils/reportSavings.js";
11
+ import { netTokensSaved } from "./squeeze-cache.js";
11
12
  import { recordReceiptEvent } from "../../utils/TokenReceipt.js";
12
13
  import { logError, safeResolvePath, DEFAULT_MEMORY_SIMILARITY_FLOOR, tryElicitConfirmation } from "../utils.js";
13
14
  import { deriveDomainForFile } from "../cognitiveMap.js";
15
+ import { getRecentEvidence } from "../../utils/SessionEvidence.js";
14
16
  export const MEMORY_TOOL_DEFINITIONS = [
15
17
  {
16
18
  name: "search_memory",
@@ -59,7 +61,7 @@ export const MEMORY_TOOL_DEFINITIONS = [
59
61
  {
60
62
  name: "store_memory",
61
63
  annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
62
- description: "Persist a technical solution, bug fix, architecture decision, or key fact into Lemma's Brain — so future questions on the same topic (even phrased differently) don't require re-investigating the repo. Pass filePaths for anything derived from specific files so the memory auto-invalidates the moment those files change. If the answer is really about one function/class, pass `symbols` instead (or in addition) so an unrelated edit elsewhere in that file doesn't stale it out. Pass outcome='failed' for an approach that was tried and did NOT work. Correcting or extending something already in the Brain is update_memory, not this — storing a revised version here creates a second entry, and future searches then return an arbitrary mix of both versions.",
64
+ description: "Persist a technical solution, bug fix, architecture decision, or key fact into Lemma's Brain — so future questions on the same topic (even phrased differently) don't require re-investigating the repo. Pass filePaths for anything derived from specific files so the memory auto-invalidates the moment those files change. If the answer is really about one function/class, pass `symbols` instead (or in addition) so an unrelated edit elsewhere in that file doesn't stale it out. When both are omitted, Lemma falls back to files/symbols this session actually read, wrote, patched, or inspected via the surgical tools — a best-effort guess, flagged as such in the response, not a substitute for passing the real evidence when you know it. Pass outcome='failed' for an approach that was tried and did NOT work. Correcting or extending something already in the Brain is update_memory, not this — storing a revised version here creates a second entry, and future searches then return an arbitrary mix of both versions.",
63
65
  inputSchema: {
64
66
  type: "object",
65
67
  properties: {
@@ -163,6 +165,7 @@ export const MEMORY_TOOL_DEFINITIONS = [
163
165
  outcome: { type: "string", enum: ["confirmed", "failed"], description: "Working solution, or documented dead end." },
164
166
  domain: { type: "string", description: "Replacement domain tag; empty string clears it." },
165
167
  derivedFrom: { type: "array", items: { type: "string" }, description: "Replacement upstream memory ids; empty array clears them." },
168
+ supersededBy: { type: "string", description: "Id of the entry that corrects/replaces this one. Marks this memory as superseded: excluded from every search_memory ranking from now on (get_memory on its id still works and points at the successor). Use when two stored memories contradict each other and one of them is simply wrong — pass the surviving memory's id here on the wrong one. Pass an empty string to un-supersede." },
166
169
  },
167
170
  required: ["id"],
168
171
  },
@@ -199,7 +202,7 @@ export const MEMORY_TOOL_DEFINITIONS = [
199
202
  {
200
203
  name: "forget_memory",
201
204
  annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
202
- description: "Permanently delete one memory from the Brain by id. Use when a memory is flat wrong, was captured by mistake, or should never have been stored — not when it is merely a poor match for one query (that is downvote_memory, which keeps it around for a different question later). Deletion is irreversible and the id will not come back from another session's copy; the deleted body is returned in the result and appended to forgotten.ndjson in the Brain directory, which is the only remaining copy of it.",
205
+ description: "Delete one memory from the Brain by id. Use when a memory is flat wrong, was captured by mistake, or should never have been stored — not when it is merely a poor match for one query (that is downvote_memory, which keeps it around for a different question later). The memory moves to the trash (restorable with brain_trash action=restore) and a corpus snapshot is taken first, so a mistaken delete is recoverable two ways; the id stays deleted and will not come back from another session's copy. The deleted body is returned in the result for the record.",
203
206
  inputSchema: {
204
207
  type: "object",
205
208
  properties: {
@@ -208,6 +211,51 @@ export const MEMORY_TOOL_DEFINITIONS = [
208
211
  required: ["id"],
209
212
  },
210
213
  },
214
+ {
215
+ name: "brain_trash",
216
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
217
+ description: "Undo and rollback for the Brain. Actions: list/restore/purge forgotten memories, snapshots/restore-snapshot for corpus rollback points (auto-taken before forget/import/clear/merge; a restore snapshots first, so it is undoable too).",
218
+ inputSchema: {
219
+ type: "object",
220
+ properties: {
221
+ action: {
222
+ type: "string",
223
+ enum: ["list", "restore", "purge", "snapshots", "restore-snapshot"],
224
+ description: "What to do with the trash / snapshots.",
225
+ },
226
+ id: { type: "string", description: "Memory id to restore (action=restore)." },
227
+ olderThanDays: { type: "number", description: "With action=purge: only permanently drop deletions older than N days. Omit to empty the whole trash." },
228
+ name: { type: "string", description: "Snapshot name to roll back to (action=restore-snapshot, from action=snapshots)." },
229
+ },
230
+ required: ["action"],
231
+ },
232
+ },
233
+ {
234
+ name: "brain_merge",
235
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: false },
236
+ description: "Fold near-duplicate memories into one canonical keeper (text untouched; fragments become evidence-carrying claims, counters inherited, fragments trashed, pre-merge snapshot taken). Use on brain_upkeep merge candidates — never merge memories that merely share a topic but assert different things.",
237
+ inputSchema: {
238
+ type: "object",
239
+ properties: {
240
+ keepId: { type: "string", description: "Id of the canonical memory that survives." },
241
+ foldIds: { type: "array", items: { type: "string" }, description: "Ids of the fragments to fold into the keeper (1 or more, all must exist)." },
242
+ },
243
+ required: ["keepId", "foldIds"],
244
+ },
245
+ },
246
+ {
247
+ name: "brain_upkeep",
248
+ annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: false },
249
+ description: "Tend the Brain in one read-only call: revalidates the most-reused memories, lists duplicates/merge candidates/dead weight/savings, each with its fix (refresh_memory, brain_merge, forget_memory). Never deletes or rewrites anything. Run when returning to a repo after a while.",
250
+ inputSchema: {
251
+ type: "object",
252
+ properties: {
253
+ topN: { type: "number", description: "How many of the most-reused memories to revalidate. Default 20.", default: 20 },
254
+ sample: { type: "number", description: "How many entries to sweep for duplicates. Default 50 (bounded: each issues one internal search).", default: 50 },
255
+ deep: { type: "boolean", description: "Also re-hash all tracked evidence for a corpus-wide stale ratio. Slow on large Brains.", default: false },
256
+ },
257
+ },
258
+ },
211
259
  {
212
260
  name: "refresh_memory",
213
261
  annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
@@ -262,11 +310,12 @@ export const MEMORY_TOOL_DEFINITIONS = [
262
310
  {
263
311
  name: "brain_import",
264
312
  annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
265
- description: "Merge a bundle written by brain_export into this Brain. Additive and non-destructive: an id already present keeps the newer version, and anything previously deleted with forget_memory stays deleted. Imported memories track the paths of the machine they came from, so most will read as stale here until refresh_memory re-anchors them.",
313
+ description: "Merge a bundle written by brain_export into this Brain. Additive and non-destructive: an id already present keeps the newer version, and anything previously deleted with forget_memory stays deleted. Imported memories track the paths of the machine they came from, so most will read as stale here until refresh_memory re-anchors them. Pass dryRun:true first on any bundle you did not write yourself — it reports exactly what would be imported, updated, skipped, and which entries conflict with live memories, without writing anything.",
266
314
  inputSchema: {
267
315
  type: "object",
268
316
  properties: {
269
317
  path: { type: "string", description: "Path to the bundle file (relative to the workspace root)." },
318
+ dryRun: { type: "boolean", description: "Preview only: report what would happen without writing anything.", default: false },
270
319
  },
271
320
  required: ["path"],
272
321
  },
@@ -311,19 +360,33 @@ async function handleSearchMemory(args) {
311
360
  const staleCount = r.claims.filter((c) => !c.fresh).length;
312
361
  return `\nClaims (${r.claims.length - staleCount}/${r.claims.length} still fresh — trust only the ✓ ones):\n${lines.join("\n")}`;
313
362
  };
314
- const formatResult = (r, i) => `Result ${i + 1} (id: ${r.id}, Similarity: ${(r.similarity * 100).toFixed(1)}%)${r.outcome === "failed" ? "\n⚠️ TAGGED AS A FAILED ATTEMPT — this was tried before and did NOT work. Do not repeat it; treat this as a warning, not a suggestion." : ""}\nPrompt: ${r.query.substring(0, 300)}...\nResponse: ${typeof r.response === "string" ? r.response : JSON.stringify(r.response, null, 2)}${formatClaims(r)}${Array.isArray(r.cosmeticChanges) && r.cosmeticChanges.length > 0
363
+ const formatResult = (r, i) => `Result ${i + 1} (id: ${r.id}, Similarity: ${(r.similarity * 100).toFixed(1)}%)${r.outcome === "failed" ? "\n⚠️ TAGGED AS A FAILED ATTEMPT — this was tried before and did NOT work. Do not repeat it; treat this as a warning, not a suggestion." : ""}${typeof r.tokensSaved === "number" && r.tokensSaved > 0
364
+ ? `\n💰 This memory has saved ${r.tokensSaved} tokens across ${r.hits || "?"} reuse(s) — prefer it over re-deriving.`
365
+ : ""}\nPrompt: ${r.query.substring(0, 300)}...\nResponse: ${typeof r.response === "string" ? r.response : JSON.stringify(r.response, null, 2)}${formatClaims(r)}${Array.isArray(r.evidence) && r.evidence.length > 0
366
+ ? `\nEvidence: ${r.evidence.map((e) => {
367
+ const sep = e.lastIndexOf("::");
368
+ return sep > 0 ? `${relLabel(e.substring(0, sep))}::${e.substring(sep + 2)}` : relLabel(e);
369
+ }).join(", ")}`
370
+ : ""}${Array.isArray(r.whyShown) && r.whyShown.length > 0
371
+ ? `\nWhy shown: ${r.whyShown.join(" · ")}`
372
+ : ""}${Array.isArray(r.cosmeticChanges) && r.cosmeticChanges.length > 0
315
373
  ? `\n(comment/whitespace-only change, ignored under semanticDiff: ${r.cosmeticChanges.join(", ")})`
316
374
  : ""}`;
317
375
  if (fresh.length > 0) {
318
376
  // Only a fresh hit (or an untracked, purely conceptual entry) counts as a real
319
377
  // avoided re-investigation — this is the only case worth crediting as savings.
320
378
  const bestFresh = fresh[0];
321
- const tokensSaved = Math.max(100, Math.floor(String(bestFresh.response).length / 4));
379
+ const { net: tokensSaved } = netTokensSaved(Math.max(400, String(bestFresh.response).length), query);
322
380
  reportSavings({ source: "cache", tokens: tokensSaved, toolName: "search_memory", query: query.substring(0, 100) });
381
+ // Attribute the saving to the memory itself: the per-entry ROI ledger lives on the
382
+ // entry (persisted, merged, imported), booked on the same event as the ledger above
383
+ // so the two can never disagree about whether a reuse happened.
384
+ brain.creditSavings(bestFresh.id, tokensSaved);
323
385
  recordReceiptEvent("semantic_cache_hit", query.substring(0, 100), {
324
386
  tool: "search_memory",
325
387
  similarity: bestFresh.similarity,
326
388
  tokensSaved,
389
+ memoryId: bestFresh.id,
327
390
  });
328
391
  }
329
392
  else {
@@ -409,6 +472,9 @@ async function handleGetMemory(args) {
409
472
  ...(entry.source ? [`written by ${entry.source}`] : []),
410
473
  ...(entry.gitBranch ? [`on branch ${entry.gitBranch}`] : []),
411
474
  ];
475
+ const supersededNote = entry.supersededBy
476
+ ? `\n⚠️ SUPERSEDED by ${entry.supersededBy} — this conclusion was corrected. It no longer surfaces in search_memory. Call get_memory with id "${entry.supersededBy}" for the current answer.`
477
+ : "";
412
478
  const claimsBlock = Array.isArray(entry.claims) && entry.claims.length > 0
413
479
  ? `\nClaims: ${entry.claims.map((c) => c.text).join(" | ")}`
414
480
  : "";
@@ -418,7 +484,7 @@ async function handleGetMemory(args) {
418
484
  return {
419
485
  content: [{
420
486
  type: "text",
421
- text: `Memory ${entry.id} — ${status?.status ?? "unknown"}${status?.staleFiles?.length ? ` (changed: ${status.staleFiles.join(", ")})` : ""}\n${facts.join(" · ")}\n${trackedLine(entry)}${claimsBlock}\n\nQuery: ${entry.query}${body}`,
487
+ text: `Memory ${entry.id} — ${status?.status ?? "unknown"}${status?.staleFiles?.length ? ` (changed: ${status.staleFiles.join(", ")})` : ""}\n${facts.join(" · ")}\n${trackedLine(entry)}${claimsBlock}${supersededNote}\n\nQuery: ${entry.query}${body}`,
422
488
  }],
423
489
  };
424
490
  }
@@ -445,8 +511,10 @@ async function handleUpdateMemory(args) {
445
511
  const derivedFrom = Array.isArray(args?.derivedFrom)
446
512
  ? args.derivedFrom.filter((d) => typeof d === "string" && d)
447
513
  : undefined;
514
+ const supersededBy = typeof args?.supersededBy === "string" ? args.supersededBy : undefined;
448
515
  if (query === undefined && response === undefined && filePaths === undefined && symbols === undefined &&
449
- claims === undefined && outcome === undefined && domain === undefined && derivedFrom === undefined) {
516
+ claims === undefined && outcome === undefined && domain === undefined && derivedFrom === undefined &&
517
+ supersededBy === undefined) {
450
518
  return {
451
519
  content: [{
452
520
  type: "text",
@@ -455,7 +523,7 @@ async function handleUpdateMemory(args) {
455
523
  };
456
524
  }
457
525
  try {
458
- const result = getBrain().update(id, { query, response, filePaths, symbols, claims, outcome, domain, derivedFrom });
526
+ const result = getBrain().update(id, { query, response, filePaths, symbols, claims, outcome, domain, derivedFrom, supersededBy });
459
527
  if (!result.ok)
460
528
  return { content: [{ type: "text", text: result.message }] };
461
529
  recordReceiptEvent("tool_call", `update_memory: ${id}`, {
@@ -469,7 +537,12 @@ async function handleUpdateMemory(args) {
469
537
  const retrackedNote = result.retracked && result.retracked.length > 0
470
538
  ? ` Now tracking: ${result.retracked.join(", ")}.`
471
539
  : " This memory tracks no files or symbols, so there was nothing to re-anchor.";
472
- return { content: [{ type: "text", text: `${result.message}${sizeNote}${retrackedNote}` }] };
540
+ const supersedeNote = supersededBy === undefined
541
+ ? ""
542
+ : supersededBy
543
+ ? ` Marked superseded by ${supersededBy} — it will no longer surface in search_memory.`
544
+ : " Un-superseded — it is eligible for search_memory results again.";
545
+ return { content: [{ type: "text", text: `${result.message}${sizeNote}${retrackedNote}${supersedeNote}` }] };
473
546
  }
474
547
  catch (e) {
475
548
  logError("update_memory", e);
@@ -480,11 +553,24 @@ async function handleStoreMemory(args) {
480
553
  const query = args?.query;
481
554
  const responseText = args?.response;
482
555
  const provider = args?.provider || "generic";
483
- const filePaths = Array.isArray(args?.filePaths) ? args.filePaths : undefined;
556
+ let filePaths = Array.isArray(args?.filePaths) ? args.filePaths : undefined;
484
557
  const outcome = args?.outcome === "failed" ? "failed" : undefined;
485
- const symbols = Array.isArray(args?.symbols)
558
+ let symbols = Array.isArray(args?.symbols)
486
559
  ? args.symbols.filter((s) => s?.filePath && s?.symbolName)
487
560
  : undefined;
561
+ // F1.2 (AN-09/AN-11): the audit found 55% of new entries untracked because evidence was
562
+ // opt-in and callers routinely skipped it. When neither was passed, fall back to files/symbols
563
+ // Lemma itself saw touched this session (read/write/patch/surgical-insert) — best-effort, not
564
+ // a substitute for the caller correcting it, so autoEvidence stays visible in the response.
565
+ let autoEvidence = false;
566
+ if ((!filePaths || filePaths.length === 0) && (!symbols || symbols.length === 0)) {
567
+ const recent = getRecentEvidence(5);
568
+ if (recent.filePaths.length > 0 || recent.symbols.length > 0) {
569
+ filePaths = recent.filePaths.length > 0 ? recent.filePaths : undefined;
570
+ symbols = recent.symbols.length > 0 ? recent.symbols : undefined;
571
+ autoEvidence = true;
572
+ }
573
+ }
488
574
  const claims = Array.isArray(args?.claims)
489
575
  ? args.claims.filter((c) => c?.text)
490
576
  : undefined;
@@ -510,6 +596,9 @@ async function handleStoreMemory(args) {
510
596
  });
511
597
  const trackingNote = filePaths && filePaths.length > 0 ? ` Tracking freshness against ${filePaths.length} file(s) — this memory auto-invalidates if they change.` : "";
512
598
  const symbolNote = symbols && symbols.length > 0 ? ` Tracking freshness against ${symbols.length} symbol(s) specifically — unrelated edits elsewhere in those files won't stale this out.` : "";
599
+ const autoEvidenceNote = autoEvidence
600
+ ? " (auto-derived from files/symbols this session touched, not passed explicitly — correct with update_memory if this guessed wrong)"
601
+ : "";
513
602
  const outcomeNote = outcome === "failed" ? " Tagged as a FAILED attempt — future searches will surface it as a warning, not a suggestion." : "";
514
603
  const claimsNote = claims && claims.length > 0 ? ` Split into ${claims.length} independently-verifiable claim(s) — a future search can trust the ones still fresh even if another goes stale.` : "";
515
604
  const domainNote = domain
@@ -526,7 +615,10 @@ async function handleStoreMemory(args) {
526
615
  // later store, verify_memory, refresh_memory, forget_memory. Without it the caller had
527
616
  // to search for the memory it had just written to do anything with it.
528
617
  const idNote = storeRes.id ? ` (id: ${storeRes.id})` : "";
529
- return { content: [{ type: "text", text: `Success: Memory stored${idNote}. ${storeRes.reason}${trackingNote}${symbolNote}${outcomeNote}${claimsNote}${domainNote}${derivedFromNote}${conflictsNote}` }] };
618
+ const scrubNote = storeRes.redactions > 0
619
+ ? ` 🛡 ${storeRes.redactions} secret(s) redacted before storage — credentials are never persisted, only their placeholders.`
620
+ : "";
621
+ return { content: [{ type: "text", text: `Success: Memory stored${idNote}. ${storeRes.reason}${trackingNote}${symbolNote}${autoEvidenceNote}${outcomeNote}${claimsNote}${domainNote}${derivedFromNote}${conflictsNote}${scrubNote}` }] };
530
622
  }
531
623
  catch (e) {
532
624
  logError("store_memory", e);
@@ -561,7 +653,7 @@ async function handleForgetMemory(args) {
561
653
  if (preview?.status === "unknown") {
562
654
  return { content: [{ type: "text", text: `No memory with id "${id}" in the Brain — nothing to delete.` }] };
563
655
  }
564
- const elicited = await tryElicitConfirmation(`Permanently delete Brain memory "${id}"? This cannot be undone.`);
656
+ const elicited = await tryElicitConfirmation(`Delete Brain memory "${id}"? It moves to the trash (restorable with brain_trash), and a corpus snapshot is taken first.`);
565
657
  if (elicited.supported && !elicited.confirmed) {
566
658
  return { content: [{ type: "text", text: `Memory "${id}" was not deleted: declined during confirmation.` }] };
567
659
  }
@@ -573,8 +665,8 @@ async function handleForgetMemory(args) {
573
665
  // the header — and since forget_memory is the last step of correcting a long-lived
574
666
  // memory, the text it dropped on the floor was often the only copy in existence.
575
667
  const archiveNote = result.archivePath
576
- ? `\n\nAlso appended to ${result.archivePath}. The id stays deleted (brain_import will not resurrect it), so that file is an archive to read, not a bundle to re-import.`
577
- : `\n\nThe Brain's archive file could not be written, so the text above is the only remaining copy.`;
668
+ ? `\n\nMoved to the trash (${result.archivePath}) restore it with brain_trash action=restore, or roll the whole corpus back with action=restore-snapshot. The id stays deleted (brain_import will not resurrect it).`
669
+ : `\n\nThe Brain's trash file could not be written, so the text above is the only remaining copy.`;
578
670
  return {
579
671
  content: [{
580
672
  type: "text",
@@ -587,6 +679,119 @@ async function handleForgetMemory(args) {
587
679
  return { content: [{ type: "text", text: `Failed to delete memory: ${e.message}` }] };
588
680
  }
589
681
  }
682
+ async function handleBrainTrash(args) {
683
+ const action = args?.action;
684
+ try {
685
+ const brain = getBrain();
686
+ switch (action) {
687
+ case "list": {
688
+ const items = brain.listForgotten();
689
+ if (items.length === 0) {
690
+ return { content: [{ type: "text", text: "The trash is empty — every forgotten memory was purged or never deleted." }] };
691
+ }
692
+ const lines = items.map((t) => `- ${t.id}: ${t.query} (stored ${t.timestamp}, reused ${t.hits}x, forgotten ${t.forgottenAt})`);
693
+ return { content: [{ type: "text", text: `${items.length} forgotten ${items.length === 1 ? "memory" : "memories"} (restorable with action=restore):\n${lines.join("\n")}` }] };
694
+ }
695
+ case "restore": {
696
+ const id = args?.id;
697
+ if (!id)
698
+ throw new Error("id is required for action=restore");
699
+ const result = brain.restoreForgotten(id);
700
+ return { content: [{ type: "text", text: result.message }] };
701
+ }
702
+ case "purge": {
703
+ const olderThanDays = typeof args?.olderThanDays === "number" ? args.olderThanDays : undefined;
704
+ const result = brain.purgeForgotten(olderThanDays);
705
+ const scope = olderThanDays !== undefined ? ` older than ${olderThanDays} day(s)` : "";
706
+ return { content: [{ type: "text", text: `Purged ${result.purged} archived deletion(s)${scope}. ${result.remaining} remain restorable. Purged ids stay deleted — this removed the restore path, not the deletion.` }] };
707
+ }
708
+ case "snapshots": {
709
+ const snaps = brain.listSnapshots();
710
+ if (snaps.length === 0) {
711
+ return { content: [{ type: "text", text: "No snapshots yet — one is taken automatically before every forget, import, clear, and merge." }] };
712
+ }
713
+ const lines = snaps.map((s) => `- ${s.name} (${(s.bytes / 1024).toFixed(1)} KB, ${s.mtime})`);
714
+ return { content: [{ type: "text", text: `${snaps.length} rollback snapshot(s), newest last (restore with action=restore-snapshot):\n${lines.join("\n")}` }] };
715
+ }
716
+ case "restore-snapshot": {
717
+ const name = args?.name;
718
+ if (!name)
719
+ throw new Error("name is required for action=restore-snapshot (see action=snapshots)");
720
+ const result = brain.restoreSnapshot(name);
721
+ return { content: [{ type: "text", text: result.message }] };
722
+ }
723
+ default:
724
+ throw new Error(`Unknown action "${action}" — use list, restore, purge, snapshots, or restore-snapshot.`);
725
+ }
726
+ }
727
+ catch (e) {
728
+ logError("brain_trash", e);
729
+ return { content: [{ type: "text", text: `Trash operation failed: ${e.message}` }] };
730
+ }
731
+ }
732
+ async function handleBrainMerge(args) {
733
+ const keepId = args?.keepId;
734
+ const foldIds = Array.isArray(args?.foldIds) ? args.foldIds.filter((id) => typeof id === "string" && id) : [];
735
+ if (!keepId)
736
+ throw new Error("keepId is required");
737
+ if (foldIds.length === 0)
738
+ throw new Error("foldIds is required and must be a non-empty array");
739
+ try {
740
+ const result = getBrain().mergeEntries(keepId, foldIds);
741
+ return { content: [{ type: "text", text: result.message }] };
742
+ }
743
+ catch (e) {
744
+ logError("brain_merge", e);
745
+ return { content: [{ type: "text", text: `Merge failed: ${e.message}` }] };
746
+ }
747
+ }
748
+ async function handleBrainUpkeep(args) {
749
+ try {
750
+ const report = getBrain().upkeep({
751
+ topN: typeof args?.topN === "number" ? args.topN : undefined,
752
+ sample: typeof args?.sample === "number" ? args.sample : undefined,
753
+ deep: args?.deep === true,
754
+ });
755
+ const lines = [];
756
+ lines.push(`# Brain upkeep (${report.totalEntries} entries, checked ${report.checkedAt})`);
757
+ const r = report.revalidated;
758
+ lines.push(`Revalidated top ${r.checked}: ${r.fresh.length} fresh, ${r.stale.length} stale, ${r.untracked.length} untracked, ${r.unverified.length} unverified.`);
759
+ for (const s of r.stale)
760
+ lines.push(` ✗ STALE ${s.id}: ${s.query} (changed: ${s.staleFiles.join(", ") || "upstream memory"}) → ${s.action}`);
761
+ for (const u of r.untracked)
762
+ lines.push(` ? UNTRACKED ${u.id}: ${u.query} → ${u.action}`);
763
+ for (const u of r.unverified)
764
+ lines.push(` ? UNVERIFIED ${u.id}: ${u.query} → ${u.action}`);
765
+ if (report.duplicatePairs.length > 0) {
766
+ lines.push(`Exact duplicates (${report.duplicatePairs.length}):`);
767
+ for (const d of report.duplicatePairs) {
768
+ lines.push(` = ${d.ids.join(" + ")} (${(d.similarity * 100).toFixed(0)}%): "${d.queries[0]}" / "${d.queries[1]}" → ${d.action}`);
769
+ }
770
+ }
771
+ if (report.mergeCandidates.length > 0) {
772
+ lines.push(`Merge candidates (${report.mergeCandidates.length}):`);
773
+ for (const m of report.mergeCandidates.slice(0, 10)) {
774
+ lines.push(` ~ ${m.ids.join(" + ")} (${(m.similarity * 100).toFixed(0)}%): "${m.queries[0]}" / "${m.queries[1]}" → ${m.action}`);
775
+ }
776
+ if (report.mergeCandidates.length > 10)
777
+ lines.push(` ...and ${report.mergeCandidates.length - 10} more`);
778
+ }
779
+ const dw = report.deadWeight;
780
+ lines.push(`Dead weight: ${dw.neverHit} never reused, ${dw.downvoted.length} downvoted. ${dw.action}`);
781
+ lines.push(`Lifetime savings: ${report.savings.totalTokensSaved} tokens.`);
782
+ // AN-05: tokensSaved alone hides a skewed denominator (one entry can carry most of the
783
+ // tokens while barely any of the hits) — always print both so the concentration is visible.
784
+ for (const s of report.savings.topSavers)
785
+ lines.push(` 💰 ${s.id}: ${s.tokensSaved} tokens over ${s.hits} reuse(s) — ${s.query}`);
786
+ if (report.deep)
787
+ lines.push(`Deep stale ratio: ${report.deep.staleEntries} stale (${(report.deep.staleRatio * 100).toFixed(1)}%). ${report.deep.action}`);
788
+ return { content: [{ type: "text", text: lines.join("\n") }] };
789
+ }
790
+ catch (e) {
791
+ logError("brain_upkeep", e);
792
+ return { content: [{ type: "text", text: `Upkeep pass failed: ${e.message}` }] };
793
+ }
794
+ }
590
795
  async function handleRefreshMemory(args) {
591
796
  const id = args?.id;
592
797
  if (!id)
@@ -624,6 +829,10 @@ async function handleBrainStats(args) {
624
829
  const untrackedPct = (stats.untrackedEntries / stats.totalEntries) * 100;
625
830
  lines.push(`Tracking nothing: ${stats.untrackedEntries} (${untrackedPct.toFixed(0)}% — verify_memory reports these as 'untracked', never 'fresh'; nothing in them can go stale, and nothing in them can be checked)`);
626
831
  }
832
+ if (stats.withClearPaths !== undefined) {
833
+ const labeledPct = (stats.withClearPaths / stats.totalEntries) * 100;
834
+ lines.push(`With clear-path evidence labels: ${stats.withClearPaths} (${labeledPct.toFixed(0)}% — filePaths/symbols persisted in clear next to the hashes; converges to every tracked entry as old memories backfill on load)`);
835
+ }
627
836
  lines.push(`Projects: ${stats.projects}${stats.unscopedEntries ? ` (+${stats.unscopedEntries} entries predating project scoping)` : ""}`);
628
837
  if (stats.oldestEntry)
629
838
  lines.push(`Oldest entry: ${stats.oldestEntry}`);
@@ -640,6 +849,22 @@ async function handleBrainStats(args) {
640
849
  else {
641
850
  lines.push(`(stale ratio not computed — pass deep:true)`);
642
851
  }
852
+ if ((stats.totalTokensSaved || 0) > 0) {
853
+ lines.push(`Lifetime savings from memory reuse: ${stats.totalTokensSaved} tokens`);
854
+ for (const s of stats.topSavers || []) {
855
+ lines.push(` 💰 ${s.id}: ${s.tokensSaved} tokens over ${s.hits} reuse(s) — ${s.query}`);
856
+ }
857
+ }
858
+ else {
859
+ lines.push(`Lifetime savings from memory reuse: 0 tokens yet — reuse a fresh memory and search_memory books it here.`);
860
+ }
861
+ if (stats.integrity) {
862
+ const integ = stats.integrity;
863
+ const encNote = integ.encrypted ? ", encrypted at rest" : "";
864
+ lines.push(integ.ok
865
+ ? `Integrity: OK${integ.backups ? " (backup present)" : ""}${integ.snapshots > 0 ? `, ${integ.snapshots} snapshot(s)` : ""}${encNote}`
866
+ : `Integrity: DEGRADED — ${integ.lastIssue?.action}: ${integ.lastIssue?.detail || "unknown cause"}${encNote}`);
867
+ }
643
868
  return { content: [{ type: "text", text: lines.join("\n") }] };
644
869
  }
645
870
  catch (e) {
@@ -680,6 +905,18 @@ async function handleBrainImport(args) {
680
905
  try {
681
906
  const { resolved } = safeResolvePath(process.cwd(), bundlePath);
682
907
  const text = fs.readFileSync(resolved, "utf8");
908
+ if (args?.dryRun === true) {
909
+ const preview = getBrain().previewImport(text);
910
+ if (!preview.ok)
911
+ return { content: [{ type: "text", text: preview.message }] };
912
+ const lines = preview.items.map((i) => `- [${i.action}] ${i.id}: ${i.query || "(no query)"} (${i.reason})`);
913
+ if (preview.truncated)
914
+ lines.push(`...and ${preview.wouldImport + preview.wouldUpdate + preview.wouldSkip - preview.items.length} more`);
915
+ for (const c of preview.conflicts) {
916
+ lines.push(`⚠️ CONFLICT: bundle entry ${c.against} disagrees with live [${c.outcome}] ${c.id}: ${c.query.slice(0, 100)}`);
917
+ }
918
+ return { content: [{ type: "text", text: `${preview.message}\n${lines.join("\n")}` }] };
919
+ }
683
920
  const result = getBrain().importBundle(text);
684
921
  return { content: [{ type: "text", text: result.message }] };
685
922
  }
@@ -735,5 +972,8 @@ export const MEMORY_TOOL_HANDLERS = {
735
972
  brain_stats: handleBrainStats,
736
973
  brain_export: handleBrainExport,
737
974
  brain_import: handleBrainImport,
975
+ brain_trash: handleBrainTrash,
976
+ brain_upkeep: handleBrainUpkeep,
977
+ brain_merge: handleBrainMerge,
738
978
  };
739
979
  //# sourceMappingURL=memory.js.map