codereview-aia 0.2.4 → 0.2.6
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/runtime/llm/index.d.ts +1 -1
- package/dist/runtime/llm/index.js +5 -1
- package/dist/runtime/llm/index.js.map +1 -1
- package/dist/runtime/llm/openRouterClient.d.ts +17 -1
- package/dist/runtime/llm/openRouterClient.js +265 -2
- package/dist/runtime/llm/openRouterClient.js.map +1 -1
- package/dist/runtime/reportWriter.d.ts +9 -0
- package/dist/runtime/reportWriter.js +51 -0
- package/dist/runtime/reportWriter.js.map +1 -1
- package/dist/runtime/reviewPipeline.js +145 -22
- package/dist/runtime/reviewPipeline.js.map +1 -1
- package/dist/runtime/tools/grep.d.ts +45 -0
- package/dist/runtime/tools/grep.js +182 -0
- package/dist/runtime/tools/grep.js.map +1 -0
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export { analyzeWithLlm, type LlmAnalysisInput, type LlmAnalysisResult } from './openRouterClient';
|
|
1
|
+
export { analyzeWithLlm, analyzeSingleFileWithTools, getRetryAfterMs, getOpenRouterStatus, formatOpenRouterErrorMessage, type LlmAnalysisInput, type LlmAnalysisResult, type FileAnalysisResult, } from './openRouterClient';
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.analyzeWithLlm = void 0;
|
|
3
|
+
exports.formatOpenRouterErrorMessage = exports.getOpenRouterStatus = exports.getRetryAfterMs = exports.analyzeSingleFileWithTools = exports.analyzeWithLlm = void 0;
|
|
4
4
|
var openRouterClient_1 = require("./openRouterClient");
|
|
5
5
|
Object.defineProperty(exports, "analyzeWithLlm", { enumerable: true, get: function () { return openRouterClient_1.analyzeWithLlm; } });
|
|
6
|
+
Object.defineProperty(exports, "analyzeSingleFileWithTools", { enumerable: true, get: function () { return openRouterClient_1.analyzeSingleFileWithTools; } });
|
|
7
|
+
Object.defineProperty(exports, "getRetryAfterMs", { enumerable: true, get: function () { return openRouterClient_1.getRetryAfterMs; } });
|
|
8
|
+
Object.defineProperty(exports, "getOpenRouterStatus", { enumerable: true, get: function () { return openRouterClient_1.getOpenRouterStatus; } });
|
|
9
|
+
Object.defineProperty(exports, "formatOpenRouterErrorMessage", { enumerable: true, get: function () { return openRouterClient_1.formatOpenRouterErrorMessage; } });
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/llm/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/llm/index.ts"],"names":[],"mappings":";;;AAAA,uDAS4B;AAR1B,kHAAA,cAAc,OAAA;AACd,8HAAA,0BAA0B,OAAA;AAC1B,mHAAA,eAAe,OAAA;AACf,uHAAA,mBAAmB,OAAA;AACnB,gIAAA,4BAA4B,OAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PhpcsJsonReport } from '../phpcsRunner';
|
|
1
|
+
import type { PhpcsJsonReport, PhpcsMessage } from '../phpcsRunner';
|
|
2
2
|
export interface LlmAnalysisInput {
|
|
3
3
|
phpcsJson: PhpcsJsonReport;
|
|
4
4
|
fileContents: Map<string, string>;
|
|
@@ -10,4 +10,20 @@ export interface LlmAnalysisResult {
|
|
|
10
10
|
success: boolean;
|
|
11
11
|
error?: string;
|
|
12
12
|
}
|
|
13
|
+
export interface FileAnalysisResult {
|
|
14
|
+
filePath: string;
|
|
15
|
+
summary: string;
|
|
16
|
+
fix: string;
|
|
17
|
+
success: boolean;
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
13
20
|
export declare function analyzeWithLlm(input: LlmAnalysisInput): Promise<LlmAnalysisResult>;
|
|
21
|
+
export declare function analyzeSingleFileWithTools(params: {
|
|
22
|
+
filePath: string;
|
|
23
|
+
fileContent: string;
|
|
24
|
+
issues: PhpcsMessage[];
|
|
25
|
+
workspaceRoot: string;
|
|
26
|
+
}): Promise<FileAnalysisResult>;
|
|
27
|
+
export declare function formatOpenRouterErrorMessage(error: unknown): string;
|
|
28
|
+
export declare function getRetryAfterMs(error: unknown): number | undefined;
|
|
29
|
+
export declare function getOpenRouterStatus(error: unknown): number | undefined;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.analyzeWithLlm = analyzeWithLlm;
|
|
7
|
+
exports.analyzeSingleFileWithTools = analyzeSingleFileWithTools;
|
|
8
|
+
exports.formatOpenRouterErrorMessage = formatOpenRouterErrorMessage;
|
|
9
|
+
exports.getRetryAfterMs = getRetryAfterMs;
|
|
10
|
+
exports.getOpenRouterStatus = getOpenRouterStatus;
|
|
11
|
+
const grep_1 = require("../tools/grep");
|
|
12
|
+
const logger_1 = __importDefault(require("../../utils/logger"));
|
|
4
13
|
// Cache the auth token for reuse
|
|
5
14
|
let cachedToken = null;
|
|
6
15
|
// Default edge service config (production).
|
|
@@ -38,6 +47,7 @@ async function getEdgeToken() {
|
|
|
38
47
|
async function callViaProxy(payload) {
|
|
39
48
|
const { baseUrl } = getEdgeConfig();
|
|
40
49
|
const token = await getEdgeToken();
|
|
50
|
+
logger_1.default.debug('Calling edge proxy', summarizePayload(payload));
|
|
41
51
|
const response = await fetch(`${baseUrl}/proxy`, {
|
|
42
52
|
method: 'POST',
|
|
43
53
|
headers: {
|
|
@@ -48,11 +58,13 @@ async function callViaProxy(payload) {
|
|
|
48
58
|
});
|
|
49
59
|
if (!response.ok) {
|
|
50
60
|
const errorText = await response.text();
|
|
51
|
-
throw
|
|
61
|
+
throw buildOpenRouterError('Proxy error', response.status, errorText);
|
|
52
62
|
}
|
|
63
|
+
logger_1.default.debug('Edge proxy response ok', { status: response.status });
|
|
53
64
|
return response.json();
|
|
54
65
|
}
|
|
55
66
|
async function callDirectly(payload, apiKey) {
|
|
67
|
+
logger_1.default.debug('Calling OpenRouter directly', summarizePayload(payload));
|
|
56
68
|
const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
|
|
57
69
|
method: 'POST',
|
|
58
70
|
headers: {
|
|
@@ -65,8 +77,9 @@ async function callDirectly(payload, apiKey) {
|
|
|
65
77
|
});
|
|
66
78
|
if (!response.ok) {
|
|
67
79
|
const errorText = await response.text();
|
|
68
|
-
throw
|
|
80
|
+
throw buildOpenRouterError('OpenRouter error', response.status, errorText);
|
|
69
81
|
}
|
|
82
|
+
logger_1.default.debug('OpenRouter response ok', { status: response.status });
|
|
70
83
|
return response.json();
|
|
71
84
|
}
|
|
72
85
|
async function analyzeWithLlm(input) {
|
|
@@ -121,6 +134,137 @@ async function analyzeWithLlm(input) {
|
|
|
121
134
|
};
|
|
122
135
|
}
|
|
123
136
|
}
|
|
137
|
+
async function analyzeSingleFileWithTools(params) {
|
|
138
|
+
const { filePath, fileContent, issues, workspaceRoot } = params;
|
|
139
|
+
const directApiKey = process.env['OPENROUTER_API_KEY'];
|
|
140
|
+
const hasEdgeCredentials = Boolean(process.env['CR_EDGE_API_KEY'] ||
|
|
141
|
+
process.env['CR_EDGE_TOKEN'] ||
|
|
142
|
+
(process.env['CR_EDGE_USERNAME'] && process.env['CR_EDGE_PASSWORD']));
|
|
143
|
+
const model = process.env['CR_LITE_MODEL'] || DEFAULT_MODEL;
|
|
144
|
+
const maxTurns = clampIntEnv('CR_LLM_TOOL_MAX_TURNS', 4, 1, 8);
|
|
145
|
+
const rawTemperature = parseFloat(process.env['CR_LLM_TEMPERATURE'] || '0.2');
|
|
146
|
+
const temperature = Number.isFinite(rawTemperature) ? rawTemperature : 0.2;
|
|
147
|
+
const maxTokens = clampIntEnv('CR_LLM_MAX_TOKENS', 2500, 500, 8000);
|
|
148
|
+
const maxContentChars = clampIntEnv('CR_LLM_FILE_MAX_CHARS', 12000, 1000, 50000);
|
|
149
|
+
const systemPrompt = `You are a PHP code review agent. You receive PHPCS issues for ONE file.\n` +
|
|
150
|
+
`Return JSON only with keys {\"summary\",\"fix\"}. Summary must be concise and only about the issues.\n` +
|
|
151
|
+
`If you need context from other files, use the grep_search tool. Do not guess.`;
|
|
152
|
+
const truncatedContent = truncateContent(fileContent, maxContentChars);
|
|
153
|
+
if (truncatedContent.truncated) {
|
|
154
|
+
logger_1.default.debug('LLM file content truncated', { filePath, maxContentChars });
|
|
155
|
+
}
|
|
156
|
+
const userPrompt = `FILE: ${filePath}\n\n` +
|
|
157
|
+
`ISSUES:\n${issues.map((issue) => `- [${issue.type}] Line ${issue.line}:${issue.column} ${issue.message}`).join('\n')}\n\n` +
|
|
158
|
+
`CODE:\n\`\`\`php\n${truncatedContent.content}\n\`\`\``;
|
|
159
|
+
let messages = [
|
|
160
|
+
{ role: 'system', content: systemPrompt },
|
|
161
|
+
{ role: 'user', content: userPrompt },
|
|
162
|
+
];
|
|
163
|
+
logger_1.default.debug('LLM analysis started', {
|
|
164
|
+
filePath,
|
|
165
|
+
issueCount: issues.length,
|
|
166
|
+
contentLength: fileContent.length,
|
|
167
|
+
model,
|
|
168
|
+
maxTurns,
|
|
169
|
+
});
|
|
170
|
+
try {
|
|
171
|
+
for (let turn = 1; turn <= maxTurns; turn += 1) {
|
|
172
|
+
const payload = {
|
|
173
|
+
model,
|
|
174
|
+
messages,
|
|
175
|
+
tools: [grep_1.GREP_TOOL_DEFINITION],
|
|
176
|
+
tool_choice: 'auto',
|
|
177
|
+
response_format: { type: 'json_object' },
|
|
178
|
+
temperature,
|
|
179
|
+
max_tokens: maxTokens,
|
|
180
|
+
http_referer: 'https://github.com/cr-aia',
|
|
181
|
+
x_title: 'cr-aia',
|
|
182
|
+
};
|
|
183
|
+
let data;
|
|
184
|
+
if (hasEdgeCredentials) {
|
|
185
|
+
data = await callViaProxy(payload);
|
|
186
|
+
}
|
|
187
|
+
else if (directApiKey) {
|
|
188
|
+
data = await callDirectly(payload, directApiKey);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
throw new Error('No edge credentials or OpenRouter API key available.');
|
|
192
|
+
}
|
|
193
|
+
const choice = data.choices?.[0];
|
|
194
|
+
const message = choice?.message;
|
|
195
|
+
logger_1.default.debug('LLM response received', {
|
|
196
|
+
filePath,
|
|
197
|
+
turn,
|
|
198
|
+
finishReason: choice?.finish_reason ?? null,
|
|
199
|
+
hasToolCalls: Boolean(message?.tool_calls?.length),
|
|
200
|
+
contentLength: message?.content?.length ?? 0,
|
|
201
|
+
});
|
|
202
|
+
if (!message) {
|
|
203
|
+
throw new Error('Empty response from LLM');
|
|
204
|
+
}
|
|
205
|
+
messages.push({
|
|
206
|
+
role: 'assistant',
|
|
207
|
+
content: message.content ?? '',
|
|
208
|
+
tool_calls: message.tool_calls,
|
|
209
|
+
});
|
|
210
|
+
if (message.tool_calls && message.tool_calls.length > 0) {
|
|
211
|
+
for (const toolCall of message.tool_calls) {
|
|
212
|
+
const toolName = toolCall.function.name;
|
|
213
|
+
if (toolName !== 'grep_search') {
|
|
214
|
+
messages.push({
|
|
215
|
+
role: 'tool',
|
|
216
|
+
tool_call_id: toolCall.id,
|
|
217
|
+
content: `Unsupported tool: ${toolName}`,
|
|
218
|
+
});
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
let toolArgs;
|
|
222
|
+
try {
|
|
223
|
+
toolArgs = JSON.parse(toolCall.function.arguments);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
logger_1.default.debug('Failed to parse tool arguments', { filePath, error });
|
|
227
|
+
messages.push({
|
|
228
|
+
role: 'tool',
|
|
229
|
+
tool_call_id: toolCall.id,
|
|
230
|
+
content: 'Invalid tool arguments. Use valid JSON.',
|
|
231
|
+
});
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
logger_1.default.debug('Executing grep tool', { filePath, toolArgs });
|
|
235
|
+
const toolOutput = await (0, grep_1.executeGrep)(toolArgs, { workspaceRoot });
|
|
236
|
+
logger_1.default.debug('Grep tool output ready', {
|
|
237
|
+
filePath,
|
|
238
|
+
outputLength: toolOutput.length,
|
|
239
|
+
});
|
|
240
|
+
messages.push({
|
|
241
|
+
role: 'tool',
|
|
242
|
+
tool_call_id: toolCall.id,
|
|
243
|
+
content: toolOutput,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
const content = message.content ?? '';
|
|
249
|
+
const parsed = parseJsonContent(content);
|
|
250
|
+
if (!parsed) {
|
|
251
|
+
logger_1.default.debug('LLM JSON parse failed', { filePath, contentPreview: content.slice(0, 200) });
|
|
252
|
+
throw new Error('Invalid JSON response');
|
|
253
|
+
}
|
|
254
|
+
return {
|
|
255
|
+
filePath,
|
|
256
|
+
summary: parsed.summary || 'No summary provided.',
|
|
257
|
+
fix: parsed.fix || 'No fix provided.',
|
|
258
|
+
success: true,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
throw new Error('Max tool turns reached');
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
logger_1.default.error('LLM analysis failed', { filePath, error: serializeOpenRouterError(error) });
|
|
265
|
+
throw error;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
124
268
|
function buildSystemPrompt() {
|
|
125
269
|
return `You are a Senior PHP Developer and Code Review Expert.
|
|
126
270
|
Your task is to analyze PHPCS (PHP_CodeSniffer) output and provide a comprehensive,
|
|
@@ -193,4 +337,123 @@ function buildFallbackReport(input) {
|
|
|
193
337
|
}
|
|
194
338
|
return report;
|
|
195
339
|
}
|
|
340
|
+
function parseJsonContent(content) {
|
|
341
|
+
const trimmed = content.trim();
|
|
342
|
+
if (!trimmed)
|
|
343
|
+
return null;
|
|
344
|
+
const fenced = trimmed.match(/```json\s*([\s\S]*?)\s*```/i);
|
|
345
|
+
const candidate = fenced?.[1] ?? trimmed;
|
|
346
|
+
try {
|
|
347
|
+
return JSON.parse(candidate);
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
const match = trimmed.match(/\{[\s\S]*\}/);
|
|
351
|
+
if (!match)
|
|
352
|
+
return null;
|
|
353
|
+
try {
|
|
354
|
+
return JSON.parse(match[0]);
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
return null;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
function truncateContent(content, maxChars) {
|
|
362
|
+
if (content.length <= maxChars) {
|
|
363
|
+
return { content, truncated: false };
|
|
364
|
+
}
|
|
365
|
+
return { content: `${content.slice(0, maxChars)}\n// [truncated]`, truncated: true };
|
|
366
|
+
}
|
|
367
|
+
function clampIntEnv(name, fallback, min, max) {
|
|
368
|
+
const raw = process.env[name];
|
|
369
|
+
if (!raw)
|
|
370
|
+
return fallback;
|
|
371
|
+
const value = Number(raw);
|
|
372
|
+
if (!Number.isFinite(value))
|
|
373
|
+
return fallback;
|
|
374
|
+
return Math.max(min, Math.min(max, Math.floor(value)));
|
|
375
|
+
}
|
|
376
|
+
function summarizePayload(payload) {
|
|
377
|
+
return {
|
|
378
|
+
model: payload.model,
|
|
379
|
+
messageCount: payload.messages.length,
|
|
380
|
+
hasTools: Boolean(payload.tools?.length),
|
|
381
|
+
toolChoice: payload.tool_choice ?? 'none',
|
|
382
|
+
temperature: payload.temperature,
|
|
383
|
+
maxTokens: payload.max_tokens,
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
class OpenRouterError extends Error {
|
|
387
|
+
status;
|
|
388
|
+
retryAfterMs;
|
|
389
|
+
bodyText;
|
|
390
|
+
constructor(message, status, bodyText, retryAfterMs) {
|
|
391
|
+
super(message);
|
|
392
|
+
this.status = status;
|
|
393
|
+
this.retryAfterMs = retryAfterMs;
|
|
394
|
+
this.bodyText = bodyText;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
function buildOpenRouterError(prefix, status, bodyText) {
|
|
398
|
+
const retryAfterMs = extractRetryAfterMs(bodyText);
|
|
399
|
+
const message = `${prefix}: ${status}`;
|
|
400
|
+
return new OpenRouterError(message, status, bodyText, retryAfterMs);
|
|
401
|
+
}
|
|
402
|
+
function extractRetryAfterMs(bodyText) {
|
|
403
|
+
if (!bodyText)
|
|
404
|
+
return undefined;
|
|
405
|
+
try {
|
|
406
|
+
const parsed = JSON.parse(bodyText);
|
|
407
|
+
const headerValue = parsed?.error?.metadata?.headers?.['X-RateLimit-Reset'];
|
|
408
|
+
if (headerValue) {
|
|
409
|
+
const resetMs = Number(headerValue);
|
|
410
|
+
if (Number.isFinite(resetMs)) {
|
|
411
|
+
const waitMs = Math.max(0, resetMs - Date.now());
|
|
412
|
+
return waitMs;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
catch {
|
|
417
|
+
return undefined;
|
|
418
|
+
}
|
|
419
|
+
return undefined;
|
|
420
|
+
}
|
|
421
|
+
function serializeOpenRouterError(error) {
|
|
422
|
+
if (error instanceof OpenRouterError) {
|
|
423
|
+
return {
|
|
424
|
+
message: error.message,
|
|
425
|
+
status: error.status,
|
|
426
|
+
retryAfterMs: error.retryAfterMs,
|
|
427
|
+
bodyPreview: error.bodyText?.slice(0, 300),
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
if (error instanceof Error) {
|
|
431
|
+
return { message: error.message, stack: error.stack };
|
|
432
|
+
}
|
|
433
|
+
return { error };
|
|
434
|
+
}
|
|
435
|
+
function formatOpenRouterErrorMessage(error) {
|
|
436
|
+
if (error instanceof OpenRouterError) {
|
|
437
|
+
if (error.bodyText) {
|
|
438
|
+
return `${error.message} - ${error.bodyText}`;
|
|
439
|
+
}
|
|
440
|
+
return error.message;
|
|
441
|
+
}
|
|
442
|
+
if (error instanceof Error) {
|
|
443
|
+
return error.message;
|
|
444
|
+
}
|
|
445
|
+
return 'Unknown error';
|
|
446
|
+
}
|
|
447
|
+
function getRetryAfterMs(error) {
|
|
448
|
+
if (error instanceof OpenRouterError) {
|
|
449
|
+
return error.retryAfterMs;
|
|
450
|
+
}
|
|
451
|
+
return undefined;
|
|
452
|
+
}
|
|
453
|
+
function getOpenRouterStatus(error) {
|
|
454
|
+
if (error instanceof OpenRouterError) {
|
|
455
|
+
return error.status;
|
|
456
|
+
}
|
|
457
|
+
return undefined;
|
|
458
|
+
}
|
|
196
459
|
//# sourceMappingURL=openRouterClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openRouterClient.js","sourceRoot":"","sources":["../../../src/runtime/llm/openRouterClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openRouterClient.js","sourceRoot":"","sources":["../../../src/runtime/llm/openRouterClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,19 @@ export interface ReportWriterOptions {
|
|
|
7
7
|
filesReviewed: number;
|
|
8
8
|
generatedAt: Date;
|
|
9
9
|
}
|
|
10
|
+
export interface AnnotatedReportOptions extends ReportWriterOptions {
|
|
11
|
+
fileAnalyses: Map<string, {
|
|
12
|
+
summary: string;
|
|
13
|
+
fix: string;
|
|
14
|
+
success: boolean;
|
|
15
|
+
error?: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
10
18
|
export interface ReportWriteResult {
|
|
11
19
|
reportPath: string;
|
|
12
20
|
}
|
|
13
21
|
export declare function writeMarkdownReport(parsed: ParsedPhpcsReport, options: ReportWriterOptions): ReportWriteResult;
|
|
22
|
+
export declare function writeAnnotatedReport(parsed: ParsedPhpcsReport, options: AnnotatedReportOptions): ReportWriteResult;
|
|
14
23
|
export declare function writeLlmReport(markdownContent: string, options: Omit<ReportWriterOptions, 'filesReviewed'>): string;
|
|
15
24
|
export declare function resolveOutputDirectory(root: string, outputDir: string): string;
|
|
16
25
|
export declare function formatReportFileName(repo: string, date: Date): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.writeMarkdownReport = writeMarkdownReport;
|
|
4
|
+
exports.writeAnnotatedReport = writeAnnotatedReport;
|
|
4
5
|
exports.writeLlmReport = writeLlmReport;
|
|
5
6
|
exports.resolveOutputDirectory = resolveOutputDirectory;
|
|
6
7
|
exports.formatReportFileName = formatReportFileName;
|
|
@@ -37,6 +38,56 @@ function writeMarkdownReport(parsed, options) {
|
|
|
37
38
|
(0, node_fs_1.writeFileSync)(reportPath, lines.join('\n'), 'utf8');
|
|
38
39
|
return { reportPath };
|
|
39
40
|
}
|
|
41
|
+
function writeAnnotatedReport(parsed, options) {
|
|
42
|
+
const outputDir = resolveOutputDirectory(options.workspaceRoot, options.outDir);
|
|
43
|
+
(0, node_fs_1.mkdirSync)(outputDir, { recursive: true });
|
|
44
|
+
const reportName = formatReportFileName(options.repoName, options.generatedAt);
|
|
45
|
+
const reportPath = (0, node_path_1.join)(outputDir, reportName);
|
|
46
|
+
const lines = [];
|
|
47
|
+
lines.push(`# PHPCS Report — ${formatTimestamp(options.generatedAt)}`);
|
|
48
|
+
lines.push('');
|
|
49
|
+
lines.push(`Repository: ${options.repoName}`);
|
|
50
|
+
lines.push(`Mode: ${options.mode}`);
|
|
51
|
+
lines.push(`Files reviewed: ${options.filesReviewed}`);
|
|
52
|
+
lines.push(`Errors: ${parsed.totals.errors} Warnings: ${parsed.totals.warnings} Fixable: ${parsed.totals.fixable}`);
|
|
53
|
+
lines.push('');
|
|
54
|
+
lines.push('## Issues');
|
|
55
|
+
const fileEntries = Object.entries(parsed.issuesByFile);
|
|
56
|
+
if (fileEntries.length === 0) {
|
|
57
|
+
lines.push('No issues reported.');
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
for (const [filePath, issues] of fileEntries) {
|
|
61
|
+
lines.push(filePath);
|
|
62
|
+
for (const issue of issues) {
|
|
63
|
+
lines.push(formatIssue(issue));
|
|
64
|
+
}
|
|
65
|
+
const analysis = options.fileAnalyses.get(filePath);
|
|
66
|
+
if (analysis) {
|
|
67
|
+
lines.push('');
|
|
68
|
+
lines.push('**Summary**');
|
|
69
|
+
lines.push(analysis.summary || 'No summary provided.');
|
|
70
|
+
lines.push('');
|
|
71
|
+
lines.push('**Recommended Fix**');
|
|
72
|
+
if (analysis.fix?.trim().startsWith('```')) {
|
|
73
|
+
lines.push(analysis.fix.trim());
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
lines.push('```php');
|
|
77
|
+
lines.push(analysis.fix || 'No fix provided.');
|
|
78
|
+
lines.push('```');
|
|
79
|
+
}
|
|
80
|
+
if (!analysis.success && analysis.error) {
|
|
81
|
+
lines.push('');
|
|
82
|
+
lines.push(`> ⚠️ LLM analysis error: ${analysis.error}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
lines.push('');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
(0, node_fs_1.writeFileSync)(reportPath, lines.join('\n'), 'utf8');
|
|
89
|
+
return { reportPath };
|
|
90
|
+
}
|
|
40
91
|
function writeLlmReport(markdownContent, options) {
|
|
41
92
|
const outputDir = resolveOutputDirectory(options.workspaceRoot, options.outDir);
|
|
42
93
|
(0, node_fs_1.mkdirSync)(outputDir, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reportWriter.js","sourceRoot":"","sources":["../../src/runtime/reportWriter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"reportWriter.js","sourceRoot":"","sources":["../../src/runtime/reportWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ const edgeClient_1 = require("./api/edgeClient");
|
|
|
16
16
|
const batcher_1 = require("./api/batcher");
|
|
17
17
|
const errors_1 = require("./errors");
|
|
18
18
|
const logger_1 = __importDefault(require("../utils/logger"));
|
|
19
|
+
const p_limit_1 = __importDefault(require("p-limit"));
|
|
19
20
|
async function executeReview(options) {
|
|
20
21
|
const { outDir, debug = false, onStage, mode = 'uncommitted', includeRelated = false } = options;
|
|
21
22
|
onStage?.('collecting');
|
|
@@ -49,39 +50,93 @@ async function executeReview(options) {
|
|
|
49
50
|
debug,
|
|
50
51
|
});
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
const parsed = (0, phpcsParser_1.parsePhpcsReport)(report, workspaceRoot);
|
|
54
|
+
const duration = Math.round((Date.now() - start) / 1000);
|
|
55
|
+
const fileAnalyses = new Map();
|
|
56
|
+
if (mode === 'uncommitted' && parsed.issueCount > 0) {
|
|
55
57
|
onStage?.('analyzing');
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
58
|
+
const concurrency = clampIntEnv('CR_LLM_CONCURRENCY', 4, 1, 20);
|
|
59
|
+
const rps = clampIntEnv('CR_LLM_RPS', 0, 0, 50);
|
|
60
|
+
const limit = (0, p_limit_1.default)(concurrency);
|
|
61
|
+
const rateLimiter = createRateLimiter(rps);
|
|
62
|
+
logger_1.default.info('Starting per-file LLM analysis', {
|
|
63
|
+
filesWithIssues: Object.keys(parsed.issuesByFile).length,
|
|
64
|
+
concurrency,
|
|
65
|
+
rps,
|
|
66
|
+
});
|
|
67
|
+
const tasks = Object.entries(parsed.issuesByFile).map(([relativePath, issues]) => limit(async () => {
|
|
68
|
+
await rateLimiter();
|
|
69
|
+
const absolutePath = (0, node_path_1.resolve)(workspaceRoot, relativePath);
|
|
70
|
+
const analysisStart = Date.now();
|
|
71
|
+
logger_1.default.debug('Starting file analysis', {
|
|
72
|
+
filePath: relativePath,
|
|
73
|
+
issueCount: issues.length,
|
|
74
|
+
});
|
|
75
|
+
let content = '';
|
|
59
76
|
try {
|
|
60
|
-
|
|
61
|
-
fileContents.set(filePath, content);
|
|
77
|
+
content = (0, node_fs_1.readFileSync)(absolutePath, 'utf8');
|
|
62
78
|
}
|
|
63
79
|
catch (err) {
|
|
64
|
-
logger_1.default.
|
|
80
|
+
logger_1.default.error('Failed to read file for LLM analysis', { filePath: relativePath, error: err });
|
|
81
|
+
fileAnalyses.set(relativePath, {
|
|
82
|
+
filePath: relativePath,
|
|
83
|
+
summary: 'Unable to read file content for analysis.',
|
|
84
|
+
fix: 'No fix provided.',
|
|
85
|
+
success: false,
|
|
86
|
+
error: 'Read error',
|
|
87
|
+
});
|
|
88
|
+
return;
|
|
65
89
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
90
|
+
let result;
|
|
91
|
+
try {
|
|
92
|
+
result = await withRetry(async () => {
|
|
93
|
+
const analysis = await (0, llm_1.analyzeSingleFileWithTools)({
|
|
94
|
+
filePath: relativePath,
|
|
95
|
+
fileContent: content,
|
|
96
|
+
issues,
|
|
97
|
+
workspaceRoot,
|
|
98
|
+
});
|
|
99
|
+
if (!analysis.success) {
|
|
100
|
+
throw new Error(analysis.error || 'LLM analysis failed');
|
|
101
|
+
}
|
|
102
|
+
return analysis;
|
|
103
|
+
}, {
|
|
104
|
+
retries: clampIntEnv('CR_LLM_RETRIES', 2, 0, 5),
|
|
105
|
+
baseDelayMs: clampIntEnv('CR_LLM_RETRY_BASE_MS', 800, 200, 5000),
|
|
106
|
+
filePath: relativePath,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
logger_1.default.error('LLM analysis failed after retries', { filePath: relativePath, error });
|
|
111
|
+
result = {
|
|
112
|
+
filePath: relativePath,
|
|
113
|
+
summary: 'LLM analysis failed after retries.',
|
|
114
|
+
fix: 'No fix provided.',
|
|
115
|
+
success: false,
|
|
116
|
+
error: (0, llm_1.formatOpenRouterErrorMessage)(error),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
fileAnalyses.set(relativePath, result);
|
|
120
|
+
logger_1.default.debug('File analysis completed', {
|
|
121
|
+
filePath: relativePath,
|
|
122
|
+
success: result.success,
|
|
123
|
+
durationMs: Date.now() - analysisStart,
|
|
124
|
+
});
|
|
125
|
+
}));
|
|
126
|
+
await Promise.allSettled(tasks);
|
|
73
127
|
}
|
|
74
|
-
const parsed = (0, phpcsParser_1.parsePhpcsReport)(report, workspaceRoot);
|
|
75
|
-
const duration = Math.round((Date.now() - start) / 1000);
|
|
76
128
|
let finalReportPath;
|
|
77
|
-
if (
|
|
78
|
-
|
|
129
|
+
if (mode === 'uncommitted') {
|
|
130
|
+
const { reportPath } = (0, reportWriter_1.writeAnnotatedReport)(parsed, {
|
|
79
131
|
workspaceRoot,
|
|
80
132
|
outDir,
|
|
81
133
|
repoName,
|
|
82
134
|
mode,
|
|
135
|
+
filesReviewed: files.length,
|
|
83
136
|
generatedAt: new Date(),
|
|
137
|
+
fileAnalyses,
|
|
84
138
|
});
|
|
139
|
+
finalReportPath = reportPath;
|
|
85
140
|
}
|
|
86
141
|
else {
|
|
87
142
|
const { reportPath } = (0, reportWriter_1.writeMarkdownReport)(parsed, {
|
|
@@ -105,8 +160,8 @@ async function executeReview(options) {
|
|
|
105
160
|
filesReviewed: files.length,
|
|
106
161
|
fileBreakdown: mode === 'uncommitted' ? { uncommitted: stats.uncommitted, related: stats.related } : undefined,
|
|
107
162
|
reportPath: finalReportPath,
|
|
108
|
-
llmAnalysisUsed:
|
|
109
|
-
llmError:
|
|
163
|
+
llmAnalysisUsed: mode === 'uncommitted' && fileAnalyses.size > 0,
|
|
164
|
+
llmError: summarizeAnalysisErrors(fileAnalyses),
|
|
110
165
|
};
|
|
111
166
|
}
|
|
112
167
|
async function executeProdReview(params) {
|
|
@@ -175,4 +230,72 @@ async function executeProdReview(params) {
|
|
|
175
230
|
prodStatus: 'submitted',
|
|
176
231
|
};
|
|
177
232
|
}
|
|
233
|
+
function clampIntEnv(name, fallback, min, max) {
|
|
234
|
+
const raw = process.env[name];
|
|
235
|
+
if (!raw)
|
|
236
|
+
return fallback;
|
|
237
|
+
const value = Number(raw);
|
|
238
|
+
if (!Number.isFinite(value))
|
|
239
|
+
return fallback;
|
|
240
|
+
return Math.max(min, Math.min(max, Math.floor(value)));
|
|
241
|
+
}
|
|
242
|
+
function createRateLimiter(rps) {
|
|
243
|
+
if (rps <= 0) {
|
|
244
|
+
return async () => undefined;
|
|
245
|
+
}
|
|
246
|
+
let nextAvailable = 0;
|
|
247
|
+
const intervalMs = Math.floor(1000 / rps);
|
|
248
|
+
return async () => {
|
|
249
|
+
const now = Date.now();
|
|
250
|
+
const waitMs = Math.max(0, nextAvailable - now);
|
|
251
|
+
nextAvailable = Math.max(nextAvailable, now) + intervalMs;
|
|
252
|
+
if (waitMs > 0) {
|
|
253
|
+
await new Promise((resolve) => setTimeout(resolve, waitMs));
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
async function withRetry(fn, options) {
|
|
258
|
+
const { retries, baseDelayMs, filePath } = options;
|
|
259
|
+
let attempt = 0;
|
|
260
|
+
while (true) {
|
|
261
|
+
attempt += 1;
|
|
262
|
+
try {
|
|
263
|
+
return await fn();
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
const status = (0, llm_1.getOpenRouterStatus)(error);
|
|
267
|
+
const retryAfterMs = (0, llm_1.getRetryAfterMs)(error);
|
|
268
|
+
const retryable = status ? isRetryableStatus(status) : true;
|
|
269
|
+
if (!retryable) {
|
|
270
|
+
throw error;
|
|
271
|
+
}
|
|
272
|
+
if (attempt > retries + 1) {
|
|
273
|
+
throw error;
|
|
274
|
+
}
|
|
275
|
+
const delayBase = retryAfterMs && retryAfterMs > 0
|
|
276
|
+
? Math.max(retryAfterMs, baseDelayMs)
|
|
277
|
+
: baseDelayMs * Math.pow(2, attempt - 1);
|
|
278
|
+
const jitter = Math.floor(Math.random() * 500);
|
|
279
|
+
const delay = delayBase + jitter;
|
|
280
|
+
logger_1.default.warn('Retrying LLM analysis', {
|
|
281
|
+
filePath,
|
|
282
|
+
attempt,
|
|
283
|
+
delay,
|
|
284
|
+
status,
|
|
285
|
+
retryAfterMs,
|
|
286
|
+
error,
|
|
287
|
+
});
|
|
288
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
function summarizeAnalysisErrors(fileAnalyses) {
|
|
293
|
+
const failures = Array.from(fileAnalyses.values()).filter((entry) => !entry.success);
|
|
294
|
+
if (failures.length === 0)
|
|
295
|
+
return undefined;
|
|
296
|
+
return `${failures.length} file analysis${failures.length === 1 ? '' : 'es'} failed.`;
|
|
297
|
+
}
|
|
298
|
+
function isRetryableStatus(status) {
|
|
299
|
+
return status === 408 || status === 429 || status === 500 || status === 502 || status === 503 || status === 504;
|
|
300
|
+
}
|
|
178
301
|
//# sourceMappingURL=reviewPipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewPipeline.js","sourceRoot":"","sources":["../../src/runtime/reviewPipeline.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"reviewPipeline.js","sourceRoot":"","sources":["../../src/runtime/reviewPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface GrepToolArgs {
|
|
2
|
+
pattern: string;
|
|
3
|
+
include?: string[];
|
|
4
|
+
max_results?: number;
|
|
5
|
+
is_regex?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface GrepToolOptions {
|
|
8
|
+
workspaceRoot: string;
|
|
9
|
+
timeoutMs?: number;
|
|
10
|
+
maxOutputBytes?: number;
|
|
11
|
+
maxOutputLines?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare const GREP_TOOL_DEFINITION: {
|
|
14
|
+
readonly type: "function";
|
|
15
|
+
readonly function: {
|
|
16
|
+
readonly name: "grep_search";
|
|
17
|
+
readonly description: "Search the repository for a string or regex to locate related definitions or usages. Use only when needed.";
|
|
18
|
+
readonly parameters: {
|
|
19
|
+
readonly type: "object";
|
|
20
|
+
readonly properties: {
|
|
21
|
+
readonly pattern: {
|
|
22
|
+
readonly type: "string";
|
|
23
|
+
readonly description: "The string or regex to search for.";
|
|
24
|
+
};
|
|
25
|
+
readonly include: {
|
|
26
|
+
readonly type: "array";
|
|
27
|
+
readonly items: {
|
|
28
|
+
readonly type: "string";
|
|
29
|
+
};
|
|
30
|
+
readonly description: "Optional glob patterns to include (defaults to **/*.php).";
|
|
31
|
+
};
|
|
32
|
+
readonly max_results: {
|
|
33
|
+
readonly type: "integer";
|
|
34
|
+
readonly description: "Maximum number of matching lines to return (default 20).";
|
|
35
|
+
};
|
|
36
|
+
readonly is_regex: {
|
|
37
|
+
readonly type: "boolean";
|
|
38
|
+
readonly description: "Treat pattern as regex (default false = fixed string).";
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
readonly required: readonly ["pattern"];
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export declare function executeGrep(args: GrepToolArgs, options: GrepToolOptions): Promise<string>;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GREP_TOOL_DEFINITION = void 0;
|
|
7
|
+
exports.executeGrep = executeGrep;
|
|
8
|
+
const node_child_process_1 = require("node:child_process");
|
|
9
|
+
const node_events_1 = require("node:events");
|
|
10
|
+
const logger_1 = __importDefault(require("../../utils/logger"));
|
|
11
|
+
const DEFAULT_INCLUDE = ['**/*.php'];
|
|
12
|
+
const ALLOWED_EXTENSIONS = new Set(['.php', '.phtml', '.inc', '.php5', '.php7', '.php8']);
|
|
13
|
+
exports.GREP_TOOL_DEFINITION = {
|
|
14
|
+
type: 'function',
|
|
15
|
+
function: {
|
|
16
|
+
name: 'grep_search',
|
|
17
|
+
description: 'Search the repository for a string or regex to locate related definitions or usages. Use only when needed.',
|
|
18
|
+
parameters: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
pattern: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'The string or regex to search for.',
|
|
24
|
+
},
|
|
25
|
+
include: {
|
|
26
|
+
type: 'array',
|
|
27
|
+
items: { type: 'string' },
|
|
28
|
+
description: 'Optional glob patterns to include (defaults to **/*.php).',
|
|
29
|
+
},
|
|
30
|
+
max_results: {
|
|
31
|
+
type: 'integer',
|
|
32
|
+
description: 'Maximum number of matching lines to return (default 20).',
|
|
33
|
+
},
|
|
34
|
+
is_regex: {
|
|
35
|
+
type: 'boolean',
|
|
36
|
+
description: 'Treat pattern as regex (default false = fixed string).',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
required: ['pattern'],
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
async function executeGrep(args, options) {
|
|
44
|
+
const start = Date.now();
|
|
45
|
+
const pattern = (args.pattern || '').trim();
|
|
46
|
+
if (!pattern) {
|
|
47
|
+
return 'No matches found. (Empty pattern)';
|
|
48
|
+
}
|
|
49
|
+
const include = sanitizeGlobs(args.include);
|
|
50
|
+
const maxResults = clampInt(args.max_results ?? 20, 1, 200);
|
|
51
|
+
const timeoutMs = clampInt(options.timeoutMs ?? 4000, 500, 15000);
|
|
52
|
+
const maxOutputBytes = clampInt(options.maxOutputBytes ?? 16_000, 1024, 200_000);
|
|
53
|
+
const maxOutputLines = clampInt(options.maxOutputLines ?? 50, 5, 200);
|
|
54
|
+
const useRegex = Boolean(args.is_regex);
|
|
55
|
+
const cmd = await resolveSearchBinary();
|
|
56
|
+
const cmdArgs = buildSearchArgs(cmd, pattern, include, maxResults, useRegex);
|
|
57
|
+
logger_1.default.debug('grep tool invoked', {
|
|
58
|
+
cmd,
|
|
59
|
+
args: cmdArgs,
|
|
60
|
+
workspaceRoot: options.workspaceRoot,
|
|
61
|
+
maxResults,
|
|
62
|
+
timeoutMs,
|
|
63
|
+
});
|
|
64
|
+
const child = (0, node_child_process_1.spawn)(cmd, cmdArgs, {
|
|
65
|
+
cwd: options.workspaceRoot,
|
|
66
|
+
env: process.env,
|
|
67
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
68
|
+
});
|
|
69
|
+
let stdout = '';
|
|
70
|
+
let stderr = '';
|
|
71
|
+
let killed = false;
|
|
72
|
+
const timeout = setTimeout(() => {
|
|
73
|
+
killed = true;
|
|
74
|
+
child.kill('SIGKILL');
|
|
75
|
+
}, timeoutMs);
|
|
76
|
+
child.stdout.on('data', (chunk) => {
|
|
77
|
+
if (stdout.length < maxOutputBytes) {
|
|
78
|
+
stdout += chunk.toString('utf8');
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
child.stderr.on('data', (chunk) => {
|
|
82
|
+
if (stderr.length < maxOutputBytes) {
|
|
83
|
+
stderr += chunk.toString('utf8');
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
let code = 0;
|
|
87
|
+
try {
|
|
88
|
+
const [closeCode] = (await Promise.race([
|
|
89
|
+
(0, node_events_1.once)(child, 'close'),
|
|
90
|
+
(0, node_events_1.once)(child, 'error').then(([err]) => {
|
|
91
|
+
throw err;
|
|
92
|
+
}),
|
|
93
|
+
]));
|
|
94
|
+
code = closeCode;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
clearTimeout(timeout);
|
|
98
|
+
logger_1.default.error('grep tool failed to spawn', { error });
|
|
99
|
+
return `Grep execution failed: ${error instanceof Error ? error.message : 'Unknown error'}`;
|
|
100
|
+
}
|
|
101
|
+
clearTimeout(timeout);
|
|
102
|
+
const truncated = stdout.length >= maxOutputBytes;
|
|
103
|
+
const lines = stdout.split('\n').filter(Boolean);
|
|
104
|
+
const limitedLines = lines.slice(0, maxOutputLines);
|
|
105
|
+
const output = limitedLines.join('\n');
|
|
106
|
+
logger_1.default.debug('grep tool completed', {
|
|
107
|
+
code,
|
|
108
|
+
killed,
|
|
109
|
+
durationMs: Date.now() - start,
|
|
110
|
+
stdoutBytes: stdout.length,
|
|
111
|
+
stderrBytes: stderr.length,
|
|
112
|
+
lineCount: lines.length,
|
|
113
|
+
truncated,
|
|
114
|
+
});
|
|
115
|
+
if (killed) {
|
|
116
|
+
return 'Grep timed out. Try a narrower search.';
|
|
117
|
+
}
|
|
118
|
+
if (code !== 0 && !output.trim() && stderr.trim()) {
|
|
119
|
+
return `Grep failed: ${stderr.trim().slice(0, 500)}`;
|
|
120
|
+
}
|
|
121
|
+
if (!output.trim()) {
|
|
122
|
+
return 'No matches found.';
|
|
123
|
+
}
|
|
124
|
+
if (lines.length > maxOutputLines || truncated) {
|
|
125
|
+
return `${output}\n\n... (${Math.max(lines.length - maxOutputLines, 0)} more matches truncated)`;
|
|
126
|
+
}
|
|
127
|
+
return output;
|
|
128
|
+
}
|
|
129
|
+
async function resolveSearchBinary() {
|
|
130
|
+
return new Promise((resolve) => {
|
|
131
|
+
const child = (0, node_child_process_1.spawn)('rg', ['--version'], { stdio: 'ignore' });
|
|
132
|
+
child.on('error', () => resolve('grep'));
|
|
133
|
+
child.on('close', (code) => resolve(code === 0 ? 'rg' : 'grep'));
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
function buildSearchArgs(cmd, pattern, include, maxResults, useRegex) {
|
|
137
|
+
if (cmd === 'rg') {
|
|
138
|
+
const args = ['--no-heading', '--line-number', '--color', 'never', '--max-count', String(maxResults)];
|
|
139
|
+
if (!useRegex) {
|
|
140
|
+
args.push('--fixed-strings');
|
|
141
|
+
}
|
|
142
|
+
for (const glob of include) {
|
|
143
|
+
args.push('--glob', glob);
|
|
144
|
+
}
|
|
145
|
+
args.push(pattern, '.');
|
|
146
|
+
return args;
|
|
147
|
+
}
|
|
148
|
+
const args = ['-R', '-n', '-H', '-m', String(maxResults)];
|
|
149
|
+
if (!useRegex) {
|
|
150
|
+
args.push('-F');
|
|
151
|
+
}
|
|
152
|
+
for (const glob of include) {
|
|
153
|
+
const sanitized = glob.replace('**/', '').replace('**\\', '');
|
|
154
|
+
args.push(`--include=${sanitized}`);
|
|
155
|
+
}
|
|
156
|
+
args.push(pattern, '.');
|
|
157
|
+
return args;
|
|
158
|
+
}
|
|
159
|
+
function sanitizeGlobs(input) {
|
|
160
|
+
if (!input || input.length === 0) {
|
|
161
|
+
return DEFAULT_INCLUDE;
|
|
162
|
+
}
|
|
163
|
+
const sanitized = input
|
|
164
|
+
.filter((value) => typeof value === 'string')
|
|
165
|
+
.map((value) => value.trim())
|
|
166
|
+
.filter((value) => value && !value.startsWith('/') && !value.includes('..'))
|
|
167
|
+
.filter((value) => hasAllowedExtension(value));
|
|
168
|
+
return sanitized.length > 0 ? sanitized.slice(0, 5) : DEFAULT_INCLUDE;
|
|
169
|
+
}
|
|
170
|
+
function hasAllowedExtension(glob) {
|
|
171
|
+
for (const ext of ALLOWED_EXTENSIONS) {
|
|
172
|
+
if (glob.includes(ext))
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
return glob.includes('*.php');
|
|
176
|
+
}
|
|
177
|
+
function clampInt(value, min, max) {
|
|
178
|
+
if (!Number.isFinite(value))
|
|
179
|
+
return min;
|
|
180
|
+
return Math.max(min, Math.min(max, Math.floor(value)));
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=grep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/runtime/tools/grep.ts"],"names":[],"mappings":";;;;;;AAqDA,kCAwGC;AA7JD,2DAA2C;AAC3C,6CAAmC;AACnC,gEAAwC;AAgBxC,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,CAAC;AACrC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7E,QAAA,oBAAoB,GAAG;IAClC,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,4GAA4G;QAC9G,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,2DAA2D;iBACzE;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,0DAA0D;iBACxE;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,wDAAwD;iBACtE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;CACO,CAAC;AAEJ,KAAK,UAAU,WAAW,CAC/B,IAAkB,EAClB,OAAwB;IAExB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAEtE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE7E,gBAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE;QAChC,GAAG;QACH,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,UAAU;QACV,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,GAAG,EAAE,OAAO,EAAE;QAChC,GAAG,EAAE,OAAO,CAAC,aAAa;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;QAC9B,MAAM,GAAG,IAAI,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC,EAAE,SAAS,CAAC,CAAC;IAEd,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxC,IAAI,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxC,IAAI,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC;YACtC,IAAA,kBAAI,EAAC,KAAK,EAAE,OAAO,CAAC;YACpB,IAAA,kBAAI,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;gBAClC,MAAM,GAAY,CAAC;YACrB,CAAC,CAAC;SACH,CAAC,CAAa,CAAC;QAChB,IAAI,GAAG,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,gBAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,OAAO,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IAC9F,CAAC;IAED,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvC,gBAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;QAClC,IAAI;QACJ,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;QAC9B,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,SAAS,EAAE,KAAK,CAAC,MAAM;QACvB,SAAS;KACV,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,wCAAwC,CAAC;IAClD,CAAC;IAED,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,OAAO,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc,IAAI,SAAS,EAAE,CAAC;QAC/C,OAAO,GAAG,MAAM,YAAY,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC,CAAC,0BAA0B,CAAC;IACnG,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACtB,GAAkB,EAClB,OAAe,EACf,OAAiB,EACjB,UAAkB,EAClB,QAAiB;IAEjB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB;IACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK;SACpB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;SAC5C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC3E,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AACxE,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codereview-aia",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "codereview-aia CLI",
|
|
5
5
|
"author": "rrretsuf",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,13 +27,16 @@
|
|
|
27
27
|
"access": "public"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
+
"build": "^0.1.4",
|
|
30
31
|
"execa": "^8.0.1",
|
|
31
32
|
"ignore": "^5.3.2",
|
|
32
33
|
"ink": "^6.4.0",
|
|
33
34
|
"ink-select-input": "^6.2.0",
|
|
34
35
|
"ink-spinner": "^5.0.0",
|
|
35
36
|
"ink-text-input": "^6.0.0",
|
|
37
|
+
"p-limit": "^6.2.0",
|
|
36
38
|
"picocolors": "^1.0.0",
|
|
39
|
+
"pnpm": "^10.26.2",
|
|
37
40
|
"react": "^19.2.0"
|
|
38
41
|
},
|
|
39
42
|
"peerDependencies": {
|