@nxuss/lemma 1.18.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 (334) hide show
  1. package/dist/cjs/mcp/cognitiveMap.d.ts +27 -0
  2. package/dist/cjs/mcp/cognitiveMap.d.ts.map +1 -0
  3. package/dist/cjs/mcp/cognitiveMap.js +47 -0
  4. package/dist/cjs/mcp/cognitiveMap.js.map +1 -0
  5. package/dist/cjs/mcp/toolTypes.d.ts +39 -0
  6. package/dist/cjs/mcp/toolTypes.d.ts.map +1 -0
  7. package/dist/cjs/mcp/toolTypes.js +8 -0
  8. package/dist/cjs/mcp/toolTypes.js.map +1 -0
  9. package/dist/cjs/mcp/tools/analysis.d.ts +11 -0
  10. package/dist/cjs/mcp/tools/analysis.d.ts.map +1 -0
  11. package/dist/cjs/mcp/tools/analysis.js +933 -0
  12. package/dist/cjs/mcp/tools/analysis.js.map +1 -0
  13. package/dist/cjs/mcp/tools/codenav.d.ts +9 -0
  14. package/dist/cjs/mcp/tools/codenav.d.ts.map +1 -0
  15. package/dist/cjs/mcp/tools/codenav.js +524 -0
  16. package/dist/cjs/mcp/tools/codenav.js.map +1 -0
  17. package/dist/cjs/mcp/tools/context-tools.d.ts +20 -0
  18. package/dist/cjs/mcp/tools/context-tools.d.ts.map +1 -0
  19. package/dist/cjs/mcp/tools/context-tools.js +534 -0
  20. package/dist/cjs/mcp/tools/context-tools.js.map +1 -0
  21. package/dist/cjs/mcp/tools/depgraph.d.ts +8 -0
  22. package/dist/cjs/mcp/tools/depgraph.d.ts.map +1 -0
  23. package/dist/cjs/mcp/tools/depgraph.js +321 -0
  24. package/dist/cjs/mcp/tools/depgraph.js.map +1 -0
  25. package/dist/cjs/mcp/tools/dev-utils.d.ts +11 -0
  26. package/dist/cjs/mcp/tools/dev-utils.d.ts.map +1 -0
  27. package/dist/cjs/mcp/tools/dev-utils.js +519 -0
  28. package/dist/cjs/mcp/tools/dev-utils.js.map +1 -0
  29. package/dist/cjs/mcp/tools/devtools.d.ts +9 -0
  30. package/dist/cjs/mcp/tools/devtools.d.ts.map +1 -0
  31. package/dist/cjs/mcp/tools/devtools.js +445 -0
  32. package/dist/cjs/mcp/tools/devtools.js.map +1 -0
  33. package/dist/cjs/mcp/tools/memory.d.ts +10 -0
  34. package/dist/cjs/mcp/tools/memory.d.ts.map +1 -0
  35. package/dist/cjs/mcp/tools/memory.js +539 -0
  36. package/dist/cjs/mcp/tools/memory.js.map +1 -0
  37. package/dist/cjs/mcp/tools/misc.d.ts +10 -0
  38. package/dist/cjs/mcp/tools/misc.d.ts.map +1 -0
  39. package/dist/cjs/mcp/tools/misc.js +423 -0
  40. package/dist/cjs/mcp/tools/misc.js.map +1 -0
  41. package/dist/cjs/mcp/tools/refactor.d.ts +8 -0
  42. package/dist/cjs/mcp/tools/refactor.d.ts.map +1 -0
  43. package/dist/cjs/mcp/tools/refactor.js +335 -0
  44. package/dist/cjs/mcp/tools/refactor.js.map +1 -0
  45. package/dist/cjs/mcp/tools/review.d.ts +10 -0
  46. package/dist/cjs/mcp/tools/review.d.ts.map +1 -0
  47. package/dist/cjs/mcp/tools/review.js +283 -0
  48. package/dist/cjs/mcp/tools/review.js.map +1 -0
  49. package/dist/cjs/mcp/tools/squeeze-cache.d.ts +14 -0
  50. package/dist/cjs/mcp/tools/squeeze-cache.d.ts.map +1 -0
  51. package/dist/cjs/mcp/tools/squeeze-cache.js +416 -0
  52. package/dist/cjs/mcp/tools/squeeze-cache.js.map +1 -0
  53. package/dist/cjs/mcp/tools/text-ops.d.ts +14 -0
  54. package/dist/cjs/mcp/tools/text-ops.d.ts.map +1 -0
  55. package/dist/cjs/mcp/tools/text-ops.js +155 -0
  56. package/dist/cjs/mcp/tools/text-ops.js.map +1 -0
  57. package/dist/cjs/mcp/tools/workspace.d.ts +10 -0
  58. package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -0
  59. package/dist/cjs/mcp/tools/workspace.js +663 -0
  60. package/dist/cjs/mcp/tools/workspace.js.map +1 -0
  61. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  62. package/dist/cjs/mcp/tools.js +626 -6388
  63. package/dist/cjs/mcp/tools.js.map +1 -1
  64. package/dist/cjs/mcp/utils.d.ts +33 -0
  65. package/dist/cjs/mcp/utils.d.ts.map +1 -1
  66. package/dist/cjs/mcp/utils.js +96 -0
  67. package/dist/cjs/mcp/utils.js.map +1 -1
  68. package/dist/cjs/mcp/workspaceShared.d.ts +19 -0
  69. package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -0
  70. package/dist/cjs/mcp/workspaceShared.js +101 -0
  71. package/dist/cjs/mcp/workspaceShared.js.map +1 -0
  72. package/dist/cjs/package.json +3 -0
  73. package/dist/esm/api/dashboardRoutes.d.ts +3 -3
  74. package/dist/esm/api/dashboardRoutes.js +1 -1
  75. package/dist/esm/api/server.d.ts +4 -4
  76. package/dist/esm/api/server.js +3 -3
  77. package/dist/esm/autopilot/AutopilotWatcher.js +3 -3
  78. package/dist/esm/autopilot/Notifier.d.ts +1 -1
  79. package/dist/esm/cli/lemma-proxy.js +15 -15
  80. package/dist/esm/cli/stack.d.ts +4 -4
  81. package/dist/esm/cli/stack.js +5 -5
  82. package/dist/esm/cloud/KeyManager.d.ts +1 -1
  83. package/dist/esm/cloud/KeyManager.js +1 -1
  84. package/dist/esm/cloud/TenantCache.d.ts +1 -1
  85. package/dist/esm/cloud/identity/ApiKey.d.ts +1 -1
  86. package/dist/esm/cloud/identity/TenantResolver.d.ts +1 -1
  87. package/dist/esm/cloud/identity/TenantResolver.js +1 -1
  88. package/dist/esm/cloud/identity/authenticateV2.d.ts +3 -3
  89. package/dist/esm/cloud/identity/authenticateV2.js +3 -3
  90. package/dist/esm/cloud/identity/identityStore.d.ts +2 -2
  91. package/dist/esm/cloud/identity/index.d.ts +6 -6
  92. package/dist/esm/cloud/identity/index.js +6 -6
  93. package/dist/esm/cloud/index.d.ts +3 -3
  94. package/dist/esm/cloud/index.js +3 -3
  95. package/dist/esm/cloud/metering/UsageLedger.d.ts +1 -1
  96. package/dist/esm/cloud/metering/index.d.ts +2 -2
  97. package/dist/esm/cloud/metering/index.js +2 -2
  98. package/dist/esm/cloud/scrub/StatelessScrubber.d.ts +1 -1
  99. package/dist/esm/cloud/scrub/index.d.ts +1 -1
  100. package/dist/esm/cloud/scrub/index.js +1 -1
  101. package/dist/esm/cloud/server.d.ts +3 -3
  102. package/dist/esm/cloud/server.js +5 -5
  103. package/dist/esm/cloud/store/FileBrainStore.d.ts +1 -1
  104. package/dist/esm/cloud/store/FileBrainStore.js +1 -1
  105. package/dist/esm/cloud/store/PostgresBrainStore.d.ts +1 -1
  106. package/dist/esm/cloud/store/PostgresBrainStore.js +2 -2
  107. package/dist/esm/cloud/store/index.d.ts +2 -2
  108. package/dist/esm/cloud/store/index.js +2 -2
  109. package/dist/esm/cloud/v2/app.d.ts +1 -1
  110. package/dist/esm/cloud/v2/app.js +3 -3
  111. package/dist/esm/cloud/v2/routes/index.d.ts +5 -5
  112. package/dist/esm/cloud/v2/routes/index.js +7 -7
  113. package/dist/esm/cloud/v2/routes/memories.d.ts +4 -4
  114. package/dist/esm/cloud/v2/routes/memories.js +2 -2
  115. package/dist/esm/cloud/v2/routes/recall.d.ts +1 -1
  116. package/dist/esm/cloud/v2/routes/recall.js +1 -1
  117. package/dist/esm/cloud/v2/routes/scrub.d.ts +2 -2
  118. package/dist/esm/cloud/v2/routes/scrub.js +2 -2
  119. package/dist/esm/cloud/v2/routes/usage.d.ts +1 -1
  120. package/dist/esm/cloud/v2/routes/verify.d.ts +1 -1
  121. package/dist/esm/cloud/v2/routes/verify.js +1 -1
  122. package/dist/esm/cloud/v2/server.js +4 -4
  123. package/dist/esm/config/index.d.ts +1 -1
  124. package/dist/esm/config/index.js +1 -1
  125. package/dist/esm/consensus/index.d.ts +2 -2
  126. package/dist/esm/consensus/index.js +2 -2
  127. package/dist/esm/contracts/api-v2.types.d.ts +1 -1
  128. package/dist/esm/contracts/index.d.ts +4 -4
  129. package/dist/esm/contracts/index.js +4 -4
  130. package/dist/esm/core/AgentRegistry.d.ts +1 -1
  131. package/dist/esm/core/AgentRegistry.js +1 -1
  132. package/dist/esm/core/DashboardBroadcaster.d.ts +3 -3
  133. package/dist/esm/core/DashboardBroadcaster.js +2 -2
  134. package/dist/esm/core/DashboardWebSocketServer.d.ts +1 -1
  135. package/dist/esm/core/DashboardWebSocketServer.js +1 -1
  136. package/dist/esm/core/GhostAlchemist.js +1 -1
  137. package/dist/esm/core/GhostListener.js +2 -2
  138. package/dist/esm/core/OrchestrationEngine.d.ts +3 -3
  139. package/dist/esm/core/OrchestrationEngine.js +2 -2
  140. package/dist/esm/core/SubconsciousEngine.d.ts +1 -1
  141. package/dist/esm/core/SubconsciousEngine.js +2 -2
  142. package/dist/esm/core/WebSocketServer.d.ts +2 -2
  143. package/dist/esm/core/WebSocketServer.js +1 -1
  144. package/dist/esm/core/index.d.ts +6 -6
  145. package/dist/esm/core/index.js +6 -6
  146. package/dist/esm/core/router.d.ts +3 -3
  147. package/dist/esm/core/router.js +1 -1
  148. package/dist/esm/db/database.js +1 -1
  149. package/dist/esm/embed.d.ts +2 -2
  150. package/dist/esm/embed.js +2 -2
  151. package/dist/esm/examples/basic-usage.js +1 -1
  152. package/dist/esm/index.d.ts +14 -14
  153. package/dist/esm/index.js +14 -14
  154. package/dist/esm/infra/analyzers/DriftDetector.d.ts +1 -1
  155. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts +1 -1
  156. package/dist/esm/infra/analyzers/MonolithAnalyzer.d.ts +1 -1
  157. package/dist/esm/infra/analyzers/index.d.ts +3 -3
  158. package/dist/esm/infra/analyzers/index.js +3 -3
  159. package/dist/esm/infra/cli.js +2 -2
  160. package/dist/esm/infra/config.d.ts +1 -1
  161. package/dist/esm/infra/index.d.ts +5 -5
  162. package/dist/esm/infra/index.js +5 -5
  163. package/dist/esm/infra/mcp-tools.js +5 -5
  164. package/dist/esm/infra/providers/InfraProvider.d.ts +1 -1
  165. package/dist/esm/infra/providers/JenkinsProvider.d.ts +2 -2
  166. package/dist/esm/infra/providers/OKDProvider.d.ts +2 -2
  167. package/dist/esm/infra/providers/TerraformProvider.d.ts +2 -2
  168. package/dist/esm/infra/providers/index.d.ts +5 -5
  169. package/dist/esm/infra/providers/index.js +3 -3
  170. package/dist/esm/mcp/cognitiveMap.d.ts +27 -0
  171. package/dist/esm/mcp/cognitiveMap.d.ts.map +1 -0
  172. package/dist/esm/mcp/cognitiveMap.js +40 -0
  173. package/dist/esm/mcp/cognitiveMap.js.map +1 -0
  174. package/dist/esm/mcp/index.js +5 -5
  175. package/dist/esm/mcp/prompts.js +1 -1
  176. package/dist/esm/mcp/resources.js +2 -2
  177. package/dist/esm/mcp/tasks.js +1 -1
  178. package/dist/esm/mcp/tool-profiles.js +1 -1
  179. package/dist/esm/mcp/toolTypes.d.ts +39 -0
  180. package/dist/esm/mcp/toolTypes.d.ts.map +1 -0
  181. package/dist/esm/mcp/toolTypes.js +7 -0
  182. package/dist/esm/mcp/toolTypes.js.map +1 -0
  183. package/dist/esm/mcp/tools/analysis.d.ts +11 -0
  184. package/dist/esm/mcp/tools/analysis.d.ts.map +1 -0
  185. package/dist/esm/mcp/tools/analysis.js +894 -0
  186. package/dist/esm/mcp/tools/analysis.js.map +1 -0
  187. package/dist/esm/mcp/tools/codenav.d.ts +9 -0
  188. package/dist/esm/mcp/tools/codenav.d.ts.map +1 -0
  189. package/dist/esm/mcp/tools/codenav.js +485 -0
  190. package/dist/esm/mcp/tools/codenav.js.map +1 -0
  191. package/dist/esm/mcp/tools/context-tools.d.ts +20 -0
  192. package/dist/esm/mcp/tools/context-tools.d.ts.map +1 -0
  193. package/dist/esm/mcp/tools/context-tools.js +494 -0
  194. package/dist/esm/mcp/tools/context-tools.js.map +1 -0
  195. package/dist/esm/mcp/tools/depgraph.d.ts +8 -0
  196. package/dist/esm/mcp/tools/depgraph.d.ts.map +1 -0
  197. package/dist/esm/mcp/tools/depgraph.js +315 -0
  198. package/dist/esm/mcp/tools/depgraph.js.map +1 -0
  199. package/dist/esm/mcp/tools/dev-utils.d.ts +11 -0
  200. package/dist/esm/mcp/tools/dev-utils.d.ts.map +1 -0
  201. package/dist/esm/mcp/tools/dev-utils.js +516 -0
  202. package/dist/esm/mcp/tools/dev-utils.js.map +1 -0
  203. package/dist/esm/mcp/tools/devtools.d.ts +9 -0
  204. package/dist/esm/mcp/tools/devtools.d.ts.map +1 -0
  205. package/dist/esm/mcp/tools/devtools.js +406 -0
  206. package/dist/esm/mcp/tools/devtools.js.map +1 -0
  207. package/dist/esm/mcp/tools/memory.d.ts +10 -0
  208. package/dist/esm/mcp/tools/memory.d.ts.map +1 -0
  209. package/dist/esm/mcp/tools/memory.js +533 -0
  210. package/dist/esm/mcp/tools/memory.js.map +1 -0
  211. package/dist/esm/mcp/tools/misc.d.ts +10 -0
  212. package/dist/esm/mcp/tools/misc.d.ts.map +1 -0
  213. package/dist/esm/mcp/tools/misc.js +417 -0
  214. package/dist/esm/mcp/tools/misc.js.map +1 -0
  215. package/dist/esm/mcp/tools/refactor.d.ts +8 -0
  216. package/dist/esm/mcp/tools/refactor.d.ts.map +1 -0
  217. package/dist/esm/mcp/tools/refactor.js +296 -0
  218. package/dist/esm/mcp/tools/refactor.js.map +1 -0
  219. package/dist/esm/mcp/tools/review.d.ts +10 -0
  220. package/dist/esm/mcp/tools/review.d.ts.map +1 -0
  221. package/dist/esm/mcp/tools/review.js +277 -0
  222. package/dist/esm/mcp/tools/review.js.map +1 -0
  223. package/dist/esm/mcp/tools/squeeze-cache.d.ts +14 -0
  224. package/dist/esm/mcp/tools/squeeze-cache.d.ts.map +1 -0
  225. package/dist/esm/mcp/tools/squeeze-cache.js +380 -0
  226. package/dist/esm/mcp/tools/squeeze-cache.js.map +1 -0
  227. package/dist/esm/mcp/tools/text-ops.d.ts +14 -0
  228. package/dist/esm/mcp/tools/text-ops.d.ts.map +1 -0
  229. package/dist/esm/mcp/tools/text-ops.js +152 -0
  230. package/dist/esm/mcp/tools/text-ops.js.map +1 -0
  231. package/dist/esm/mcp/tools/workspace.d.ts +10 -0
  232. package/dist/esm/mcp/tools/workspace.d.ts.map +1 -0
  233. package/dist/esm/mcp/tools/workspace.js +657 -0
  234. package/dist/esm/mcp/tools/workspace.js.map +1 -0
  235. package/dist/esm/mcp/tools.d.ts +1 -1
  236. package/dist/esm/mcp/tools.d.ts.map +1 -1
  237. package/dist/esm/mcp/tools.js +642 -6404
  238. package/dist/esm/mcp/tools.js.map +1 -1
  239. package/dist/esm/mcp/utils.d.ts +33 -0
  240. package/dist/esm/mcp/utils.d.ts.map +1 -1
  241. package/dist/esm/mcp/utils.js +92 -0
  242. package/dist/esm/mcp/utils.js.map +1 -1
  243. package/dist/esm/mcp/workspaceShared.d.ts +19 -0
  244. package/dist/esm/mcp/workspaceShared.d.ts.map +1 -0
  245. package/dist/esm/mcp/workspaceShared.js +93 -0
  246. package/dist/esm/mcp/workspaceShared.js.map +1 -0
  247. package/dist/esm/observability/IdeContextSync.d.ts +1 -1
  248. package/dist/esm/observability/IdeContextSync.js +5 -5
  249. package/dist/esm/package.json +3 -0
  250. package/dist/esm/pr-review/PRReviewEngine.d.ts +1 -1
  251. package/dist/esm/pr-review/PRReviewEngine.js +4 -4
  252. package/dist/esm/pr-review/ReviewStore.d.ts +1 -1
  253. package/dist/esm/pr-review/adapters/AzureDevOpsAdapter.d.ts +2 -2
  254. package/dist/esm/pr-review/adapters/AzureDevOpsAdapter.js +1 -1
  255. package/dist/esm/pr-review/adapters/GitHubAdapter.d.ts +2 -2
  256. package/dist/esm/pr-review/adapters/GitHubAdapter.js +1 -1
  257. package/dist/esm/pr-review/adapters/GitLabAdapter.d.ts +2 -2
  258. package/dist/esm/pr-review/adapters/GitLabAdapter.js +1 -1
  259. package/dist/esm/pr-review/adapters/GitPlatformAdapter.d.ts +1 -1
  260. package/dist/esm/pr-review/adapters/index.d.ts +4 -4
  261. package/dist/esm/pr-review/adapters/index.js +3 -3
  262. package/dist/esm/pr-review/analyzers/QualityGrader.d.ts +1 -1
  263. package/dist/esm/pr-review/analyzers/RegressionDetector.d.ts +1 -1
  264. package/dist/esm/pr-review/analyzers/SecurityScanner.d.ts +1 -1
  265. package/dist/esm/pr-review/analyzers/StaticAnalyzer.d.ts +1 -1
  266. package/dist/esm/pr-review/analyzers/index.d.ts +8 -8
  267. package/dist/esm/pr-review/analyzers/index.js +4 -4
  268. package/dist/esm/pr-review/bridge/BrainBridge.d.ts +1 -1
  269. package/dist/esm/pr-review/bridge/BrainBridge.js +1 -1
  270. package/dist/esm/pr-review/bridge/index.d.ts +1 -1
  271. package/dist/esm/pr-review/bridge/index.js +1 -1
  272. package/dist/esm/pr-review/index.d.ts +4 -4
  273. package/dist/esm/pr-review/index.js +2 -2
  274. package/dist/esm/pr-review/reviewRunner.d.ts +2 -2
  275. package/dist/esm/pr-review/reviewRunner.js +6 -6
  276. package/dist/esm/pr-review/webhook/WebhookServer.js +1 -1
  277. package/dist/esm/pr-review/webhook/index.d.ts +1 -1
  278. package/dist/esm/pr-review/webhook/index.js +1 -1
  279. package/dist/esm/protocol/flows.d.ts +1 -1
  280. package/dist/esm/protocol/flows.js +1 -1
  281. package/dist/esm/protocol/index.d.ts +4 -4
  282. package/dist/esm/protocol/index.js +4 -4
  283. package/dist/esm/protocol/utils.d.ts +1 -1
  284. package/dist/esm/protocol/utils.js +2 -2
  285. package/dist/esm/protocol/validators.d.ts +1 -1
  286. package/dist/esm/protocol/validators.js +1 -1
  287. package/dist/esm/proxy/ContextInjector.d.ts +1 -1
  288. package/dist/esm/proxy/Gatekeeper.d.ts +1 -1
  289. package/dist/esm/security/SecurityMiddleware.d.ts +1 -1
  290. package/dist/esm/security/SecurityMiddleware.js +3 -3
  291. package/dist/esm/security/index.d.ts +4 -4
  292. package/dist/esm/security/index.js +4 -4
  293. package/dist/esm/speculative/SpeculativeCache.d.ts +2 -2
  294. package/dist/esm/speculative/SpeculativeEngine.d.ts +2 -2
  295. package/dist/esm/speculative/SpeculativeEngine.js +3 -3
  296. package/dist/esm/speculative/WorkerPool.d.ts +1 -1
  297. package/dist/esm/speculative/index.d.ts +4 -4
  298. package/dist/esm/speculative/index.js +4 -4
  299. package/dist/esm/subconscious/GitIngest.d.ts +1 -1
  300. package/dist/esm/subconscious/GitIngest.js +1 -1
  301. package/dist/esm/subconscious/SemanticCache.d.ts +2 -2
  302. package/dist/esm/subconscious/SemanticCache.js +2 -2
  303. package/dist/esm/subconscious/SubconsciousEngine.d.ts +1 -1
  304. package/dist/esm/subconscious/SubconsciousEngine.js +3 -3
  305. package/dist/esm/subconscious/TheBrainV2.d.ts +1 -1
  306. package/dist/esm/subconscious/TheBrainV2.js +2 -2
  307. package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts +1 -1
  308. package/dist/esm/subconscious/freshness/LocalFsResolver.js +1 -1
  309. package/dist/esm/subconscious/freshness/SuppliedEvidenceResolver.d.ts +1 -1
  310. package/dist/esm/subconscious/freshness/index.d.ts +2 -2
  311. package/dist/esm/subconscious/freshness/index.js +2 -2
  312. package/dist/esm/subconscious/index.d.ts +4 -4
  313. package/dist/esm/subconscious/index.js +4 -4
  314. package/dist/esm/utils/AffectedTests.js +1 -1
  315. package/dist/esm/utils/AutoContextBundle.d.ts +1 -1
  316. package/dist/esm/utils/AutoContextBundle.js +4 -4
  317. package/dist/esm/utils/BulkFileDigest.js +2 -2
  318. package/dist/esm/utils/ClipboardWatcher.js +2 -2
  319. package/dist/esm/utils/ContextCollapser.js +1 -1
  320. package/dist/esm/utils/ConversationCheckpoint.js +1 -1
  321. package/dist/esm/utils/ExecutiveReport.js +1 -1
  322. package/dist/esm/utils/OutputLedger.js +2 -2
  323. package/dist/esm/utils/ReadWorkspaceCache.js +1 -1
  324. package/dist/esm/utils/SpeculativeWarmer.d.ts +1 -1
  325. package/dist/esm/utils/SpeculativeWarmer.js +2 -2
  326. package/dist/esm/utils/StateHashCache.js +1 -1
  327. package/dist/esm/utils/StructuralSearch.d.ts +1 -1
  328. package/dist/esm/utils/SurgicalASTInsert.js +1 -1
  329. package/dist/esm/utils/SymbolSurgicalContext.js +1 -1
  330. package/dist/esm/utils/TestAutofixInterceptor.js +1 -1
  331. package/dist/esm/utils/WorkspaceSearch.js +0 -0
  332. package/dist/esm/utils/logger.js +1 -1
  333. package/dist/esm/utils/reportSavings.js +1 -1
  334. package/package.json +1 -1
@@ -0,0 +1,335 @@
1
+ "use strict";
2
+ /**
3
+ * Multi-file codemod tool: refactor (rename | move). Split out of ../tools.ts (see
4
+ * that file's history for why) — pure relocation, no behavior change.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.REFACTOR_TOOL_HANDLERS = exports.REFACTOR_TOOL_DEFINITIONS = void 0;
44
+ const fs_1 = __importDefault(require("fs"));
45
+ const path_1 = __importDefault(require("path"));
46
+ const child_process_1 = require("child_process");
47
+ const ts = __importStar(require("typescript"));
48
+ const utils_1 = require("../utils");
49
+ exports.REFACTOR_TOOL_DEFINITIONS = [
50
+ {
51
+ name: "refactor",
52
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: false },
53
+ description: "Declarative multi-file codemod engine. Rename symbols across the entire workspace or move files updating all imports. Uses TypeScript Compiler API — zero LLM calls. Supports dry-run diff preview and post-refactor tsc verification.",
54
+ inputSchema: {
55
+ type: "object",
56
+ properties: {
57
+ operation: { type: "string", enum: ["rename", "move"], description: "Refactor operation: 'rename' a symbol everywhere, or 'move' a file updating all importers" },
58
+ from: { type: "string", description: "Symbol name to rename (rename op) OR source file path relative to workspace root (move op)" },
59
+ to: { type: "string", description: "New symbol name (rename op) OR destination file path relative to workspace root (move op)" },
60
+ file: { type: "string", description: "File where the symbol is declared — required for 'rename' operation" },
61
+ dryRun: { type: "boolean", description: "Preview changes as a unified diff without applying them", default: false },
62
+ tscCheck: { type: "boolean", description: "Run tsc --noEmit after applying to guarantee zero TypeScript errors", default: false },
63
+ backup: { type: "boolean", description: "Create .bak backup of each modified file before changing", default: false },
64
+ },
65
+ required: ["operation", "from", "to"],
66
+ },
67
+ },
68
+ ];
69
+ function escapeRegexStr(s) {
70
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
71
+ }
72
+ function findSymbolRefs(workspaceRoot, symbolName) {
73
+ const results = [];
74
+ const IGNORE_RF = new Set(["node_modules", ".git", "dist", "chroma_data", ".lemma", "build", "coverage", ".next"]);
75
+ function walkRF(dir) {
76
+ let entries = [];
77
+ try {
78
+ entries = fs_1.default.readdirSync(dir, { withFileTypes: true });
79
+ }
80
+ catch {
81
+ return;
82
+ }
83
+ for (const e of entries) {
84
+ if (IGNORE_RF.has(e.name))
85
+ continue;
86
+ const abs = path_1.default.join(dir, e.name);
87
+ if (e.isDirectory()) {
88
+ walkRF(abs);
89
+ }
90
+ else if (/\.(ts|tsx|js|jsx)$/.test(e.name) && !e.name.endsWith(".d.ts")) {
91
+ const rel = path_1.default.relative(workspaceRoot, abs).replace(/\\/g, "/");
92
+ try {
93
+ const content = fs_1.default.readFileSync(abs, "utf8");
94
+ if (!content.includes(symbolName))
95
+ continue;
96
+ const sf = ts.createSourceFile(abs, content, ts.ScriptTarget.Latest, true);
97
+ const contentLines = content.split("\n");
98
+ const identifierLines = new Set();
99
+ function collectIdents(node) {
100
+ if (ts.isIdentifier(node) && node.text === symbolName) {
101
+ const { line } = sf.getLineAndCharacterOfPosition(node.getStart());
102
+ identifierLines.add(line);
103
+ }
104
+ ts.forEachChild(node, collectIdents);
105
+ }
106
+ collectIdents(sf);
107
+ const matchingLines = [...identifierLines].map(li => ({ lineIndex: li, lineContent: contentLines[li] ?? "" }));
108
+ if (matchingLines.length > 0)
109
+ results.push({ abs, rel, lines: matchingLines });
110
+ }
111
+ catch { /* skip */ }
112
+ }
113
+ }
114
+ }
115
+ walkRF(workspaceRoot);
116
+ return results;
117
+ }
118
+ function applySymbolRenameInContent(content, fromName, toName) {
119
+ const regex = new RegExp(`(?<![a-zA-Z0-9_$])${escapeRegexStr(fromName)}(?![a-zA-Z0-9_$])`, "g");
120
+ return content.replace(regex, toName);
121
+ }
122
+ function buildUnifiedDiff(filePath, before, after) {
123
+ if (before === after)
124
+ return "";
125
+ const bl = before.split("\n");
126
+ const al = after.split("\n");
127
+ const diffLines = [`--- a/${filePath}`, `+++ b/${filePath}`];
128
+ const changed = new Set();
129
+ const maxLen = Math.max(bl.length, al.length);
130
+ for (let i = 0; i < maxLen; i++) {
131
+ if (bl[i] !== al[i])
132
+ changed.add(i);
133
+ }
134
+ let i = 0;
135
+ while (i < maxLen) {
136
+ if (!changed.has(i)) {
137
+ i++;
138
+ continue;
139
+ }
140
+ const hunkStart = Math.max(0, i - 2);
141
+ let hunkEnd = i + 1;
142
+ while (hunkEnd < maxLen && changed.has(hunkEnd))
143
+ hunkEnd++;
144
+ hunkEnd = Math.min(maxLen, hunkEnd + 2);
145
+ const bc = Math.min(hunkEnd, bl.length) - hunkStart;
146
+ const ac = Math.min(hunkEnd, al.length) - hunkStart;
147
+ diffLines.push(`@@ -${hunkStart + 1},${bc} +${hunkStart + 1},${ac} @@`);
148
+ for (let j = hunkStart; j < hunkEnd; j++) {
149
+ if (j >= maxLen)
150
+ break;
151
+ if (changed.has(j)) {
152
+ if (j < bl.length)
153
+ diffLines.push(`-${bl[j]}`);
154
+ if (j < al.length)
155
+ diffLines.push(`+${al[j]}`);
156
+ }
157
+ else {
158
+ if (j < bl.length)
159
+ diffLines.push(` ${bl[j]}`);
160
+ }
161
+ }
162
+ i = hunkEnd;
163
+ }
164
+ return diffLines.join("\n");
165
+ }
166
+ async function handleRefactorRename(args, workspaceRoot) {
167
+ const fromName = args.from;
168
+ const toName = args.to;
169
+ const dryRun = !!(args.dryRun);
170
+ const tscCheck = !!(args.tscCheck);
171
+ const backup = !!(args.backup);
172
+ if (!fromName || !toName)
173
+ throw new Error("'from' and 'to' are required for rename");
174
+ const refs = findSymbolRefs(workspaceRoot, fromName);
175
+ if (refs.length === 0) {
176
+ return { content: [{ type: "text", text: `No references found to symbol "${fromName}" in the workspace.` }] };
177
+ }
178
+ let filesModified = 0;
179
+ let totalRefs = 0;
180
+ const report = [];
181
+ const diffs = [];
182
+ for (const ref of refs) {
183
+ const before = fs_1.default.readFileSync(ref.abs, "utf8");
184
+ const after = applySymbolRenameInContent(before, fromName, toName);
185
+ if (before === after)
186
+ continue;
187
+ const count = (before.match(new RegExp(`(?<![a-zA-Z0-9_$])${escapeRegexStr(fromName)}(?![a-zA-Z0-9_$])`, "g")) || []).length;
188
+ totalRefs += count;
189
+ filesModified++;
190
+ if (dryRun) {
191
+ const d = buildUnifiedDiff(ref.rel, before, after);
192
+ if (d)
193
+ diffs.push(d);
194
+ }
195
+ else {
196
+ if (backup)
197
+ fs_1.default.writeFileSync(ref.abs + ".bak", before, "utf8");
198
+ fs_1.default.writeFileSync(ref.abs, after, "utf8");
199
+ report.push(` ✅ ${ref.rel} (${count} refs)`);
200
+ }
201
+ }
202
+ if (dryRun) {
203
+ return { content: [{ type: "text", text: [`🔍 DRY RUN — Rename "${fromName}" → "${toName}"`, ``, `Archivos que cambiarían: ${filesModified} | Referencias: ${totalRefs}`, ``, `=== DIFF PREVIEW ===`, ...diffs].join("\n") }] };
204
+ }
205
+ let tscOutput = "";
206
+ if (tscCheck && filesModified > 0) {
207
+ try {
208
+ const out = (0, child_process_1.execSync)("npx tsc --noEmit 2>&1 | head -30 || true", { cwd: workspaceRoot, encoding: "utf8", timeout: 30000 });
209
+ const errors = out.split("\n").filter((l) => l.includes("error TS"));
210
+ tscOutput = errors.length === 0 ? "\n\n✅ tsc --noEmit: 0 errores" : `\n\n⚠️ tsc: ${errors.length} error(es):\n${errors.join("\n")}`;
211
+ }
212
+ catch (e) {
213
+ tscOutput = `\n\n⚠️ tsc check falló: ${e.message}`;
214
+ }
215
+ }
216
+ return { content: [{ type: "text", text: [`✅ Rename: "${fromName}" → "${toName}"`, ``, `📁 ${filesModified} archivos | 🔗 ${totalRefs} refs`, ``, ...report].join("\n") + tscOutput }] };
217
+ }
218
+ async function handleRefactorMove(args, workspaceRoot) {
219
+ const fromRel = args.from;
220
+ const toRel = args.to;
221
+ const dryRun = !!(args.dryRun);
222
+ const tscCheck = !!(args.tscCheck);
223
+ const backup = !!(args.backup);
224
+ const { resolved: fromAbs } = (0, utils_1.safeResolvePath)(workspaceRoot, fromRel);
225
+ const toAbs = path_1.default.resolve(workspaceRoot, toRel);
226
+ const fromRelNorm = path_1.default.relative(workspaceRoot, fromAbs).replace(/\\/g, "/");
227
+ const toRelNorm = path_1.default.relative(workspaceRoot, toAbs).replace(/\\/g, "/");
228
+ if (!fs_1.default.existsSync(fromAbs)) {
229
+ return { content: [{ type: "text", text: `Source file not found: ${fromRelNorm}` }] };
230
+ }
231
+ const IGNORE_MV = new Set(["node_modules", ".git", "dist", "chroma_data", ".lemma", "build", "coverage", ".next"]);
232
+ const importers = [];
233
+ function walkMV(dir) {
234
+ let entries = [];
235
+ try {
236
+ entries = fs_1.default.readdirSync(dir, { withFileTypes: true });
237
+ }
238
+ catch {
239
+ return;
240
+ }
241
+ for (const e of entries) {
242
+ if (IGNORE_MV.has(e.name))
243
+ continue;
244
+ const abs = path_1.default.join(dir, e.name);
245
+ if (e.isDirectory()) {
246
+ walkMV(abs);
247
+ }
248
+ else if (/\.(ts|tsx|js|jsx)$/.test(e.name) && !e.name.endsWith(".d.ts")) {
249
+ const rel = path_1.default.relative(workspaceRoot, abs).replace(/\\/g, "/");
250
+ if (rel === fromRelNorm)
251
+ return;
252
+ try {
253
+ const content = fs_1.default.readFileSync(abs, "utf8");
254
+ const sf = ts.createSourceFile(abs, content, ts.ScriptTarget.Latest, true);
255
+ let found = false;
256
+ ts.forEachChild(sf, (n) => {
257
+ if (!found && ts.isImportDeclaration(n) && ts.isStringLiteral(n.moduleSpecifier)) {
258
+ const spec = n.moduleSpecifier.text;
259
+ if (spec.startsWith(".")) {
260
+ const res = path_1.default.resolve(path_1.default.dirname(abs), spec).replace(/\\/g, "/");
261
+ const fromN = fromAbs.replace(/\\/g, "/");
262
+ const fromNoExt = fromN.replace(/\.(ts|tsx|js|jsx)$/, "");
263
+ if (res === fromN || res === fromNoExt)
264
+ found = true;
265
+ }
266
+ }
267
+ });
268
+ if (found)
269
+ importers.push({ abs, rel, content });
270
+ }
271
+ catch { /* skip */ }
272
+ }
273
+ }
274
+ }
275
+ walkMV(workspaceRoot);
276
+ const addDot = (p) => p.startsWith(".") ? p : `./${p}`;
277
+ const patches = [];
278
+ for (const imp of importers) {
279
+ const oldRelImport = path_1.default.relative(path_1.default.dirname(imp.abs), fromAbs).replace(/\\/g, "/");
280
+ const newRelImport = path_1.default.relative(path_1.default.dirname(imp.abs), toAbs).replace(/\\/g, "/");
281
+ const oldSpec = addDot(oldRelImport.replace(/\.(ts|tsx|js|jsx)$/, ""));
282
+ const newSpec = addDot(newRelImport.replace(/\.(ts|tsx|js|jsx)$/, ""));
283
+ const after = imp.content.replace(new RegExp(`(['"])${escapeRegexStr(oldSpec)}(['"])`, "g"), `$1${newSpec}$2`);
284
+ if (after !== imp.content)
285
+ patches.push({ rel: imp.rel, abs: imp.abs, before: imp.content, after });
286
+ }
287
+ if (dryRun) {
288
+ const diffs = patches.map(p => buildUnifiedDiff(p.rel, p.before, p.after)).filter(Boolean);
289
+ return { content: [{ type: "text", text: [`🔍 DRY RUN — Move "${fromRelNorm}" → "${toRelNorm}"`, ``, `Importadores que se actualizarían: ${patches.length}`, ``, `=== DIFF PREVIEW ===`, ...diffs].join("\n") }] };
290
+ }
291
+ fs_1.default.mkdirSync(path_1.default.dirname(toAbs), { recursive: true });
292
+ if (backup)
293
+ fs_1.default.copyFileSync(fromAbs, fromAbs + ".bak");
294
+ fs_1.default.copyFileSync(fromAbs, toAbs);
295
+ fs_1.default.unlinkSync(fromAbs);
296
+ for (const p of patches) {
297
+ if (backup)
298
+ fs_1.default.writeFileSync(p.abs + ".bak", p.before, "utf8");
299
+ fs_1.default.writeFileSync(p.abs, p.after, "utf8");
300
+ }
301
+ let tscOutput = "";
302
+ if (tscCheck) {
303
+ try {
304
+ const out = (0, child_process_1.execSync)("npx tsc --noEmit 2>&1 | head -30 || true", { cwd: workspaceRoot, encoding: "utf8", timeout: 30000 });
305
+ const errors = out.split("\n").filter((l) => l.includes("error TS"));
306
+ tscOutput = errors.length === 0 ? "\n\n✅ tsc --noEmit: 0 errores" : `\n\n⚠️ tsc: ${errors.length} error(es):\n${errors.join("\n")}`;
307
+ }
308
+ catch (e) {
309
+ tscOutput = `\n\n⚠️ tsc check falló: ${e.message}`;
310
+ }
311
+ }
312
+ return { content: [{ type: "text", text: [`✅ Move: "${fromRelNorm}" → "${toRelNorm}"`, ``, `📁 ${patches.length} importadores actualizados:`, ...patches.map(p => ` ✅ ${p.rel}`)].join("\n") + tscOutput }] };
313
+ }
314
+ async function handleRefactor(args) {
315
+ const operation = args?.operation;
316
+ const workspaceRoot = process.cwd();
317
+ if (!operation)
318
+ throw new Error("'operation' is required (rename | move)");
319
+ try {
320
+ switch (operation) {
321
+ case "rename": return await handleRefactorRename(args, workspaceRoot);
322
+ case "move": return await handleRefactorMove(args, workspaceRoot);
323
+ default:
324
+ return { content: [{ type: "text", text: `Unknown operation: "${operation}". Supported: rename, move` }] };
325
+ }
326
+ }
327
+ catch (err) {
328
+ (0, utils_1.logError)("refactor", err);
329
+ return { content: [{ type: "text", text: `refactor failed: ${err.message}` }] };
330
+ }
331
+ }
332
+ exports.REFACTOR_TOOL_HANDLERS = {
333
+ refactor: handleRefactor,
334
+ };
335
+ //# sourceMappingURL=refactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactor.js","sourceRoot":"","sources":["../../../../src/mcp/tools/refactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * PR review tools: review_diff (local, zero-LLM static analysis of a raw diff),
3
+ * review_pr / pr_status (Pro, hits GitHub/Azure/GitLab APIs), and generate_pr_workflow
4
+ * (writes a CI file that runs review_pr on every PR). Split out of ../tools.ts (see that
5
+ * file's history for why) — pure relocation, no behavior change.
6
+ */
7
+ import type { ToolDefinition, ToolHandler } from "../toolTypes";
8
+ export declare const REVIEW_TOOL_DEFINITIONS: ToolDefinition[];
9
+ export declare const REVIEW_TOOL_HANDLERS: Record<string, ToolHandler>;
10
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/review.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhE,eAAO,MAAM,uBAAuB,EAAE,cAAc,EA6DnD,CAAC;AAiOF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAK5D,CAAC"}
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ /**
3
+ * PR review tools: review_diff (local, zero-LLM static analysis of a raw diff),
4
+ * review_pr / pr_status (Pro, hits GitHub/Azure/GitLab APIs), and generate_pr_workflow
5
+ * (writes a CI file that runs review_pr on every PR). Split out of ../tools.ts (see that
6
+ * file's history for why) — pure relocation, no behavior change.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.REVIEW_TOOL_HANDLERS = exports.REVIEW_TOOL_DEFINITIONS = void 0;
13
+ const fs_1 = __importDefault(require("fs"));
14
+ const path_1 = __importDefault(require("path"));
15
+ const PRReviewEngine_1 = require("../../pr-review/PRReviewEngine");
16
+ const ReviewStore_1 = require("../../pr-review/ReviewStore");
17
+ const reviewRunner_1 = require("../../pr-review/reviewRunner");
18
+ const utils_1 = require("../utils");
19
+ exports.REVIEW_TOOL_DEFINITIONS = [
20
+ {
21
+ name: "review_diff",
22
+ annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: false },
23
+ description: "Analyze a raw git diff locally for regressions, security issues, code quality, and static analysis. Zero-cost static analysis using local TypeScript compiler API — no LLM calls. Returns score, verdict, and detailed findings with suggestions.",
24
+ inputSchema: {
25
+ type: "object",
26
+ properties: {
27
+ diff: { type: "string", description: "The git diff content to analyze" },
28
+ baseBranch: { type: "string", description: "Base branch for regression context", default: "main" },
29
+ threshold: { type: "number", description: "Quality score threshold for approval (0-100)", default: 90 },
30
+ },
31
+ required: ["diff"],
32
+ },
33
+ },
34
+ {
35
+ name: "review_pr",
36
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true },
37
+ description: "Analyze a Pull Request via GitHub, Azure DevOps, or GitLab API. Detects regressions, security issues, code quality problems, and breaking changes. Posts results as PR comments and can auto-approve if quality threshold is met. Pro license required.",
38
+ inputSchema: {
39
+ type: "object",
40
+ properties: {
41
+ platform: { type: "string", enum: ["github", "azure", "gitlab"], description: "Git platform" },
42
+ repo: { type: "string", description: "Full repo name (e.g., 'owner/repo' or 'org/project/repo')" },
43
+ prNumber: { type: "number", description: "Pull request number" },
44
+ autoApprove: { type: "boolean", description: "Auto-approve if score >= threshold", default: true },
45
+ threshold: { type: "number", description: "Quality score threshold (0-100)", default: 90 },
46
+ context: { type: "string", description: "Optional context from The Brain about this project" },
47
+ },
48
+ required: ["platform", "repo", "prNumber"],
49
+ },
50
+ },
51
+ {
52
+ name: "pr_status",
53
+ annotations: { readOnlyHint: true, openWorldHint: true },
54
+ description: "Get the status and detailed results of a previously reviewed PR. Returns score, verdict, findings, and approval status.",
55
+ inputSchema: {
56
+ type: "object",
57
+ properties: {
58
+ reviewId: { type: "string", description: "Review ID returned by review_pr" },
59
+ repo: { type: "string", description: "Optional repo to find by PR number" },
60
+ prNumber: { type: "number", description: "Optional PR number to find by repo" },
61
+ },
62
+ required: [],
63
+ },
64
+ },
65
+ {
66
+ name: "generate_pr_workflow",
67
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
68
+ description: "Generate a CI/CD workflow file (GitHub Actions or Azure Pipelines) that runs Lemma PR Review on every pull request. Writes the file to the workspace.",
69
+ inputSchema: {
70
+ type: "object",
71
+ properties: {
72
+ platform: { type: "string", enum: ["github", "azure"], description: "CI platform" },
73
+ outputPath: { type: "string", description: "Output path for the workflow file", default: ".github/workflows/lemma-pr-review.yml" },
74
+ autoApprove: { type: "boolean", description: "Enable auto-approve in the workflow", default: true },
75
+ threshold: { type: "number", description: "Quality threshold for auto-approve", default: 90 },
76
+ },
77
+ required: ["platform"],
78
+ },
79
+ },
80
+ ];
81
+ // ─── review_diff ─────────────────────────────────────────────────────────────
82
+ async function handleReviewDiff(args) {
83
+ const diff = args?.diff;
84
+ const baseBranch = args?.baseBranch || "main";
85
+ const threshold = args?.threshold || 90;
86
+ if (!diff)
87
+ throw new Error("diff is required");
88
+ const workspaceRoot = process.cwd();
89
+ try {
90
+ const diffFiles = (0, PRReviewEngine_1.parseDiff)(diff);
91
+ if (diffFiles.length === 0) {
92
+ return { content: [{ type: "text", text: "No parseable diff files found. Ensure the input is a valid git diff output." }] };
93
+ }
94
+ const result = (0, PRReviewEngine_1.runAnalysis)(diffFiles, { threshold, autoApprove: false }, workspaceRoot, baseBranch);
95
+ return {
96
+ content: [
97
+ {
98
+ type: "text",
99
+ text: [
100
+ `# 🔍 Lemma PR Review — Local Diff Analysis`,
101
+ ``,
102
+ `**Files analyzed:** ${diffFiles.length}`,
103
+ `**Score:** ${result.score}/100 | **Verdict:** ${result.verdict}`,
104
+ ``,
105
+ result.summary,
106
+ ].join("\n"),
107
+ },
108
+ ],
109
+ };
110
+ }
111
+ catch (err) {
112
+ (0, utils_1.logError)("review_diff", err);
113
+ return { content: [{ type: "text", text: `PR review analysis failed: ${err.message}` }] };
114
+ }
115
+ }
116
+ // ─── review_pr ─────────────────────────────────────────────────────────────
117
+ async function handleReviewPR(args) {
118
+ const platform = args?.platform;
119
+ const repo = args?.repo;
120
+ const prNumber = args?.prNumber;
121
+ const autoApprove = args?.autoApprove !== false;
122
+ const threshold = args?.threshold || 90;
123
+ if (!platform || !repo || !prNumber) {
124
+ throw new Error("platform, repo, and prNumber are required");
125
+ }
126
+ try {
127
+ const result = await (0, reviewRunner_1.runPRReview)(platform, repo, prNumber, { autoApprove, threshold });
128
+ return {
129
+ content: [
130
+ {
131
+ type: "text",
132
+ text: JSON.stringify(result, null, 2),
133
+ },
134
+ ],
135
+ };
136
+ }
137
+ catch (err) {
138
+ (0, utils_1.logError)("review_pr", err);
139
+ return { content: [{ type: "text", text: `PR review failed: ${err.message}` }] };
140
+ }
141
+ }
142
+ // ─── pr_status ─────────────────────────────────────────────────────────────
143
+ async function handlePRStatus(args) {
144
+ const reviewId = args?.reviewId;
145
+ const repo = args?.repo;
146
+ const prNumber = args?.prNumber;
147
+ let review;
148
+ if (reviewId) {
149
+ review = ReviewStore_1.ReviewStore.get(reviewId);
150
+ }
151
+ else if (repo && prNumber) {
152
+ review = ReviewStore_1.ReviewStore.findByPR(repo, prNumber);
153
+ }
154
+ if (!review) {
155
+ const allReviews = ReviewStore_1.ReviewStore.getAll();
156
+ return {
157
+ content: [
158
+ {
159
+ type: "text",
160
+ text: allReviews.length === 0
161
+ ? "No PR reviews found in this session."
162
+ : `PR reviews in this session:\n\n${allReviews.slice(-5).map(r => `- ${r.metadata?.repo || "?"} #${r.metadata?.prNumber || "?"}: ${r.score}/100 — ${r.verdict} (${r.reviewId})`).join("\n")}`,
163
+ },
164
+ ],
165
+ };
166
+ }
167
+ return {
168
+ content: [
169
+ {
170
+ type: "text",
171
+ text: [
172
+ `# 📋 PR Review Status`,
173
+ ``,
174
+ `**Review ID:** ${review.reviewId}`,
175
+ `**Repo:** ${review.metadata?.repo || "N/A"}`,
176
+ `**PR:** #${review.metadata?.prNumber || "N/A"}`,
177
+ `**Score:** ${review.score}/100`,
178
+ `**Verdict:** ${review.verdict}`,
179
+ `**Approved:** ${review.approved ? "✅ Yes" : "❌ No"}`,
180
+ `**Timestamp:** ${review.timestamp}`,
181
+ ``,
182
+ review.summary,
183
+ ].join("\n"),
184
+ },
185
+ ],
186
+ };
187
+ }
188
+ // ─── generate_pr_workflow ─────────────────────────────────────────────────
189
+ async function handleGeneratePRWorkflow(args) {
190
+ const platform = args?.platform;
191
+ const outputPath = args?.outputPath || ".github/workflows/lemma-pr-review.yml";
192
+ const autoApprove = args?.autoApprove !== false;
193
+ const threshold = args?.threshold || 90;
194
+ if (!platform)
195
+ throw new Error("platform is required");
196
+ if (!["github", "azure"].includes(platform)) {
197
+ throw new Error("platform must be 'github' or 'azure'");
198
+ }
199
+ const workspaceRoot = process.cwd();
200
+ const { resolved } = (0, utils_1.safeResolvePath)(workspaceRoot, outputPath);
201
+ const dir = path_1.default.dirname(resolved);
202
+ try {
203
+ if (!fs_1.default.existsSync(dir)) {
204
+ fs_1.default.mkdirSync(dir, { recursive: true });
205
+ }
206
+ const tokenName = platform === "github" ? "GITHUB_TOKEN" : "AZURE_DEVOPS_TOKEN";
207
+ const yaml = platform === "github"
208
+ ? generateGitHubWorkflowYaml(threshold)
209
+ : generateAzurePipelineYaml(threshold);
210
+ fs_1.default.writeFileSync(resolved, yaml, "utf8");
211
+ return {
212
+ content: [
213
+ {
214
+ type: "text",
215
+ text: `✅ Workflow file generated at \`${outputPath}\`\n\nMake sure to add your Lemma license key and ${tokenName} as secrets in your ${platform === "github" ? "GitHub repository" : "Azure Pipeline"}.`,
216
+ },
217
+ ],
218
+ };
219
+ }
220
+ catch (err) {
221
+ (0, utils_1.logError)("generate_pr_workflow", err);
222
+ return { content: [{ type: "text", text: `Failed to generate workflow: ${err.message}` }] };
223
+ }
224
+ }
225
+ function generateGitHubWorkflowYaml(threshold) {
226
+ return [
227
+ `name: Lemma PR Review`,
228
+ `on:`,
229
+ ` pull_request:`,
230
+ ` types: [opened, synchronize]`,
231
+ ``,
232
+ `jobs:`,
233
+ ` lemma-review:`,
234
+ ` runs-on: ubuntu-latest`,
235
+ ` steps:`,
236
+ ` - uses: actions/checkout@v4`,
237
+ ` with:`,
238
+ ` fetch-depth: 0`,
239
+ ` - uses: actions/setup-node@v4`,
240
+ ` - run: npm install -g @nxuss/lemma`,
241
+ ` - run: lemma pr-review --threshold ${threshold}`,
242
+ ` env:`,
243
+ ` LEMMA_LICENSE_KEY: \${{ secrets.LEMMA_LICENSE_KEY }}`,
244
+ ` GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}`,
245
+ ` LEMMA_PLATFORM: github`,
246
+ ` LEMMA_REPO: \${{ github.repository }}`,
247
+ ` LEMMA_PR_NUMBER: \${{ github.event.pull_request.number }}`,
248
+ ].join("\n");
249
+ }
250
+ function generateAzurePipelineYaml(threshold) {
251
+ return [
252
+ `trigger: none`,
253
+ `pr:`,
254
+ ` branches:`,
255
+ ` include:`,
256
+ ` - '*'`,
257
+ ``,
258
+ `pool:`,
259
+ ` vmImage: ubuntu-latest`,
260
+ ``,
261
+ `steps:`,
262
+ ` - checkout: self`,
263
+ ` fetchDepth: 0`,
264
+ ` - task: NodeTool@0`,
265
+ ` inputs:`,
266
+ ` versionSpec: '18'`,
267
+ ` - script: npm install -g @nxuss/lemma`,
268
+ ` - script: lemma pr-review --threshold ${threshold}`,
269
+ ` env:`,
270
+ ` LEMMA_LICENSE_KEY: \$(LEMMA_LICENSE_KEY)`,
271
+ ` LEMMA_PLATFORM: azure`,
272
+ ` LEMMA_REPO: \$(Build.Repository.Name)`,
273
+ ` LEMMA_PR_NUMBER: \$(System.PullRequest.PullRequestId)`,
274
+ ` AZURE_DEVOPS_TOKEN: \$(AZURE_DEVOPS_TOKEN)`,
275
+ ].join("\n");
276
+ }
277
+ exports.REVIEW_TOOL_HANDLERS = {
278
+ review_diff: handleReviewDiff,
279
+ review_pr: handleReviewPR,
280
+ pr_status: handlePRStatus,
281
+ generate_pr_workflow: handleGeneratePRWorkflow,
282
+ };
283
+ //# sourceMappingURL=review.js.map