@humanbased/crosscheck 0.14.0 → 0.15.0-beta.103

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 (145) hide show
  1. package/README.md +147 -4
  2. package/crosscheck.config.example.yml +3 -1
  3. package/dist/__tests__/backtrace.test.js +1 -1
  4. package/dist/__tests__/backtrace.test.js.map +1 -1
  5. package/dist/__tests__/durations.test.js +5 -1
  6. package/dist/__tests__/durations.test.js.map +1 -1
  7. package/dist/__tests__/fix.test.js +48 -1
  8. package/dist/__tests__/fix.test.js.map +1 -1
  9. package/dist/__tests__/kickass.test.js +362 -69
  10. package/dist/__tests__/kickass.test.js.map +1 -1
  11. package/dist/__tests__/optimize.test.js +3 -3
  12. package/dist/__tests__/optimize.test.js.map +1 -1
  13. package/dist/__tests__/pr-picker.test.js +8 -7
  14. package/dist/__tests__/pr-picker.test.js.map +1 -1
  15. package/dist/__tests__/pr-status.test.js +41 -20
  16. package/dist/__tests__/pr-status.test.js.map +1 -1
  17. package/dist/__tests__/pr-workflow-state.test.d.ts +2 -0
  18. package/dist/__tests__/pr-workflow-state.test.d.ts.map +1 -0
  19. package/dist/__tests__/pr-workflow-state.test.js +184 -0
  20. package/dist/__tests__/pr-workflow-state.test.js.map +1 -0
  21. package/dist/__tests__/review-models.test.js +1 -0
  22. package/dist/__tests__/review-models.test.js.map +1 -1
  23. package/dist/__tests__/run.test.d.ts +2 -0
  24. package/dist/__tests__/run.test.d.ts.map +1 -0
  25. package/dist/__tests__/run.test.js +81 -0
  26. package/dist/__tests__/run.test.js.map +1 -0
  27. package/dist/__tests__/runner.test.js +117 -1
  28. package/dist/__tests__/runner.test.js.map +1 -1
  29. package/dist/__tests__/smart-switch.test.js +1 -1
  30. package/dist/__tests__/smart-switch.test.js.map +1 -1
  31. package/dist/__tests__/tier-timeouts.test.d.ts +2 -0
  32. package/dist/__tests__/tier-timeouts.test.d.ts.map +1 -0
  33. package/dist/__tests__/tier-timeouts.test.js +23 -0
  34. package/dist/__tests__/tier-timeouts.test.js.map +1 -0
  35. package/dist/__tests__/webhook.test.d.ts +2 -0
  36. package/dist/__tests__/webhook.test.d.ts.map +1 -0
  37. package/dist/__tests__/webhook.test.js +197 -0
  38. package/dist/__tests__/webhook.test.js.map +1 -0
  39. package/dist/cli.js +38 -5
  40. package/dist/cli.js.map +1 -1
  41. package/dist/commands/detect-step.d.ts +5 -0
  42. package/dist/commands/detect-step.d.ts.map +1 -0
  43. package/dist/commands/detect-step.js +124 -0
  44. package/dist/commands/detect-step.js.map +1 -0
  45. package/dist/commands/kickass.d.ts +18 -10
  46. package/dist/commands/kickass.d.ts.map +1 -1
  47. package/dist/commands/kickass.js +234 -63
  48. package/dist/commands/kickass.js.map +1 -1
  49. package/dist/commands/review.d.ts.map +1 -1
  50. package/dist/commands/review.js +14 -5
  51. package/dist/commands/review.js.map +1 -1
  52. package/dist/commands/run.d.ts +16 -1
  53. package/dist/commands/run.d.ts.map +1 -1
  54. package/dist/commands/run.js +347 -44
  55. package/dist/commands/run.js.map +1 -1
  56. package/dist/commands/serve.d.ts.map +1 -1
  57. package/dist/commands/serve.js +41 -3
  58. package/dist/commands/serve.js.map +1 -1
  59. package/dist/commands/watch.d.ts.map +1 -1
  60. package/dist/commands/watch.js +200 -6
  61. package/dist/commands/watch.js.map +1 -1
  62. package/dist/config/schema.d.ts +52 -0
  63. package/dist/config/schema.d.ts.map +1 -1
  64. package/dist/config/schema.js +24 -1
  65. package/dist/config/schema.js.map +1 -1
  66. package/dist/github/client.d.ts +40 -1
  67. package/dist/github/client.d.ts.map +1 -1
  68. package/dist/github/client.js +69 -9
  69. package/dist/github/client.js.map +1 -1
  70. package/dist/github/review-status.d.ts.map +1 -1
  71. package/dist/github/review-status.js +7 -4
  72. package/dist/github/review-status.js.map +1 -1
  73. package/dist/github/webhook.d.ts +25 -1
  74. package/dist/github/webhook.d.ts.map +1 -1
  75. package/dist/github/webhook.js +37 -1
  76. package/dist/github/webhook.js.map +1 -1
  77. package/dist/lib/annotation.d.ts +4 -0
  78. package/dist/lib/annotation.d.ts.map +1 -1
  79. package/dist/lib/annotation.js +5 -1
  80. package/dist/lib/annotation.js.map +1 -1
  81. package/dist/lib/comment-bodies.d.ts.map +1 -1
  82. package/dist/lib/comment-bodies.js +3 -2
  83. package/dist/lib/comment-bodies.js.map +1 -1
  84. package/dist/lib/durations.d.ts.map +1 -1
  85. package/dist/lib/durations.js +5 -3
  86. package/dist/lib/durations.js.map +1 -1
  87. package/dist/lib/logger.d.ts +3 -0
  88. package/dist/lib/logger.d.ts.map +1 -1
  89. package/dist/lib/logger.js +29 -3
  90. package/dist/lib/logger.js.map +1 -1
  91. package/dist/lib/pr-picker.d.ts.map +1 -1
  92. package/dist/lib/pr-picker.js +5 -1
  93. package/dist/lib/pr-picker.js.map +1 -1
  94. package/dist/lib/pr-status.d.ts +4 -3
  95. package/dist/lib/pr-status.d.ts.map +1 -1
  96. package/dist/lib/pr-status.js +19 -13
  97. package/dist/lib/pr-status.js.map +1 -1
  98. package/dist/lib/pr-workflow-state.d.ts +68 -0
  99. package/dist/lib/pr-workflow-state.d.ts.map +1 -0
  100. package/dist/lib/pr-workflow-state.js +328 -0
  101. package/dist/lib/pr-workflow-state.js.map +1 -0
  102. package/dist/lib/product.d.ts +3 -0
  103. package/dist/lib/product.d.ts.map +1 -0
  104. package/dist/lib/product.js +5 -0
  105. package/dist/lib/product.js.map +1 -0
  106. package/dist/lib/repo-picker.d.ts +1 -0
  107. package/dist/lib/repo-picker.d.ts.map +1 -1
  108. package/dist/lib/repo-picker.js +50 -33
  109. package/dist/lib/repo-picker.js.map +1 -1
  110. package/dist/lib/runner.d.ts +19 -1
  111. package/dist/lib/runner.d.ts.map +1 -1
  112. package/dist/lib/runner.js +337 -54
  113. package/dist/lib/runner.js.map +1 -1
  114. package/dist/lib/smart-switch.js +1 -1
  115. package/dist/lib/smart-switch.js.map +1 -1
  116. package/dist/lib/vendor.d.ts +4 -0
  117. package/dist/lib/vendor.d.ts.map +1 -0
  118. package/dist/lib/vendor.js +14 -0
  119. package/dist/lib/vendor.js.map +1 -0
  120. package/dist/lib/workflow.d.ts +5 -0
  121. package/dist/lib/workflow.d.ts.map +1 -1
  122. package/dist/lib/workflow.js.map +1 -1
  123. package/dist/reviewers/claude.d.ts +3 -1
  124. package/dist/reviewers/claude.d.ts.map +1 -1
  125. package/dist/reviewers/claude.js +14 -9
  126. package/dist/reviewers/claude.js.map +1 -1
  127. package/dist/reviewers/codex.d.ts +1 -1
  128. package/dist/reviewers/codex.d.ts.map +1 -1
  129. package/dist/reviewers/codex.js +7 -10
  130. package/dist/reviewers/codex.js.map +1 -1
  131. package/dist/reviewers/conflict-resolve.d.ts +1 -1
  132. package/dist/reviewers/conflict-resolve.d.ts.map +1 -1
  133. package/dist/reviewers/conflict-resolve.js +3 -2
  134. package/dist/reviewers/conflict-resolve.js.map +1 -1
  135. package/dist/reviewers/fix.d.ts +5 -1
  136. package/dist/reviewers/fix.d.ts.map +1 -1
  137. package/dist/reviewers/fix.js +68 -2
  138. package/dist/reviewers/fix.js.map +1 -1
  139. package/dist/reviewers/tier-timeouts.d.ts +5 -0
  140. package/dist/reviewers/tier-timeouts.d.ts.map +1 -0
  141. package/dist/reviewers/tier-timeouts.js +14 -0
  142. package/dist/reviewers/tier-timeouts.js.map +1 -0
  143. package/get-started.md +56 -5
  144. package/get-started.zh.md +7 -1
  145. package/package.json +1 -1
@@ -16,11 +16,13 @@ import { initLogger, log as fileLog, logError, logUncaught } from '../lib/logger
16
16
  import { isAuthorAllowed } from '../lib/filter.js';
17
17
  import { runWorkflow } from '../lib/runner.js';
18
18
  import { loadWorkflow } from '../lib/workflow.js';
19
+ import { fetchStepHistory, identifyNextWorkflowStep } from '../lib/pr-workflow-state.js';
19
20
  import { PRBoard, fmtTime, FMT_TIME_WIDTH } from '../lib/board.js';
20
21
  import { clonePRForReview } from '../lib/clone.js';
21
22
  import { PersistentShaSet } from '../lib/sha-cache.js';
22
23
  import { PersistentDiffHashMap, computeDiffHash } from '../lib/diff-hash.js';
23
24
  import { isCrosscheckCommitMessage } from '../lib/crosscheck-commit.js';
25
+ import { CROSSCHECK_ISSUES_URL } from '../lib/product.js';
24
26
  import { getSmartSwitch, isSubscriptionLimitError, detectFailedVendor, triggerSwitch, notifyReviewSuccess, stopSmartSwitch, } from '../lib/smart-switch.js';
25
27
  function buildFallbackConfig(config, fallbackVendor) {
26
28
  return {
@@ -130,8 +132,36 @@ async function handlePR(event, config, token, board) {
130
132
  return;
131
133
  }
132
134
  const prKey = `${owner}/${repoName}#${prNumber}`;
133
- const isRecheckRun = reviewedPRKeys.has(prKey);
134
- const round = isRecheckRun ? (prRoundCounts.get(prKey) ?? 1) + 1 : 1;
135
+ // Determine the correct starting step from PR comment history so serve
136
+ // behaves correctly after a restart (reviewedPRKeys is in-memory only).
137
+ // Fast-path: if the PR was reviewed in this session, skip the API call.
138
+ let isRecheckRun = reviewedPRKeys.has(prKey);
139
+ let round = isRecheckRun ? (prRoundCounts.get(prKey) ?? 1) + 1 : 1;
140
+ let resolvedSteps;
141
+ let detectedReviewComment;
142
+ if (!isRecheckRun) {
143
+ try {
144
+ const allSteps = loadWorkflow(process.cwd());
145
+ const history = await fetchStepHistory(owner, repoName, prNumber, token);
146
+ const nextResult = identifyNextWorkflowStep(history, allSteps, pr.head.sha);
147
+ if (nextResult.step === null) {
148
+ await releaseRemoteLock(lockOctokit, owner, repoName, pr.head.sha, 'success');
149
+ releasePRLock(owner, repoName, prNumber, pr.head.sha);
150
+ inFlight.delete(key);
151
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'workflow_complete', sha: pr.head.sha });
152
+ return;
153
+ }
154
+ if (nextResult.hasExistingReview) {
155
+ isRecheckRun = nextResult.step.type !== 'review';
156
+ round = nextResult.round;
157
+ detectedReviewComment = nextResult.reviewComment;
158
+ const nextStepIdx = allSteps.findIndex(s => s.type === nextResult.step.type);
159
+ if (nextStepIdx >= 0)
160
+ resolvedSteps = allSteps.slice(nextStepIdx);
161
+ }
162
+ }
163
+ catch { /* best-effort — fall back to session-based detection */ }
164
+ }
135
165
  const reviewStart = Date.now();
136
166
  const tmpDir = mkdtempSync(join(tmpdir(), 'crosscheck-repo-'));
137
167
  let stopHeartbeat = () => { };
@@ -179,8 +209,16 @@ async function handlePR(event, config, token, board) {
179
209
  onPhaseChange: (label, data) => board.updatePR(key, { label, ...data }),
180
210
  crosscheckShas,
181
211
  smartSwitchFallback: (ss.active && ss.fallbackVendor) ? ss.fallbackVendor : undefined,
212
+ onVendorLimit: (failedVendor, fallbackVendor, reason) => {
213
+ if (config.mode === 'cross-vendor' && fallbackVendor !== null && !getSmartSwitch().active) {
214
+ triggerSwitch(failedVendor, reason, announce);
215
+ }
216
+ },
217
+ ...(resolvedSteps !== undefined && { steps: resolvedSteps }),
218
+ ...(detectedReviewComment !== undefined && { initialReviewComment: detectedReviewComment }),
182
219
  isRecheckRun,
183
220
  round,
221
+ trigger: event.action === 'backtrace' ? 'backtrace' : 'serve',
184
222
  });
185
223
  reviewedPRKeys.add(prKey);
186
224
  prRoundCounts.set(prKey, round);
@@ -293,7 +331,7 @@ export async function runServe(opts = {}) {
293
331
  const webhookUrl = `http://${hostname()}:${effectivePort}${config.server.webhook_path}`;
294
332
  console.log(chalk.dim(`\n "${randomFortune()}"\n`));
295
333
  console.log(chalk.bold('crosscheck serving\n'));
296
- console.log(chalk.yellow(' ⚠ serve is in beta — report issues at github.com/Motivation-Labs/crosscheck/issues\n'));
334
+ console.log(chalk.yellow(` ⚠ serve is in beta — report issues at ${CROSSCHECK_ISSUES_URL}\n`));
297
335
  if (effectiveDeployment) {
298
336
  const label = sessionOnly
299
337
  ? chalk.dim(`${effectiveDeployment} (session only — not saved)`)
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AA+JA,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,QAAQ,CAAC,IAAI,GAAE,SAAc,iBAo0BlD"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAqKA,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,QAAQ,CAAC,IAAI,GAAE,SAAc,iBAwgClD"}
@@ -1,7 +1,7 @@
1
1
  import { execSync, spawn } from 'child_process';
2
2
  import chalk from 'chalk';
3
3
  import { createWebhookServer } from '../github/webhook.js';
4
- import { createGithubClient, getCommitMessage, registerOrgWebhook, deleteOrgWebhook, registerRepoWebhook, deleteRepoWebhook, findOrgWebhook, findRepoWebhook, listUserRepos, checkRepoAccessible, } from '../github/client.js';
4
+ import { createGithubClient, getCommitMessage, registerOrgWebhook, deleteOrgWebhook, registerRepoWebhook, deleteRepoWebhook, patchOrgWebhookEvents, patchRepoWebhookEvents, findOrgWebhook, findRepoWebhook, listUserRepos, checkRepoAccessible, } from '../github/client.js';
5
5
  import { detectOriginFull, assignReviewer } from '../github/detector.js';
6
6
  import { loadConfig, getGithubToken, getWebhookSecret, resolveConfigPath, promptDeploymentMode, detectScopesForDeployment, patchDeploymentConfig, detectGitHubLogin, } from '../config/loader.js';
7
7
  import { randomFortune } from '../lib/fortune.js';
@@ -9,7 +9,9 @@ import { scanUnreviewedPRs } from '../lib/backtrace.js';
9
9
  import { initLogger, log as fileLog, logError, logUncaught } from '../lib/logger.js';
10
10
  import { isAuthorAllowed } from '../lib/filter.js';
11
11
  import { runWorkflow } from '../lib/runner.js';
12
- import { loadWorkflow } from '../lib/workflow.js';
12
+ import { loadWorkflow, DEFAULT_RECHECK_INSTRUCTIONS } from '../lib/workflow.js';
13
+ import { fetchStepHistory, identifyNextWorkflowStep } from '../lib/pr-workflow-state.js';
14
+ import { parseAnnotation } from '../lib/annotation.js';
13
15
  import { PRBoard, fmtTime, FMT_TIME_WIDTH } from '../lib/board.js';
14
16
  import { clonePRForReview } from '../lib/clone.js';
15
17
  import { getSmartSwitch, isSubscriptionLimitError, detectFailedVendor, triggerSwitch, notifyReviewSuccess, stopSmartSwitch, } from '../lib/smart-switch.js';
@@ -22,6 +24,7 @@ import { dedupScopes } from '../lib/scopes.js';
22
24
  import { acquirePRLock, releasePRLock } from '../lib/pr-lock.js';
23
25
  import { checkRemoteLock, acquireRemoteLock, releaseRemoteLock, startRemoteLockHeartbeat } from '../github/review-status.js';
24
26
  import { isCrosscheckCommitMessage } from '../lib/crosscheck-commit.js';
27
+ const WEBHOOK_EVENTS = ['pull_request', 'issue_comment'];
25
28
  function buildFallbackConfig(config, fallbackVendor) {
26
29
  return {
27
30
  ...config,
@@ -145,6 +148,17 @@ export async function runWatch(opts = {}) {
145
148
  process.exit(1);
146
149
  }
147
150
  fileLog({ level: 'info', event: 'session_start', command: 'watch' });
151
+ // Fetch the authenticated user so the onComment handler can reject annotation
152
+ // injection from non-token accounts. If this fails, the handler is disabled
153
+ // entirely (fail closed) — allowing unknown authors would defeat the guard.
154
+ let authenticatedLogin = null;
155
+ try {
156
+ const { data: me } = await createGithubClient(token).rest.users.getAuthenticated();
157
+ authenticatedLogin = me.login;
158
+ }
159
+ catch {
160
+ fileLog({ level: 'warn', event: 'authenticated_login_unavailable', message: 'issue_comment bridge disabled — could not determine token owner' });
161
+ }
148
162
  const webhookSecret = getWebhookSecret();
149
163
  const webhookPath = config.server.webhook_path;
150
164
  // Board manages all terminal output after startup
@@ -171,6 +185,9 @@ export async function runWatch(opts = {}) {
171
185
  // PRs reviewed at least once this session — synchronize events on these run as recheck rounds
172
186
  const reviewedPRKeys = new Set();
173
187
  const prRoundCounts = new Map();
188
+ // PR+sha pairs completed by this watch session — used to suppress issue_comment
189
+ // re-entries for reviews that watch posted itself (as opposed to kickass).
190
+ const reviewedPRShaKeys = new Set();
174
191
  async function reviewPR(params) {
175
192
  const { owner, repoName, prNumber } = params;
176
193
  const key = `${owner}/${repoName}#${prNumber}@${params.headSha}`;
@@ -227,8 +244,62 @@ export async function runWatch(opts = {}) {
227
244
  return;
228
245
  }
229
246
  const prKey = `${owner}/${repoName}#${prNumber}`;
230
- const isRecheckRun = reviewedPRKeys.has(prKey);
231
- const round = isRecheckRun ? (prRoundCounts.get(prKey) ?? 1) + 1 : 1;
247
+ // Determine the correct starting step from PR comment history so watch
248
+ // behaves correctly after a restart (reviewedPRKeys is in-memory only).
249
+ // Fast-path: if the PR was reviewed in this session, skip the API call.
250
+ // Exception: comment-triggered runs must always do live detection —
251
+ // reviewedPRKeys is SHA-agnostic and would misroute a kickass review
252
+ // annotation for a new SHA as a recheck run instead of routing to fix.
253
+ let isRecheckRun = params.action === 'comment'
254
+ ? reviewedPRShaKeys.has(key) // SHA-specific: already processed this exact sha
255
+ : reviewedPRKeys.has(prKey); // session fast-path for webhook/backtrace events
256
+ let round = isRecheckRun ? (prRoundCounts.get(prKey) ?? 1) + 1 : 1;
257
+ let resolvedSteps;
258
+ let detectedReviewComment;
259
+ if (!isRecheckRun) {
260
+ try {
261
+ const allSteps = loadWorkflow(process.cwd());
262
+ const history = await fetchStepHistory(owner, repoName, prNumber, token);
263
+ const nextResult = identifyNextWorkflowStep(history, allSteps, params.headSha);
264
+ if (nextResult.step === null) {
265
+ // Workflow already complete for this HEAD sha — release lock and skip.
266
+ // Happens when a synchronize event fires after all steps are done.
267
+ await releaseRemoteLock(lockOctokit, owner, repoName, params.headSha, 'success');
268
+ releasePRLock(owner, repoName, prNumber, params.headSha);
269
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'workflow_complete', sha: params.headSha });
270
+ return;
271
+ }
272
+ if (nextResult.hasExistingReview) {
273
+ isRecheckRun = nextResult.step.type !== 'review';
274
+ round = nextResult.round;
275
+ detectedReviewComment = nextResult.reviewComment;
276
+ const nextStepIdx = allSteps.findIndex(s => s.type === nextResult.step.type);
277
+ if (nextStepIdx >= 0) {
278
+ let steps = allSteps.slice(nextStepIdx);
279
+ // Synthesize a recheck step when one isn't explicitly in workflow.yml,
280
+ // but only for commit delivery mode. Under pull_request/comment delivery
281
+ // the fix does not push to the PR head, so a recheck would evaluate the
282
+ // un-fixed diff and post an incorrect verdict on the original PR.
283
+ const deliveryMode = config.post_review.auto_fix.delivery.mode;
284
+ if (deliveryMode === 'commit' && !steps.some(s => s.type === 'recheck')) {
285
+ const reviewStep = allSteps.find(s => s.type === 'review');
286
+ if (reviewStep) {
287
+ const synthetic = {
288
+ ...reviewStep, name: 'recheck', type: 'recheck', reviewer,
289
+ when: undefined, instructions: DEFAULT_RECHECK_INSTRUCTIONS,
290
+ };
291
+ const lastFix = steps.map(s => s.type).lastIndexOf('fix');
292
+ steps = lastFix >= 0
293
+ ? [...steps.slice(0, lastFix + 1), synthetic, ...steps.slice(lastFix + 1)]
294
+ : [...steps, synthetic];
295
+ }
296
+ }
297
+ resolvedSteps = steps;
298
+ }
299
+ }
300
+ }
301
+ catch { /* best-effort — fall back to session-based detection */ }
302
+ }
232
303
  const reviewStart = Date.now();
233
304
  const tmpDir = mkdtempSync(join(tmpdir(), 'crosscheck-repo-'));
234
305
  let stopHeartbeat = () => { };
@@ -250,7 +321,10 @@ export async function runWatch(opts = {}) {
250
321
  }
251
322
  catch { /* base unavailable — proceed with full review, skip cache update */ }
252
323
  const prev = newDiffHash ? diffHashes.get(prKey) : undefined;
253
- if (newDiffHash && prev && prev.hash === newDiffHash && prev.sha !== params.headSha) {
324
+ // Comment-triggered runs (issue_comment bridge) must bypass the diff-hash skip:
325
+ // the annotation is the explicit signal to advance to fix, regardless of whether
326
+ // the diff changed since the last review (e.g. no-op rebase/amend).
327
+ if (newDiffHash && prev && prev.hash === newDiffHash && prev.sha !== params.headSha && params.action !== 'comment') {
254
328
  const prevShort = prev.sha.slice(0, 7);
255
329
  const nowShort = params.headSha.slice(0, 7);
256
330
  fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'no_diff_change', sha: params.headSha, prev_sha: prev.sha });
@@ -281,11 +355,20 @@ export async function runWatch(opts = {}) {
281
355
  onPhaseChange: (label, data) => board.updatePR(key, { label, ...data }),
282
356
  crosscheckShas,
283
357
  smartSwitchFallback: (ss.active && ss.fallbackVendor) ? ss.fallbackVendor : undefined,
358
+ onVendorLimit: (failedVendor, fallbackVendor, reason) => {
359
+ if (config.mode === 'cross-vendor' && fallbackVendor !== null && !getSmartSwitch().active) {
360
+ triggerSwitch(failedVendor, reason, bLog);
361
+ }
362
+ },
363
+ ...(resolvedSteps !== undefined && { steps: resolvedSteps }),
364
+ ...(detectedReviewComment !== undefined && { initialReviewComment: detectedReviewComment }),
284
365
  isRecheckRun,
285
366
  round,
367
+ trigger: params.action === 'backtrace' ? 'backtrace' : params.action === 'comment' ? 'comment' : 'watch',
286
368
  });
287
369
  void verdict;
288
370
  reviewedPRKeys.add(prKey);
371
+ reviewedPRShaKeys.add(key); // key = "owner/repo#pr@sha"
289
372
  prRoundCounts.set(prKey, round);
290
373
  // Recompute the diff hash AFTER runWorkflow — workflow steps such as
291
374
  // `conflict-resolve` or `fix` followed by `recheck` can mutate the checkout,
@@ -368,7 +451,100 @@ export async function runWatch(opts = {}) {
368
451
  headSha: pr.head.sha, headRef: pr.head.ref, headRepo: pr.head.repo?.full_name ?? null,
369
452
  baseRef: pr.base.ref, action: event.action,
370
453
  });
371
- }, (msg) => bLog(chalk.dim(fmtTime()) + ' ' + msg), fileLog);
454
+ }, (msg) => bLog(chalk.dim(fmtTime()) + ' ' + msg), fileLog, async (event) => {
455
+ const owner = event.repository.owner.login;
456
+ const repoName = event.repository.name;
457
+ const prNumber = event.issue.number;
458
+ // Human feedback in regular PR comments is always valued and never reaches
459
+ // this handler (webhook.ts only forwards comments that contain the hidden
460
+ // <!-- crosscheck: ... type=review --> automation marker). The concern is
461
+ // specifically annotation injection: someone deliberately embedding that
462
+ // marker to drive automated fix work. Guard against it by verifying the
463
+ // comment was posted by the account that owns the crosscheck token — the
464
+ // only entity that legitimately writes these automation markers.
465
+ // Fail closed: if we couldn't determine the token owner at startup, disable
466
+ // the bridge entirely rather than allowing any commenter to trigger fixes.
467
+ if (authenticatedLogin === null) {
468
+ fileLog({ level: 'warn', event: 'comment_trigger_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'authenticated_login_unavailable' });
469
+ return;
470
+ }
471
+ if (event.comment.user.login !== authenticatedLogin) {
472
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'annotation_injection_blocked', author: event.comment.user.login });
473
+ return;
474
+ }
475
+ // P2: the annotation embeds the SHA the review was written for. If the PR
476
+ // head is already past that SHA, the fix would apply to an unreviewed diff —
477
+ // let the synchronize event from the new commit handle it instead.
478
+ const commentAnnotation = parseAnnotation(event.comment.body);
479
+ const annotationSha = commentAnnotation?.sha; // may be short (7 chars)
480
+ const shaMatches = (a, b) => a.startsWith(b) || b.startsWith(a);
481
+ try {
482
+ const octokit = createGithubClient(token);
483
+ const initial = await octokit.rest.pulls.get({ owner, repo: repoName, pull_number: prNumber });
484
+ let prData = initial.data;
485
+ // merged_at is absent from the issue_comment webhook payload so we check
486
+ // PR state authoritatively here — skip closed or already-merged PRs.
487
+ if (prData.state !== 'open' || prData.merged) {
488
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'pr_not_open', state: prData.state });
489
+ return;
490
+ }
491
+ if (annotationSha && !shaMatches(prData.head.sha, annotationSha)) {
492
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'comment_stale_sha', sha: prData.head.sha, annotation_sha: annotationSha });
493
+ return;
494
+ }
495
+ if (reviewedPRShaKeys.has(`${owner}/${repoName}#${prNumber}@${prData.head.sha}`)) {
496
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'comment_self_trigger', sha: prData.head.sha });
497
+ return;
498
+ }
499
+ // GitHub can deliver issue_comment before ck run's finally block releases
500
+ // the remote lock. Retry with backoff; re-fetch the PR head on each attempt
501
+ // so we don't dispatch against a sha that advanced while we were waiting.
502
+ const RETRY_DELAYS_MS = [3_000, 10_000, 30_000];
503
+ for (let attempt = 0; attempt <= RETRY_DELAYS_MS.length; attempt++) {
504
+ if (attempt > 0) {
505
+ await new Promise(r => setTimeout(r, RETRY_DELAYS_MS[attempt - 1]));
506
+ try {
507
+ const { data: fresh } = await octokit.rest.pulls.get({ owner, repo: repoName, pull_number: prNumber });
508
+ prData = fresh;
509
+ }
510
+ catch { /* best-effort — proceed with previous data */ }
511
+ // PR may have been closed or merged during the backoff window
512
+ if (prData.state !== 'open' || prData.merged) {
513
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'pr_not_open', state: prData.state });
514
+ break;
515
+ }
516
+ // PR advanced past the reviewed SHA during the wait — let synchronize handle it
517
+ if (annotationSha && !shaMatches(prData.head.sha, annotationSha)) {
518
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'comment_stale_sha', sha: prData.head.sha });
519
+ break;
520
+ }
521
+ }
522
+ if (reviewedPRShaKeys.has(`${owner}/${repoName}#${prNumber}@${prData.head.sha}`)) {
523
+ fileLog({ level: 'info', event: 'pr_skipped', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'comment_self_trigger', sha: prData.head.sha });
524
+ break;
525
+ }
526
+ if (await checkRemoteLock(octokit, owner, repoName, prData.head.sha).catch(() => false)) {
527
+ fileLog({ level: 'info', event: 'comment_trigger_deferred', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'in_progress_remote', attempt });
528
+ continue;
529
+ }
530
+ await reviewPR({
531
+ owner, repoName, prNumber,
532
+ title: prData.title,
533
+ body: prData.body ?? '',
534
+ author: prData.user?.login ?? '',
535
+ headSha: prData.head.sha,
536
+ headRef: prData.head.ref,
537
+ headRepo: prData.head.repo?.full_name ?? null,
538
+ baseRef: prData.base.ref,
539
+ action: 'comment',
540
+ });
541
+ break;
542
+ }
543
+ }
544
+ catch (err) {
545
+ logError({ repo: `${owner}/${repoName}`, pr: prNumber, phase: 'comment_trigger' }, err);
546
+ }
547
+ });
372
548
  await new Promise((resolve, reject) => {
373
549
  server.on('error', (err) => {
374
550
  if (err.code === 'EADDRINUSE') {
@@ -556,6 +732,10 @@ export async function runWatch(opts = {}) {
556
732
  console.log();
557
733
  console.log(` ${chalk.yellow('⚠')} ${chalk.yellow('No author filter set — all PRs in monitored orgs/repos will be reviewed.')}`);
558
734
  console.log(` ${chalk.dim('Run')} ${chalk.cyan('crosscheck watch --reconfigure')} ${chalk.dim('to set up a deployment mode.')}`);
735
+ // Without an author filter on a public (or broadly accessible) repo, any commenter
736
+ // can post the hidden automation marker and attempt to trigger automated fix work.
737
+ console.log(` ${chalk.yellow('⚠')} ${chalk.yellow('Annotation injection risk: any commenter can post a hidden crosscheck annotation')}`);
738
+ console.log(` ${chalk.yellow('to trigger the automated fix bridge. Restrict via')} ${chalk.cyan('routing.allowed_authors')} ${chalk.yellow('or keep repos private.')}`);
559
739
  }
560
740
  // Warn when author_routes will be silently bypassed (cross-vendor + both vendors enabled)
561
741
  // so users understand why their configured mapping isn't applying.
@@ -634,12 +814,16 @@ export async function runWatch(opts = {}) {
634
814
  existing = await findOrgWebhook(scope.org, channelUrl, token);
635
815
  if (!existing)
636
816
  await registerOrgWebhook(scope.org, channelUrl, webhookSecret, token);
817
+ else
818
+ await patchOrgWebhookEvents(scope.org, existing, WEBHOOK_EVENTS, token).catch(() => { });
637
819
  succeededOrgs.add(scope.org);
638
820
  }
639
821
  else {
640
822
  existing = await findRepoWebhook(scope.owner, scope.repo, channelUrl, token);
641
823
  if (!existing)
642
824
  await registerRepoWebhook(scope.owner, scope.repo, channelUrl, webhookSecret, token);
825
+ else
826
+ await patchRepoWebhookEvents(scope.owner, scope.repo, existing, WEBHOOK_EVENTS, token).catch(() => { });
643
827
  }
644
828
  smeeOk++;
645
829
  fileLog({ level: 'info', event: existing ? 'webhook_active' : 'webhook_registered', scope: label, url: channelUrl });
@@ -658,6 +842,8 @@ export async function runWatch(opts = {}) {
658
842
  const existing = await findRepoWebhook(owner, repo, channelUrl, token);
659
843
  if (!existing)
660
844
  await registerRepoWebhook(owner, repo, channelUrl, webhookSecret, token);
845
+ else
846
+ await patchRepoWebhookEvents(owner, repo, existing, WEBHOOK_EVENTS, token).catch(() => { });
661
847
  smeeOk++;
662
848
  fileLog({ level: 'info', event: existing ? 'webhook_active' : 'webhook_registered', scope: repoLabel, url: channelUrl, fallback_for_org: fallbackOrg });
663
849
  }
@@ -792,6 +978,14 @@ export async function runWatch(opts = {}) {
792
978
  : { type: 'repo', owner: scope.owner, repo: scope.repo, hookId: existingId });
793
979
  hookOk++;
794
980
  fileLog({ level: 'info', event: 'webhook_active', scope: label, url: webhookUrl });
981
+ // Ensure the hook delivers issue_comment (may be missing on hooks created
982
+ // before this feature was added). Best-effort — a patch failure is non-fatal.
983
+ if ('org' in scope) {
984
+ patchOrgWebhookEvents(scope.org, existingId, WEBHOOK_EVENTS, token).catch(() => { });
985
+ }
986
+ else {
987
+ patchRepoWebhookEvents(scope.owner, scope.repo, existingId, WEBHOOK_EVENTS, token).catch(() => { });
988
+ }
795
989
  return;
796
990
  }
797
991
  // Register with exponential back-off: delay 2s then 4s before giving up