@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.
- package/README.md +33 -7
- package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
- package/dist/cjs/cli/lemma-proxy.js +15 -3
- package/dist/cjs/cli/lemma-proxy.js.map +1 -1
- package/dist/cjs/cloud/store/FileBrainStore.d.ts.map +1 -1
- package/dist/cjs/cloud/store/FileBrainStore.js +5 -2
- package/dist/cjs/cloud/store/FileBrainStore.js.map +1 -1
- package/dist/cjs/infra/errorCause.d.ts +36 -0
- package/dist/cjs/infra/errorCause.d.ts.map +1 -0
- package/dist/cjs/infra/errorCause.js +143 -0
- package/dist/cjs/infra/errorCause.js.map +1 -0
- package/dist/cjs/infra/providers/JenkinsProvider.d.ts.map +1 -1
- package/dist/cjs/infra/providers/JenkinsProvider.js +5 -0
- package/dist/cjs/infra/providers/JenkinsProvider.js.map +1 -1
- package/dist/cjs/infra/providers/OKDProvider.d.ts.map +1 -1
- package/dist/cjs/infra/providers/OKDProvider.js +5 -1
- package/dist/cjs/infra/providers/OKDProvider.js.map +1 -1
- package/dist/cjs/infra/providers/TerraformProvider.d.ts.map +1 -1
- package/dist/cjs/infra/providers/TerraformProvider.js +3 -1
- package/dist/cjs/infra/providers/TerraformProvider.js.map +1 -1
- package/dist/cjs/mcp/index.js +21 -0
- package/dist/cjs/mcp/index.js.map +1 -1
- package/dist/cjs/mcp/tool-profiles.d.ts +6 -4
- package/dist/cjs/mcp/tool-profiles.d.ts.map +1 -1
- package/dist/cjs/mcp/tool-profiles.js +3 -0
- package/dist/cjs/mcp/tool-profiles.js.map +1 -1
- package/dist/cjs/mcp/tools/context-tools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/context-tools.js +3 -1
- package/dist/cjs/mcp/tools/context-tools.js.map +1 -1
- package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/memory.js +255 -15
- package/dist/cjs/mcp/tools/memory.js.map +1 -1
- package/dist/cjs/mcp/tools/misc.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/misc.js +21 -9
- package/dist/cjs/mcp/tools/misc.js.map +1 -1
- package/dist/cjs/mcp/tools/squeeze-cache.d.ts +6 -0
- package/dist/cjs/mcp/tools/squeeze-cache.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/squeeze-cache.js +57 -17
- package/dist/cjs/mcp/tools/squeeze-cache.js.map +1 -1
- package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/workspace.js +7 -2
- package/dist/cjs/mcp/tools/workspace.js.map +1 -1
- package/dist/cjs/mcp/tools.d.ts +18 -0
- package/dist/cjs/mcp/tools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools.js +97 -16
- package/dist/cjs/mcp/tools.js.map +1 -1
- package/dist/cjs/mcp/utils.d.ts.map +1 -1
- package/dist/cjs/mcp/utils.js +18 -4
- package/dist/cjs/mcp/utils.js.map +1 -1
- package/dist/cjs/mcp/workspaceShared.d.ts +1 -0
- package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -1
- package/dist/cjs/mcp/workspaceShared.js +27 -0
- package/dist/cjs/mcp/workspaceShared.js.map +1 -1
- package/dist/cjs/security/scrubForStorage.d.ts +16 -0
- package/dist/cjs/security/scrubForStorage.d.ts.map +1 -0
- package/dist/cjs/security/scrubForStorage.js +35 -0
- package/dist/cjs/security/scrubForStorage.js.map +1 -0
- package/dist/cjs/subconscious/BrainEncryption.d.ts +38 -0
- package/dist/cjs/subconscious/BrainEncryption.d.ts.map +1 -0
- package/dist/cjs/subconscious/BrainEncryption.js +137 -0
- package/dist/cjs/subconscious/BrainEncryption.js.map +1 -0
- package/dist/cjs/subconscious/TheBrainV2.d.ts +337 -0
- package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.js +1149 -118
- package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
- package/dist/cjs/utils/AnomalyInventory.d.ts +29 -0
- package/dist/cjs/utils/AnomalyInventory.d.ts.map +1 -0
- package/dist/cjs/utils/AnomalyInventory.js +58 -0
- package/dist/cjs/utils/AnomalyInventory.js.map +1 -0
- package/dist/cjs/utils/ExecutiveReport.d.ts +10 -0
- package/dist/cjs/utils/ExecutiveReport.d.ts.map +1 -1
- package/dist/cjs/utils/ExecutiveReport.js +17 -1
- package/dist/cjs/utils/ExecutiveReport.js.map +1 -1
- package/dist/cjs/utils/SavingsLedger.d.ts +45 -2
- package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/cjs/utils/SavingsLedger.js +89 -5
- package/dist/cjs/utils/SavingsLedger.js.map +1 -1
- package/dist/cjs/utils/SessionEvidence.d.ts +28 -0
- package/dist/cjs/utils/SessionEvidence.d.ts.map +1 -0
- package/dist/cjs/utils/SessionEvidence.js +55 -0
- package/dist/cjs/utils/SessionEvidence.js.map +1 -0
- package/dist/cjs/utils/StateHashCache.d.ts +10 -0
- package/dist/cjs/utils/StateHashCache.d.ts.map +1 -1
- package/dist/cjs/utils/StateHashCache.js +15 -0
- package/dist/cjs/utils/StateHashCache.js.map +1 -1
- package/dist/cjs/utils/reportSavings.d.ts +4 -0
- package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
- package/dist/cjs/utils/reportSavings.js.map +1 -1
- package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
- package/dist/esm/cli/lemma-proxy.js +15 -3
- package/dist/esm/cli/lemma-proxy.js.map +1 -1
- package/dist/esm/cloud/store/FileBrainStore.d.ts.map +1 -1
- package/dist/esm/cloud/store/FileBrainStore.js +5 -2
- package/dist/esm/cloud/store/FileBrainStore.js.map +1 -1
- package/dist/esm/infra/errorCause.d.ts +36 -0
- package/dist/esm/infra/errorCause.d.ts.map +1 -0
- package/dist/esm/infra/errorCause.js +138 -0
- package/dist/esm/infra/errorCause.js.map +1 -0
- package/dist/esm/infra/providers/JenkinsProvider.d.ts.map +1 -1
- package/dist/esm/infra/providers/JenkinsProvider.js +5 -0
- package/dist/esm/infra/providers/JenkinsProvider.js.map +1 -1
- package/dist/esm/infra/providers/OKDProvider.d.ts.map +1 -1
- package/dist/esm/infra/providers/OKDProvider.js +5 -1
- package/dist/esm/infra/providers/OKDProvider.js.map +1 -1
- package/dist/esm/infra/providers/TerraformProvider.d.ts.map +1 -1
- package/dist/esm/infra/providers/TerraformProvider.js +3 -1
- package/dist/esm/infra/providers/TerraformProvider.js.map +1 -1
- package/dist/esm/mcp/index.js +21 -0
- package/dist/esm/mcp/index.js.map +1 -1
- package/dist/esm/mcp/tool-profiles.d.ts +6 -4
- package/dist/esm/mcp/tool-profiles.d.ts.map +1 -1
- package/dist/esm/mcp/tool-profiles.js +3 -0
- package/dist/esm/mcp/tool-profiles.js.map +1 -1
- package/dist/esm/mcp/tools/context-tools.d.ts.map +1 -1
- package/dist/esm/mcp/tools/context-tools.js +3 -1
- package/dist/esm/mcp/tools/context-tools.js.map +1 -1
- package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
- package/dist/esm/mcp/tools/memory.js +255 -15
- package/dist/esm/mcp/tools/memory.js.map +1 -1
- package/dist/esm/mcp/tools/misc.d.ts.map +1 -1
- package/dist/esm/mcp/tools/misc.js +21 -9
- package/dist/esm/mcp/tools/misc.js.map +1 -1
- package/dist/esm/mcp/tools/squeeze-cache.d.ts +6 -0
- package/dist/esm/mcp/tools/squeeze-cache.d.ts.map +1 -1
- package/dist/esm/mcp/tools/squeeze-cache.js +56 -17
- package/dist/esm/mcp/tools/squeeze-cache.js.map +1 -1
- package/dist/esm/mcp/tools/workspace.d.ts.map +1 -1
- package/dist/esm/mcp/tools/workspace.js +8 -3
- package/dist/esm/mcp/tools/workspace.js.map +1 -1
- package/dist/esm/mcp/tools.d.ts +18 -0
- package/dist/esm/mcp/tools.d.ts.map +1 -1
- package/dist/esm/mcp/tools.js +96 -17
- package/dist/esm/mcp/tools.js.map +1 -1
- package/dist/esm/mcp/utils.d.ts.map +1 -1
- package/dist/esm/mcp/utils.js +18 -4
- package/dist/esm/mcp/utils.js.map +1 -1
- package/dist/esm/mcp/workspaceShared.d.ts +1 -0
- package/dist/esm/mcp/workspaceShared.d.ts.map +1 -1
- package/dist/esm/mcp/workspaceShared.js +26 -0
- package/dist/esm/mcp/workspaceShared.js.map +1 -1
- package/dist/esm/security/scrubForStorage.d.ts +16 -0
- package/dist/esm/security/scrubForStorage.d.ts.map +1 -0
- package/dist/esm/security/scrubForStorage.js +32 -0
- package/dist/esm/security/scrubForStorage.js.map +1 -0
- package/dist/esm/subconscious/BrainEncryption.d.ts +38 -0
- package/dist/esm/subconscious/BrainEncryption.d.ts.map +1 -0
- package/dist/esm/subconscious/BrainEncryption.js +126 -0
- package/dist/esm/subconscious/BrainEncryption.js.map +1 -0
- package/dist/esm/subconscious/TheBrainV2.d.ts +337 -0
- package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.js +1147 -118
- package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
- package/dist/esm/utils/AnomalyInventory.d.ts +29 -0
- package/dist/esm/utils/AnomalyInventory.d.ts.map +1 -0
- package/dist/esm/utils/AnomalyInventory.js +49 -0
- package/dist/esm/utils/AnomalyInventory.js.map +1 -0
- package/dist/esm/utils/ExecutiveReport.d.ts +10 -0
- package/dist/esm/utils/ExecutiveReport.d.ts.map +1 -1
- package/dist/esm/utils/ExecutiveReport.js +17 -1
- package/dist/esm/utils/ExecutiveReport.js.map +1 -1
- package/dist/esm/utils/SavingsLedger.d.ts +45 -2
- package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/esm/utils/SavingsLedger.js +89 -5
- package/dist/esm/utils/SavingsLedger.js.map +1 -1
- package/dist/esm/utils/SessionEvidence.d.ts +28 -0
- package/dist/esm/utils/SessionEvidence.d.ts.map +1 -0
- package/dist/esm/utils/SessionEvidence.js +49 -0
- package/dist/esm/utils/SessionEvidence.js.map +1 -0
- package/dist/esm/utils/StateHashCache.d.ts +10 -0
- package/dist/esm/utils/StateHashCache.d.ts.map +1 -1
- package/dist/esm/utils/StateHashCache.js +14 -0
- package/dist/esm/utils/StateHashCache.js.map +1 -1
- package/dist/esm/utils/reportSavings.d.ts +4 -0
- package/dist/esm/utils/reportSavings.d.ts.map +1 -1
- package/dist/esm/utils/reportSavings.js.map +1 -1
- 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;
|
|
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: "
|
|
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." : ""}
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
556
|
+
let filePaths = Array.isArray(args?.filePaths) ? args.filePaths : undefined;
|
|
484
557
|
const outcome = args?.outcome === "failed" ? "failed" : undefined;
|
|
485
|
-
|
|
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
|
-
|
|
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(`
|
|
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\
|
|
577
|
-
: `\n\nThe Brain's
|
|
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
|