@nxuss/lemma 1.44.0 → 1.45.1

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 (207) hide show
  1. package/README.md +59 -8
  2. package/bin/brain-ingest.js +30 -13
  3. package/dist/cjs/cli/hostHooks.d.ts +38 -7
  4. package/dist/cjs/cli/hostHooks.d.ts.map +1 -1
  5. package/dist/cjs/cli/hostHooks.js +189 -9
  6. package/dist/cjs/cli/hostHooks.js.map +1 -1
  7. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  8. package/dist/cjs/cli/lemma-proxy.js +13 -16
  9. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  10. package/dist/cjs/cloud/billing/stripeApi.d.ts.map +1 -1
  11. package/dist/cjs/cloud/billing/stripeApi.js +6 -1
  12. package/dist/cjs/cloud/billing/stripeApi.js.map +1 -1
  13. package/dist/cjs/cloud/billing/stripeWebhook.d.ts.map +1 -1
  14. package/dist/cjs/cloud/billing/stripeWebhook.js +5 -0
  15. package/dist/cjs/cloud/billing/stripeWebhook.js.map +1 -1
  16. package/dist/cjs/cloud/console/consoleRouter.d.ts +2 -2
  17. package/dist/cjs/cloud/console/consoleRouter.d.ts.map +1 -1
  18. package/dist/cjs/cloud/console/consoleRouter.js +39 -1
  19. package/dist/cjs/cloud/console/consoleRouter.js.map +1 -1
  20. package/dist/cjs/cloud/console/mailer.d.ts +2 -0
  21. package/dist/cjs/cloud/console/mailer.d.ts.map +1 -1
  22. package/dist/cjs/cloud/console/mailer.js +3 -1
  23. package/dist/cjs/cloud/console/mailer.js.map +1 -1
  24. package/dist/cjs/cloud/identity/PlanPolicy.d.ts +26 -5
  25. package/dist/cjs/cloud/identity/PlanPolicy.d.ts.map +1 -1
  26. package/dist/cjs/cloud/identity/PlanPolicy.js +56 -16
  27. package/dist/cjs/cloud/identity/PlanPolicy.js.map +1 -1
  28. package/dist/cjs/cloud/identity/TenantResolver.d.ts +2 -0
  29. package/dist/cjs/cloud/identity/TenantResolver.d.ts.map +1 -1
  30. package/dist/cjs/cloud/identity/TenantResolver.js +1 -1
  31. package/dist/cjs/cloud/identity/TenantResolver.js.map +1 -1
  32. package/dist/cjs/cloud/identity/authenticateV2.js +1 -1
  33. package/dist/cjs/cloud/identity/authenticateV2.js.map +1 -1
  34. package/dist/cjs/cloud/identity/identityStore.d.ts +11 -0
  35. package/dist/cjs/cloud/identity/identityStore.d.ts.map +1 -1
  36. package/dist/cjs/cloud/identity/identityStore.js +26 -9
  37. package/dist/cjs/cloud/identity/identityStore.js.map +1 -1
  38. package/dist/cjs/cloud/metering/PostgresLedgerStore.d.ts +3 -1
  39. package/dist/cjs/cloud/metering/PostgresLedgerStore.d.ts.map +1 -1
  40. package/dist/cjs/cloud/metering/PostgresLedgerStore.js +12 -0
  41. package/dist/cjs/cloud/metering/PostgresLedgerStore.js.map +1 -1
  42. package/dist/cjs/cloud/metering/UsageLedger.d.ts +37 -0
  43. package/dist/cjs/cloud/metering/UsageLedger.d.ts.map +1 -1
  44. package/dist/cjs/cloud/metering/UsageLedger.js +42 -0
  45. package/dist/cjs/cloud/metering/UsageLedger.js.map +1 -1
  46. package/dist/cjs/cloud/store/FileBrainStore.d.ts +5 -1
  47. package/dist/cjs/cloud/store/FileBrainStore.d.ts.map +1 -1
  48. package/dist/cjs/cloud/store/FileBrainStore.js +5 -0
  49. package/dist/cjs/cloud/store/FileBrainStore.js.map +1 -1
  50. package/dist/cjs/cloud/store/PostgresBrainStore.d.ts +10 -1
  51. package/dist/cjs/cloud/store/PostgresBrainStore.d.ts.map +1 -1
  52. package/dist/cjs/cloud/store/PostgresBrainStore.js +28 -0
  53. package/dist/cjs/cloud/store/PostgresBrainStore.js.map +1 -1
  54. package/dist/cjs/cloud/store/memorySummary.d.ts +29 -0
  55. package/dist/cjs/cloud/store/memorySummary.d.ts.map +1 -0
  56. package/dist/cjs/cloud/store/memorySummary.js +66 -0
  57. package/dist/cjs/cloud/store/memorySummary.js.map +1 -0
  58. package/dist/cjs/cloud/v2/routes/admin.d.ts.map +1 -1
  59. package/dist/cjs/cloud/v2/routes/admin.js +20 -5
  60. package/dist/cjs/cloud/v2/routes/admin.js.map +1 -1
  61. package/dist/cjs/cloud/v2/routes/memories.js +1 -1
  62. package/dist/cjs/cloud/v2/routes/memories.js.map +1 -1
  63. package/dist/cjs/cloud/v2/routes/tenant.d.ts +1 -0
  64. package/dist/cjs/cloud/v2/routes/tenant.d.ts.map +1 -1
  65. package/dist/cjs/cloud/v2/routes/tenant.js +4 -1
  66. package/dist/cjs/cloud/v2/routes/tenant.js.map +1 -1
  67. package/dist/cjs/contracts/api-v2.types.d.ts +2 -0
  68. package/dist/cjs/contracts/api-v2.types.d.ts.map +1 -1
  69. package/dist/cjs/contracts/store.d.ts +35 -0
  70. package/dist/cjs/contracts/store.d.ts.map +1 -1
  71. package/dist/cjs/mcp/index.js +4 -1
  72. package/dist/cjs/mcp/index.js.map +1 -1
  73. package/dist/cjs/mcp/tools/misc.d.ts.map +1 -1
  74. package/dist/cjs/mcp/tools/misc.js +2 -1
  75. package/dist/cjs/mcp/tools/misc.js.map +1 -1
  76. package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -1
  77. package/dist/cjs/mcp/tools/workspace.js +4 -1
  78. package/dist/cjs/mcp/tools/workspace.js.map +1 -1
  79. package/dist/cjs/mcp/tools.d.ts +10 -0
  80. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  81. package/dist/cjs/mcp/tools.js +47 -12
  82. package/dist/cjs/mcp/tools.js.map +1 -1
  83. package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
  84. package/dist/cjs/subconscious/HostRecall.js +11 -4
  85. package/dist/cjs/subconscious/HostRecall.js.map +1 -1
  86. package/dist/cjs/utils/FixCapture.d.ts +7 -5
  87. package/dist/cjs/utils/FixCapture.d.ts.map +1 -1
  88. package/dist/cjs/utils/FixCapture.js +64 -32
  89. package/dist/cjs/utils/FixCapture.js.map +1 -1
  90. package/dist/cjs/utils/NoTerminal.d.ts +27 -0
  91. package/dist/cjs/utils/NoTerminal.d.ts.map +1 -0
  92. package/dist/cjs/utils/NoTerminal.js +37 -0
  93. package/dist/cjs/utils/NoTerminal.js.map +1 -0
  94. package/dist/cjs/utils/OpenCodeSession.d.ts +70 -0
  95. package/dist/cjs/utils/OpenCodeSession.d.ts.map +1 -0
  96. package/dist/cjs/utils/OpenCodeSession.js +154 -0
  97. package/dist/cjs/utils/OpenCodeSession.js.map +1 -0
  98. package/dist/cjs/utils/SessionCapture.d.ts +29 -7
  99. package/dist/cjs/utils/SessionCapture.d.ts.map +1 -1
  100. package/dist/cjs/utils/SessionCapture.js +180 -32
  101. package/dist/cjs/utils/SessionCapture.js.map +1 -1
  102. package/dist/cjs/utils/TestAutofixInterceptor.d.ts.map +1 -1
  103. package/dist/cjs/utils/TestAutofixInterceptor.js +2 -0
  104. package/dist/cjs/utils/TestAutofixInterceptor.js.map +1 -1
  105. package/dist/esm/cli/hostHooks.d.ts +38 -7
  106. package/dist/esm/cli/hostHooks.d.ts.map +1 -1
  107. package/dist/esm/cli/hostHooks.js +187 -8
  108. package/dist/esm/cli/hostHooks.js.map +1 -1
  109. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  110. package/dist/esm/cli/lemma-proxy.js +14 -17
  111. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  112. package/dist/esm/cloud/billing/stripeApi.d.ts.map +1 -1
  113. package/dist/esm/cloud/billing/stripeApi.js +6 -1
  114. package/dist/esm/cloud/billing/stripeApi.js.map +1 -1
  115. package/dist/esm/cloud/billing/stripeWebhook.d.ts.map +1 -1
  116. package/dist/esm/cloud/billing/stripeWebhook.js +5 -0
  117. package/dist/esm/cloud/billing/stripeWebhook.js.map +1 -1
  118. package/dist/esm/cloud/console/consoleRouter.d.ts +2 -2
  119. package/dist/esm/cloud/console/consoleRouter.d.ts.map +1 -1
  120. package/dist/esm/cloud/console/consoleRouter.js +39 -1
  121. package/dist/esm/cloud/console/consoleRouter.js.map +1 -1
  122. package/dist/esm/cloud/console/mailer.d.ts +2 -0
  123. package/dist/esm/cloud/console/mailer.d.ts.map +1 -1
  124. package/dist/esm/cloud/console/mailer.js +3 -1
  125. package/dist/esm/cloud/console/mailer.js.map +1 -1
  126. package/dist/esm/cloud/identity/PlanPolicy.d.ts +26 -5
  127. package/dist/esm/cloud/identity/PlanPolicy.d.ts.map +1 -1
  128. package/dist/esm/cloud/identity/PlanPolicy.js +54 -15
  129. package/dist/esm/cloud/identity/PlanPolicy.js.map +1 -1
  130. package/dist/esm/cloud/identity/TenantResolver.d.ts +2 -0
  131. package/dist/esm/cloud/identity/TenantResolver.d.ts.map +1 -1
  132. package/dist/esm/cloud/identity/TenantResolver.js +1 -1
  133. package/dist/esm/cloud/identity/TenantResolver.js.map +1 -1
  134. package/dist/esm/cloud/identity/authenticateV2.js +1 -1
  135. package/dist/esm/cloud/identity/authenticateV2.js.map +1 -1
  136. package/dist/esm/cloud/identity/identityStore.d.ts +11 -0
  137. package/dist/esm/cloud/identity/identityStore.d.ts.map +1 -1
  138. package/dist/esm/cloud/identity/identityStore.js +26 -9
  139. package/dist/esm/cloud/identity/identityStore.js.map +1 -1
  140. package/dist/esm/cloud/metering/PostgresLedgerStore.d.ts +3 -1
  141. package/dist/esm/cloud/metering/PostgresLedgerStore.d.ts.map +1 -1
  142. package/dist/esm/cloud/metering/PostgresLedgerStore.js +12 -0
  143. package/dist/esm/cloud/metering/PostgresLedgerStore.js.map +1 -1
  144. package/dist/esm/cloud/metering/UsageLedger.d.ts +37 -0
  145. package/dist/esm/cloud/metering/UsageLedger.d.ts.map +1 -1
  146. package/dist/esm/cloud/metering/UsageLedger.js +41 -0
  147. package/dist/esm/cloud/metering/UsageLedger.js.map +1 -1
  148. package/dist/esm/cloud/store/FileBrainStore.d.ts +5 -1
  149. package/dist/esm/cloud/store/FileBrainStore.d.ts.map +1 -1
  150. package/dist/esm/cloud/store/FileBrainStore.js +5 -0
  151. package/dist/esm/cloud/store/FileBrainStore.js.map +1 -1
  152. package/dist/esm/cloud/store/PostgresBrainStore.d.ts +10 -1
  153. package/dist/esm/cloud/store/PostgresBrainStore.d.ts.map +1 -1
  154. package/dist/esm/cloud/store/PostgresBrainStore.js +28 -0
  155. package/dist/esm/cloud/store/PostgresBrainStore.js.map +1 -1
  156. package/dist/esm/cloud/store/memorySummary.d.ts +29 -0
  157. package/dist/esm/cloud/store/memorySummary.d.ts.map +1 -0
  158. package/dist/esm/cloud/store/memorySummary.js +60 -0
  159. package/dist/esm/cloud/store/memorySummary.js.map +1 -0
  160. package/dist/esm/cloud/v2/routes/admin.d.ts.map +1 -1
  161. package/dist/esm/cloud/v2/routes/admin.js +20 -5
  162. package/dist/esm/cloud/v2/routes/admin.js.map +1 -1
  163. package/dist/esm/cloud/v2/routes/memories.js +1 -1
  164. package/dist/esm/cloud/v2/routes/memories.js.map +1 -1
  165. package/dist/esm/cloud/v2/routes/tenant.d.ts +1 -0
  166. package/dist/esm/cloud/v2/routes/tenant.d.ts.map +1 -1
  167. package/dist/esm/cloud/v2/routes/tenant.js +4 -1
  168. package/dist/esm/cloud/v2/routes/tenant.js.map +1 -1
  169. package/dist/esm/contracts/api-v2.types.d.ts +2 -0
  170. package/dist/esm/contracts/api-v2.types.d.ts.map +1 -1
  171. package/dist/esm/contracts/store.d.ts +35 -0
  172. package/dist/esm/contracts/store.d.ts.map +1 -1
  173. package/dist/esm/mcp/index.js +5 -2
  174. package/dist/esm/mcp/index.js.map +1 -1
  175. package/dist/esm/mcp/tools/misc.d.ts.map +1 -1
  176. package/dist/esm/mcp/tools/misc.js +2 -1
  177. package/dist/esm/mcp/tools/misc.js.map +1 -1
  178. package/dist/esm/mcp/tools/workspace.d.ts.map +1 -1
  179. package/dist/esm/mcp/tools/workspace.js +4 -1
  180. package/dist/esm/mcp/tools/workspace.js.map +1 -1
  181. package/dist/esm/mcp/tools.d.ts +10 -0
  182. package/dist/esm/mcp/tools.d.ts.map +1 -1
  183. package/dist/esm/mcp/tools.js +46 -12
  184. package/dist/esm/mcp/tools.js.map +1 -1
  185. package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
  186. package/dist/esm/subconscious/HostRecall.js +11 -4
  187. package/dist/esm/subconscious/HostRecall.js.map +1 -1
  188. package/dist/esm/utils/FixCapture.d.ts +7 -5
  189. package/dist/esm/utils/FixCapture.d.ts.map +1 -1
  190. package/dist/esm/utils/FixCapture.js +64 -33
  191. package/dist/esm/utils/FixCapture.js.map +1 -1
  192. package/dist/esm/utils/NoTerminal.d.ts +27 -0
  193. package/dist/esm/utils/NoTerminal.d.ts.map +1 -0
  194. package/dist/esm/utils/NoTerminal.js +33 -0
  195. package/dist/esm/utils/NoTerminal.js.map +1 -0
  196. package/dist/esm/utils/OpenCodeSession.d.ts +70 -0
  197. package/dist/esm/utils/OpenCodeSession.d.ts.map +1 -0
  198. package/dist/esm/utils/OpenCodeSession.js +146 -0
  199. package/dist/esm/utils/OpenCodeSession.js.map +1 -0
  200. package/dist/esm/utils/SessionCapture.d.ts +29 -7
  201. package/dist/esm/utils/SessionCapture.d.ts.map +1 -1
  202. package/dist/esm/utils/SessionCapture.js +180 -32
  203. package/dist/esm/utils/SessionCapture.js.map +1 -1
  204. package/dist/esm/utils/TestAutofixInterceptor.d.ts.map +1 -1
  205. package/dist/esm/utils/TestAutofixInterceptor.js +2 -0
  206. package/dist/esm/utils/TestAutofixInterceptor.js.map +1 -1
  207. package/package.json +1 -1
@@ -59,8 +59,9 @@ export const CLAUDE_PRE_COMPACT_HOOK_COMMAND = `command -v lemma-brain-ingest >/
59
59
  */
60
60
  export const CLAUDE_STOP_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${STOP_MARK} || true`;
61
61
  /**
62
- * PostToolUseFailure (Bash): Claude Code sends a command that exits non-zero here and NOT to PostToolUse, so
63
- * a failing run that dumps its environment never reached the leak warning. Only the warning is wired to it.
62
+ * PostToolUseFailure (Bash): Claude Code sends a command that exits non-zero here and NOT to PostToolUse, so a
63
+ * failing test run never reached FixCapture (no red, so no red → green fix memory), the recall of a recorded fix,
64
+ * or the leak warning. The handler treats it exactly like PostToolUse.
64
65
  */
65
66
  export const CLAUDE_FAILURE_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${FAILURE_MARK} || true`;
66
67
  export const CLAUDE_FAILURE_MATCHER = 'Bash';
@@ -258,16 +259,116 @@ export function installCursorHooks(home = os.homedir()) {
258
259
  }
259
260
  const OPENCODE_MARK = '// managed by `lemma init` — delete this file to disable Lemma Brain recall in OpenCode';
260
261
  /**
261
- * OpenCode has no hook protocol, so the hook is a plugin: it forwards each finished tool call
262
- * to `lemma-brain-ingest --host=opencode` and appends the note it prints (if any) to the tool's
263
- * output — the only place a plugin can put text the model reads. Arguments are taken from
264
- * tool.execute.before, keyed by call id, because the after-hook's input doesn't carry them.
262
+ * OpenCode has no hook protocol, so the hook is a plugin:
263
+ * - each finished tool call goes to `lemma-brain-ingest --host=opencode`, and the note it prints (if
264
+ * any) is appended to the tool's output, the only place a plugin can put text the model reads.
265
+ * Arguments are taken from tool.execute.before, keyed by call id: the after-hook's input lacks them.
266
+ * - session.idle (OpenCode has no session end) sends the session and its subagents' child sessions to
267
+ * `--opencode-idle`, which saves the hand-off (see OpenCodeSession); experimental.session.compacting
268
+ * does the same and adds the hand-off to the compaction context, so the plan survives it.
269
+ * - experimental.chat.system.transform adds the session briefing (what `SessionStart` gives Claude
270
+ * Code) to the system prompt, computed once per session and repeated on every step so the prompt
271
+ * stays the same between steps. Subagent sessions get none of this: they are the parent's work.
272
+ * The session is NOT fetched from the SDK on every turn: measured on real sessions, one message's
273
+ * `summary.diffs` held 99.7 MB and whole sessions 170-207 MB, all of which `client.session.messages`
274
+ * returns. The plugin keeps its own trimmed log from the bus events it already receives
275
+ * (message.updated, message.part.updated, session.created/updated). A session it joined midway (opened with
276
+ * -s / --continue) is not fetched either: no SDK query can leave that one message out. Its hand-off then
277
+ * covers what this process saw, and the previous process's hand-off carries the plan and the files over
278
+ * (SessionCapture's continuation). Only session.get, which is small, is asked for, to tell a subagent.
279
+ * The idle/compaction/briefing calls are async (a spawnSync would freeze OpenCode's UI meanwhile) and
280
+ * every hook swallows its errors: Lemma must never be the reason a session fails.
265
281
  */
266
282
  export const OPENCODE_PLUGIN = `${OPENCODE_MARK}
267
- import { spawnSync } from "node:child_process";
283
+ import { spawn, spawnSync } from "node:child_process";
268
284
 
269
- export const LemmaBrainRecall = async ({ directory }) => {
285
+ const MAX_TEXT = 8000;
286
+ const OUTPUT_HEAD = 1500;
287
+ const OUTPUT_TAIL = 4500;
288
+ const MAX_PARTS = 4000;
289
+ const INPUT_KEYS = ["filePath", "file_path", "path", "command", "description", "subagent_type", "patchText", "searchContent", "replaceContent", "patches"];
290
+
291
+ const clip = (s, n) => (typeof s === "string" && s.length > n ? s.slice(0, n) : s);
292
+ const ends = (s) => (typeof s === "string" && s.length > OUTPUT_HEAD + OUTPUT_TAIL ? s.slice(0, OUTPUT_HEAD) + "\\n…\\n" + s.slice(-OUTPUT_TAIL) : s);
293
+
294
+ // What Lemma reads of a part (see OpenCodeSession): nothing else crosses the process boundary.
295
+ function slimPart(p) {
296
+ if (!p || typeof p !== "object") return null;
297
+ if (p.type === "text") return p.synthetic || typeof p.text !== "string" ? null : { type: "text", text: clip(p.text, MAX_TEXT) };
298
+ if (p.type === "patch") return Array.isArray(p.files) ? { type: "patch", files: p.files.slice(0, 50) } : null;
299
+ if (p.type !== "tool" || typeof p.tool !== "string") return null;
300
+ const st = p.state || {};
301
+ const raw = st.input && typeof st.input === "object" ? st.input : {};
302
+ const input = {};
303
+ for (const k of INPUT_KEYS) if (raw[k] !== undefined) input[k] = typeof raw[k] === "string" ? clip(raw[k], 20000) : raw[k];
304
+ const meta = st.metadata || {};
305
+ return { type: "tool", tool: p.tool, callID: p.callID, state: { status: st.status, input, output: ends(typeof st.output === "string" ? st.output : ""), error: clip(st.error, 2000), time: st.time, metadata: { sessionId: meta.sessionId, exit: meta.exit } } };
306
+ }
307
+
308
+ export const LemmaBrainRecall = async ({ client, directory }) => {
270
309
  const argsByCall = new Map();
310
+ const sessions = new Map(); // id -> { parentID, title, agent, joined, messages: Map(msgId -> { info, parts: Map(partId -> slim) }) }
311
+ const briefings = new Map();
312
+ const ingest = (args, payload, timeoutMs) => new Promise((resolve) => {
313
+ let out = "";
314
+ let done = false;
315
+ const finish = () => { if (!done) { done = true; clearTimeout(timer); resolve(out.trim()); } };
316
+ const child = spawn("lemma-brain-ingest", args, { stdio: ["pipe", "pipe", "ignore"] });
317
+ const timer = setTimeout(() => { try { child.kill(); } catch {} finish(); }, timeoutMs);
318
+ child.stdout.on("data", (d) => { out += d; });
319
+ child.on("error", finish);
320
+ child.on("close", finish);
321
+ child.stdin.on("error", () => {});
322
+ child.stdin.end(JSON.stringify(payload));
323
+ });
324
+ const session = (id) => {
325
+ if (!sessions.has(id)) sessions.set(id, { parentID: undefined, title: undefined, agent: undefined, joined: false, messages: new Map(), parts: 0 });
326
+ return sessions.get(id);
327
+ };
328
+ const learn = (info) => {
329
+ if (!info || typeof info.id !== "string") return;
330
+ const s = session(info.id);
331
+ s.parentID = info.parentID || null;
332
+ s.title = info.title;
333
+ s.agent = info.agent;
334
+ };
335
+ const message = (s, info) => {
336
+ const m = s.messages.get(info.id) || { info: {}, parts: new Map() };
337
+ // A part can arrive before its message: the placeholder's role and time are corrected here.
338
+ m.info = { role: info.role, time: { created: info.time && info.time.created } };
339
+ s.messages.set(info.id, m);
340
+ return m;
341
+ };
342
+ const addPart = (s, messageID, part) => {
343
+ const slim = slimPart(part);
344
+ if (!slim || !messageID) return;
345
+ const m = s.messages.get(messageID) || (s.messages.set(messageID, { info: { role: "assistant", time: {} }, parts: new Map() }), s.messages.get(messageID));
346
+ if (!m.parts.has(part.id)) s.parts++;
347
+ m.parts.set(part.id || String(m.parts.size), slim);
348
+ // A runaway session keeps its first parts (the task) and its latest ones (the work at hand).
349
+ if (s.parts > MAX_PARTS) {
350
+ const ids = [...s.messages.keys()];
351
+ for (const id of ids.slice(2, Math.max(2, ids.length - 300))) { s.parts -= s.messages.get(id).parts.size; s.messages.delete(id); if (s.parts <= MAX_PARTS * 0.8) break; }
352
+ }
353
+ };
354
+ // A session this process did not see start (opened with -s / --continue): only ask whether it is a subagent.
355
+ const join = async (id) => {
356
+ const s = session(id);
357
+ if (s.joined) return s;
358
+ s.joined = true;
359
+ try {
360
+ if (s.parentID === undefined) learn(((await client.session.get({ path: { id } })).data) || { id });
361
+ } catch { /* unknown parent: treated as a main session */ }
362
+ return s;
363
+ };
364
+ const isSubagent = async (id) => !!(await join(id)).parentID;
365
+ const plain = (s) => [...s.messages.values()].sort((a, b) => (a.info.time.created || 0) - (b.info.time.created || 0)).map((m) => ({ info: m.info, parts: [...m.parts.values()] }));
366
+ const snapshot = async (id) => {
367
+ const s = await join(id);
368
+ const kids = [];
369
+ for (const [kid, k] of sessions) if (k.parentID === id) kids.push({ session: { id: kid, title: k.title, agent: k.agent }, messages: plain(k) });
370
+ return { sessionID: id, directory, messages: plain(s), children: kids };
371
+ };
271
372
  return {
272
373
  "tool.execute.before": async (input, output) => {
273
374
  if (!input || !input.callID) return;
@@ -287,9 +388,87 @@ export const LemmaBrainRecall = async ({ directory }) => {
287
388
  // A recall hint must never be the reason a tool call fails.
288
389
  }
289
390
  },
391
+ event: async ({ event }) => {
392
+ try {
393
+ if (!event || !event.properties) return;
394
+ const props = event.properties;
395
+ if (event.type === "session.created" || event.type === "session.updated") {
396
+ learn(props.info);
397
+ if (event.type === "session.created" && props.info) session(props.info.id).joined = true; // seen from its start
398
+ return;
399
+ }
400
+ if (event.type === "message.updated" && props.info && props.info.sessionID) { message(session(props.info.sessionID), props.info); return; }
401
+ if (event.type === "message.part.updated" && props.part && props.part.sessionID) { addPart(session(props.part.sessionID), props.part.messageID, props.part); return; }
402
+ if (event.type !== "session.idle") return;
403
+ const id = props.sessionID;
404
+ if (!id || (await isSubagent(id))) return;
405
+ await ingest(["--opencode-idle", "--host=opencode"], await snapshot(id), 15000);
406
+ } catch {
407
+ // the hand-off is a courtesy; the session is never held up by it
408
+ }
409
+ },
410
+ "experimental.session.compacting": async (input, output) => {
411
+ try {
412
+ if (!input || !input.sessionID || (await isSubagent(input.sessionID))) return;
413
+ const text = await ingest(["--opencode-compacting", "--host=opencode"], await snapshot(input.sessionID), 15000);
414
+ if (text && output && Array.isArray(output.context)) output.context.push(text);
415
+ } catch {
416
+ // the compaction goes ahead without the hand-off
417
+ }
418
+ },
419
+ "experimental.chat.system.transform": async (input, output) => {
420
+ try {
421
+ const id = input && input.sessionID;
422
+ if (!id || !output || !Array.isArray(output.system)) return;
423
+ if (!briefings.has(id)) {
424
+ briefings.set(id, (await isSubagent(id)) ? "" : await ingest(["--session-start", "--host=opencode"], { cwd: directory, session_id: id, host: "opencode" }, 5000));
425
+ }
426
+ const text = briefings.get(id);
427
+ if (text) output.system.push(text);
428
+ } catch {
429
+ // no briefing this time
430
+ }
431
+ },
290
432
  };
291
433
  };
292
434
  `;
435
+ /** What `lemma init` registers as OpenCode's MCP server: OpenCode's local-server shape (`type`, argv array). */
436
+ export const OPENCODE_MCP_ENTRY = { type: 'local', command: ['npx', '-y', '@nxuss/lemma', 'mcp'], enabled: true };
437
+ /**
438
+ * Register Lemma's MCP server where OpenCode reads it: `~/.config/opencode/opencode.json` (or the
439
+ * `.jsonc` beside it, when that is the one in use). `lemma init` used to write `~/.opencode.json`, a path
440
+ * OpenCode no longer reads, in the old `{command, args}` shape, so outside a repo with its own
441
+ * opencode.json OpenCode had no Lemma tools at all (`opencode mcp list`: "No MCP servers configured").
442
+ * An existing `mcp.lemma` is kept as it is (it may point at a local build on purpose); a file that is
443
+ * not plain JSON (a .jsonc with comments) is left alone and the caller gets the snippet to add.
444
+ */
445
+ export function registerOpenCodeMcp(home = os.homedir()) {
446
+ const dir = path.join(home, '.config', 'opencode');
447
+ const json = path.join(dir, 'opencode.json');
448
+ const jsonc = path.join(dir, 'opencode.jsonc');
449
+ const file = fs.existsSync(json) || !fs.existsSync(jsonc) ? json : jsonc;
450
+ const snippet = JSON.stringify({ mcp: { lemma: OPENCODE_MCP_ENTRY } }, null, 2);
451
+ let config = { $schema: 'https://opencode.ai/config.json' };
452
+ if (fs.existsSync(file)) {
453
+ try {
454
+ config = JSON.parse(fs.readFileSync(file, 'utf8'));
455
+ }
456
+ catch {
457
+ return { status: 'manual', file, snippet };
458
+ }
459
+ if (!config || typeof config !== 'object' || Array.isArray(config))
460
+ return { status: 'manual', file, snippet };
461
+ }
462
+ if (config.mcp && typeof config.mcp !== 'object')
463
+ return { status: 'manual', file, snippet };
464
+ if (config.mcp?.lemma)
465
+ return { status: 'unchanged', file };
466
+ const existed = fs.existsSync(file);
467
+ config.mcp = { ...(config.mcp || {}), lemma: OPENCODE_MCP_ENTRY };
468
+ fs.mkdirSync(dir, { recursive: true });
469
+ fs.writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`);
470
+ return { status: existed ? 'updated' : 'installed', file };
471
+ }
293
472
  export function installOpenCodePlugin(home = os.homedir()) {
294
473
  const file = path.join(home, '.config', 'opencode', 'plugins', 'lemma-brain-recall.js');
295
474
  if (fs.existsSync(file)) {
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lemma-proxy.d.ts","sourceRoot":"","sources":["../../../src/cli/lemma-proxy.ts"],"names":[],"mappings":";AAkdA,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA+DvF;AAiiBD,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGtD;AAw1DD,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8KhL"}
1
+ {"version":3,"file":"lemma-proxy.d.ts","sourceRoot":"","sources":["../../../src/cli/lemma-proxy.ts"],"names":[],"mappings":";AAycA,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA+DvF;AAiiBD,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGtD;AA61DD,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8KhL"}
@@ -43,6 +43,7 @@ import { AgentMultiplexer } from '../proxy/AgentMultiplexer.js';
43
43
  import { SseRelay } from '../proxy/SseRelay.js';
44
44
  import { KeyManager, VALIDATE_URL } from '../proxy/KeyManager.js';
45
45
  import { Gatekeeper } from '../proxy/Gatekeeper.js';
46
+ import { startEntitlementRefresh } from '../cloud/CloudEntitlement.js';
46
47
  import { detectProjectName, isProjectMismatch } from '../utils/ProjectIdentity.js';
47
48
  import { ProjectRegistry } from '../proxy/ProjectRegistry.js';
48
49
  import { shouldInject, buildMinimalContext, buildDeepContext, sniffProjectFromMessages } from '../proxy/ContextInjector.js';
@@ -50,7 +51,7 @@ import { savingsLedger, AVG_COST_PER_TOKEN } from '../utils/SavingsLedger.js';
50
51
  import { isDebuggerPaused, setDebuggerPaused } from '../proxy/DebuggerState.js';
51
52
  import { CACHE_DIR, PID_FILE, PORT_FILE, STATS_FILE, USAGE_FILE, LICENSE_FILE, CLIPBOARD_PID_FILE, FREE_TIER_LIMIT } from '../proxy/ProjectStore.js';
52
53
  import { installBrainHooks } from './gitHooks.js';
53
- import { installHostHooks } from './hostHooks.js';
54
+ import { installHostHooks, registerOpenCodeMcp } from './hostHooks.js';
54
55
  import { getBrain, deriveProjectId } from '../subconscious/TheBrainV2.js';
55
56
  import { DEFAULT_MEMORY_SIMILARITY_FLOOR } from '../mcp/utils.js';
56
57
  import { cacheCollectionName } from '../utils/ProjectIdentity.js';
@@ -367,23 +368,14 @@ enabled = true
367
368
  }
368
369
  }
369
370
  catch { }
370
- // Register lemma MCP server in OpenCode user config (~/.opencode.json)
371
- const openCodeMcpFile = path.join(os.homedir(), '.opencode.json');
371
+ // Register lemma MCP server where OpenCode reads it (~/.config/opencode/opencode.json); see registerOpenCodeMcp.
372
372
  try {
373
- let openCodeConfig = {};
374
- if (fs.existsSync(openCodeMcpFile)) {
375
- openCodeConfig = JSON.parse(fs.readFileSync(openCodeMcpFile, 'utf8'));
376
- }
377
- if (!openCodeConfig.mcp)
378
- openCodeConfig.mcp = {};
379
- if (!openCodeConfig.mcp.lemma) {
380
- openCodeConfig.mcp.lemma = {
381
- command: "npx",
382
- args: ["-y", "@nxuss/lemma", "mcp"],
383
- enabled: true
384
- };
385
- fs.writeFileSync(openCodeMcpFile, JSON.stringify(openCodeConfig, null, 2));
386
- console.log('✅ [OpenCode] Registered lemma MCP server in ~/.opencode.json');
373
+ if (fs.existsSync(path.join(os.homedir(), '.config', 'opencode')) || fs.existsSync(path.join(os.homedir(), '.opencode'))) {
374
+ const r = registerOpenCodeMcp();
375
+ if (r.status === 'installed' || r.status === 'updated')
376
+ console.log(`✅ [OpenCode] Registered lemma MCP server in ${r.file}`);
377
+ else if (r.status === 'manual')
378
+ console.log(`⚠️ [OpenCode] ${r.file} is not plain JSON; add this to it by hand:\n${r.snippet}`);
387
379
  }
388
380
  }
389
381
  catch { }
@@ -2315,9 +2307,13 @@ Adjusted Answer:`;
2315
2307
  throw e;
2316
2308
  });
2317
2309
  const BIND_HOST = process.env.LEMMA_BIND_HOST || '127.0.0.1';
2310
+ // Without this a machine that only runs the proxy keeps its Cloud seat's Pro answer until the
2311
+ // 7-day grace runs out: the MCP server is the only other process that refreshes it.
2312
+ let stopEntitlementRefresh = () => { };
2318
2313
  server.listen(this.port, BIND_HOST, async () => {
2319
2314
  fs.writeFileSync(PID_FILE, String(process.pid));
2320
2315
  fs.writeFileSync(PORT_FILE, String(this.port));
2316
+ stopEntitlementRefresh = startEntitlementRefresh();
2321
2317
  // Security warning if binding to all interfaces without auth
2322
2318
  if (BIND_HOST !== '127.0.0.1' && BIND_HOST !== 'localhost') {
2323
2319
  const authEnabled = process.env.AUTH_ENABLED === 'true';
@@ -2379,6 +2375,7 @@ Adjusted Answer:`;
2379
2375
  // `lemma stop` used to leave a daemon with no port that never exited. Flush the Brain's
2380
2376
  // debounced write (same reason as the MCP bootstrap), close, and exit — with a hard cap.
2381
2377
  const shutdown = () => {
2378
+ stopEntitlementRefresh();
2382
2379
  try {
2383
2380
  getBrain().flushSync();
2384
2381
  }