@motivation-labs/crosscheck 0.4.0 → 0.4.1-beta.1216e4e.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 (90) hide show
  1. package/README.md +26 -9
  2. package/crosscheck.config.example.yml +98 -5
  3. package/dist/__tests__/backtrace.test.d.ts +2 -0
  4. package/dist/__tests__/backtrace.test.d.ts.map +1 -0
  5. package/dist/__tests__/backtrace.test.js +158 -0
  6. package/dist/__tests__/backtrace.test.js.map +1 -0
  7. package/dist/__tests__/loader.test.d.ts +2 -0
  8. package/dist/__tests__/loader.test.d.ts.map +1 -0
  9. package/dist/__tests__/loader.test.js +131 -0
  10. package/dist/__tests__/loader.test.js.map +1 -0
  11. package/dist/__tests__/optimize.test.js +16 -3
  12. package/dist/__tests__/optimize.test.js.map +1 -1
  13. package/dist/ck.d.ts +3 -0
  14. package/dist/ck.d.ts.map +1 -0
  15. package/dist/ck.js +8 -0
  16. package/dist/ck.js.map +1 -0
  17. package/dist/cli.js +12 -4
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands/diagnose.d.ts +1 -0
  20. package/dist/commands/diagnose.d.ts.map +1 -1
  21. package/dist/commands/diagnose.js +14 -0
  22. package/dist/commands/diagnose.js.map +1 -1
  23. package/dist/commands/init.d.ts.map +1 -1
  24. package/dist/commands/init.js +63 -29
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/review.d.ts.map +1 -1
  27. package/dist/commands/review.js +12 -6
  28. package/dist/commands/review.js.map +1 -1
  29. package/dist/commands/serve.d.ts +7 -1
  30. package/dist/commands/serve.d.ts.map +1 -1
  31. package/dist/commands/serve.js +152 -34
  32. package/dist/commands/serve.js.map +1 -1
  33. package/dist/commands/status.d.ts.map +1 -1
  34. package/dist/commands/status.js +1 -0
  35. package/dist/commands/status.js.map +1 -1
  36. package/dist/commands/watch.d.ts +7 -1
  37. package/dist/commands/watch.d.ts.map +1 -1
  38. package/dist/commands/watch.js +348 -135
  39. package/dist/commands/watch.js.map +1 -1
  40. package/dist/config/loader.d.ts +10 -0
  41. package/dist/config/loader.d.ts.map +1 -1
  42. package/dist/config/loader.js +196 -0
  43. package/dist/config/loader.js.map +1 -1
  44. package/dist/config/schema.d.ts +461 -35
  45. package/dist/config/schema.d.ts.map +1 -1
  46. package/dist/config/schema.js +72 -5
  47. package/dist/config/schema.js.map +1 -1
  48. package/dist/github/client.d.ts +26 -0
  49. package/dist/github/client.d.ts.map +1 -1
  50. package/dist/github/client.js +159 -2
  51. package/dist/github/client.js.map +1 -1
  52. package/dist/github/detector.d.ts +9 -2
  53. package/dist/github/detector.d.ts.map +1 -1
  54. package/dist/github/detector.js +86 -10
  55. package/dist/github/detector.js.map +1 -1
  56. package/dist/lib/backtrace.d.ts +20 -0
  57. package/dist/lib/backtrace.d.ts.map +1 -0
  58. package/dist/lib/backtrace.js +75 -0
  59. package/dist/lib/backtrace.js.map +1 -0
  60. package/dist/lib/board.d.ts +54 -0
  61. package/dist/lib/board.d.ts.map +1 -0
  62. package/dist/lib/board.js +406 -0
  63. package/dist/lib/board.js.map +1 -0
  64. package/dist/lib/runner.d.ts +10 -1
  65. package/dist/lib/runner.d.ts.map +1 -1
  66. package/dist/lib/runner.js +129 -51
  67. package/dist/lib/runner.js.map +1 -1
  68. package/dist/lib/verdict.d.ts +1 -0
  69. package/dist/lib/verdict.d.ts.map +1 -1
  70. package/dist/lib/verdict.js +27 -7
  71. package/dist/lib/verdict.js.map +1 -1
  72. package/dist/lib/workflow.d.ts +14 -14
  73. package/dist/lib/workflow.d.ts.map +1 -1
  74. package/dist/lib/workflow.js +22 -5
  75. package/dist/lib/workflow.js.map +1 -1
  76. package/dist/reviewers/claude.d.ts +1 -1
  77. package/dist/reviewers/claude.d.ts.map +1 -1
  78. package/dist/reviewers/claude.js +4 -6
  79. package/dist/reviewers/claude.js.map +1 -1
  80. package/dist/reviewers/codex.d.ts +2 -2
  81. package/dist/reviewers/codex.d.ts.map +1 -1
  82. package/dist/reviewers/codex.js +6 -6
  83. package/dist/reviewers/codex.js.map +1 -1
  84. package/dist/reviewers/fix.d.ts +5 -0
  85. package/dist/reviewers/fix.d.ts.map +1 -0
  86. package/dist/reviewers/fix.js +87 -0
  87. package/dist/reviewers/fix.js.map +1 -0
  88. package/get-started.md +202 -23
  89. package/get-started.zh.md +2 -3
  90. package/package.json +4 -3
@@ -1,14 +1,18 @@
1
1
  import { execSync } from 'child_process';
2
2
  import chalk from 'chalk';
3
- import ora from 'ora';
4
3
  import { runCodexReview } from '../reviewers/codex.js';
5
4
  import { runClaudeReview } from '../reviewers/claude.js';
6
- import { runAddressStep } from '../reviewers/address.js';
7
- import { parseVerdict, formatVerdict, prependVerdictToComment } from '../lib/verdict.js';
5
+ import { runFixStep } from '../reviewers/fix.js';
6
+ import { parseVerdict, prependVerdictToComment, NULL_VERDICT_WARNING } from '../lib/verdict.js';
8
7
  import { createGithubClient, postReviewComment } from '../github/client.js';
9
8
  import { log as fileLog, logError } from '../lib/logger.js';
10
9
  import { loadWorkflow, evaluateWhen } from '../lib/workflow.js';
11
10
  const MAX_CROSSCHECK_COMMITS = 5;
11
+ function countComments(reviewText) {
12
+ const bullets = (reviewText.match(/^[-*•]\s/gm) ?? []).length;
13
+ const numbered = (reviewText.match(/^\d+\.\s/gm) ?? []).length;
14
+ return bullets + numbered;
15
+ }
12
16
  function resolveReviewer(reviewer, origin, config) {
13
17
  if (reviewer === 'origin') {
14
18
  if (origin === 'claude' && config.vendors.claude.enabled)
@@ -35,70 +39,94 @@ function resolveReviewer(reviewer, origin, config) {
35
39
  return null;
36
40
  }
37
41
  export async function runWorkflow(ctx) {
38
- const { owner, repoName, prNumber, pr, tmpDir, token, config, origin, log } = ctx;
42
+ const { owner, repoName, prNumber, pr, tmpDir, token, config, origin, log, onPhaseChange } = ctx;
39
43
  const steps = loadWorkflow(process.cwd());
40
44
  const results = {};
41
- const spinner = ora({ indent: 2 });
42
45
  for (const step of steps) {
43
46
  // Evaluate when condition — skip step if false
44
47
  if (step.when && !evaluateWhen(step.when, results)) {
45
- log(chalk.dim(` [${step.name}] skipped ${step.when}`));
48
+ fileLog({ level: 'info', event: 'step_skipped', repo: `${owner}/${repoName}`, pr: prNumber, step: step.name, reason: 'when_condition' });
46
49
  results[step.name] = { skipped: true };
47
50
  continue;
48
51
  }
49
52
  if (step.type === 'review' || step.type === 'recheck') {
50
53
  const reviewer = resolveReviewer(step.reviewer, origin, config);
51
54
  if (!reviewer) {
52
- log(chalk.dim(` [${step.name}] no reviewer available — skipping`));
55
+ fileLog({ level: 'info', event: 'step_skipped', repo: `${owner}/${repoName}`, pr: prNumber, step: step.name, reason: 'no_reviewer' });
53
56
  results[step.name] = { skipped: true };
54
57
  continue;
55
58
  }
56
59
  fileLog({ level: 'info', event: 'review_started', repo: `${owner}/${repoName}`, pr: prNumber, reviewer });
57
- let elapsed = 0;
58
- const timer = setInterval(() => { elapsed++; spinner.text = `${reviewer} reviewing... (${elapsed}s)`; }, 1000);
59
- spinner.start(`${reviewer} reviewing...`);
60
+ onPhaseChange(`${reviewer} reviewing...`);
60
61
  let rawReview;
61
- try {
62
- if (reviewer === 'codex') {
63
- rawReview = await runCodexReview(tmpDir, pr.base.ref, pr.title, config.quality, config.vendors.codex.model, config.vendors.codex.auth);
64
- }
65
- else {
66
- rawReview = await runClaudeReview(tmpDir, pr.base.ref, pr.title, config.quality, config.vendors.claude, config.budget.per_review_usd);
67
- }
62
+ if (reviewer === 'codex') {
63
+ rawReview = await runCodexReview(tmpDir, pr.base.ref, pr.title, config.quality, config.vendors.codex, step.instructions);
68
64
  }
69
- finally {
70
- clearInterval(timer);
65
+ else {
66
+ rawReview = await runClaudeReview(tmpDir, pr.base.ref, pr.title, config.quality, config.vendors.claude, config.budget.per_review_usd, step.instructions);
71
67
  }
72
68
  const { verdict, clean } = parseVerdict(rawReview);
73
- const commentBody = prependVerdictToComment(clean, verdict);
74
- spinner.succeed(`${step.type} complete (${elapsed}s)`);
69
+ if (verdict === null) {
70
+ fileLog({ level: 'warn', event: 'verdict_parse_failed', repo: `${owner}/${repoName}`, pr: prNumber, reviewer, output_length: rawReview.length });
71
+ }
72
+ const commentBody = verdict === null
73
+ ? `${NULL_VERDICT_WARNING}\n\n${clean}`
74
+ : prependVerdictToComment(clean, verdict);
75
+ const commentCount = countComments(rawReview);
75
76
  fileLog({ level: 'info', event: 'review_complete', repo: `${owner}/${repoName}`, pr: prNumber, reviewer, verdict, duration_ms: Date.now() - ctx.reviewStart });
76
- spinner.start('posting comment...');
77
+ onPhaseChange('posting comment...', { verdict: verdict ?? undefined, commentCount });
77
78
  const octokit = createGithubClient(token);
78
79
  await postReviewComment(octokit, owner, repoName, prNumber, commentBody, reviewer);
79
80
  const commentUrl = `github.com/${owner}/${repoName}/pull/${prNumber}`;
80
- spinner.succeed(`posted → ${commentUrl}`);
81
81
  fileLog({ level: 'info', event: 'comment_posted', repo: `${owner}/${repoName}`, pr: prNumber, url: `https://${commentUrl}` });
82
- log(formatVerdict(verdict));
83
82
  results[step.name] = { verdict, commentBody, commentUrl };
84
83
  }
85
- else if (step.type === 'address') {
84
+ else if (step.type === 'fix') {
85
+ // Respect post_review.auto_fix config
86
+ const autoFix = config.post_review.auto_fix;
87
+ if (!autoFix.enabled || autoFix.trigger === 'never') {
88
+ fileLog({ level: 'info', event: 'step_skipped', repo: `${owner}/${repoName}`, pr: prNumber, step: step.name, reason: 'auto_fix_disabled' });
89
+ results[step.name] = { skipped: true };
90
+ continue;
91
+ }
86
92
  // Find the most recent review result that has a comment body
87
93
  const reviewResult = Object.values(results).reverse().find(r => r.commentBody);
88
94
  if (!reviewResult?.commentBody) {
89
- log(chalk.dim(` [${step.name}] no review comment available skipping`));
95
+ fileLog({ level: 'info', event: 'step_skipped', repo: `${owner}/${repoName}`, pr: prNumber, step: step.name, reason: 'no_review_comment' });
90
96
  results[step.name] = { skipped: true };
91
97
  continue;
92
98
  }
93
- const vendor = resolveReviewer(step.reviewer, origin, config);
99
+ // min_severity gate: BLOCK=error, NEEDS_WORK=warning, APPROVE=info
100
+ if (autoFix.trigger === 'on_issues') {
101
+ const verdictRank = { BLOCK: 2, NEEDS_WORK: 1, APPROVE: 0 };
102
+ const severityRank = { error: 2, warning: 1, info: 0 };
103
+ const minRank = severityRank[autoFix.min_severity] ?? 1;
104
+ const actualRank = verdictRank[reviewResult.verdict ?? ''] ?? 0;
105
+ if (actualRank < minRank) {
106
+ fileLog({ level: 'info', event: 'step_skipped', repo: `${owner}/${repoName}`, pr: prNumber, step: step.name, reason: 'below_min_severity', verdict: reviewResult.verdict });
107
+ results[step.name] = { skipped: true };
108
+ continue;
109
+ }
110
+ }
111
+ // Derive vendor from autoFix.fixer, not from the workflow step's reviewer field
112
+ let vendor;
113
+ if (autoFix.fixer === 'same-as-author') {
114
+ vendor = resolveReviewer('origin', origin, config);
115
+ }
116
+ else if (autoFix.fixer === 'same-as-reviewer') {
117
+ vendor = resolveReviewer('auto', origin, config);
118
+ }
119
+ else {
120
+ vendor = resolveReviewer(autoFix.fixer, origin, config);
121
+ }
94
122
  if (!vendor) {
95
- log(chalk.dim(` [${step.name}] origin vendor (${origin}) not available skipping`));
123
+ fileLog({ level: 'info', event: 'step_skipped', repo: `${owner}/${repoName}`, pr: prNumber, step: step.name, reason: 'no_vendor' });
96
124
  results[step.name] = { skipped: true };
97
125
  continue;
98
126
  }
99
- // Codex address not yet implemented — skip gracefully
127
+ // Codex fix not yet implemented — skip gracefully
100
128
  if (vendor === 'codex') {
101
- log(chalk.dim(` [${step.name}] codex address not yet supported skipping`));
129
+ fileLog({ level: 'info', event: 'step_skipped', repo: `${owner}/${repoName}`, pr: prNumber, step: step.name, reason: 'codex_fix_unsupported' });
102
130
  results[step.name] = { skipped: true };
103
131
  continue;
104
132
  }
@@ -110,48 +138,98 @@ export async function runWorkflow(ctx) {
110
138
  }
111
139
  catch { /* ignore */ }
112
140
  if (existingCount >= MAX_CROSSCHECK_COMMITS) {
113
- log(chalk.yellow(` [${step.name}] ${MAX_CROSSCHECK_COMMITS} [crosscheck] commits already on this PR — stopping`));
141
+ log(chalk.yellow(`⚠ PR #${prNumber}: ${MAX_CROSSCHECK_COMMITS} [crosscheck] commits already — stopping auto-fix`));
114
142
  results[step.name] = { skipped: true };
115
143
  continue;
116
144
  }
117
- spinner.start(`${vendor} addressing review...`);
145
+ onPhaseChange(`${vendor} fixing...`);
118
146
  let appliedCount = 0;
119
147
  try {
120
148
  ;
121
- ({ appliedCount } = await runAddressStep(tmpDir, pr.base.ref, pr.title, reviewResult.commentBody, step.instructions ?? '', config));
149
+ ({ appliedCount } = await runFixStep(tmpDir, pr.base.ref, pr.title, reviewResult.commentBody, step.instructions ?? '', config));
122
150
  }
123
151
  catch (err) {
124
- spinner.fail(`address failed: ${err instanceof Error ? err.message : String(err)}`);
125
- logError({ repo: `${owner}/${repoName}`, pr: prNumber, phase: 'address' }, err);
152
+ logError({ repo: `${owner}/${repoName}`, pr: prNumber, phase: 'fix' }, err);
126
153
  results[step.name] = { skipped: true };
127
154
  continue;
128
155
  }
129
156
  if (appliedCount === 0) {
130
- spinner.succeed('nothing to address');
131
157
  results[step.name] = { applied_count: 0 };
132
158
  continue;
133
159
  }
134
- // Fork PRs: origin in the clone is the base repo, not the fork.
135
- // Pushing to origin:head.ref would create/update a branch in the base repo instead.
136
160
  const isFork = pr.head.repo?.full_name !== pr.base.repo.full_name;
137
161
  if (isFork) {
138
- log(chalk.dim(` [${step.name}] fork PR skipping push (cannot push to contributor's fork)`));
162
+ fileLog({ level: 'info', event: 'step_skipped', repo: `${owner}/${repoName}`, pr: prNumber, step: step.name, reason: 'fork_pr' });
139
163
  results[step.name] = { skipped: true };
140
164
  continue;
141
165
  }
142
- // Commit and push back to the PR branch
143
- execSync('git add -A', { cwd: tmpDir });
144
- execSync(`git commit -m "[crosscheck] address: apply ${appliedCount} fix${appliedCount !== 1 ? 'es' : ''} from code review"`, { cwd: tmpDir });
145
- const newSha = execSync('git rev-parse HEAD', { cwd: tmpDir, encoding: 'utf8' }).trim();
146
- execSync(`git push origin HEAD:${pr.head.ref}`, {
147
- cwd: tmpDir,
148
- env: { ...process.env, GITHUB_TOKEN: token, GH_TOKEN: token },
149
- });
150
- ctx.crosscheckShas.add(newSha);
151
- spinner.succeed(`addressed ${appliedCount} issue${appliedCount !== 1 ? 's' : ''} → pushed to ${pr.head.ref}`);
152
- fileLog({ level: 'info', event: 'address_complete', repo: `${owner}/${repoName}`, pr: prNumber, applied_count: appliedCount, sha: newSha });
153
- results[step.name] = { applied_count: appliedCount };
166
+ const deliveryMode = autoFix.delivery.mode;
167
+ if (deliveryMode === 'commit') {
168
+ execSync('git add -A', { cwd: tmpDir });
169
+ execSync(`git commit -m "[crosscheck] fix: apply ${appliedCount} fix${appliedCount !== 1 ? 'es' : ''} from code review — by Claude Code"`, { cwd: tmpDir });
170
+ const newSha = execSync('git rev-parse HEAD', { cwd: tmpDir, encoding: 'utf8' }).trim();
171
+ execSync(`git push origin HEAD:${pr.head.ref}`, {
172
+ cwd: tmpDir,
173
+ env: { ...process.env, GITHUB_TOKEN: token, GH_TOKEN: token },
174
+ });
175
+ ctx.crosscheckShas.add(newSha);
176
+ onPhaseChange('fixed ', { fixCount: appliedCount });
177
+ fileLog({ level: 'info', event: 'fix_complete', repo: `${owner}/${repoName}`, pr: prNumber, applied_count: appliedCount, sha: newSha, delivery: 'commit' });
178
+ results[step.name] = { applied_count: appliedCount };
179
+ }
180
+ else if (deliveryMode === 'pull_request') {
181
+ // Create a fix branch and open a PR targeting the original branch
182
+ const fixBranch = `fix/cr-${prNumber}-review-issues`;
183
+ execSync(`git checkout -b ${fixBranch}`, { cwd: tmpDir });
184
+ execSync('git add -A', { cwd: tmpDir });
185
+ execSync(`git commit -m "[crosscheck] fix: apply CR fixes from review of PR #${prNumber} — by Claude Code"`, { cwd: tmpDir });
186
+ const newSha = execSync('git rev-parse HEAD', { cwd: tmpDir, encoding: 'utf8' }).trim();
187
+ execSync(`git push origin HEAD:${fixBranch}`, {
188
+ cwd: tmpDir,
189
+ env: { ...process.env, GITHUB_TOKEN: token, GH_TOKEN: token },
190
+ });
191
+ ctx.crosscheckShas.add(newSha);
192
+ const octokit = createGithubClient(token);
193
+ const fixPrTitle = autoFix.delivery.pr_title.replace('#{original_pr_title}', pr.title);
194
+ const { data: fixPr } = await octokit.rest.pulls.create({
195
+ owner,
196
+ repo: repoName,
197
+ head: fixBranch,
198
+ base: pr.head.ref,
199
+ title: fixPrTitle,
200
+ body: `Auto-fix by crosscheck for CR issues found in #${prNumber}.\n\nReview: https://github.com/${owner}/${repoName}/pull/${prNumber}`,
201
+ });
202
+ if (autoFix.delivery.label) {
203
+ try {
204
+ await octokit.rest.issues.addLabels({
205
+ owner, repo: repoName, issue_number: fixPr.number, labels: [autoFix.delivery.label],
206
+ });
207
+ }
208
+ catch { /* label may not exist in this repo — skip */ }
209
+ }
210
+ onPhaseChange('fixed ✓', { fixCount: appliedCount });
211
+ fileLog({ level: 'info', event: 'fix_complete', repo: `${owner}/${repoName}`, pr: prNumber, applied_count: appliedCount, sha: newSha, delivery: 'pull_request', fix_pr: fixPr.number });
212
+ results[step.name] = { applied_count: appliedCount };
213
+ }
214
+ else {
215
+ // comment: post the diff as a suggested-fix comment, no code push needed (works for fork PRs too)
216
+ let patch = '';
217
+ try {
218
+ patch = execSync('git diff', { cwd: tmpDir, encoding: 'utf8' });
219
+ }
220
+ catch { /* ignore */ }
221
+ if (patch) {
222
+ const octokit = createGithubClient(token);
223
+ const body = `### Suggested fixes (crosscheck auto-fix)\n\n\`\`\`diff\n${patch.slice(0, 16000)}\n\`\`\``;
224
+ await octokit.rest.issues.createComment({ owner, repo: repoName, issue_number: prNumber, body });
225
+ }
226
+ onPhaseChange('fixed ✓', { fixCount: appliedCount });
227
+ fileLog({ level: 'info', event: 'fix_complete', repo: `${owner}/${repoName}`, pr: prNumber, applied_count: appliedCount, delivery: 'comment' });
228
+ results[step.name] = { applied_count: appliedCount };
229
+ }
154
230
  }
155
231
  }
232
+ const verdict = Object.values(results).reverse().find(r => r.verdict !== undefined)?.verdict ?? null;
233
+ return { verdict: verdict ?? null };
156
234
  }
157
235
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export declare function parseVerdict(text: string): {
3
3
  verdict: Verdict | null;
4
4
  clean: string;
5
5
  };
6
+ export declare const NULL_VERDICT_WARNING = "> \u26A0\uFE0F crosscheck could not extract a verdict from this review.";
6
7
  export declare function formatVerdict(verdict: Verdict | null): string;
7
8
  export declare function prependVerdictToComment(text: string, verdict: Verdict | null): string;
8
9
  //# sourceMappingURL=verdict.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verdict.d.ts","sourceRoot":"","sources":["../../src/lib/verdict.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAA;AAIxD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMrF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAM7D;AAGD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAOrF"}
1
+ {"version":3,"file":"verdict.d.ts","sourceRoot":"","sources":["../../src/lib/verdict.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAA;AAYxD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAqBrF;AAED,eAAO,MAAM,oBAAoB,4EACgC,CAAA;AAEjE,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAM7D;AAGD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAOrF"}
@@ -1,13 +1,33 @@
1
1
  import chalk from 'chalk';
2
- const VERDICT_RE = /^VERDICT:\s*(APPROVE|NEEDS WORK|BLOCK)\s*$/im;
2
+ // Primary: strict line match; handles NEEDS_WORK spelling and markdown bold wrappers.
3
+ // Closing ** after the colon covers **VERDICT:** BLOCK (bold label, plain value).
4
+ const PRIMARY_RE = /^(?:\*{1,2})?VERDICT:(?:\*{1,2})?\s*(APPROVE|NEEDS[_ ]WORK|BLOCK)(?:\*{1,2})?\s*$/im;
5
+ // Fallback: VERDICT: token anywhere in the text (e.g. inline prose, blockquote)
6
+ const FALLBACK_RE = /VERDICT:\s*(APPROVE|NEEDS[_ ]WORK|BLOCK)/gi;
7
+ function normalizeVerdict(raw) {
8
+ return raw.toUpperCase().replace('_', ' ');
9
+ }
3
10
  export function parseVerdict(text) {
4
- const match = text.match(VERDICT_RE);
5
- if (!match)
6
- return { verdict: null, clean: text };
7
- const verdict = match[1].toUpperCase();
8
- const clean = text.replace(VERDICT_RE, '').replace(/\n{3,}/g, '\n\n').trim();
9
- return { verdict, clean };
11
+ // Primary: look for a clean VERDICT: line (last match wins in case of duplicates)
12
+ const primaryMatches = [...text.matchAll(new RegExp(PRIMARY_RE.source, 'gim'))];
13
+ if (primaryMatches.length > 0) {
14
+ const last = primaryMatches[primaryMatches.length - 1];
15
+ const verdict = normalizeVerdict(last[1]);
16
+ const clean = text.replace(new RegExp(PRIMARY_RE.source, 'gim'), '').replace(/\n{3,}/g, '\n\n').trim();
17
+ return { verdict, clean };
18
+ }
19
+ // Fallback: VERDICT: anywhere — last occurrence wins
20
+ const fallbackMatches = [...text.matchAll(FALLBACK_RE)];
21
+ if (fallbackMatches.length > 0) {
22
+ const last = fallbackMatches[fallbackMatches.length - 1];
23
+ const verdict = normalizeVerdict(last[1]);
24
+ const idx = last.index ?? 0;
25
+ const rawClean = text.slice(0, idx) + text.slice(idx + last[0].length);
26
+ return { verdict, clean: rawClean.replace(/\n{3,}/g, '\n\n').trim() };
27
+ }
28
+ return { verdict: null, clean: text };
10
29
  }
30
+ export const NULL_VERDICT_WARNING = '> ⚠️ crosscheck could not extract a verdict from this review.';
11
31
  export function formatVerdict(verdict) {
12
32
  if (!verdict)
13
33
  return chalk.dim('verdict —');
@@ -1 +1 @@
1
- {"version":3,"file":"verdict.js","sourceRoot":"","sources":["../../src/lib/verdict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,UAAU,GAAG,8CAA8C,CAAA;AAEjE,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAa,CAAA;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAuB;IACnD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC5C,IAAI,OAAO,KAAK,SAAS;QAAK,OAAO,YAAY,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAA;IAC3E,IAAI,OAAO,KAAK,YAAY;QAAE,OAAO,YAAY,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAA;IAChF,IAAI,OAAO,KAAK,OAAO;QAAO,OAAO,YAAY,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAA;IACxE,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAChC,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,OAAuB;IAC3E,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,MAAM,KAAK,GACT,OAAO,KAAK,SAAS,CAAI,CAAC,CAAC,eAAe,CAAC,CAAC;QAC5C,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;YACrB,cAAc,CAAA;IAC3C,OAAO,GAAG,KAAK,OAAO,IAAI,EAAE,CAAA;AAC9B,CAAC"}
1
+ {"version":3,"file":"verdict.js","sourceRoot":"","sources":["../../src/lib/verdict.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,22 @@
1
1
  import { z } from 'zod';
2
2
  export declare const WorkflowStepSchema: z.ZodObject<{
3
3
  name: z.ZodString;
4
- type: z.ZodEnum<["review", "address", "recheck"]>;
4
+ type: z.ZodType<"review" | "fix" | "recheck">;
5
5
  reviewer: z.ZodDefault<z.ZodEnum<["auto", "claude", "codex", "origin"]>>;
6
6
  when: z.ZodOptional<z.ZodString>;
7
7
  max_rounds: z.ZodDefault<z.ZodNumber>;
8
8
  instructions: z.ZodOptional<z.ZodString>;
9
9
  }, "strip", z.ZodTypeAny, {
10
- type: "review" | "address" | "recheck";
10
+ type: "review" | "fix" | "recheck";
11
11
  name: string;
12
- reviewer: "codex" | "claude" | "auto" | "origin";
12
+ reviewer: "claude" | "codex" | "auto" | "origin";
13
13
  max_rounds: number;
14
14
  when?: string | undefined;
15
15
  instructions?: string | undefined;
16
16
  }, {
17
- type: "review" | "address" | "recheck";
17
+ type: "review" | "fix" | "recheck";
18
18
  name: string;
19
- reviewer?: "codex" | "claude" | "auto" | "origin" | undefined;
19
+ reviewer?: "claude" | "codex" | "auto" | "origin" | undefined;
20
20
  when?: string | undefined;
21
21
  max_rounds?: number | undefined;
22
22
  instructions?: string | undefined;
@@ -25,22 +25,22 @@ export declare const WorkflowSchema: z.ZodObject<{
25
25
  on: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
26
26
  steps: z.ZodArray<z.ZodObject<{
27
27
  name: z.ZodString;
28
- type: z.ZodEnum<["review", "address", "recheck"]>;
28
+ type: z.ZodType<"review" | "fix" | "recheck">;
29
29
  reviewer: z.ZodDefault<z.ZodEnum<["auto", "claude", "codex", "origin"]>>;
30
30
  when: z.ZodOptional<z.ZodString>;
31
31
  max_rounds: z.ZodDefault<z.ZodNumber>;
32
32
  instructions: z.ZodOptional<z.ZodString>;
33
33
  }, "strip", z.ZodTypeAny, {
34
- type: "review" | "address" | "recheck";
34
+ type: "review" | "fix" | "recheck";
35
35
  name: string;
36
- reviewer: "codex" | "claude" | "auto" | "origin";
36
+ reviewer: "claude" | "codex" | "auto" | "origin";
37
37
  max_rounds: number;
38
38
  when?: string | undefined;
39
39
  instructions?: string | undefined;
40
40
  }, {
41
- type: "review" | "address" | "recheck";
41
+ type: "review" | "fix" | "recheck";
42
42
  name: string;
43
- reviewer?: "codex" | "claude" | "auto" | "origin" | undefined;
43
+ reviewer?: "claude" | "codex" | "auto" | "origin" | undefined;
44
44
  when?: string | undefined;
45
45
  max_rounds?: number | undefined;
46
46
  instructions?: string | undefined;
@@ -48,18 +48,18 @@ export declare const WorkflowSchema: z.ZodObject<{
48
48
  }, "strip", z.ZodTypeAny, {
49
49
  on: string[];
50
50
  steps: {
51
- type: "review" | "address" | "recheck";
51
+ type: "review" | "fix" | "recheck";
52
52
  name: string;
53
- reviewer: "codex" | "claude" | "auto" | "origin";
53
+ reviewer: "claude" | "codex" | "auto" | "origin";
54
54
  max_rounds: number;
55
55
  when?: string | undefined;
56
56
  instructions?: string | undefined;
57
57
  }[];
58
58
  }, {
59
59
  steps: {
60
- type: "review" | "address" | "recheck";
60
+ type: "review" | "fix" | "recheck";
61
61
  name: string;
62
- reviewer?: "codex" | "claude" | "auto" | "origin" | undefined;
62
+ reviewer?: "claude" | "codex" | "auto" | "origin" | undefined;
63
63
  when?: string | undefined;
64
64
  max_rounds?: number | undefined;
65
65
  instructions?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/lib/workflow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;EAO7B,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGzB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAI7D,eAAO,MAAM,gBAAgB,EAAE,YAAY,EAe1C,CAAA;AAED,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAcjE;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,OAAO,CAoBvF"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/lib/workflow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,kBAAkB;;UAGwE,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;;;;;;;;;;;;;;;;;;;EAK5I,CAAA;AAEF,eAAO,MAAM,cAAc;;;;cAP4E,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU5I,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAqB7D,eAAO,MAAM,gBAAgB,EAAE,YAAY,EAgB1C,CAAA;AAED,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAcjE;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,OAAO,CAoBvF"}
@@ -4,7 +4,8 @@ import yaml from 'js-yaml';
4
4
  import { z } from 'zod';
5
5
  export const WorkflowStepSchema = z.object({
6
6
  name: z.string(),
7
- type: z.enum(['review', 'address', 'recheck']),
7
+ // 'address' is the legacy name — normalized to 'fix' at parse time for backward compat
8
+ type: z.enum(['review', 'fix', 'recheck', 'address']).transform(t => t === 'address' ? 'fix' : t),
8
9
  reviewer: z.enum(['auto', 'claude', 'codex', 'origin']).default('auto'),
9
10
  when: z.string().optional(),
10
11
  max_rounds: z.number().int().positive().default(1),
@@ -14,7 +15,22 @@ export const WorkflowSchema = z.object({
14
15
  on: z.array(z.string()).default(['opened', 'synchronize']),
15
16
  steps: z.array(WorkflowStepSchema),
16
17
  });
17
- // Default pipeline: review then address issues (skipped if verdict is APPROVE).
18
+ const DEFAULT_REVIEW_INSTRUCTIONS = [
19
+ '## Constraints',
20
+ '- Do not run tsc, ts-node, or build commands — inspect source files directly with git diff/log.',
21
+ '- Do not install packages or modify lock files.',
22
+ '## Output format',
23
+ 'Structure your output as: ## Summary, ## Critical Issues, ## Warnings, ## Suggestions.',
24
+ 'Be concise. Skip praise.',
25
+ '## Verdict',
26
+ 'End with one of: VERDICT: APPROVE | NEEDS WORK | BLOCK',
27
+ ].join('\n');
28
+ const DEFAULT_FIX_INSTRUCTIONS = [
29
+ 'Only fix issues explicitly called out in the review.',
30
+ 'Do not refactor unrelated code, rename variables, or add tests unless specifically requested.',
31
+ 'If a comment requires deeper understanding of business logic, skip it.',
32
+ ].join('\n');
33
+ // Default pipeline: review → fix issues (fix skipped when verdict is APPROVE).
18
34
  // Execution always goes through this constant — there is no legacy direct-call path.
19
35
  export const DEFAULT_WORKFLOW = [
20
36
  {
@@ -22,14 +38,15 @@ export const DEFAULT_WORKFLOW = [
22
38
  type: 'review',
23
39
  reviewer: 'auto',
24
40
  max_rounds: 1,
41
+ instructions: DEFAULT_REVIEW_INSTRUCTIONS,
25
42
  },
26
43
  {
27
- name: 'address',
28
- type: 'address',
44
+ name: 'fix',
45
+ type: 'fix',
29
46
  reviewer: 'origin',
30
47
  when: "review.verdict != 'APPROVE'",
31
48
  max_rounds: 1,
32
- instructions: 'Only fix issues explicitly called out in the review. Do not refactor unrelated code, rename variables, or add tests unless specifically requested.',
49
+ instructions: DEFAULT_FIX_INSTRUCTIONS,
33
50
  },
34
51
  ];
35
52
  export function loadWorkflow(operatorDir) {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/lib/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,IAAI,MAAM,SAAS,CAAA;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;CACnC,CAAC,CAAA;AAIF,gFAAgF;AAChF,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,CAAC;KACd;IACD;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,6BAA6B;QACnC,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,oJAAoJ;KACnK;CACF,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,WAAoB;IAC/C,4EAA4E;IAC5E,mFAAmF;IACnF,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACxF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;YACjD,OAAO,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IACD,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAUD,4DAA4D;AAC5D,0DAA0D;AAC1D,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAmC;IAC5E,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAA;IACxG,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnB,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAyB,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAE1F,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAA;QACrC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAA;QACrC,KAAK,GAAG,CAAC,CAAE,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QACnD,KAAK,GAAG,CAAC,CAAE,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QACnD,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;QACpD,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;QACpD,OAAO,CAAC,CAAG,OAAO,IAAI,CAAA;IACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/lib/workflow.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { QualityConfig, VendorConfig } from '../config/schema.js';
2
- export declare function runClaudeReview(repoDir: string, baseBranch: string, prTitle: string, quality: QualityConfig, vendor: VendorConfig, perReviewBudget: number, onLog?: (msg: string) => void): Promise<string>;
2
+ export declare function runClaudeReview(repoDir: string, baseBranch: string, prTitle: string, quality: QualityConfig, vendor: VendorConfig, perReviewBudget: number, stepInstructions?: string, onLog?: (msg: string) => void): Promise<string>;
3
3
  export declare function checkClaudeAuth(): Promise<{
4
4
  ok: boolean;
5
5
  detail: string;
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/reviewers/claude.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAgBtE,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,MAAM,EACvB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC5B,OAAO,CAAC,MAAM,CAAC,CAsDjB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhF"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/reviewers/claude.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAgBtE,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,MAAM,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC5B,OAAO,CAAC,MAAM,CAAC,CAoDjB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhF"}
@@ -14,23 +14,21 @@ const EFFORT_MAP = {
14
14
  high: 'high',
15
15
  max: 'max',
16
16
  };
17
- export async function runClaudeReview(repoDir, baseBranch, prTitle, quality, vendor, perReviewBudget, onLog) {
17
+ export async function runClaudeReview(repoDir, baseBranch, prTitle, quality, vendor, perReviewBudget, stepInstructions, onLog) {
18
18
  const model = TIER_MODELS[quality.tier] ?? 'claude-sonnet-4-6';
19
19
  const effort = EFFORT_MAP[vendor.effort] ?? 'medium';
20
20
  const focusLine = quality.focus.length > 0
21
21
  ? `Focus areas: ${quality.focus.join(', ')}.`
22
22
  : '';
23
23
  const customLine = quality.custom_prompt ?? '';
24
- // Adaptive instructions from ~/.crosscheck/instructions.md (managed by `crosscheck optimize`)
25
- const adaptiveInstructions = readInstructions(repoDir);
24
+ // stepInstructions from workflow step takes precedence; fall back to ~/.crosscheck/instructions.md
25
+ const behaviorInstructions = stepInstructions !== undefined ? stepInstructions : readInstructions(repoDir);
26
26
  const prompt = [
27
27
  `You are reviewing a pull request titled: "${prTitle}".`,
28
28
  `The branch \`${baseBranch}\` is the base. Review only the changes introduced in this PR.`,
29
29
  focusLine,
30
30
  customLine,
31
- adaptiveInstructions,
32
- 'Structure your output as: ## Summary, ## Critical Issues, ## Warnings, ## Suggestions.',
33
- 'Be concise. Skip praise.',
31
+ behaviorInstructions,
34
32
  ].filter(Boolean).join('\n');
35
33
  const outputFile = join(mkdtempSync(join(tmpdir(), 'crosscheck-')), 'review.md');
36
34
  const args = [
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/reviewers/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/reviewers/claude.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { QualityConfig } from '../config/schema.js';
2
- export declare function runCodexReview(repoDir: string, baseBranch: string, prTitle: string, quality: QualityConfig, overrideModel?: string, authMode?: 'subscription' | 'api-key', onLog?: (msg: string) => void): Promise<string>;
1
+ import type { QualityConfig, CodexVendorConfig } from '../config/schema.js';
2
+ export declare function runCodexReview(repoDir: string, baseBranch: string, prTitle: string, quality: QualityConfig, vendor: CodexVendorConfig, stepInstructions?: string, onLog?: (msg: string) => void): Promise<string>;
3
3
  export declare function checkCodexAuth(): Promise<{
4
4
  ok: boolean;
5
5
  detail: string;