@nxuss/lemma 1.40.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 (242) hide show
  1. package/README.md +63 -14
  2. package/bin/brain-ingest.js +83 -6
  3. package/bin/doctor.js +2 -1
  4. package/bin/init.js +92 -92
  5. package/bin/postinstall.js +58 -4
  6. package/dashboard/dist/assets/index-Ca05LJvs.js +453 -0
  7. package/dashboard/dist/assets/{index-DNTQXLER.css → index-DdEVyDRj.css} +1 -1
  8. package/dashboard/dist/index.html +2 -2
  9. package/dist/cjs/cli/hostHooks.d.ts +27 -2
  10. package/dist/cjs/cli/hostHooks.d.ts.map +1 -1
  11. package/dist/cjs/cli/hostHooks.js +74 -7
  12. package/dist/cjs/cli/hostHooks.js.map +1 -1
  13. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  14. package/dist/cjs/cli/lemma-proxy.js +29 -10
  15. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  16. package/dist/cjs/contracts/evidence.d.ts +8 -1
  17. package/dist/cjs/contracts/evidence.d.ts.map +1 -1
  18. package/dist/cjs/mcp/index.js +19 -0
  19. package/dist/cjs/mcp/index.js.map +1 -1
  20. package/dist/cjs/mcp/prompts.d.ts +1 -1
  21. package/dist/cjs/mcp/prompts.d.ts.map +1 -1
  22. package/dist/cjs/mcp/prompts.js +6 -16
  23. package/dist/cjs/mcp/prompts.js.map +1 -1
  24. package/dist/cjs/mcp/tool-profiles.d.ts.map +1 -1
  25. package/dist/cjs/mcp/tool-profiles.js +8 -4
  26. package/dist/cjs/mcp/tool-profiles.js.map +1 -1
  27. package/dist/cjs/mcp/tools/context-tools.d.ts.map +1 -1
  28. package/dist/cjs/mcp/tools/context-tools.js +21 -17
  29. package/dist/cjs/mcp/tools/context-tools.js.map +1 -1
  30. package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
  31. package/dist/cjs/mcp/tools/memory.js +25 -4
  32. package/dist/cjs/mcp/tools/memory.js.map +1 -1
  33. package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -1
  34. package/dist/cjs/mcp/tools/workspace.js +97 -54
  35. package/dist/cjs/mcp/tools/workspace.js.map +1 -1
  36. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  37. package/dist/cjs/mcp/tools.js +95 -34
  38. package/dist/cjs/mcp/tools.js.map +1 -1
  39. package/dist/cjs/mcp/utils.d.ts.map +1 -1
  40. package/dist/cjs/mcp/utils.js +6 -1
  41. package/dist/cjs/mcp/utils.js.map +1 -1
  42. package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -1
  43. package/dist/cjs/mcp/workspaceShared.js +14 -9
  44. package/dist/cjs/mcp/workspaceShared.js.map +1 -1
  45. package/dist/cjs/proxy/KeyManager.d.ts +10 -0
  46. package/dist/cjs/proxy/KeyManager.d.ts.map +1 -1
  47. package/dist/cjs/proxy/KeyManager.js +45 -8
  48. package/dist/cjs/proxy/KeyManager.js.map +1 -1
  49. package/dist/cjs/security/SemanticScrubber.d.ts +6 -0
  50. package/dist/cjs/security/SemanticScrubber.d.ts.map +1 -1
  51. package/dist/cjs/security/SemanticScrubber.js +39 -13
  52. package/dist/cjs/security/SemanticScrubber.js.map +1 -1
  53. package/dist/cjs/subconscious/HostRecall.d.ts +21 -5
  54. package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
  55. package/dist/cjs/subconscious/HostRecall.js +147 -13
  56. package/dist/cjs/subconscious/HostRecall.js.map +1 -1
  57. package/dist/cjs/subconscious/LeakWatch.d.ts +21 -0
  58. package/dist/cjs/subconscious/LeakWatch.d.ts.map +1 -0
  59. package/dist/cjs/subconscious/LeakWatch.js +93 -0
  60. package/dist/cjs/subconscious/LeakWatch.js.map +1 -0
  61. package/dist/cjs/subconscious/TheBrainV2.d.ts +6 -1
  62. package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
  63. package/dist/cjs/subconscious/TheBrainV2.js +21 -9
  64. package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
  65. package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts +3 -0
  66. package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
  67. package/dist/cjs/subconscious/freshness/LocalFsResolver.js +32 -14
  68. package/dist/cjs/subconscious/freshness/LocalFsResolver.js.map +1 -1
  69. package/dist/cjs/utils/CommandOutputDistiller.d.ts +10 -0
  70. package/dist/cjs/utils/CommandOutputDistiller.d.ts.map +1 -1
  71. package/dist/cjs/utils/CommandOutputDistiller.js +40 -2
  72. package/dist/cjs/utils/CommandOutputDistiller.js.map +1 -1
  73. package/dist/cjs/utils/ContextSqueezer.d.ts +13 -1
  74. package/dist/cjs/utils/ContextSqueezer.d.ts.map +1 -1
  75. package/dist/cjs/utils/ContextSqueezer.js +176 -3
  76. package/dist/cjs/utils/ContextSqueezer.js.map +1 -1
  77. package/dist/cjs/utils/FixCapture.d.ts.map +1 -1
  78. package/dist/cjs/utils/FixCapture.js +56 -0
  79. package/dist/cjs/utils/FixCapture.js.map +1 -1
  80. package/dist/cjs/utils/LineNumberMap.d.ts.map +1 -1
  81. package/dist/cjs/utils/LineNumberMap.js +27 -0
  82. package/dist/cjs/utils/LineNumberMap.js.map +1 -1
  83. package/dist/cjs/utils/PatchMatcher.d.ts.map +1 -1
  84. package/dist/cjs/utils/PatchMatcher.js +26 -0
  85. package/dist/cjs/utils/PatchMatcher.js.map +1 -1
  86. package/dist/cjs/utils/ProLicense.d.ts +2 -0
  87. package/dist/cjs/utils/ProLicense.d.ts.map +1 -0
  88. package/dist/cjs/utils/ProLicense.js +31 -0
  89. package/dist/cjs/utils/ProLicense.js.map +1 -0
  90. package/dist/cjs/utils/RevivalThrottle.d.ts +9 -0
  91. package/dist/cjs/utils/RevivalThrottle.d.ts.map +1 -0
  92. package/dist/cjs/utils/RevivalThrottle.js +25 -0
  93. package/dist/cjs/utils/RevivalThrottle.js.map +1 -0
  94. package/dist/cjs/utils/SavingsLedger.d.ts +58 -18
  95. package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
  96. package/dist/cjs/utils/SavingsLedger.js +332 -179
  97. package/dist/cjs/utils/SavingsLedger.js.map +1 -1
  98. package/dist/cjs/utils/SearchCache.d.ts +2 -2
  99. package/dist/cjs/utils/SearchCache.d.ts.map +1 -1
  100. package/dist/cjs/utils/SearchCache.js +8 -6
  101. package/dist/cjs/utils/SearchCache.js.map +1 -1
  102. package/dist/cjs/utils/SessionCapture.d.ts +76 -0
  103. package/dist/cjs/utils/SessionCapture.d.ts.map +1 -0
  104. package/dist/cjs/utils/SessionCapture.js +400 -0
  105. package/dist/cjs/utils/SessionCapture.js.map +1 -0
  106. package/dist/cjs/utils/StaleDelta.d.ts +2 -0
  107. package/dist/cjs/utils/StaleDelta.d.ts.map +1 -0
  108. package/dist/cjs/utils/StaleDelta.js +60 -0
  109. package/dist/cjs/utils/StaleDelta.js.map +1 -0
  110. package/dist/cjs/utils/TokenBudgetedReader.d.ts.map +1 -1
  111. package/dist/cjs/utils/TokenBudgetedReader.js +56 -15
  112. package/dist/cjs/utils/TokenBudgetedReader.js.map +1 -1
  113. package/dist/cjs/utils/WorkspaceSearch.d.ts +8 -1
  114. package/dist/cjs/utils/WorkspaceSearch.d.ts.map +1 -1
  115. package/dist/cjs/utils/WorkspaceSearch.js +75 -5
  116. package/dist/cjs/utils/WorkspaceSearch.js.map +1 -1
  117. package/dist/cjs/utils/reportSavings.d.ts +3 -0
  118. package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
  119. package/dist/cjs/utils/reportSavings.js +44 -5
  120. package/dist/cjs/utils/reportSavings.js.map +1 -1
  121. package/dist/esm/cli/hostHooks.d.ts +27 -2
  122. package/dist/esm/cli/hostHooks.d.ts.map +1 -1
  123. package/dist/esm/cli/hostHooks.js +73 -6
  124. package/dist/esm/cli/hostHooks.js.map +1 -1
  125. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  126. package/dist/esm/cli/lemma-proxy.js +30 -11
  127. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  128. package/dist/esm/contracts/evidence.d.ts +8 -1
  129. package/dist/esm/contracts/evidence.d.ts.map +1 -1
  130. package/dist/esm/mcp/index.js +20 -1
  131. package/dist/esm/mcp/index.js.map +1 -1
  132. package/dist/esm/mcp/prompts.d.ts +1 -1
  133. package/dist/esm/mcp/prompts.d.ts.map +1 -1
  134. package/dist/esm/mcp/prompts.js +6 -16
  135. package/dist/esm/mcp/prompts.js.map +1 -1
  136. package/dist/esm/mcp/tool-profiles.d.ts.map +1 -1
  137. package/dist/esm/mcp/tool-profiles.js +8 -4
  138. package/dist/esm/mcp/tool-profiles.js.map +1 -1
  139. package/dist/esm/mcp/tools/context-tools.d.ts.map +1 -1
  140. package/dist/esm/mcp/tools/context-tools.js +21 -17
  141. package/dist/esm/mcp/tools/context-tools.js.map +1 -1
  142. package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
  143. package/dist/esm/mcp/tools/memory.js +26 -5
  144. package/dist/esm/mcp/tools/memory.js.map +1 -1
  145. package/dist/esm/mcp/tools/workspace.d.ts.map +1 -1
  146. package/dist/esm/mcp/tools/workspace.js +98 -55
  147. package/dist/esm/mcp/tools/workspace.js.map +1 -1
  148. package/dist/esm/mcp/tools.d.ts.map +1 -1
  149. package/dist/esm/mcp/tools.js +94 -33
  150. package/dist/esm/mcp/tools.js.map +1 -1
  151. package/dist/esm/mcp/utils.d.ts.map +1 -1
  152. package/dist/esm/mcp/utils.js +6 -1
  153. package/dist/esm/mcp/utils.js.map +1 -1
  154. package/dist/esm/mcp/workspaceShared.d.ts.map +1 -1
  155. package/dist/esm/mcp/workspaceShared.js +14 -9
  156. package/dist/esm/mcp/workspaceShared.js.map +1 -1
  157. package/dist/esm/proxy/KeyManager.d.ts +10 -0
  158. package/dist/esm/proxy/KeyManager.d.ts.map +1 -1
  159. package/dist/esm/proxy/KeyManager.js +43 -6
  160. package/dist/esm/proxy/KeyManager.js.map +1 -1
  161. package/dist/esm/security/SemanticScrubber.d.ts +6 -0
  162. package/dist/esm/security/SemanticScrubber.d.ts.map +1 -1
  163. package/dist/esm/security/SemanticScrubber.js +38 -12
  164. package/dist/esm/security/SemanticScrubber.js.map +1 -1
  165. package/dist/esm/subconscious/HostRecall.d.ts +21 -5
  166. package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
  167. package/dist/esm/subconscious/HostRecall.js +146 -16
  168. package/dist/esm/subconscious/HostRecall.js.map +1 -1
  169. package/dist/esm/subconscious/LeakWatch.d.ts +21 -0
  170. package/dist/esm/subconscious/LeakWatch.d.ts.map +1 -0
  171. package/dist/esm/subconscious/LeakWatch.js +86 -0
  172. package/dist/esm/subconscious/LeakWatch.js.map +1 -0
  173. package/dist/esm/subconscious/TheBrainV2.d.ts +6 -1
  174. package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
  175. package/dist/esm/subconscious/TheBrainV2.js +21 -9
  176. package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
  177. package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts +3 -0
  178. package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
  179. package/dist/esm/subconscious/freshness/LocalFsResolver.js +32 -14
  180. package/dist/esm/subconscious/freshness/LocalFsResolver.js.map +1 -1
  181. package/dist/esm/utils/CommandOutputDistiller.d.ts +10 -0
  182. package/dist/esm/utils/CommandOutputDistiller.d.ts.map +1 -1
  183. package/dist/esm/utils/CommandOutputDistiller.js +39 -2
  184. package/dist/esm/utils/CommandOutputDistiller.js.map +1 -1
  185. package/dist/esm/utils/ContextSqueezer.d.ts +13 -1
  186. package/dist/esm/utils/ContextSqueezer.d.ts.map +1 -1
  187. package/dist/esm/utils/ContextSqueezer.js +175 -3
  188. package/dist/esm/utils/ContextSqueezer.js.map +1 -1
  189. package/dist/esm/utils/FixCapture.d.ts.map +1 -1
  190. package/dist/esm/utils/FixCapture.js +56 -0
  191. package/dist/esm/utils/FixCapture.js.map +1 -1
  192. package/dist/esm/utils/LineNumberMap.d.ts.map +1 -1
  193. package/dist/esm/utils/LineNumberMap.js +27 -0
  194. package/dist/esm/utils/LineNumberMap.js.map +1 -1
  195. package/dist/esm/utils/PatchMatcher.d.ts.map +1 -1
  196. package/dist/esm/utils/PatchMatcher.js +26 -0
  197. package/dist/esm/utils/PatchMatcher.js.map +1 -1
  198. package/dist/esm/utils/ProLicense.d.ts +2 -0
  199. package/dist/esm/utils/ProLicense.d.ts.map +1 -0
  200. package/dist/esm/utils/ProLicense.js +25 -0
  201. package/dist/esm/utils/ProLicense.js.map +1 -0
  202. package/dist/esm/utils/RevivalThrottle.d.ts +9 -0
  203. package/dist/esm/utils/RevivalThrottle.d.ts.map +1 -0
  204. package/dist/esm/utils/RevivalThrottle.js +22 -0
  205. package/dist/esm/utils/RevivalThrottle.js.map +1 -0
  206. package/dist/esm/utils/SavingsLedger.d.ts +58 -18
  207. package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
  208. package/dist/esm/utils/SavingsLedger.js +332 -179
  209. package/dist/esm/utils/SavingsLedger.js.map +1 -1
  210. package/dist/esm/utils/SearchCache.d.ts +2 -2
  211. package/dist/esm/utils/SearchCache.d.ts.map +1 -1
  212. package/dist/esm/utils/SearchCache.js +8 -6
  213. package/dist/esm/utils/SearchCache.js.map +1 -1
  214. package/dist/esm/utils/SessionCapture.d.ts +76 -0
  215. package/dist/esm/utils/SessionCapture.d.ts.map +1 -0
  216. package/dist/esm/utils/SessionCapture.js +388 -0
  217. package/dist/esm/utils/SessionCapture.js.map +1 -0
  218. package/dist/esm/utils/StaleDelta.d.ts +2 -0
  219. package/dist/esm/utils/StaleDelta.d.ts.map +1 -0
  220. package/dist/esm/utils/StaleDelta.js +54 -0
  221. package/dist/esm/utils/StaleDelta.js.map +1 -0
  222. package/dist/esm/utils/TokenBudgetedReader.d.ts.map +1 -1
  223. package/dist/esm/utils/TokenBudgetedReader.js +56 -15
  224. package/dist/esm/utils/TokenBudgetedReader.js.map +1 -1
  225. package/dist/esm/utils/WorkspaceSearch.d.ts +8 -1
  226. package/dist/esm/utils/WorkspaceSearch.d.ts.map +1 -1
  227. package/dist/esm/utils/WorkspaceSearch.js +74 -5
  228. package/dist/esm/utils/WorkspaceSearch.js.map +1 -1
  229. package/dist/esm/utils/reportSavings.d.ts +3 -0
  230. package/dist/esm/utils/reportSavings.d.ts.map +1 -1
  231. package/dist/esm/utils/reportSavings.js +42 -5
  232. package/dist/esm/utils/reportSavings.js.map +1 -1
  233. package/package.json +4 -4
  234. package/dashboard/dist/assets/index-DzL_Zu3m.js +0 -452
  235. package/dist/cjs/examples/basic-usage.d.ts +0 -12
  236. package/dist/cjs/examples/basic-usage.d.ts.map +0 -1
  237. package/dist/cjs/examples/basic-usage.js +0 -128
  238. package/dist/cjs/examples/basic-usage.js.map +0 -1
  239. package/dist/esm/examples/basic-usage.d.ts +0 -12
  240. package/dist/esm/examples/basic-usage.d.ts.map +0 -1
  241. package/dist/esm/examples/basic-usage.js +0 -126
  242. package/dist/esm/examples/basic-usage.js.map +0 -1
@@ -1173,7 +1173,7 @@ function checkEntryFreshness(entry, resolver, resolveNode, depth = 0, visited =
1173
1173
  unverifiedFiles.push(relLabel(abs)); // fail-closed: cannot verify ⇒ not fresh
1174
1174
  continue;
1175
1175
  }
1176
- if (currentHash !== storedHash)
1176
+ if (currentHash !== storedHash && resolver.hashFileLegacy?.(abs) !== storedHash)
1177
1177
  staleFiles.push(relLabel(abs));
1178
1178
  }
1179
1179
  }
@@ -1188,7 +1188,7 @@ function checkEntryFreshness(entry, resolver, resolveNode, depth = 0, visited =
1188
1188
  unverifiedFiles.push(label); // fail-closed: cannot verify ⇒ not fresh
1189
1189
  continue;
1190
1190
  }
1191
- if (currentPair.raw === storedHash)
1191
+ if (currentPair.raw === storedHash || currentPair.rawLegacy === storedHash)
1192
1192
  continue;
1193
1193
  if (semanticDiff) {
1194
1194
  const storedNormalized = entry.symbolNormalizedHashes?.[key];
@@ -1311,7 +1311,7 @@ function checkClaimFreshness(claim, resolver, semanticDiff = false) {
1311
1311
  unverifiedFiles.push(relLabel(abs));
1312
1312
  continue;
1313
1313
  }
1314
- if (currentHash !== storedHash)
1314
+ if (currentHash !== storedHash && resolver.hashFileLegacy?.(abs) !== storedHash)
1315
1315
  staleFiles.push(relLabel(abs));
1316
1316
  }
1317
1317
  }
@@ -1326,7 +1326,7 @@ function checkClaimFreshness(claim, resolver, semanticDiff = false) {
1326
1326
  unverifiedFiles.push(label);
1327
1327
  continue;
1328
1328
  }
1329
- if (currentPair.raw === storedHash)
1329
+ if (currentPair.raw === storedHash || currentPair.rawLegacy === storedHash)
1330
1330
  continue;
1331
1331
  if (semanticDiff) {
1332
1332
  const storedNormalized = claim.symbolNormalizedHashes?.[key];
@@ -3449,6 +3449,11 @@ class TheBrainV2 {
3449
3449
  */
3450
3450
  getStats(options = {}) {
3451
3451
  this.syncIfChanged();
3452
+ // With projectId, every per-memory figure covers that project's memories only. Corpus-wide
3453
+ // ones (term index, bloom filter, file size, snapshots, tombstones) stay what they are, and
3454
+ // `unscopedEntries` still counts the memories that predate scoping, which belong to no project.
3455
+ const scopeId = options.projectId;
3456
+ let inScope = 0;
3452
3457
  const base = {
3453
3458
  totalEntries: this.entries.size,
3454
3459
  totalTerms: this.invertedIndex.size,
@@ -3474,14 +3479,17 @@ class TheBrainV2 {
3474
3479
  const reuseBySource = {};
3475
3480
  const projects = new Set();
3476
3481
  for (const entry of this.entries.values()) {
3477
- if (!entry.hits)
3478
- neverHit++;
3479
- if (entry.demerits)
3480
- downvoted++;
3481
3482
  if (entry.projectId === undefined)
3482
3483
  unscoped++;
3483
3484
  else
3484
3485
  projects.add(entry.projectId);
3486
+ if (scopeId !== undefined && entry.projectId !== scopeId)
3487
+ continue;
3488
+ inScope++;
3489
+ if (!entry.hits)
3490
+ neverHit++;
3491
+ if (entry.demerits)
3492
+ downvoted++;
3485
3493
  if (trackedArtifactCount(entry) === 0)
3486
3494
  untracked++;
3487
3495
  else if (entry.filePaths !== undefined || entry.symbols !== undefined ||
@@ -3522,7 +3530,11 @@ class TheBrainV2 {
3522
3530
  base.downvoted = downvoted;
3523
3531
  base.bySource = bySource;
3524
3532
  base.reuseBySource = reuseBySource;
3525
- base.projects = projects.size;
3533
+ if (scopeId !== undefined) {
3534
+ base.totalEntries = inScope;
3535
+ base.scopedTo = scopeId;
3536
+ }
3537
+ base.projects = scopeId !== undefined ? (projects.has(scopeId) ? 1 : 0) : projects.size;
3526
3538
  base.unscopedEntries = unscoped;
3527
3539
  base.untrackedEntries = untracked;
3528
3540
  base.withClearPaths = withClearPaths;