@nxuss/lemma 1.37.0 → 1.39.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 (284) hide show
  1. package/README.md +9 -6
  2. package/bin/brain-ingest.js +86 -27
  3. package/bin/doctor.js +31 -4
  4. package/bin/init.js +98 -60
  5. package/dashboard/dist/assets/index-DNTQXLER.css +1 -0
  6. package/dashboard/dist/assets/index-DzL_Zu3m.js +452 -0
  7. package/dashboard/dist/index.html +2 -2
  8. package/dist/cjs/cli/gitHooks.d.ts +9 -2
  9. package/dist/cjs/cli/gitHooks.d.ts.map +1 -1
  10. package/dist/cjs/cli/gitHooks.js +31 -4
  11. package/dist/cjs/cli/gitHooks.js.map +1 -1
  12. package/dist/cjs/cli/hostHooks.d.ts +13 -1
  13. package/dist/cjs/cli/hostHooks.d.ts.map +1 -1
  14. package/dist/cjs/cli/hostHooks.js +34 -4
  15. package/dist/cjs/cli/hostHooks.js.map +1 -1
  16. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  17. package/dist/cjs/cli/lemma-proxy.js +42 -5
  18. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  19. package/dist/cjs/infra/analyzers/index.d.ts +0 -2
  20. package/dist/cjs/infra/analyzers/index.d.ts.map +1 -1
  21. package/dist/cjs/infra/analyzers/index.js +1 -6
  22. package/dist/cjs/infra/analyzers/index.js.map +1 -1
  23. package/dist/cjs/infra/cli.d.ts +4 -0
  24. package/dist/cjs/infra/cli.d.ts.map +1 -1
  25. package/dist/cjs/infra/cli.js +6 -199
  26. package/dist/cjs/infra/cli.js.map +1 -1
  27. package/dist/cjs/infra/index.d.ts +1 -3
  28. package/dist/cjs/infra/index.d.ts.map +1 -1
  29. package/dist/cjs/infra/index.js +1 -16
  30. package/dist/cjs/infra/index.js.map +1 -1
  31. package/dist/cjs/infra/mcp-tools.d.ts.map +1 -1
  32. package/dist/cjs/infra/mcp-tools.js +8 -453
  33. package/dist/cjs/infra/mcp-tools.js.map +1 -1
  34. package/dist/cjs/infra/types.d.ts +0 -101
  35. package/dist/cjs/infra/types.d.ts.map +1 -1
  36. package/dist/cjs/infra/types.js +2 -1
  37. package/dist/cjs/infra/types.js.map +1 -1
  38. package/dist/cjs/mcp/index.js +33 -10
  39. package/dist/cjs/mcp/index.js.map +1 -1
  40. package/dist/cjs/mcp/prompts.d.ts +1 -1
  41. package/dist/cjs/mcp/prompts.d.ts.map +1 -1
  42. package/dist/cjs/mcp/prompts.js +8 -21
  43. package/dist/cjs/mcp/prompts.js.map +1 -1
  44. package/dist/cjs/mcp/tool-profiles.d.ts +8 -3
  45. package/dist/cjs/mcp/tool-profiles.d.ts.map +1 -1
  46. package/dist/cjs/mcp/tool-profiles.js +25 -54
  47. package/dist/cjs/mcp/tool-profiles.js.map +1 -1
  48. package/dist/cjs/mcp/tools/memory.d.ts +8 -0
  49. package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
  50. package/dist/cjs/mcp/tools/memory.js +154 -125
  51. package/dist/cjs/mcp/tools/memory.js.map +1 -1
  52. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  53. package/dist/cjs/mcp/tools.js +11 -6
  54. package/dist/cjs/mcp/tools.js.map +1 -1
  55. package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -1
  56. package/dist/cjs/mcp/workspaceShared.js +13 -12
  57. package/dist/cjs/mcp/workspaceShared.js.map +1 -1
  58. package/dist/cjs/proxy/ProjectRegistry.d.ts +44 -0
  59. package/dist/cjs/proxy/ProjectRegistry.d.ts.map +1 -1
  60. package/dist/cjs/proxy/ProjectRegistry.js +92 -3
  61. package/dist/cjs/proxy/ProjectRegistry.js.map +1 -1
  62. package/dist/cjs/subconscious/HostRecall.d.ts +36 -3
  63. package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
  64. package/dist/cjs/subconscious/HostRecall.js +164 -37
  65. package/dist/cjs/subconscious/HostRecall.js.map +1 -1
  66. package/dist/cjs/subconscious/NarrowEvidence.d.ts +47 -0
  67. package/dist/cjs/subconscious/NarrowEvidence.d.ts.map +1 -0
  68. package/dist/cjs/subconscious/NarrowEvidence.js +252 -0
  69. package/dist/cjs/subconscious/NarrowEvidence.js.map +1 -0
  70. package/dist/cjs/subconscious/TheBrainV2.d.ts +37 -0
  71. package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
  72. package/dist/cjs/subconscious/TheBrainV2.js +147 -15
  73. package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
  74. package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
  75. package/dist/cjs/subconscious/freshness/LocalFsResolver.js +17 -0
  76. package/dist/cjs/subconscious/freshness/LocalFsResolver.js.map +1 -1
  77. package/dist/cjs/subconscious/recallDigest.d.ts +42 -0
  78. package/dist/cjs/subconscious/recallDigest.d.ts.map +1 -0
  79. package/dist/cjs/subconscious/recallDigest.js +94 -0
  80. package/dist/cjs/subconscious/recallDigest.js.map +1 -0
  81. package/dist/cjs/utils/OtherLanguageSymbols.d.ts +31 -0
  82. package/dist/cjs/utils/OtherLanguageSymbols.d.ts.map +1 -0
  83. package/dist/cjs/utils/OtherLanguageSymbols.js +283 -0
  84. package/dist/cjs/utils/OtherLanguageSymbols.js.map +1 -0
  85. package/dist/cjs/utils/SavingsLedger.d.ts +27 -0
  86. package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
  87. package/dist/cjs/utils/SavingsLedger.js +51 -0
  88. package/dist/cjs/utils/SavingsLedger.js.map +1 -1
  89. package/dist/cjs/utils/StoreDraft.d.ts +12 -0
  90. package/dist/cjs/utils/StoreDraft.d.ts.map +1 -1
  91. package/dist/cjs/utils/StoreDraft.js +53 -1
  92. package/dist/cjs/utils/StoreDraft.js.map +1 -1
  93. package/dist/cjs/utils/SymbolSurgicalContext.d.ts +2 -0
  94. package/dist/cjs/utils/SymbolSurgicalContext.d.ts.map +1 -1
  95. package/dist/cjs/utils/SymbolSurgicalContext.js +1 -0
  96. package/dist/cjs/utils/SymbolSurgicalContext.js.map +1 -1
  97. package/dist/cjs/utils/reportSavings.d.ts +17 -4
  98. package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
  99. package/dist/cjs/utils/reportSavings.js +67 -22
  100. package/dist/cjs/utils/reportSavings.js.map +1 -1
  101. package/dist/esm/cli/gitHooks.d.ts +9 -2
  102. package/dist/esm/cli/gitHooks.d.ts.map +1 -1
  103. package/dist/esm/cli/gitHooks.js +31 -4
  104. package/dist/esm/cli/gitHooks.js.map +1 -1
  105. package/dist/esm/cli/hostHooks.d.ts +13 -1
  106. package/dist/esm/cli/hostHooks.d.ts.map +1 -1
  107. package/dist/esm/cli/hostHooks.js +32 -3
  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 +42 -5
  111. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  112. package/dist/esm/infra/analyzers/index.d.ts +0 -2
  113. package/dist/esm/infra/analyzers/index.d.ts.map +1 -1
  114. package/dist/esm/infra/analyzers/index.js +0 -2
  115. package/dist/esm/infra/analyzers/index.js.map +1 -1
  116. package/dist/esm/infra/cli.d.ts +4 -0
  117. package/dist/esm/infra/cli.d.ts.map +1 -1
  118. package/dist/esm/infra/cli.js +6 -199
  119. package/dist/esm/infra/cli.js.map +1 -1
  120. package/dist/esm/infra/index.d.ts +1 -3
  121. package/dist/esm/infra/index.d.ts.map +1 -1
  122. package/dist/esm/infra/index.js +1 -3
  123. package/dist/esm/infra/index.js.map +1 -1
  124. package/dist/esm/infra/mcp-tools.d.ts.map +1 -1
  125. package/dist/esm/infra/mcp-tools.js +9 -454
  126. package/dist/esm/infra/mcp-tools.js.map +1 -1
  127. package/dist/esm/infra/types.d.ts +0 -101
  128. package/dist/esm/infra/types.d.ts.map +1 -1
  129. package/dist/esm/infra/types.js +2 -1
  130. package/dist/esm/infra/types.js.map +1 -1
  131. package/dist/esm/mcp/index.js +33 -10
  132. package/dist/esm/mcp/index.js.map +1 -1
  133. package/dist/esm/mcp/prompts.d.ts +1 -1
  134. package/dist/esm/mcp/prompts.d.ts.map +1 -1
  135. package/dist/esm/mcp/prompts.js +8 -21
  136. package/dist/esm/mcp/prompts.js.map +1 -1
  137. package/dist/esm/mcp/tool-profiles.d.ts +8 -3
  138. package/dist/esm/mcp/tool-profiles.d.ts.map +1 -1
  139. package/dist/esm/mcp/tool-profiles.js +25 -54
  140. package/dist/esm/mcp/tool-profiles.js.map +1 -1
  141. package/dist/esm/mcp/tools/memory.d.ts +8 -0
  142. package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
  143. package/dist/esm/mcp/tools/memory.js +156 -128
  144. package/dist/esm/mcp/tools/memory.js.map +1 -1
  145. package/dist/esm/mcp/tools.d.ts.map +1 -1
  146. package/dist/esm/mcp/tools.js +12 -7
  147. package/dist/esm/mcp/tools.js.map +1 -1
  148. package/dist/esm/mcp/workspaceShared.d.ts.map +1 -1
  149. package/dist/esm/mcp/workspaceShared.js +13 -12
  150. package/dist/esm/mcp/workspaceShared.js.map +1 -1
  151. package/dist/esm/proxy/ProjectRegistry.d.ts +44 -0
  152. package/dist/esm/proxy/ProjectRegistry.d.ts.map +1 -1
  153. package/dist/esm/proxy/ProjectRegistry.js +91 -2
  154. package/dist/esm/proxy/ProjectRegistry.js.map +1 -1
  155. package/dist/esm/subconscious/HostRecall.d.ts +36 -3
  156. package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
  157. package/dist/esm/subconscious/HostRecall.js +159 -36
  158. package/dist/esm/subconscious/HostRecall.js.map +1 -1
  159. package/dist/esm/subconscious/NarrowEvidence.d.ts +47 -0
  160. package/dist/esm/subconscious/NarrowEvidence.d.ts.map +1 -0
  161. package/dist/esm/subconscious/NarrowEvidence.js +211 -0
  162. package/dist/esm/subconscious/NarrowEvidence.js.map +1 -0
  163. package/dist/esm/subconscious/TheBrainV2.d.ts +37 -0
  164. package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
  165. package/dist/esm/subconscious/TheBrainV2.js +146 -14
  166. package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
  167. package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
  168. package/dist/esm/subconscious/freshness/LocalFsResolver.js +17 -0
  169. package/dist/esm/subconscious/freshness/LocalFsResolver.js.map +1 -1
  170. package/dist/esm/subconscious/recallDigest.d.ts +42 -0
  171. package/dist/esm/subconscious/recallDigest.d.ts.map +1 -0
  172. package/dist/esm/subconscious/recallDigest.js +87 -0
  173. package/dist/esm/subconscious/recallDigest.js.map +1 -0
  174. package/dist/esm/utils/OtherLanguageSymbols.d.ts +31 -0
  175. package/dist/esm/utils/OtherLanguageSymbols.d.ts.map +1 -0
  176. package/dist/esm/utils/OtherLanguageSymbols.js +275 -0
  177. package/dist/esm/utils/OtherLanguageSymbols.js.map +1 -0
  178. package/dist/esm/utils/SavingsLedger.d.ts +27 -0
  179. package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
  180. package/dist/esm/utils/SavingsLedger.js +51 -0
  181. package/dist/esm/utils/SavingsLedger.js.map +1 -1
  182. package/dist/esm/utils/StoreDraft.d.ts +12 -0
  183. package/dist/esm/utils/StoreDraft.d.ts.map +1 -1
  184. package/dist/esm/utils/StoreDraft.js +52 -1
  185. package/dist/esm/utils/StoreDraft.js.map +1 -1
  186. package/dist/esm/utils/SymbolSurgicalContext.d.ts +2 -0
  187. package/dist/esm/utils/SymbolSurgicalContext.d.ts.map +1 -1
  188. package/dist/esm/utils/SymbolSurgicalContext.js +1 -1
  189. package/dist/esm/utils/SymbolSurgicalContext.js.map +1 -1
  190. package/dist/esm/utils/reportSavings.d.ts +17 -4
  191. package/dist/esm/utils/reportSavings.d.ts.map +1 -1
  192. package/dist/esm/utils/reportSavings.js +65 -22
  193. package/dist/esm/utils/reportSavings.js.map +1 -1
  194. package/package.json +2 -1
  195. package/dashboard/dist/assets/index-BoeQau6n.css +0 -1
  196. package/dashboard/dist/assets/index-Clf3qR64.js +0 -451
  197. package/dist/cjs/infra/analyzers/DriftDetector.d.ts +0 -4
  198. package/dist/cjs/infra/analyzers/DriftDetector.d.ts.map +0 -1
  199. package/dist/cjs/infra/analyzers/DriftDetector.js +0 -88
  200. package/dist/cjs/infra/analyzers/DriftDetector.js.map +0 -1
  201. package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts +0 -3
  202. package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts.map +0 -1
  203. package/dist/cjs/infra/analyzers/InfraAnalyzer.js +0 -73
  204. package/dist/cjs/infra/analyzers/InfraAnalyzer.js.map +0 -1
  205. package/dist/cjs/infra/config.d.ts +0 -17
  206. package/dist/cjs/infra/config.d.ts.map +0 -1
  207. package/dist/cjs/infra/config.js +0 -111
  208. package/dist/cjs/infra/config.js.map +0 -1
  209. package/dist/cjs/infra/errorCause.d.ts +0 -36
  210. package/dist/cjs/infra/errorCause.d.ts.map +0 -1
  211. package/dist/cjs/infra/errorCause.js +0 -143
  212. package/dist/cjs/infra/errorCause.js.map +0 -1
  213. package/dist/cjs/infra/providers/InfraProvider.d.ts +0 -9
  214. package/dist/cjs/infra/providers/InfraProvider.d.ts.map +0 -1
  215. package/dist/cjs/infra/providers/InfraProvider.js +0 -3
  216. package/dist/cjs/infra/providers/InfraProvider.js.map +0 -1
  217. package/dist/cjs/infra/providers/JenkinsProvider.d.ts +0 -16
  218. package/dist/cjs/infra/providers/JenkinsProvider.d.ts.map +0 -1
  219. package/dist/cjs/infra/providers/JenkinsProvider.js +0 -193
  220. package/dist/cjs/infra/providers/JenkinsProvider.js.map +0 -1
  221. package/dist/cjs/infra/providers/OKDProvider.d.ts +0 -24
  222. package/dist/cjs/infra/providers/OKDProvider.d.ts.map +0 -1
  223. package/dist/cjs/infra/providers/OKDProvider.js +0 -296
  224. package/dist/cjs/infra/providers/OKDProvider.js.map +0 -1
  225. package/dist/cjs/infra/providers/TerraformProvider.d.ts +0 -17
  226. package/dist/cjs/infra/providers/TerraformProvider.d.ts.map +0 -1
  227. package/dist/cjs/infra/providers/TerraformProvider.js +0 -111
  228. package/dist/cjs/infra/providers/TerraformProvider.js.map +0 -1
  229. package/dist/cjs/infra/providers/index.d.ts +0 -9
  230. package/dist/cjs/infra/providers/index.d.ts.map +0 -1
  231. package/dist/cjs/infra/providers/index.js +0 -34
  232. package/dist/cjs/infra/providers/index.js.map +0 -1
  233. package/dist/cjs/infra/templates/jenkins/index.d.ts +0 -15
  234. package/dist/cjs/infra/templates/jenkins/index.d.ts.map +0 -1
  235. package/dist/cjs/infra/templates/jenkins/index.js +0 -128
  236. package/dist/cjs/infra/templates/jenkins/index.js.map +0 -1
  237. package/dist/cjs/infra/templates/okd/index.d.ts +0 -31
  238. package/dist/cjs/infra/templates/okd/index.d.ts.map +0 -1
  239. package/dist/cjs/infra/templates/okd/index.js +0 -149
  240. package/dist/cjs/infra/templates/okd/index.js.map +0 -1
  241. package/dist/esm/infra/analyzers/DriftDetector.d.ts +0 -4
  242. package/dist/esm/infra/analyzers/DriftDetector.d.ts.map +0 -1
  243. package/dist/esm/infra/analyzers/DriftDetector.js +0 -84
  244. package/dist/esm/infra/analyzers/DriftDetector.js.map +0 -1
  245. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts +0 -3
  246. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts.map +0 -1
  247. package/dist/esm/infra/analyzers/InfraAnalyzer.js +0 -70
  248. package/dist/esm/infra/analyzers/InfraAnalyzer.js.map +0 -1
  249. package/dist/esm/infra/config.d.ts +0 -17
  250. package/dist/esm/infra/config.d.ts.map +0 -1
  251. package/dist/esm/infra/config.js +0 -101
  252. package/dist/esm/infra/config.js.map +0 -1
  253. package/dist/esm/infra/errorCause.d.ts +0 -36
  254. package/dist/esm/infra/errorCause.d.ts.map +0 -1
  255. package/dist/esm/infra/errorCause.js +0 -138
  256. package/dist/esm/infra/errorCause.js.map +0 -1
  257. package/dist/esm/infra/providers/InfraProvider.d.ts +0 -9
  258. package/dist/esm/infra/providers/InfraProvider.d.ts.map +0 -1
  259. package/dist/esm/infra/providers/InfraProvider.js +0 -2
  260. package/dist/esm/infra/providers/InfraProvider.js.map +0 -1
  261. package/dist/esm/infra/providers/JenkinsProvider.d.ts +0 -16
  262. package/dist/esm/infra/providers/JenkinsProvider.d.ts.map +0 -1
  263. package/dist/esm/infra/providers/JenkinsProvider.js +0 -186
  264. package/dist/esm/infra/providers/JenkinsProvider.js.map +0 -1
  265. package/dist/esm/infra/providers/OKDProvider.d.ts +0 -24
  266. package/dist/esm/infra/providers/OKDProvider.d.ts.map +0 -1
  267. package/dist/esm/infra/providers/OKDProvider.js +0 -292
  268. package/dist/esm/infra/providers/OKDProvider.js.map +0 -1
  269. package/dist/esm/infra/providers/TerraformProvider.d.ts +0 -17
  270. package/dist/esm/infra/providers/TerraformProvider.d.ts.map +0 -1
  271. package/dist/esm/infra/providers/TerraformProvider.js +0 -107
  272. package/dist/esm/infra/providers/TerraformProvider.js.map +0 -1
  273. package/dist/esm/infra/providers/index.d.ts +0 -9
  274. package/dist/esm/infra/providers/index.d.ts.map +0 -1
  275. package/dist/esm/infra/providers/index.js +0 -27
  276. package/dist/esm/infra/providers/index.js.map +0 -1
  277. package/dist/esm/infra/templates/jenkins/index.d.ts +0 -15
  278. package/dist/esm/infra/templates/jenkins/index.d.ts.map +0 -1
  279. package/dist/esm/infra/templates/jenkins/index.js +0 -124
  280. package/dist/esm/infra/templates/jenkins/index.js.map +0 -1
  281. package/dist/esm/infra/templates/okd/index.d.ts +0 -31
  282. package/dist/esm/infra/templates/okd/index.d.ts.map +0 -1
  283. package/dist/esm/infra/templates/okd/index.js +0 -142
  284. package/dist/esm/infra/templates/okd/index.js.map +0 -1
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>lemma Dashboard - Agent Orchestration Hub</title>
8
- <script type="module" crossorigin src="/dashboard/assets/index-Clf3qR64.js"></script>
9
- <link rel="stylesheet" crossorigin href="/dashboard/assets/index-BoeQau6n.css">
8
+ <script type="module" crossorigin src="/dashboard/assets/index-DzL_Zu3m.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/dashboard/assets/index-DNTQXLER.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
@@ -1,6 +1,11 @@
1
1
  /**
2
- * Installs the git hooks that feed the Brain without anyone remembering to: post-commit ingests
3
- * the new commit, post-merge/post-checkout pull the team's shared memories (`.lemma-brain/`).
2
+ * Installs the git hooks that feed the Brain without anyone remembering to: post-merge and
3
+ * post-checkout pull the team's shared memories (`.lemma-brain/`).
4
+ *
5
+ * post-commit used to store every commit as a memory. On the author's own repo that was 295 of
6
+ * 339 memories, recalled twice in total: a copy of `git log` that crowded the per-file notes and
7
+ * buried the memories someone wrote on purpose. It is no longer installed, and a block an older
8
+ * init left in post-commit is removed (`lemma-brain-ingest --commits` still backfills by hand).
4
9
  *
5
10
  * `lemma-brain-ingest` shipped with a post-commit recipe in its header comment and nothing ever
6
11
  * installed it — on the author's own machine the corpus held 0 commit memories. This is the
@@ -17,6 +22,8 @@ export interface HookInstallResult {
17
22
  installed: string[];
18
23
  updated: string[];
19
24
  unchanged: string[];
25
+ /** Hooks whose Lemma block was taken out because Lemma no longer installs them. */
26
+ removed: string[];
20
27
  /** Set when hooks live in a versioned directory Lemma won't write to; holds what to add by hand. */
21
28
  manual?: {
22
29
  hooksDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"gitHooks.d.ts","sourceRoot":"","sources":["../../../src/cli/gitHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oGAAoG;IACpG,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAcD,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,iBAAiB,CA0DhF"}
1
+ {"version":3,"file":"gitHooks.d.ts","sourceRoot":"","sources":["../../../src/cli/gitHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAoBH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mFAAmF;IACnF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oGAAoG;IACpG,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAcD,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,iBAAiB,CAwEhF"}
@@ -1,7 +1,12 @@
1
1
  "use strict";
2
2
  /**
3
- * Installs the git hooks that feed the Brain without anyone remembering to: post-commit ingests
4
- * the new commit, post-merge/post-checkout pull the team's shared memories (`.lemma-brain/`).
3
+ * Installs the git hooks that feed the Brain without anyone remembering to: post-merge and
4
+ * post-checkout pull the team's shared memories (`.lemma-brain/`).
5
+ *
6
+ * post-commit used to store every commit as a memory. On the author's own repo that was 295 of
7
+ * 339 memories, recalled twice in total: a copy of `git log` that crowded the per-file notes and
8
+ * buried the memories someone wrote on purpose. It is no longer installed, and a block an older
9
+ * init left in post-commit is removed (`lemma-brain-ingest --commits` still backfills by hand).
5
10
  *
6
11
  * `lemma-brain-ingest` shipped with a post-commit recipe in its header comment and nothing ever
7
12
  * installed it — on the author's own machine the corpus held 0 commit memories. This is the
@@ -25,11 +30,12 @@ const child_process_1 = require("child_process");
25
30
  const BEGIN = '# >>> lemma brain hooks >>>';
26
31
  const END = '# <<< lemma brain hooks <<<';
27
32
  const HOOK_BODIES = {
28
- 'post-commit': 'command -v lemma-brain-ingest >/dev/null 2>&1 && (lemma-brain-ingest "$(git rev-parse --show-toplevel)" >/dev/null 2>&1 &)',
29
33
  'post-merge': 'command -v lemma-brain-ingest >/dev/null 2>&1 && (lemma-brain-ingest "$(git rev-parse --show-toplevel)" --team-pull --no-commits >/dev/null 2>&1 &)',
30
34
  // $3 is 1 for a branch checkout, 0 for a file checkout — only a branch switch can change the shared set.
31
35
  'post-checkout': '[ "$3" = "1" ] && command -v lemma-brain-ingest >/dev/null 2>&1 && (lemma-brain-ingest "$(git rev-parse --show-toplevel)" --team-pull --no-commits >/dev/null 2>&1 &)',
32
36
  };
37
+ /** Hooks an older `lemma init` installed and this one takes back out. */
38
+ const RETIRED_HOOKS = ['post-commit'];
33
39
  function git(cwd, args) {
34
40
  try {
35
41
  return (0, child_process_1.execFileSync)('git', ['-C', cwd, ...args], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
@@ -42,7 +48,7 @@ function block(hook) {
42
48
  return `${BEGIN}\n${HOOK_BODIES[hook]}\n${END}\n`;
43
49
  }
44
50
  function installBrainHooks(cwd = process.cwd()) {
45
- const result = { installed: [], updated: [], unchanged: [] };
51
+ const result = { installed: [], updated: [], unchanged: [], removed: [] };
46
52
  const top = git(cwd, ['rev-parse', '--show-toplevel']);
47
53
  const hooksRel = git(cwd, ['rev-parse', '--git-path', 'hooks']);
48
54
  if (!top || !hooksRel) {
@@ -107,6 +113,27 @@ function installBrainHooks(cwd = process.cwd()) {
107
113
  catch { /* Windows: git for Windows runs hooks via sh regardless */ }
108
114
  (current === null ? result.installed : result.updated).push(hook);
109
115
  }
116
+ for (const hook of RETIRED_HOOKS) {
117
+ const file = path_1.default.join(hooksDir, hook);
118
+ let current;
119
+ try {
120
+ current = fs_1.default.readFileSync(file, 'utf8');
121
+ }
122
+ catch {
123
+ continue;
124
+ }
125
+ const start = current.indexOf(BEGIN);
126
+ const end = current.indexOf(END);
127
+ if (start === -1 || end < start)
128
+ continue;
129
+ const next = current.slice(0, start) + current.slice(end + END.length).replace(/^\n/, '');
130
+ // Nothing but the shebang left: the hook was Lemma's alone.
131
+ if (next.replace(/^#!.*\n?/, '').trim() === '')
132
+ fs_1.default.unlinkSync(file);
133
+ else
134
+ fs_1.default.writeFileSync(file, next, 'utf8');
135
+ result.removed.push(hook);
136
+ }
110
137
  return result;
111
138
  }
112
139
  //# sourceMappingURL=gitHooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gitHooks.js","sourceRoot":"","sources":["../../../src/cli/gitHooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitHooks.js","sourceRoot":"","sources":["../../../src/cli/gitHooks.ts"],"names":[],"mappings":"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"}
@@ -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 (personal, never the team's
7
+ * - Claude Code — `.claude/settings.local.json` PostToolUse + UserPromptSubmit + SessionStart (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.
@@ -24,6 +24,8 @@ export declare function hookCommand(host: 'claude' | 'codex' | 'cursor'): string
24
24
  export declare const CLAUDE_HOOK_COMMAND: string;
25
25
  /** UserPromptSubmit: recall before the agent answers — see HostRecall.recallForPrompt. */
26
26
  export declare const CLAUDE_PROMPT_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --prompt-submit || true";
27
+ /** SessionStart: the Brain's briefing and the playbook — see HostRecall.sessionBriefing. */
28
+ export declare const CLAUDE_SESSION_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --session-start || true";
27
29
  export declare const CLAUDE_HOOK_MATCHER = "Bash|Read|Edit|MultiEdit|Write|NotebookEdit";
28
30
  export declare const CODEX_HOOK_MATCHER = "Bash|apply_patch|Edit|Write";
29
31
  export declare const CURSOR_POST_MATCHER = "Read|Shell|Write";
@@ -58,4 +60,14 @@ export interface HostHookReport {
58
60
  * neither.
59
61
  */
60
62
  export declare function installHostHooks(cwd?: string, home?: string): HostHookReport[];
63
+ /**
64
+ * Bring an older install up to date. A project set up before SessionStart (or UserPromptSubmit)
65
+ * existed keeps the hooks it got on that day forever — nobody re-runs `lemma init` — so those
66
+ * users silently miss every recall moment added since. Called on MCP startup.
67
+ *
68
+ * Only touches a project that already opted in: one whose settings.local.json carries at least
69
+ * one Lemma hook. A project without one never ran init, or ran it with --no-hooks; either way
70
+ * the absence is a choice this must not overrule. Returns null when there was nothing to do.
71
+ */
72
+ export declare function repairClaudeHooks(cwd?: string): HookInstallOutcome | null;
61
73
  //# sourceMappingURL=hostHooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hostHooks.d.ts","sourceRoot":"","sources":["../../../src/cli/hostHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAUH,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,eAAO,MAAM,mBAAmB,gDAAgD,CAAC;AACjF,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAChE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,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;AAgFD,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,CAelF;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"}
1
+ {"version":3,"file":"hostHooks.d.ts","sourceRoot":"","sources":["../../../src/cli/hostHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAWH,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,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,gGAA6E,CAAC;AACtH,eAAO,MAAM,mBAAmB,gDAAgD,CAAC;AACjF,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAChE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,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;AAgFD,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,CAiBlF;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 (personal, never the team's
8
+ * - Claude Code — `.claude/settings.local.json` PostToolUse + UserPromptSubmit + SessionStart (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,19 +25,21 @@ 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.CURSOR_FAILURE_MATCHER = exports.CURSOR_POST_MATCHER = exports.CODEX_HOOK_MATCHER = exports.CLAUDE_HOOK_MATCHER = exports.CLAUDE_PROMPT_HOOK_COMMAND = exports.CLAUDE_HOOK_COMMAND = void 0;
28
+ exports.OPENCODE_PLUGIN = exports.CURSOR_FAILURE_MATCHER = exports.CURSOR_POST_MATCHER = exports.CODEX_HOOK_MATCHER = exports.CLAUDE_HOOK_MATCHER = exports.CLAUDE_SESSION_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;
32
32
  exports.installCursorHooks = installCursorHooks;
33
33
  exports.installOpenCodePlugin = installOpenCodePlugin;
34
34
  exports.installHostHooks = installHostHooks;
35
+ exports.repairClaudeHooks = repairClaudeHooks;
35
36
  const fs_1 = __importDefault(require("fs"));
36
37
  const os_1 = __importDefault(require("os"));
37
38
  const path_1 = __importDefault(require("path"));
38
39
  const child_process_1 = require("child_process");
39
40
  const HOOK_MARK = 'lemma-brain-ingest --hook-result';
40
41
  const PROMPT_MARK = 'lemma-brain-ingest --prompt-submit';
42
+ const SESSION_MARK = 'lemma-brain-ingest --session-start';
41
43
  function hookCommand(host) {
42
44
  const flag = host === 'claude' ? '' : ` --host=${host}`;
43
45
  return `command -v lemma-brain-ingest >/dev/null 2>&1 && ${HOOK_MARK}${flag} || true`;
@@ -45,6 +47,8 @@ function hookCommand(host) {
45
47
  exports.CLAUDE_HOOK_COMMAND = hookCommand('claude');
46
48
  /** UserPromptSubmit: recall before the agent answers — see HostRecall.recallForPrompt. */
47
49
  exports.CLAUDE_PROMPT_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${PROMPT_MARK} || true`;
50
+ /** SessionStart: the Brain's briefing and the playbook — see HostRecall.sessionBriefing. */
51
+ exports.CLAUDE_SESSION_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${SESSION_MARK} || true`;
48
52
  exports.CLAUDE_HOOK_MATCHER = 'Bash|Read|Edit|MultiEdit|Write|NotebookEdit';
49
53
  exports.CODEX_HOOK_MATCHER = 'Bash|apply_patch|Edit|Write';
50
54
  exports.CURSOR_POST_MATCHER = 'Read|Shell|Write';
@@ -133,9 +137,12 @@ function installClaudeHooks(cwd = process.cwd()) {
133
137
  const prompt = mergeMatcherHooks(file, 'UserPromptSubmit', undefined, exports.CLAUDE_PROMPT_HOOK_COMMAND, PROMPT_MARK);
134
138
  if (prompt.status === 'manual')
135
139
  return prompt;
140
+ const session = mergeMatcherHooks(file, 'SessionStart', undefined, exports.CLAUDE_SESSION_HOOK_COMMAND, SESSION_MARK);
141
+ if (session.status === 'manual')
142
+ return session;
136
143
  const gitignored = ensureClaudeLocalIgnored(cwd);
137
- // Both new → a fresh install. Extending a project that already had one half is an update.
138
- const parts = [post.status, prompt.status];
144
+ // All new → a fresh install. Extending a project that already had some of them is an update.
145
+ const parts = [post.status, prompt.status, session.status];
139
146
  const status = parts.every((x) => x === 'unchanged')
140
147
  ? 'unchanged'
141
148
  : parts.every((x) => x === 'installed')
@@ -250,4 +257,27 @@ function installHostHooks(cwd = process.cwd(), home = os_1.default.homedir()) {
250
257
  out.push({ host: 'OpenCode', outcome: installOpenCodePlugin(home) });
251
258
  return out;
252
259
  }
260
+ /**
261
+ * Bring an older install up to date. A project set up before SessionStart (or UserPromptSubmit)
262
+ * existed keeps the hooks it got on that day forever — nobody re-runs `lemma init` — so those
263
+ * users silently miss every recall moment added since. Called on MCP startup.
264
+ *
265
+ * Only touches a project that already opted in: one whose settings.local.json carries at least
266
+ * one Lemma hook. A project without one never ran init, or ran it with --no-hooks; either way
267
+ * the absence is a choice this must not overrule. Returns null when there was nothing to do.
268
+ */
269
+ function repairClaudeHooks(cwd = process.cwd()) {
270
+ const file = path_1.default.join(cwd, '.claude', 'settings.local.json');
271
+ let text;
272
+ try {
273
+ text = fs_1.default.readFileSync(file, 'utf8');
274
+ }
275
+ catch {
276
+ return null;
277
+ }
278
+ if (![HOOK_MARK, PROMPT_MARK, SESSION_MARK].some((mark) => text.includes(mark)))
279
+ return null;
280
+ const outcome = installClaudeHooks(cwd);
281
+ return outcome.status === 'unchanged' || outcome.status === 'manual' ? null : outcome;
282
+ }
253
283
  //# sourceMappingURL=hostHooks.js.map
@@ -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":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;AAWH,kCAGC;AAmGD,gDAiBC;AAED,8CAEC;AAGD,gDAkCC;AAsCD,sDAYC;AAYD,4CAOC;AAWD,8CAWC;AApQD,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AACxB,iDAA6C;AAE7C,MAAM,SAAS,GAAG,kCAAkC,CAAC;AACrD,MAAM,WAAW,GAAG,oCAAoC,CAAC;AACzD,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAE1D,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,4FAA4F;AAC/E,QAAA,2BAA2B,GAAG,oDAAoD,YAAY,UAAU,CAAC;AACzG,QAAA,mBAAmB,GAAG,6CAA6C,CAAC;AACpE,QAAA,kBAAkB,GAAG,6BAA6B,CAAC;AACnD,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AACzC,QAAA,sBAAsB,GAAG,OAAO,CAAC;AAW9C,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,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;IAC5D,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,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACjD,6FAA6F;IAC7F,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAiC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC;QAChF,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,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACxF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lemma-proxy.d.ts","sourceRoot":"","sources":["../../../src/cli/lemma-proxy.ts"],"names":[],"mappings":";AAgdA,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;AA+xDD,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":";AAgdA,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;AAo0DD,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"}
@@ -1106,18 +1106,46 @@ class LemmaServer {
1106
1106
  console.log('▶️ [Debugger] Resumed');
1107
1107
  res.json({ resumed: true, paused: false, timestamp: new Date().toISOString() });
1108
1108
  });
1109
- // Project registration from MCP handshake
1109
+ // Project registration from MCP handshake; type "mcp_heartbeat" is the 30s keep-alive
1110
1110
  this.app.post('/api/handshake', (req, res) => {
1111
- const { projectPath, projectName, stack } = req.body;
1111
+ const { projectPath, projectName, type } = req.body;
1112
+ // MCP servers send techStack as an array; older callers sent stack as a string.
1113
+ const rawStack = req.body.techStack ?? req.body.stack;
1114
+ const stack = Array.isArray(rawStack) ? rawStack.join(',') : typeof rawStack === 'string' ? rawStack : '';
1112
1115
  if (projectPath && projectName) {
1113
- this.registry.register(projectPath, projectName, stack || '');
1114
- console.log(`📋 [Handshake] Project registered: "${projectName}" (${projectPath})`);
1116
+ if (type === 'mcp_heartbeat') {
1117
+ const known = !!this.registry.get(projectPath);
1118
+ this.registry.heartbeat(projectPath, projectName, stack);
1119
+ if (!known)
1120
+ console.log(`📋 [Handshake] Project re-registered by heartbeat: "${projectName}" (${projectPath})`);
1121
+ }
1122
+ else {
1123
+ this.registry.register(projectPath, projectName, stack);
1124
+ console.log(`📋 [Handshake] Project registered: "${projectName}" (${projectPath})`);
1125
+ }
1115
1126
  res.json({ ok: true });
1116
1127
  }
1117
1128
  else {
1118
1129
  res.status(400).json({ error: 'projectPath and projectName required' });
1119
1130
  }
1120
1131
  });
1132
+ // Every project with an MCP server connected to this daemon, idle ones included
1133
+ this.app.get('/api/projects', (req, res) => {
1134
+ res.json({ projects: this.registry.snapshot() });
1135
+ });
1136
+ // Memories a recall note put in front of an agent — from the host hooks (lemma-brain-ingest)
1137
+ // and from Lemma's own read tools. Counted per project, not logged as events: a note rides
1138
+ // on most file reads and would push tool calls out of the 100-event buffer.
1139
+ this.app.post('/api/brain-recall', (req, res) => {
1140
+ const { projectPath, trigger, memoryIds } = req.body || {};
1141
+ const triggers = ['read', 'edit', 'failure', 'prompt', 'session', 'search'];
1142
+ if (typeof projectPath !== 'string' || !projectPath || !triggers.includes(trigger) || !Array.isArray(memoryIds)) {
1143
+ return res.status(400).json({ error: 'projectPath, trigger and memoryIds required' });
1144
+ }
1145
+ const ids = memoryIds.filter((id) => typeof id === 'string' && id.length > 0 && id.length <= 64).slice(0, 20);
1146
+ this.registry.recordOffered(projectPath, ids);
1147
+ res.json({ ok: true, recorded: ids.length });
1148
+ });
1121
1149
  this.app.get('/v1/models', (req, res) => {
1122
1150
  res.json({ object: 'list', data: [
1123
1151
  { id: 'gpt-4o', object: 'model', owned_by: 'lemma-proxy' },
@@ -1233,6 +1261,8 @@ class LemmaServer {
1233
1261
  eventData.error = e.error;
1234
1262
  eventData.receipt = e.receipt;
1235
1263
  eventData.projectPath = e.projectPath;
1264
+ if (e.recallUsed)
1265
+ eventData.recallUsed = true;
1236
1266
  // tokensImpact is the size of the tool result — a context cost, not a saving.
1237
1267
  eventData.tokensSaved = 0;
1238
1268
  eventData.costSaved = 0;
@@ -1729,8 +1759,15 @@ class LemmaServer {
1729
1759
  projectPath: typeof event.projectPath === 'string' ? event.projectPath : undefined,
1730
1760
  timestamp: event.timestamp || new Date().toISOString(),
1731
1761
  };
1762
+ // get_memory on a memory a recall note offered: the agent acted on recall it didn't
1763
+ // have to search for. Flagged on the event so the timeline can show it too.
1764
+ const readId = mcpEvent.args && typeof mcpEvent.args.id === 'string' ? mcpEvent.args.id : null;
1765
+ const recallUsed = mcpEvent.tool === 'get_memory' && mcpEvent.result === 'OK' && !!readId && !!mcpEvent.projectPath &&
1766
+ this.registry.recordRecallUse(mcpEvent.projectPath, readId);
1732
1767
  // Add to EVENT_LOG
1733
- logEvent(mcpEvent);
1768
+ logEvent(recallUsed ? { ...mcpEvent, recallUsed: true } : mcpEvent);
1769
+ if (mcpEvent.projectPath)
1770
+ this.registry.recordToolCall(mcpEvent.projectPath);
1734
1771
  res.json({ success: true, eventId: mcpEvent.id });
1735
1772
  }
1736
1773
  catch (error) {