@stackguide/mcp-server 3.1.0 → 3.3.0
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/README.md +59 -2
- package/dist/config/types.d.ts +1 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/handlers/analyze.d.ts +11 -0
- package/dist/handlers/analyze.d.ts.map +1 -0
- package/dist/handlers/analyze.js +274 -0
- package/dist/handlers/analyze.js.map +1 -0
- package/dist/handlers/index.d.ts +1 -0
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers/index.js +1 -0
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/setup.d.ts +1 -0
- package/dist/handlers/setup.d.ts.map +1 -1
- package/dist/handlers/setup.js +42 -0
- package/dist/handlers/setup.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/services/codeAnalyzer.d.ts +5 -1
- package/dist/services/codeAnalyzer.d.ts.map +1 -1
- package/dist/services/codeAnalyzer.js +39 -2
- package/dist/services/codeAnalyzer.js.map +1 -1
- package/dist/services/intelligence/configGenerator.d.ts +28 -0
- package/dist/services/intelligence/configGenerator.d.ts.map +1 -0
- package/dist/services/intelligence/configGenerator.js +404 -0
- package/dist/services/intelligence/configGenerator.js.map +1 -0
- package/dist/services/intelligence/dependencyAdvisor.d.ts +24 -0
- package/dist/services/intelligence/dependencyAdvisor.d.ts.map +1 -0
- package/dist/services/intelligence/dependencyAdvisor.js +404 -0
- package/dist/services/intelligence/dependencyAdvisor.js.map +1 -0
- package/dist/services/intelligence/index.d.ts +12 -0
- package/dist/services/intelligence/index.d.ts.map +1 -0
- package/dist/services/intelligence/index.js +16 -0
- package/dist/services/intelligence/index.js.map +1 -0
- package/dist/services/intelligence/projectIntelligence.d.ts +26 -0
- package/dist/services/intelligence/projectIntelligence.d.ts.map +1 -0
- package/dist/services/intelligence/projectIntelligence.js +344 -0
- package/dist/services/intelligence/projectIntelligence.js.map +1 -0
- package/dist/services/intelligence/structureAnalyzer.d.ts +27 -0
- package/dist/services/intelligence/structureAnalyzer.d.ts.map +1 -0
- package/dist/services/intelligence/structureAnalyzer.js +286 -0
- package/dist/services/intelligence/structureAnalyzer.js.map +1 -0
- package/dist/services/intelligence/templates.d.ts +22 -0
- package/dist/services/intelligence/templates.d.ts.map +1 -0
- package/dist/services/intelligence/templates.js +521 -0
- package/dist/services/intelligence/templates.js.map +1 -0
- package/dist/services/intelligence/types.d.ts +222 -0
- package/dist/services/intelligence/types.d.ts.map +1 -0
- package/dist/services/intelligence/types.js +7 -0
- package/dist/services/intelligence/types.js.map +1 -0
- package/dist/services/parsers/baseParser.d.ts +44 -0
- package/dist/services/parsers/baseParser.d.ts.map +1 -0
- package/dist/services/parsers/baseParser.js +177 -0
- package/dist/services/parsers/baseParser.js.map +1 -0
- package/dist/services/parsers/goParser.d.ts +28 -0
- package/dist/services/parsers/goParser.d.ts.map +1 -0
- package/dist/services/parsers/goParser.js +590 -0
- package/dist/services/parsers/goParser.js.map +1 -0
- package/dist/services/parsers/index.d.ts +62 -0
- package/dist/services/parsers/index.d.ts.map +1 -0
- package/dist/services/parsers/index.js +121 -0
- package/dist/services/parsers/index.js.map +1 -0
- package/dist/services/parsers/pythonParser.d.ts +28 -0
- package/dist/services/parsers/pythonParser.d.ts.map +1 -0
- package/dist/services/parsers/pythonParser.js +663 -0
- package/dist/services/parsers/pythonParser.js.map +1 -0
- package/dist/services/parsers/rustParser.d.ts +28 -0
- package/dist/services/parsers/rustParser.d.ts.map +1 -0
- package/dist/services/parsers/rustParser.js +654 -0
- package/dist/services/parsers/rustParser.js.map +1 -0
- package/dist/services/parsers/types.d.ts +241 -0
- package/dist/services/parsers/types.d.ts.map +1 -0
- package/dist/services/parsers/types.js +47 -0
- package/dist/services/parsers/types.js.map +1 -0
- package/dist/tools/definitions.d.ts +87 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +34 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/utils/validation.d.ts +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Advisor
|
|
3
|
+
* Analyzes project dependencies and provides recommendations
|
|
4
|
+
* @version 3.3.0
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import { getFrameworkTemplate } from './templates.js';
|
|
9
|
+
/**
|
|
10
|
+
* Analyze project dependencies
|
|
11
|
+
*/
|
|
12
|
+
export function analyzeDependencies(projectPath, projectType) {
|
|
13
|
+
const packageManager = detectPackageManager(projectPath);
|
|
14
|
+
const dependencies = extractDependencies(projectPath, packageManager);
|
|
15
|
+
const directDependencies = dependencies.filter(d => d.type === 'production');
|
|
16
|
+
const devDependencies = dependencies.filter(d => d.type === 'dev');
|
|
17
|
+
// Get recommended dependencies for this project type
|
|
18
|
+
const template = getFrameworkTemplate(projectType);
|
|
19
|
+
const recommendedAdditions = findMissingRecommendations(dependencies, template?.recommendedDependencies || [], projectType);
|
|
20
|
+
// Find potentially unnecessary dependencies
|
|
21
|
+
const unnecessaryDependencies = findUnnecessaryDependencies(dependencies, projectType);
|
|
22
|
+
// Calculate dependency score
|
|
23
|
+
const dependencyScore = calculateDependencyScore(dependencies.length, recommendedAdditions.filter(r => r.priority === 'high').length, unnecessaryDependencies.length);
|
|
24
|
+
return {
|
|
25
|
+
packageManager,
|
|
26
|
+
totalDependencies: dependencies.length,
|
|
27
|
+
directDependencies,
|
|
28
|
+
devDependencies,
|
|
29
|
+
outdatedPackages: [], // Would require npm outdated or similar
|
|
30
|
+
vulnerabilities: [], // Would require npm audit or similar
|
|
31
|
+
recommendedAdditions,
|
|
32
|
+
unnecessaryDependencies,
|
|
33
|
+
dependencyScore
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Detect package manager used in project
|
|
38
|
+
*/
|
|
39
|
+
function detectPackageManager(projectPath) {
|
|
40
|
+
// Check lock files
|
|
41
|
+
if (fs.existsSync(path.join(projectPath, 'pnpm-lock.yaml')))
|
|
42
|
+
return 'pnpm';
|
|
43
|
+
if (fs.existsSync(path.join(projectPath, 'yarn.lock')))
|
|
44
|
+
return 'yarn';
|
|
45
|
+
if (fs.existsSync(path.join(projectPath, 'package-lock.json')))
|
|
46
|
+
return 'npm';
|
|
47
|
+
// Python
|
|
48
|
+
if (fs.existsSync(path.join(projectPath, 'poetry.lock')))
|
|
49
|
+
return 'poetry';
|
|
50
|
+
if (fs.existsSync(path.join(projectPath, 'Pipfile.lock')))
|
|
51
|
+
return 'pip';
|
|
52
|
+
if (fs.existsSync(path.join(projectPath, 'requirements.txt')))
|
|
53
|
+
return 'pip';
|
|
54
|
+
// Rust
|
|
55
|
+
if (fs.existsSync(path.join(projectPath, 'Cargo.lock')))
|
|
56
|
+
return 'cargo';
|
|
57
|
+
// Go
|
|
58
|
+
if (fs.existsSync(path.join(projectPath, 'go.sum')))
|
|
59
|
+
return 'go';
|
|
60
|
+
// Ruby
|
|
61
|
+
if (fs.existsSync(path.join(projectPath, 'Gemfile.lock')))
|
|
62
|
+
return 'bundler';
|
|
63
|
+
// PHP
|
|
64
|
+
if (fs.existsSync(path.join(projectPath, 'composer.lock')))
|
|
65
|
+
return 'composer';
|
|
66
|
+
// Default to npm if package.json exists
|
|
67
|
+
if (fs.existsSync(path.join(projectPath, 'package.json')))
|
|
68
|
+
return 'npm';
|
|
69
|
+
return 'unknown';
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Extract dependencies from project files
|
|
73
|
+
*/
|
|
74
|
+
function extractDependencies(projectPath, packageManager) {
|
|
75
|
+
const dependencies = [];
|
|
76
|
+
if (['npm', 'yarn', 'pnpm'].includes(packageManager)) {
|
|
77
|
+
const pkgPath = path.join(projectPath, 'package.json');
|
|
78
|
+
if (fs.existsSync(pkgPath)) {
|
|
79
|
+
try {
|
|
80
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
81
|
+
// Production dependencies
|
|
82
|
+
for (const [name, version] of Object.entries(pkg.dependencies || {})) {
|
|
83
|
+
dependencies.push({
|
|
84
|
+
name,
|
|
85
|
+
version: String(version),
|
|
86
|
+
type: 'production'
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// Dev dependencies
|
|
90
|
+
for (const [name, version] of Object.entries(pkg.devDependencies || {})) {
|
|
91
|
+
dependencies.push({
|
|
92
|
+
name,
|
|
93
|
+
version: String(version),
|
|
94
|
+
type: 'dev'
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
// Peer dependencies
|
|
98
|
+
for (const [name, version] of Object.entries(pkg.peerDependencies || {})) {
|
|
99
|
+
dependencies.push({
|
|
100
|
+
name,
|
|
101
|
+
version: String(version),
|
|
102
|
+
type: 'peer'
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// Optional dependencies
|
|
106
|
+
for (const [name, version] of Object.entries(pkg.optionalDependencies || {})) {
|
|
107
|
+
dependencies.push({
|
|
108
|
+
name,
|
|
109
|
+
version: String(version),
|
|
110
|
+
type: 'optional'
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Invalid package.json
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else if (packageManager === 'pip' || packageManager === 'poetry') {
|
|
120
|
+
// Try requirements.txt
|
|
121
|
+
const reqPath = path.join(projectPath, 'requirements.txt');
|
|
122
|
+
if (fs.existsSync(reqPath)) {
|
|
123
|
+
try {
|
|
124
|
+
const content = fs.readFileSync(reqPath, 'utf-8');
|
|
125
|
+
const lines = content.split('\n');
|
|
126
|
+
for (const line of lines) {
|
|
127
|
+
const trimmed = line.trim();
|
|
128
|
+
if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith('-'))
|
|
129
|
+
continue;
|
|
130
|
+
// Parse package==version or package>=version etc.
|
|
131
|
+
const match = trimmed.match(/^([a-zA-Z0-9_-]+)(?:[=<>!~]+(.+))?$/);
|
|
132
|
+
if (match) {
|
|
133
|
+
dependencies.push({
|
|
134
|
+
name: match[1],
|
|
135
|
+
version: match[2] || '*',
|
|
136
|
+
type: 'production'
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// Invalid file
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Try pyproject.toml
|
|
146
|
+
const pyprojectPath = path.join(projectPath, 'pyproject.toml');
|
|
147
|
+
if (fs.existsSync(pyprojectPath)) {
|
|
148
|
+
try {
|
|
149
|
+
const content = fs.readFileSync(pyprojectPath, 'utf-8');
|
|
150
|
+
// Simple TOML parsing for dependencies
|
|
151
|
+
const depsMatch = content.match(/\[tool\.poetry\.dependencies\]([\s\S]*?)(?:\[|$)/);
|
|
152
|
+
if (depsMatch) {
|
|
153
|
+
const depsSection = depsMatch[1];
|
|
154
|
+
const lines = depsSection.split('\n');
|
|
155
|
+
for (const line of lines) {
|
|
156
|
+
const match = line.match(/^([a-zA-Z0-9_-]+)\s*=\s*["\']?([^"'\s]+)/);
|
|
157
|
+
if (match && match[1] !== 'python') {
|
|
158
|
+
dependencies.push({
|
|
159
|
+
name: match[1],
|
|
160
|
+
version: match[2],
|
|
161
|
+
type: 'production'
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Invalid file
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else if (packageManager === 'cargo') {
|
|
173
|
+
const cargoPath = path.join(projectPath, 'Cargo.toml');
|
|
174
|
+
if (fs.existsSync(cargoPath)) {
|
|
175
|
+
try {
|
|
176
|
+
const content = fs.readFileSync(cargoPath, 'utf-8');
|
|
177
|
+
// Simple TOML parsing for dependencies
|
|
178
|
+
const depsMatch = content.match(/\[dependencies\]([\s\S]*?)(?:\[|$)/);
|
|
179
|
+
if (depsMatch) {
|
|
180
|
+
const depsSection = depsMatch[1];
|
|
181
|
+
const lines = depsSection.split('\n');
|
|
182
|
+
for (const line of lines) {
|
|
183
|
+
const match = line.match(/^([a-zA-Z0-9_-]+)\s*=\s*["\']?([^"'\s]+)/);
|
|
184
|
+
if (match) {
|
|
185
|
+
dependencies.push({
|
|
186
|
+
name: match[1],
|
|
187
|
+
version: match[2],
|
|
188
|
+
type: 'production'
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Dev dependencies
|
|
194
|
+
const devDepsMatch = content.match(/\[dev-dependencies\]([\s\S]*?)(?:\[|$)/);
|
|
195
|
+
if (devDepsMatch) {
|
|
196
|
+
const depsSection = devDepsMatch[1];
|
|
197
|
+
const lines = depsSection.split('\n');
|
|
198
|
+
for (const line of lines) {
|
|
199
|
+
const match = line.match(/^([a-zA-Z0-9_-]+)\s*=\s*["\']?([^"'\s]+)/);
|
|
200
|
+
if (match) {
|
|
201
|
+
dependencies.push({
|
|
202
|
+
name: match[1],
|
|
203
|
+
version: match[2],
|
|
204
|
+
type: 'dev'
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// Invalid file
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else if (packageManager === 'go') {
|
|
216
|
+
const goModPath = path.join(projectPath, 'go.mod');
|
|
217
|
+
if (fs.existsSync(goModPath)) {
|
|
218
|
+
try {
|
|
219
|
+
const content = fs.readFileSync(goModPath, 'utf-8');
|
|
220
|
+
const requireMatch = content.match(/require\s*\(([\s\S]*?)\)/);
|
|
221
|
+
if (requireMatch) {
|
|
222
|
+
const requires = requireMatch[1];
|
|
223
|
+
const lines = requires.split('\n');
|
|
224
|
+
for (const line of lines) {
|
|
225
|
+
const match = line.trim().match(/^([^\s]+)\s+([^\s]+)/);
|
|
226
|
+
if (match) {
|
|
227
|
+
dependencies.push({
|
|
228
|
+
name: match[1],
|
|
229
|
+
version: match[2],
|
|
230
|
+
type: 'production'
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// Invalid file
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return dependencies;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Find missing recommended dependencies
|
|
245
|
+
*/
|
|
246
|
+
function findMissingRecommendations(existing, recommended, projectType) {
|
|
247
|
+
const existingNames = new Set(existing.map(d => d.name.toLowerCase()));
|
|
248
|
+
const missing = [];
|
|
249
|
+
for (const rec of recommended) {
|
|
250
|
+
if (!existingNames.has(rec.name.toLowerCase())) {
|
|
251
|
+
missing.push(rec);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// Add common recommendations based on what's missing
|
|
255
|
+
const jstsProject = ['react-typescript', 'nextjs', 'nestjs', 'express', 'vue-node', 'react-node'].includes(projectType);
|
|
256
|
+
if (jstsProject) {
|
|
257
|
+
// Check for linting
|
|
258
|
+
if (!existingNames.has('eslint')) {
|
|
259
|
+
missing.push({
|
|
260
|
+
name: 'eslint',
|
|
261
|
+
reason: 'Code linting and quality',
|
|
262
|
+
category: 'linting',
|
|
263
|
+
priority: 'high'
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
// Check for formatting
|
|
267
|
+
if (!existingNames.has('prettier')) {
|
|
268
|
+
missing.push({
|
|
269
|
+
name: 'prettier',
|
|
270
|
+
reason: 'Code formatting',
|
|
271
|
+
category: 'dx',
|
|
272
|
+
priority: 'high'
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
// Check for testing
|
|
276
|
+
const hasVitest = existingNames.has('vitest');
|
|
277
|
+
const hasJest = existingNames.has('jest');
|
|
278
|
+
if (!hasVitest && !hasJest) {
|
|
279
|
+
missing.push({
|
|
280
|
+
name: 'vitest',
|
|
281
|
+
reason: 'Fast unit testing',
|
|
282
|
+
category: 'testing',
|
|
283
|
+
priority: 'high'
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
// Check for TypeScript
|
|
287
|
+
if (!existingNames.has('typescript')) {
|
|
288
|
+
missing.push({
|
|
289
|
+
name: 'typescript',
|
|
290
|
+
reason: 'Type safety and better IDE support',
|
|
291
|
+
category: 'types',
|
|
292
|
+
priority: 'high'
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// Python projects
|
|
297
|
+
const pythonProject = ['python-django', 'python-fastapi', 'python-flask'].includes(projectType);
|
|
298
|
+
if (pythonProject) {
|
|
299
|
+
if (!existingNames.has('pytest')) {
|
|
300
|
+
missing.push({
|
|
301
|
+
name: 'pytest',
|
|
302
|
+
reason: 'Testing framework',
|
|
303
|
+
category: 'testing',
|
|
304
|
+
priority: 'high'
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
if (!existingNames.has('black') && !existingNames.has('ruff')) {
|
|
308
|
+
missing.push({
|
|
309
|
+
name: 'ruff',
|
|
310
|
+
reason: 'Fast Python linter and formatter',
|
|
311
|
+
category: 'linting',
|
|
312
|
+
priority: 'high'
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
if (!existingNames.has('mypy')) {
|
|
316
|
+
missing.push({
|
|
317
|
+
name: 'mypy',
|
|
318
|
+
reason: 'Static type checking',
|
|
319
|
+
category: 'types',
|
|
320
|
+
priority: 'medium'
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return missing;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Find potentially unnecessary dependencies
|
|
328
|
+
*/
|
|
329
|
+
function findUnnecessaryDependencies(dependencies, projectType) {
|
|
330
|
+
const unnecessary = [];
|
|
331
|
+
const depNames = new Set(dependencies.map(d => d.name.toLowerCase()));
|
|
332
|
+
// Check for deprecated or redundant packages
|
|
333
|
+
const deprecatedPackages = {
|
|
334
|
+
'tslint': 'Use ESLint with @typescript-eslint instead',
|
|
335
|
+
'node-sass': 'Use sass (Dart Sass) instead',
|
|
336
|
+
'request': 'Use axios, node-fetch, or undici instead',
|
|
337
|
+
'moment': 'Consider date-fns or dayjs for smaller bundle',
|
|
338
|
+
'lodash': 'Consider using native ES methods or lodash-es',
|
|
339
|
+
'underscore': 'Consider using native ES methods',
|
|
340
|
+
'bluebird': 'Native Promises are now sufficient',
|
|
341
|
+
'left-pad': 'Use String.prototype.padStart',
|
|
342
|
+
'is-odd': 'Use n % 2 !== 0',
|
|
343
|
+
'is-even': 'Use n % 2 === 0'
|
|
344
|
+
};
|
|
345
|
+
for (const dep of dependencies) {
|
|
346
|
+
const lowerName = dep.name.toLowerCase();
|
|
347
|
+
if (deprecatedPackages[lowerName]) {
|
|
348
|
+
unnecessary.push(`${dep.name} - ${deprecatedPackages[lowerName]}`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// Check for duplicate functionality
|
|
352
|
+
if (depNames.has('axios') && depNames.has('node-fetch')) {
|
|
353
|
+
unnecessary.push('Multiple HTTP clients (axios and node-fetch) - consider using just one');
|
|
354
|
+
}
|
|
355
|
+
if (depNames.has('moment') && depNames.has('date-fns')) {
|
|
356
|
+
unnecessary.push('Multiple date libraries (moment and date-fns) - consider using just one');
|
|
357
|
+
}
|
|
358
|
+
if (depNames.has('jest') && depNames.has('vitest') && depNames.has('mocha')) {
|
|
359
|
+
unnecessary.push('Multiple test runners - consider standardizing on one');
|
|
360
|
+
}
|
|
361
|
+
return unnecessary;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Calculate dependency health score
|
|
365
|
+
*/
|
|
366
|
+
function calculateDependencyScore(totalDeps, missingHighPriority, unnecessaryCount) {
|
|
367
|
+
let score = 100;
|
|
368
|
+
// Deduct for missing high priority dependencies
|
|
369
|
+
score -= missingHighPriority * 10;
|
|
370
|
+
// Deduct for unnecessary dependencies
|
|
371
|
+
score -= unnecessaryCount * 5;
|
|
372
|
+
// Slight deduction for too many dependencies (complexity)
|
|
373
|
+
if (totalDeps > 50) {
|
|
374
|
+
score -= Math.min(15, (totalDeps - 50) * 0.5);
|
|
375
|
+
}
|
|
376
|
+
return Math.max(0, Math.min(100, score));
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Generate install command for missing dependencies
|
|
380
|
+
*/
|
|
381
|
+
export function generateInstallCommand(recommendations, packageManager, asDev = false) {
|
|
382
|
+
if (recommendations.length === 0)
|
|
383
|
+
return '';
|
|
384
|
+
const packages = recommendations.map(r => r.name).join(' ');
|
|
385
|
+
switch (packageManager) {
|
|
386
|
+
case 'npm':
|
|
387
|
+
return `npm install ${asDev ? '-D' : ''} ${packages}`;
|
|
388
|
+
case 'yarn':
|
|
389
|
+
return `yarn add ${asDev ? '-D' : ''} ${packages}`;
|
|
390
|
+
case 'pnpm':
|
|
391
|
+
return `pnpm add ${asDev ? '-D' : ''} ${packages}`;
|
|
392
|
+
case 'pip':
|
|
393
|
+
case 'poetry':
|
|
394
|
+
return `pip install ${packages}`;
|
|
395
|
+
case 'cargo':
|
|
396
|
+
return `cargo add ${packages}`;
|
|
397
|
+
case 'go':
|
|
398
|
+
return recommendations.map(r => `go get ${r.name}`).join(' && ');
|
|
399
|
+
default:
|
|
400
|
+
return `# Install: ${packages}`;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
export { detectPackageManager, extractDependencies };
|
|
404
|
+
//# sourceMappingURL=dependencyAdvisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyAdvisor.js","sourceRoot":"","sources":["../../../src/services/intelligence/dependencyAdvisor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAQ7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,WAAmB;IAC1E,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAEtE,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAEnE,qDAAqD;IACrD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,oBAAoB,GAAG,0BAA0B,CACrD,YAAY,EACZ,QAAQ,EAAE,uBAAuB,IAAI,EAAE,EACvC,WAAW,CACZ,CAAC;IAEF,4CAA4C;IAC5C,MAAM,uBAAuB,GAAG,2BAA2B,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAEvF,6BAA6B;IAC7B,MAAM,eAAe,GAAG,wBAAwB,CAC9C,YAAY,CAAC,MAAM,EACnB,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,EAC9D,uBAAuB,CAAC,MAAM,CAC/B,CAAC;IAEF,OAAO;QACL,cAAc;QACd,iBAAiB,EAAE,YAAY,CAAC,MAAM;QACtC,kBAAkB;QAClB,eAAe;QACf,gBAAgB,EAAE,EAAE,EAAE,wCAAwC;QAC9D,eAAe,EAAE,EAAE,EAAE,qCAAqC;QAC1D,oBAAoB;QACpB,uBAAuB;QACvB,eAAe;KAChB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,mBAAmB;IACnB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3E,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACtE,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7E,SAAS;IACT,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1E,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5E,OAAO;IACP,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAExE,KAAK;IACL,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjE,OAAO;IACP,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5E,MAAM;IACN,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IAE9E,wCAAwC;IACxC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAExE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,WAAmB,EACnB,cAAoD;IAEpD,MAAM,YAAY,GAAqB,EAAE,CAAC;IAE1C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBAE1D,0BAA0B;gBAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;oBACrE,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI;wBACJ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;wBACxB,IAAI,EAAE,YAAY;qBACnB,CAAC,CAAC;gBACL,CAAC;gBAED,mBAAmB;gBACnB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;oBACxE,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI;wBACJ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;wBACxB,IAAI,EAAE,KAAK;qBACZ,CAAC,CAAC;gBACL,CAAC;gBAED,oBAAoB;gBACpB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE,CAAC;oBACzE,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI;wBACJ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;wBACxB,IAAI,EAAE,MAAM;qBACb,CAAC,CAAC;gBACL,CAAC;gBAED,wBAAwB;gBACxB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC7E,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI;wBACJ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;wBACxB,IAAI,EAAE,UAAU;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,KAAK,KAAK,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;QACnE,uBAAuB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAE7E,kDAAkD;oBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;oBACnE,IAAI,KAAK,EAAE,CAAC;wBACV,YAAY,CAAC,IAAI,CAAC;4BAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;4BACd,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;4BACxB,IAAI,EAAE,YAAY;yBACnB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBACxD,uCAAuC;gBACvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBACpF,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;wBACrE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;4BACnC,YAAY,CAAC,IAAI,CAAC;gCAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gCACd,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gCACjB,IAAI,EAAE,YAAY;6BACnB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,KAAK,OAAO,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACpD,uCAAuC;gBACvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACtE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;wBACrE,IAAI,KAAK,EAAE,CAAC;4BACV,YAAY,CAAC,IAAI,CAAC;gCAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gCACd,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gCACjB,IAAI,EAAE,YAAY;6BACnB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,mBAAmB;gBACnB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC7E,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;wBACrE,IAAI,KAAK,EAAE,CAAC;4BACV,YAAY,CAAC,IAAI,CAAC;gCAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gCACd,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gCACjB,IAAI,EAAE,KAAK;6BACZ,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC/D,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;wBACxD,IAAI,KAAK,EAAE,CAAC;4BACV,YAAY,CAAC,IAAI,CAAC;gCAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gCACd,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gCACjB,IAAI,EAAE,YAAY;6BACnB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CACjC,QAA0B,EAC1B,WAAuC,EACvC,WAAmB;IAEnB,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAA+B,EAAE,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,MAAM,WAAW,GAAG,CAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAExH,IAAI,WAAW,EAAE,CAAC;QAChB,oBAAoB;QACpB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,0BAA0B;gBAClC,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,iBAAiB;gBACzB,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;QAED,oBAAoB;QACpB,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,oCAAoC;gBAC5C,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,aAAa,GAAG,CAAC,eAAe,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChG,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,kCAAkC;gBAC1C,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,sBAAsB;gBAC9B,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAClC,YAA8B,EAC9B,WAAmB;IAEnB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAEtE,6CAA6C;IAC7C,MAAM,kBAAkB,GAA2B;QACjD,QAAQ,EAAE,4CAA4C;QACtD,WAAW,EAAE,8BAA8B;QAC3C,SAAS,EAAE,0CAA0C;QACrD,QAAQ,EAAE,+CAA+C;QACzD,QAAQ,EAAE,+CAA+C;QACzD,YAAY,EAAE,kCAAkC;QAChD,UAAU,EAAE,oCAAoC;QAChD,UAAU,EAAE,+BAA+B;QAC3C,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EAAE,iBAAiB;KAC7B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACxD,WAAW,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,WAAW,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,WAAW,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,SAAiB,EACjB,mBAA2B,EAC3B,gBAAwB;IAExB,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,gDAAgD;IAChD,KAAK,IAAI,mBAAmB,GAAG,EAAE,CAAC;IAElC,sCAAsC;IACtC,KAAK,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAE9B,0DAA0D;IAC1D,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;QACnB,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,eAA2C,EAC3C,cAAoD,EACpD,KAAK,GAAG,KAAK;IAEb,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5D,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,KAAK;YACR,OAAO,eAAe,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxD,KAAK,MAAM;YACT,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC;QACrD,KAAK,MAAM;YACT,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC;QACrD,KAAK,KAAK,CAAC;QACX,KAAK,QAAQ;YACX,OAAO,eAAe,QAAQ,EAAE,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,aAAa,QAAQ,EAAE,CAAC;QACjC,KAAK,IAAI;YACP,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnE;YACE,OAAO,cAAc,QAAQ,EAAE,CAAC;IACpC,CAAC;AACH,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Intelligence Module - Phase 4
|
|
3
|
+
* Auto-Configuration Intelligence
|
|
4
|
+
* @version 3.3.0
|
|
5
|
+
*/
|
|
6
|
+
export type { StructureAnalysis, DirectorySuggestion, FileSuggestion, StructureImprovement, ConfigAnalysis, ConfigFile, ConfigType, ConfigRecommendation, ConfigIssue, ConfigFix, DependencyAnalysis, DependencyInfo, OutdatedPackage, VulnerabilityInfo, DependencyRecommendation, IntelligenceReport, PriorityAction, WorkflowStep, SmartConfig, ConfigCustomization, ConfigOption, FrameworkTemplate } from './types.js';
|
|
7
|
+
export { generateIntelligenceReport, applyAutoFixes, formatIntelligenceReport, analyzeStructure, analyzeConfigurations, analyzeDependencies, generateSmartConfig, applyConfigFix, generateInstallCommand } from './projectIntelligence.js';
|
|
8
|
+
export { getFrameworkTemplate, getAllTemplates, getConfigTemplate, FRAMEWORK_TEMPLATES } from './templates.js';
|
|
9
|
+
export { scanDirectory, getDirPurpose, getFilePurpose } from './structureAnalyzer.js';
|
|
10
|
+
export { parseConfigFile, analyzeConfigFile } from './configGenerator.js';
|
|
11
|
+
export { detectPackageManager, extractDependencies } from './dependencyAdvisor.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/intelligence/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACf,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Intelligence Module - Phase 4
|
|
3
|
+
* Auto-Configuration Intelligence
|
|
4
|
+
* @version 3.3.0
|
|
5
|
+
*/
|
|
6
|
+
// Main service
|
|
7
|
+
export { generateIntelligenceReport, applyAutoFixes, formatIntelligenceReport, analyzeStructure, analyzeConfigurations, analyzeDependencies, generateSmartConfig, applyConfigFix, generateInstallCommand } from './projectIntelligence.js';
|
|
8
|
+
// Templates
|
|
9
|
+
export { getFrameworkTemplate, getAllTemplates, getConfigTemplate, FRAMEWORK_TEMPLATES } from './templates.js';
|
|
10
|
+
// Structure analyzer
|
|
11
|
+
export { scanDirectory, getDirPurpose, getFilePurpose } from './structureAnalyzer.js';
|
|
12
|
+
// Config generator
|
|
13
|
+
export { parseConfigFile, analyzeConfigFile } from './configGenerator.js';
|
|
14
|
+
// Dependency advisor
|
|
15
|
+
export { detectPackageManager, extractDependencies } from './dependencyAdvisor.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/intelligence/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4BH,eAAe;AACf,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAElC,YAAY;AACZ,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAExB,qBAAqB;AACrB,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACf,MAAM,wBAAwB,CAAC;AAEhC,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B,qBAAqB;AACrB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Intelligence Service
|
|
3
|
+
* Main orchestrator for project analysis and recommendations
|
|
4
|
+
* @version 3.3.0
|
|
5
|
+
*/
|
|
6
|
+
import type { IntelligenceReport } from './types.js';
|
|
7
|
+
import { analyzeStructure } from './structureAnalyzer.js';
|
|
8
|
+
import { analyzeConfigurations, generateSmartConfig, applyConfigFix } from './configGenerator.js';
|
|
9
|
+
import { analyzeDependencies, generateInstallCommand } from './dependencyAdvisor.js';
|
|
10
|
+
/**
|
|
11
|
+
* Generate comprehensive project intelligence report
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateIntelligenceReport(projectPath: string): Promise<IntelligenceReport>;
|
|
14
|
+
/**
|
|
15
|
+
* Apply auto-fixable actions
|
|
16
|
+
*/
|
|
17
|
+
export declare function applyAutoFixes(report: IntelligenceReport, onlyCategory?: 'structure' | 'config' | 'dependencies' | 'security'): Promise<{
|
|
18
|
+
applied: string[];
|
|
19
|
+
failed: string[];
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Format intelligence report for display
|
|
23
|
+
*/
|
|
24
|
+
export declare function formatIntelligenceReport(report: IntelligenceReport): string;
|
|
25
|
+
export { analyzeStructure, analyzeConfigurations, analyzeDependencies, generateSmartConfig, applyConfigFix, generateInstallCommand };
|
|
26
|
+
//# sourceMappingURL=projectIntelligence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectIntelligence.d.ts","sourceRoot":"","sources":["../../../src/services/intelligence/projectIntelligence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAMnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGrF;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyCjG;AAmOD;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,kBAAkB,EAC1B,YAAY,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,UAAU,GAClE,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAiBlD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAkF3E;AAED,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACvB,CAAC"}
|