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.
- package/dist/mcp.js +191 -0
- package/dist/mcp.js.map +1 -1
- package/dist/tools/context.d.ts +33 -7
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +167 -82
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/dashboard.d.ts +107 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +544 -0
- package/dist/tools/dashboard.js.map +1 -0
- package/dist/tools/dependencies.d.ts +105 -0
- package/dist/tools/dependencies.d.ts.map +1 -0
- package/dist/tools/dependencies.js +410 -0
- package/dist/tools/dependencies.js.map +1 -0
- package/dist/tools/git.d.ts +27 -4
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +156 -59
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/profiler.d.ts +83 -0
- package/dist/tools/profiler.d.ts.map +1 -0
- package/dist/tools/profiler.js +385 -0
- package/dist/tools/profiler.js.map +1 -0
- package/dist/tools/refactor.d.ts +63 -0
- package/dist/tools/refactor.d.ts.map +1 -0
- package/dist/tools/refactor.js +308 -0
- package/dist/tools/refactor.js.map +1 -0
- package/dist/tools/resource-manager.d.ts +167 -0
- package/dist/tools/resource-manager.d.ts.map +1 -0
- package/dist/tools/resource-manager.js +352 -0
- package/dist/tools/resource-manager.js.map +1 -0
- package/dist/tools/review.d.ts +98 -0
- package/dist/tools/review.d.ts.map +1 -0
- package/dist/tools/review.js +428 -0
- package/dist/tools/review.js.map +1 -0
- package/dist/tools/test-utils.d.ts +170 -0
- package/dist/tools/test-utils.d.ts.map +1 -0
- package/dist/tools/test-utils.js +490 -0
- package/dist/tools/test-utils.js.map +1 -0
- package/dist/tools/validation.d.ts +237 -0
- package/dist/tools/validation.d.ts.map +1 -0
- package/dist/tools/validation.js +323 -0
- package/dist/tools/validation.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Server - Dependency Analysis and Management Tool
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive dependency management and analysis:
|
|
5
|
+
* - Dependency graph visualization
|
|
6
|
+
* - Circular dependency detection
|
|
7
|
+
* - Unused dependency identification
|
|
8
|
+
* - Security vulnerability scanning
|
|
9
|
+
* - Version compatibility checking
|
|
10
|
+
* - License compliance verification
|
|
11
|
+
* - Bundle size impact analysis
|
|
12
|
+
* - Upgrade path recommendations
|
|
13
|
+
*
|
|
14
|
+
* @module dependencies
|
|
15
|
+
* @author Nishant Unavane
|
|
16
|
+
* @version 1.0.0
|
|
17
|
+
*/
|
|
18
|
+
import { promises as fs } from 'fs';
|
|
19
|
+
import { join } from 'path';
|
|
20
|
+
import { logger, createTimer } from '../utils.js';
|
|
21
|
+
import { z } from 'zod';
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Validation Schema
|
|
24
|
+
// ============================================================================
|
|
25
|
+
const DependencyAnalysisOptionsSchema = z.object({
|
|
26
|
+
projectPath: z.string().min(1),
|
|
27
|
+
checkSecurity: z.boolean().optional(),
|
|
28
|
+
checkLicenses: z.boolean().optional(),
|
|
29
|
+
findUnused: z.boolean().optional(),
|
|
30
|
+
analyzeBundleSize: z.boolean().optional(),
|
|
31
|
+
suggestUpgrades: z.boolean().optional(),
|
|
32
|
+
});
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// Package.json Parsing
|
|
35
|
+
// ============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Read and parse package.json
|
|
38
|
+
*/
|
|
39
|
+
async function readPackageJson(projectPath) {
|
|
40
|
+
try {
|
|
41
|
+
const pkgPath = join(projectPath, 'package.json');
|
|
42
|
+
const content = await fs.readFile(pkgPath, 'utf-8');
|
|
43
|
+
const pkg = JSON.parse(content);
|
|
44
|
+
return {
|
|
45
|
+
dependencies: pkg.dependencies || {},
|
|
46
|
+
devDependencies: pkg.devDependencies || {},
|
|
47
|
+
peerDependencies: pkg.peerDependencies || {},
|
|
48
|
+
name: pkg.name || 'unknown',
|
|
49
|
+
version: pkg.version || '0.0.0',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
throw new Error(`Failed to read package.json: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Read package-lock.json for dependency tree
|
|
58
|
+
*/
|
|
59
|
+
async function readPackageLock(projectPath) {
|
|
60
|
+
try {
|
|
61
|
+
const lockPath = join(projectPath, 'package-lock.json');
|
|
62
|
+
const content = await fs.readFile(lockPath, 'utf-8');
|
|
63
|
+
return JSON.parse(content);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
logger.warn('No package-lock.json found - dependency tree will be incomplete');
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// ============================================================================
|
|
71
|
+
// Dependency Graph Building
|
|
72
|
+
// ============================================================================
|
|
73
|
+
/**
|
|
74
|
+
* Build dependency graph from package-lock.json
|
|
75
|
+
*/
|
|
76
|
+
function buildDependencyGraph(packageLock) {
|
|
77
|
+
const nodes = [];
|
|
78
|
+
const edges = [];
|
|
79
|
+
const seen = new Set();
|
|
80
|
+
function traverse(name, version, depth, packages) {
|
|
81
|
+
const id = `${name}@${version}`;
|
|
82
|
+
if (seen.has(id))
|
|
83
|
+
return;
|
|
84
|
+
seen.add(id);
|
|
85
|
+
nodes.push({ id, name, version, depth });
|
|
86
|
+
if (packages && packages[name]) {
|
|
87
|
+
const pkg = packages[name];
|
|
88
|
+
const deps = pkg.dependencies || {};
|
|
89
|
+
for (const [depName, depVersion] of Object.entries(deps)) {
|
|
90
|
+
const depId = `${depName}@${depVersion}`;
|
|
91
|
+
edges.push({ from: id, to: depId });
|
|
92
|
+
traverse(depName, depVersion, depth + 1, packages);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (packageLock?.packages) {
|
|
97
|
+
const rootDeps = packageLock.packages['']?.dependencies || {};
|
|
98
|
+
for (const [name, version] of Object.entries(rootDeps)) {
|
|
99
|
+
traverse(name, version, 0, packageLock.packages);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Detect circular dependencies
|
|
103
|
+
const circular = detectCircularDependencies(edges);
|
|
104
|
+
return {
|
|
105
|
+
nodes,
|
|
106
|
+
edges,
|
|
107
|
+
circularDependencies: circular,
|
|
108
|
+
maxDepth: Math.max(...nodes.map(n => n.depth), 0),
|
|
109
|
+
totalNodes: nodes.length,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Detect circular dependencies using DFS
|
|
114
|
+
*/
|
|
115
|
+
function detectCircularDependencies(edges) {
|
|
116
|
+
const adjList = new Map();
|
|
117
|
+
// Build adjacency list
|
|
118
|
+
for (const edge of edges) {
|
|
119
|
+
if (!adjList.has(edge.from)) {
|
|
120
|
+
adjList.set(edge.from, []);
|
|
121
|
+
}
|
|
122
|
+
adjList.get(edge.from).push(edge.to);
|
|
123
|
+
}
|
|
124
|
+
const circular = [];
|
|
125
|
+
const visiting = new Set();
|
|
126
|
+
const visited = new Set();
|
|
127
|
+
function dfs(node, path) {
|
|
128
|
+
if (visiting.has(node)) {
|
|
129
|
+
// Found cycle
|
|
130
|
+
const cycleStart = path.indexOf(node);
|
|
131
|
+
if (cycleStart !== -1) {
|
|
132
|
+
circular.push(path.slice(cycleStart));
|
|
133
|
+
}
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (visited.has(node))
|
|
137
|
+
return;
|
|
138
|
+
visiting.add(node);
|
|
139
|
+
path.push(node);
|
|
140
|
+
const neighbors = adjList.get(node) || [];
|
|
141
|
+
for (const neighbor of neighbors) {
|
|
142
|
+
dfs(neighbor, [...path]);
|
|
143
|
+
}
|
|
144
|
+
visiting.delete(node);
|
|
145
|
+
visited.add(node);
|
|
146
|
+
}
|
|
147
|
+
for (const node of adjList.keys()) {
|
|
148
|
+
if (!visited.has(node)) {
|
|
149
|
+
dfs(node, []);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return circular;
|
|
153
|
+
}
|
|
154
|
+
// ============================================================================
|
|
155
|
+
// Usage Detection
|
|
156
|
+
// ============================================================================
|
|
157
|
+
/**
|
|
158
|
+
* Find which dependencies are actually used in the codebase
|
|
159
|
+
*/
|
|
160
|
+
async function detectUsedDependencies(projectPath, dependencies) {
|
|
161
|
+
const used = new Set();
|
|
162
|
+
try {
|
|
163
|
+
// Search for import/require statements
|
|
164
|
+
const sourceFiles = await findSourceFiles(projectPath);
|
|
165
|
+
for (const file of sourceFiles) {
|
|
166
|
+
const content = await fs.readFile(file, 'utf-8');
|
|
167
|
+
for (const dep of dependencies) {
|
|
168
|
+
// Check for various import patterns
|
|
169
|
+
const patterns = [
|
|
170
|
+
new RegExp(`import .+ from ['"]${dep}['"]`, 'g'),
|
|
171
|
+
new RegExp(`import ['"]${dep}['"]`, 'g'),
|
|
172
|
+
new RegExp(`require\\(['"]${dep}['"]\\)`, 'g'),
|
|
173
|
+
new RegExp(`from ['"]${dep}/`, 'g'),
|
|
174
|
+
];
|
|
175
|
+
if (patterns.some(pattern => pattern.test(content))) {
|
|
176
|
+
used.add(dep);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
logger.warn({ error }, 'Failed to detect used dependencies');
|
|
183
|
+
}
|
|
184
|
+
return used;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Find all source files in project
|
|
188
|
+
*/
|
|
189
|
+
async function findSourceFiles(projectPath) {
|
|
190
|
+
const files = [];
|
|
191
|
+
async function scan(dir) {
|
|
192
|
+
try {
|
|
193
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
194
|
+
for (const entry of entries) {
|
|
195
|
+
const fullPath = join(dir, entry.name);
|
|
196
|
+
// Skip node_modules, dist, build
|
|
197
|
+
if (entry.isDirectory()) {
|
|
198
|
+
if (!['node_modules', 'dist', 'build', '.git'].includes(entry.name)) {
|
|
199
|
+
await scan(fullPath);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else if (entry.isFile()) {
|
|
203
|
+
// Include source files
|
|
204
|
+
if (entry.name.match(/\.(ts|tsx|js|jsx|mjs|cjs)$/)) {
|
|
205
|
+
files.push(fullPath);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
// Ignore errors for inaccessible directories
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
await scan(projectPath);
|
|
215
|
+
return files;
|
|
216
|
+
}
|
|
217
|
+
// ============================================================================
|
|
218
|
+
// Mock Security & License Data (In production, use real APIs)
|
|
219
|
+
// ============================================================================
|
|
220
|
+
/**
|
|
221
|
+
* Check for known vulnerabilities (mock - would use npm audit API)
|
|
222
|
+
*/
|
|
223
|
+
async function checkVulnerabilities(name, version) {
|
|
224
|
+
// In production: call npm audit API or Snyk API
|
|
225
|
+
// For now: return mock data for demonstration
|
|
226
|
+
const knownVulnerable = ['lodash', 'moment', 'request'];
|
|
227
|
+
if (knownVulnerable.includes(name)) {
|
|
228
|
+
return [{
|
|
229
|
+
severity: 'medium',
|
|
230
|
+
title: `Known vulnerability in ${name}`,
|
|
231
|
+
description: 'Mock vulnerability for demonstration',
|
|
232
|
+
fixedIn: '999.0.0',
|
|
233
|
+
cve: 'CVE-2021-XXXXX',
|
|
234
|
+
}];
|
|
235
|
+
}
|
|
236
|
+
return [];
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get package license (mock - would fetch from npm registry)
|
|
240
|
+
*/
|
|
241
|
+
async function getPackageLicense(name) {
|
|
242
|
+
// In production: fetch from npm registry
|
|
243
|
+
const commonLicenses = {
|
|
244
|
+
'express': 'MIT',
|
|
245
|
+
'react': 'MIT',
|
|
246
|
+
'vue': 'MIT',
|
|
247
|
+
'lodash': 'MIT',
|
|
248
|
+
'axios': 'MIT',
|
|
249
|
+
};
|
|
250
|
+
return commonLicenses[name] || 'Unknown';
|
|
251
|
+
}
|
|
252
|
+
// ============================================================================
|
|
253
|
+
// Main Analysis Function
|
|
254
|
+
// ============================================================================
|
|
255
|
+
/**
|
|
256
|
+
* Comprehensive dependency analysis
|
|
257
|
+
*/
|
|
258
|
+
export async function analyzeDependencies(options) {
|
|
259
|
+
const timer = createTimer();
|
|
260
|
+
const { projectPath, checkSecurity = true, checkLicenses = true, findUnused = true, analyzeBundleSize = true, suggestUpgrades = true, } = DependencyAnalysisOptionsSchema.parse(options);
|
|
261
|
+
logger.info({ projectPath }, 'Starting dependency analysis');
|
|
262
|
+
const warnings = [];
|
|
263
|
+
const issues = [];
|
|
264
|
+
const recommendations = [];
|
|
265
|
+
// Read package.json and package-lock.json
|
|
266
|
+
const pkg = await readPackageJson(projectPath);
|
|
267
|
+
const packageLock = await readPackageLock(projectPath);
|
|
268
|
+
const allDeps = {
|
|
269
|
+
...pkg.dependencies,
|
|
270
|
+
...pkg.devDependencies,
|
|
271
|
+
};
|
|
272
|
+
// Build dependency graph
|
|
273
|
+
const graph = packageLock ? buildDependencyGraph(packageLock) : {
|
|
274
|
+
nodes: [],
|
|
275
|
+
edges: [],
|
|
276
|
+
circularDependencies: [],
|
|
277
|
+
maxDepth: 0,
|
|
278
|
+
totalNodes: 0,
|
|
279
|
+
};
|
|
280
|
+
// Detect circular dependencies
|
|
281
|
+
if (graph.circularDependencies.length > 0) {
|
|
282
|
+
for (const cycle of graph.circularDependencies) {
|
|
283
|
+
issues.push({
|
|
284
|
+
type: 'circular-dependency',
|
|
285
|
+
severity: 'medium',
|
|
286
|
+
dependency: cycle[0] || 'unknown',
|
|
287
|
+
description: `Circular dependency detected: ${cycle.join(' → ')}`,
|
|
288
|
+
solution: 'Refactor to break the circular dependency',
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// Find unused dependencies
|
|
293
|
+
const usedDeps = findUnused ? await detectUsedDependencies(projectPath, Object.keys(allDeps)) : new Set(Object.keys(allDeps));
|
|
294
|
+
// Analyze each dependency
|
|
295
|
+
const dependencies = [];
|
|
296
|
+
const devDependencies = [];
|
|
297
|
+
for (const [name, version] of Object.entries(pkg.dependencies)) {
|
|
298
|
+
const info = await analyzeSingleDependency(name, version, 'dependency', usedDeps, checkSecurity, checkLicenses);
|
|
299
|
+
dependencies.push(info);
|
|
300
|
+
if (!info.isUsed) {
|
|
301
|
+
issues.push({
|
|
302
|
+
type: 'unused-dependency',
|
|
303
|
+
severity: 'low',
|
|
304
|
+
dependency: name,
|
|
305
|
+
description: `${name} is not imported anywhere in the codebase`,
|
|
306
|
+
solution: `Remove with: npm uninstall ${name}`,
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
if (info.vulnerabilities && info.vulnerabilities.length > 0) {
|
|
310
|
+
for (const vuln of info.vulnerabilities) {
|
|
311
|
+
issues.push({
|
|
312
|
+
type: 'security-vulnerability',
|
|
313
|
+
severity: vuln.severity,
|
|
314
|
+
dependency: name,
|
|
315
|
+
description: vuln.description,
|
|
316
|
+
solution: vuln.fixedIn ? `Update to ${vuln.fixedIn}` : 'No fix available',
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
for (const [name, version] of Object.entries(pkg.devDependencies)) {
|
|
322
|
+
const info = await analyzeSingleDependency(name, version, 'devDependency', usedDeps, checkSecurity, checkLicenses);
|
|
323
|
+
devDependencies.push(info);
|
|
324
|
+
}
|
|
325
|
+
// Statistics
|
|
326
|
+
const statistics = {
|
|
327
|
+
totalDependencies: dependencies.length + devDependencies.length,
|
|
328
|
+
directDependencies: dependencies.length,
|
|
329
|
+
transitiveDependencies: graph.totalNodes - (dependencies.length + devDependencies.length),
|
|
330
|
+
unusedCount: [...dependencies, ...devDependencies].filter(d => !d.isUsed).length,
|
|
331
|
+
outdatedCount: [...dependencies, ...devDependencies].filter(d => d.updateAvailable).length,
|
|
332
|
+
vulnerableCount: issues.filter(i => i.type === 'security-vulnerability').length,
|
|
333
|
+
totalBundleSize: [...dependencies, ...devDependencies].reduce((sum, d) => sum + (d.size || 0), 0),
|
|
334
|
+
licenseBreakdown: {},
|
|
335
|
+
};
|
|
336
|
+
// License breakdown
|
|
337
|
+
for (const dep of [...dependencies, ...devDependencies]) {
|
|
338
|
+
if (dep.license) {
|
|
339
|
+
statistics.licenseBreakdown[dep.license] = (statistics.licenseBreakdown[dep.license] || 0) + 1;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// Generate recommendations
|
|
343
|
+
if (statistics.unusedCount > 0) {
|
|
344
|
+
recommendations.push({
|
|
345
|
+
priority: 7,
|
|
346
|
+
category: 'maintenance',
|
|
347
|
+
action: `Remove ${statistics.unusedCount} unused dependencies`,
|
|
348
|
+
reason: 'Reduces bundle size and attack surface',
|
|
349
|
+
estimatedImpact: 'Smaller bundle, faster installs',
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
if (statistics.vulnerableCount > 0) {
|
|
353
|
+
recommendations.push({
|
|
354
|
+
priority: 10,
|
|
355
|
+
category: 'security',
|
|
356
|
+
action: `Fix ${statistics.vulnerableCount} security vulnerabilities`,
|
|
357
|
+
reason: 'Critical security issues detected',
|
|
358
|
+
estimatedImpact: 'Eliminates known attack vectors',
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
if (graph.circularDependencies.length > 0) {
|
|
362
|
+
recommendations.push({
|
|
363
|
+
priority: 6,
|
|
364
|
+
category: 'maintenance',
|
|
365
|
+
action: `Resolve ${graph.circularDependencies.length} circular dependencies`,
|
|
366
|
+
reason: 'Can cause bundle issues and memory leaks',
|
|
367
|
+
estimatedImpact: 'Improved build reliability',
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
const executionTimeMs = timer.elapsed();
|
|
371
|
+
logger.info({
|
|
372
|
+
totalDeps: statistics.totalDependencies,
|
|
373
|
+
unused: statistics.unusedCount,
|
|
374
|
+
vulnerabilities: statistics.vulnerableCount,
|
|
375
|
+
executionTimeMs
|
|
376
|
+
}, 'Dependency analysis completed');
|
|
377
|
+
return {
|
|
378
|
+
projectPath,
|
|
379
|
+
dependencies,
|
|
380
|
+
devDependencies,
|
|
381
|
+
graph,
|
|
382
|
+
issues,
|
|
383
|
+
recommendations: recommendations.sort((a, b) => b.priority - a.priority),
|
|
384
|
+
statistics,
|
|
385
|
+
executionTimeMs,
|
|
386
|
+
warnings,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Analyze a single dependency
|
|
391
|
+
*/
|
|
392
|
+
async function analyzeSingleDependency(name, version, type, usedDeps, checkSecurity, checkLicenses) {
|
|
393
|
+
const vulnerabilities = checkSecurity ? await checkVulnerabilities(name, version) : [];
|
|
394
|
+
const license = checkLicenses ? await getPackageLicense(name) : undefined;
|
|
395
|
+
return {
|
|
396
|
+
name,
|
|
397
|
+
currentVersion: version,
|
|
398
|
+
type,
|
|
399
|
+
isUsed: usedDeps.has(name),
|
|
400
|
+
directDependents: [],
|
|
401
|
+
transitiveCount: 0,
|
|
402
|
+
vulnerabilities,
|
|
403
|
+
license,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
// ============================================================================
|
|
407
|
+
// Export
|
|
408
|
+
// ============================================================================
|
|
409
|
+
export default analyzeDependencies;
|
|
410
|
+
//# sourceMappingURL=dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/tools/dependencies.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/git.d.ts
CHANGED
|
@@ -2,14 +2,37 @@
|
|
|
2
2
|
* Atlas Server - Git Context Tool
|
|
3
3
|
*
|
|
4
4
|
* Provides git repository context including:
|
|
5
|
-
* - Current branch and status
|
|
6
|
-
* - Recent commit history
|
|
7
|
-
* - Uncommitted changes
|
|
5
|
+
* - Current branch and status (cached for performance)
|
|
6
|
+
* - Recent commit history with filtering
|
|
7
|
+
* - Uncommitted changes and diffs
|
|
8
8
|
* - File history and blame information
|
|
9
|
+
* - Resource-managed git instances
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Automatic git instance caching and cleanup
|
|
13
|
+
* - Parallel git operations where safe
|
|
14
|
+
* - Comprehensive error handling
|
|
15
|
+
* - Request deduplication for concurrent calls
|
|
16
|
+
*
|
|
17
|
+
* @module git
|
|
18
|
+
* @version 2.0.0
|
|
9
19
|
*/
|
|
10
20
|
import type { GitContext, GitCommit } from '../types.js';
|
|
11
21
|
/**
|
|
12
|
-
* Get comprehensive git context for a repository
|
|
22
|
+
* Get comprehensive git context for a repository with caching and deduplication
|
|
23
|
+
*
|
|
24
|
+
* @param repoPath - Repository path (will be validated)
|
|
25
|
+
* @param commitLimit - Number of commits to fetch (default: 10, max: 1000)
|
|
26
|
+
* @returns Git context or null if not a valid repository
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const context = await getGitContext('/path/to/repo', 20);
|
|
31
|
+
* if (context) {
|
|
32
|
+
* console.log(`Branch: ${context.currentBranch}`);
|
|
33
|
+
* console.log(`Commits: ${context.recentCommits.length}`);
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
13
36
|
*/
|
|
14
37
|
export declare function getGitContext(repoPath: string, commitLimit?: number): Promise<GitContext | null>;
|
|
15
38
|
/**
|
package/dist/tools/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/tools/git.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/tools/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAa,MAAM,aAAa,CAAC;AAoGpE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAA6B,GACzC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA2E5B;AAyBD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWjF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAW7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CActB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAe,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW5E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC,CAkBD;AA6FD,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAuDD;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAclB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB"}
|