@nxuss/lemma 1.41.0 β 1.43.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 +19 -1
- package/bin/brain-ingest.js +42 -6
- package/bin/doctor.js +2 -1
- package/bin/init.js +1 -1
- package/dist/cjs/cli/hostHooks.d.ts +13 -1
- package/dist/cjs/cli/hostHooks.d.ts.map +1 -1
- package/dist/cjs/cli/hostHooks.js +24 -4
- package/dist/cjs/cli/hostHooks.js.map +1 -1
- package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/memory.js +30 -7
- package/dist/cjs/mcp/tools/memory.js.map +1 -1
- package/dist/cjs/security/SemanticScrubber.d.ts +6 -0
- package/dist/cjs/security/SemanticScrubber.d.ts.map +1 -1
- package/dist/cjs/security/SemanticScrubber.js +20 -12
- package/dist/cjs/security/SemanticScrubber.js.map +1 -1
- package/dist/cjs/subconscious/HostRecall.d.ts +14 -0
- package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/cjs/subconscious/HostRecall.js +32 -0
- package/dist/cjs/subconscious/HostRecall.js.map +1 -1
- package/dist/cjs/subconscious/LeakWatch.d.ts +21 -0
- package/dist/cjs/subconscious/LeakWatch.d.ts.map +1 -0
- package/dist/cjs/subconscious/LeakWatch.js +93 -0
- package/dist/cjs/subconscious/LeakWatch.js.map +1 -0
- package/dist/cjs/subconscious/TheBrainV2.d.ts +7 -0
- package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.js +25 -0
- package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
- package/dist/cjs/utils/SessionCapture.d.ts +13 -2
- package/dist/cjs/utils/SessionCapture.d.ts.map +1 -1
- package/dist/cjs/utils/SessionCapture.js +71 -10
- package/dist/cjs/utils/SessionCapture.js.map +1 -1
- package/dist/esm/cli/hostHooks.d.ts +13 -1
- package/dist/esm/cli/hostHooks.d.ts.map +1 -1
- package/dist/esm/cli/hostHooks.js +23 -3
- package/dist/esm/cli/hostHooks.js.map +1 -1
- package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
- package/dist/esm/mcp/tools/memory.js +30 -7
- package/dist/esm/mcp/tools/memory.js.map +1 -1
- package/dist/esm/security/SemanticScrubber.d.ts +6 -0
- package/dist/esm/security/SemanticScrubber.d.ts.map +1 -1
- package/dist/esm/security/SemanticScrubber.js +19 -11
- package/dist/esm/security/SemanticScrubber.js.map +1 -1
- package/dist/esm/subconscious/HostRecall.d.ts +14 -0
- package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/esm/subconscious/HostRecall.js +31 -2
- package/dist/esm/subconscious/HostRecall.js.map +1 -1
- package/dist/esm/subconscious/LeakWatch.d.ts +21 -0
- package/dist/esm/subconscious/LeakWatch.d.ts.map +1 -0
- package/dist/esm/subconscious/LeakWatch.js +86 -0
- package/dist/esm/subconscious/LeakWatch.js.map +1 -0
- package/dist/esm/subconscious/TheBrainV2.d.ts +7 -0
- package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.js +25 -0
- package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
- package/dist/esm/utils/SessionCapture.d.ts +13 -2
- package/dist/esm/utils/SessionCapture.d.ts.map +1 -1
- package/dist/esm/utils/SessionCapture.js +70 -10
- package/dist/esm/utils/SessionCapture.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,6 +29,15 @@ That's it: your agent now has Lemma's tools. The dashboard opens at `http://loca
|
|
|
29
29
|
|
|
30
30
|
## Why Lemma
|
|
31
31
|
|
|
32
|
+
| Where coding agents fail | What Lemma does about it |
|
|
33
|
+
| :--- | :--- |
|
|
34
|
+
| Last week's fix is in a note, and the code it describes has changed since. | The memory comes back **stale**, with the diff, instead of confidently wrong. |
|
|
35
|
+
| Two notes disagree and nobody notices. | Storing warns when another memory answers the same question differently or reaches the opposite outcome on the same symbol. |
|
|
36
|
+
| "Continue where we left off" has nothing to continue from. | The session leaves a hand-off built from the transcript and git: the task as given, the files changed, the last test run (Pro). |
|
|
37
|
+
| The same red test is debugged twice. | A red β green run is saved as `fix: <the error>` with its diff, and recalled when the error returns. |
|
|
38
|
+
| A native `cat .env` puts a live key in the conversation. | Lemma's own reads and commands mask it; for the host's native tools, a hook names the kind of secret and tells the agent not to repeat it (it cannot rewrite what the host already showed). |
|
|
39
|
+
| You can't tell what the tool costs you. | The dashboard shows what Lemma saved **and** what it spent, net. |
|
|
40
|
+
|
|
32
41
|
**π§ A memory that knows when it's out of date.** The Brain stores fixes, decisions and context
|
|
33
42
|
in a local index (BM25, no embeddings service, no cloud). Every memory is tied to the files and
|
|
34
43
|
symbols it's about, so when the code changes it comes back **stale** instead of confidently
|
|
@@ -43,6 +52,15 @@ finished it in 3 of 3 runs, Claude Code's built-in memory in 1 of 3 and another
|
|
|
43
52
|
cells, one model, our own benchmark: a lead, not a proof). It costs more per task, not less, because the agent
|
|
44
53
|
does the work the others skip.
|
|
45
54
|
|
|
55
|
+
**βͺ β¦and the compaction (Pro, Claude Code only).** When Claude Code compacts a long conversation, a `PreCompact` hook
|
|
56
|
+
saves the same hand-off first, and the `SessionStart` that follows puts its content (the plan exactly as it was given,
|
|
57
|
+
the files, the last run) back in context, not a pointer to it. The agent has the plan in front of it without going
|
|
58
|
+
back to the session transcript: in `bench/compaction` the agents with the hook finished the task in 15 of 15 runs
|
|
59
|
+
(Sonnet and Haiku), the Haiku ones without a single trip back to the transcript, and where the transcript could not be
|
|
60
|
+
read it was 5 of 5 against 2 of 5 without the hook (n=5 per arm). It never blocks the compaction: it prints nothing,
|
|
61
|
+
always exits 0 and takes about 0.1 s on a 1.5 MB transcript. Claude Code only; the other clients have no
|
|
62
|
+
pre-compaction event, so nothing is installed for them.
|
|
63
|
+
|
|
46
64
|
**βοΈ It fills itself.** A test, build or lint command that goes red β green is saved as
|
|
47
65
|
`fix: <the error>` with the diff that fixed it. Commits become memories. Next time the same
|
|
48
66
|
error shows up, the agent is pointed at the fix β through hooks in Claude Code, Codex, Cursor
|
|
@@ -115,7 +133,7 @@ After `npm install -g @nxuss/lemma` and reconnecting the MCP server, a project t
|
|
|
115
133
|
| | Comes with the upgrade | Needs `lemma init` again |
|
|
116
134
|
| :--- | :---: | :---: |
|
|
117
135
|
| New and fixed tool behaviour (freshness checks, the diff shown on a STALE memory, the hand-off logic) | β
| |
|
|
118
|
-
| Missing Claude Code hooks (`SessionStart`, prompt recall, the note before an edit, `SessionEnd`), added at the next MCP start | β
| |
|
|
136
|
+
| Missing Claude Code hooks (`SessionStart`, prompt recall, the note before an edit, `SessionEnd`, `PreCompact`), added at the next MCP start | β
| |
|
|
119
137
|
| Agent rules in `CLAUDE.md` / `AGENTS.md` (when to search, store and leave a hand-off) | | β
|
|
|
120
138
|
| Pre-approved read and memory tool permissions (otherwise the agent is asked each time) | | β
|
|
|
121
139
|
| Hooks and config for Codex, Cursor, OpenCode, Windsurf and Kiro | | β
|
|
package/bin/brain-ingest.js
CHANGED
|
@@ -15,9 +15,11 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Usage: lemma-brain-ingest [projectRoot] [--commits [--max N]] [--changelog] [--team-pull]
|
|
17
17
|
* lemma-brain-ingest --hook-result [--host=claude|codex|cursor|opencode] < payload.json
|
|
18
|
+
* lemma-brain-ingest --hook-failure < payload.json (PostToolUseFailure: only the leak warning)
|
|
18
19
|
* lemma-brain-ingest --prompt-submit < payload.json
|
|
19
20
|
* lemma-brain-ingest --pre-tool < payload.json
|
|
20
21
|
* lemma-brain-ingest --session-end < payload.json
|
|
22
|
+
* lemma-brain-ingest --pre-compact < payload.json (PreCompact: saves the hand-off; prints nothing, never blocks)
|
|
21
23
|
*
|
|
22
24
|
* --team-pull Import the repo's shared memories from .lemma-brain/ (post-merge/post-checkout).
|
|
23
25
|
* --hook-result Read a host PostToolUse hook payload on stdin (Claude Code shape) and:
|
|
@@ -68,10 +70,11 @@ async function reportOffered(dist, root, notes) {
|
|
|
68
70
|
|
|
69
71
|
async function hookResult(args) {
|
|
70
72
|
const dist = path.join(__dirname, '..', 'dist', 'cjs');
|
|
71
|
-
let recordHookPayload, hookRecall, normalizeHostPayload, formatHostOutput, parseHost;
|
|
73
|
+
let recordHookPayload, hookRecall, leakNote, normalizeHostPayload, formatHostOutput, parseHost;
|
|
72
74
|
try {
|
|
73
75
|
({ recordHookPayload } = require(path.join(dist, 'utils', 'FixCapture.js')));
|
|
74
76
|
({ hookRecall } = require(path.join(dist, 'subconscious', 'HostRecall.js')));
|
|
77
|
+
({ leakNote } = require(path.join(dist, 'subconscious', 'LeakWatch.js')));
|
|
75
78
|
({ normalizeHostPayload, formatHostOutput, parseHost } = require(path.join(dist, 'subconscious', 'HostAdapters.js')));
|
|
76
79
|
} catch {
|
|
77
80
|
return; // no build β a hook must stay silent and harmless
|
|
@@ -84,14 +87,32 @@ async function hookResult(args) {
|
|
|
84
87
|
} catch {
|
|
85
88
|
return;
|
|
86
89
|
}
|
|
90
|
+
// PostToolUseFailure (a command that exited non-zero) carries the output in `error`, with no tool_response. It only
|
|
91
|
+
// feeds the leak warning: a failing run that dumps its environment is the likeliest way a secret reaches the model.
|
|
92
|
+
const failure = args.includes('--hook-failure');
|
|
93
|
+
if (failure) {
|
|
94
|
+
if (!raw || typeof raw.error !== 'string' || raw.tool_name !== 'Bash') return;
|
|
95
|
+
raw = { ...raw, tool_response: { output: raw.error, exit_code: 1, interrupted: raw.is_interrupt === true } };
|
|
96
|
+
}
|
|
87
97
|
const notes = [];
|
|
88
98
|
const recalled = [];
|
|
89
99
|
let root;
|
|
90
100
|
for (const payload of normalizeHostPayload(host, raw)) {
|
|
101
|
+
if (failure) {
|
|
102
|
+
try {
|
|
103
|
+
const leak = leakNote(payload, payload.cwd);
|
|
104
|
+
if (leak && !notes.includes(leak)) notes.push(leak);
|
|
105
|
+
} catch { /* a warning failing must not fail the hook */ }
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
91
108
|
try {
|
|
92
109
|
const res = recordHookPayload(payload, payload.cwd);
|
|
93
110
|
if (res && res.captured) console.error(res.note.trim());
|
|
94
111
|
} catch { /* capture failing must not cost the recall below */ }
|
|
112
|
+
try {
|
|
113
|
+
const leak = leakNote(payload, payload.cwd); // a native tool printed a credential: warn, never echo it
|
|
114
|
+
if (leak && !notes.includes(leak)) notes.push(leak);
|
|
115
|
+
} catch { /* a warning failing must not cost the recall below */ }
|
|
95
116
|
const recall = hookRecall(payload, payload.cwd);
|
|
96
117
|
if (recall && !notes.includes(recall.text)) {
|
|
97
118
|
notes.push(recall.text);
|
|
@@ -99,7 +120,7 @@ async function hookResult(args) {
|
|
|
99
120
|
root = root || payload.cwd;
|
|
100
121
|
}
|
|
101
122
|
}
|
|
102
|
-
const out = formatHostOutput(host, notes.join('\n'));
|
|
123
|
+
const out = formatHostOutput(host, notes.join('\n'), failure ? 'PostToolUseFailure' : 'PostToolUse');
|
|
103
124
|
if (out) process.stdout.write(out);
|
|
104
125
|
await reportOffered(dist, root, recalled);
|
|
105
126
|
}
|
|
@@ -152,9 +173,9 @@ async function preTool() {
|
|
|
152
173
|
// before the first prompt β no tool call for the agent to remember or skip.
|
|
153
174
|
async function sessionStart() {
|
|
154
175
|
const dist = path.join(__dirname, '..', 'dist', 'cjs');
|
|
155
|
-
let sessionRecall, formatHostOutput;
|
|
176
|
+
let sessionRecall, compactRecall, formatHostOutput;
|
|
156
177
|
try {
|
|
157
|
-
({ sessionRecall } = require(path.join(dist, 'subconscious', 'HostRecall.js')));
|
|
178
|
+
({ sessionRecall, compactRecall } = require(path.join(dist, 'subconscious', 'HostRecall.js')));
|
|
158
179
|
({ formatHostOutput } = require(path.join(dist, 'subconscious', 'HostAdapters.js')));
|
|
159
180
|
} catch {
|
|
160
181
|
return;
|
|
@@ -174,7 +195,8 @@ async function sessionStart() {
|
|
|
174
195
|
} catch {
|
|
175
196
|
// the reminder is a courtesy; the briefing must still go out
|
|
176
197
|
}
|
|
177
|
-
|
|
198
|
+
// After a compaction the hand-off's content goes back in; any other start (or no hand-off) is the usual briefing.
|
|
199
|
+
const recall = (payload.source === 'compact' && compactRecall(payload, payload.cwd)) || sessionRecall(payload, payload.cwd);
|
|
178
200
|
const out = formatHostOutput('claude', recall ? recall.text : '', 'SessionStart');
|
|
179
201
|
if (out) process.stdout.write(out);
|
|
180
202
|
await reportOffered(dist, payload.cwd, [recall]);
|
|
@@ -194,13 +216,27 @@ async function sessionEnd() {
|
|
|
194
216
|
captureSession(payload, payload.cwd);
|
|
195
217
|
}
|
|
196
218
|
|
|
219
|
+
// PreCompact hook (Claude Code): save the hand-off before the host compacts. It must never block the
|
|
220
|
+
// compaction (exit 0, no decision, no stdout) and never be the slow part of it.
|
|
221
|
+
async function preCompact() {
|
|
222
|
+
try {
|
|
223
|
+
const dist = path.join(__dirname, '..', 'dist', 'cjs');
|
|
224
|
+
const payload = JSON.parse(readStdin()) || {};
|
|
225
|
+
const { captureSession } = require(path.join(dist, 'utils', 'SessionCapture.js'));
|
|
226
|
+
captureSession(payload, payload.cwd, undefined, { preCompact: true });
|
|
227
|
+
} catch {
|
|
228
|
+
// no build, no payload, no transcript: the compaction goes ahead untouched
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
197
232
|
async function main() {
|
|
198
233
|
const args = process.argv.slice(2);
|
|
234
|
+
if (args.includes('--pre-compact')) return preCompact();
|
|
199
235
|
if (args.includes('--session-end')) return sessionEnd();
|
|
200
236
|
if (args.includes('--session-start')) return sessionStart();
|
|
201
237
|
if (args.includes('--prompt-submit')) return promptSubmit();
|
|
202
238
|
if (args.includes('--pre-tool')) return preTool();
|
|
203
|
-
if (args.includes('--hook-result')) return hookResult(args);
|
|
239
|
+
if (args.includes('--hook-result') || args.includes('--hook-failure')) return hookResult(args);
|
|
204
240
|
const maxIndex = args.indexOf('--max');
|
|
205
241
|
const maxCommits = maxIndex >= 0 ? parseInt(args[maxIndex + 1], 10) : undefined;
|
|
206
242
|
const includeChangelog = args.includes('--changelog');
|
package/bin/doctor.js
CHANGED
|
@@ -133,8 +133,9 @@ async function main() {
|
|
|
133
133
|
['PostToolUse', 'lemma-brain-ingest --hook-result'],
|
|
134
134
|
['UserPromptSubmit', 'lemma-brain-ingest --prompt-submit'],
|
|
135
135
|
['SessionStart', 'lemma-brain-ingest --session-start'],
|
|
136
|
+
['PreCompact', 'lemma-brain-ingest --pre-compact'],
|
|
136
137
|
].filter(([, mark]) => !hooksText.includes(mark)).map(([event]) => event);
|
|
137
|
-
if (missing.length === 0) ok('Claude Code hooks current (PostToolUse, UserPromptSubmit, SessionStart)');
|
|
138
|
+
if (missing.length === 0) ok('Claude Code hooks current (PostToolUse, UserPromptSubmit, SessionStart, PreCompact)');
|
|
138
139
|
else warn(`Claude Code hooks missing: ${missing.join(', ')} β re-run \`lemma init\` (or restart the MCP server: it repairs an existing install)`);
|
|
139
140
|
|
|
140
141
|
const allow = (claudeSettings.permissions && claudeSettings.permissions.allow) || [];
|
package/bin/init.js
CHANGED
|
@@ -289,7 +289,7 @@ El servidor MCP \`lemma\` recuerda entre sesiones y avisa cuando el cΓ³digo del
|
|
|
289
289
|
- Un aviso π§ nombra memorias β \`mcp__lemma__get_memory\` de la primera.
|
|
290
290
|
- Un fix quedΓ³ verificado (tests pasan) β \`mcp__lemma__store_memory\` con \`filePaths\`: la causa raΓz o la trampa, no un resumen del cambio.
|
|
291
291
|
- Terminas una sesiΓ³n con trabajo a medias o por partes β \`store_memory\` (o \`update_memory\` si ya hay una) con lo HECHO, lo PENDIENTE y los nombres/firmas exactos de lo especificado; no resumas la especificaciΓ³n.
|
|
292
|
-
- Una memoria quedΓ³ desactualizada β \`update_memory\` (o \`forget_memory\`); no guardes otra al lado.
|
|
292
|
+
- Una memoria quedΓ³ desactualizada β \`update_memory\` (o \`forget_memory\`); no guardes otra al lado. Para aΓ±adir a una memoria larga (un Γndice vivo) usa \`append\`; para corregir un pasaje, \`patch\` \`{find, replace}\`; \`response\` reescribe todo y exige \`get_memory\` antes.
|
|
293
293
|
- Tests, build o lint con salida larga β \`mcp__lemma__run_workspace_command\`: devuelve los fallos y el resumen; el resto se abre con \`output_region\`.
|
|
294
294
|
- CΓ³digo que aΓΊn no ubicaste o que puede tener secretos β \`search_workspace\` / \`read_workspace_file\`.
|
|
295
295
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* FixCapture). Without them the Brain only ever saw Lemma's MCP tools β and agents mostly read,
|
|
5
5
|
* edit and test with their native ones.
|
|
6
6
|
*
|
|
7
|
-
* - Claude Code β `.claude/settings.local.json` PostToolUse + UserPromptSubmit + SessionStart (personal, never the team's
|
|
7
|
+
* - Claude Code β `.claude/settings.local.json` PostToolUse + UserPromptSubmit + SessionStart + PreCompact (personal, never the team's
|
|
8
8
|
* versioned settings.json; gitignored if the repo doesn't ignore it yet).
|
|
9
9
|
* - Codex β `~/.codex/hooks.json` PostToolUse, same format as Claude Code.
|
|
10
10
|
* - Cursor β `~/.cursor/hooks.json` postToolUse + postToolUseFailure.
|
|
@@ -31,6 +31,18 @@ export declare const CLAUDE_PRE_TOOL_MATCHER = "Edit|MultiEdit|Write|NotebookEdi
|
|
|
31
31
|
export declare const CLAUDE_SESSION_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --session-start || true";
|
|
32
32
|
/** SessionEnd: a session that stored nothing still leaves its closing answer β see SessionCapture. */
|
|
33
33
|
export declare const CLAUDE_SESSION_END_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --session-end || true";
|
|
34
|
+
/**
|
|
35
|
+
* PreCompact: save the hand-off before the host compacts; SessionStart(compact) puts it back β see SessionCapture.
|
|
36
|
+
* Claude Code only: no other host has a verified pre-compaction event. The hook prints nothing and always exits 0,
|
|
37
|
+
* so it can never block the compaction.
|
|
38
|
+
*/
|
|
39
|
+
export declare const CLAUDE_PRE_COMPACT_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --pre-compact || true";
|
|
40
|
+
/**
|
|
41
|
+
* PostToolUseFailure (Bash): Claude Code sends a command that exits non-zero here and NOT to PostToolUse, so
|
|
42
|
+
* a failing run that dumps its environment never reached the leak warning. Only the warning is wired to it.
|
|
43
|
+
*/
|
|
44
|
+
export declare const CLAUDE_FAILURE_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --hook-failure || true";
|
|
45
|
+
export declare const CLAUDE_FAILURE_MATCHER = "Bash";
|
|
34
46
|
export declare const CLAUDE_HOOK_MATCHER = "Bash|Read|Edit|MultiEdit|Write|NotebookEdit";
|
|
35
47
|
export declare const CODEX_HOOK_MATCHER = "Bash|apply_patch|Edit|Write";
|
|
36
48
|
export declare const CURSOR_POST_MATCHER = "Read|Shell|Write";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hostHooks.d.ts","sourceRoot":"","sources":["../../../src/cli/hostHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"hostHooks.d.ts","sourceRoot":"","sources":["../../../src/cli/hostHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAeH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAGvE;AAED,eAAO,MAAM,mBAAmB,QAAwB,CAAC;AACzD,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,gGAA4E,CAAC;AACpH,uGAAuG;AACvG,eAAO,MAAM,4BAA4B,2FAA8E,CAAC;AACxH,eAAO,MAAM,uBAAuB,sCAAsC,CAAC;AAC3E,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,gGAA6E,CAAC;AACtH,sGAAsG;AACtG,eAAO,MAAM,+BAA+B,8FAAiF,CAAC;AAC9H;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,8FAAiF,CAAC;AAC9H;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+FAA6E,CAAC;AACtH,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAC7C,eAAO,MAAM,mBAAmB,gDAAgD,CAAC;AACjF,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAChE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,UAWD,CAAC;AAEjC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA6FD,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,EAAE,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,kBAAkB,CA4B3H;AAED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAqB,GAAG,kBAAkB,CAEjF;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAqB,GAAG,kBAAkB,CAkClF;AAID;;;;;GAKG;AACH,eAAO,MAAM,eAAe,szCA0B3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,MAAqB,GAAG,kBAAkB,CAYrF;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IACtD,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,EAAE,IAAI,GAAE,MAAqB,GAAG,cAAc,EAAE,CAO3G;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,GAAG,IAAI,CAWxF"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* FixCapture). Without them the Brain only ever saw Lemma's MCP tools β and agents mostly read,
|
|
6
6
|
* edit and test with their native ones.
|
|
7
7
|
*
|
|
8
|
-
* - Claude Code β `.claude/settings.local.json` PostToolUse + UserPromptSubmit + SessionStart (personal, never the team's
|
|
8
|
+
* - Claude Code β `.claude/settings.local.json` PostToolUse + UserPromptSubmit + SessionStart + PreCompact (personal, never the team's
|
|
9
9
|
* versioned settings.json; gitignored if the repo doesn't ignore it yet).
|
|
10
10
|
* - Codex β `~/.codex/hooks.json` PostToolUse, same format as Claude Code.
|
|
11
11
|
* - Cursor β `~/.cursor/hooks.json` postToolUse + postToolUseFailure.
|
|
@@ -25,7 +25,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
25
25
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.OPENCODE_PLUGIN = exports.CLAUDE_ALLOWED_TOOLS = exports.CURSOR_FAILURE_MATCHER = exports.CURSOR_POST_MATCHER = exports.CODEX_HOOK_MATCHER = exports.CLAUDE_HOOK_MATCHER = exports.CLAUDE_SESSION_END_HOOK_COMMAND = exports.CLAUDE_SESSION_HOOK_COMMAND = exports.CLAUDE_PRE_TOOL_MATCHER = exports.CLAUDE_PRE_TOOL_HOOK_COMMAND = exports.CLAUDE_PROMPT_HOOK_COMMAND = exports.CLAUDE_HOOK_COMMAND = void 0;
|
|
28
|
+
exports.OPENCODE_PLUGIN = exports.CLAUDE_ALLOWED_TOOLS = exports.CURSOR_FAILURE_MATCHER = exports.CURSOR_POST_MATCHER = exports.CODEX_HOOK_MATCHER = exports.CLAUDE_HOOK_MATCHER = exports.CLAUDE_FAILURE_MATCHER = exports.CLAUDE_FAILURE_HOOK_COMMAND = exports.CLAUDE_PRE_COMPACT_HOOK_COMMAND = exports.CLAUDE_SESSION_END_HOOK_COMMAND = exports.CLAUDE_SESSION_HOOK_COMMAND = exports.CLAUDE_PRE_TOOL_MATCHER = exports.CLAUDE_PRE_TOOL_HOOK_COMMAND = exports.CLAUDE_PROMPT_HOOK_COMMAND = exports.CLAUDE_HOOK_COMMAND = void 0;
|
|
29
29
|
exports.hookCommand = hookCommand;
|
|
30
30
|
exports.installClaudeHooks = installClaudeHooks;
|
|
31
31
|
exports.installCodexHooks = installCodexHooks;
|
|
@@ -42,6 +42,8 @@ const PROMPT_MARK = 'lemma-brain-ingest --prompt-submit';
|
|
|
42
42
|
const PRE_TOOL_MARK = 'lemma-brain-ingest --pre-tool';
|
|
43
43
|
const SESSION_MARK = 'lemma-brain-ingest --session-start';
|
|
44
44
|
const SESSION_END_MARK = 'lemma-brain-ingest --session-end';
|
|
45
|
+
const PRE_COMPACT_MARK = 'lemma-brain-ingest --pre-compact';
|
|
46
|
+
const FAILURE_MARK = 'lemma-brain-ingest --hook-failure';
|
|
45
47
|
function hookCommand(host) {
|
|
46
48
|
const flag = host === 'claude' ? '' : ` --host=${host}`;
|
|
47
49
|
return `command -v lemma-brain-ingest >/dev/null 2>&1 && ${HOOK_MARK}${flag} || true`;
|
|
@@ -56,6 +58,18 @@ exports.CLAUDE_PRE_TOOL_MATCHER = 'Edit|MultiEdit|Write|NotebookEdit';
|
|
|
56
58
|
exports.CLAUDE_SESSION_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${SESSION_MARK} || true`;
|
|
57
59
|
/** SessionEnd: a session that stored nothing still leaves its closing answer β see SessionCapture. */
|
|
58
60
|
exports.CLAUDE_SESSION_END_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${SESSION_END_MARK} || true`;
|
|
61
|
+
/**
|
|
62
|
+
* PreCompact: save the hand-off before the host compacts; SessionStart(compact) puts it back β see SessionCapture.
|
|
63
|
+
* Claude Code only: no other host has a verified pre-compaction event. The hook prints nothing and always exits 0,
|
|
64
|
+
* so it can never block the compaction.
|
|
65
|
+
*/
|
|
66
|
+
exports.CLAUDE_PRE_COMPACT_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${PRE_COMPACT_MARK} || true`;
|
|
67
|
+
/**
|
|
68
|
+
* PostToolUseFailure (Bash): Claude Code sends a command that exits non-zero here and NOT to PostToolUse, so
|
|
69
|
+
* a failing run that dumps its environment never reached the leak warning. Only the warning is wired to it.
|
|
70
|
+
*/
|
|
71
|
+
exports.CLAUDE_FAILURE_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${FAILURE_MARK} || true`;
|
|
72
|
+
exports.CLAUDE_FAILURE_MATCHER = 'Bash';
|
|
59
73
|
exports.CLAUDE_HOOK_MATCHER = 'Bash|Read|Edit|MultiEdit|Write|NotebookEdit';
|
|
60
74
|
exports.CODEX_HOOK_MATCHER = 'Bash|apply_patch|Edit|Write';
|
|
61
75
|
exports.CURSOR_POST_MATCHER = 'Read|Shell|Write';
|
|
@@ -184,12 +198,18 @@ function installClaudeHooks(cwd = process.cwd(), options = {}) {
|
|
|
184
198
|
const sessionEnd = mergeMatcherHooks(file, 'SessionEnd', undefined, exports.CLAUDE_SESSION_END_HOOK_COMMAND, SESSION_END_MARK);
|
|
185
199
|
if (sessionEnd.status === 'manual')
|
|
186
200
|
return sessionEnd;
|
|
201
|
+
const preCompact = mergeMatcherHooks(file, 'PreCompact', undefined, exports.CLAUDE_PRE_COMPACT_HOOK_COMMAND, PRE_COMPACT_MARK);
|
|
202
|
+
if (preCompact.status === 'manual')
|
|
203
|
+
return preCompact;
|
|
204
|
+
const failure = mergeMatcherHooks(file, 'PostToolUseFailure', exports.CLAUDE_FAILURE_MATCHER, exports.CLAUDE_FAILURE_HOOK_COMMAND, FAILURE_MARK);
|
|
205
|
+
if (failure.status === 'manual')
|
|
206
|
+
return failure;
|
|
187
207
|
// The permission grant is only for an explicit init: repairClaudeHooks runs on every MCP start
|
|
188
208
|
// and must not widen what the user's agent may do without asking.
|
|
189
209
|
const perms = options.permissions === false ? null : mergeClaudePermissions(file);
|
|
190
210
|
const gitignored = ensureClaudeLocalIgnored(cwd);
|
|
191
211
|
// All new β a fresh install. Extending a project that already had some of them is an update.
|
|
192
|
-
const parts = [post.status, pre.status, prompt.status, session.status, sessionEnd.status];
|
|
212
|
+
const parts = [post.status, pre.status, prompt.status, session.status, sessionEnd.status, failure.status, preCompact.status];
|
|
193
213
|
const status = parts.every((x) => x === 'unchanged') && perms?.status !== 'updated'
|
|
194
214
|
? 'unchanged'
|
|
195
215
|
: parts.every((x) => x === 'installed')
|
|
@@ -322,7 +342,7 @@ function repairClaudeHooks(cwd = process.cwd()) {
|
|
|
322
342
|
catch {
|
|
323
343
|
return null;
|
|
324
344
|
}
|
|
325
|
-
if (![HOOK_MARK, PROMPT_MARK, PRE_TOOL_MARK, SESSION_MARK, SESSION_END_MARK].some((mark) => text.includes(mark)))
|
|
345
|
+
if (![HOOK_MARK, PROMPT_MARK, PRE_TOOL_MARK, SESSION_MARK, SESSION_END_MARK, FAILURE_MARK, PRE_COMPACT_MARK].some((mark) => text.includes(mark)))
|
|
326
346
|
return null;
|
|
327
347
|
const outcome = installClaudeHooks(cwd, { permissions: false });
|
|
328
348
|
return outcome.status === 'unchanged' || outcome.status === 'manual' ? null : outcome;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hostHooks.js","sourceRoot":"","sources":["../../../src/cli/hostHooks.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;AAaH,kCAGC;AAuID,gDAwBC;AAED,8CAEC;AAGD,gDAkCC;AAsCD,sDAYC;AAYD,4CAOC;AAWD,8CAWC;AAjTD,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AACxB,iDAA6C;AAE7C,MAAM,SAAS,GAAG,kCAAkC,CAAC;AACrD,MAAM,WAAW,GAAG,oCAAoC,CAAC;AACzD,MAAM,aAAa,GAAG,+BAA+B,CAAC;AACtD,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAC1D,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAE5D,SAAgB,WAAW,CAAC,IAAmC;IAC7D,MAAM,IAAI,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC;IACxD,OAAO,oDAAoD,SAAS,GAAG,IAAI,UAAU,CAAC;AACxF,CAAC;AAEY,QAAA,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AACzD,0FAA0F;AAC7E,QAAA,0BAA0B,GAAG,oDAAoD,WAAW,UAAU,CAAC;AACpH,uGAAuG;AAC1F,QAAA,4BAA4B,GAAG,oDAAoD,aAAa,UAAU,CAAC;AAC3G,QAAA,uBAAuB,GAAG,mCAAmC,CAAC;AAC3E,4FAA4F;AAC/E,QAAA,2BAA2B,GAAG,oDAAoD,YAAY,UAAU,CAAC;AACtH,sGAAsG;AACzF,QAAA,+BAA+B,GAAG,oDAAoD,gBAAgB,UAAU,CAAC;AACjH,QAAA,mBAAmB,GAAG,6CAA6C,CAAC;AACpE,QAAA,kBAAkB,GAAG,6BAA6B,CAAC;AACnD,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AACzC,QAAA,sBAAsB,GAAG,OAAO,CAAC;AAE9C;;;;GAIG;AACU,QAAA,oBAAoB,GAAG;IAClC,eAAe;IACf,YAAY;IACZ,eAAe;IACf,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,qBAAqB;IACrB,kBAAkB;IAClB,eAAe;IACf,cAAc;CACf,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAWjC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5G,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAErC,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,KAAc;IAC7C,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,IAAY,EACZ,KAAa,EACb,OAA2B,EAC3B,OAAe,EACf,OAAe,SAAS;IAExB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,0FAA0F;IAC1F,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxG,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IACD,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,IAAI,GAAU,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/E,IAAI,MAAoC,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,MAAM,GAAG,WAAW,CAAC;IACvB,CAAC;SAAM,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACnG,MAAM,GAAG,WAAW,CAAC;IACvB,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,IAAI,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;IACD,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC7B,IAAI,MAAM,KAAK,WAAW;QAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,sGAAsG;AACtG,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3G,MAAM,KAAK,GAAU,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,OAAO,GAAG,4BAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/D,QAAQ,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACnE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;IAC3C,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,IAAA,4BAAY,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC,CAAC,kBAAkB;IAClC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,iFAAiF;QACjF,IAAI,CAAC,EAAE,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACpC,CAAC;IACD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,6BAA6B,CAAC;IAC3C,MAAM,QAAQ,GAAG,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,YAAE,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE,EAAE,UAAqC,EAAE;IACrG,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,2BAAmB,EAAE,2BAAmB,CAAC,CAAC;IAC9F,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,kCAA0B,EAAE,WAAW,CAAC,CAAC;IAC/G,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,mCAA2B,EAAE,YAAY,CAAC,CAAC;IAC9G,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,+BAAuB,EAAE,oCAA4B,EAAE,aAAa,CAAC,CAAC;IACxH,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,uCAA+B,EAAE,gBAAgB,CAAC,CAAC;IACvH,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IACtD,+FAA+F;IAC/F,kEAAkE;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACjD,6FAA6F;IAC7F,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAiC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS;QAC/G,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC;YACrC,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAe,YAAE,CAAC,OAAO,EAAE;IAC3D,OAAO,iBAAiB,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,0BAAkB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7H,CAAC;AAED,oFAAoF;AACpF,SAAgB,kBAAkB,CAAC,OAAe,YAAE,CAAC,OAAO,EAAE;IAC5D,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,MAAM,GAAyD;QACnE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,2BAAmB,EAAE;QACtD,kBAAkB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,8BAAsB,EAAE;KACjE,CAAC;IACF,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9H,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC3D,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAU,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO;QAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7F,CAAC;AAED,MAAM,aAAa,GAAG,yFAAyF,CAAC;AAEhH;;;;;GAKG;AACU,QAAA,eAAe,GAAG,GAAG,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B9C,CAAC;AAEF,SAAgB,qBAAqB,CAAC,OAAe,YAAE,CAAC,OAAO,EAAE;IAC/D,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;IACxF,IAAI,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,uBAAe,EAAE,CAAC;QACpG,IAAI,OAAO,KAAK,uBAAe;YAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACtE,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,uBAAe,CAAC,CAAC;QACxC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IACD,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,uBAAe,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AAOD;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE,EAAE,OAAe,YAAE,CAAC,OAAO,EAAE;IACvF,MAAM,GAAG,GAAqB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1F,MAAM,GAAG,GAAG,CAAC,GAAG,CAAW,EAAE,EAAE,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,QAAQ,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,IAAI,GAAG,CAAC,SAAS,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpF,IAAI,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC3D,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAC9D,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9H,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,OAAO,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACxF,CAAC"}
|
|
1
|
+
{"version":3,"file":"hostHooks.js","sourceRoot":"","sources":["../../../src/cli/hostHooks.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;AAkBH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAShE,eAAO,MAAM,uBAAuB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAShE,eAAO,MAAM,uBAAuB,EAAE,cAAc,EAgWnD,CAAC;AAmVF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOvD;AAuoBD,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiB5D,CAAC"}
|
|
@@ -161,13 +161,20 @@ exports.MEMORY_TOOL_DEFINITIONS = [
|
|
|
161
161
|
{
|
|
162
162
|
name: "update_memory",
|
|
163
163
|
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
164
|
-
description: "
|
|
164
|
+
description: "Edit a memory in place, keeping id, hits, downvotes and derivedFrom (store_memory mints a new id). append extends it, patch fixes one passage, response rewrites it whole (get_memory first). Omitted fields are kept. Evidence is re-anchored like refresh_memory: call it only once the new content is true.",
|
|
165
165
|
inputSchema: {
|
|
166
166
|
type: "object",
|
|
167
167
|
properties: {
|
|
168
168
|
id: { type: "string", description: "Memory id." },
|
|
169
169
|
query: { type: "string", description: "Replacement key; omit to keep." },
|
|
170
170
|
response: { type: "string", description: "Complete replacement text, not a diff." },
|
|
171
|
+
append: { type: "string", description: "Added after the stored body. Alone." },
|
|
172
|
+
patch: {
|
|
173
|
+
type: "object",
|
|
174
|
+
properties: { find: { type: "string" }, replace: { type: "string" } },
|
|
175
|
+
required: ["find", "replace"],
|
|
176
|
+
description: "Exact passage swap; find must occur once. Alone.",
|
|
177
|
+
},
|
|
171
178
|
filePaths: { type: "array", items: { type: "string" }, description: "Files the new content depends on, replacing the tracked set; omit to re-hash the current set." },
|
|
172
179
|
symbols: {
|
|
173
180
|
type: "array",
|
|
@@ -205,7 +212,7 @@ exports.MEMORY_TOOL_DEFINITIONS = [
|
|
|
205
212
|
refs: { type: "array", items: { type: "object" }, description: "Replacement refs (store_memory shape); [] clears." },
|
|
206
213
|
domain: { type: "string", description: "Replacement domain; '' clears." },
|
|
207
214
|
derivedFrom: { type: "array", items: { type: "string" }, description: "Replacement upstream ids; [] clears." },
|
|
208
|
-
supersededBy: { type: "string", description: "Id of the memory
|
|
215
|
+
supersededBy: { type: "string", description: "Id of the memory replacing this one (hidden from search_memory); for contradictions. '' undoes." },
|
|
209
216
|
},
|
|
210
217
|
required: ["id"],
|
|
211
218
|
},
|
|
@@ -601,6 +608,10 @@ async function handleUpdateMemory(args) {
|
|
|
601
608
|
throw new Error("id is required");
|
|
602
609
|
const query = typeof args?.query === "string" ? args.query : undefined;
|
|
603
610
|
const response = typeof args?.response === "string" ? args.response : undefined;
|
|
611
|
+
const append = typeof args?.append === "string" && args.append.length > 0 ? args.append : undefined;
|
|
612
|
+
const patch = args?.patch && typeof args.patch.find === "string" && typeof args.patch.replace === "string"
|
|
613
|
+
? { find: args.patch.find, replace: args.patch.replace }
|
|
614
|
+
: undefined;
|
|
604
615
|
const filePaths = Array.isArray(args?.filePaths) ? args.filePaths.filter((p) => typeof p === "string" && p) : undefined;
|
|
605
616
|
const symbols = Array.isArray(args?.symbols)
|
|
606
617
|
? args.symbols.filter((sym) => sym?.filePath && sym?.symbolName)
|
|
@@ -615,7 +626,7 @@ async function handleUpdateMemory(args) {
|
|
|
615
626
|
: undefined;
|
|
616
627
|
const supersededBy = typeof args?.supersededBy === "string" ? args.supersededBy : undefined;
|
|
617
628
|
const refs = Array.isArray(args?.refs) ? (0, ExternalRefs_1.sanitizeRefs)(args.refs) : undefined;
|
|
618
|
-
if (query === undefined && response === undefined && filePaths === undefined && symbols === undefined &&
|
|
629
|
+
if (query === undefined && response === undefined && append === undefined && patch === undefined && filePaths === undefined && symbols === undefined &&
|
|
619
630
|
claims === undefined && outcome === undefined && domain === undefined && derivedFrom === undefined &&
|
|
620
631
|
supersededBy === undefined && refs === undefined) {
|
|
621
632
|
return {
|
|
@@ -628,7 +639,7 @@ async function handleUpdateMemory(args) {
|
|
|
628
639
|
try {
|
|
629
640
|
// Refs alone must not re-anchor the entry's file hashes (update() would): attaching "also
|
|
630
641
|
// depends on MR !1061" is not an assertion that the tracked code was re-checked.
|
|
631
|
-
const refsOnly = refs !== undefined && query === undefined && response === undefined && filePaths === undefined &&
|
|
642
|
+
const refsOnly = refs !== undefined && query === undefined && response === undefined && append === undefined && patch === undefined && filePaths === undefined &&
|
|
632
643
|
symbols === undefined && claims === undefined && outcome === undefined && domain === undefined &&
|
|
633
644
|
derivedFrom === undefined && supersededBy === undefined;
|
|
634
645
|
if (refsOnly) {
|
|
@@ -641,18 +652,24 @@ async function handleUpdateMemory(args) {
|
|
|
641
652
|
let trackSymbols = symbols;
|
|
642
653
|
if (filePaths && filePaths.length > 0 && !symbols) {
|
|
643
654
|
const current = (0, TheBrainV2_1.getBrain)().getEntry(id);
|
|
644
|
-
const narrowed = (0, NarrowEvidence_1.narrowEvidence)(filePaths, `${query ?? current?.query ?? ""}\n${response ?? current?.response ?? ""}`);
|
|
655
|
+
const narrowed = (0, NarrowEvidence_1.narrowEvidence)(filePaths, `${query ?? current?.query ?? ""}\n${response ?? current?.response ?? ""}\n${append ?? ""}`);
|
|
645
656
|
if (narrowed.symbols.length > 0) {
|
|
646
657
|
trackFiles = narrowed.filePaths;
|
|
647
658
|
trackSymbols = narrowed.symbols;
|
|
648
659
|
}
|
|
649
660
|
}
|
|
650
661
|
// An automatic hand-off keeps what Lemma captured: the agent's text is added under it, not over it.
|
|
651
|
-
const
|
|
662
|
+
const agentText = response ?? append;
|
|
663
|
+
const target = agentText !== undefined || patch !== undefined ? (0, TheBrainV2_1.getBrain)().getEntry(id) : undefined;
|
|
652
664
|
const keepsHandoff = !!target && (0, TheBrainV2_1.entrySource)(target) === "auto-handoff" && (0, SessionCapture_1.isMachineHandoff)(target.response);
|
|
665
|
+
if (keepsHandoff && patch !== undefined) {
|
|
666
|
+
return { content: [{ type: "text", text: `"${id}" is an automatic hand-off: Lemma owns its text, so patch is refused. Use append (or response) to add your note.` }] };
|
|
667
|
+
}
|
|
653
668
|
const result = (0, TheBrainV2_1.getBrain)().update(id, {
|
|
654
669
|
query,
|
|
655
|
-
response: keepsHandoff ? (0, SessionCapture_1.withAgentNote)(target.response,
|
|
670
|
+
response: keepsHandoff && agentText !== undefined ? (0, SessionCapture_1.withAgentNote)(target.response, agentText) : response,
|
|
671
|
+
append: keepsHandoff ? undefined : append,
|
|
672
|
+
patch,
|
|
656
673
|
filePaths: trackFiles, symbols: trackSymbols, claims, outcome, domain, derivedFrom, supersededBy, refs,
|
|
657
674
|
});
|
|
658
675
|
if (!result.ok)
|
|
@@ -746,6 +763,12 @@ async function handleStoreMemory(args) {
|
|
|
746
763
|
try {
|
|
747
764
|
const brain = (0, TheBrainV2_1.getBrain)();
|
|
748
765
|
const storeRes = brain.store(query, responseText, provider, 0.92, filePaths, undefined, outcome, symbols, claims, domain, derivedFrom, { source: "manual" });
|
|
766
|
+
// Nothing was written. Saying "Success" here sent agents looking for a way around the guard
|
|
767
|
+
// instead of extending the memory that already says this.
|
|
768
|
+
if (!storeRes.stored && storeRes.duplicate) {
|
|
769
|
+
const dup = storeRes.duplicate;
|
|
770
|
+
return { content: [{ type: "text", text: `Not stored: ${storeRes.reason} β memory ${dup.id} ("${String(dup.query).substring(0, 120)}") already covers this. To add to it without rewriting it: update_memory(id="${dup.id}", append="β¦"); to fix one passage: patch={find, replace}. get_memory ${dup.id} first only if you need to read it.` }] };
|
|
771
|
+
}
|
|
749
772
|
if (refs.length > 0 && storeRes.id)
|
|
750
773
|
brain.setRefs(storeRes.id, refs);
|
|
751
774
|
// Storing a memory saves nothing β it only creates the chance of a saving later.
|