@nxuss/lemma 1.17.0 → 1.18.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 (459) hide show
  1. package/bin/init.js +97 -11
  2. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  3. package/dist/cjs/cli/lemma-proxy.js +19 -11
  4. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  5. package/dist/cjs/cloud/TenantCache.d.ts.map +1 -1
  6. package/dist/cjs/cloud/TenantCache.js +0 -4
  7. package/dist/cjs/cloud/TenantCache.js.map +1 -1
  8. package/dist/cjs/cloud/identity/ApiKey.d.ts +32 -0
  9. package/dist/cjs/cloud/identity/ApiKey.d.ts.map +1 -0
  10. package/dist/cjs/cloud/identity/ApiKey.js +59 -0
  11. package/dist/cjs/cloud/identity/ApiKey.js.map +1 -0
  12. package/dist/cjs/cloud/identity/PlanPolicy.d.ts +79 -0
  13. package/dist/cjs/cloud/identity/PlanPolicy.d.ts.map +1 -0
  14. package/dist/cjs/cloud/identity/PlanPolicy.js +135 -0
  15. package/dist/cjs/cloud/identity/PlanPolicy.js.map +1 -0
  16. package/dist/cjs/cloud/identity/RateLimiter.d.ts +49 -0
  17. package/dist/cjs/cloud/identity/RateLimiter.d.ts.map +1 -0
  18. package/dist/cjs/cloud/identity/RateLimiter.js +75 -0
  19. package/dist/cjs/cloud/identity/RateLimiter.js.map +1 -0
  20. package/dist/cjs/cloud/identity/TenantResolver.d.ts +19 -0
  21. package/dist/cjs/cloud/identity/TenantResolver.d.ts.map +1 -0
  22. package/dist/cjs/cloud/identity/TenantResolver.js +40 -0
  23. package/dist/cjs/cloud/identity/TenantResolver.js.map +1 -0
  24. package/dist/cjs/cloud/identity/authenticateV2.d.ts +48 -0
  25. package/dist/cjs/cloud/identity/authenticateV2.d.ts.map +1 -0
  26. package/dist/cjs/cloud/identity/authenticateV2.js +66 -0
  27. package/dist/cjs/cloud/identity/authenticateV2.js.map +1 -0
  28. package/dist/cjs/cloud/identity/identityStore.d.ts +56 -0
  29. package/dist/cjs/cloud/identity/identityStore.d.ts.map +1 -0
  30. package/dist/cjs/cloud/identity/identityStore.js +99 -0
  31. package/dist/cjs/cloud/identity/identityStore.js.map +1 -0
  32. package/dist/cjs/cloud/identity/index.d.ts +14 -0
  33. package/dist/cjs/cloud/identity/index.d.ts.map +1 -0
  34. package/dist/cjs/cloud/identity/index.js +30 -0
  35. package/dist/cjs/cloud/identity/index.js.map +1 -0
  36. package/dist/cjs/cloud/metering/TokenCounter.d.ts +26 -0
  37. package/dist/cjs/cloud/metering/TokenCounter.d.ts.map +1 -0
  38. package/dist/cjs/cloud/metering/TokenCounter.js +80 -0
  39. package/dist/cjs/cloud/metering/TokenCounter.js.map +1 -0
  40. package/dist/cjs/cloud/metering/UsageLedger.d.ts +68 -0
  41. package/dist/cjs/cloud/metering/UsageLedger.d.ts.map +1 -0
  42. package/dist/cjs/cloud/metering/UsageLedger.js +106 -0
  43. package/dist/cjs/cloud/metering/UsageLedger.js.map +1 -0
  44. package/dist/cjs/cloud/metering/index.d.ts +12 -0
  45. package/dist/cjs/cloud/metering/index.d.ts.map +1 -0
  46. package/dist/cjs/cloud/metering/index.js +28 -0
  47. package/dist/cjs/cloud/metering/index.js.map +1 -0
  48. package/dist/cjs/cloud/scrub/StatelessScrubber.d.ts +53 -0
  49. package/dist/cjs/cloud/scrub/StatelessScrubber.d.ts.map +1 -0
  50. package/dist/cjs/cloud/scrub/StatelessScrubber.js +203 -0
  51. package/dist/cjs/cloud/scrub/StatelessScrubber.js.map +1 -0
  52. package/dist/cjs/cloud/scrub/index.d.ts +5 -0
  53. package/dist/cjs/cloud/scrub/index.d.ts.map +1 -0
  54. package/dist/cjs/cloud/scrub/index.js +21 -0
  55. package/dist/cjs/cloud/scrub/index.js.map +1 -0
  56. package/dist/cjs/cloud/store/FileBrainStore.d.ts +26 -0
  57. package/dist/cjs/cloud/store/FileBrainStore.d.ts.map +1 -0
  58. package/dist/cjs/cloud/store/FileBrainStore.js +219 -0
  59. package/dist/cjs/cloud/store/FileBrainStore.js.map +1 -0
  60. package/dist/cjs/cloud/store/PostgresBrainStore.d.ts +50 -0
  61. package/dist/cjs/cloud/store/PostgresBrainStore.d.ts.map +1 -0
  62. package/dist/cjs/cloud/store/PostgresBrainStore.js +181 -0
  63. package/dist/cjs/cloud/store/PostgresBrainStore.js.map +1 -0
  64. package/dist/cjs/cloud/store/index.d.ts +6 -0
  65. package/dist/cjs/cloud/store/index.d.ts.map +1 -0
  66. package/dist/cjs/cloud/store/index.js +22 -0
  67. package/dist/cjs/cloud/store/index.js.map +1 -0
  68. package/dist/cjs/cloud/types.d.ts +0 -4
  69. package/dist/cjs/cloud/types.d.ts.map +1 -1
  70. package/dist/cjs/cloud/types.js +1 -3
  71. package/dist/cjs/cloud/types.js.map +1 -1
  72. package/dist/cjs/cloud/v2/app.d.ts +15 -0
  73. package/dist/cjs/cloud/v2/app.d.ts.map +1 -0
  74. package/dist/cjs/cloud/v2/app.js +63 -0
  75. package/dist/cjs/cloud/v2/app.js.map +1 -0
  76. package/dist/cjs/cloud/v2/routes/index.d.ts +24 -0
  77. package/dist/cjs/cloud/v2/routes/index.d.ts.map +1 -0
  78. package/dist/cjs/cloud/v2/routes/index.js +35 -0
  79. package/dist/cjs/cloud/v2/routes/index.js.map +1 -0
  80. package/dist/cjs/cloud/v2/routes/memories.d.ts +83 -0
  81. package/dist/cjs/cloud/v2/routes/memories.d.ts.map +1 -0
  82. package/dist/cjs/cloud/v2/routes/memories.js +249 -0
  83. package/dist/cjs/cloud/v2/routes/memories.js.map +1 -0
  84. package/dist/cjs/cloud/v2/routes/recall.d.ts +33 -0
  85. package/dist/cjs/cloud/v2/routes/recall.d.ts.map +1 -0
  86. package/dist/cjs/cloud/v2/routes/recall.js +51 -0
  87. package/dist/cjs/cloud/v2/routes/recall.js.map +1 -0
  88. package/dist/cjs/cloud/v2/routes/scrub.d.ts +13 -0
  89. package/dist/cjs/cloud/v2/routes/scrub.d.ts.map +1 -0
  90. package/dist/cjs/cloud/v2/routes/scrub.js +82 -0
  91. package/dist/cjs/cloud/v2/routes/scrub.js.map +1 -0
  92. package/dist/cjs/cloud/v2/routes/usage.d.ts +18 -0
  93. package/dist/cjs/cloud/v2/routes/usage.d.ts.map +1 -0
  94. package/dist/cjs/cloud/v2/routes/usage.js +18 -0
  95. package/dist/cjs/cloud/v2/routes/usage.js.map +1 -0
  96. package/dist/cjs/cloud/v2/routes/verify.d.ts +35 -0
  97. package/dist/cjs/cloud/v2/routes/verify.d.ts.map +1 -0
  98. package/dist/cjs/cloud/v2/routes/verify.js +43 -0
  99. package/dist/cjs/cloud/v2/routes/verify.js.map +1 -0
  100. package/dist/cjs/cloud/v2/server.d.ts +27 -0
  101. package/dist/cjs/cloud/v2/server.d.ts.map +1 -0
  102. package/dist/cjs/cloud/v2/server.js +47 -0
  103. package/dist/cjs/cloud/v2/server.js.map +1 -0
  104. package/dist/cjs/contracts/api-v2.types.d.ts +103 -0
  105. package/dist/cjs/contracts/api-v2.types.d.ts.map +1 -0
  106. package/dist/cjs/contracts/api-v2.types.js +3 -0
  107. package/dist/cjs/contracts/api-v2.types.js.map +1 -0
  108. package/dist/cjs/contracts/errors.d.ts +40 -0
  109. package/dist/cjs/contracts/errors.d.ts.map +1 -0
  110. package/dist/cjs/contracts/errors.js +50 -0
  111. package/dist/cjs/contracts/errors.js.map +1 -0
  112. package/dist/cjs/contracts/evidence.d.ts +49 -0
  113. package/dist/cjs/contracts/evidence.d.ts.map +1 -0
  114. package/dist/cjs/contracts/evidence.js +12 -0
  115. package/dist/cjs/contracts/evidence.js.map +1 -0
  116. package/dist/cjs/contracts/index.d.ts +10 -0
  117. package/dist/cjs/contracts/index.d.ts.map +1 -0
  118. package/dist/cjs/contracts/index.js +26 -0
  119. package/dist/cjs/contracts/index.js.map +1 -0
  120. package/dist/cjs/contracts/store.d.ts +30 -0
  121. package/dist/cjs/contracts/store.d.ts.map +1 -0
  122. package/dist/cjs/contracts/store.js +3 -0
  123. package/dist/cjs/contracts/store.js.map +1 -0
  124. package/dist/cjs/mcp/cognitiveMap.d.ts +27 -0
  125. package/dist/cjs/mcp/cognitiveMap.d.ts.map +1 -0
  126. package/dist/cjs/mcp/cognitiveMap.js +47 -0
  127. package/dist/cjs/mcp/cognitiveMap.js.map +1 -0
  128. package/dist/cjs/mcp/tool-profiles.d.ts.map +1 -1
  129. package/dist/cjs/mcp/tool-profiles.js +46 -1
  130. package/dist/cjs/mcp/tool-profiles.js.map +1 -1
  131. package/dist/cjs/mcp/toolTypes.d.ts +39 -0
  132. package/dist/cjs/mcp/toolTypes.d.ts.map +1 -0
  133. package/dist/cjs/mcp/toolTypes.js +8 -0
  134. package/dist/cjs/mcp/toolTypes.js.map +1 -0
  135. package/dist/cjs/mcp/tools/analysis.d.ts +11 -0
  136. package/dist/cjs/mcp/tools/analysis.d.ts.map +1 -0
  137. package/dist/cjs/mcp/tools/analysis.js +933 -0
  138. package/dist/cjs/mcp/tools/analysis.js.map +1 -0
  139. package/dist/cjs/mcp/tools/codenav.d.ts +9 -0
  140. package/dist/cjs/mcp/tools/codenav.d.ts.map +1 -0
  141. package/dist/cjs/mcp/tools/codenav.js +524 -0
  142. package/dist/cjs/mcp/tools/codenav.js.map +1 -0
  143. package/dist/cjs/mcp/tools/context-tools.d.ts +20 -0
  144. package/dist/cjs/mcp/tools/context-tools.d.ts.map +1 -0
  145. package/dist/cjs/mcp/tools/context-tools.js +534 -0
  146. package/dist/cjs/mcp/tools/context-tools.js.map +1 -0
  147. package/dist/cjs/mcp/tools/depgraph.d.ts +8 -0
  148. package/dist/cjs/mcp/tools/depgraph.d.ts.map +1 -0
  149. package/dist/cjs/mcp/tools/depgraph.js +321 -0
  150. package/dist/cjs/mcp/tools/depgraph.js.map +1 -0
  151. package/dist/cjs/mcp/tools/dev-utils.d.ts +11 -0
  152. package/dist/cjs/mcp/tools/dev-utils.d.ts.map +1 -0
  153. package/dist/cjs/mcp/tools/dev-utils.js +519 -0
  154. package/dist/cjs/mcp/tools/dev-utils.js.map +1 -0
  155. package/dist/cjs/mcp/tools/devtools.d.ts +9 -0
  156. package/dist/cjs/mcp/tools/devtools.d.ts.map +1 -0
  157. package/dist/cjs/mcp/tools/devtools.js +445 -0
  158. package/dist/cjs/mcp/tools/devtools.js.map +1 -0
  159. package/dist/cjs/mcp/tools/memory.d.ts +10 -0
  160. package/dist/cjs/mcp/tools/memory.d.ts.map +1 -0
  161. package/dist/cjs/mcp/tools/memory.js +539 -0
  162. package/dist/cjs/mcp/tools/memory.js.map +1 -0
  163. package/dist/cjs/mcp/tools/misc.d.ts +10 -0
  164. package/dist/cjs/mcp/tools/misc.d.ts.map +1 -0
  165. package/dist/cjs/mcp/tools/misc.js +423 -0
  166. package/dist/cjs/mcp/tools/misc.js.map +1 -0
  167. package/dist/cjs/mcp/tools/refactor.d.ts +8 -0
  168. package/dist/cjs/mcp/tools/refactor.d.ts.map +1 -0
  169. package/dist/cjs/mcp/tools/refactor.js +335 -0
  170. package/dist/cjs/mcp/tools/refactor.js.map +1 -0
  171. package/dist/cjs/mcp/tools/review.d.ts +10 -0
  172. package/dist/cjs/mcp/tools/review.d.ts.map +1 -0
  173. package/dist/cjs/mcp/tools/review.js +283 -0
  174. package/dist/cjs/mcp/tools/review.js.map +1 -0
  175. package/dist/cjs/mcp/tools/squeeze-cache.d.ts +14 -0
  176. package/dist/cjs/mcp/tools/squeeze-cache.d.ts.map +1 -0
  177. package/dist/cjs/mcp/tools/squeeze-cache.js +416 -0
  178. package/dist/cjs/mcp/tools/squeeze-cache.js.map +1 -0
  179. package/dist/cjs/mcp/tools/text-ops.d.ts +14 -0
  180. package/dist/cjs/mcp/tools/text-ops.d.ts.map +1 -0
  181. package/dist/cjs/mcp/tools/text-ops.js +155 -0
  182. package/dist/cjs/mcp/tools/text-ops.js.map +1 -0
  183. package/dist/cjs/mcp/tools/workspace.d.ts +10 -0
  184. package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -0
  185. package/dist/cjs/mcp/tools/workspace.js +663 -0
  186. package/dist/cjs/mcp/tools/workspace.js.map +1 -0
  187. package/dist/cjs/mcp/tools.d.ts +2 -0
  188. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  189. package/dist/cjs/mcp/tools.js +605 -6348
  190. package/dist/cjs/mcp/tools.js.map +1 -1
  191. package/dist/cjs/mcp/utils.d.ts +33 -0
  192. package/dist/cjs/mcp/utils.d.ts.map +1 -1
  193. package/dist/cjs/mcp/utils.js +96 -0
  194. package/dist/cjs/mcp/utils.js.map +1 -1
  195. package/dist/cjs/mcp/workspaceShared.d.ts +19 -0
  196. package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -0
  197. package/dist/cjs/mcp/workspaceShared.js +101 -0
  198. package/dist/cjs/mcp/workspaceShared.js.map +1 -0
  199. package/dist/cjs/subconscious/TheBrainV2.d.ts +43 -7
  200. package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
  201. package/dist/cjs/subconscious/TheBrainV2.js +86 -57
  202. package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
  203. package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts +16 -0
  204. package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts.map +1 -0
  205. package/dist/cjs/subconscious/freshness/LocalFsResolver.js +74 -0
  206. package/dist/cjs/subconscious/freshness/LocalFsResolver.js.map +1 -0
  207. package/dist/cjs/subconscious/freshness/SuppliedEvidenceResolver.d.ts +23 -0
  208. package/dist/cjs/subconscious/freshness/SuppliedEvidenceResolver.d.ts.map +1 -0
  209. package/dist/cjs/subconscious/freshness/SuppliedEvidenceResolver.js +24 -0
  210. package/dist/cjs/subconscious/freshness/SuppliedEvidenceResolver.js.map +1 -0
  211. package/dist/cjs/subconscious/freshness/index.d.ts +10 -0
  212. package/dist/cjs/subconscious/freshness/index.d.ts.map +1 -0
  213. package/dist/cjs/subconscious/freshness/index.js +26 -0
  214. package/dist/cjs/subconscious/freshness/index.js.map +1 -0
  215. package/dist/cjs/utils/ProjectIdentity.d.ts +12 -0
  216. package/dist/cjs/utils/ProjectIdentity.d.ts.map +1 -0
  217. package/dist/cjs/utils/ProjectIdentity.js +44 -0
  218. package/dist/cjs/utils/ProjectIdentity.js.map +1 -0
  219. package/dist/cjs/utils/PromptPatternCache.d.ts.map +1 -1
  220. package/dist/cjs/utils/PromptPatternCache.js +12 -2
  221. package/dist/cjs/utils/PromptPatternCache.js.map +1 -1
  222. package/dist/cjs/utils/RepeatGuard.d.ts.map +1 -1
  223. package/dist/cjs/utils/RepeatGuard.js +10 -2
  224. package/dist/cjs/utils/RepeatGuard.js.map +1 -1
  225. package/dist/cjs/utils/StateHashCache.d.ts +5 -0
  226. package/dist/cjs/utils/StateHashCache.d.ts.map +1 -1
  227. package/dist/cjs/utils/StateHashCache.js +40 -16
  228. package/dist/cjs/utils/StateHashCache.js.map +1 -1
  229. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  230. package/dist/esm/cli/lemma-proxy.js +19 -11
  231. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  232. package/dist/esm/cloud/TenantCache.d.ts.map +1 -1
  233. package/dist/esm/cloud/TenantCache.js +0 -4
  234. package/dist/esm/cloud/TenantCache.js.map +1 -1
  235. package/dist/esm/cloud/identity/ApiKey.d.ts +32 -0
  236. package/dist/esm/cloud/identity/ApiKey.d.ts.map +1 -0
  237. package/dist/esm/cloud/identity/ApiKey.js +49 -0
  238. package/dist/esm/cloud/identity/ApiKey.js.map +1 -0
  239. package/dist/esm/cloud/identity/PlanPolicy.d.ts +79 -0
  240. package/dist/esm/cloud/identity/PlanPolicy.d.ts.map +1 -0
  241. package/dist/esm/cloud/identity/PlanPolicy.js +129 -0
  242. package/dist/esm/cloud/identity/PlanPolicy.js.map +1 -0
  243. package/dist/esm/cloud/identity/RateLimiter.d.ts +49 -0
  244. package/dist/esm/cloud/identity/RateLimiter.d.ts.map +1 -0
  245. package/dist/esm/cloud/identity/RateLimiter.js +69 -0
  246. package/dist/esm/cloud/identity/RateLimiter.js.map +1 -0
  247. package/dist/esm/cloud/identity/TenantResolver.d.ts +19 -0
  248. package/dist/esm/cloud/identity/TenantResolver.d.ts.map +1 -0
  249. package/dist/esm/cloud/identity/TenantResolver.js +36 -0
  250. package/dist/esm/cloud/identity/TenantResolver.js.map +1 -0
  251. package/dist/esm/cloud/identity/authenticateV2.d.ts +48 -0
  252. package/dist/esm/cloud/identity/authenticateV2.d.ts.map +1 -0
  253. package/dist/esm/cloud/identity/authenticateV2.js +62 -0
  254. package/dist/esm/cloud/identity/authenticateV2.js.map +1 -0
  255. package/dist/esm/cloud/identity/identityStore.d.ts +56 -0
  256. package/dist/esm/cloud/identity/identityStore.d.ts.map +1 -0
  257. package/dist/esm/cloud/identity/identityStore.js +94 -0
  258. package/dist/esm/cloud/identity/identityStore.js.map +1 -0
  259. package/dist/esm/cloud/identity/index.d.ts +14 -0
  260. package/dist/esm/cloud/identity/index.d.ts.map +1 -0
  261. package/dist/esm/cloud/identity/index.js +14 -0
  262. package/dist/esm/cloud/identity/index.js.map +1 -0
  263. package/dist/esm/cloud/metering/TokenCounter.d.ts +26 -0
  264. package/dist/esm/cloud/metering/TokenCounter.d.ts.map +1 -0
  265. package/dist/esm/cloud/metering/TokenCounter.js +76 -0
  266. package/dist/esm/cloud/metering/TokenCounter.js.map +1 -0
  267. package/dist/esm/cloud/metering/UsageLedger.d.ts +68 -0
  268. package/dist/esm/cloud/metering/UsageLedger.d.ts.map +1 -0
  269. package/dist/esm/cloud/metering/UsageLedger.js +98 -0
  270. package/dist/esm/cloud/metering/UsageLedger.js.map +1 -0
  271. package/dist/esm/cloud/metering/index.d.ts +12 -0
  272. package/dist/esm/cloud/metering/index.d.ts.map +1 -0
  273. package/dist/esm/cloud/metering/index.js +12 -0
  274. package/dist/esm/cloud/metering/index.js.map +1 -0
  275. package/dist/esm/cloud/scrub/StatelessScrubber.d.ts +53 -0
  276. package/dist/esm/cloud/scrub/StatelessScrubber.d.ts.map +1 -0
  277. package/dist/esm/cloud/scrub/StatelessScrubber.js +199 -0
  278. package/dist/esm/cloud/scrub/StatelessScrubber.js.map +1 -0
  279. package/dist/esm/cloud/scrub/index.d.ts +5 -0
  280. package/dist/esm/cloud/scrub/index.d.ts.map +1 -0
  281. package/dist/esm/cloud/scrub/index.js +5 -0
  282. package/dist/esm/cloud/scrub/index.js.map +1 -0
  283. package/dist/esm/cloud/store/FileBrainStore.d.ts +26 -0
  284. package/dist/esm/cloud/store/FileBrainStore.d.ts.map +1 -0
  285. package/dist/esm/cloud/store/FileBrainStore.js +212 -0
  286. package/dist/esm/cloud/store/FileBrainStore.js.map +1 -0
  287. package/dist/esm/cloud/store/PostgresBrainStore.d.ts +50 -0
  288. package/dist/esm/cloud/store/PostgresBrainStore.d.ts.map +1 -0
  289. package/dist/esm/cloud/store/PostgresBrainStore.js +176 -0
  290. package/dist/esm/cloud/store/PostgresBrainStore.js.map +1 -0
  291. package/dist/esm/cloud/store/index.d.ts +6 -0
  292. package/dist/esm/cloud/store/index.d.ts.map +1 -0
  293. package/dist/esm/cloud/store/index.js +6 -0
  294. package/dist/esm/cloud/store/index.js.map +1 -0
  295. package/dist/esm/cloud/types.d.ts +0 -4
  296. package/dist/esm/cloud/types.d.ts.map +1 -1
  297. package/dist/esm/cloud/types.js +0 -2
  298. package/dist/esm/cloud/types.js.map +1 -1
  299. package/dist/esm/cloud/v2/app.d.ts +15 -0
  300. package/dist/esm/cloud/v2/app.d.ts.map +1 -0
  301. package/dist/esm/cloud/v2/app.js +57 -0
  302. package/dist/esm/cloud/v2/app.js.map +1 -0
  303. package/dist/esm/cloud/v2/routes/index.d.ts +24 -0
  304. package/dist/esm/cloud/v2/routes/index.d.ts.map +1 -0
  305. package/dist/esm/cloud/v2/routes/index.js +32 -0
  306. package/dist/esm/cloud/v2/routes/index.js.map +1 -0
  307. package/dist/esm/cloud/v2/routes/memories.d.ts +83 -0
  308. package/dist/esm/cloud/v2/routes/memories.d.ts.map +1 -0
  309. package/dist/esm/cloud/v2/routes/memories.js +238 -0
  310. package/dist/esm/cloud/v2/routes/memories.js.map +1 -0
  311. package/dist/esm/cloud/v2/routes/recall.d.ts +33 -0
  312. package/dist/esm/cloud/v2/routes/recall.d.ts.map +1 -0
  313. package/dist/esm/cloud/v2/routes/recall.js +47 -0
  314. package/dist/esm/cloud/v2/routes/recall.js.map +1 -0
  315. package/dist/esm/cloud/v2/routes/scrub.d.ts +13 -0
  316. package/dist/esm/cloud/v2/routes/scrub.d.ts.map +1 -0
  317. package/dist/esm/cloud/v2/routes/scrub.js +79 -0
  318. package/dist/esm/cloud/v2/routes/scrub.js.map +1 -0
  319. package/dist/esm/cloud/v2/routes/usage.d.ts +18 -0
  320. package/dist/esm/cloud/v2/routes/usage.d.ts.map +1 -0
  321. package/dist/esm/cloud/v2/routes/usage.js +15 -0
  322. package/dist/esm/cloud/v2/routes/usage.js.map +1 -0
  323. package/dist/esm/cloud/v2/routes/verify.d.ts +35 -0
  324. package/dist/esm/cloud/v2/routes/verify.d.ts.map +1 -0
  325. package/dist/esm/cloud/v2/routes/verify.js +39 -0
  326. package/dist/esm/cloud/v2/routes/verify.js.map +1 -0
  327. package/dist/esm/cloud/v2/server.d.ts +27 -0
  328. package/dist/esm/cloud/v2/server.d.ts.map +1 -0
  329. package/dist/esm/cloud/v2/server.js +44 -0
  330. package/dist/esm/cloud/v2/server.js.map +1 -0
  331. package/dist/esm/contracts/api-v2.types.d.ts +103 -0
  332. package/dist/esm/contracts/api-v2.types.d.ts.map +1 -0
  333. package/dist/esm/contracts/api-v2.types.js +2 -0
  334. package/dist/esm/contracts/api-v2.types.js.map +1 -0
  335. package/dist/esm/contracts/errors.d.ts +40 -0
  336. package/dist/esm/contracts/errors.d.ts.map +1 -0
  337. package/dist/esm/contracts/errors.js +45 -0
  338. package/dist/esm/contracts/errors.js.map +1 -0
  339. package/dist/esm/contracts/evidence.d.ts +49 -0
  340. package/dist/esm/contracts/evidence.d.ts.map +1 -0
  341. package/dist/esm/contracts/evidence.js +11 -0
  342. package/dist/esm/contracts/evidence.js.map +1 -0
  343. package/dist/esm/contracts/index.d.ts +10 -0
  344. package/dist/esm/contracts/index.d.ts.map +1 -0
  345. package/dist/esm/contracts/index.js +10 -0
  346. package/dist/esm/contracts/index.js.map +1 -0
  347. package/dist/esm/contracts/store.d.ts +30 -0
  348. package/dist/esm/contracts/store.d.ts.map +1 -0
  349. package/dist/esm/contracts/store.js +2 -0
  350. package/dist/esm/contracts/store.js.map +1 -0
  351. package/dist/esm/mcp/cognitiveMap.d.ts +27 -0
  352. package/dist/esm/mcp/cognitiveMap.d.ts.map +1 -0
  353. package/dist/esm/mcp/cognitiveMap.js +40 -0
  354. package/dist/esm/mcp/cognitiveMap.js.map +1 -0
  355. package/dist/esm/mcp/tool-profiles.d.ts.map +1 -1
  356. package/dist/esm/mcp/tool-profiles.js +46 -1
  357. package/dist/esm/mcp/tool-profiles.js.map +1 -1
  358. package/dist/esm/mcp/toolTypes.d.ts +39 -0
  359. package/dist/esm/mcp/toolTypes.d.ts.map +1 -0
  360. package/dist/esm/mcp/toolTypes.js +7 -0
  361. package/dist/esm/mcp/toolTypes.js.map +1 -0
  362. package/dist/esm/mcp/tools/analysis.d.ts +11 -0
  363. package/dist/esm/mcp/tools/analysis.d.ts.map +1 -0
  364. package/dist/esm/mcp/tools/analysis.js +894 -0
  365. package/dist/esm/mcp/tools/analysis.js.map +1 -0
  366. package/dist/esm/mcp/tools/codenav.d.ts +9 -0
  367. package/dist/esm/mcp/tools/codenav.d.ts.map +1 -0
  368. package/dist/esm/mcp/tools/codenav.js +485 -0
  369. package/dist/esm/mcp/tools/codenav.js.map +1 -0
  370. package/dist/esm/mcp/tools/context-tools.d.ts +20 -0
  371. package/dist/esm/mcp/tools/context-tools.d.ts.map +1 -0
  372. package/dist/esm/mcp/tools/context-tools.js +494 -0
  373. package/dist/esm/mcp/tools/context-tools.js.map +1 -0
  374. package/dist/esm/mcp/tools/depgraph.d.ts +8 -0
  375. package/dist/esm/mcp/tools/depgraph.d.ts.map +1 -0
  376. package/dist/esm/mcp/tools/depgraph.js +315 -0
  377. package/dist/esm/mcp/tools/depgraph.js.map +1 -0
  378. package/dist/esm/mcp/tools/dev-utils.d.ts +11 -0
  379. package/dist/esm/mcp/tools/dev-utils.d.ts.map +1 -0
  380. package/dist/esm/mcp/tools/dev-utils.js +516 -0
  381. package/dist/esm/mcp/tools/dev-utils.js.map +1 -0
  382. package/dist/esm/mcp/tools/devtools.d.ts +9 -0
  383. package/dist/esm/mcp/tools/devtools.d.ts.map +1 -0
  384. package/dist/esm/mcp/tools/devtools.js +406 -0
  385. package/dist/esm/mcp/tools/devtools.js.map +1 -0
  386. package/dist/esm/mcp/tools/memory.d.ts +10 -0
  387. package/dist/esm/mcp/tools/memory.d.ts.map +1 -0
  388. package/dist/esm/mcp/tools/memory.js +533 -0
  389. package/dist/esm/mcp/tools/memory.js.map +1 -0
  390. package/dist/esm/mcp/tools/misc.d.ts +10 -0
  391. package/dist/esm/mcp/tools/misc.d.ts.map +1 -0
  392. package/dist/esm/mcp/tools/misc.js +417 -0
  393. package/dist/esm/mcp/tools/misc.js.map +1 -0
  394. package/dist/esm/mcp/tools/refactor.d.ts +8 -0
  395. package/dist/esm/mcp/tools/refactor.d.ts.map +1 -0
  396. package/dist/esm/mcp/tools/refactor.js +296 -0
  397. package/dist/esm/mcp/tools/refactor.js.map +1 -0
  398. package/dist/esm/mcp/tools/review.d.ts +10 -0
  399. package/dist/esm/mcp/tools/review.d.ts.map +1 -0
  400. package/dist/esm/mcp/tools/review.js +277 -0
  401. package/dist/esm/mcp/tools/review.js.map +1 -0
  402. package/dist/esm/mcp/tools/squeeze-cache.d.ts +14 -0
  403. package/dist/esm/mcp/tools/squeeze-cache.d.ts.map +1 -0
  404. package/dist/esm/mcp/tools/squeeze-cache.js +380 -0
  405. package/dist/esm/mcp/tools/squeeze-cache.js.map +1 -0
  406. package/dist/esm/mcp/tools/text-ops.d.ts +14 -0
  407. package/dist/esm/mcp/tools/text-ops.d.ts.map +1 -0
  408. package/dist/esm/mcp/tools/text-ops.js +152 -0
  409. package/dist/esm/mcp/tools/text-ops.js.map +1 -0
  410. package/dist/esm/mcp/tools/workspace.d.ts +10 -0
  411. package/dist/esm/mcp/tools/workspace.d.ts.map +1 -0
  412. package/dist/esm/mcp/tools/workspace.js +657 -0
  413. package/dist/esm/mcp/tools/workspace.js.map +1 -0
  414. package/dist/esm/mcp/tools.d.ts +2 -0
  415. package/dist/esm/mcp/tools.d.ts.map +1 -1
  416. package/dist/esm/mcp/tools.js +608 -6352
  417. package/dist/esm/mcp/tools.js.map +1 -1
  418. package/dist/esm/mcp/utils.d.ts +33 -0
  419. package/dist/esm/mcp/utils.d.ts.map +1 -1
  420. package/dist/esm/mcp/utils.js +92 -0
  421. package/dist/esm/mcp/utils.js.map +1 -1
  422. package/dist/esm/mcp/workspaceShared.d.ts +19 -0
  423. package/dist/esm/mcp/workspaceShared.d.ts.map +1 -0
  424. package/dist/esm/mcp/workspaceShared.js +93 -0
  425. package/dist/esm/mcp/workspaceShared.js.map +1 -0
  426. package/dist/esm/subconscious/TheBrainV2.d.ts +43 -7
  427. package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
  428. package/dist/esm/subconscious/TheBrainV2.js +86 -57
  429. package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
  430. package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts +16 -0
  431. package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts.map +1 -0
  432. package/dist/esm/subconscious/freshness/LocalFsResolver.js +67 -0
  433. package/dist/esm/subconscious/freshness/LocalFsResolver.js.map +1 -0
  434. package/dist/esm/subconscious/freshness/SuppliedEvidenceResolver.d.ts +23 -0
  435. package/dist/esm/subconscious/freshness/SuppliedEvidenceResolver.d.ts.map +1 -0
  436. package/dist/esm/subconscious/freshness/SuppliedEvidenceResolver.js +20 -0
  437. package/dist/esm/subconscious/freshness/SuppliedEvidenceResolver.js.map +1 -0
  438. package/dist/esm/subconscious/freshness/index.d.ts +10 -0
  439. package/dist/esm/subconscious/freshness/index.d.ts.map +1 -0
  440. package/dist/esm/subconscious/freshness/index.js +10 -0
  441. package/dist/esm/subconscious/freshness/index.js.map +1 -0
  442. package/dist/esm/utils/ProjectIdentity.d.ts +12 -0
  443. package/dist/esm/utils/ProjectIdentity.d.ts.map +1 -0
  444. package/dist/esm/utils/ProjectIdentity.js +37 -0
  445. package/dist/esm/utils/ProjectIdentity.js.map +1 -0
  446. package/dist/esm/utils/PromptPatternCache.d.ts.map +1 -1
  447. package/dist/esm/utils/PromptPatternCache.js +12 -2
  448. package/dist/esm/utils/PromptPatternCache.js.map +1 -1
  449. package/dist/esm/utils/RepeatGuard.d.ts.map +1 -1
  450. package/dist/esm/utils/RepeatGuard.js +10 -2
  451. package/dist/esm/utils/RepeatGuard.js.map +1 -1
  452. package/dist/esm/utils/StateHashCache.d.ts +5 -0
  453. package/dist/esm/utils/StateHashCache.d.ts.map +1 -1
  454. package/dist/esm/utils/StateHashCache.js +40 -16
  455. package/dist/esm/utils/StateHashCache.js.map +1 -1
  456. package/package.json +1 -1
  457. package/sdks/crewai/README.md +25 -0
  458. package/sdks/crewai/dist/index.d.ts +0 -130
  459. package/sdks/crewai/dist/index.js +0 -308
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Context-aggregation and validation tools: get_project_history, get_ast_hologram,
3
+ * validate_patch_sandbox, query_hybrid_consensus, get_telepathic_hints. Split out of
4
+ * ../tools.ts (see that file's history for why) — pure relocation, no behavior change.
5
+ *
6
+ * extractSymbolsWithTsCompiler is exported because tools.ts's setupToolsHandlers still
7
+ * needs it to call registerSymbolExtractor once at startup.
8
+ */
9
+ import type { ToolDefinition, ToolHandler } from "../toolTypes.js";
10
+ export declare const CONTEXT_TOOLS_TOOL_DEFINITIONS: ToolDefinition[];
11
+ interface AstSymbol {
12
+ kind: string;
13
+ name: string;
14
+ file: string;
15
+ line: number;
16
+ }
17
+ export declare function extractSymbolsWithTsCompiler(filePath: string, relPath: string, parseErrors?: string[]): AstSymbol[];
18
+ export declare const CONTEXT_TOOLS_TOOL_HANDLERS: Record<string, ToolHandler>;
19
+ export {};
20
+ //# sourceMappingURL=context-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/context-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhE,eAAO,MAAM,8BAA8B,EAAE,cAAc,EAqE1D,CAAC;AAsEF,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,SAAS,EAAE,CAyFb;AAkTD,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAMnE,CAAC"}
@@ -0,0 +1,494 @@
1
+ /**
2
+ * Context-aggregation and validation tools: get_project_history, get_ast_hologram,
3
+ * validate_patch_sandbox, query_hybrid_consensus, get_telepathic_hints. Split out of
4
+ * ../tools.ts (see that file's history for why) — pure relocation, no behavior change.
5
+ *
6
+ * extractSymbolsWithTsCompiler is exported because tools.ts's setupToolsHandlers still
7
+ * needs it to call registerSymbolExtractor once at startup.
8
+ */
9
+ import fs from "fs";
10
+ import path from "path";
11
+ import os from "os";
12
+ import { execFileSync, execSync } from "child_process";
13
+ import * as ts from "typescript";
14
+ import { getBrain, deriveProjectId } from "../../subconscious/TheBrainV2.js";
15
+ import { loadRecentCheckpoints } from "../../utils/ConversationCheckpoint.js";
16
+ import { getOrExtractSymbols } from "../../utils/AstSymbolCache.js";
17
+ import { reportSavings } from "../../utils/reportSavings.js";
18
+ import { safeResolvePath, logError, logWarn } from "../utils.js";
19
+ export const CONTEXT_TOOLS_TOOL_DEFINITIONS = [
20
+ {
21
+ name: "get_project_history",
22
+ annotations: { readOnlyHint: true, openWorldHint: false },
23
+ description: "Answers 'what have we done in this project': merges recent git commits, session checkpoints, and The Brain's memories (decisions, fixes, prior PR reviews) for the current project into one narrative. Use this instead of piecing the same picture together from search_memory + git log + reading checkpoint files separately.",
24
+ inputSchema: {
25
+ type: "object",
26
+ properties: {
27
+ limit: { type: "number", description: "Max items per section (commits, checkpoints, Brain memories)", default: 10 },
28
+ },
29
+ },
30
+ },
31
+ {
32
+ name: "get_ast_hologram",
33
+ annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: false },
34
+ description: "Generate a dense, token-efficient Holographic AST Map of the workspace using the TypeScript compiler. Returns structured JSON of all exported symbols with file paths and line numbers.",
35
+ inputSchema: {
36
+ type: "object",
37
+ properties: {
38
+ dirPath: { type: "string", description: "Directory to scan relative to workspace root", default: "" },
39
+ extensions: {
40
+ type: "array",
41
+ items: { type: "string" },
42
+ description: "File extensions to scan",
43
+ default: ["ts", "tsx", "js", "jsx"],
44
+ },
45
+ },
46
+ },
47
+ },
48
+ {
49
+ name: "validate_patch_sandbox",
50
+ annotations: { readOnlyHint: true, openWorldHint: false },
51
+ description: "Validate proposed code in isolated sandbox via tsc + syntax check before applying.",
52
+ inputSchema: {
53
+ type: "object",
54
+ properties: {
55
+ filePath: { type: "string", description: "Target file path relative to workspace root" },
56
+ patchedContent: { type: "string", description: "The complete proposed file content after patch" },
57
+ },
58
+ required: ["filePath", "patchedContent"],
59
+ },
60
+ },
61
+ {
62
+ name: "query_hybrid_consensus",
63
+ annotations: { readOnlyHint: true, openWorldHint: false },
64
+ description: "Search The Brain before reasoning. Brain HIT returns cached answer instantly. Brain MISS proceeds to cloud.",
65
+ inputSchema: {
66
+ type: "object",
67
+ properties: {
68
+ query: { type: "string", description: "The technical question or task description" },
69
+ context: { type: "string", description: "Optional extra context" },
70
+ threshold: { type: "number", description: "Similarity threshold (0.0-1.0, default: 0.80)", default: 0.80 },
71
+ },
72
+ required: ["query"],
73
+ },
74
+ },
75
+ {
76
+ name: "get_telepathic_hints",
77
+ annotations: { readOnlyHint: true, openWorldHint: false },
78
+ description: "Surface relevant past solutions from The Brain based on the active file path.",
79
+ inputSchema: {
80
+ type: "object",
81
+ properties: {
82
+ activeFile: { type: "string", description: "Path of the file being edited" },
83
+ limit: { type: "number", description: "Maximum hints (default: 5)", default: 5 },
84
+ },
85
+ required: ["activeFile"],
86
+ },
87
+ },
88
+ ];
89
+ // ── Project History (aggregate: git log + checkpoints + Brain) ─────
90
+ /**
91
+ * "What have we done in this project" today means piecing together search_memory, git log,
92
+ * and manually reading .lemma/session/ checkpoint files by hand — three separate calls whose
93
+ * results the model has to merge itself. This does that merge in one call.
94
+ */
95
+ async function handleGetProjectHistory(args) {
96
+ const cwd = process.cwd();
97
+ const limit = typeof args?.limit === "number" ? args.limit : 10;
98
+ try {
99
+ const projectId = deriveProjectId(cwd);
100
+ const brainEntries = getBrain()
101
+ .getEntriesForProject(projectId)
102
+ .sort((a, b) => (b.hits - a.hits) || (new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime()))
103
+ .slice(0, limit);
104
+ const checkpoints = loadRecentCheckpoints(cwd, Math.min(limit, 5));
105
+ let recentCommits = [];
106
+ try {
107
+ const log = execFileSync("git", ["-C", cwd, "log", `-${limit}`, "--pretty=format:%h %s (%ar)"], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] });
108
+ recentCommits = log.split("\n").filter(Boolean);
109
+ }
110
+ catch {
111
+ // Not a git repo, or no commits yet — sections below just won't include this one.
112
+ }
113
+ const parts = [`# Project history — ${path.basename(cwd)}`];
114
+ if (recentCommits.length > 0) {
115
+ parts.push(`## Recent commits\n${recentCommits.map((c) => `- ${c}`).join("\n")}`);
116
+ }
117
+ if (checkpoints.length > 0) {
118
+ const checkpointLines = checkpoints.map((cp) => {
119
+ const date = new Date(cp.timestamp).toISOString().replace("T", " ").slice(0, 16);
120
+ return `- **${date}** — ${cp.summary.replace(/\n+/g, " ")}`;
121
+ });
122
+ parts.push(`## Session checkpoints\n${checkpointLines.join("\n")}`);
123
+ }
124
+ if (brainEntries.length > 0) {
125
+ const brainLines = brainEntries.map((e) => {
126
+ const tag = e.outcome === "failed" ? " ⚠️ FAILED ATTEMPT" : "";
127
+ const snippet = e.response.length > 300 ? `${e.response.substring(0, 300)}...` : e.response;
128
+ return `- **${e.query}**${tag} _(${e.provider}, ${e.hits} hit(s))_\n ${snippet}`;
129
+ });
130
+ parts.push(`## Brain memories (decisions, fixes, prior reviews)\n${brainLines.join("\n")}`);
131
+ }
132
+ if (parts.length === 1) {
133
+ parts.push("Nothing recorded yet — no git history, checkpoints, or Brain memories found for this project.");
134
+ }
135
+ return { content: [{ type: "text", text: parts.join("\n\n") }] };
136
+ }
137
+ catch (e) {
138
+ logError("get_project_history", e);
139
+ return { content: [{ type: "text", text: `get_project_history failed: ${e.message}` }] };
140
+ }
141
+ }
142
+ export function extractSymbolsWithTsCompiler(filePath, relPath, parseErrors) {
143
+ try {
144
+ const src = fs.readFileSync(filePath, "utf8");
145
+ const sourceFile = ts.createSourceFile(filePath, src, ts.ScriptTarget.Latest, true);
146
+ const symbols = [];
147
+ function visit(node) {
148
+ const mods = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
149
+ const isExport = mods?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword);
150
+ // node.parent is undefined on the SourceFile root itself, and ts.isSourceFile()
151
+ // dereferences .kind without a guard — calling it unguarded threw on the very
152
+ // first visit(), so the catch below swallowed it and every file returned [].
153
+ if (isExport || (node.parent && ts.isSourceFile(node.parent))) {
154
+ if (ts.isFunctionDeclaration(node) && node.name) {
155
+ symbols.push({
156
+ kind: "function",
157
+ name: node.name.text,
158
+ file: relPath,
159
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1,
160
+ });
161
+ }
162
+ else if ((ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) &&
163
+ node.name) {
164
+ symbols.push({
165
+ kind: ts.isClassDeclaration(node) ? "class" : "interface",
166
+ name: node.name.text,
167
+ file: relPath,
168
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1,
169
+ });
170
+ }
171
+ else if (ts.isTypeAliasDeclaration(node) && node.name) {
172
+ symbols.push({
173
+ kind: "type",
174
+ name: node.name.text,
175
+ file: relPath,
176
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1,
177
+ });
178
+ }
179
+ else if (ts.isEnumDeclaration(node) && node.name) {
180
+ symbols.push({
181
+ kind: "enum",
182
+ name: node.name.text,
183
+ file: relPath,
184
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1,
185
+ });
186
+ }
187
+ else if (ts.isVariableStatement(node) &&
188
+ isExport &&
189
+ node.declarationList.declarations.length > 0) {
190
+ for (const decl of node.declarationList.declarations) {
191
+ if (ts.isIdentifier(decl.name)) {
192
+ symbols.push({
193
+ kind: "const",
194
+ name: decl.name.text,
195
+ file: relPath,
196
+ line: sourceFile.getLineAndCharacterOfPosition(decl.getStart()).line + 1,
197
+ });
198
+ }
199
+ }
200
+ }
201
+ }
202
+ // Handle `export { X, Y }` and `export { X as Y }`
203
+ if (ts.isExportDeclaration(node)) {
204
+ if (node.exportClause && ts.isNamedExports(node.exportClause)) {
205
+ for (const spec of node.exportClause.elements) {
206
+ symbols.push({
207
+ kind: "export",
208
+ name: spec.name.text,
209
+ file: relPath,
210
+ line: sourceFile.getLineAndCharacterOfPosition(spec.getStart()).line + 1,
211
+ });
212
+ }
213
+ }
214
+ }
215
+ ts.forEachChild(node, visit);
216
+ }
217
+ visit(sourceFile);
218
+ return symbols;
219
+ }
220
+ catch (err) {
221
+ logWarn("get_ast_hologram", `Could not parse ${relPath}: ${err}`);
222
+ parseErrors?.push(`${relPath}: ${err}`);
223
+ return [];
224
+ }
225
+ }
226
+ function walkDirForHologram(dir, rel, extensions, stats) {
227
+ let allSymbols = [];
228
+ try {
229
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
230
+ for (const entry of entries) {
231
+ if (["node_modules", ".git", "dist", "chroma_data", ".lemma"].includes(entry.name))
232
+ continue;
233
+ const fullPath = path.join(dir, entry.name);
234
+ const relPath = rel ? path.join(rel, entry.name) : entry.name;
235
+ if (entry.isDirectory()) {
236
+ allSymbols = allSymbols.concat(walkDirForHologram(fullPath, relPath, extensions, stats));
237
+ }
238
+ else {
239
+ const ext = entry.name.split(".").pop() || "";
240
+ if (extensions.includes(ext)) {
241
+ stats.filesScanned++;
242
+ allSymbols = allSymbols.concat(getOrExtractSymbols(fullPath, relPath, extractSymbolsWithTsCompiler, stats.parseErrors));
243
+ }
244
+ }
245
+ }
246
+ }
247
+ catch (err) {
248
+ logWarn("get_ast_hologram", `Error walking dir ${dir}: ${err}`);
249
+ stats.parseErrors.push(`walk ${rel || "."}: ${err}`);
250
+ }
251
+ return allSymbols;
252
+ }
253
+ async function handleGetAstHologram(args) {
254
+ const dirPath = args?.dirPath || "";
255
+ const extensions = args?.extensions || ["ts", "tsx", "js", "jsx"];
256
+ const workspaceRoot = process.cwd();
257
+ const { resolved } = safeResolvePath(workspaceRoot, dirPath);
258
+ const stats = { filesScanned: 0, parseErrors: [] };
259
+ const symbols = walkDirForHologram(resolved, dirPath, extensions, stats);
260
+ const byFile = {};
261
+ symbols.forEach((s) => {
262
+ if (!byFile[s.file])
263
+ byFile[s.file] = [];
264
+ byFile[s.file].push({ kind: s.kind, name: s.name, line: s.line });
265
+ });
266
+ // An empty map is reported as a failure, not as an answer: a silent "0 symbols" is
267
+ // indistinguishable from a working scan of an empty dir, which is how a parse bug
268
+ // stayed invisible here before. Say when nothing could be read.
269
+ const warning = stats.filesScanned === 0
270
+ ? `No files matching [${extensions.join(", ")}] were found under "${dirPath || "."}" — check the path and extensions.`
271
+ : symbols.length === 0
272
+ ? `Scanned ${stats.filesScanned} file(s) but extracted 0 symbols — this is very likely an extraction failure, not an empty codebase. Do not treat this as "the directory has no exports".`
273
+ : undefined;
274
+ const hologram = {
275
+ workspace: path.basename(workspaceRoot),
276
+ scannedDir: dirPath || ".",
277
+ totalSymbols: symbols.length,
278
+ filesScanned: stats.filesScanned,
279
+ totalFiles: Object.keys(byFile).length,
280
+ ...(warning ? { warning } : {}),
281
+ ...(stats.parseErrors.length > 0
282
+ ? { parseErrors: stats.parseErrors.slice(0, 10), parseErrorCount: stats.parseErrors.length }
283
+ : {}),
284
+ map: byFile,
285
+ };
286
+ return { content: [{ type: "text", text: JSON.stringify(hologram, null, 2) }] };
287
+ }
288
+ // ── Validate Patch Sandbox ──────────────────────────────────────────
289
+ async function handleValidatePatchSandbox(args) {
290
+ const filePath = args?.filePath;
291
+ const patchedContent = args?.patchedContent;
292
+ if (!filePath || patchedContent === undefined) {
293
+ throw new Error("filePath and patchedContent are required");
294
+ }
295
+ const workspaceRoot = process.cwd();
296
+ try {
297
+ safeResolvePath(workspaceRoot, filePath);
298
+ }
299
+ catch (err) {
300
+ return { content: [{ type: "text", text: `Access denied: ${err.message}` }] };
301
+ }
302
+ const sandboxDir = path.join(os.tmpdir(), `lemma-sandbox-${Date.now()}`);
303
+ const sandboxFile = path.join(sandboxDir, path.basename(filePath));
304
+ try {
305
+ fs.mkdirSync(sandboxDir, { recursive: true });
306
+ fs.writeFileSync(sandboxFile, patchedContent, "utf8");
307
+ // Step 1: Try tsc --noEmit validation on the sandbox file only
308
+ const tsconfigPath = path.join(workspaceRoot, "tsconfig.json");
309
+ let tscResult = {
310
+ success: true,
311
+ output: "No TypeScript config found -- skipping tsc validation.",
312
+ };
313
+ if (fs.existsSync(tsconfigPath) && filePath.match(/\.tsx?$/)) {
314
+ try {
315
+ // Create a minimal tsconfig in the sandbox that includes only the patched file
316
+ const sandboxTsconfig = {
317
+ compilerOptions: {
318
+ target: "ESNext",
319
+ module: "ESNext",
320
+ moduleResolution: "node",
321
+ strict: true,
322
+ noEmit: true,
323
+ skipLibCheck: true,
324
+ esModuleInterop: true,
325
+ allowJs: true,
326
+ jsx: "react-jsx",
327
+ },
328
+ include: [path.basename(filePath)],
329
+ };
330
+ const sandboxTsconfigPath = path.join(sandboxDir, "tsconfig.json");
331
+ fs.writeFileSync(sandboxTsconfigPath, JSON.stringify(sandboxTsconfig, null, 2));
332
+ const tscOut = execSync(`npx tsc --noEmit --project "${sandboxTsconfigPath}" 2>&1 | head -40 || true`, { timeout: 20000, encoding: "utf8", cwd: sandboxDir });
333
+ const relevantErrors = tscOut
334
+ .split("\n")
335
+ .filter((l) => l.includes("error TS"))
336
+ .filter(Boolean);
337
+ tscResult = {
338
+ success: relevantErrors.length === 0,
339
+ output: relevantErrors.length > 0
340
+ ? relevantErrors.join("\n")
341
+ : "TypeScript check passed with no errors in target file.",
342
+ };
343
+ }
344
+ catch (e) {
345
+ tscResult = { success: false, output: e.stdout || e.message };
346
+ }
347
+ }
348
+ // Step 2: Quick bracket/brace balance check
349
+ const opens = (patchedContent.match(/[{[(]/g) || []).length;
350
+ const closes = (patchedContent.match(/[}\])]/g) || []).length;
351
+ const balanced = Math.abs(opens - closes) <= 2;
352
+ fs.rmSync(sandboxDir, { recursive: true, force: true });
353
+ const verdict = tscResult.success && balanced;
354
+ return {
355
+ content: [
356
+ {
357
+ type: "text",
358
+ text: JSON.stringify({
359
+ verdict: verdict ? "SAFE TO APPLY" : "DO NOT APPLY -- Issues Found",
360
+ syntaxBalanced: balanced ? "OK" : "Unbalanced brackets/braces detected",
361
+ tscCheck: tscResult.output,
362
+ recommendation: verdict
363
+ ? "Patch looks valid. You can safely call apply_workspace_patch to apply it."
364
+ : "Fix the reported issues before applying the patch to avoid breaking the codebase.",
365
+ }, null, 2),
366
+ },
367
+ ],
368
+ };
369
+ }
370
+ catch (err) {
371
+ try {
372
+ fs.rmSync(sandboxDir, { recursive: true, force: true });
373
+ }
374
+ catch { }
375
+ return { content: [{ type: "text", text: `Sandbox validation error: ${err.message}` }] };
376
+ }
377
+ }
378
+ // ── Hybrid Consensus ────────────────────────────────────────────────
379
+ async function handleQueryHybridConsensus(args) {
380
+ const query = args?.query;
381
+ const context = args?.context || "";
382
+ const threshold = typeof args?.threshold === "number" ? args.threshold : 0.8;
383
+ if (!query)
384
+ throw new Error("query is required");
385
+ const fullQuery = context ? `${query}\n\nContext: ${context}` : query;
386
+ try {
387
+ const brain = getBrain();
388
+ const results = brain.search(fullQuery, 3, 0, { projectId: deriveProjectId() });
389
+ const topHit = results[0];
390
+ if (topHit && topHit.similarity >= threshold) {
391
+ const savedTokens = Math.floor((topHit.response?.length || 500) / 4);
392
+ reportSavings({
393
+ source: "cache",
394
+ tokens: savedTokens,
395
+ toolName: "query_hybrid_consensus",
396
+ query: query.substring(0, 100),
397
+ });
398
+ const responseText = topHit.response;
399
+ return {
400
+ content: [
401
+ {
402
+ type: "text",
403
+ text: `Brain Cache HIT (similarity: ${(topHit.similarity * 100).toFixed(1)}% -- above ${(threshold * 100).toFixed(0)}% threshold)\n\nNo cloud LLM call needed. ~${savedTokens} tokens saved.\n\n---\n\n${responseText}`,
404
+ },
405
+ ],
406
+ };
407
+ }
408
+ const missMsg = results.length > 0
409
+ ? `Brain Miss -- Best match was only ${(topHit.similarity * 100).toFixed(1)}% (below ${(threshold * 100).toFixed(0)}% threshold).`
410
+ : `Brain Miss -- No relevant memories found for this query.`;
411
+ return {
412
+ content: [
413
+ {
414
+ type: "text",
415
+ text: `${missMsg}\n\nProceed with your cloud LLM call. Once you have the answer, call store_memory with:\n- query: "${query.substring(0, 100)}"\n- response: [your full answer]\n\nThis will cache it for future sessions and save tokens next time.`,
416
+ },
417
+ ],
418
+ };
419
+ }
420
+ catch (e) {
421
+ logError("query_hybrid_consensus", e);
422
+ return {
423
+ content: [
424
+ { type: "text", text: `Hybrid Consensus failed: ${e.message}` },
425
+ ],
426
+ };
427
+ }
428
+ }
429
+ // ── Telepathic Hints ────────────────────────────────────────────────
430
+ async function handleGetTelepathicHints(args) {
431
+ const activeFile = args?.activeFile;
432
+ const limit = typeof args?.limit === "number" ? args.limit : 5;
433
+ if (!activeFile)
434
+ throw new Error("activeFile is required");
435
+ const basename = path.basename(activeFile, path.extname(activeFile));
436
+ const dirContext = path
437
+ .dirname(activeFile)
438
+ .split(path.sep)
439
+ .filter(Boolean)
440
+ .slice(-2)
441
+ .join(" ");
442
+ const ext = path.extname(activeFile).replace(".", "");
443
+ const telepathicQuery = `${basename} ${dirContext} ${ext} patterns solutions architecture`;
444
+ try {
445
+ const brain = getBrain();
446
+ const results = brain.search(telepathicQuery, limit, 0, { projectId: deriveProjectId() });
447
+ if (results.length === 0) {
448
+ return {
449
+ content: [
450
+ {
451
+ type: "text",
452
+ text: `Telepathic Hints for \`${activeFile}\`\n\nNo relevant memories found yet. As you use Lemma and store solutions, they will appear here automatically.`,
453
+ },
454
+ ],
455
+ };
456
+ }
457
+ let hintsText = `Telepathic Hints for \`${activeFile}\`\n*(${results.length} relevant memories surfaced from The Brain)*\n\n`;
458
+ results.forEach((r, i) => {
459
+ const similarity = (r.similarity * 100).toFixed(1);
460
+ const prompt = r.query || "Unknown";
461
+ const responseContent = r.response || "";
462
+ hintsText += `### Hint ${i + 1} (${similarity}% match)${r.outcome === "failed" ? " — ⚠️ FAILED ATTEMPT, do not repeat" : ""}\n`;
463
+ hintsText += `**Memory:** ${prompt}\n\n`;
464
+ hintsText += `${responseContent.substring(0, 400)}${responseContent.length > 400 ? "..." : ""}\n\n---\n\n`;
465
+ });
466
+ const estimatedTokensSaved = results.length * 150;
467
+ reportSavings({
468
+ source: "cache",
469
+ tokens: estimatedTokensSaved,
470
+ toolName: "get_telepathic_hints",
471
+ filePath: activeFile,
472
+ });
473
+ return { content: [{ type: "text", text: hintsText }] };
474
+ }
475
+ catch (e) {
476
+ logError("get_telepathic_hints", e);
477
+ return {
478
+ content: [
479
+ {
480
+ type: "text",
481
+ text: `Telepathic Hints failed: ${e.message}`,
482
+ },
483
+ ],
484
+ };
485
+ }
486
+ }
487
+ export const CONTEXT_TOOLS_TOOL_HANDLERS = {
488
+ get_project_history: handleGetProjectHistory,
489
+ get_ast_hologram: handleGetAstHologram,
490
+ validate_patch_sandbox: handleValidatePatchSandbox,
491
+ query_hybrid_consensus: handleQueryHybridConsensus,
492
+ get_telepathic_hints: handleGetTelepathicHints,
493
+ };
494
+ //# sourceMappingURL=context-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/context-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Import-graph tools: depgraph, affected_tests. Split out of ../tools.ts (see that
3
+ * file's history for why) — pure relocation, no behavior change.
4
+ */
5
+ import type { ToolDefinition, ToolHandler } from "../toolTypes.js";
6
+ export declare const DEPGRAPH_TOOL_DEFINITIONS: ToolDefinition[];
7
+ export declare const DEPGRAPH_TOOL_HANDLERS: Record<string, ToolHandler>;
8
+ //# sourceMappingURL=depgraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depgraph.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/depgraph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhE,eAAO,MAAM,yBAAyB,EAAE,cAAc,EA4CrD,CAAC;AAsQF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAG9D,CAAC"}