atlas-pipeline-mcp 1.0.19 → 1.0.21

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 (43) hide show
  1. package/dist/mcp.js +191 -0
  2. package/dist/mcp.js.map +1 -1
  3. package/dist/tools/context.d.ts +33 -7
  4. package/dist/tools/context.d.ts.map +1 -1
  5. package/dist/tools/context.js +167 -82
  6. package/dist/tools/context.js.map +1 -1
  7. package/dist/tools/dashboard.d.ts +107 -0
  8. package/dist/tools/dashboard.d.ts.map +1 -0
  9. package/dist/tools/dashboard.js +544 -0
  10. package/dist/tools/dashboard.js.map +1 -0
  11. package/dist/tools/dependencies.d.ts +105 -0
  12. package/dist/tools/dependencies.d.ts.map +1 -0
  13. package/dist/tools/dependencies.js +410 -0
  14. package/dist/tools/dependencies.js.map +1 -0
  15. package/dist/tools/git.d.ts +27 -4
  16. package/dist/tools/git.d.ts.map +1 -1
  17. package/dist/tools/git.js +156 -59
  18. package/dist/tools/git.js.map +1 -1
  19. package/dist/tools/profiler.d.ts +83 -0
  20. package/dist/tools/profiler.d.ts.map +1 -0
  21. package/dist/tools/profiler.js +385 -0
  22. package/dist/tools/profiler.js.map +1 -0
  23. package/dist/tools/refactor.d.ts +63 -0
  24. package/dist/tools/refactor.d.ts.map +1 -0
  25. package/dist/tools/refactor.js +308 -0
  26. package/dist/tools/refactor.js.map +1 -0
  27. package/dist/tools/resource-manager.d.ts +167 -0
  28. package/dist/tools/resource-manager.d.ts.map +1 -0
  29. package/dist/tools/resource-manager.js +352 -0
  30. package/dist/tools/resource-manager.js.map +1 -0
  31. package/dist/tools/review.d.ts +98 -0
  32. package/dist/tools/review.d.ts.map +1 -0
  33. package/dist/tools/review.js +428 -0
  34. package/dist/tools/review.js.map +1 -0
  35. package/dist/tools/test-utils.d.ts +170 -0
  36. package/dist/tools/test-utils.d.ts.map +1 -0
  37. package/dist/tools/test-utils.js +490 -0
  38. package/dist/tools/test-utils.js.map +1 -0
  39. package/dist/tools/validation.d.ts +237 -0
  40. package/dist/tools/validation.d.ts.map +1 -0
  41. package/dist/tools/validation.js +323 -0
  42. package/dist/tools/validation.js.map +1 -0
  43. package/package.json +1 -1
@@ -0,0 +1,352 @@
1
+ /**
2
+ * Atlas Server - Resource Management and Cleanup
3
+ *
4
+ * Comprehensive resource lifecycle management to prevent memory leaks:
5
+ * - Automatic cleanup of resources
6
+ * - Graceful shutdown handling
7
+ * - Resource pooling and recycling
8
+ * - Memory usage tracking
9
+ * - File handle management
10
+ *
11
+ * @module resource-manager
12
+ * @version 1.0.0
13
+ */
14
+ import { logger } from '../utils.js';
15
+ /**
16
+ * Git instance wrapper with lifecycle management
17
+ */
18
+ export class ManagedGitInstance {
19
+ repoPath;
20
+ git;
21
+ id;
22
+ type = 'git-instance';
23
+ createdAt;
24
+ lastAccessedAt;
25
+ constructor(repoPath, git) {
26
+ this.repoPath = repoPath;
27
+ this.git = git;
28
+ this.id = `git:${repoPath}`;
29
+ this.createdAt = Date.now();
30
+ this.lastAccessedAt = Date.now();
31
+ }
32
+ /** Get the git instance and update access time */
33
+ getGit() {
34
+ this.lastAccessedAt = Date.now();
35
+ return this.git;
36
+ }
37
+ /** Check if instance is still valid */
38
+ isValid() {
39
+ // Git instances don't expire but can be invalidated
40
+ return this.git !== null;
41
+ }
42
+ /** Cleanup the git instance */
43
+ async cleanup() {
44
+ logger.debug({ repoPath: this.repoPath }, 'Cleaning up git instance');
45
+ // SimpleGit doesn't require explicit cleanup, but we null it out
46
+ this.git = null;
47
+ }
48
+ }
49
+ // ============================================================================
50
+ // Resource Manager
51
+ // ============================================================================
52
+ /**
53
+ * Centralized resource manager for automatic cleanup
54
+ */
55
+ export class ResourceManager {
56
+ options;
57
+ resources = new Map();
58
+ cleanupTimer = null;
59
+ shutdownHandlers = [];
60
+ isShuttingDown = false;
61
+ constructor(options = {}) {
62
+ this.options = options;
63
+ const { cleanupIntervalMs = 60000, // 1 minute
64
+ maxIdleTimeMs = 300000, // 5 minutes
65
+ maxResources = 100, } = options;
66
+ // Start periodic cleanup
67
+ this.cleanupTimer = setInterval(() => {
68
+ this.performCleanup(maxIdleTimeMs, maxResources);
69
+ }, cleanupIntervalMs);
70
+ // Register shutdown handler
71
+ this.registerShutdownHandlers();
72
+ }
73
+ /**
74
+ * Register a resource for management
75
+ */
76
+ register(resource) {
77
+ if (this.isShuttingDown) {
78
+ logger.warn('Cannot register resource during shutdown');
79
+ return;
80
+ }
81
+ this.resources.set(resource.id, resource);
82
+ logger.debug({ id: resource.id, type: resource.type, totalResources: this.resources.size }, 'Resource registered');
83
+ }
84
+ /**
85
+ * Unregister and cleanup a resource
86
+ */
87
+ async unregister(id) {
88
+ const resource = this.resources.get(id);
89
+ if (resource) {
90
+ await this.cleanupResource(resource);
91
+ this.resources.delete(id);
92
+ }
93
+ }
94
+ /**
95
+ * Get a resource by ID
96
+ */
97
+ get(id) {
98
+ const resource = this.resources.get(id);
99
+ if (resource) {
100
+ resource.lastAccessedAt = Date.now();
101
+ return resource;
102
+ }
103
+ return null;
104
+ }
105
+ /**
106
+ * Check if a resource exists
107
+ */
108
+ has(id) {
109
+ return this.resources.has(id);
110
+ }
111
+ /**
112
+ * Get all resources of a specific type
113
+ */
114
+ getByType(type) {
115
+ const results = [];
116
+ for (const resource of this.resources.values()) {
117
+ if (resource.type === type) {
118
+ results.push(resource);
119
+ }
120
+ }
121
+ return results;
122
+ }
123
+ /**
124
+ * Perform periodic cleanup of idle resources
125
+ */
126
+ async performCleanup(maxIdleTimeMs, maxResources) {
127
+ const now = Date.now();
128
+ const resourcesToCleanup = [];
129
+ // Find resources to cleanup
130
+ for (const resource of this.resources.values()) {
131
+ const idleTime = now - resource.lastAccessedAt;
132
+ // Cleanup invalid or idle resources
133
+ if (!resource.isValid() || idleTime > maxIdleTimeMs) {
134
+ resourcesToCleanup.push(resource);
135
+ }
136
+ }
137
+ // If still over limit after idle cleanup, cleanup LRU resources
138
+ if (this.resources.size > maxResources) {
139
+ const sorted = Array.from(this.resources.values())
140
+ .filter((r) => !resourcesToCleanup.includes(r))
141
+ .sort((a, b) => a.lastAccessedAt - b.lastAccessedAt);
142
+ const excess = this.resources.size - maxResources;
143
+ resourcesToCleanup.push(...sorted.slice(0, excess));
144
+ }
145
+ // Cleanup resources
146
+ if (resourcesToCleanup.length > 0) {
147
+ logger.debug({ count: resourcesToCleanup.length, totalResources: this.resources.size }, 'Performing resource cleanup');
148
+ for (const resource of resourcesToCleanup) {
149
+ await this.cleanupResource(resource);
150
+ this.resources.delete(resource.id);
151
+ }
152
+ }
153
+ }
154
+ /**
155
+ * Cleanup a single resource
156
+ */
157
+ async cleanupResource(resource) {
158
+ try {
159
+ await resource.cleanup();
160
+ logger.debug({ id: resource.id, type: resource.type }, 'Resource cleaned up');
161
+ }
162
+ catch (error) {
163
+ logger.error({ error, id: resource.id, type: resource.type }, 'Error cleaning up resource');
164
+ }
165
+ }
166
+ /**
167
+ * Register a custom shutdown handler
168
+ */
169
+ onShutdown(handler) {
170
+ this.shutdownHandlers.push(handler);
171
+ }
172
+ /**
173
+ * Graceful shutdown - cleanup all resources
174
+ */
175
+ async shutdown() {
176
+ if (this.isShuttingDown) {
177
+ logger.warn('Shutdown already in progress');
178
+ return;
179
+ }
180
+ this.isShuttingDown = true;
181
+ logger.info({ resourceCount: this.resources.size }, 'Starting graceful shutdown');
182
+ // Stop cleanup timer
183
+ if (this.cleanupTimer) {
184
+ clearInterval(this.cleanupTimer);
185
+ this.cleanupTimer = null;
186
+ }
187
+ // Run custom shutdown handlers
188
+ for (const handler of this.shutdownHandlers) {
189
+ try {
190
+ await handler();
191
+ }
192
+ catch (error) {
193
+ logger.error({ error }, 'Error in shutdown handler');
194
+ }
195
+ }
196
+ // Cleanup all resources
197
+ const cleanupPromises = Array.from(this.resources.values()).map((resource) => this.cleanupResource(resource));
198
+ await Promise.allSettled(cleanupPromises);
199
+ this.resources.clear();
200
+ logger.info('Graceful shutdown complete');
201
+ }
202
+ /**
203
+ * Register signal handlers for graceful shutdown
204
+ */
205
+ registerShutdownHandlers() {
206
+ const signals = ['SIGINT', 'SIGTERM', 'SIGQUIT'];
207
+ for (const signal of signals) {
208
+ process.once(signal, () => {
209
+ logger.info({ signal }, 'Received shutdown signal');
210
+ this.shutdown()
211
+ .then(() => process.exit(0))
212
+ .catch((error) => {
213
+ logger.error({ error }, 'Error during shutdown');
214
+ process.exit(1);
215
+ });
216
+ });
217
+ }
218
+ // Handle uncaught errors
219
+ process.once('uncaughtException', (error) => {
220
+ logger.error({ error }, 'Uncaught exception');
221
+ this.shutdown()
222
+ .then(() => process.exit(1))
223
+ .catch(() => process.exit(1));
224
+ });
225
+ process.once('unhandledRejection', (reason) => {
226
+ logger.error({ reason }, 'Unhandled rejection');
227
+ this.shutdown()
228
+ .then(() => process.exit(1))
229
+ .catch(() => process.exit(1));
230
+ });
231
+ }
232
+ /**
233
+ * Get resource statistics
234
+ */
235
+ getStats() {
236
+ const byType = {};
237
+ let oldestAge = 0;
238
+ const now = Date.now();
239
+ for (const resource of this.resources.values()) {
240
+ byType[resource.type] = (byType[resource.type] || 0) + 1;
241
+ const age = now - resource.createdAt;
242
+ if (age > oldestAge) {
243
+ oldestAge = age;
244
+ }
245
+ }
246
+ return {
247
+ total: this.resources.size,
248
+ byType: byType,
249
+ oldestResourceAge: oldestAge,
250
+ };
251
+ }
252
+ }
253
+ // ============================================================================
254
+ // Global Resource Manager
255
+ // ============================================================================
256
+ /** Global resource manager instance */
257
+ export const globalResourceManager = new ResourceManager({
258
+ cleanupIntervalMs: 60000, // 1 minute
259
+ maxIdleTimeMs: 300000, // 5 minutes
260
+ maxResources: 100,
261
+ });
262
+ // ============================================================================
263
+ // Helper Functions
264
+ // ============================================================================
265
+ /**
266
+ * Create a managed resource with automatic cleanup
267
+ *
268
+ * @param create - Function to create the resource
269
+ * @param cleanup - Function to cleanup the resource
270
+ * @param options - Resource options
271
+ * @returns The created resource
272
+ */
273
+ export async function withManagedResource(create, cleanup, options) {
274
+ const { id, type, autoRegister = true } = options;
275
+ const resource = await create();
276
+ if (autoRegister) {
277
+ const managedResource = {
278
+ id,
279
+ type,
280
+ createdAt: Date.now(),
281
+ lastAccessedAt: Date.now(),
282
+ cleanup: () => cleanup(resource),
283
+ isValid: () => resource !== null && resource !== undefined,
284
+ };
285
+ globalResourceManager.register(managedResource);
286
+ }
287
+ return resource;
288
+ }
289
+ /**
290
+ * Execute a function with automatic resource cleanup
291
+ *
292
+ * @param fn - Function to execute
293
+ * @param resources - Resources to cleanup after execution
294
+ * @returns Result of the function
295
+ */
296
+ export async function withCleanup(fn, resources) {
297
+ try {
298
+ return await fn();
299
+ }
300
+ finally {
301
+ // Cleanup resources in parallel
302
+ await Promise.allSettled(resources.map((resource) => resource.cleanup()));
303
+ }
304
+ }
305
+ /**
306
+ * Memory usage monitor
307
+ */
308
+ export class MemoryMonitor {
309
+ threshold;
310
+ warnings = 0;
311
+ constructor(thresholdMB = 512) {
312
+ this.threshold = thresholdMB * 1024 * 1024; // Convert to bytes
313
+ }
314
+ /**
315
+ * Check current memory usage
316
+ */
317
+ check() {
318
+ const usage = process.memoryUsage();
319
+ const isOverThreshold = usage.heapUsed > this.threshold;
320
+ if (isOverThreshold) {
321
+ this.warnings++;
322
+ logger.warn({
323
+ heapUsedMB: Math.round(usage.heapUsed / 1024 / 1024),
324
+ heapTotalMB: Math.round(usage.heapTotal / 1024 / 1024),
325
+ thresholdMB: Math.round(this.threshold / 1024 / 1024),
326
+ warnings: this.warnings,
327
+ }, 'Memory usage exceeds threshold');
328
+ }
329
+ return {
330
+ heapUsed: usage.heapUsed,
331
+ heapTotal: usage.heapTotal,
332
+ external: usage.external,
333
+ rss: usage.rss,
334
+ isOverThreshold,
335
+ };
336
+ }
337
+ /**
338
+ * Force garbage collection if available
339
+ */
340
+ forceGC() {
341
+ if (global.gc) {
342
+ global.gc();
343
+ logger.debug('Forced garbage collection');
344
+ return true;
345
+ }
346
+ logger.debug('Garbage collection not available (run with --expose-gc)');
347
+ return false;
348
+ }
349
+ }
350
+ /** Global memory monitor */
351
+ export const globalMemoryMonitor = new MemoryMonitor(512);
352
+ //# sourceMappingURL=resource-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-manager.js","sourceRoot":"","sources":["../../src/tools/resource-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAsCrC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAOlB;IACD;IAPD,EAAE,CAAS;IACX,IAAI,GAAiB,cAAc,CAAC;IACpC,SAAS,CAAS;IAC3B,cAAc,CAAS;IAEvB,YACW,QAAgB,EACjB,GAAc;QADb,aAAQ,GAAR,QAAQ,CAAQ;QACjB,QAAG,GAAH,GAAG,CAAW;QAEtB,IAAI,CAAC,EAAE,GAAG,OAAO,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,kDAAkD;IAClD,MAAM;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,uCAAuC;IACvC,OAAO;QACL,oDAAoD;QACpD,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IAC3B,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,OAAO;QACX,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,0BAA0B,CAAC,CAAC;QACtE,iEAAiE;QAChE,IAAI,CAAC,GAAe,GAAG,IAAI,CAAC;IAC/B,CAAC;CACF;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,eAAe;IAOP;IANX,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC/C,YAAY,GAA0C,IAAI,CAAC;IAC3D,gBAAgB,GAAsC,EAAE,CAAC;IACzD,cAAc,GAAG,KAAK,CAAC;IAE/B,YACmB,UAOb,EAAE;QAPW,YAAO,GAAP,OAAO,CAOlB;QAEN,MAAM,EACJ,iBAAiB,GAAG,KAAK,EAAE,WAAW;QACtC,aAAa,GAAG,MAAM,EAAE,YAAY;QACpC,YAAY,GAAG,GAAG,GACnB,GAAG,OAAO,CAAC;QAEZ,yBAAyB;QACzB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAEtB,4BAA4B;QAC5B,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAyB;QAChC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CACV,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAC7E,qBAAqB,CACtB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG,CAA4B,EAAU;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAkB,CAAC;QACzD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,SAAS,CAA4B,IAAkB;QACrD,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,QAAa,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,aAAqB,EAAE,YAAoB;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,kBAAkB,GAAsB,EAAE,CAAC;QAEjD,4BAA4B;QAC5B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC;YAE/C,oCAAoC;YACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;gBACpD,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;iBAC/C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY,CAAC;YAClD,kBAAkB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,oBAAoB;QACpB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CACV,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EACzE,6BAA6B,CAC9B,CAAC;YAEF,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE,CAAC;gBAC1C,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,QAAyB;QACrD,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAC/C,4BAA4B,CAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAmC;QAC5C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,4BAA4B,CAAC,CAAC;QAElF,qBAAqB;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,+BAA+B;QAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,OAAO,EAAE,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC3E,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAC/B,CAAC;QAEF,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,wBAAwB;QAC9B,MAAM,OAAO,GAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAEnE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC;gBACpD,IAAI,CAAC,QAAQ,EAAE;qBACZ,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAC3B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;oBACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC;QAED,yBAAyB;QACzB,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1C,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,EAAE;iBACZ,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC3B,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5C,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,EAAE;iBACZ,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC3B,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,QAAQ;QAKN,MAAM,MAAM,GAA0C,EAAE,CAAC;QACzD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC;YACrC,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;gBACpB,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;YAC1B,MAAM,EAAE,MAAsC;YAC9C,iBAAiB,EAAE,SAAS;SAC7B,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,uCAAuC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,eAAe,CAAC;IACvD,iBAAiB,EAAE,KAAK,EAAE,WAAW;IACrC,aAAa,EAAE,MAAM,EAAE,YAAY;IACnC,YAAY,EAAE,GAAG;CAClB,CAAC,CAAC;AAEH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAA4B,EAC5B,OAA8C,EAC9C,OAIC;IAED,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAElD,MAAM,QAAQ,GAAG,MAAM,MAAM,EAAE,CAAC;IAEhC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,eAAe,GAAoB;YACvC,EAAE;YACF,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;YAChC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS;SAC3D,CAAC;QAEF,qBAAqB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAwB,EACxB,SAA4B;IAE5B,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,gCAAgC;QAChC,MAAM,OAAO,CAAC,UAAU,CACtB,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAChD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IACP,SAAS,CAAS;IAC3B,QAAQ,GAAG,CAAC,CAAC;IAErB,YAAY,cAAsB,GAAG;QACnC,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,mBAAmB;IACjE,CAAC;IAED;;OAEG;IACH,KAAK;QAOH,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAExD,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CACT;gBACE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;gBACpD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;gBACtD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;gBACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,EACD,gCAAgC,CACjC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,eAAe;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Atlas Server - AI Code Review Assistant
3
+ *
4
+ * Comprehensive AI-powered code review capabilities:
5
+ * - Multi-dimensional code quality analysis
6
+ * - Best practices enforcement
7
+ * - Architectural pattern validation
8
+ * - Security vulnerability detection
9
+ * - Performance optimization suggestions
10
+ * - Test coverage recommendations
11
+ * - Documentation quality assessment
12
+ * - Team coding standards compliance
13
+ *
14
+ * @module review
15
+ * @author Nishant Unavane
16
+ * @version 1.0.0
17
+ */
18
+ export interface CodeReviewOptions {
19
+ code: string;
20
+ language: string;
21
+ filePath?: string;
22
+ checkQuality?: boolean;
23
+ checkSecurity?: boolean;
24
+ checkPerformance?: boolean;
25
+ checkArchitecture?: boolean;
26
+ checkTests?: boolean;
27
+ checkDocumentation?: boolean;
28
+ framework?: string;
29
+ teamStandards?: string;
30
+ pullRequestContext?: string;
31
+ changedFiles?: string[];
32
+ }
33
+ export interface CodeReviewResult {
34
+ code: string;
35
+ overallScore: number;
36
+ grades: ReviewGrades;
37
+ findings: ReviewFinding[];
38
+ suggestions: ReviewSuggestion[];
39
+ metrics: QualityMetrics;
40
+ summary: string;
41
+ executionTimeMs: number;
42
+ warnings: string[];
43
+ }
44
+ export interface ReviewGrades {
45
+ quality: Grade;
46
+ security: Grade;
47
+ performance: Grade;
48
+ architecture: Grade;
49
+ tests: Grade;
50
+ documentation: Grade;
51
+ }
52
+ export interface Grade {
53
+ score: number;
54
+ letter: 'A+' | 'A' | 'B' | 'C' | 'D' | 'F';
55
+ issues: number;
56
+ strengths: string[];
57
+ weaknesses: string[];
58
+ }
59
+ export interface ReviewFinding {
60
+ severity: 'blocker' | 'critical' | 'major' | 'minor' | 'info';
61
+ category: ReviewCategory;
62
+ title: string;
63
+ description: string;
64
+ location?: CodeLocation;
65
+ suggestion: string;
66
+ autoFixable: boolean;
67
+ references?: string[];
68
+ }
69
+ export type ReviewCategory = 'correctness' | 'security' | 'performance' | 'maintainability' | 'reliability' | 'architecture' | 'testing' | 'documentation' | 'style' | 'best-practices';
70
+ export interface CodeLocation {
71
+ startLine: number;
72
+ endLine: number;
73
+ snippet?: string;
74
+ }
75
+ export interface ReviewSuggestion {
76
+ priority: 'must' | 'should' | 'consider';
77
+ category: string;
78
+ description: string;
79
+ codeExample?: string;
80
+ rationale: string;
81
+ }
82
+ export interface QualityMetrics {
83
+ totalLines: number;
84
+ codeLines: number;
85
+ commentLines: number;
86
+ blankLines: number;
87
+ commentRatio: number;
88
+ averageComplexity: number;
89
+ duplicatedCodeRatio: number;
90
+ testCoverage?: number;
91
+ documentationCoverage: number;
92
+ }
93
+ /**
94
+ * Comprehensive AI-powered code review
95
+ */
96
+ export declare function reviewCode(options: CodeReviewOptions): Promise<CodeReviewResult>;
97
+ export default reviewCode;
98
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/tools/review.ts"],"names":[],"mappings":"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"}