@nxuss/lemma 1.18.0 → 1.18.2

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 (356) 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 +543 -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 +418 -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 +675 -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 +636 -6388
  63. package/dist/cjs/mcp/tools.js.map +1 -1
  64. package/dist/cjs/mcp/utils.d.ts +55 -2
  65. package/dist/cjs/mcp/utils.d.ts.map +1 -1
  66. package/dist/cjs/mcp/utils.js +194 -10
  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/cjs/utils/ExecAuditLog.d.ts +27 -0
  74. package/dist/cjs/utils/ExecAuditLog.d.ts.map +1 -0
  75. package/dist/cjs/utils/ExecAuditLog.js +53 -0
  76. package/dist/cjs/utils/ExecAuditLog.js.map +1 -0
  77. package/dist/esm/api/dashboardRoutes.d.ts +3 -3
  78. package/dist/esm/api/dashboardRoutes.js +1 -1
  79. package/dist/esm/api/server.d.ts +4 -4
  80. package/dist/esm/api/server.js +3 -3
  81. package/dist/esm/autopilot/AutopilotWatcher.js +3 -3
  82. package/dist/esm/autopilot/Notifier.d.ts +1 -1
  83. package/dist/esm/cli/lemma-proxy.js +15 -15
  84. package/dist/esm/cli/stack.d.ts +4 -4
  85. package/dist/esm/cli/stack.js +5 -5
  86. package/dist/esm/cloud/KeyManager.d.ts +1 -1
  87. package/dist/esm/cloud/KeyManager.js +1 -1
  88. package/dist/esm/cloud/TenantCache.d.ts +1 -1
  89. package/dist/esm/cloud/identity/ApiKey.d.ts +1 -1
  90. package/dist/esm/cloud/identity/TenantResolver.d.ts +1 -1
  91. package/dist/esm/cloud/identity/TenantResolver.js +1 -1
  92. package/dist/esm/cloud/identity/authenticateV2.d.ts +3 -3
  93. package/dist/esm/cloud/identity/authenticateV2.js +3 -3
  94. package/dist/esm/cloud/identity/identityStore.d.ts +2 -2
  95. package/dist/esm/cloud/identity/index.d.ts +6 -6
  96. package/dist/esm/cloud/identity/index.js +6 -6
  97. package/dist/esm/cloud/index.d.ts +3 -3
  98. package/dist/esm/cloud/index.js +3 -3
  99. package/dist/esm/cloud/metering/UsageLedger.d.ts +1 -1
  100. package/dist/esm/cloud/metering/index.d.ts +2 -2
  101. package/dist/esm/cloud/metering/index.js +2 -2
  102. package/dist/esm/cloud/scrub/StatelessScrubber.d.ts +1 -1
  103. package/dist/esm/cloud/scrub/index.d.ts +1 -1
  104. package/dist/esm/cloud/scrub/index.js +1 -1
  105. package/dist/esm/cloud/server.d.ts +3 -3
  106. package/dist/esm/cloud/server.js +5 -5
  107. package/dist/esm/cloud/store/FileBrainStore.d.ts +1 -1
  108. package/dist/esm/cloud/store/FileBrainStore.js +1 -1
  109. package/dist/esm/cloud/store/PostgresBrainStore.d.ts +1 -1
  110. package/dist/esm/cloud/store/PostgresBrainStore.js +2 -2
  111. package/dist/esm/cloud/store/index.d.ts +2 -2
  112. package/dist/esm/cloud/store/index.js +2 -2
  113. package/dist/esm/cloud/v2/app.d.ts +1 -1
  114. package/dist/esm/cloud/v2/app.js +3 -3
  115. package/dist/esm/cloud/v2/routes/index.d.ts +5 -5
  116. package/dist/esm/cloud/v2/routes/index.js +7 -7
  117. package/dist/esm/cloud/v2/routes/memories.d.ts +4 -4
  118. package/dist/esm/cloud/v2/routes/memories.js +2 -2
  119. package/dist/esm/cloud/v2/routes/recall.d.ts +1 -1
  120. package/dist/esm/cloud/v2/routes/recall.js +1 -1
  121. package/dist/esm/cloud/v2/routes/scrub.d.ts +2 -2
  122. package/dist/esm/cloud/v2/routes/scrub.js +2 -2
  123. package/dist/esm/cloud/v2/routes/usage.d.ts +1 -1
  124. package/dist/esm/cloud/v2/routes/verify.d.ts +1 -1
  125. package/dist/esm/cloud/v2/routes/verify.js +1 -1
  126. package/dist/esm/cloud/v2/server.js +4 -4
  127. package/dist/esm/config/index.d.ts +1 -1
  128. package/dist/esm/config/index.js +1 -1
  129. package/dist/esm/consensus/index.d.ts +2 -2
  130. package/dist/esm/consensus/index.js +2 -2
  131. package/dist/esm/contracts/api-v2.types.d.ts +1 -1
  132. package/dist/esm/contracts/index.d.ts +4 -4
  133. package/dist/esm/contracts/index.js +4 -4
  134. package/dist/esm/core/AgentRegistry.d.ts +1 -1
  135. package/dist/esm/core/AgentRegistry.js +1 -1
  136. package/dist/esm/core/DashboardBroadcaster.d.ts +3 -3
  137. package/dist/esm/core/DashboardBroadcaster.js +2 -2
  138. package/dist/esm/core/DashboardWebSocketServer.d.ts +1 -1
  139. package/dist/esm/core/DashboardWebSocketServer.js +1 -1
  140. package/dist/esm/core/GhostAlchemist.js +1 -1
  141. package/dist/esm/core/GhostListener.js +2 -2
  142. package/dist/esm/core/OrchestrationEngine.d.ts +3 -3
  143. package/dist/esm/core/OrchestrationEngine.js +2 -2
  144. package/dist/esm/core/SubconsciousEngine.d.ts +1 -1
  145. package/dist/esm/core/SubconsciousEngine.js +2 -2
  146. package/dist/esm/core/WebSocketServer.d.ts +2 -2
  147. package/dist/esm/core/WebSocketServer.js +1 -1
  148. package/dist/esm/core/index.d.ts +6 -6
  149. package/dist/esm/core/index.js +6 -6
  150. package/dist/esm/core/router.d.ts +3 -3
  151. package/dist/esm/core/router.js +1 -1
  152. package/dist/esm/db/database.js +1 -1
  153. package/dist/esm/embed.d.ts +2 -2
  154. package/dist/esm/embed.js +2 -2
  155. package/dist/esm/examples/basic-usage.js +1 -1
  156. package/dist/esm/index.d.ts +14 -14
  157. package/dist/esm/index.js +14 -14
  158. package/dist/esm/infra/analyzers/DriftDetector.d.ts +1 -1
  159. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts +1 -1
  160. package/dist/esm/infra/analyzers/MonolithAnalyzer.d.ts +1 -1
  161. package/dist/esm/infra/analyzers/index.d.ts +3 -3
  162. package/dist/esm/infra/analyzers/index.js +3 -3
  163. package/dist/esm/infra/cli.js +2 -2
  164. package/dist/esm/infra/config.d.ts +1 -1
  165. package/dist/esm/infra/index.d.ts +5 -5
  166. package/dist/esm/infra/index.js +5 -5
  167. package/dist/esm/infra/mcp-tools.js +5 -5
  168. package/dist/esm/infra/providers/InfraProvider.d.ts +1 -1
  169. package/dist/esm/infra/providers/JenkinsProvider.d.ts +2 -2
  170. package/dist/esm/infra/providers/OKDProvider.d.ts +2 -2
  171. package/dist/esm/infra/providers/TerraformProvider.d.ts +2 -2
  172. package/dist/esm/infra/providers/index.d.ts +5 -5
  173. package/dist/esm/infra/providers/index.js +3 -3
  174. package/dist/esm/mcp/cognitiveMap.d.ts +27 -0
  175. package/dist/esm/mcp/cognitiveMap.d.ts.map +1 -0
  176. package/dist/esm/mcp/cognitiveMap.js +40 -0
  177. package/dist/esm/mcp/cognitiveMap.js.map +1 -0
  178. package/dist/esm/mcp/index.js +5 -5
  179. package/dist/esm/mcp/prompts.js +1 -1
  180. package/dist/esm/mcp/resources.js +2 -2
  181. package/dist/esm/mcp/tasks.js +1 -1
  182. package/dist/esm/mcp/tool-profiles.js +1 -1
  183. package/dist/esm/mcp/toolTypes.d.ts +39 -0
  184. package/dist/esm/mcp/toolTypes.d.ts.map +1 -0
  185. package/dist/esm/mcp/toolTypes.js +7 -0
  186. package/dist/esm/mcp/toolTypes.js.map +1 -0
  187. package/dist/esm/mcp/tools/analysis.d.ts +11 -0
  188. package/dist/esm/mcp/tools/analysis.d.ts.map +1 -0
  189. package/dist/esm/mcp/tools/analysis.js +894 -0
  190. package/dist/esm/mcp/tools/analysis.js.map +1 -0
  191. package/dist/esm/mcp/tools/codenav.d.ts +9 -0
  192. package/dist/esm/mcp/tools/codenav.d.ts.map +1 -0
  193. package/dist/esm/mcp/tools/codenav.js +485 -0
  194. package/dist/esm/mcp/tools/codenav.js.map +1 -0
  195. package/dist/esm/mcp/tools/context-tools.d.ts +20 -0
  196. package/dist/esm/mcp/tools/context-tools.d.ts.map +1 -0
  197. package/dist/esm/mcp/tools/context-tools.js +503 -0
  198. package/dist/esm/mcp/tools/context-tools.js.map +1 -0
  199. package/dist/esm/mcp/tools/depgraph.d.ts +8 -0
  200. package/dist/esm/mcp/tools/depgraph.d.ts.map +1 -0
  201. package/dist/esm/mcp/tools/depgraph.js +315 -0
  202. package/dist/esm/mcp/tools/depgraph.js.map +1 -0
  203. package/dist/esm/mcp/tools/dev-utils.d.ts +11 -0
  204. package/dist/esm/mcp/tools/dev-utils.d.ts.map +1 -0
  205. package/dist/esm/mcp/tools/dev-utils.js +516 -0
  206. package/dist/esm/mcp/tools/dev-utils.js.map +1 -0
  207. package/dist/esm/mcp/tools/devtools.d.ts +9 -0
  208. package/dist/esm/mcp/tools/devtools.d.ts.map +1 -0
  209. package/dist/esm/mcp/tools/devtools.js +406 -0
  210. package/dist/esm/mcp/tools/devtools.js.map +1 -0
  211. package/dist/esm/mcp/tools/memory.d.ts +10 -0
  212. package/dist/esm/mcp/tools/memory.d.ts.map +1 -0
  213. package/dist/esm/mcp/tools/memory.js +533 -0
  214. package/dist/esm/mcp/tools/memory.js.map +1 -0
  215. package/dist/esm/mcp/tools/misc.d.ts +10 -0
  216. package/dist/esm/mcp/tools/misc.d.ts.map +1 -0
  217. package/dist/esm/mcp/tools/misc.js +417 -0
  218. package/dist/esm/mcp/tools/misc.js.map +1 -0
  219. package/dist/esm/mcp/tools/refactor.d.ts +8 -0
  220. package/dist/esm/mcp/tools/refactor.d.ts.map +1 -0
  221. package/dist/esm/mcp/tools/refactor.js +296 -0
  222. package/dist/esm/mcp/tools/refactor.js.map +1 -0
  223. package/dist/esm/mcp/tools/review.d.ts +10 -0
  224. package/dist/esm/mcp/tools/review.d.ts.map +1 -0
  225. package/dist/esm/mcp/tools/review.js +277 -0
  226. package/dist/esm/mcp/tools/review.js.map +1 -0
  227. package/dist/esm/mcp/tools/squeeze-cache.d.ts +14 -0
  228. package/dist/esm/mcp/tools/squeeze-cache.d.ts.map +1 -0
  229. package/dist/esm/mcp/tools/squeeze-cache.js +382 -0
  230. package/dist/esm/mcp/tools/squeeze-cache.js.map +1 -0
  231. package/dist/esm/mcp/tools/text-ops.d.ts +14 -0
  232. package/dist/esm/mcp/tools/text-ops.d.ts.map +1 -0
  233. package/dist/esm/mcp/tools/text-ops.js +152 -0
  234. package/dist/esm/mcp/tools/text-ops.js.map +1 -0
  235. package/dist/esm/mcp/tools/workspace.d.ts +10 -0
  236. package/dist/esm/mcp/tools/workspace.d.ts.map +1 -0
  237. package/dist/esm/mcp/tools/workspace.js +669 -0
  238. package/dist/esm/mcp/tools/workspace.js.map +1 -0
  239. package/dist/esm/mcp/tools.d.ts +1 -1
  240. package/dist/esm/mcp/tools.d.ts.map +1 -1
  241. package/dist/esm/mcp/tools.js +652 -6404
  242. package/dist/esm/mcp/tools.js.map +1 -1
  243. package/dist/esm/mcp/utils.d.ts +55 -2
  244. package/dist/esm/mcp/utils.d.ts.map +1 -1
  245. package/dist/esm/mcp/utils.js +189 -10
  246. package/dist/esm/mcp/utils.js.map +1 -1
  247. package/dist/esm/mcp/workspaceShared.d.ts +19 -0
  248. package/dist/esm/mcp/workspaceShared.d.ts.map +1 -0
  249. package/dist/esm/mcp/workspaceShared.js +93 -0
  250. package/dist/esm/mcp/workspaceShared.js.map +1 -0
  251. package/dist/esm/observability/IdeContextSync.d.ts +1 -1
  252. package/dist/esm/observability/IdeContextSync.js +5 -5
  253. package/dist/esm/package.json +3 -0
  254. package/dist/esm/pr-review/PRReviewEngine.d.ts +1 -1
  255. package/dist/esm/pr-review/PRReviewEngine.js +4 -4
  256. package/dist/esm/pr-review/ReviewStore.d.ts +1 -1
  257. package/dist/esm/pr-review/adapters/AzureDevOpsAdapter.d.ts +2 -2
  258. package/dist/esm/pr-review/adapters/AzureDevOpsAdapter.js +1 -1
  259. package/dist/esm/pr-review/adapters/GitHubAdapter.d.ts +2 -2
  260. package/dist/esm/pr-review/adapters/GitHubAdapter.js +1 -1
  261. package/dist/esm/pr-review/adapters/GitLabAdapter.d.ts +2 -2
  262. package/dist/esm/pr-review/adapters/GitLabAdapter.js +1 -1
  263. package/dist/esm/pr-review/adapters/GitPlatformAdapter.d.ts +1 -1
  264. package/dist/esm/pr-review/adapters/index.d.ts +4 -4
  265. package/dist/esm/pr-review/adapters/index.js +3 -3
  266. package/dist/esm/pr-review/analyzers/QualityGrader.d.ts +1 -1
  267. package/dist/esm/pr-review/analyzers/RegressionDetector.d.ts +1 -1
  268. package/dist/esm/pr-review/analyzers/SecurityScanner.d.ts +1 -1
  269. package/dist/esm/pr-review/analyzers/StaticAnalyzer.d.ts +1 -1
  270. package/dist/esm/pr-review/analyzers/index.d.ts +8 -8
  271. package/dist/esm/pr-review/analyzers/index.js +4 -4
  272. package/dist/esm/pr-review/bridge/BrainBridge.d.ts +1 -1
  273. package/dist/esm/pr-review/bridge/BrainBridge.js +1 -1
  274. package/dist/esm/pr-review/bridge/index.d.ts +1 -1
  275. package/dist/esm/pr-review/bridge/index.js +1 -1
  276. package/dist/esm/pr-review/index.d.ts +4 -4
  277. package/dist/esm/pr-review/index.js +2 -2
  278. package/dist/esm/pr-review/reviewRunner.d.ts +2 -2
  279. package/dist/esm/pr-review/reviewRunner.js +6 -6
  280. package/dist/esm/pr-review/webhook/WebhookServer.js +1 -1
  281. package/dist/esm/pr-review/webhook/index.d.ts +1 -1
  282. package/dist/esm/pr-review/webhook/index.js +1 -1
  283. package/dist/esm/protocol/flows.d.ts +1 -1
  284. package/dist/esm/protocol/flows.js +1 -1
  285. package/dist/esm/protocol/index.d.ts +4 -4
  286. package/dist/esm/protocol/index.js +4 -4
  287. package/dist/esm/protocol/utils.d.ts +1 -1
  288. package/dist/esm/protocol/utils.js +2 -2
  289. package/dist/esm/protocol/validators.d.ts +1 -1
  290. package/dist/esm/protocol/validators.js +1 -1
  291. package/dist/esm/proxy/ContextInjector.d.ts +1 -1
  292. package/dist/esm/proxy/Gatekeeper.d.ts +1 -1
  293. package/dist/esm/security/SecurityMiddleware.d.ts +1 -1
  294. package/dist/esm/security/SecurityMiddleware.js +3 -3
  295. package/dist/esm/security/index.d.ts +4 -4
  296. package/dist/esm/security/index.js +4 -4
  297. package/dist/esm/speculative/SpeculativeCache.d.ts +2 -2
  298. package/dist/esm/speculative/SpeculativeEngine.d.ts +2 -2
  299. package/dist/esm/speculative/SpeculativeEngine.js +3 -3
  300. package/dist/esm/speculative/WorkerPool.d.ts +1 -1
  301. package/dist/esm/speculative/index.d.ts +4 -4
  302. package/dist/esm/speculative/index.js +4 -4
  303. package/dist/esm/subconscious/GitIngest.d.ts +1 -1
  304. package/dist/esm/subconscious/GitIngest.js +1 -1
  305. package/dist/esm/subconscious/SemanticCache.d.ts +2 -2
  306. package/dist/esm/subconscious/SemanticCache.js +2 -2
  307. package/dist/esm/subconscious/SubconsciousEngine.d.ts +1 -1
  308. package/dist/esm/subconscious/SubconsciousEngine.js +3 -3
  309. package/dist/esm/subconscious/TheBrainV2.d.ts +1 -1
  310. package/dist/esm/subconscious/TheBrainV2.js +2 -2
  311. package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts +1 -1
  312. package/dist/esm/subconscious/freshness/LocalFsResolver.js +1 -1
  313. package/dist/esm/subconscious/freshness/SuppliedEvidenceResolver.d.ts +1 -1
  314. package/dist/esm/subconscious/freshness/index.d.ts +2 -2
  315. package/dist/esm/subconscious/freshness/index.js +2 -2
  316. package/dist/esm/subconscious/index.d.ts +4 -4
  317. package/dist/esm/subconscious/index.js +4 -4
  318. package/dist/esm/utils/AffectedTests.js +1 -1
  319. package/dist/esm/utils/AutoContextBundle.d.ts +1 -1
  320. package/dist/esm/utils/AutoContextBundle.js +4 -4
  321. package/dist/esm/utils/BulkFileDigest.js +2 -2
  322. package/dist/esm/utils/ClipboardWatcher.js +2 -2
  323. package/dist/esm/utils/ContextCollapser.js +1 -1
  324. package/dist/esm/utils/ConversationCheckpoint.js +1 -1
  325. package/dist/esm/utils/ExecAuditLog.d.ts +27 -0
  326. package/dist/esm/utils/ExecAuditLog.d.ts.map +1 -0
  327. package/dist/esm/utils/ExecAuditLog.js +45 -0
  328. package/dist/esm/utils/ExecAuditLog.js.map +1 -0
  329. package/dist/esm/utils/ExecutiveReport.js +1 -1
  330. package/dist/esm/utils/OutputLedger.js +2 -2
  331. package/dist/esm/utils/ReadWorkspaceCache.js +1 -1
  332. package/dist/esm/utils/SpeculativeWarmer.d.ts +1 -1
  333. package/dist/esm/utils/SpeculativeWarmer.js +2 -2
  334. package/dist/esm/utils/StateHashCache.js +1 -1
  335. package/dist/esm/utils/StructuralSearch.d.ts +1 -1
  336. package/dist/esm/utils/SurgicalASTInsert.js +1 -1
  337. package/dist/esm/utils/SymbolSurgicalContext.js +1 -1
  338. package/dist/esm/utils/TestAutofixInterceptor.js +1 -1
  339. package/dist/esm/utils/WorkspaceSearch.js +0 -0
  340. package/dist/esm/utils/logger.js +1 -1
  341. package/dist/esm/utils/reportSavings.js +1 -1
  342. package/package.json +3 -1
  343. package/sdks/crewai/dist/crewai/src/index.d.ts +131 -0
  344. package/sdks/crewai/dist/crewai/src/index.js +325 -0
  345. package/sdks/crewai/dist/crewai/src/memory.d.ts +36 -0
  346. package/sdks/crewai/dist/crewai/src/memory.js +61 -0
  347. package/sdks/crewai/dist/ts/src/client.d.ts +39 -0
  348. package/sdks/crewai/dist/ts/src/client.js +124 -0
  349. package/sdks/crewai/dist/ts/src/errors.d.ts +19 -0
  350. package/sdks/crewai/dist/ts/src/errors.js +18 -0
  351. package/sdks/crewai/dist/ts/src/evidence.d.ts +30 -0
  352. package/sdks/crewai/dist/ts/src/evidence.js +175 -0
  353. package/sdks/crewai/dist/ts/src/index.d.ts +4 -0
  354. package/sdks/crewai/dist/ts/src/index.js +27 -0
  355. package/sdks/crewai/dist/ts/src/types.d.ts +112 -0
  356. package/sdks/crewai/dist/ts/src/types.js +11 -0
@@ -0,0 +1,27 @@
1
+ /**
2
+ * ExecAuditLog — a persistent, append-only trail of every command Lemma ran or refused to
3
+ * run, and every file it wrote, outside of what any single session's in-memory ledger keeps.
4
+ *
5
+ * TokenReceipt's sessionLedger (../utils/TokenReceipt.ts) records similar events but only
6
+ * in a module-scoped array capped at 2000 entries and lost on process restart — fine for
7
+ * "what did this session just do", useless for "what has Lemma ever done in this workspace".
8
+ * This file exists so that question has a real, on-disk answer: same `~/.lemma-cache/`
9
+ * convention as SavingsLedger, but append-only JSONL rather than whole-file rewrite, so a
10
+ * crash mid-session can't lose prior entries.
11
+ */
12
+ export type ExecAuditTool = "run_workspace_command" | "write_workspace_file" | "create_workspace_file" | "apply_workspace_patch";
13
+ export interface ExecAuditEntry {
14
+ tool: ExecAuditTool;
15
+ /** Command text for run_workspace_command, resolved file path for write/create/patch tools. */
16
+ detail: string;
17
+ allowed: boolean;
18
+ /** Only set for run_workspace_command once it actually ran. */
19
+ exitCode?: number | null;
20
+ reason?: string;
21
+ timestamp: string;
22
+ }
23
+ export declare function recordExecAudit(entry: Omit<ExecAuditEntry, "timestamp">): void;
24
+ /** Reads back the audit trail. Exposed mainly for tests; the file itself is plain JSONL. */
25
+ export declare function readExecAuditLog(limit?: number): ExecAuditEntry[];
26
+ export declare function getExecAuditLogPath(): string;
27
+ //# sourceMappingURL=ExecAuditLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecAuditLog.d.ts","sourceRoot":"","sources":["../../../src/utils/ExecAuditLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,MAAM,aAAa,GACrB,uBAAuB,GACvB,sBAAsB,GACtB,uBAAuB,GACvB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,+FAA+F;IAC/F,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,IAAI,CAW9E;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,CASjE;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ExecAuditLog — a persistent, append-only trail of every command Lemma ran or refused to
3
+ * run, and every file it wrote, outside of what any single session's in-memory ledger keeps.
4
+ *
5
+ * TokenReceipt's sessionLedger (../utils/TokenReceipt.ts) records similar events but only
6
+ * in a module-scoped array capped at 2000 entries and lost on process restart — fine for
7
+ * "what did this session just do", useless for "what has Lemma ever done in this workspace".
8
+ * This file exists so that question has a real, on-disk answer: same `~/.lemma-cache/`
9
+ * convention as SavingsLedger, but append-only JSONL rather than whole-file rewrite, so a
10
+ * crash mid-session can't lose prior entries.
11
+ */
12
+ import fs from "fs";
13
+ import path from "path";
14
+ const HOME = process.env.HOME || process.env.USERPROFILE || "~";
15
+ const AUDIT_LOG_FILE = path.join(HOME, ".lemma-cache", "exec-audit.jsonl");
16
+ export function recordExecAudit(entry) {
17
+ try {
18
+ const dir = path.dirname(AUDIT_LOG_FILE);
19
+ if (!fs.existsSync(dir)) {
20
+ fs.mkdirSync(dir, { recursive: true });
21
+ }
22
+ const line = JSON.stringify({ ...entry, timestamp: new Date().toISOString() });
23
+ fs.appendFileSync(AUDIT_LOG_FILE, line + "\n", "utf8");
24
+ }
25
+ catch {
26
+ // Auditing must never be why a legitimate action fails.
27
+ }
28
+ }
29
+ /** Reads back the audit trail. Exposed mainly for tests; the file itself is plain JSONL. */
30
+ export function readExecAuditLog(limit) {
31
+ try {
32
+ if (!fs.existsSync(AUDIT_LOG_FILE))
33
+ return [];
34
+ const lines = fs.readFileSync(AUDIT_LOG_FILE, "utf8").split("\n").filter((l) => l.trim().length > 0);
35
+ const entries = lines.map((l) => JSON.parse(l));
36
+ return limit ? entries.slice(-limit) : entries;
37
+ }
38
+ catch {
39
+ return [];
40
+ }
41
+ }
42
+ export function getExecAuditLogPath() {
43
+ return AUDIT_LOG_FILE;
44
+ }
45
+ //# sourceMappingURL=ExecAuditLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecAuditLog.js","sourceRoot":"","sources":["../../../src/utils/ExecAuditLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC;AAChE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;AAmB3E,MAAM,UAAU,eAAe,CAAC,KAAwC;IACtE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC/E,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrG,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAmB,CAAC,CAAC;QAClE,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import fs from 'fs';
9
9
  import path from 'path';
10
- import { savingsLedger } from './SavingsLedger';
10
+ import { savingsLedger } from './SavingsLedger.js';
11
11
  /**
12
12
  * Calculates metrics and writes a highly structured Markdown corporate report.
13
13
  */
@@ -17,8 +17,8 @@
17
17
  * costs the user a correct answer.
18
18
  */
19
19
  import crypto from "crypto";
20
- import { shouldEmitDelta } from "./OutputDelta";
21
- import { getSharedEntry, setSharedEntry } from "./SharedLedgerStore";
20
+ import { shouldEmitDelta } from "./OutputDelta.js";
21
+ import { getSharedEntry, setSharedEntry } from "./SharedLedgerStore.js";
22
22
  const entries = new Map();
23
23
  /** Mirrors the read cache's bound: this exists to save tokens, not to grow forever. */
24
24
  const MAX_LEDGER_CHARS = 2000000;
@@ -1,5 +1,5 @@
1
1
  import crypto from "crypto";
2
- import { getSharedEntry, setSharedEntry } from "./SharedLedgerStore";
2
+ import { getSharedEntry, setSharedEntry } from "./SharedLedgerStore.js";
3
3
  // Session-scoped (lives for the MCP server process lifetime, which is normally the
4
4
  // whole conversation). Tracks the content hash we last actually sent back to the
5
5
  // model for a given (filePath, view) pair, so a second identical read doesn't
@@ -9,7 +9,7 @@
9
9
  * every failure is swallowed — a warming run that throws or runs slow must never be visible
10
10
  * to whoever is waiting on the actual tool call.
11
11
  */
12
- import { AstSymbol } from "./AstSymbolCache";
12
+ import { AstSymbol } from "./AstSymbolCache.js";
13
13
  /**
14
14
  * `extractSymbolsWithTsCompiler` lives in `mcp/tools.ts`, which already imports this module —
15
15
  * importing it back here would be circular. The dispatcher registers it once at startup instead.
@@ -11,8 +11,8 @@
11
11
  */
12
12
  import fs from "fs";
13
13
  import path from "path";
14
- import { buildDepGraphMap, bfsDepGraph } from "./DepGraph";
15
- import { getOrExtractSymbols, hasFreshEntry } from "./AstSymbolCache";
14
+ import { buildDepGraphMap, bfsDepGraph } from "./DepGraph.js";
15
+ import { getOrExtractSymbols, hasFreshEntry } from "./AstSymbolCache.js";
16
16
  /** How many neighbor files a single warm pass will touch — bounded so this stays cheap. */
17
17
  const MAX_NEIGHBORS = 8;
18
18
  const MAX_DEPTH = 1;
@@ -14,7 +14,7 @@
14
14
  import fs from 'fs';
15
15
  import path from 'path';
16
16
  import crypto from 'crypto';
17
- import { LocalFsResolver } from '../subconscious/freshness/LocalFsResolver';
17
+ import { LocalFsResolver } from '../subconscious/freshness/LocalFsResolver.js';
18
18
  const CACHE_FILE = '.lemma/state-hash-cache.json';
19
19
  function getCachePath(projectRoot) {
20
20
  return path.join(projectRoot, CACHE_FILE);
@@ -1,4 +1,4 @@
1
- import type { SearchMatch } from "./WorkspaceSearch";
1
+ import type { SearchMatch } from "./WorkspaceSearch.js";
2
2
  export interface DeclaredSymbol {
3
3
  kind: "function" | "class" | "method" | "interface" | "type" | "enum" | "arrow";
4
4
  name: string;
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import fs from 'fs';
11
11
  import * as ts from 'typescript';
12
- import { safeResolvePath } from '../mcp/utils';
12
+ import { safeResolvePath } from '../mcp/utils.js';
13
13
  /**
14
14
  * Finds a class or interface node by name.
15
15
  */
@@ -10,7 +10,7 @@
10
10
  import fs from 'fs';
11
11
  import path from 'path';
12
12
  import * as ts from 'typescript';
13
- import { safeResolvePath } from '../mcp/utils';
13
+ import { safeResolvePath } from '../mcp/utils.js';
14
14
  /**
15
15
  * Traverses AST to find the node defining the specified symbol name.
16
16
  */
@@ -1,5 +1,5 @@
1
1
  import { execSync } from 'child_process';
2
- import { getBrain, deriveProjectId } from '../subconscious/TheBrainV2';
2
+ import { getBrain, deriveProjectId } from '../subconscious/TheBrainV2.js';
3
3
  function extractFailures(output) {
4
4
  const failures = [];
5
5
  // Jest/Vitest failure pattern
Binary file
@@ -1,6 +1,6 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
- import { config } from '../config';
3
+ import { config } from '../config/index.js';
4
4
  /**
5
5
  * Log levels
6
6
  */
@@ -8,7 +8,7 @@ import fs from 'fs';
8
8
  import path from 'path';
9
9
  import os from 'os';
10
10
  import http from 'http';
11
- import { recordRoiSaved, recordRoiSpent } from './RoiLedger';
11
+ import { recordRoiSaved, recordRoiSpent } from './RoiLedger.js';
12
12
  function getProxyPort() {
13
13
  try {
14
14
  const portFile = path.join(os.homedir(), '.lemma-cache/proxy.port');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxuss/lemma",
3
- "version": "1.18.0",
3
+ "version": "1.18.2",
4
4
  "description": "Intelligent AI Gateway for IDEs & Agents — Semantic cache, Privacy Firewall, Infrastructure Command Center, and Autonomous Cost-Optimization.",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -179,6 +179,7 @@
179
179
  "express": "^4.18.2",
180
180
  "openai": "^6.37.0",
181
181
  "pg": "^8.11.0",
182
+ "shell-quote": "^1.10.0",
182
183
  "socket.io": "^4.7.2",
183
184
  "typescript": "^5.3.3",
184
185
  "uuid": "^14.0.0"
@@ -195,6 +196,7 @@
195
196
  "@types/jest": "^29.5.11",
196
197
  "@types/node": "^20.11.0",
197
198
  "@types/pg": "^8.20.0",
199
+ "@types/shell-quote": "^1.7.5",
198
200
  "@types/uuid": "^10.0.0",
199
201
  "@types/ws": "^8.5.10",
200
202
  "jest": "^29.7.0",
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Lemma Crew Configuration
3
+ */
4
+ export interface LemmaCrewConfig {
5
+ /** WebSocket URL of the Lemma router */
6
+ routerUrl: string;
7
+ /** Agent ID */
8
+ agentId: string;
9
+ /** Agent role (CrewAI concept) */
10
+ role: string;
11
+ /** Agent goal */
12
+ goal: string;
13
+ /** Agent backstory */
14
+ backstory?: string;
15
+ /** Capabilities this agent provides */
16
+ capabilities?: string[];
17
+ /** Enable verbose logging */
18
+ verbose?: boolean;
19
+ /** Allow task delegation */
20
+ allowDelegation?: boolean;
21
+ }
22
+ /**
23
+ * Task execution request
24
+ */
25
+ export interface TaskRequest {
26
+ description: string;
27
+ expectedOutput?: string;
28
+ context?: any;
29
+ allowDelegation?: boolean;
30
+ }
31
+ /**
32
+ * Task execution result
33
+ */
34
+ export interface TaskResult {
35
+ success: boolean;
36
+ output?: string;
37
+ error?: string;
38
+ executionTime: number;
39
+ cached?: boolean;
40
+ similarity?: number;
41
+ }
42
+ /**
43
+ * CrewAI Agent integrated with Lemma Router
44
+ */
45
+ export declare class LemmaCrewAgent {
46
+ private ws;
47
+ private config;
48
+ private connected;
49
+ private pendingTasks;
50
+ constructor(config: LemmaCrewConfig);
51
+ /**
52
+ * Connect to Lemma router
53
+ */
54
+ connect(): Promise<void>;
55
+ /**
56
+ * Disconnect from router
57
+ */
58
+ disconnect(): void;
59
+ /**
60
+ * Execute a task
61
+ */
62
+ execute(task: TaskRequest): Promise<TaskResult>;
63
+ /**
64
+ * Handle incoming message from router
65
+ */
66
+ private handleMessage;
67
+ /**
68
+ * Handle task assignment from router
69
+ */
70
+ private handleTaskAssign;
71
+ /**
72
+ * Handle task response from router
73
+ */
74
+ private handleTaskResponse;
75
+ /**
76
+ * Perform task (override in subclasses)
77
+ */
78
+ protected performTask(description: string, parameters: any): Promise<string>;
79
+ /**
80
+ * Send message to router
81
+ */
82
+ private send;
83
+ /**
84
+ * Log message if verbose
85
+ */
86
+ private log;
87
+ /**
88
+ * Get agent info
89
+ */
90
+ getInfo(): {
91
+ agentId: string;
92
+ role: string;
93
+ goal: string;
94
+ backstory: string;
95
+ capabilities: string[];
96
+ };
97
+ }
98
+ /**
99
+ * Lemma Crew - Multi-agent orchestration
100
+ */
101
+ export interface LemmaCrewOptions {
102
+ routerUrl: string;
103
+ agents: Omit<LemmaCrewConfig, 'routerUrl'>[];
104
+ verbose?: boolean;
105
+ }
106
+ export declare class LemmaCrew {
107
+ private agents;
108
+ private config;
109
+ constructor(config: LemmaCrewOptions);
110
+ /**
111
+ * Connect all agents
112
+ */
113
+ connect(): Promise<void>;
114
+ /**
115
+ * Disconnect all agents
116
+ */
117
+ disconnect(): void;
118
+ /**
119
+ * Execute a multi-agent workflow
120
+ */
121
+ kickoff(options: {
122
+ task: string;
123
+ process?: 'sequential' | 'hierarchical';
124
+ }): Promise<any>;
125
+ /**
126
+ * Get all agents
127
+ */
128
+ getAgents(): LemmaCrewAgent[];
129
+ }
130
+ export default LemmaCrewAgent;
131
+ export * from './memory';
@@ -0,0 +1,325 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.LemmaCrew = exports.LemmaCrewAgent = void 0;
21
+ const ws_1 = __importDefault(require("ws"));
22
+ const uuid_1 = require("uuid");
23
+ /**
24
+ * CrewAI Agent integrated with Lemma Router
25
+ */
26
+ class LemmaCrewAgent {
27
+ constructor(config) {
28
+ this.ws = null;
29
+ this.connected = false;
30
+ this.pendingTasks = new Map();
31
+ this.config = {
32
+ routerUrl: config.routerUrl,
33
+ agentId: config.agentId,
34
+ role: config.role,
35
+ goal: config.goal,
36
+ backstory: config.backstory || '',
37
+ capabilities: config.capabilities || ['crewai'],
38
+ verbose: config.verbose || false,
39
+ allowDelegation: config.allowDelegation !== false,
40
+ };
41
+ }
42
+ /**
43
+ * Connect to Lemma router
44
+ */
45
+ async connect() {
46
+ return new Promise((resolve, reject) => {
47
+ this.ws = new ws_1.default(this.config.routerUrl);
48
+ this.ws.on('open', () => {
49
+ this.log('Connected to Lemma router');
50
+ // Send handshake
51
+ this.send({
52
+ type: 'HANDSHAKE',
53
+ messageId: (0, uuid_1.v4)(),
54
+ timestamp: Date.now(),
55
+ payload: {
56
+ agentId: this.config.agentId,
57
+ agentName: `${this.config.role} (CrewAI)`,
58
+ version: '1.0.0',
59
+ capabilities: this.config.capabilities.map(name => ({
60
+ name,
61
+ version: '1.0.0',
62
+ })),
63
+ metadata: {
64
+ role: this.config.role,
65
+ goal: this.config.goal,
66
+ backstory: this.config.backstory,
67
+ framework: 'crewai',
68
+ },
69
+ },
70
+ });
71
+ });
72
+ this.ws.on('message', (data) => {
73
+ try {
74
+ const message = JSON.parse(data.toString());
75
+ this.handleMessage(message);
76
+ if (message.type === 'HANDSHAKE_ACK') {
77
+ this.connected = true;
78
+ this.log('Handshake acknowledged');
79
+ resolve();
80
+ }
81
+ }
82
+ catch (error) {
83
+ console.error('Error parsing message:', error);
84
+ }
85
+ });
86
+ this.ws.on('error', (error) => {
87
+ console.error('WebSocket error:', error);
88
+ if (!this.connected) {
89
+ reject(error);
90
+ }
91
+ });
92
+ this.ws.on('close', () => {
93
+ this.connected = false;
94
+ this.log('Disconnected from router');
95
+ });
96
+ // Connection timeout
97
+ setTimeout(() => {
98
+ if (!this.connected) {
99
+ reject(new Error('Connection timeout'));
100
+ }
101
+ }, 10000);
102
+ });
103
+ }
104
+ /**
105
+ * Disconnect from router
106
+ */
107
+ disconnect() {
108
+ if (this.ws) {
109
+ this.ws.close();
110
+ this.ws = null;
111
+ this.connected = false;
112
+ }
113
+ }
114
+ /**
115
+ * Execute a task
116
+ */
117
+ async execute(task) {
118
+ if (!this.connected) {
119
+ throw new Error('Not connected to router. Call connect() first.');
120
+ }
121
+ const taskId = (0, uuid_1.v4)();
122
+ this.log(`Executing task: ${task.description}`);
123
+ return new Promise((resolve, reject) => {
124
+ this.pendingTasks.set(taskId, { resolve, reject });
125
+ // Send task request to router
126
+ this.send({
127
+ type: 'TASK_REQUEST',
128
+ messageId: (0, uuid_1.v4)(),
129
+ timestamp: Date.now(),
130
+ payload: {
131
+ taskId,
132
+ description: task.description,
133
+ requiredCapabilities: this.config.capabilities,
134
+ parameters: {
135
+ expectedOutput: task.expectedOutput,
136
+ context: task.context,
137
+ allowDelegation: task.allowDelegation ?? this.config.allowDelegation,
138
+ },
139
+ },
140
+ });
141
+ });
142
+ }
143
+ /**
144
+ * Handle incoming message from router
145
+ */
146
+ handleMessage(message) {
147
+ switch (message.type) {
148
+ case 'TASK_ASSIGN':
149
+ this.handleTaskAssign(message);
150
+ break;
151
+ case 'TASK_RESPONSE':
152
+ this.handleTaskResponse(message);
153
+ break;
154
+ case 'PING':
155
+ this.send({
156
+ type: 'PONG',
157
+ messageId: (0, uuid_1.v4)(),
158
+ timestamp: Date.now(),
159
+ payload: {
160
+ originalMessageId: message.messageId,
161
+ },
162
+ });
163
+ break;
164
+ }
165
+ }
166
+ /**
167
+ * Handle task assignment from router
168
+ */
169
+ async handleTaskAssign(message) {
170
+ const { taskId, description, parameters } = message.payload;
171
+ const startTime = Date.now();
172
+ this.log(`Received task assignment: ${description}`);
173
+ try {
174
+ // Execute the task (override this method in subclasses)
175
+ const output = await this.performTask(description, parameters);
176
+ // Send response back to router
177
+ this.send({
178
+ type: 'TASK_RESPONSE',
179
+ messageId: (0, uuid_1.v4)(),
180
+ timestamp: Date.now(),
181
+ payload: {
182
+ taskId,
183
+ success: true,
184
+ result: output,
185
+ executionTime: Date.now() - startTime,
186
+ taskDescription: description,
187
+ },
188
+ });
189
+ }
190
+ catch (error) {
191
+ this.send({
192
+ type: 'TASK_RESPONSE',
193
+ messageId: (0, uuid_1.v4)(),
194
+ timestamp: Date.now(),
195
+ payload: {
196
+ taskId,
197
+ success: false,
198
+ error: error instanceof Error ? error.message : 'Unknown error',
199
+ executionTime: Date.now() - startTime,
200
+ },
201
+ });
202
+ }
203
+ }
204
+ /**
205
+ * Handle task response from router
206
+ */
207
+ handleTaskResponse(message) {
208
+ const { taskId, success, result, error, executionTime, cached, similarity } = message.payload;
209
+ const pending = this.pendingTasks.get(taskId);
210
+ if (!pending) {
211
+ return;
212
+ }
213
+ this.pendingTasks.delete(taskId);
214
+ if (success) {
215
+ this.log(`Task completed in ${executionTime}ms${cached ? ' (cached)' : ''}`);
216
+ pending.resolve({
217
+ success: true,
218
+ output: result,
219
+ executionTime,
220
+ cached,
221
+ similarity,
222
+ });
223
+ }
224
+ else {
225
+ pending.reject(new Error(error || 'Task failed'));
226
+ }
227
+ }
228
+ /**
229
+ * Perform task (override in subclasses)
230
+ */
231
+ async performTask(description, parameters) {
232
+ // Default implementation - subclasses should override
233
+ return `Task completed: ${description}`;
234
+ }
235
+ /**
236
+ * Send message to router
237
+ */
238
+ send(message) {
239
+ if (!this.ws || !this.connected) {
240
+ throw new Error('Not connected to router');
241
+ }
242
+ this.ws.send(JSON.stringify(message));
243
+ }
244
+ /**
245
+ * Log message if verbose
246
+ */
247
+ log(message) {
248
+ if (this.config.verbose) {
249
+ console.log(`[${this.config.role}] ${message}`);
250
+ }
251
+ }
252
+ /**
253
+ * Get agent info
254
+ */
255
+ getInfo() {
256
+ return {
257
+ agentId: this.config.agentId,
258
+ role: this.config.role,
259
+ goal: this.config.goal,
260
+ backstory: this.config.backstory,
261
+ capabilities: this.config.capabilities,
262
+ };
263
+ }
264
+ }
265
+ exports.LemmaCrewAgent = LemmaCrewAgent;
266
+ class LemmaCrew {
267
+ constructor(config) {
268
+ this.agents = [];
269
+ this.config = config;
270
+ // Create agents
271
+ this.agents = config.agents.map(agentConfig => new LemmaCrewAgent({
272
+ ...agentConfig,
273
+ routerUrl: config.routerUrl,
274
+ verbose: config.verbose,
275
+ }));
276
+ }
277
+ /**
278
+ * Connect all agents
279
+ */
280
+ async connect() {
281
+ await Promise.all(this.agents.map(agent => agent.connect()));
282
+ }
283
+ /**
284
+ * Disconnect all agents
285
+ */
286
+ disconnect() {
287
+ this.agents.forEach(agent => agent.disconnect());
288
+ }
289
+ /**
290
+ * Execute a multi-agent workflow
291
+ */
292
+ async kickoff(options) {
293
+ const { task, process = 'sequential' } = options;
294
+ if (process === 'sequential') {
295
+ // Execute tasks sequentially through agents
296
+ let result = task;
297
+ for (const agent of this.agents) {
298
+ const taskResult = await agent.execute({
299
+ description: result,
300
+ });
301
+ result = taskResult.output || result;
302
+ }
303
+ return result;
304
+ }
305
+ else {
306
+ // Hierarchical - first agent coordinates others
307
+ const manager = this.agents[0];
308
+ return await manager.execute({
309
+ description: task,
310
+ allowDelegation: true,
311
+ });
312
+ }
313
+ }
314
+ /**
315
+ * Get all agents
316
+ */
317
+ getAgents() {
318
+ return this.agents;
319
+ }
320
+ }
321
+ exports.LemmaCrew = LemmaCrew;
322
+ exports.default = LemmaCrewAgent;
323
+ // Lemma /v2 Verifiable Memory API — a separate surface from LemmaCrewAgent
324
+ // above (that talks to the WebSocket orchestration router). See memory.ts.
325
+ __exportStar(require("./memory"), exports);