@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
@@ -1145,7 +1145,7 @@ export function checkEntryFreshness(entry, resolver, resolveNode, depth = 0, vis
1145
1145
  unverifiedFiles.push(relLabel(abs)); // fail-closed: cannot verify ⇒ not fresh
1146
1146
  continue;
1147
1147
  }
1148
- if (currentHash !== storedHash)
1148
+ if (currentHash !== storedHash && resolver.hashFileLegacy?.(abs) !== storedHash)
1149
1149
  staleFiles.push(relLabel(abs));
1150
1150
  }
1151
1151
  }
@@ -1160,7 +1160,7 @@ export function checkEntryFreshness(entry, resolver, resolveNode, depth = 0, vis
1160
1160
  unverifiedFiles.push(label); // fail-closed: cannot verify ⇒ not fresh
1161
1161
  continue;
1162
1162
  }
1163
- if (currentPair.raw === storedHash)
1163
+ if (currentPair.raw === storedHash || currentPair.rawLegacy === storedHash)
1164
1164
  continue;
1165
1165
  if (semanticDiff) {
1166
1166
  const storedNormalized = entry.symbolNormalizedHashes?.[key];
@@ -1283,7 +1283,7 @@ export function checkClaimFreshness(claim, resolver, semanticDiff = false) {
1283
1283
  unverifiedFiles.push(relLabel(abs));
1284
1284
  continue;
1285
1285
  }
1286
- if (currentHash !== storedHash)
1286
+ if (currentHash !== storedHash && resolver.hashFileLegacy?.(abs) !== storedHash)
1287
1287
  staleFiles.push(relLabel(abs));
1288
1288
  }
1289
1289
  }
@@ -1298,7 +1298,7 @@ export function checkClaimFreshness(claim, resolver, semanticDiff = false) {
1298
1298
  unverifiedFiles.push(label);
1299
1299
  continue;
1300
1300
  }
1301
- if (currentPair.raw === storedHash)
1301
+ if (currentPair.raw === storedHash || currentPair.rawLegacy === storedHash)
1302
1302
  continue;
1303
1303
  if (semanticDiff) {
1304
1304
  const storedNormalized = claim.symbolNormalizedHashes?.[key];
@@ -3421,6 +3421,11 @@ export class TheBrainV2 {
3421
3421
  */
3422
3422
  getStats(options = {}) {
3423
3423
  this.syncIfChanged();
3424
+ // With projectId, every per-memory figure covers that project's memories only. Corpus-wide
3425
+ // ones (term index, bloom filter, file size, snapshots, tombstones) stay what they are, and
3426
+ // `unscopedEntries` still counts the memories that predate scoping, which belong to no project.
3427
+ const scopeId = options.projectId;
3428
+ let inScope = 0;
3424
3429
  const base = {
3425
3430
  totalEntries: this.entries.size,
3426
3431
  totalTerms: this.invertedIndex.size,
@@ -3446,14 +3451,17 @@ export class TheBrainV2 {
3446
3451
  const reuseBySource = {};
3447
3452
  const projects = new Set();
3448
3453
  for (const entry of this.entries.values()) {
3449
- if (!entry.hits)
3450
- neverHit++;
3451
- if (entry.demerits)
3452
- downvoted++;
3453
3454
  if (entry.projectId === undefined)
3454
3455
  unscoped++;
3455
3456
  else
3456
3457
  projects.add(entry.projectId);
3458
+ if (scopeId !== undefined && entry.projectId !== scopeId)
3459
+ continue;
3460
+ inScope++;
3461
+ if (!entry.hits)
3462
+ neverHit++;
3463
+ if (entry.demerits)
3464
+ downvoted++;
3457
3465
  if (trackedArtifactCount(entry) === 0)
3458
3466
  untracked++;
3459
3467
  else if (entry.filePaths !== undefined || entry.symbols !== undefined ||
@@ -3494,7 +3502,11 @@ export class TheBrainV2 {
3494
3502
  base.downvoted = downvoted;
3495
3503
  base.bySource = bySource;
3496
3504
  base.reuseBySource = reuseBySource;
3497
- base.projects = projects.size;
3505
+ if (scopeId !== undefined) {
3506
+ base.totalEntries = inScope;
3507
+ base.scopedTo = scopeId;
3508
+ }
3509
+ base.projects = scopeId !== undefined ? (projects.has(scopeId) ? 1 : 0) : projects.size;
3498
3510
  base.unscopedEntries = unscoped;
3499
3511
  base.untrackedEntries = untracked;
3500
3512
  base.withClearPaths = withClearPaths;