@nxuss/lemma 1.7.0 → 1.7.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 (158) hide show
  1. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  2. package/dist/cjs/mcp/tools.js +115 -15
  3. package/dist/cjs/mcp/tools.js.map +1 -1
  4. package/dist/cjs/proxy/ComplexityRouter.d.ts +7 -0
  5. package/dist/cjs/proxy/ComplexityRouter.d.ts.map +1 -1
  6. package/dist/cjs/proxy/ComplexityRouter.js +18 -5
  7. package/dist/cjs/proxy/ComplexityRouter.js.map +1 -1
  8. package/dist/cjs/utils/TokenReceipt.d.ts +6 -0
  9. package/dist/cjs/utils/TokenReceipt.d.ts.map +1 -1
  10. package/dist/cjs/utils/TokenReceipt.js +9 -0
  11. package/dist/cjs/utils/TokenReceipt.js.map +1 -1
  12. package/dist/esm/api/dashboardRoutes.d.ts +3 -3
  13. package/dist/esm/api/dashboardRoutes.js +1 -1
  14. package/dist/esm/api/server.d.ts +4 -4
  15. package/dist/esm/api/server.js +3 -3
  16. package/dist/esm/autopilot/AutopilotWatcher.js +3 -3
  17. package/dist/esm/autopilot/Notifier.d.ts +1 -1
  18. package/dist/esm/cli/lemma-proxy.js +14 -14
  19. package/dist/esm/cli/stack.d.ts +4 -4
  20. package/dist/esm/cli/stack.js +5 -5
  21. package/dist/esm/cloud/KeyManager.d.ts +1 -1
  22. package/dist/esm/cloud/KeyManager.js +1 -1
  23. package/dist/esm/cloud/TenantCache.d.ts +1 -1
  24. package/dist/esm/cloud/TenantCache.js +1 -1
  25. package/dist/esm/cloud/index.d.ts +3 -3
  26. package/dist/esm/cloud/index.js +3 -3
  27. package/dist/esm/cloud/server.d.ts +3 -3
  28. package/dist/esm/cloud/server.js +5 -5
  29. package/dist/esm/config/index.d.ts +1 -1
  30. package/dist/esm/config/index.js +1 -1
  31. package/dist/esm/consensus/index.d.ts +2 -2
  32. package/dist/esm/consensus/index.js +2 -2
  33. package/dist/esm/core/AgentRegistry.d.ts +1 -1
  34. package/dist/esm/core/AgentRegistry.js +1 -1
  35. package/dist/esm/core/DashboardBroadcaster.d.ts +3 -3
  36. package/dist/esm/core/DashboardBroadcaster.js +2 -2
  37. package/dist/esm/core/DashboardWebSocketServer.d.ts +1 -1
  38. package/dist/esm/core/DashboardWebSocketServer.js +1 -1
  39. package/dist/esm/core/GhostAlchemist.js +1 -1
  40. package/dist/esm/core/GhostListener.js +2 -2
  41. package/dist/esm/core/OrchestrationEngine.d.ts +3 -3
  42. package/dist/esm/core/OrchestrationEngine.js +2 -2
  43. package/dist/esm/core/SubconsciousEngine.d.ts +1 -1
  44. package/dist/esm/core/SubconsciousEngine.js +2 -2
  45. package/dist/esm/core/WebSocketServer.d.ts +2 -2
  46. package/dist/esm/core/WebSocketServer.js +1 -1
  47. package/dist/esm/core/index.d.ts +6 -6
  48. package/dist/esm/core/index.js +6 -6
  49. package/dist/esm/core/router.d.ts +3 -3
  50. package/dist/esm/core/router.js +1 -1
  51. package/dist/esm/db/database.js +1 -1
  52. package/dist/esm/embed.d.ts +2 -2
  53. package/dist/esm/embed.js +2 -2
  54. package/dist/esm/examples/basic-usage.js +1 -1
  55. package/dist/esm/index.d.ts +14 -14
  56. package/dist/esm/index.js +14 -14
  57. package/dist/esm/infra/analyzers/DriftDetector.d.ts +1 -1
  58. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts +1 -1
  59. package/dist/esm/infra/analyzers/MonolithAnalyzer.d.ts +1 -1
  60. package/dist/esm/infra/analyzers/index.d.ts +3 -3
  61. package/dist/esm/infra/analyzers/index.js +3 -3
  62. package/dist/esm/infra/cli.js +2 -2
  63. package/dist/esm/infra/config.d.ts +1 -1
  64. package/dist/esm/infra/index.d.ts +5 -5
  65. package/dist/esm/infra/index.js +5 -5
  66. package/dist/esm/infra/mcp-tools.js +5 -5
  67. package/dist/esm/infra/providers/InfraProvider.d.ts +1 -1
  68. package/dist/esm/infra/providers/JenkinsProvider.d.ts +2 -2
  69. package/dist/esm/infra/providers/OKDProvider.d.ts +2 -2
  70. package/dist/esm/infra/providers/TerraformProvider.d.ts +2 -2
  71. package/dist/esm/infra/providers/index.d.ts +5 -5
  72. package/dist/esm/infra/providers/index.js +3 -3
  73. package/dist/esm/mcp/index.js +5 -5
  74. package/dist/esm/mcp/resources.js +2 -2
  75. package/dist/esm/mcp/tools.d.ts.map +1 -1
  76. package/dist/esm/mcp/tools.js +153 -53
  77. package/dist/esm/mcp/tools.js.map +1 -1
  78. package/dist/esm/observability/IdeContextSync.d.ts +1 -1
  79. package/dist/esm/observability/IdeContextSync.js +5 -5
  80. package/dist/esm/pr-review/PRReviewEngine.d.ts +1 -1
  81. package/dist/esm/pr-review/PRReviewEngine.js +4 -4
  82. package/dist/esm/pr-review/ReviewStore.d.ts +1 -1
  83. package/dist/esm/pr-review/adapters/AzureDevOpsAdapter.d.ts +2 -2
  84. package/dist/esm/pr-review/adapters/AzureDevOpsAdapter.js +1 -1
  85. package/dist/esm/pr-review/adapters/GitHubAdapter.d.ts +2 -2
  86. package/dist/esm/pr-review/adapters/GitHubAdapter.js +1 -1
  87. package/dist/esm/pr-review/adapters/GitLabAdapter.d.ts +2 -2
  88. package/dist/esm/pr-review/adapters/GitLabAdapter.js +1 -1
  89. package/dist/esm/pr-review/adapters/GitPlatformAdapter.d.ts +1 -1
  90. package/dist/esm/pr-review/adapters/index.d.ts +4 -4
  91. package/dist/esm/pr-review/adapters/index.js +3 -3
  92. package/dist/esm/pr-review/analyzers/QualityGrader.d.ts +1 -1
  93. package/dist/esm/pr-review/analyzers/RegressionDetector.d.ts +1 -1
  94. package/dist/esm/pr-review/analyzers/SecurityScanner.d.ts +1 -1
  95. package/dist/esm/pr-review/analyzers/StaticAnalyzer.d.ts +1 -1
  96. package/dist/esm/pr-review/analyzers/index.d.ts +8 -8
  97. package/dist/esm/pr-review/analyzers/index.js +4 -4
  98. package/dist/esm/pr-review/bridge/BrainBridge.d.ts +1 -1
  99. package/dist/esm/pr-review/bridge/BrainBridge.js +1 -1
  100. package/dist/esm/pr-review/bridge/index.d.ts +1 -1
  101. package/dist/esm/pr-review/bridge/index.js +1 -1
  102. package/dist/esm/pr-review/index.d.ts +4 -4
  103. package/dist/esm/pr-review/index.js +2 -2
  104. package/dist/esm/pr-review/reviewRunner.d.ts +2 -2
  105. package/dist/esm/pr-review/reviewRunner.js +6 -6
  106. package/dist/esm/pr-review/webhook/WebhookServer.js +1 -1
  107. package/dist/esm/pr-review/webhook/index.d.ts +1 -1
  108. package/dist/esm/pr-review/webhook/index.js +1 -1
  109. package/dist/esm/protocol/flows.d.ts +1 -1
  110. package/dist/esm/protocol/flows.js +1 -1
  111. package/dist/esm/protocol/index.d.ts +4 -4
  112. package/dist/esm/protocol/index.js +4 -4
  113. package/dist/esm/protocol/utils.d.ts +1 -1
  114. package/dist/esm/protocol/utils.js +2 -2
  115. package/dist/esm/protocol/validators.d.ts +1 -1
  116. package/dist/esm/protocol/validators.js +1 -1
  117. package/dist/esm/proxy/ComplexityRouter.d.ts +7 -0
  118. package/dist/esm/proxy/ComplexityRouter.d.ts.map +1 -1
  119. package/dist/esm/proxy/ComplexityRouter.js +18 -5
  120. package/dist/esm/proxy/ComplexityRouter.js.map +1 -1
  121. package/dist/esm/proxy/ContextInjector.d.ts +1 -1
  122. package/dist/esm/proxy/Gatekeeper.d.ts +1 -1
  123. package/dist/esm/security/SecurityMiddleware.d.ts +1 -1
  124. package/dist/esm/security/SecurityMiddleware.js +3 -3
  125. package/dist/esm/security/index.d.ts +4 -4
  126. package/dist/esm/security/index.js +4 -4
  127. package/dist/esm/speculative/SpeculativeCache.d.ts +2 -2
  128. package/dist/esm/speculative/SpeculativeEngine.d.ts +2 -2
  129. package/dist/esm/speculative/SpeculativeEngine.js +3 -3
  130. package/dist/esm/speculative/WorkerPool.d.ts +1 -1
  131. package/dist/esm/speculative/index.d.ts +4 -4
  132. package/dist/esm/speculative/index.js +4 -4
  133. package/dist/esm/subconscious/SemanticCache.d.ts +2 -2
  134. package/dist/esm/subconscious/SemanticCache.js +2 -2
  135. package/dist/esm/subconscious/SubconsciousEngine.d.ts +1 -1
  136. package/dist/esm/subconscious/SubconsciousEngine.js +3 -3
  137. package/dist/esm/subconscious/index.d.ts +4 -4
  138. package/dist/esm/subconscious/index.js +4 -4
  139. package/dist/esm/utils/AutoContextBundle.d.ts +1 -1
  140. package/dist/esm/utils/AutoContextBundle.js +4 -4
  141. package/dist/esm/utils/BulkFileDigest.js +2 -2
  142. package/dist/esm/utils/ClipboardWatcher.js +2 -2
  143. package/dist/esm/utils/ContextCollapser.js +1 -1
  144. package/dist/esm/utils/ExecutiveReport.js +1 -1
  145. package/dist/esm/utils/StructuralSearch.d.ts +1 -1
  146. package/dist/esm/utils/SurgicalASTInsert.js +1 -1
  147. package/dist/esm/utils/SymbolSurgicalContext.js +1 -1
  148. package/dist/esm/utils/TestAutofixInterceptor.js +1 -1
  149. package/dist/esm/utils/TokenReceipt.d.ts +6 -0
  150. package/dist/esm/utils/TokenReceipt.d.ts.map +1 -1
  151. package/dist/esm/utils/TokenReceipt.js +8 -0
  152. package/dist/esm/utils/TokenReceipt.js.map +1 -1
  153. package/dist/esm/utils/WorkspaceSearch.js +0 -0
  154. package/dist/esm/utils/logger.js +1 -1
  155. package/package.json +6 -9
  156. package/sdks/crewai/README.md +178 -0
  157. package/sdks/crewai/dist/index.d.ts +130 -0
  158. package/sdks/crewai/dist/index.js +308 -0
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LemmaCrew = exports.LemmaCrewAgent = void 0;
7
+ const ws_1 = __importDefault(require("ws"));
8
+ const uuid_1 = require("uuid");
9
+ /**
10
+ * CrewAI Agent integrated with Lemma Router
11
+ */
12
+ class LemmaCrewAgent {
13
+ constructor(config) {
14
+ this.ws = null;
15
+ this.connected = false;
16
+ this.pendingTasks = new Map();
17
+ this.config = {
18
+ routerUrl: config.routerUrl,
19
+ agentId: config.agentId,
20
+ role: config.role,
21
+ goal: config.goal,
22
+ backstory: config.backstory || '',
23
+ capabilities: config.capabilities || ['crewai'],
24
+ verbose: config.verbose || false,
25
+ allowDelegation: config.allowDelegation !== false,
26
+ };
27
+ }
28
+ /**
29
+ * Connect to Lemma router
30
+ */
31
+ async connect() {
32
+ return new Promise((resolve, reject) => {
33
+ this.ws = new ws_1.default(this.config.routerUrl);
34
+ this.ws.on('open', () => {
35
+ this.log('Connected to Lemma router');
36
+ // Send handshake
37
+ this.send({
38
+ type: 'HANDSHAKE',
39
+ messageId: (0, uuid_1.v4)(),
40
+ timestamp: Date.now(),
41
+ payload: {
42
+ agentId: this.config.agentId,
43
+ agentName: `${this.config.role} (CrewAI)`,
44
+ version: '1.0.0',
45
+ capabilities: this.config.capabilities.map(name => ({
46
+ name,
47
+ version: '1.0.0',
48
+ })),
49
+ metadata: {
50
+ role: this.config.role,
51
+ goal: this.config.goal,
52
+ backstory: this.config.backstory,
53
+ framework: 'crewai',
54
+ },
55
+ },
56
+ });
57
+ });
58
+ this.ws.on('message', (data) => {
59
+ try {
60
+ const message = JSON.parse(data.toString());
61
+ this.handleMessage(message);
62
+ if (message.type === 'HANDSHAKE_ACK') {
63
+ this.connected = true;
64
+ this.log('Handshake acknowledged');
65
+ resolve();
66
+ }
67
+ }
68
+ catch (error) {
69
+ console.error('Error parsing message:', error);
70
+ }
71
+ });
72
+ this.ws.on('error', (error) => {
73
+ console.error('WebSocket error:', error);
74
+ if (!this.connected) {
75
+ reject(error);
76
+ }
77
+ });
78
+ this.ws.on('close', () => {
79
+ this.connected = false;
80
+ this.log('Disconnected from router');
81
+ });
82
+ // Connection timeout
83
+ setTimeout(() => {
84
+ if (!this.connected) {
85
+ reject(new Error('Connection timeout'));
86
+ }
87
+ }, 10000);
88
+ });
89
+ }
90
+ /**
91
+ * Disconnect from router
92
+ */
93
+ disconnect() {
94
+ if (this.ws) {
95
+ this.ws.close();
96
+ this.ws = null;
97
+ this.connected = false;
98
+ }
99
+ }
100
+ /**
101
+ * Execute a task
102
+ */
103
+ async execute(task) {
104
+ if (!this.connected) {
105
+ throw new Error('Not connected to router. Call connect() first.');
106
+ }
107
+ const taskId = (0, uuid_1.v4)();
108
+ this.log(`Executing task: ${task.description}`);
109
+ return new Promise((resolve, reject) => {
110
+ this.pendingTasks.set(taskId, { resolve, reject });
111
+ // Send task request to router
112
+ this.send({
113
+ type: 'TASK_REQUEST',
114
+ messageId: (0, uuid_1.v4)(),
115
+ timestamp: Date.now(),
116
+ payload: {
117
+ taskId,
118
+ description: task.description,
119
+ requiredCapabilities: this.config.capabilities,
120
+ parameters: {
121
+ expectedOutput: task.expectedOutput,
122
+ context: task.context,
123
+ allowDelegation: task.allowDelegation ?? this.config.allowDelegation,
124
+ },
125
+ },
126
+ });
127
+ });
128
+ }
129
+ /**
130
+ * Handle incoming message from router
131
+ */
132
+ handleMessage(message) {
133
+ switch (message.type) {
134
+ case 'TASK_ASSIGN':
135
+ this.handleTaskAssign(message);
136
+ break;
137
+ case 'TASK_RESPONSE':
138
+ this.handleTaskResponse(message);
139
+ break;
140
+ case 'PING':
141
+ this.send({
142
+ type: 'PONG',
143
+ messageId: (0, uuid_1.v4)(),
144
+ timestamp: Date.now(),
145
+ payload: {
146
+ originalMessageId: message.messageId,
147
+ },
148
+ });
149
+ break;
150
+ }
151
+ }
152
+ /**
153
+ * Handle task assignment from router
154
+ */
155
+ async handleTaskAssign(message) {
156
+ const { taskId, description, parameters } = message.payload;
157
+ const startTime = Date.now();
158
+ this.log(`Received task assignment: ${description}`);
159
+ try {
160
+ // Execute the task (override this method in subclasses)
161
+ const output = await this.performTask(description, parameters);
162
+ // Send response back to router
163
+ this.send({
164
+ type: 'TASK_RESPONSE',
165
+ messageId: (0, uuid_1.v4)(),
166
+ timestamp: Date.now(),
167
+ payload: {
168
+ taskId,
169
+ success: true,
170
+ result: output,
171
+ executionTime: Date.now() - startTime,
172
+ taskDescription: description,
173
+ },
174
+ });
175
+ }
176
+ catch (error) {
177
+ this.send({
178
+ type: 'TASK_RESPONSE',
179
+ messageId: (0, uuid_1.v4)(),
180
+ timestamp: Date.now(),
181
+ payload: {
182
+ taskId,
183
+ success: false,
184
+ error: error instanceof Error ? error.message : 'Unknown error',
185
+ executionTime: Date.now() - startTime,
186
+ },
187
+ });
188
+ }
189
+ }
190
+ /**
191
+ * Handle task response from router
192
+ */
193
+ handleTaskResponse(message) {
194
+ const { taskId, success, result, error, executionTime, cached, similarity } = message.payload;
195
+ const pending = this.pendingTasks.get(taskId);
196
+ if (!pending) {
197
+ return;
198
+ }
199
+ this.pendingTasks.delete(taskId);
200
+ if (success) {
201
+ this.log(`Task completed in ${executionTime}ms${cached ? ' (cached)' : ''}`);
202
+ pending.resolve({
203
+ success: true,
204
+ output: result,
205
+ executionTime,
206
+ cached,
207
+ similarity,
208
+ });
209
+ }
210
+ else {
211
+ pending.reject(new Error(error || 'Task failed'));
212
+ }
213
+ }
214
+ /**
215
+ * Perform task (override in subclasses)
216
+ */
217
+ async performTask(description, parameters) {
218
+ // Default implementation - subclasses should override
219
+ return `Task completed: ${description}`;
220
+ }
221
+ /**
222
+ * Send message to router
223
+ */
224
+ send(message) {
225
+ if (!this.ws || !this.connected) {
226
+ throw new Error('Not connected to router');
227
+ }
228
+ this.ws.send(JSON.stringify(message));
229
+ }
230
+ /**
231
+ * Log message if verbose
232
+ */
233
+ log(message) {
234
+ if (this.config.verbose) {
235
+ console.log(`[${this.config.role}] ${message}`);
236
+ }
237
+ }
238
+ /**
239
+ * Get agent info
240
+ */
241
+ getInfo() {
242
+ return {
243
+ agentId: this.config.agentId,
244
+ role: this.config.role,
245
+ goal: this.config.goal,
246
+ backstory: this.config.backstory,
247
+ capabilities: this.config.capabilities,
248
+ };
249
+ }
250
+ }
251
+ exports.LemmaCrewAgent = LemmaCrewAgent;
252
+ class LemmaCrew {
253
+ constructor(config) {
254
+ this.agents = [];
255
+ this.config = config;
256
+ // Create agents
257
+ this.agents = config.agents.map(agentConfig => new LemmaCrewAgent({
258
+ ...agentConfig,
259
+ routerUrl: config.routerUrl,
260
+ verbose: config.verbose,
261
+ }));
262
+ }
263
+ /**
264
+ * Connect all agents
265
+ */
266
+ async connect() {
267
+ await Promise.all(this.agents.map(agent => agent.connect()));
268
+ }
269
+ /**
270
+ * Disconnect all agents
271
+ */
272
+ disconnect() {
273
+ this.agents.forEach(agent => agent.disconnect());
274
+ }
275
+ /**
276
+ * Execute a multi-agent workflow
277
+ */
278
+ async kickoff(options) {
279
+ const { task, process = 'sequential' } = options;
280
+ if (process === 'sequential') {
281
+ // Execute tasks sequentially through agents
282
+ let result = task;
283
+ for (const agent of this.agents) {
284
+ const taskResult = await agent.execute({
285
+ description: result,
286
+ });
287
+ result = taskResult.output || result;
288
+ }
289
+ return result;
290
+ }
291
+ else {
292
+ // Hierarchical - first agent coordinates others
293
+ const manager = this.agents[0];
294
+ return await manager.execute({
295
+ description: task,
296
+ allowDelegation: true,
297
+ });
298
+ }
299
+ }
300
+ /**
301
+ * Get all agents
302
+ */
303
+ getAgents() {
304
+ return this.agents;
305
+ }
306
+ }
307
+ exports.LemmaCrew = LemmaCrew;
308
+ exports.default = LemmaCrewAgent;