@principal-ai/quality-lens-cli 0.1.6 → 0.1.7
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/cli.js +1090 -231
- package/package.json +11 -9
- package/dist/cli.js.map +0 -1
- package/dist/executor/NodeExecutor.js +0 -138
- package/dist/executor/NodeExecutor.js.map +0 -1
- package/dist/output/ConsoleReporter.js +0 -57
- package/dist/output/ConsoleReporter.js.map +0 -1
- package/dist/output/JsonFormatter.js +0 -131
- package/dist/output/JsonFormatter.js.map +0 -1
- package/dist/scanner/RepositoryScanner.js +0 -88
- package/dist/scanner/RepositoryScanner.js.map +0 -1
- package/dist/service/QualityLensService.js +0 -175
- package/dist/service/QualityLensService.js.map +0 -1
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QualityLensService = void 0;
|
|
4
|
-
const codebase_quality_lenses_1 = require("@principal-ai/codebase-quality-lenses");
|
|
5
|
-
const NodeExecutor_1 = require("../executor/NodeExecutor");
|
|
6
|
-
class QualityLensService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.executor = new NodeExecutor_1.NodeExecutor();
|
|
9
|
-
this.lenses = new Map();
|
|
10
|
-
this.initializeLenses();
|
|
11
|
-
}
|
|
12
|
-
initializeLenses() {
|
|
13
|
-
console.log('[QualityLensService] Initializing lenses...');
|
|
14
|
-
const eslintLens = new codebase_quality_lenses_1.ESLintLens(this.executor);
|
|
15
|
-
this.lenses.set('eslint', eslintLens);
|
|
16
|
-
this.lenses.set('lint', eslintLens);
|
|
17
|
-
const jestLens = new codebase_quality_lenses_1.JestLens(this.executor);
|
|
18
|
-
this.lenses.set('jest', jestLens);
|
|
19
|
-
this.lenses.set('test', jestLens);
|
|
20
|
-
const typescriptLens = new codebase_quality_lenses_1.TypeScriptLens(this.executor);
|
|
21
|
-
this.lenses.set('typescript', typescriptLens);
|
|
22
|
-
this.lenses.set('typecheck', typescriptLens);
|
|
23
|
-
this.lenses.set('tsc', typescriptLens);
|
|
24
|
-
const knipLens = new codebase_quality_lenses_1.KnipLens(this.executor);
|
|
25
|
-
this.lenses.set('knip', knipLens);
|
|
26
|
-
this.lenses.set('deadcode', knipLens);
|
|
27
|
-
const prettierLens = new codebase_quality_lenses_1.PrettierLens(this.executor);
|
|
28
|
-
this.lenses.set('prettier', prettierLens);
|
|
29
|
-
this.lenses.set('format', prettierLens);
|
|
30
|
-
const gitLens = new codebase_quality_lenses_1.GitLens(this.executor);
|
|
31
|
-
this.lenses.set('git', gitLens);
|
|
32
|
-
const alexandriaLens = new codebase_quality_lenses_1.AlexandriaLens(this.executor);
|
|
33
|
-
this.lenses.set('alexandria', alexandriaLens);
|
|
34
|
-
this.lenses.set('docs', alexandriaLens);
|
|
35
|
-
}
|
|
36
|
-
async executeTool(request) {
|
|
37
|
-
const startTime = Date.now();
|
|
38
|
-
if (!request.packageLayer || !request.packageCommand) {
|
|
39
|
-
throw new Error('packageLayer and packageCommand are required. Legacy execution has been removed.');
|
|
40
|
-
}
|
|
41
|
-
return this.executeWithPackageLayer(request, startTime);
|
|
42
|
-
}
|
|
43
|
-
async executeWithPackageLayer(request, startTime) {
|
|
44
|
-
const { repoPath, packageLayer, packageCommand } = request;
|
|
45
|
-
if (!packageLayer || !packageCommand) {
|
|
46
|
-
throw new Error('packageLayer and packageCommand are required for new execution path');
|
|
47
|
-
}
|
|
48
|
-
const packagePath = packageLayer.packageData.path || '';
|
|
49
|
-
const cwd = packagePath ? `${repoPath}/${packagePath}` : repoPath;
|
|
50
|
-
if (!packageCommand.isLensCommand || !packageCommand.lensId) {
|
|
51
|
-
console.log(`[QualityLensService] Not a lens command, executing directly: ${packageCommand.name}`);
|
|
52
|
-
return this.executeNonLensCommand(request, packageCommand, cwd, startTime);
|
|
53
|
-
}
|
|
54
|
-
const lens = this.lenses.get(packageCommand.lensId);
|
|
55
|
-
if (!lens) {
|
|
56
|
-
console.warn(`[QualityLensService] No lens registered for: ${packageCommand.lensId}`);
|
|
57
|
-
return this.executeNonLensCommand(request, packageCommand, cwd, startTime);
|
|
58
|
-
}
|
|
59
|
-
console.log(`[QualityLensService] Using ${lens.name} for command: ${packageCommand.name} (lensId: ${packageCommand.lensId})`);
|
|
60
|
-
try {
|
|
61
|
-
const { command, args } = this.parseCommandString(packageCommand.command);
|
|
62
|
-
lens.configure({
|
|
63
|
-
cwd,
|
|
64
|
-
tool: {
|
|
65
|
-
name: packageCommand.lensId,
|
|
66
|
-
command,
|
|
67
|
-
args,
|
|
68
|
-
cwd,
|
|
69
|
-
available: true,
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
const lensResult = await lens.run();
|
|
73
|
-
const { success, exitCode } = this.determineLensSuccess(lensResult);
|
|
74
|
-
return {
|
|
75
|
-
success,
|
|
76
|
-
toolName: packageCommand.lensId,
|
|
77
|
-
command: packageCommand.command,
|
|
78
|
-
packagePath,
|
|
79
|
-
exitCode,
|
|
80
|
-
duration: Date.now() - startTime,
|
|
81
|
-
stdout: lensResult.raw?.stdout || '',
|
|
82
|
-
stderr: lensResult.raw?.stderr || lensResult.error?.message || '',
|
|
83
|
-
lensResult,
|
|
84
|
-
qualityContext: {
|
|
85
|
-
lensId: packageCommand.lensId,
|
|
86
|
-
operation: packageCommand.lensOperation,
|
|
87
|
-
availableLenses: packageLayer.qualityMetrics?.availableLenses,
|
|
88
|
-
missingLenses: packageLayer.qualityMetrics?.missingLenses,
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
console.error(`[QualityLensService] Error:`, error);
|
|
94
|
-
return this.createErrorResponse(packageCommand.lensId || packageCommand.name, packageCommand.command, packagePath, error, startTime);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
async executeNonLensCommand(request, packageCommand, cwd, startTime) {
|
|
98
|
-
const { command, args } = this.parseCommandString(packageCommand.command);
|
|
99
|
-
try {
|
|
100
|
-
const result = await this.executor.execute(command, args, { cwd });
|
|
101
|
-
return {
|
|
102
|
-
success: result.exitCode === 0,
|
|
103
|
-
toolName: packageCommand.name,
|
|
104
|
-
command: packageCommand.command,
|
|
105
|
-
packagePath: request.packageLayer?.packageData.path,
|
|
106
|
-
exitCode: result.exitCode,
|
|
107
|
-
duration: Date.now() - startTime,
|
|
108
|
-
stdout: result.stdout,
|
|
109
|
-
stderr: result.stderr,
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
return this.createErrorResponse(packageCommand.name, packageCommand.command, request.packageLayer?.packageData.path, error, startTime);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
parseCommandString(commandString) {
|
|
117
|
-
if (commandString.startsWith('npm run ')) {
|
|
118
|
-
const parts = commandString.split(' ');
|
|
119
|
-
return { command: 'npm', args: ['run', ...parts.slice(2)] };
|
|
120
|
-
}
|
|
121
|
-
if (commandString.startsWith('yarn ')) {
|
|
122
|
-
const parts = commandString.split(' ');
|
|
123
|
-
return { command: 'yarn', args: parts.slice(1) };
|
|
124
|
-
}
|
|
125
|
-
if (commandString.startsWith('pnpm ')) {
|
|
126
|
-
const parts = commandString.split(' ');
|
|
127
|
-
return { command: 'pnpm', args: parts.slice(1) };
|
|
128
|
-
}
|
|
129
|
-
const parts = commandString.split(' ');
|
|
130
|
-
return { command: parts[0] || '', args: parts.slice(1) };
|
|
131
|
-
}
|
|
132
|
-
determineLensSuccess(lensResult) {
|
|
133
|
-
let exitCode = 0;
|
|
134
|
-
let success = true;
|
|
135
|
-
if (lensResult.raw?.exitCode !== undefined) {
|
|
136
|
-
exitCode = lensResult.raw.exitCode;
|
|
137
|
-
success = exitCode === 0;
|
|
138
|
-
}
|
|
139
|
-
else if (lensResult.error) {
|
|
140
|
-
exitCode = 1;
|
|
141
|
-
success = false;
|
|
142
|
-
}
|
|
143
|
-
else if (lensResult.metrics?.issuesBySeverity?.error &&
|
|
144
|
-
lensResult.metrics.issuesBySeverity.error > 0) {
|
|
145
|
-
exitCode = 1;
|
|
146
|
-
success = false;
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
success = lensResult.success !== false;
|
|
150
|
-
exitCode = success ? 0 : 1;
|
|
151
|
-
}
|
|
152
|
-
return { success, exitCode };
|
|
153
|
-
}
|
|
154
|
-
createErrorResponse(toolName, command, packagePath, error, startTime) {
|
|
155
|
-
return {
|
|
156
|
-
success: false,
|
|
157
|
-
toolName,
|
|
158
|
-
command,
|
|
159
|
-
packagePath,
|
|
160
|
-
exitCode: 1,
|
|
161
|
-
duration: Date.now() - startTime,
|
|
162
|
-
stdout: '',
|
|
163
|
-
stderr: error.message || 'Tool execution failed',
|
|
164
|
-
error: error.message,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
getAvailableLenses() {
|
|
168
|
-
return Array.from(this.lenses.keys());
|
|
169
|
-
}
|
|
170
|
-
hasLensForTool(toolName) {
|
|
171
|
-
return this.lenses.has(toolName.toLowerCase());
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
exports.QualityLensService = QualityLensService;
|
|
175
|
-
//# sourceMappingURL=QualityLensService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QualityLensService.js","sourceRoot":"","sources":["../../src/service/QualityLensService.ts"],"names":[],"mappings":"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"}
|