@probelabs/visor 0.1.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 +1240 -0
- package/action.yml +142 -0
- package/defaults/.visor.yaml +184 -0
- package/dist/action-cli-bridge.d.ts +104 -0
- package/dist/action-cli-bridge.d.ts.map +1 -0
- package/dist/action-cli-bridge.js +372 -0
- package/dist/action-cli-bridge.js.map +1 -0
- package/dist/ai-review-service.d.ts +84 -0
- package/dist/ai-review-service.d.ts.map +1 -0
- package/dist/ai-review-service.js +674 -0
- package/dist/ai-review-service.js.map +1 -0
- package/dist/check-execution-engine.d.ts +165 -0
- package/dist/check-execution-engine.d.ts.map +1 -0
- package/dist/check-execution-engine.js +1172 -0
- package/dist/check-execution-engine.js.map +1 -0
- package/dist/cli-main.d.ts +6 -0
- package/dist/cli-main.d.ts.map +1 -0
- package/dist/cli-main.js +247 -0
- package/dist/cli-main.js.map +1 -0
- package/dist/cli.d.ts +47 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +224 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands.d.ts +10 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +53 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +63 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +369 -0
- package/dist/config.js.map +1 -0
- package/dist/dependency-resolver.d.ts +54 -0
- package/dist/dependency-resolver.d.ts.map +1 -0
- package/dist/dependency-resolver.js +163 -0
- package/dist/dependency-resolver.js.map +1 -0
- package/dist/event-mapper.d.ts +125 -0
- package/dist/event-mapper.d.ts.map +1 -0
- package/dist/event-mapper.js +311 -0
- package/dist/event-mapper.js.map +1 -0
- package/dist/failure-condition-evaluator.d.ts +81 -0
- package/dist/failure-condition-evaluator.d.ts.map +1 -0
- package/dist/failure-condition-evaluator.js +445 -0
- package/dist/failure-condition-evaluator.js.map +1 -0
- package/dist/git-repository-analyzer.d.ts +45 -0
- package/dist/git-repository-analyzer.d.ts.map +1 -0
- package/dist/git-repository-analyzer.js +285 -0
- package/dist/git-repository-analyzer.js.map +1 -0
- package/dist/github-check-service.d.ts +104 -0
- package/dist/github-check-service.d.ts.map +1 -0
- package/dist/github-check-service.js +382 -0
- package/dist/github-check-service.js.map +1 -0
- package/dist/github-comments.d.ts +109 -0
- package/dist/github-comments.d.ts.map +1 -0
- package/dist/github-comments.js +289 -0
- package/dist/github-comments.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1265 -0
- package/dist/index.js.map +1 -0
- package/dist/output-formatters.d.ts +66 -0
- package/dist/output-formatters.d.ts.map +1 -0
- package/dist/output-formatters.js +624 -0
- package/dist/output-formatters.js.map +1 -0
- package/dist/pr-analyzer.d.ts +47 -0
- package/dist/pr-analyzer.d.ts.map +1 -0
- package/dist/pr-analyzer.js +194 -0
- package/dist/pr-analyzer.js.map +1 -0
- package/dist/pr-detector.d.ts +78 -0
- package/dist/pr-detector.d.ts.map +1 -0
- package/dist/pr-detector.js +357 -0
- package/dist/pr-detector.js.map +1 -0
- package/dist/providers/ai-check-provider.d.ts +40 -0
- package/dist/providers/ai-check-provider.d.ts.map +1 -0
- package/dist/providers/ai-check-provider.js +416 -0
- package/dist/providers/ai-check-provider.js.map +1 -0
- package/dist/providers/check-provider-registry.d.ts +67 -0
- package/dist/providers/check-provider-registry.d.ts.map +1 -0
- package/dist/providers/check-provider-registry.js +138 -0
- package/dist/providers/check-provider-registry.js.map +1 -0
- package/dist/providers/check-provider.interface.d.ts +78 -0
- package/dist/providers/check-provider.interface.d.ts.map +1 -0
- package/dist/providers/check-provider.interface.js +11 -0
- package/dist/providers/check-provider.interface.js.map +1 -0
- package/dist/providers/index.d.ts +10 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +19 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/script-check-provider.d.ts +20 -0
- package/dist/providers/script-check-provider.d.ts.map +1 -0
- package/dist/providers/script-check-provider.js +163 -0
- package/dist/providers/script-check-provider.js.map +1 -0
- package/dist/providers/tool-check-provider.d.ts +19 -0
- package/dist/providers/tool-check-provider.d.ts.map +1 -0
- package/dist/providers/tool-check-provider.js +125 -0
- package/dist/providers/tool-check-provider.js.map +1 -0
- package/dist/providers/webhook-check-provider.d.ts +21 -0
- package/dist/providers/webhook-check-provider.d.ts.map +1 -0
- package/dist/providers/webhook-check-provider.js +173 -0
- package/dist/providers/webhook-check-provider.js.map +1 -0
- package/dist/reviewer.d.ts +88 -0
- package/dist/reviewer.d.ts.map +1 -0
- package/dist/reviewer.js +760 -0
- package/dist/reviewer.js.map +1 -0
- package/dist/types/cli.d.ts +41 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +3 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +315 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/utils/env-resolver.d.ts +38 -0
- package/dist/utils/env-resolver.d.ts.map +1 -0
- package/dist/utils/env-resolver.js +130 -0
- package/dist/utils/env-resolver.js.map +1 -0
- package/package.json +116 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ActionCliBridge = void 0;
|
|
37
|
+
const child_process_1 = require("child_process");
|
|
38
|
+
const fs_1 = require("fs");
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
/**
|
|
41
|
+
* Bridge between GitHub Action and Visor CLI
|
|
42
|
+
*/
|
|
43
|
+
class ActionCliBridge {
|
|
44
|
+
githubToken;
|
|
45
|
+
context;
|
|
46
|
+
constructor(githubToken, context) {
|
|
47
|
+
this.githubToken = githubToken;
|
|
48
|
+
this.context = context;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Determine if Visor CLI should be used based on inputs
|
|
52
|
+
*/
|
|
53
|
+
shouldUseVisor(inputs) {
|
|
54
|
+
return !!(inputs['config-path'] ||
|
|
55
|
+
inputs['visor-config-path'] ||
|
|
56
|
+
inputs.checks ||
|
|
57
|
+
inputs['visor-checks']);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Parse GitHub Action inputs to CLI arguments
|
|
61
|
+
*/
|
|
62
|
+
parseGitHubInputsToCliArgs(inputs) {
|
|
63
|
+
const args = [];
|
|
64
|
+
// Add config path if specified (prefer new input name over legacy)
|
|
65
|
+
const configPath = inputs['config-path'] || inputs['visor-config-path'];
|
|
66
|
+
if (configPath && configPath.trim() !== '') {
|
|
67
|
+
args.push('--config', configPath);
|
|
68
|
+
}
|
|
69
|
+
// Add checks if specified (prefer new input name over legacy)
|
|
70
|
+
const checksInput = inputs.checks || inputs['visor-checks'];
|
|
71
|
+
if (checksInput) {
|
|
72
|
+
const checks = checksInput
|
|
73
|
+
.split(',')
|
|
74
|
+
.map(check => check.trim())
|
|
75
|
+
.filter(check => this.isValidCheck(check));
|
|
76
|
+
// CRITICAL FIX: When "all" is specified, don't add any --check arguments
|
|
77
|
+
// This allows CLI to extract all checks from the config file
|
|
78
|
+
if (checks.length > 0 && !checks.includes('all')) {
|
|
79
|
+
// Only add specific checks if "all" is not in the list
|
|
80
|
+
for (const check of checks) {
|
|
81
|
+
args.push('--check', check);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// When checks includes 'all', we intentionally don't add any --check arguments
|
|
85
|
+
// The CLI will then use all checks defined in .visor.yaml
|
|
86
|
+
}
|
|
87
|
+
// Add output format if specified
|
|
88
|
+
if (inputs['output-format']) {
|
|
89
|
+
args.push('--output', inputs['output-format']);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// Always use JSON output for programmatic processing
|
|
93
|
+
args.push('--output', 'json');
|
|
94
|
+
}
|
|
95
|
+
// Add debug flag if enabled
|
|
96
|
+
if (inputs.debug === 'true') {
|
|
97
|
+
args.push('--debug');
|
|
98
|
+
}
|
|
99
|
+
return args;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Execute CLI with GitHub context
|
|
103
|
+
*/
|
|
104
|
+
async executeCliWithContext(inputs, options = {}) {
|
|
105
|
+
const { workingDir = process.cwd(), timeout = 300000 } = options; // 5 min timeout
|
|
106
|
+
try {
|
|
107
|
+
const cliArgs = this.parseGitHubInputsToCliArgs(inputs);
|
|
108
|
+
// Set up environment variables for CLI
|
|
109
|
+
const env = {
|
|
110
|
+
...process.env,
|
|
111
|
+
GITHUB_EVENT_NAME: this.context.event_name,
|
|
112
|
+
GITHUB_CONTEXT: JSON.stringify(this.context),
|
|
113
|
+
GITHUB_REPOSITORY_OWNER: this.context.repository?.owner.login || inputs.owner || '',
|
|
114
|
+
GITHUB_REPOSITORY: this.context.repository
|
|
115
|
+
? `${this.context.repository.owner.login}/${this.context.repository.name}`
|
|
116
|
+
: `${inputs.owner || ''}/${inputs.repo || ''}`,
|
|
117
|
+
};
|
|
118
|
+
// Pass GitHub App credentials if they exist in inputs
|
|
119
|
+
if (inputs['app-id']) {
|
|
120
|
+
env.INPUT_APP_ID = inputs['app-id'];
|
|
121
|
+
}
|
|
122
|
+
if (inputs['private-key']) {
|
|
123
|
+
env.INPUT_PRIVATE_KEY = inputs['private-key'];
|
|
124
|
+
}
|
|
125
|
+
if (inputs['installation-id']) {
|
|
126
|
+
env.INPUT_INSTALLATION_ID = inputs['installation-id'];
|
|
127
|
+
}
|
|
128
|
+
// Only set GITHUB_TOKEN if we're not using GitHub App authentication
|
|
129
|
+
const isUsingGitHubApp = inputs['app-id'] && inputs['private-key'];
|
|
130
|
+
if (this.githubToken && !isUsingGitHubApp) {
|
|
131
|
+
env.GITHUB_TOKEN = this.githubToken;
|
|
132
|
+
}
|
|
133
|
+
console.log(`🚀 Executing Visor CLI with args: ${cliArgs.join(' ')}`);
|
|
134
|
+
const result = await this.executeCommand('node', ['dist/cli-main.js', ...cliArgs], {
|
|
135
|
+
cwd: workingDir,
|
|
136
|
+
env,
|
|
137
|
+
timeout,
|
|
138
|
+
});
|
|
139
|
+
if (result.exitCode === 0) {
|
|
140
|
+
// Try to parse CLI output for additional data
|
|
141
|
+
const cliOutput = this.parseCliOutput(result.output);
|
|
142
|
+
return {
|
|
143
|
+
success: true,
|
|
144
|
+
output: result.output,
|
|
145
|
+
exitCode: result.exitCode,
|
|
146
|
+
cliOutput,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
return {
|
|
151
|
+
success: false,
|
|
152
|
+
output: result.output,
|
|
153
|
+
error: result.error,
|
|
154
|
+
exitCode: result.exitCode,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
return {
|
|
160
|
+
success: false,
|
|
161
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
162
|
+
exitCode: -1,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Merge CLI and Action outputs for backward compatibility
|
|
168
|
+
*/
|
|
169
|
+
mergeActionAndCliOutputs(actionInputs, cliResult, legacyOutputs) {
|
|
170
|
+
const outputs = {
|
|
171
|
+
// Preserve legacy outputs if present
|
|
172
|
+
...(legacyOutputs || {}),
|
|
173
|
+
};
|
|
174
|
+
if (cliResult.success && cliResult.cliOutput) {
|
|
175
|
+
const cli = cliResult.cliOutput;
|
|
176
|
+
if (cli.reviewScore !== undefined) {
|
|
177
|
+
outputs['review-score'] = cli.reviewScore.toString();
|
|
178
|
+
}
|
|
179
|
+
if (cli.issuesFound !== undefined) {
|
|
180
|
+
outputs['issues-found'] = cli.issuesFound.toString();
|
|
181
|
+
}
|
|
182
|
+
if (cli.autoReviewCompleted !== undefined) {
|
|
183
|
+
outputs['auto-review-completed'] = cli.autoReviewCompleted.toString();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return outputs;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Execute command with timeout and proper error handling
|
|
190
|
+
*/
|
|
191
|
+
executeCommand(command, args, options = {}) {
|
|
192
|
+
return new Promise((resolve, reject) => {
|
|
193
|
+
const { cwd, env, timeout = 30000 } = options;
|
|
194
|
+
const child = (0, child_process_1.spawn)(command, args, {
|
|
195
|
+
cwd,
|
|
196
|
+
env,
|
|
197
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
198
|
+
});
|
|
199
|
+
let output = '';
|
|
200
|
+
let error = '';
|
|
201
|
+
let timeoutHandle = null;
|
|
202
|
+
if (child.stdout) {
|
|
203
|
+
child.stdout.on('data', data => {
|
|
204
|
+
output += data.toString();
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
if (child.stderr) {
|
|
208
|
+
child.stderr.on('data', data => {
|
|
209
|
+
error += data.toString();
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
child.on('close', code => {
|
|
213
|
+
if (timeoutHandle) {
|
|
214
|
+
clearTimeout(timeoutHandle);
|
|
215
|
+
}
|
|
216
|
+
resolve({
|
|
217
|
+
output: output.trim(),
|
|
218
|
+
error: error.trim(),
|
|
219
|
+
exitCode: code || 0,
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
child.on('error', err => {
|
|
223
|
+
if (timeoutHandle) {
|
|
224
|
+
clearTimeout(timeoutHandle);
|
|
225
|
+
}
|
|
226
|
+
reject(new Error(`Command execution failed: ${err.message}`));
|
|
227
|
+
});
|
|
228
|
+
// Set timeout if specified
|
|
229
|
+
if (timeout > 0) {
|
|
230
|
+
timeoutHandle = setTimeout(() => {
|
|
231
|
+
child.kill('SIGTERM');
|
|
232
|
+
reject(new Error(`Command execution timed out after ${timeout}ms`));
|
|
233
|
+
}, timeout);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Parse CLI JSON output to extract relevant data
|
|
239
|
+
*/
|
|
240
|
+
parseCliOutput(output) {
|
|
241
|
+
try {
|
|
242
|
+
// Look for JSON output in the CLI result
|
|
243
|
+
const lines = output.split('\n');
|
|
244
|
+
for (const line of lines) {
|
|
245
|
+
const trimmed = line.trim();
|
|
246
|
+
if (trimmed.startsWith('{') && trimmed.endsWith('}')) {
|
|
247
|
+
const parsed = JSON.parse(trimmed);
|
|
248
|
+
// Extract relevant data that can be used for Action outputs
|
|
249
|
+
return {
|
|
250
|
+
reviewScore: parsed.reviewScore || parsed.overallScore,
|
|
251
|
+
issuesFound: parsed.issuesFound || parsed.totalIssues,
|
|
252
|
+
autoReviewCompleted: parsed.autoReviewCompleted || false,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return {};
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
console.log('Could not parse CLI output as JSON, using default values');
|
|
260
|
+
return {};
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Check if a check type is valid
|
|
265
|
+
*/
|
|
266
|
+
isValidCheck(check) {
|
|
267
|
+
const validChecks = ['performance', 'architecture', 'security', 'style', 'all'];
|
|
268
|
+
return validChecks.includes(check);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Create temporary config file from action inputs
|
|
272
|
+
*/
|
|
273
|
+
async createTempConfigFromInputs(inputs, options = {}) {
|
|
274
|
+
const { workingDir = process.cwd() } = options;
|
|
275
|
+
if (!inputs['visor-checks']) {
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
const checks = inputs['visor-checks']
|
|
279
|
+
.split(',')
|
|
280
|
+
.map(check => check.trim())
|
|
281
|
+
.filter(check => this.isValidCheck(check));
|
|
282
|
+
if (checks.length === 0) {
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
// Create a basic Visor config from the checks
|
|
286
|
+
const config = {
|
|
287
|
+
version: '1.0',
|
|
288
|
+
checks: {},
|
|
289
|
+
output: {
|
|
290
|
+
pr_comment: {
|
|
291
|
+
format: 'markdown',
|
|
292
|
+
group_by: 'check',
|
|
293
|
+
collapse: true,
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
// Map GitHub Action checks to Visor config format
|
|
298
|
+
for (const check of checks) {
|
|
299
|
+
const checkName = `${check}-check`;
|
|
300
|
+
config.checks[checkName] = {
|
|
301
|
+
type: 'ai',
|
|
302
|
+
prompt: this.getPromptForCheck(check),
|
|
303
|
+
on: ['pr_opened', 'pr_updated'],
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
// Write temporary config file
|
|
307
|
+
const tempConfigPath = path.join(workingDir, '.visor-temp.yaml');
|
|
308
|
+
try {
|
|
309
|
+
const yaml = require('js-yaml');
|
|
310
|
+
const yamlContent = yaml.dump(config);
|
|
311
|
+
await fs_1.promises.writeFile(tempConfigPath, yamlContent, 'utf8');
|
|
312
|
+
return tempConfigPath;
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
console.error('Failed to create temporary config file:', error);
|
|
316
|
+
return null;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Get AI prompt for a specific check type
|
|
321
|
+
*/
|
|
322
|
+
getPromptForCheck(check) {
|
|
323
|
+
const prompts = {
|
|
324
|
+
security: `Review this code for security vulnerabilities, focusing on:
|
|
325
|
+
- SQL injection, XSS, CSRF vulnerabilities
|
|
326
|
+
- Authentication and authorization flaws
|
|
327
|
+
- Sensitive data exposure
|
|
328
|
+
- Input validation issues
|
|
329
|
+
- Cryptographic weaknesses`,
|
|
330
|
+
performance: `Analyze this code for performance issues, focusing on:
|
|
331
|
+
- Database query efficiency (N+1 problems, missing indexes)
|
|
332
|
+
- Memory usage and potential leaks
|
|
333
|
+
- Algorithmic complexity issues
|
|
334
|
+
- Caching opportunities
|
|
335
|
+
- Resource utilization`,
|
|
336
|
+
architecture: `Review the architectural aspects of this code, focusing on:
|
|
337
|
+
- Design patterns and code organization
|
|
338
|
+
- Separation of concerns
|
|
339
|
+
- SOLID principles adherence
|
|
340
|
+
- Code maintainability and extensibility
|
|
341
|
+
- Technical debt`,
|
|
342
|
+
style: `Review code style and maintainability, focusing on:
|
|
343
|
+
- Consistent naming conventions
|
|
344
|
+
- Code formatting and readability
|
|
345
|
+
- Documentation quality
|
|
346
|
+
- Error handling patterns
|
|
347
|
+
- Code complexity`,
|
|
348
|
+
all: `Perform a comprehensive code review covering:
|
|
349
|
+
- Security vulnerabilities and best practices
|
|
350
|
+
- Performance optimization opportunities
|
|
351
|
+
- Architectural improvements
|
|
352
|
+
- Code style and maintainability
|
|
353
|
+
- Documentation and testing coverage`,
|
|
354
|
+
};
|
|
355
|
+
return prompts[check];
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Cleanup temporary files
|
|
359
|
+
*/
|
|
360
|
+
async cleanup(options = {}) {
|
|
361
|
+
const { workingDir = process.cwd() } = options;
|
|
362
|
+
const tempConfigPath = path.join(workingDir, '.visor-temp.yaml');
|
|
363
|
+
try {
|
|
364
|
+
await fs_1.promises.unlink(tempConfigPath);
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
// Ignore cleanup errors
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
exports.ActionCliBridge = ActionCliBridge;
|
|
372
|
+
//# sourceMappingURL=action-cli-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-cli-bridge.js","sourceRoot":"","sources":["../src/action-cli-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { PRInfo } from './pr-analyzer';
|
|
2
|
+
import { ReviewSummary } from './reviewer';
|
|
3
|
+
export interface AIReviewConfig {
|
|
4
|
+
apiKey?: string;
|
|
5
|
+
model?: string;
|
|
6
|
+
timeout?: number;
|
|
7
|
+
provider?: 'google' | 'anthropic' | 'openai' | 'mock';
|
|
8
|
+
debug?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface AIDebugInfo {
|
|
11
|
+
/** The prompt sent to the AI */
|
|
12
|
+
prompt: string;
|
|
13
|
+
/** Raw response from the AI service */
|
|
14
|
+
rawResponse: string;
|
|
15
|
+
/** Provider used (google, anthropic, openai) */
|
|
16
|
+
provider: string;
|
|
17
|
+
/** Model used */
|
|
18
|
+
model: string;
|
|
19
|
+
/** API key source (for privacy, just show which env var) */
|
|
20
|
+
apiKeySource: string;
|
|
21
|
+
/** Processing time in milliseconds */
|
|
22
|
+
processingTime: number;
|
|
23
|
+
/** Prompt length in characters */
|
|
24
|
+
promptLength: number;
|
|
25
|
+
/** Response length in characters */
|
|
26
|
+
responseLength: number;
|
|
27
|
+
/** Any errors encountered */
|
|
28
|
+
errors?: string[];
|
|
29
|
+
/** Whether JSON parsing succeeded */
|
|
30
|
+
jsonParseSuccess: boolean;
|
|
31
|
+
/** Timestamp when request was made */
|
|
32
|
+
timestamp: string;
|
|
33
|
+
/** Total API calls made */
|
|
34
|
+
totalApiCalls?: number;
|
|
35
|
+
/** Details about API calls made */
|
|
36
|
+
apiCallDetails?: Array<{
|
|
37
|
+
checkName: string;
|
|
38
|
+
provider: string;
|
|
39
|
+
model: string;
|
|
40
|
+
processingTime: number;
|
|
41
|
+
success: boolean;
|
|
42
|
+
}>;
|
|
43
|
+
}
|
|
44
|
+
export declare class AIReviewService {
|
|
45
|
+
private config;
|
|
46
|
+
constructor(config?: AIReviewConfig);
|
|
47
|
+
/**
|
|
48
|
+
* Execute AI review using probe agent
|
|
49
|
+
*/
|
|
50
|
+
executeReview(prInfo: PRInfo, customPrompt: string, schema?: string): Promise<ReviewSummary>;
|
|
51
|
+
/**
|
|
52
|
+
* Build a custom prompt for AI review with XML-formatted data
|
|
53
|
+
*/
|
|
54
|
+
private buildCustomPrompt;
|
|
55
|
+
/**
|
|
56
|
+
* Format PR context for the AI using XML structure
|
|
57
|
+
*/
|
|
58
|
+
private formatPRContext;
|
|
59
|
+
/**
|
|
60
|
+
* Escape XML special characters
|
|
61
|
+
*/
|
|
62
|
+
private escapeXml;
|
|
63
|
+
/**
|
|
64
|
+
* Call ProbeAgent SDK with built-in schema validation
|
|
65
|
+
*/
|
|
66
|
+
private callProbeAgent;
|
|
67
|
+
/**
|
|
68
|
+
* Load schema content from schema files
|
|
69
|
+
*/
|
|
70
|
+
private loadSchemaContent;
|
|
71
|
+
/**
|
|
72
|
+
* Parse AI response JSON
|
|
73
|
+
*/
|
|
74
|
+
private parseAIResponse;
|
|
75
|
+
/**
|
|
76
|
+
* Generate mock response for testing
|
|
77
|
+
*/
|
|
78
|
+
private generateMockResponse;
|
|
79
|
+
/**
|
|
80
|
+
* Get the API key source for debugging (without revealing the key)
|
|
81
|
+
*/
|
|
82
|
+
private getApiKeySource;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ai-review-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-review-service.d.ts","sourceRoot":"","sources":["../src/ai-review-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;AAaxD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,qCAAqC;IACrC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ;AAuBD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,cAAmB;IA0BvC;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC;IA8GzB;;OAEG;YACW,iBAAiB;IA8C/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAoEvB;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;YACW,cAAc;IA4F5B;;OAEG;YACW,iBAAiB;IAwB/B;;OAEG;IACH,OAAO,CAAC,eAAe;IA0RvB;;OAEG;YACW,oBAAoB;IAgDlC;;OAEG;IACH,OAAO,CAAC,eAAe;CAYxB"}
|