@motivation-labs/crosscheck 0.2.1-beta.f07295b.0 → 0.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.
Files changed (47) hide show
  1. package/AGENT.md +207 -0
  2. package/dist/__tests__/diagnose.test.d.ts +2 -0
  3. package/dist/__tests__/diagnose.test.d.ts.map +1 -0
  4. package/dist/__tests__/diagnose.test.js +164 -0
  5. package/dist/__tests__/diagnose.test.js.map +1 -0
  6. package/dist/__tests__/optimize.test.d.ts +2 -0
  7. package/dist/__tests__/optimize.test.d.ts.map +1 -0
  8. package/dist/__tests__/optimize.test.js +88 -0
  9. package/dist/__tests__/optimize.test.js.map +1 -0
  10. package/dist/cli.js +17 -0
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/diagnose.d.ts +53 -0
  13. package/dist/commands/diagnose.d.ts.map +1 -0
  14. package/dist/commands/diagnose.js +280 -0
  15. package/dist/commands/diagnose.js.map +1 -0
  16. package/dist/commands/optimize.d.ts +16 -0
  17. package/dist/commands/optimize.d.ts.map +1 -0
  18. package/dist/commands/optimize.js +209 -0
  19. package/dist/commands/optimize.js.map +1 -0
  20. package/dist/commands/review.d.ts.map +1 -1
  21. package/dist/commands/review.js +3 -1
  22. package/dist/commands/review.js.map +1 -1
  23. package/dist/commands/status.d.ts.map +1 -1
  24. package/dist/commands/status.js +6 -20
  25. package/dist/commands/status.js.map +1 -1
  26. package/dist/commands/watch.d.ts.map +1 -1
  27. package/dist/commands/watch.js +105 -73
  28. package/dist/commands/watch.js.map +1 -1
  29. package/dist/config/loader.d.ts +4 -0
  30. package/dist/config/loader.d.ts.map +1 -1
  31. package/dist/config/loader.js +22 -10
  32. package/dist/config/loader.js.map +1 -1
  33. package/dist/lib/instructions.d.ts +5 -0
  34. package/dist/lib/instructions.d.ts.map +1 -0
  35. package/dist/lib/instructions.js +61 -0
  36. package/dist/lib/instructions.js.map +1 -0
  37. package/dist/lib/languages.d.ts +3 -0
  38. package/dist/lib/languages.d.ts.map +1 -0
  39. package/dist/lib/languages.js +26 -0
  40. package/dist/lib/languages.js.map +1 -0
  41. package/dist/reviewers/claude.d.ts.map +1 -1
  42. package/dist/reviewers/claude.js +4 -5
  43. package/dist/reviewers/claude.js.map +1 -1
  44. package/dist/reviewers/codex.d.ts.map +1 -1
  45. package/dist/reviewers/codex.js +4 -11
  46. package/dist/reviewers/codex.js.map +1 -1
  47. package/package.json +5 -2
@@ -0,0 +1,280 @@
1
+ import { readdirSync, readFileSync, existsSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { homedir } from 'os';
4
+ import chalk from 'chalk';
5
+ const LOG_DIR = join(homedir(), '.crosscheck', 'logs');
6
+ // Maps command names to language identifiers
7
+ const COMMAND_LANGUAGE_MAP = {
8
+ tsc: ['typescript'], 'ts-node': ['typescript'], tsx: ['typescript'],
9
+ npm: ['nodejs'], npx: ['nodejs'], yarn: ['nodejs'], pnpm: ['nodejs'],
10
+ jest: ['nodejs'], vitest: ['nodejs'], mocha: ['nodejs'],
11
+ pytest: ['python'], pip: ['python'], python: ['python'], python3: ['python'],
12
+ cargo: ['rust'],
13
+ go: ['golang'],
14
+ mvn: ['java'], gradle: ['java'],
15
+ rspec: ['ruby'], bundle: ['ruby'],
16
+ };
17
+ // Language id → constraint instruction.
18
+ // Keys must be a subset of the language ids produced by INDICATORS and COMMAND_LANGUAGE_MAP.
19
+ // "jest" was a dead key — jest/vitest/mocha all map to "nodejs" in COMMAND_LANGUAGE_MAP.
20
+ const LANGUAGE_CONSTRAINT_MAP = {
21
+ typescript: 'Do not run tsc, ts-node, or tsx.',
22
+ nodejs: 'Do not run npm, npx, yarn, pnpm, jest, vitest, or mocha.',
23
+ python: 'Do not run pytest, pip, or python scripts.',
24
+ rust: 'Do not run cargo build or cargo test.',
25
+ golang: 'Do not run go build or go test.',
26
+ java: 'Do not run mvn or gradle.',
27
+ ruby: 'Do not run bundle exec or rspec.',
28
+ };
29
+ function parseLogFile(path) {
30
+ const entries = [];
31
+ const lines = readFileSync(path, 'utf8').split('\n');
32
+ for (const line of lines) {
33
+ if (!line.trim())
34
+ continue;
35
+ try {
36
+ entries.push(JSON.parse(line));
37
+ }
38
+ catch { /* skip malformed */ }
39
+ }
40
+ return entries;
41
+ }
42
+ export function classifyError(message) {
43
+ const cmdMatch = message.match(/(?:sh:|bash:|zsh:)?\s*([a-zA-Z0-9_-]+):\s*(?:command not found|not found)/i);
44
+ if (cmdMatch)
45
+ return { pattern: 'command_not_found', command: cmdMatch[1].toLowerCase() };
46
+ const branchMatch = message.match(/fatal: no such branch:?\s*'?([^\s'"]+)'?/i);
47
+ if (branchMatch)
48
+ return { pattern: 'base_branch_missing', branch: branchMatch[1] };
49
+ if (/timed? ?out|etimedout/i.test(message))
50
+ return { pattern: 'timeout' };
51
+ if (/bad credentials|401|unauthorized/i.test(message))
52
+ return { pattern: 'auth_failure' };
53
+ return { pattern: 'other' };
54
+ }
55
+ function detectLanguagesFromCommands(errors) {
56
+ const detected = new Set();
57
+ for (const e of errors) {
58
+ if (e.pattern === 'command_not_found' && e.command) {
59
+ const langs = COMMAND_LANGUAGE_MAP[e.command] ?? [];
60
+ for (const l of langs)
61
+ detected.add(l);
62
+ }
63
+ }
64
+ return [...detected];
65
+ }
66
+ function buildSuggestions(errors, languages) {
67
+ const suggestions = [];
68
+ const seen = new Set();
69
+ for (const e of errors) {
70
+ if (e.pattern === 'command_not_found' && e.command) {
71
+ const langs = COMMAND_LANGUAGE_MAP[e.command] ?? [];
72
+ for (const lang of langs) {
73
+ const instruction = LANGUAGE_CONSTRAINT_MAP[lang];
74
+ if (instruction && !seen.has(instruction)) {
75
+ seen.add(instruction);
76
+ suggestions.push({
77
+ type: 'add_constraint',
78
+ instruction,
79
+ reason: `${e.command}: command not found ×${e.count}${e.reviewer ? ` (${e.reviewer})` : ''}`,
80
+ });
81
+ }
82
+ }
83
+ }
84
+ if (e.pattern === 'base_branch_missing' && !seen.has('base_branch_missing')) {
85
+ seen.add('base_branch_missing');
86
+ suggestions.push({
87
+ type: 'investigate',
88
+ reason: `base branch '${e.branch}' not found ×${e.count} — verify the branch is fetched before review`,
89
+ });
90
+ }
91
+ if (e.pattern === 'timeout' && e.count >= 2 && !seen.has('timeout')) {
92
+ seen.add('timeout');
93
+ suggestions.push({
94
+ type: 'config_change',
95
+ reason: `review timed out ×${e.count} — consider lowering quality.tier to "fast" or "balanced"`,
96
+ });
97
+ }
98
+ }
99
+ return suggestions;
100
+ }
101
+ function collectLogFiles(since, logDir = LOG_DIR) {
102
+ if (!existsSync(logDir))
103
+ return [];
104
+ return readdirSync(logDir)
105
+ .filter(f => f.endsWith('.ndjson'))
106
+ .filter(f => !since || f.replace('.ndjson', '') >= since)
107
+ .sort()
108
+ .map(f => join(logDir, f));
109
+ }
110
+ export function buildDiagnoseReport(since, logDir) {
111
+ const files = collectLogFiles(since, logDir);
112
+ const allEntries = files.flatMap(parseLogFile);
113
+ // Track review lifecycle: review_started → review_complete
114
+ const started = new Map(); // key: `${repo}#${pr}`
115
+ const completed = new Set();
116
+ const errorPatterns = new Map();
117
+ const verdicts = { APPROVE: 0, NEEDS_WORK: 0, BLOCK: 0 };
118
+ const reposSeen = new Set();
119
+ const languagesSeen = new Set(); // from review_started log events
120
+ const reviewerStats = new Map();
121
+ for (const e of allEntries) {
122
+ if (e.repo)
123
+ reposSeen.add(e.repo);
124
+ if (e.event === 'review_started') {
125
+ const key = `${e.repo}#${e.pr}`;
126
+ started.set(key, e);
127
+ const r = e.reviewer ?? 'unknown';
128
+ if (!reviewerStats.has(r))
129
+ reviewerStats.set(r, { attempts: 0, successes: 0 });
130
+ reviewerStats.get(r).attempts++;
131
+ // Collect languages detected at review time
132
+ if (Array.isArray(e['languages'])) {
133
+ for (const lang of e['languages'])
134
+ languagesSeen.add(lang);
135
+ }
136
+ }
137
+ if (e.event === 'review_complete') {
138
+ const key = `${e.repo}#${e.pr}`;
139
+ completed.add(key);
140
+ const r = e.reviewer ?? 'unknown';
141
+ const stats = reviewerStats.get(r);
142
+ if (stats)
143
+ stats.successes++;
144
+ if (e.verdict) {
145
+ const v = e.verdict;
146
+ if (v in verdicts)
147
+ verdicts[v]++;
148
+ }
149
+ }
150
+ if (e.event === 'error' && e.level === 'error') {
151
+ const msg = e.message ?? '';
152
+ const { pattern, command, branch } = classifyError(msg);
153
+ // Derive reviewer from the active review_started entry for this repo+PR.
154
+ // The message itself never starts with "codex:" or "claude:" — that regex was dead.
155
+ const key = `${e.repo}#${e.pr}`;
156
+ const reviewer = started.get(key)?.reviewer;
157
+ const mapKey = pattern === 'command_not_found' ? `cmd:${command}` : pattern;
158
+ if (errorPatterns.has(mapKey)) {
159
+ errorPatterns.get(mapKey).count++;
160
+ }
161
+ else {
162
+ errorPatterns.set(mapKey, { pattern, command, branch, count: 1, reviewer });
163
+ }
164
+ }
165
+ }
166
+ const errors = [...errorPatterns.values()].sort((a, b) => b.count - a.count);
167
+ // Merge: languages from log events + languages inferred from command errors
168
+ const languagesFromErrors = detectLanguagesFromCommands(errors);
169
+ const languages = [...new Set([...languagesSeen, ...languagesFromErrors])];
170
+ const suggestions = buildSuggestions(errors, languages);
171
+ const fromDate = files[0]?.split('/').at(-1)?.replace('.ndjson', '') ?? 'N/A';
172
+ const toDate = files.at(-1)?.split('/').at(-1)?.replace('.ndjson', '') ?? 'N/A';
173
+ const totalReviews = started.size;
174
+ const successfulReviews = completed.size;
175
+ // Guard against negative count: review_complete can exceed review_started when
176
+ // --since truncates the log window and some review_started events fall outside it.
177
+ const failedReviews = Math.max(0, totalReviews - successfulReviews);
178
+ const reviewer_performance = {};
179
+ for (const [name, stats] of reviewerStats.entries()) {
180
+ reviewer_performance[name] = {
181
+ attempts: stats.attempts,
182
+ successes: stats.successes,
183
+ failure_rate: stats.attempts > 0 ? (stats.attempts - stats.successes) / stats.attempts : 0,
184
+ };
185
+ }
186
+ return {
187
+ period: { from: fromDate, to: toDate, log_files: files.length },
188
+ summary: {
189
+ total_reviews: totalReviews,
190
+ successful: successfulReviews,
191
+ failed: failedReviews,
192
+ failure_rate: totalReviews > 0 ? failedReviews / totalReviews : 0,
193
+ },
194
+ errors,
195
+ verdict_distribution: verdicts,
196
+ repos_seen: [...reposSeen],
197
+ languages_detected: languages,
198
+ reviewer_performance,
199
+ suggestions,
200
+ };
201
+ }
202
+ function pct(n, total) {
203
+ return total === 0 ? '—' : `${Math.round((n / total) * 100)}%`;
204
+ }
205
+ function printReport(report) {
206
+ const { period, summary, errors, verdict_distribution: vd, reviewer_performance: rp, suggestions } = report;
207
+ const total = vd.APPROVE + vd.NEEDS_WORK + vd.BLOCK;
208
+ console.log(chalk.bold('\ncrosscheck diagnose\n'));
209
+ console.log(chalk.dim(` Period ${period.from} → ${period.to} (${period.log_files} log file${period.log_files !== 1 ? 's' : ''})`));
210
+ console.log();
211
+ console.log(chalk.dim(' Reviews'));
212
+ console.log(` total ${summary.total_reviews}`);
213
+ console.log(` successful ${chalk.green(summary.successful)}`);
214
+ console.log(` failed ${summary.failed > 0 ? chalk.red(summary.failed) : chalk.green(summary.failed)} ${summary.failed > 0 ? chalk.dim(`(${pct(summary.failed, summary.total_reviews)} failure rate)`) : ''}`);
215
+ console.log();
216
+ if (Object.keys(rp).length > 0) {
217
+ console.log(chalk.dim(' Reviewer performance'));
218
+ for (const [name, perf] of Object.entries(rp)) {
219
+ const rate = perf.attempts > 0 ? Math.round((perf.successes / perf.attempts) * 100) : 0;
220
+ const indicator = rate >= 80 ? chalk.green(`${rate}%`) : rate >= 50 ? chalk.yellow(`${rate}%`) : chalk.red(`${rate}%`);
221
+ console.log(` ${name.padEnd(8)} ${perf.successes}/${perf.attempts} success ${indicator}`);
222
+ }
223
+ console.log();
224
+ }
225
+ if (total > 0) {
226
+ console.log(chalk.dim(' Verdict distribution'));
227
+ console.log(` APPROVE ${vd.APPROVE} ${chalk.dim(pct(vd.APPROVE, total))}`);
228
+ console.log(` NEEDS WORK ${vd.NEEDS_WORK} ${chalk.dim(pct(vd.NEEDS_WORK, total))}`);
229
+ console.log(` BLOCK ${vd.BLOCK} ${chalk.dim(pct(vd.BLOCK, total))}`);
230
+ console.log();
231
+ }
232
+ if (errors.length > 0) {
233
+ console.log(chalk.dim(' Error patterns'));
234
+ for (const e of errors) {
235
+ const label = e.pattern === 'command_not_found' ? `command not found: ${e.command}`
236
+ : e.pattern === 'base_branch_missing' ? `base branch missing: ${e.branch}`
237
+ : e.pattern;
238
+ console.log(` ${chalk.red('✗')} ${label.padEnd(40)} ×${e.count}${e.reviewer ? chalk.dim(` (${e.reviewer})`) : ''}`);
239
+ }
240
+ console.log();
241
+ }
242
+ if (report.languages_detected.length > 0) {
243
+ console.log(chalk.dim(' Languages detected'));
244
+ console.log(` ${report.languages_detected.join(', ')}`);
245
+ console.log();
246
+ }
247
+ if (suggestions.length > 0) {
248
+ console.log(chalk.dim(' Suggestions'));
249
+ for (const s of suggestions) {
250
+ const icon = s.type === 'add_constraint' ? chalk.yellow('→') : chalk.dim('→');
251
+ console.log(` ${icon} ${s.reason}`);
252
+ if (s.instruction)
253
+ console.log(` ${chalk.cyan(`add to instructions.md: "${s.instruction}"`)}`);
254
+ }
255
+ console.log();
256
+ console.log(chalk.dim(' Run `crosscheck optimize` to apply suggestions automatically.'));
257
+ }
258
+ else if (summary.total_reviews > 0) {
259
+ console.log(chalk.green(' ✓ No actionable issues found.'));
260
+ }
261
+ console.log();
262
+ }
263
+ export async function runDiagnose(opts) {
264
+ if (!existsSync(LOG_DIR)) {
265
+ if (opts.json) {
266
+ console.log(JSON.stringify({ error: 'No log directory found. Run crosscheck watch or serve first.' }));
267
+ }
268
+ else {
269
+ console.error(chalk.yellow('No logs found. Run `crosscheck watch` or `crosscheck serve` first.'));
270
+ }
271
+ return;
272
+ }
273
+ const report = buildDiagnoseReport(opts.since, LOG_DIR);
274
+ if (opts.json) {
275
+ console.log(JSON.stringify(report, null, 2));
276
+ return;
277
+ }
278
+ printReport(report);
279
+ }
280
+ //# sourceMappingURL=diagnose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../src/commands/diagnose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Config } from '../config/schema.js';
2
+ import { type DiagnoseReport } from './diagnose.js';
3
+ type Agent = 'claude' | 'codex';
4
+ export declare function selectOptimizeAgent(config: Config, report: DiagnoseReport): {
5
+ agent: Agent;
6
+ reason: string;
7
+ };
8
+ export declare function runOptimize(opts: {
9
+ apply?: boolean;
10
+ dryRun?: boolean;
11
+ since?: string;
12
+ agent?: string;
13
+ config?: string;
14
+ }): Promise<void>;
15
+ export {};
16
+ //# sourceMappingURL=optimize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.d.ts","sourceRoot":"","sources":["../../src/commands/optimize.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAOxE,KAAK,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE/B,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoBlC;AAoFD,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FhB"}
@@ -0,0 +1,209 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdtempSync, rmSync } from 'fs';
2
+ import { fileURLToPath } from 'url';
3
+ import { dirname, join, resolve } from 'path';
4
+ import { tmpdir } from 'os';
5
+ import chalk from 'chalk';
6
+ import { execa } from 'execa';
7
+ import { loadConfig } from '../config/loader.js';
8
+ import { readInstructions, writeInstructions, getInstructionsPath } from '../lib/instructions.js';
9
+ import { buildDiagnoseReport } from './diagnose.js';
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+ // dist/commands/ → ../../ = package root
13
+ const PACKAGE_ROOT = resolve(__dirname, '..', '..');
14
+ export function selectOptimizeAgent(config, report) {
15
+ const enabled = [];
16
+ if (config.vendors.claude.enabled)
17
+ enabled.push('claude');
18
+ if (config.vendors.codex.enabled)
19
+ enabled.push('codex');
20
+ if (enabled.length === 0)
21
+ throw new Error('No vendors enabled in config — enable claude or codex under vendors.');
22
+ if (enabled.length === 1)
23
+ return { agent: enabled[0], reason: `only enabled vendor in config` };
24
+ // Both enabled — pick by success rate from log data
25
+ const cp = report.reviewer_performance['claude'];
26
+ const xp = report.reviewer_performance['codex'];
27
+ if (cp?.attempts > 0 && xp?.attempts > 0) {
28
+ const cr = cp.successes / cp.attempts;
29
+ const xr = xp.successes / xp.attempts;
30
+ if (xr > cr)
31
+ return { agent: 'codex', reason: `codex success rate ${Math.round(xr * 100)}% > claude ${Math.round(cr * 100)}%` };
32
+ if (cr > xr)
33
+ return { agent: 'claude', reason: `claude success rate ${Math.round(cr * 100)}% > codex ${Math.round(xr * 100)}%` };
34
+ }
35
+ return { agent: 'claude', reason: 'default (both enabled, no data or equal rates)' };
36
+ }
37
+ function findAgentMd(cwd) {
38
+ const candidates = [
39
+ join(cwd, 'AGENT.md'),
40
+ join(cwd, '.crosscheck', 'AGENT.md'),
41
+ join(PACKAGE_ROOT, 'AGENT.md'),
42
+ ];
43
+ for (const p of candidates) {
44
+ if (existsSync(p))
45
+ return readFileSync(p, 'utf8');
46
+ }
47
+ throw new Error(`AGENT.md not found. Expected at ${candidates[2]}`);
48
+ }
49
+ // Minimal LCS-based unified diff for display
50
+ function unifiedDiff(oldText, newText) {
51
+ if (oldText === newText)
52
+ return '';
53
+ const a = oldText.split('\n');
54
+ const b = newText.split('\n');
55
+ const m = a.length, n = b.length;
56
+ // LCS via DP
57
+ const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
58
+ for (let i = m - 1; i >= 0; i--)
59
+ for (let j = n - 1; j >= 0; j--)
60
+ dp[i][j] = a[i] === b[j] ? dp[i + 1][j + 1] + 1 : Math.max(dp[i + 1][j], dp[i][j + 1]);
61
+ const lines = [];
62
+ let i = 0, j = 0;
63
+ while (i < m || j < n) {
64
+ if (i < m && j < n && a[i] === b[j]) {
65
+ lines.push(` ${a[i]}`);
66
+ i++;
67
+ j++;
68
+ }
69
+ else if (j < n && (i >= m || dp[i + 1][j] >= dp[i][j + 1])) {
70
+ lines.push(chalk.green(`+${b[j]}`));
71
+ j++;
72
+ }
73
+ else {
74
+ lines.push(chalk.red(`-${a[i]}`));
75
+ i++;
76
+ }
77
+ }
78
+ return lines.filter(l => !l.startsWith(' ')).length > 0
79
+ ? lines.join('\n')
80
+ : '';
81
+ }
82
+ async function runWithClaude(prompt) {
83
+ let result;
84
+ try {
85
+ result = await execa('claude', ['--print', '--bare'], {
86
+ input: prompt,
87
+ timeout: 120_000,
88
+ env: { ...process.env },
89
+ });
90
+ }
91
+ catch (err) {
92
+ const msg = err instanceof Error ? err.message : String(err);
93
+ if (/not logged in|please run \/login|run \/login/i.test(msg)) {
94
+ throw new Error('claude is not logged in — run: claude /login');
95
+ }
96
+ throw err;
97
+ }
98
+ return (result.stdout ?? result.stderr ?? '').trim();
99
+ }
100
+ async function runWithCodex(prompt) {
101
+ // codex is an agent runner — write the prompt as a file so it can read it,
102
+ // avoiding shell argument length limits on large prompts.
103
+ const tmpDir = mkdtempSync(join(tmpdir(), 'crosscheck-optimize-'));
104
+ try {
105
+ writeFileSync(join(tmpDir, 'OPTIMIZE_PROMPT.md'), prompt);
106
+ const result = await execa('codex', [
107
+ '-q',
108
+ 'Read OPTIMIZE_PROMPT.md carefully and produce the new instructions.md content. ' +
109
+ 'Output only the file content — no explanation, no markdown fences.',
110
+ ], {
111
+ cwd: tmpDir,
112
+ timeout: 180_000,
113
+ env: { ...process.env },
114
+ });
115
+ return (result.stdout ?? '').trim();
116
+ }
117
+ finally {
118
+ rmSync(tmpDir, { recursive: true, force: true });
119
+ }
120
+ }
121
+ export async function runOptimize(opts) {
122
+ const config = loadConfig(opts.config);
123
+ const cwd = process.cwd();
124
+ // 1. Diagnose
125
+ console.log(chalk.dim(' Running diagnose...'));
126
+ const report = buildDiagnoseReport(opts.since);
127
+ // 2. Select agent
128
+ let selectedAgent;
129
+ let agentReason;
130
+ if (opts.agent === 'claude' || opts.agent === 'codex') {
131
+ selectedAgent = opts.agent;
132
+ agentReason = '--agent flag';
133
+ }
134
+ else {
135
+ try {
136
+ const sel = selectOptimizeAgent(config, report);
137
+ selectedAgent = sel.agent;
138
+ agentReason = sel.reason;
139
+ }
140
+ catch (err) {
141
+ console.error(chalk.red(`✗ ${err instanceof Error ? err.message : String(err)}`));
142
+ process.exit(1);
143
+ }
144
+ }
145
+ console.log(` agent ${chalk.cyan(selectedAgent)} ${chalk.dim(`(${agentReason})`)}`);
146
+ // 3. Load AGENT.md and current instructions
147
+ let agentMd;
148
+ try {
149
+ agentMd = findAgentMd(cwd);
150
+ }
151
+ catch (err) {
152
+ console.error(chalk.red(`✗ ${err instanceof Error ? err.message : String(err)}`));
153
+ process.exit(1);
154
+ }
155
+ const currentInstructions = readInstructions();
156
+ const instructionsPath = getInstructionsPath();
157
+ // 4. Build prompt
158
+ const prompt = [
159
+ agentMd,
160
+ '',
161
+ '---',
162
+ '',
163
+ '## Diagnostic report',
164
+ '',
165
+ '```json',
166
+ JSON.stringify(report, null, 2),
167
+ '```',
168
+ '',
169
+ `## Current ${instructionsPath}`,
170
+ '',
171
+ currentInstructions || '(empty)',
172
+ ].join('\n');
173
+ // 5. Run agent
174
+ console.log(chalk.dim(` Asking ${selectedAgent} to optimize instructions...`));
175
+ let newInstructions;
176
+ try {
177
+ newInstructions = selectedAgent === 'claude'
178
+ ? await runWithClaude(prompt)
179
+ : await runWithCodex(prompt);
180
+ }
181
+ catch (err) {
182
+ console.error(chalk.red(`✗ ${selectedAgent} failed: ${err instanceof Error ? err.message : String(err)}`));
183
+ process.exit(1);
184
+ }
185
+ if (!newInstructions || newInstructions.length < 20) {
186
+ console.error(chalk.red('✗ Agent returned empty or unusable output'));
187
+ process.exit(1);
188
+ }
189
+ // 6. Diff
190
+ const diff = unifiedDiff(currentInstructions, newInstructions);
191
+ if (!diff) {
192
+ console.log(chalk.green('\n ✓ Instructions are already optimal — no changes needed.'));
193
+ return;
194
+ }
195
+ console.log(chalk.bold(`\n diff ${instructionsPath}\n`));
196
+ console.log(diff);
197
+ console.log();
198
+ // 7. Apply or exit
199
+ const apply = opts.apply && !opts.dryRun;
200
+ if (apply) {
201
+ writeInstructions(newInstructions);
202
+ console.log(chalk.green(` ✓ Written to ${instructionsPath}`));
203
+ console.log(chalk.dim(' Next reviews will use the updated instructions.'));
204
+ }
205
+ else {
206
+ console.log(chalk.dim(` Run with --apply to write changes to ${instructionsPath}`));
207
+ }
208
+ }
209
+ //# sourceMappingURL=optimize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.js","sourceRoot":"","sources":["../../src/commands/optimize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjG,OAAO,EAAE,mBAAmB,EAAuB,MAAM,eAAe,CAAA;AAExE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AACrC,yCAAyC;AACzC,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAInD,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,MAAsB;IAEtB,MAAM,OAAO,GAAY,EAAE,CAAA;IAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzD,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAEvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;IACjH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAA;IAE/F,oDAAoD;IACpD,MAAM,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAE/C,IAAI,EAAE,EAAE,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAA;QACrC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAA;QACrC,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;QAC/H,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,uBAAuB,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;IAClI,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,gDAAgD,EAAE,CAAA;AACtF,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC;QACrB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;KAC/B,CAAA;IACD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACnD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AACrE,CAAC;AAED,6CAA6C;AAC7C,SAAS,WAAW,CAAC,OAAe,EAAE,OAAe;IACnD,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,EAAE,CAAA;IAElC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;IAEhC,aAAa;IACb,MAAM,EAAE,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACpF,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC7B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAE1F,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,CAAC,EAAE,CAAA;QAClC,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC,EAAE,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC,EAAE,CAAA;QACxC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;QACrD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,EAAE,CAAA;AACR,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAc;IACzC,IAAI,MAAM,CAAA;IACV,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;YACpD,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5D,IAAI,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACtD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAc;IACxC,2EAA2E;IAC3E,0DAA0D;IAC1D,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAClE,IAAI,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YAClC,IAAI;YACJ,iFAAiF;gBACjF,oEAAoE;SACrE,EAAE;YACD,GAAG,EAAE,MAAM;YACX,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAA;QACF,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACrC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAClD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAMjC;IACC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAEzB,cAAc;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE9C,kBAAkB;IAClB,IAAI,aAAoB,CAAA;IACxB,IAAI,WAAmB,CAAA;IAEvB,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QACtD,aAAa,GAAG,IAAI,CAAC,KAAK,CAAA;QAC1B,WAAW,GAAG,cAAc,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAC/C,aAAa,GAAG,GAAG,CAAC,KAAK,CAAA;YACzB,WAAW,GAAG,GAAG,CAAC,MAAM,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC,CAAA;IAEvF,4CAA4C;IAC5C,IAAI,OAAe,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,mBAAmB,GAAG,gBAAgB,EAAE,CAAA;IAC9C,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAA;IAE9C,kBAAkB;IAClB,MAAM,MAAM,GAAG;QACb,OAAO;QACP,EAAE;QACF,KAAK;QACL,EAAE;QACF,sBAAsB;QACtB,EAAE;QACF,SAAS;QACT,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,KAAK;QACL,EAAE;QACF,cAAc,gBAAgB,EAAE;QAChC,EAAE;QACF,mBAAmB,IAAI,SAAS;KACjC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,eAAe;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,aAAa,8BAA8B,CAAC,CAAC,CAAA;IAC/E,IAAI,eAAuB,CAAA;IAC3B,IAAI,CAAC;QACH,eAAe,GAAG,aAAa,KAAK,QAAQ;YAC1C,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC;YAC7B,CAAC,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,aAAa,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAA;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,UAAU;IACV,MAAM,IAAI,GAAG,WAAW,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA;IAE9D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC,CAAA;QACvF,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,gBAAgB,IAAI,CAAC,CAAC,CAAA;IAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjB,OAAO,CAAC,GAAG,EAAE,CAAA;IAEb,mBAAmB;IACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACxC,IAAI,KAAK,EAAE,CAAC;QACV,iBAAiB,CAAC,eAAe,CAAC,CAAA;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,gBAAgB,EAAE,CAAC,CAAC,CAAA;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAA;IAC7E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,gBAAgB,EAAE,CAAC,CAAC,CAAA;IACtF,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAmBA,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,iBAuGzF"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAoBA,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,iBAwGzF"}
@@ -10,6 +10,7 @@ import { runCodexReview } from '../reviewers/codex.js';
10
10
  import { runClaudeReview } from '../reviewers/claude.js';
11
11
  import { loadConfig, getGithubToken } from '../config/loader.js';
12
12
  import { initLogger, log as fileLog, logError } from '../lib/logger.js';
13
+ import { detectLanguages } from '../lib/languages.js';
13
14
  function parsePRUrl(url) {
14
15
  const m = url.match(/github\.com\/([^/]+)\/([^/]+)\/pull\/(\d+)/);
15
16
  if (!m)
@@ -70,7 +71,8 @@ export async function runReview(prUrl, configPath, forceReviewer) {
70
71
  spinner2.succeed('Repo ready');
71
72
  let reviewText;
72
73
  const reviewStart = Date.now();
73
- fileLog({ level: 'info', event: 'review_started', repo: `${owner}/${repo}`, pr: number, reviewer });
74
+ const languages = detectLanguages(tmpDir);
75
+ fileLog({ level: 'info', event: 'review_started', repo: `${owner}/${repo}`, pr: number, reviewer, languages });
74
76
  let elapsed = 0;
75
77
  const reviewSpinner = ora(`Running ${reviewer} review...`).start();
76
78
  const elapsedTimer = setInterval(() => { elapsed++; reviewSpinner.text = `Running ${reviewer} review... (${elapsed}s)`; }, 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAaA,wBAAsB,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,iBA8ElD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAaA,wBAAsB,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,iBAuElD"}