@nxuss/lemma 1.41.0 β†’ 1.42.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 (44) hide show
  1. package/README.md +19 -1
  2. package/bin/brain-ingest.js +42 -6
  3. package/bin/doctor.js +2 -1
  4. package/dist/cjs/cli/hostHooks.d.ts +13 -1
  5. package/dist/cjs/cli/hostHooks.d.ts.map +1 -1
  6. package/dist/cjs/cli/hostHooks.js +24 -4
  7. package/dist/cjs/cli/hostHooks.js.map +1 -1
  8. package/dist/cjs/security/SemanticScrubber.d.ts +6 -0
  9. package/dist/cjs/security/SemanticScrubber.d.ts.map +1 -1
  10. package/dist/cjs/security/SemanticScrubber.js +20 -12
  11. package/dist/cjs/security/SemanticScrubber.js.map +1 -1
  12. package/dist/cjs/subconscious/HostRecall.d.ts +14 -0
  13. package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
  14. package/dist/cjs/subconscious/HostRecall.js +32 -0
  15. package/dist/cjs/subconscious/HostRecall.js.map +1 -1
  16. package/dist/cjs/subconscious/LeakWatch.d.ts +21 -0
  17. package/dist/cjs/subconscious/LeakWatch.d.ts.map +1 -0
  18. package/dist/cjs/subconscious/LeakWatch.js +93 -0
  19. package/dist/cjs/subconscious/LeakWatch.js.map +1 -0
  20. package/dist/cjs/utils/SessionCapture.d.ts +13 -2
  21. package/dist/cjs/utils/SessionCapture.d.ts.map +1 -1
  22. package/dist/cjs/utils/SessionCapture.js +71 -10
  23. package/dist/cjs/utils/SessionCapture.js.map +1 -1
  24. package/dist/esm/cli/hostHooks.d.ts +13 -1
  25. package/dist/esm/cli/hostHooks.d.ts.map +1 -1
  26. package/dist/esm/cli/hostHooks.js +23 -3
  27. package/dist/esm/cli/hostHooks.js.map +1 -1
  28. package/dist/esm/security/SemanticScrubber.d.ts +6 -0
  29. package/dist/esm/security/SemanticScrubber.d.ts.map +1 -1
  30. package/dist/esm/security/SemanticScrubber.js +19 -11
  31. package/dist/esm/security/SemanticScrubber.js.map +1 -1
  32. package/dist/esm/subconscious/HostRecall.d.ts +14 -0
  33. package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
  34. package/dist/esm/subconscious/HostRecall.js +31 -2
  35. package/dist/esm/subconscious/HostRecall.js.map +1 -1
  36. package/dist/esm/subconscious/LeakWatch.d.ts +21 -0
  37. package/dist/esm/subconscious/LeakWatch.d.ts.map +1 -0
  38. package/dist/esm/subconscious/LeakWatch.js +86 -0
  39. package/dist/esm/subconscious/LeakWatch.js.map +1 -0
  40. package/dist/esm/utils/SessionCapture.d.ts +13 -2
  41. package/dist/esm/utils/SessionCapture.d.ts.map +1 -1
  42. package/dist/esm/utils/SessionCapture.js +70 -10
  43. package/dist/esm/utils/SessionCapture.js.map +1 -1
  44. 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 | | βœ… |
@@ -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
- const recall = sessionRecall(payload, payload.cwd);
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) || [];
@@ -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;AAaH,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,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,CAwB3H;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"}
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":"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"}
1
+ {"version":3,"file":"hostHooks.js","sourceRoot":"","sources":["../../../src/cli/hostHooks.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,12 @@ export interface ScrubberConfig {
10
10
  regex: string | RegExp;
11
11
  }>;
12
12
  }
13
+ /**
14
+ * Secrets with an unambiguous vendor format (a fixed prefix or structure): low false-positive rate, so
15
+ * they are safe to act on without context, e.g. the hook that warns when a native tool printed one.
16
+ * mask() applies them first; the broader name-based patterns stay in getDefaultPatterns.
17
+ */
18
+ export declare const VENDOR_SECRET_PATTERNS: ScrubberPattern[];
13
19
  export declare class SemanticScrubber {
14
20
  private patterns;
15
21
  private configPath;
@@ -1 +1 @@
1
- {"version":3,"file":"SemanticScrubber.d.ts","sourceRoot":"","sources":["../../../src/security/SemanticScrubber.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AA4BD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,UAAU,CAAiD;;IAMnE,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,YAAY;IA+Cb,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAyDhF,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;IA8B9D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;CAQ3E;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"SemanticScrubber.d.ts","sourceRoot":"","sources":["../../../src/security/SemanticScrubber.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AA4BD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAAe,EASnD,CAAC;AAEF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,UAAU,CAAiD;;IAMnE,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,YAAY;IA+Cb,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAyDhF,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;IA8B9D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;CAQ3E;AAED,eAAe,gBAAgB,CAAC"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SemanticScrubber = void 0;
6
+ exports.SemanticScrubber = exports.VENDOR_SECRET_PATTERNS = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  /**
@@ -41,6 +41,21 @@ function isCodeNotSecret(match, value) {
41
41
  return true; // TS type annotation: `API_KEY: boolean;`
42
42
  return false;
43
43
  }
44
+ /**
45
+ * Secrets with an unambiguous vendor format (a fixed prefix or structure): low false-positive rate, so
46
+ * they are safe to act on without context, e.g. the hook that warns when a native tool printed one.
47
+ * mask() applies them first; the broader name-based patterns stay in getDefaultPatterns.
48
+ */
49
+ exports.VENDOR_SECRET_PATTERNS = [
50
+ { name: 'OPENAI_ANTHROPIC_KEY', regex: /\bsk-(?:ant-|proj-)?[A-Za-z0-9_-]{20,}\b/g },
51
+ { name: 'STRIPE_KEY', regex: /\b(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{10,}\b|\bwhsec_[A-Za-z0-9]{20,}\b/g },
52
+ { name: 'AWS_ACCESS_KEY', regex: /\bAKIA[0-9A-Z]{16}\b/g },
53
+ { name: 'GITHUB_TOKEN', regex: /\bgh[pousr]_[A-Za-z0-9]{36,}\b|\bgithub_pat_[A-Za-z0-9_]{20,}\b/g },
54
+ { name: 'GOOGLE_API_KEY', regex: /\bAIza[0-9A-Za-z_-]{35}\b/g },
55
+ { name: 'SLACK_TOKEN', regex: /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g },
56
+ { name: 'JWT', regex: /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g },
57
+ { name: 'PRIVATE_KEY_BLOCK', regex: /-----BEGIN[ A-Z]*PRIVATE KEY-----[\s\S]+?-----END[ A-Z]*PRIVATE KEY-----/g },
58
+ ];
44
59
  class SemanticScrubber {
45
60
  constructor() {
46
61
  this.patterns = [];
@@ -50,14 +65,7 @@ class SemanticScrubber {
50
65
  getDefaultPatterns() {
51
66
  return [
52
67
  // Vendor-specific secret formats (unambiguous prefixes, low false-positive rate)
53
- { name: 'OPENAI_ANTHROPIC_KEY', regex: /\bsk-(?:ant-|proj-)?[A-Za-z0-9_-]{20,}\b/g },
54
- { name: 'STRIPE_KEY', regex: /\b(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{10,}\b|\bwhsec_[A-Za-z0-9]{20,}\b/g },
55
- { name: 'AWS_ACCESS_KEY', regex: /\bAKIA[0-9A-Z]{16}\b/g },
56
- { name: 'GITHUB_TOKEN', regex: /\bgh[pousr]_[A-Za-z0-9]{36,}\b|\bgithub_pat_[A-Za-z0-9_]{20,}\b/g },
57
- { name: 'GOOGLE_API_KEY', regex: /\bAIza[0-9A-Za-z_-]{35}\b/g },
58
- { name: 'SLACK_TOKEN', regex: /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g },
59
- { name: 'JWT', regex: /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g },
60
- { name: 'PRIVATE_KEY_BLOCK', regex: /-----BEGIN[ A-Z]*PRIVATE KEY-----[\s\S]+?-----END[ A-Z]*PRIVATE KEY-----/g },
68
+ ...exports.VENDOR_SECRET_PATTERNS,
61
69
  { name: 'BEARER_TOKEN', regex: /Bearer\s+[a-zA-Z0-9\-._~+/]+=*/gi },
62
70
  // Catch-all: any ENV_STYLE assignment whose name signals a secret, regardless of vendor.
63
71
  // This is what protects custom names like STRIPE_WEBHOOK_SECRET or LEMMA_LICENSE_SALT
@@ -98,7 +106,7 @@ class SemanticScrubber {
98
106
  const scrubberConfig = config.security?.scrubber || {};
99
107
  if (scrubberConfig.disabled) {
100
108
  this.patterns = [];
101
- console.log('[PrivacyFirewall] SemanticScrubber is disabled via config.');
109
+ console.error('[PrivacyFirewall] SemanticScrubber is disabled via config.');
102
110
  return;
103
111
  }
104
112
  if (scrubberConfig.patterns && Array.isArray(scrubberConfig.patterns)) {
@@ -123,7 +131,7 @@ class SemanticScrubber {
123
131
  this.patterns = scrubberConfig.replaceDefaults
124
132
  ? loadedPatterns
125
133
  : [...defaultPatterns, ...loadedPatterns];
126
- console.log(`[PrivacyFirewall] Loaded ${loadedPatterns.length} custom mask pattern(s) (${scrubberConfig.replaceDefaults ? 'replacing' : 'augmenting'} defaults).`);
134
+ console.error(`[PrivacyFirewall] Loaded ${loadedPatterns.length} custom mask pattern(s) (${scrubberConfig.replaceDefaults ? 'replacing' : 'augmenting'} defaults).`);
127
135
  }
128
136
  }
129
137
  }
@@ -181,7 +189,7 @@ class SemanticScrubber {
181
189
  });
182
190
  }
183
191
  if (Object.keys(tokenMap).length > 0) {
184
- console.log(`[PrivacyFirewall] Masked ${Object.keys(tokenMap).length} secrets.`);
192
+ console.error(`[PrivacyFirewall] Masked ${Object.keys(tokenMap).length} secrets.`);
185
193
  }
186
194
  return { maskedPrompt, tokenMap };
187
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SemanticScrubber.js","sourceRoot":"","sources":["../../../src/security/SemanticScrubber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SemanticScrubber.js","sourceRoot":"","sources":["../../../src/security/SemanticScrubber.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,12 @@ export interface RecallNote {
42
42
  * a "fix for this error" is a guess about a different failure, so nothing is said.
43
43
  */
44
44
  export declare const FIX_MATCH_MIN_OVERLAP = 0.5;
45
+ interface State {
46
+ sessionId: string;
47
+ noted: string[];
48
+ }
49
+ export declare function readState(root: string, sessionId: string): State;
50
+ export declare function writeState(root: string, state: State): void;
45
51
  /** Jaccard overlap of two error headlines' terms (numbers and punctuation ignored). */
46
52
  export declare function headlineOverlap(a: string, b: string): number;
47
53
  /**
@@ -98,4 +104,12 @@ export declare const LEMMA_PLAYBOOK: string;
98
104
  export declare function sessionBriefing(payload: unknown, cwd?: string, brain?: TheBrainV2): string;
99
105
  /** sessionBriefing with the memories it named, for reporting. */
100
106
  export declare function sessionRecall(payload: unknown, cwd?: string, brain?: TheBrainV2): RecallNote | null;
107
+ /**
108
+ * SessionStart with source "compact": the host just replaced the conversation with its own summary, which
109
+ * paraphrases the plan. Put the hand-off PreCompact saved back in context as CONTENT (the plan as given, the
110
+ * files, the last run), not as a pointer the agent has to remember to follow. Falls back to the ordinary
111
+ * briefing (null here) when this session has no hand-off, so a compaction never makes things worse.
112
+ */
113
+ export declare function compactRecall(payload: unknown, cwd?: string, brain?: TheBrainV2): RecallNote | null;
114
+ export {};
101
115
  //# sourceMappingURL=HostRecall.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HostRecall.d.ts","sourceRoot":"","sources":["../../../src/subconscious/HostRecall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAA0C,UAAU,EAAY,MAAM,cAAc,CAAC;AAQ5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,2FAA2F;AAC3F,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,+FAA+F;IAC/F,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;CACxB;AAKD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAyEzC,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5D;AA0BD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAE/F;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAoChG;AAOD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CA0CnG;AAWD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AA6BD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAYtG;AAQD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAE7H;AAED,qGAAqG;AACrG,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,UAAU,GAAG,IAAI,CA6DrI;AASD,yFAAyF;AACzF,eAAO,MAAM,cAAc,UAQ1B,CAAC;AASF,eAAO,MAAM,cAAc,QAAgD,CAAC;AA2C5E,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAE1F;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAsCnG"}
1
+ {"version":3,"file":"HostRecall.d.ts","sourceRoot":"","sources":["../../../src/subconscious/HostRecall.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
34
  exports.LEMMA_PLAYBOOK = exports.PLAYBOOK_TOOLS = exports.FIX_MATCH_MIN_OVERLAP = void 0;
35
+ exports.readState = readState;
36
+ exports.writeState = writeState;
35
37
  exports.headlineOverlap = headlineOverlap;
36
38
  exports.recallForHookPayload = recallForHookPayload;
37
39
  exports.hookRecall = hookRecall;
@@ -42,12 +44,14 @@ exports.recallForPrompt = recallForPrompt;
42
44
  exports.promptRecall = promptRecall;
43
45
  exports.sessionBriefing = sessionBriefing;
44
46
  exports.sessionRecall = sessionRecall;
47
+ exports.compactRecall = compactRecall;
45
48
  const fs_1 = __importDefault(require("fs"));
46
49
  const path_1 = __importDefault(require("path"));
47
50
  const TheBrainV2_1 = require("./TheBrainV2");
48
51
  const TeamBrain_1 = require("./TeamBrain");
49
52
  const FixCapture_1 = require("../utils/FixCapture");
50
53
  const ageLabel_1 = require("../utils/ageLabel");
54
+ const SessionCapture_1 = require("../utils/SessionCapture");
51
55
  const StoreDraft_1 = require("../utils/StoreDraft");
52
56
  const LocalExclude_1 = require("../utils/LocalExclude");
53
57
  const staleBuild_1 = require("../mcp/staleBuild");
@@ -518,4 +522,32 @@ function sessionRecall(payload, cwd, brain) {
518
522
  return null;
519
523
  }
520
524
  }
525
+ /**
526
+ * SessionStart with source "compact": the host just replaced the conversation with its own summary, which
527
+ * paraphrases the plan. Put the hand-off PreCompact saved back in context as CONTENT (the plan as given, the
528
+ * files, the last run), not as a pointer the agent has to remember to follow. Falls back to the ordinary
529
+ * briefing (null here) when this session has no hand-off, so a compaction never makes things worse.
530
+ */
531
+ function compactRecall(payload, cwd, brain) {
532
+ try {
533
+ const p = payload && typeof payload === 'object' ? payload : {};
534
+ if (p.source !== 'compact' || typeof p.session_id !== 'string')
535
+ return null;
536
+ const root = (0, TeamBrain_1.repoRoot)(cwd || p.cwd || process.cwd());
537
+ const found = (0, SessionCapture_1.compactHandoffText)(root, p.session_id, brain ?? (0, TheBrainV2_1.getBrain)());
538
+ if (!found)
539
+ return null;
540
+ const text = [
541
+ '🧠 Lemma: the conversation was just compacted. Before it did, Lemma saved the hand-off below from the transcript. Where it differs from the summary, the TASK and PLAN lines are what was actually asked, verbatim. Check them before continuing.',
542
+ '',
543
+ found.text,
544
+ '',
545
+ PLAYBOOK_TRIGGERS,
546
+ ].join('\n');
547
+ return { text, offered: [found.id], trigger: 'session' };
548
+ }
549
+ catch {
550
+ return null;
551
+ }
552
+ }
521
553
  //# sourceMappingURL=HostRecall.js.map