@humanbased/crosscheck 1.2.0 → 1.3.0-beta.82

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 (331) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +182 -375
  3. package/README.zh.md +1 -1
  4. package/assets/icon-256.png +0 -0
  5. package/assets/linear-comment.svg +18 -0
  6. package/assets/linear-onboard.svg +30 -0
  7. package/assets/linear-status.svg +23 -0
  8. package/assets/linear-test.svg +34 -0
  9. package/assets/skills/code-review/.crosscheck-skill.json +9 -0
  10. package/assets/skills/code-review/LICENSE +21 -0
  11. package/assets/skills/code-review/SKILL.md +89 -0
  12. package/assets/skills/code-review/agents/openai.yaml +3 -0
  13. package/assets/skills/code-review-skill/.crosscheck-skill.json +9 -0
  14. package/assets/skills/code-review-skill/LICENSE +21 -0
  15. package/assets/skills/code-review-skill/SKILL.md +231 -0
  16. package/assets/skills/code-review-skill/assets/pr-review-template.md +137 -0
  17. package/assets/skills/code-review-skill/assets/review-checklist.md +123 -0
  18. package/assets/skills/code-review-skill/reference/angular.md +768 -0
  19. package/assets/skills/code-review-skill/reference/architecture-review-guide.md +472 -0
  20. package/assets/skills/code-review-skill/reference/c.md +890 -0
  21. package/assets/skills/code-review-skill/reference/code-quality-universal.md +488 -0
  22. package/assets/skills/code-review-skill/reference/code-review-best-practices.md +136 -0
  23. package/assets/skills/code-review-skill/reference/common-bugs-checklist.md +286 -0
  24. package/assets/skills/code-review-skill/reference/cpp.md +893 -0
  25. package/assets/skills/code-review-skill/reference/cross-cutting/async-concurrency-patterns.md +515 -0
  26. package/assets/skills/code-review-skill/reference/cross-cutting/error-handling-principles.md +492 -0
  27. package/assets/skills/code-review-skill/reference/cross-cutting/n-plus-one-queries.md +309 -0
  28. package/assets/skills/code-review-skill/reference/cross-cutting/sql-injection-prevention.md +308 -0
  29. package/assets/skills/code-review-skill/reference/cross-cutting/xss-prevention.md +264 -0
  30. package/assets/skills/code-review-skill/reference/csharp.md +525 -0
  31. package/assets/skills/code-review-skill/reference/css-less-sass.md +661 -0
  32. package/assets/skills/code-review-skill/reference/django.md +985 -0
  33. package/assets/skills/code-review-skill/reference/fastapi.md +580 -0
  34. package/assets/skills/code-review-skill/reference/go.md +993 -0
  35. package/assets/skills/code-review-skill/reference/java.md +409 -0
  36. package/assets/skills/code-review-skill/reference/java8.md +586 -0
  37. package/assets/skills/code-review-skill/reference/kotlin.md +1018 -0
  38. package/assets/skills/code-review-skill/reference/nestjs.md +593 -0
  39. package/assets/skills/code-review-skill/reference/performance-review-guide.md +816 -0
  40. package/assets/skills/code-review-skill/reference/php.md +684 -0
  41. package/assets/skills/code-review-skill/reference/python.md +1073 -0
  42. package/assets/skills/code-review-skill/reference/qt.md +757 -0
  43. package/assets/skills/code-review-skill/reference/react.md +871 -0
  44. package/assets/skills/code-review-skill/reference/ruby.md +964 -0
  45. package/assets/skills/code-review-skill/reference/rust.md +846 -0
  46. package/assets/skills/code-review-skill/reference/security-review-guide.md +494 -0
  47. package/assets/skills/code-review-skill/reference/svelte.md +1064 -0
  48. package/assets/skills/code-review-skill/reference/swift.md +936 -0
  49. package/assets/skills/code-review-skill/reference/typescript.md +1016 -0
  50. package/assets/skills/code-review-skill/reference/vue.md +924 -0
  51. package/assets/skills/code-review-skill/reference/zig.md +440 -0
  52. package/assets/skills/code-review-skill/scripts/pr-analyzer.py +435 -0
  53. package/assets/skills/code-review-skill/scripts/test_pr_analyzer.py +380 -0
  54. package/assets/skills/codebase-design/.crosscheck-skill.json +9 -0
  55. package/assets/skills/codebase-design/DEEPENING.md +37 -0
  56. package/assets/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  57. package/assets/skills/codebase-design/LICENSE +21 -0
  58. package/assets/skills/codebase-design/SKILL.md +114 -0
  59. package/assets/skills/codebase-design/agents/openai.yaml +3 -0
  60. package/assets/skills/diagnosing-bugs/.crosscheck-skill.json +9 -0
  61. package/assets/skills/diagnosing-bugs/LICENSE +21 -0
  62. package/assets/skills/diagnosing-bugs/SKILL.md +134 -0
  63. package/assets/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  64. package/assets/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  65. package/crosscheck.config.example.yml +101 -9
  66. package/dist/__tests__/board.test.js +11 -0
  67. package/dist/__tests__/board.test.js.map +1 -1
  68. package/dist/__tests__/can-write-verdict.test.d.ts +2 -0
  69. package/dist/__tests__/can-write-verdict.test.d.ts.map +1 -0
  70. package/dist/__tests__/can-write-verdict.test.js +31 -0
  71. package/dist/__tests__/can-write-verdict.test.js.map +1 -0
  72. package/dist/__tests__/codex.test.js +14 -27
  73. package/dist/__tests__/codex.test.js.map +1 -1
  74. package/dist/__tests__/comment-bodies.test.js +49 -1
  75. package/dist/__tests__/comment-bodies.test.js.map +1 -1
  76. package/dist/__tests__/conflict-resolve.test.js +44 -1
  77. package/dist/__tests__/conflict-resolve.test.js.map +1 -1
  78. package/dist/__tests__/fix.test.js +33 -0
  79. package/dist/__tests__/fix.test.js.map +1 -1
  80. package/dist/__tests__/linear-branding.test.d.ts +2 -0
  81. package/dist/__tests__/linear-branding.test.d.ts.map +1 -0
  82. package/dist/__tests__/linear-branding.test.js +156 -0
  83. package/dist/__tests__/linear-branding.test.js.map +1 -0
  84. package/dist/__tests__/linear-client.test.d.ts +2 -0
  85. package/dist/__tests__/linear-client.test.d.ts.map +1 -0
  86. package/dist/__tests__/linear-client.test.js +120 -0
  87. package/dist/__tests__/linear-client.test.js.map +1 -0
  88. package/dist/__tests__/linear-comment.test.d.ts +2 -0
  89. package/dist/__tests__/linear-comment.test.d.ts.map +1 -0
  90. package/dist/__tests__/linear-comment.test.js +151 -0
  91. package/dist/__tests__/linear-comment.test.js.map +1 -0
  92. package/dist/__tests__/linear-identity.test.d.ts +2 -0
  93. package/dist/__tests__/linear-identity.test.d.ts.map +1 -0
  94. package/dist/__tests__/linear-identity.test.js +253 -0
  95. package/dist/__tests__/linear-identity.test.js.map +1 -0
  96. package/dist/__tests__/linear-notify.test.d.ts +2 -0
  97. package/dist/__tests__/linear-notify.test.d.ts.map +1 -0
  98. package/dist/__tests__/linear-notify.test.js +144 -0
  99. package/dist/__tests__/linear-notify.test.js.map +1 -0
  100. package/dist/__tests__/linear-ref.test.d.ts +2 -0
  101. package/dist/__tests__/linear-ref.test.d.ts.map +1 -0
  102. package/dist/__tests__/linear-ref.test.js +261 -0
  103. package/dist/__tests__/linear-ref.test.js.map +1 -0
  104. package/dist/__tests__/linear-test-ref.test.d.ts +2 -0
  105. package/dist/__tests__/linear-test-ref.test.d.ts.map +1 -0
  106. package/dist/__tests__/linear-test-ref.test.js +81 -0
  107. package/dist/__tests__/linear-test-ref.test.js.map +1 -0
  108. package/dist/__tests__/linear-verify.test.d.ts +2 -0
  109. package/dist/__tests__/linear-verify.test.d.ts.map +1 -0
  110. package/dist/__tests__/linear-verify.test.js +132 -0
  111. package/dist/__tests__/linear-verify.test.js.map +1 -0
  112. package/dist/__tests__/linear-worker.test.d.ts +2 -0
  113. package/dist/__tests__/linear-worker.test.d.ts.map +1 -0
  114. package/dist/__tests__/linear-worker.test.js +83 -0
  115. package/dist/__tests__/linear-worker.test.js.map +1 -0
  116. package/dist/__tests__/linear-write-possible.test.d.ts +2 -0
  117. package/dist/__tests__/linear-write-possible.test.d.ts.map +1 -0
  118. package/dist/__tests__/linear-write-possible.test.js +30 -0
  119. package/dist/__tests__/linear-write-possible.test.js.map +1 -0
  120. package/dist/__tests__/onboard-preservation.test.js +59 -3
  121. package/dist/__tests__/onboard-preservation.test.js.map +1 -1
  122. package/dist/__tests__/optimize.test.js +2 -0
  123. package/dist/__tests__/optimize.test.js.map +1 -1
  124. package/dist/__tests__/pr-status.test.js +163 -2
  125. package/dist/__tests__/pr-status.test.js.map +1 -1
  126. package/dist/__tests__/pr-workflow-state.test.js +102 -1
  127. package/dist/__tests__/pr-workflow-state.test.js.map +1 -1
  128. package/dist/__tests__/repo-picker.test.js +7 -1
  129. package/dist/__tests__/repo-picker.test.js.map +1 -1
  130. package/dist/__tests__/repository-guidance.test.d.ts +2 -0
  131. package/dist/__tests__/repository-guidance.test.d.ts.map +1 -0
  132. package/dist/__tests__/repository-guidance.test.js +107 -0
  133. package/dist/__tests__/repository-guidance.test.js.map +1 -0
  134. package/dist/__tests__/review-comment-body.test.js +35 -0
  135. package/dist/__tests__/review-comment-body.test.js.map +1 -1
  136. package/dist/__tests__/review-models.test.js +19 -3
  137. package/dist/__tests__/review-models.test.js.map +1 -1
  138. package/dist/__tests__/review-strategy.test.d.ts +2 -0
  139. package/dist/__tests__/review-strategy.test.d.ts.map +1 -0
  140. package/dist/__tests__/review-strategy.test.js +397 -0
  141. package/dist/__tests__/review-strategy.test.js.map +1 -0
  142. package/dist/__tests__/runner.test.js +29 -1
  143. package/dist/__tests__/runner.test.js.map +1 -1
  144. package/dist/__tests__/skill-attribution.test.d.ts +2 -0
  145. package/dist/__tests__/skill-attribution.test.d.ts.map +1 -0
  146. package/dist/__tests__/skill-attribution.test.js +53 -0
  147. package/dist/__tests__/skill-attribution.test.js.map +1 -0
  148. package/dist/__tests__/skill-broker.test.d.ts +2 -0
  149. package/dist/__tests__/skill-broker.test.d.ts.map +1 -0
  150. package/dist/__tests__/skill-broker.test.js +144 -0
  151. package/dist/__tests__/skill-broker.test.js.map +1 -0
  152. package/dist/__tests__/skill-catalog.test.d.ts +2 -0
  153. package/dist/__tests__/skill-catalog.test.d.ts.map +1 -0
  154. package/dist/__tests__/skill-catalog.test.js +40 -0
  155. package/dist/__tests__/skill-catalog.test.js.map +1 -0
  156. package/dist/__tests__/skill-installer.test.d.ts +2 -0
  157. package/dist/__tests__/skill-installer.test.d.ts.map +1 -0
  158. package/dist/__tests__/skill-installer.test.js +96 -0
  159. package/dist/__tests__/skill-installer.test.js.map +1 -0
  160. package/dist/__tests__/skills-config.test.d.ts +2 -0
  161. package/dist/__tests__/skills-config.test.d.ts.map +1 -0
  162. package/dist/__tests__/skills-config.test.js +12 -0
  163. package/dist/__tests__/skills-config.test.js.map +1 -0
  164. package/dist/cli.js +29 -0
  165. package/dist/cli.js.map +1 -1
  166. package/dist/commands/detect-step.d.ts.map +1 -1
  167. package/dist/commands/detect-step.js +4 -0
  168. package/dist/commands/detect-step.js.map +1 -1
  169. package/dist/commands/kickass.d.ts.map +1 -1
  170. package/dist/commands/kickass.js +3 -2
  171. package/dist/commands/kickass.js.map +1 -1
  172. package/dist/commands/linear-test.d.ts +18 -0
  173. package/dist/commands/linear-test.d.ts.map +1 -0
  174. package/dist/commands/linear-test.js +130 -0
  175. package/dist/commands/linear-test.js.map +1 -0
  176. package/dist/commands/onboard.d.ts +36 -3
  177. package/dist/commands/onboard.d.ts.map +1 -1
  178. package/dist/commands/onboard.js +233 -42
  179. package/dist/commands/onboard.js.map +1 -1
  180. package/dist/commands/review.d.ts.map +1 -1
  181. package/dist/commands/review.js +65 -6
  182. package/dist/commands/review.js.map +1 -1
  183. package/dist/commands/run.d.ts.map +1 -1
  184. package/dist/commands/run.js +51 -7
  185. package/dist/commands/run.js.map +1 -1
  186. package/dist/commands/skill.d.ts +2 -0
  187. package/dist/commands/skill.d.ts.map +1 -0
  188. package/dist/commands/skill.js +16 -0
  189. package/dist/commands/skill.js.map +1 -0
  190. package/dist/commands/status.d.ts.map +1 -1
  191. package/dist/commands/status.js +53 -1
  192. package/dist/commands/status.js.map +1 -1
  193. package/dist/commands/watch.d.ts.map +1 -1
  194. package/dist/commands/watch.js +169 -64
  195. package/dist/commands/watch.js.map +1 -1
  196. package/dist/config/loader.d.ts +3 -1
  197. package/dist/config/loader.d.ts.map +1 -1
  198. package/dist/config/loader.js +13 -0
  199. package/dist/config/loader.js.map +1 -1
  200. package/dist/config/review-model-tiers.json +3 -3
  201. package/dist/config/review-strategy.json +204 -0
  202. package/dist/config/schema.d.ts +261 -15
  203. package/dist/config/schema.d.ts.map +1 -1
  204. package/dist/config/schema.js +90 -8
  205. package/dist/config/schema.js.map +1 -1
  206. package/dist/github/client.d.ts +21 -1
  207. package/dist/github/client.d.ts.map +1 -1
  208. package/dist/github/client.js +46 -7
  209. package/dist/github/client.js.map +1 -1
  210. package/dist/github/webhook.d.ts +4 -0
  211. package/dist/github/webhook.d.ts.map +1 -1
  212. package/dist/github/webhook.js.map +1 -1
  213. package/dist/issues/ticket-ref.d.ts.map +1 -1
  214. package/dist/issues/ticket-ref.js +6 -5
  215. package/dist/issues/ticket-ref.js.map +1 -1
  216. package/dist/lib/annotation.d.ts +7 -0
  217. package/dist/lib/annotation.d.ts.map +1 -1
  218. package/dist/lib/annotation.js +11 -1
  219. package/dist/lib/annotation.js.map +1 -1
  220. package/dist/lib/board.d.ts +3 -0
  221. package/dist/lib/board.d.ts.map +1 -1
  222. package/dist/lib/board.js +4 -2
  223. package/dist/lib/board.js.map +1 -1
  224. package/dist/lib/clone.d.ts +1 -0
  225. package/dist/lib/clone.d.ts.map +1 -1
  226. package/dist/lib/clone.js +32 -10
  227. package/dist/lib/clone.js.map +1 -1
  228. package/dist/lib/comment-bodies.d.ts +37 -0
  229. package/dist/lib/comment-bodies.d.ts.map +1 -1
  230. package/dist/lib/comment-bodies.js +47 -9
  231. package/dist/lib/comment-bodies.js.map +1 -1
  232. package/dist/lib/pr-status.d.ts.map +1 -1
  233. package/dist/lib/pr-status.js +36 -2
  234. package/dist/lib/pr-status.js.map +1 -1
  235. package/dist/lib/pr-workflow-state.d.ts +5 -0
  236. package/dist/lib/pr-workflow-state.d.ts.map +1 -1
  237. package/dist/lib/pr-workflow-state.js +36 -1
  238. package/dist/lib/pr-workflow-state.js.map +1 -1
  239. package/dist/lib/repo-picker.d.ts +3 -0
  240. package/dist/lib/repo-picker.d.ts.map +1 -1
  241. package/dist/lib/repo-picker.js +45 -9
  242. package/dist/lib/repo-picker.js.map +1 -1
  243. package/dist/lib/repository-guidance.d.ts +2 -0
  244. package/dist/lib/repository-guidance.d.ts.map +1 -0
  245. package/dist/lib/repository-guidance.js +55 -0
  246. package/dist/lib/repository-guidance.js.map +1 -0
  247. package/dist/lib/review-models.d.ts +15 -2
  248. package/dist/lib/review-models.d.ts.map +1 -1
  249. package/dist/lib/review-models.js +26 -6
  250. package/dist/lib/review-models.js.map +1 -1
  251. package/dist/lib/review-strategy.d.ts +92 -0
  252. package/dist/lib/review-strategy.d.ts.map +1 -0
  253. package/dist/lib/review-strategy.js +282 -0
  254. package/dist/lib/review-strategy.js.map +1 -0
  255. package/dist/lib/runner.d.ts +92 -0
  256. package/dist/lib/runner.d.ts.map +1 -1
  257. package/dist/lib/runner.js +470 -54
  258. package/dist/lib/runner.js.map +1 -1
  259. package/dist/lib/workflow.d.ts +9 -0
  260. package/dist/lib/workflow.d.ts.map +1 -1
  261. package/dist/lib/workflow.js +20 -0
  262. package/dist/lib/workflow.js.map +1 -1
  263. package/dist/linear/client.d.ts +18 -0
  264. package/dist/linear/client.d.ts.map +1 -0
  265. package/dist/linear/client.js +67 -0
  266. package/dist/linear/client.js.map +1 -0
  267. package/dist/linear/comment.d.ts +20 -0
  268. package/dist/linear/comment.d.ts.map +1 -0
  269. package/dist/linear/comment.js +57 -0
  270. package/dist/linear/comment.js.map +1 -0
  271. package/dist/linear/identity.d.ts +59 -0
  272. package/dist/linear/identity.d.ts.map +1 -0
  273. package/dist/linear/identity.js +187 -0
  274. package/dist/linear/identity.js.map +1 -0
  275. package/dist/linear/notify.d.ts +35 -0
  276. package/dist/linear/notify.d.ts.map +1 -0
  277. package/dist/linear/notify.js +76 -0
  278. package/dist/linear/notify.js.map +1 -0
  279. package/dist/linear/ref.d.ts +13 -0
  280. package/dist/linear/ref.d.ts.map +1 -0
  281. package/dist/linear/ref.js +90 -0
  282. package/dist/linear/ref.js.map +1 -0
  283. package/dist/linear/verify.d.ts +26 -0
  284. package/dist/linear/verify.d.ts.map +1 -0
  285. package/dist/linear/verify.js +67 -0
  286. package/dist/linear/verify.js.map +1 -0
  287. package/dist/reviewers/claude.d.ts +4 -1
  288. package/dist/reviewers/claude.d.ts.map +1 -1
  289. package/dist/reviewers/claude.js +39 -7
  290. package/dist/reviewers/claude.js.map +1 -1
  291. package/dist/reviewers/codex.d.ts +3 -1
  292. package/dist/reviewers/codex.d.ts.map +1 -1
  293. package/dist/reviewers/codex.js +76 -70
  294. package/dist/reviewers/codex.js.map +1 -1
  295. package/dist/reviewers/conflict-resolve.d.ts +3 -1
  296. package/dist/reviewers/conflict-resolve.d.ts.map +1 -1
  297. package/dist/reviewers/conflict-resolve.js +21 -6
  298. package/dist/reviewers/conflict-resolve.js.map +1 -1
  299. package/dist/reviewers/fix.d.ts +5 -2
  300. package/dist/reviewers/fix.d.ts.map +1 -1
  301. package/dist/reviewers/fix.js +26 -10
  302. package/dist/reviewers/fix.js.map +1 -1
  303. package/dist/skills/attribution.d.ts +4 -0
  304. package/dist/skills/attribution.d.ts.map +1 -0
  305. package/dist/skills/attribution.js +14 -0
  306. package/dist/skills/attribution.js.map +1 -0
  307. package/dist/skills/broker-server.d.ts +2 -0
  308. package/dist/skills/broker-server.d.ts.map +1 -0
  309. package/dist/skills/broker-server.js +17 -0
  310. package/dist/skills/broker-server.js.map +1 -0
  311. package/dist/skills/broker.d.ts +42 -0
  312. package/dist/skills/broker.d.ts.map +1 -0
  313. package/dist/skills/broker.js +285 -0
  314. package/dist/skills/broker.js.map +1 -0
  315. package/dist/skills/catalog.d.ts +28 -0
  316. package/dist/skills/catalog.d.ts.map +1 -0
  317. package/dist/skills/catalog.js +104 -0
  318. package/dist/skills/catalog.js.map +1 -0
  319. package/dist/skills/installer.d.ts +10 -0
  320. package/dist/skills/installer.d.ts.map +1 -0
  321. package/dist/skills/installer.js +138 -0
  322. package/dist/skills/installer.js.map +1 -0
  323. package/dist/skills/integrity.d.ts +4 -0
  324. package/dist/skills/integrity.d.ts.map +1 -0
  325. package/dist/skills/integrity.js +36 -0
  326. package/dist/skills/integrity.js.map +1 -0
  327. package/docs/dynamic-thoroughness.md +738 -0
  328. package/docs/linear-identity-contract.md +139 -0
  329. package/docs/linear-identity.md +293 -0
  330. package/get-started.md +223 -11
  331. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"repo-picker.js","sourceRoot":"","sources":["../../src/lib/repo-picker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-picker.js","sourceRoot":"","sources":["../../src/lib/repo-picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function loadRepositoryReviewGuidance(repoDir: string, baseBranch: string): string;
2
+ //# sourceMappingURL=repository-guidance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-guidance.d.ts","sourceRoot":"","sources":["../../src/lib/repository-guidance.ts"],"names":[],"mappings":"AAcA,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA0CxF"}
@@ -0,0 +1,55 @@
1
+ import { execFileSync } from 'child_process';
2
+ import { dirname } from 'path';
3
+ const GUIDANCE_FILES = new Set(['AGENTS.md', 'CLAUDE.md']);
4
+ function git(repoDir, args) {
5
+ return execFileSync('git', args, {
6
+ cwd: repoDir,
7
+ encoding: 'utf8',
8
+ stdio: ['ignore', 'pipe', 'pipe'],
9
+ maxBuffer: 2 * 1024 * 1024,
10
+ }).trim();
11
+ }
12
+ export function loadRepositoryReviewGuidance(repoDir, baseBranch) {
13
+ const baseRef = `origin/${baseBranch}`;
14
+ try {
15
+ const changedPaths = git(repoDir, ['diff', '--name-only', '--diff-filter=ACDMRT', `${baseRef}...HEAD`, '--'])
16
+ .split('\n').filter(Boolean);
17
+ if (changedPaths.length === 0)
18
+ return '';
19
+ const scopes = new Set(['.']);
20
+ for (const changedPath of changedPaths) {
21
+ let scope = dirname(changedPath);
22
+ while (scope !== '.') {
23
+ scopes.add(scope);
24
+ scope = dirname(scope);
25
+ }
26
+ }
27
+ const candidates = [...scopes].flatMap(scope => [...GUIDANCE_FILES].map(file => scope === '.' ? file : `${scope}/${file}`));
28
+ const checks = execFileSync('git', ['cat-file', '--batch-check'], {
29
+ cwd: repoDir,
30
+ encoding: 'utf8',
31
+ input: candidates.map(path => `${baseRef}:${path}\n`).join(''),
32
+ stdio: ['pipe', 'pipe', 'pipe'],
33
+ maxBuffer: 2 * 1024 * 1024,
34
+ }).trim().split('\n');
35
+ const guidancePaths = candidates
36
+ .filter((_, index) => checks[index]?.includes(' blob '))
37
+ .sort((a, b) => a.split('/').length - b.split('/').length || a.localeCompare(b));
38
+ if (guidancePaths.length === 0)
39
+ return '';
40
+ const sections = guidancePaths.map(path => {
41
+ const scope = dirname(path);
42
+ const content = git(repoDir, ['show', `${baseRef}:${path}`]);
43
+ return `### ${path} (scope: ${scope === '.' ? 'repository root' : `${scope}/`})\n${content}`;
44
+ });
45
+ return [
46
+ '## Repository-defined review practices (trusted base branch)',
47
+ 'These repository practices override conflicting advice from Crosscheck-provided skills. Apply each file only within its stated scope. More specific directory guidance overrides broader guidance. At the same scope, reconcile AGENTS.md and CLAUDE.md; if they conflict, report the ambiguity instead of inventing a rule.',
48
+ ...sections,
49
+ ].join('\n\n');
50
+ }
51
+ catch {
52
+ return '';
53
+ }
54
+ }
55
+ //# sourceMappingURL=repository-guidance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-guidance.js","sourceRoot":"","sources":["../../src/lib/repository-guidance.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,21 @@
1
1
  import type { CodexVendorConfig, QualityConfig, VendorConfig } from '../config/schema.js';
2
2
  export declare const CLAUDE_TIER_MODELS: Record<QualityConfig['tier'], string>;
3
3
  export declare const CODEX_TIER_MODELS_API: Record<QualityConfig['tier'], string>;
4
- export declare function resolveClaudeModel(quality: QualityConfig, vendor?: VendorConfig): string;
5
- export declare function resolveCodexModel(quality: QualityConfig, vendor: CodexVendorConfig): string;
4
+ /**
5
+ * The tier in force for one call. Under `quality.mode: 'smart'` the per-PR
6
+ * strategy wins; otherwise the single configured tier applies. Falls back to the
7
+ * configured tier whenever no strategy resolved — one-shot commands, or a PR
8
+ * whose file list could not be read.
9
+ */
10
+ export declare function effectiveTier(quality: QualityConfig, strategy?: {
11
+ tier: QualityConfig['tier'] | null;
12
+ } | null): QualityConfig['tier'];
13
+ export declare function resolveClaudeModel(quality: QualityConfig, vendor?: VendorConfig, strategy?: {
14
+ tier: QualityConfig['tier'] | null;
15
+ } | null): string;
16
+ export declare function resolveCodexModel(quality: QualityConfig, vendor: CodexVendorConfig, strategy?: {
17
+ tier: QualityConfig['tier'] | null;
18
+ } | null): string;
6
19
  export declare function modelDisplayName(model: string): string | null;
7
20
  export declare function primaryModelFromUsage(modelUsage: unknown): string | null;
8
21
  //# sourceMappingURL=review-models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review-models.d.ts","sourceRoot":"","sources":["../../src/lib/review-models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAkBzF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAgC,CAAA;AACrG,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAmC,CAAA;AAE3G,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAMxF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAG3F;AAcD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D;AAQD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgBxE"}
1
+ {"version":3,"file":"review-models.d.ts","sourceRoot":"","sources":["../../src/lib/review-models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAkBzF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAgC,CAAA;AACrG,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAmC,CAAA;AAE3G;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,aAAa,CAAC,MAAM,CAAC,CAGvB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,MAAM,CAMR;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,EACzB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvD,MAAM,CAWR;AAcD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D;AAQD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgBxE"}
@@ -14,18 +14,38 @@ const rawReviewModelTierConfig = require('../config/review-model-tiers.json');
14
14
  const reviewModelTierConfig = ReviewModelTierConfigSchema.parse(rawReviewModelTierConfig);
15
15
  export const CLAUDE_TIER_MODELS = reviewModelTierConfig.claude;
16
16
  export const CODEX_TIER_MODELS_API = reviewModelTierConfig.codex_api;
17
- export function resolveClaudeModel(quality, vendor) {
17
+ /**
18
+ * The tier in force for one call. Under `quality.mode: 'smart'` the per-PR
19
+ * strategy wins; otherwise the single configured tier applies. Falls back to the
20
+ * configured tier whenever no strategy resolved — one-shot commands, or a PR
21
+ * whose file list could not be read.
22
+ */
23
+ export function effectiveTier(quality, strategy) {
24
+ if (quality.mode === 'smart' && strategy?.tier)
25
+ return strategy.tier;
26
+ return quality.tier;
27
+ }
28
+ export function resolveClaudeModel(quality, vendor, strategy) {
18
29
  // An explicit vendors.claude.model wins over the tier mapping. The claude CLI
19
- // accepts --model under both subscription and api-key auth (unlike Codex), so
20
- // we honor it regardless of auth instead of silently dropping it.
30
+ // accepts --model under both subscription and api-key auth, so we honor it
31
+ // regardless of auth instead of silently dropping it.
21
32
  if (vendor?.model)
22
33
  return vendor.model;
23
- return CLAUDE_TIER_MODELS[quality.tier] ?? CLAUDE_TIER_MODELS.balanced;
34
+ return CLAUDE_TIER_MODELS[effectiveTier(quality, strategy)] ?? CLAUDE_TIER_MODELS.balanced;
24
35
  }
25
- export function resolveCodexModel(quality, vendor) {
36
+ export function resolveCodexModel(quality, vendor, strategy) {
37
+ const tier = effectiveTier(quality, strategy);
38
+ // An explicitly configured model wins under either auth — the codex CLI
39
+ // accepts -c model= with subscription (ChatGPT) auth too. Only the built-in
40
+ // tier mapping stays api-key-only: with nothing configured, subscription
41
+ // users keep the CLI's own default model, because the gpt-5.6-* IDs need
42
+ // codex >= 0.147.0 and would 400 on an older CLI.
43
+ const explicit = vendor.model || vendor.model_tiers?.[tier];
44
+ if (explicit)
45
+ return explicit;
26
46
  if (vendor.auth !== 'api-key')
27
47
  return 'default';
28
- return vendor.model || vendor.model_tiers?.[quality.tier] || CODEX_TIER_MODELS_API[quality.tier] || CODEX_TIER_MODELS_API.balanced;
48
+ return CODEX_TIER_MODELS_API[tier] || CODEX_TIER_MODELS_API.balanced;
29
49
  }
30
50
  // Derives a display name from the regular claude model ID shape:
31
51
  // claude-{family}-{major}[-{minor}][-YYYYMMDD]. New models then render
@@ -1 +1 @@
1
- {"version":3,"file":"review-models.js","sourceRoot":"","sources":["../../src/lib/review-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE9C,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA;AAEF,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,eAAe;IACvB,SAAS,EAAE,eAAe;CAC3B,CAAC,CAAA;AAEF,MAAM,wBAAwB,GAAY,OAAO,CAAC,mCAAmC,CAAC,CAAA;AACtF,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;AAEzF,MAAM,CAAC,MAAM,kBAAkB,GAA0C,qBAAqB,CAAC,MAAM,CAAA;AACrG,MAAM,CAAC,MAAM,qBAAqB,GAA0C,qBAAqB,CAAC,SAAS,CAAA;AAE3G,MAAM,UAAU,kBAAkB,CAAC,OAAsB,EAAE,MAAqB;IAC9E,8EAA8E;IAC9E,8EAA8E;IAC9E,kEAAkE;IAClE,IAAI,MAAM,EAAE,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAA;IACtC,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAsB,EAAE,MAAyB;IACjF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC/C,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAA;AACpI,CAAC;AAED,iEAAiE;AACjE,uEAAuE;AACvE,mEAAmE;AACnE,6EAA6E;AAC7E,+CAA+C;AAC/C,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,CAAC,GAAG,+CAA+C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACpC,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAA;AACzC,CAAC;AAED,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,2BAA2B;AAC3B,MAAM,UAAU,qBAAqB,CAAC,UAAmB;IACvD,6EAA6E;IAC7E,0CAA0C;IAC1C,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IACnG,IAAI,IAAI,GAAkB,IAAI,CAAA;IAC9B,6EAA6E;IAC7E,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;IACnB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAI,KAA2C,EAAE,YAAY,CAAA;QACtE,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAChD,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC;YACxB,UAAU,GAAG,MAAM,CAAA;YACnB,IAAI,GAAG,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"review-models.js","sourceRoot":"","sources":["../../src/lib/review-models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import type { QualityConfig } from '../config/schema.js';
2
+ export type Tier = QualityConfig['tier'];
3
+ export type Domain = 'frontend' | 'backend';
4
+ export interface PRContext {
5
+ files: string[];
6
+ additions: number;
7
+ deletions: number;
8
+ labels?: string[];
9
+ title?: string;
10
+ baseRef?: string;
11
+ defaultBranch?: string;
12
+ }
13
+ export interface ResolvedStrategy {
14
+ /** Strategy file version, stamped into every comment so a past review stays explicable. */
15
+ version: string;
16
+ classId: string;
17
+ classLabel: string;
18
+ /** Human-readable rationale, quoted verbatim in the PR comment. */
19
+ reason: string;
20
+ /** null = skip this PR entirely. */
21
+ tier: Tier | null;
22
+ effort: string | null;
23
+ steps: string[];
24
+ focus?: string;
25
+ domain: Domain;
26
+ }
27
+ /**
28
+ * Frontend vs backend, by file-extension majority. `mixed` and `unknown` both
29
+ * fall back to backend — the conservative default, because the backend
30
+ * preference list is `measured` while the frontend list is still a hypothesis.
31
+ */
32
+ export declare function detectDomain(files: string[]): Domain;
33
+ /** Classifies a PR against the strategy's ordered class list. First match wins. */
34
+ export declare function resolveReviewStrategy(pr: PRContext): ResolvedStrategy;
35
+ /** Effort levels a model accepts. Empty array = the model has no effort control. */
36
+ export declare function effortLevelsFor(model: string): string[];
37
+ export declare function isModelBanned(model: string): boolean;
38
+ export declare function strategyModelFor(vendor: string, tier: Tier): string | null;
39
+ export declare function strategyVersion(): string;
40
+ export declare function ladderLimits(): {
41
+ maxRounds: number;
42
+ maxBlocking: number;
43
+ maxWallClockMin: number;
44
+ };
45
+ /** One vendor that may review this round. */
46
+ export interface EscalationLane {
47
+ /** The model that would run for this vendor at the class tier. */
48
+ model: string;
49
+ /** The vendor CLI's effort flags. Omitted = judge on model capability alone. */
50
+ accepted?: readonly string[];
51
+ }
52
+ /**
53
+ * Escalation for round N. Raises effort where the vendor that will actually run
54
+ * can deliver a higher one; where it cannot, degrades to a tier promotion
55
+ * instead — `ladder.effort_fallback`.
56
+ *
57
+ * `lanes` are the vendors in play, not claude alone. Collapsing them produced
58
+ * two separate no-ops:
59
+ * - judging by the claude tier model on a codex-only install promoted a tier
60
+ * every round (haiku exposes no effort ladder) while codex — which accepts
61
+ * none…max — sat at the effort it started on;
62
+ * - judging by MODEL capability alone made round 3 identical to round 2 on
63
+ * claude: claude-opus-5 reasons at `xhigh`, the claude CLI has no flag for
64
+ * it, so the wire effort clamped straight back down to round 2's `high`.
65
+ *
66
+ * So each lane is judged post-clamp, at the wire, and effort rises only when
67
+ * EVERY lane rises there. Otherwise the tier is promoted, which every lane can
68
+ * express.
69
+ *
70
+ * The model never weakens across rounds. Scope narrows instead: a recheck
71
+ * examines the delta plus the open findings, not the whole PR again.
72
+ */
73
+ export declare function escalate(base: {
74
+ tier: Tier;
75
+ effort: string | null;
76
+ }, round: number, lanes: string | readonly EscalationLane[]): {
77
+ tier: Tier;
78
+ effort: string | null;
79
+ };
80
+ /** Clamps a requested effort to what the model actually accepts. */
81
+ export declare function clampEffort(model: string, effort: string | null): string | null;
82
+ /**
83
+ * Clamps a requested effort to an accepted vocabulary.
84
+ *
85
+ * Applied twice on the way to a CLI, against two different sets: what the MODEL
86
+ * can reason at (`models[].effort_levels` here) and what the VENDOR CLI has a
87
+ * flag for (CLAUDE_EFFORT_LEVELS / CODEX_EFFORT_LEVELS in the config schema).
88
+ * They are not the same — claude-opus-5 reasons at `xhigh` and the claude CLI
89
+ * cannot ask for it — and only the second reaches the wire.
90
+ */
91
+ export declare function clampToLevels(effort: string | null, levels: readonly string[]): string | null;
92
+ //# sourceMappingURL=review-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-strategy.d.ts","sourceRoot":"","sources":["../../src/lib/review-strategy.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAIxD,MAAM,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AACxC,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;AA2E3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAA;IACd,oCAAoC;IACpC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAUD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAIpD;AAsDD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,SAAS,GAAG,gBAAgB,CAerE;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,YAAY,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAMlG;AAYD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,gFAAgF;IAChF,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC3C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE,GACxC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAkCvC;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAW7F"}
@@ -0,0 +1,282 @@
1
+ // Resolves the per-PR review strategy: which class a PR falls into, which tier
2
+ // and effort that class earns, and which steps run. Reads the versioned policy
3
+ // in config/review-strategy.json so the routing decision and the explanation
4
+ // posted on the PR come from one place and cannot drift apart.
5
+ //
6
+ // Two rules constrain what classification may conclude (see
7
+ // docs/dynamic-thoroughness.md §6.8):
8
+ // - it may set a FLOOR, or promote on CONSEQUENCE (a security path is
9
+ // reviewed thoroughly because a miss there is expensive);
10
+ // - it may NOT predict that a PR will be hard. Static features do not support
11
+ // that inference — difficulty is discovered by reviewing, so escalation is
12
+ // driven by measured non-convergence instead (see escalate()).
13
+ import { createRequire } from 'module';
14
+ import { z } from 'zod';
15
+ const require = createRequire(import.meta.url);
16
+ /** Ordered effort ladder. Index-based so escalation is a step, not a lookup. */
17
+ const EFFORT_LADDER = ['none', 'low', 'medium', 'high', 'xhigh', 'max'];
18
+ const MatchSchema = z.object({
19
+ all_files_match: z.array(z.string()).optional(),
20
+ any_path_matches: z.array(z.string()).optional(),
21
+ or_labels: z.array(z.string()).optional(),
22
+ or_hotfix_to_default_branch: z.boolean().optional(),
23
+ additions_max: z.number().optional(),
24
+ deletions_min: z.number().optional(),
25
+ doc_fraction_min: z.number().optional(),
26
+ config_fraction_min: z.number().optional(),
27
+ source_files_max: z.number().optional(),
28
+ files_max: z.number().optional(),
29
+ src_churn_max: z.number().optional(),
30
+ });
31
+ const PRClassSchema = z.object({
32
+ id: z.string(),
33
+ label: z.string(),
34
+ match: MatchSchema,
35
+ tier: z.enum(['fast', 'balanced', 'thorough']).nullable(),
36
+ // Not z.string(): a typo ("higgh") would validate, then read as -1 in
37
+ // clampEffort and silently drop the whole class to the model's lowest level.
38
+ effort: z.enum(EFFORT_LADDER).nullable(),
39
+ steps: z.array(z.string()),
40
+ focus: z.string().optional(),
41
+ reason: z.string(),
42
+ });
43
+ const StrategySchema = z.object({
44
+ version: z.string(),
45
+ updated: z.string(),
46
+ models: z.record(z.string(), z.object({
47
+ vendor: z.string(),
48
+ effort_levels: z.array(z.string()),
49
+ }).passthrough()),
50
+ banned_models: z.array(z.object({ model: z.string(), reason: z.string() })).default([]),
51
+ vendors: z.record(z.string(), z.object({
52
+ tiers: z.record(z.string(), z.string()),
53
+ }).passthrough()),
54
+ domains: z.record(z.string(), z.unknown()),
55
+ // .min(1): resolveReviewStrategy falls back to the last entry, which is
56
+ // undefined — and throws on `cls.id` — for an empty list.
57
+ pr_classes: z.array(PRClassSchema).min(1),
58
+ ladder: z.object({
59
+ max_blocking_findings: z.number(),
60
+ max_rounds: z.number(),
61
+ max_wall_clock_min: z.number(),
62
+ effort_fallback: z.string(),
63
+ }).passthrough(),
64
+ }).passthrough();
65
+ const raw = require('../config/review-strategy.json');
66
+ const STRATEGY = StrategySchema.parse(raw);
67
+ const TIER_LADDER = ['fast', 'balanced', 'thorough'];
68
+ /** Position on EFFORT_LADDER; -1 for null or an unrecognised level. */
69
+ function effortIndex(effort) {
70
+ return effort === null ? -1 : EFFORT_LADDER.indexOf(effort);
71
+ }
72
+ const FRONTEND_EXT = /\.(tsx|jsx|vue|svelte|css|scss|less|html)$/i;
73
+ const BACKEND_EXT = /\.(py|go|rs|java|rb|php|sql|ts)$/i;
74
+ const DOC_EXT = /\.(md|mdx|rst|adoc)$/i;
75
+ const CONFIG_EXT = /(\.(json|ya?ml|toml|ini|lock|txt|csv|svg|png|jpe?g)$|^\.github\/)/i;
76
+ // Anchored on path segments and extensions. Unanchored, `spec` matched
77
+ // src/lib/pr-spec.ts and `test` matched any latest.ts, routing ordinary source
78
+ // PRs to test_only with a test-focused prompt.
79
+ const TEST_PATH = /((^|\/)(__tests__|tests?|e2e|fixtures?)(\/|$)|\.(test|spec)\.)/i;
80
+ const GENERATED = /((^|\/)(dist|build|node_modules)\/|\.(lock|sum)$|package-lock|pnpm-lock|yarn\.lock|\.(pb|_pb2)\.[a-z]+$|(^|\/)generated\/)/i;
81
+ function srcChurnFraction(files) {
82
+ if (files.length === 0)
83
+ return { doc: 0, config: 0, source: 0 };
84
+ const doc = files.filter(f => DOC_EXT.test(f)).length / files.length;
85
+ const config = files.filter(f => CONFIG_EXT.test(f)).length / files.length;
86
+ const source = files.filter(f => !DOC_EXT.test(f) && !CONFIG_EXT.test(f) && !GENERATED.test(f) && !TEST_PATH.test(f)).length;
87
+ return { doc, config, source };
88
+ }
89
+ /**
90
+ * Frontend vs backend, by file-extension majority. `mixed` and `unknown` both
91
+ * fall back to backend — the conservative default, because the backend
92
+ * preference list is `measured` while the frontend list is still a hypothesis.
93
+ */
94
+ export function detectDomain(files) {
95
+ const fe = files.filter(f => FRONTEND_EXT.test(f)).length;
96
+ const be = files.filter(f => BACKEND_EXT.test(f)).length;
97
+ return fe > be ? 'frontend' : 'backend';
98
+ }
99
+ function matches(cls, pr) {
100
+ const m = cls.match;
101
+ const { files, additions, deletions } = pr;
102
+ // An empty match object is the fallthrough class.
103
+ if (Object.keys(m).length === 0)
104
+ return true;
105
+ // Never classify an empty file list as anything but the fallthrough.
106
+ if (files.length === 0)
107
+ return false;
108
+ if (m.all_files_match) {
109
+ const res = m.all_files_match.map(p => new RegExp(p, 'i'));
110
+ if (!files.every(f => res.some(r => r.test(f))))
111
+ return false;
112
+ }
113
+ // `any_path_matches` is an OR-group with labels and the hotfix rule: any one
114
+ // of the three promotes. Only evaluated when the class declares them.
115
+ if (m.any_path_matches || m.or_labels || m.or_hotfix_to_default_branch) {
116
+ const pathHit = m.any_path_matches
117
+ ? files.some(f => m.any_path_matches.some(p => new RegExp(p, 'i').test(f)))
118
+ : false;
119
+ const labelHit = m.or_labels ? (pr.labels ?? []).some(l => m.or_labels.includes(l)) : false;
120
+ const hotfixHit = m.or_hotfix_to_default_branch === true
121
+ && /^hotfix/i.test(pr.title ?? '')
122
+ && pr.baseRef !== undefined
123
+ && pr.baseRef === pr.defaultBranch;
124
+ if (!pathHit && !labelHit && !hotfixHit)
125
+ return false;
126
+ }
127
+ if (m.additions_max !== undefined && additions > m.additions_max)
128
+ return false;
129
+ // A floor on deletions, not merely "some deletions": a +2/-2 typo fix has
130
+ // near-zero additions too, and is a modification rather than a removal.
131
+ if (m.deletions_min !== undefined && deletions < m.deletions_min)
132
+ return false;
133
+ const frac = srcChurnFraction(files);
134
+ if (m.doc_fraction_min !== undefined && frac.doc < m.doc_fraction_min)
135
+ return false;
136
+ if (m.config_fraction_min !== undefined && frac.config < m.config_fraction_min)
137
+ return false;
138
+ if (m.source_files_max !== undefined && frac.source > m.source_files_max)
139
+ return false;
140
+ if (m.files_max !== undefined && files.length > m.files_max)
141
+ return false;
142
+ if (m.src_churn_max !== undefined) {
143
+ const srcFiles = files.filter(f => !GENERATED.test(f) && !CONFIG_EXT.test(f));
144
+ // Churn is only attributable per-file with a full diff; approximate with the
145
+ // PR total when the change is entirely source, which is the case that matters.
146
+ // Fails CLOSED when churn cannot be attributed: falling back to 0 passed
147
+ // every cap, so one stray config file routed a 5,000-line change to the
148
+ // core runner into `trivial` — fast tier, no recheck.
149
+ const churn = srcFiles.length === files.length ? additions + deletions : Infinity;
150
+ if (churn > m.src_churn_max)
151
+ return false;
152
+ }
153
+ return true;
154
+ }
155
+ /** Classifies a PR against the strategy's ordered class list. First match wins. */
156
+ export function resolveReviewStrategy(pr) {
157
+ const cls = STRATEGY.pr_classes.find(c => matches(c, pr))
158
+ ?? STRATEGY.pr_classes[STRATEGY.pr_classes.length - 1];
159
+ return {
160
+ version: STRATEGY.version,
161
+ classId: cls.id,
162
+ classLabel: cls.label,
163
+ reason: cls.reason,
164
+ tier: cls.tier,
165
+ effort: cls.effort,
166
+ steps: cls.steps,
167
+ ...(cls.focus !== undefined && { focus: cls.focus }),
168
+ domain: detectDomain(pr.files),
169
+ };
170
+ }
171
+ /** Effort levels a model accepts. Empty array = the model has no effort control. */
172
+ export function effortLevelsFor(model) {
173
+ return STRATEGY.models[model]?.effort_levels ?? [];
174
+ }
175
+ export function isModelBanned(model) {
176
+ return STRATEGY.banned_models.some(b => b.model === model);
177
+ }
178
+ export function strategyModelFor(vendor, tier) {
179
+ return STRATEGY.vendors[vendor]?.tiers[tier] ?? null;
180
+ }
181
+ export function strategyVersion() {
182
+ return STRATEGY.version;
183
+ }
184
+ export function ladderLimits() {
185
+ return {
186
+ maxRounds: STRATEGY.ladder.max_rounds,
187
+ maxBlocking: STRATEGY.ladder.max_blocking_findings,
188
+ maxWallClockMin: STRATEGY.ladder.max_wall_clock_min,
189
+ };
190
+ }
191
+ /**
192
+ * True when the strategy's model map has an entry for this ID — i.e. its effort
193
+ * ladder is known at all. Distinct from an entry whose ladder is empty: haiku's
194
+ * `[]` means "no effort control", while a pinned ID or codex under subscription
195
+ * auth (where the CLI picks the model) means "capability unknown".
196
+ */
197
+ function modelIsKnown(model) {
198
+ return Object.prototype.hasOwnProperty.call(STRATEGY.models, model);
199
+ }
200
+ /**
201
+ * Escalation for round N. Raises effort where the vendor that will actually run
202
+ * can deliver a higher one; where it cannot, degrades to a tier promotion
203
+ * instead — `ladder.effort_fallback`.
204
+ *
205
+ * `lanes` are the vendors in play, not claude alone. Collapsing them produced
206
+ * two separate no-ops:
207
+ * - judging by the claude tier model on a codex-only install promoted a tier
208
+ * every round (haiku exposes no effort ladder) while codex — which accepts
209
+ * none…max — sat at the effort it started on;
210
+ * - judging by MODEL capability alone made round 3 identical to round 2 on
211
+ * claude: claude-opus-5 reasons at `xhigh`, the claude CLI has no flag for
212
+ * it, so the wire effort clamped straight back down to round 2's `high`.
213
+ *
214
+ * So each lane is judged post-clamp, at the wire, and effort rises only when
215
+ * EVERY lane rises there. Otherwise the tier is promoted, which every lane can
216
+ * express.
217
+ *
218
+ * The model never weakens across rounds. Scope narrows instead: a recheck
219
+ * examines the delta plus the open findings, not the whole PR again.
220
+ */
221
+ export function escalate(base, round, lanes) {
222
+ if (round <= 1)
223
+ return base;
224
+ const list = typeof lanes === 'string' ? [{ model: lanes }] : lanes;
225
+ // Both clamps, in order: what the MODEL can reason at, then what the CLI has a
226
+ // flag for. Only the second reaches the wire.
227
+ const wire = (lane, effort) => {
228
+ const atModel = modelIsKnown(lane.model) ? clampToLevels(effort, effortLevelsFor(lane.model)) : effort;
229
+ return lane.accepted ? clampToLevels(atModel, lane.accepted) : atModel;
230
+ };
231
+ // Compare the target against what the round before already asked for. An exact
232
+ // `levels.includes(target)` test made round 3 miss on any model whose ladder
233
+ // tops out below xhigh (deepseek: none/high/max) and return base.effort —
234
+ // weaker than round 2.
235
+ const target = round >= 3 ? 'xhigh' : 'high';
236
+ const previousTarget = round >= 3 ? 'high' : base.effort;
237
+ const clamped = list.map(lane => wire(lane, target));
238
+ const rises = list.length > 0 && list.every((lane, i) => {
239
+ const now = clamped[i];
240
+ return now !== null && effortIndex(now) > effortIndex(wire(lane, previousTarget) ?? base.effort);
241
+ });
242
+ // The strongest level any lane accepts; each vendor config is clamped back down
243
+ // to its own vocabulary downstream (strategyVendor), so a lane that cannot
244
+ // reach it is not sent it.
245
+ const best = clamped.reduce((a, b) => (effortIndex(b) > effortIndex(a) ? b : a), null);
246
+ if (rises)
247
+ return { tier: base.tier, effort: best };
248
+ // Effort cannot rise on at least one lane — promote a tier instead (the
249
+ // strategy's ladder.effort_fallback), capped at thorough.
250
+ const idx = TIER_LADDER.indexOf(base.tier);
251
+ const promoted = TIER_LADDER[Math.min(idx + 1, TIER_LADDER.length - 1)];
252
+ return { tier: promoted, effort: best ?? base.effort };
253
+ }
254
+ /** Clamps a requested effort to what the model actually accepts. */
255
+ export function clampEffort(model, effort) {
256
+ return clampToLevels(effort, effortLevelsFor(model));
257
+ }
258
+ /**
259
+ * Clamps a requested effort to an accepted vocabulary.
260
+ *
261
+ * Applied twice on the way to a CLI, against two different sets: what the MODEL
262
+ * can reason at (`models[].effort_levels` here) and what the VENDOR CLI has a
263
+ * flag for (CLAUDE_EFFORT_LEVELS / CODEX_EFFORT_LEVELS in the config schema).
264
+ * They are not the same — claude-opus-5 reasons at `xhigh` and the claude CLI
265
+ * cannot ask for it — and only the second reaches the wire.
266
+ */
267
+ export function clampToLevels(effort, levels) {
268
+ if (effort === null || levels.length === 0)
269
+ return null;
270
+ if (levels.includes(effort))
271
+ return effort;
272
+ // Snap down to the nearest supported level rather than failing the call. When
273
+ // the vocabulary has nothing at or below the request, snap UP to its lowest
274
+ // level instead — sending an effort that is rejected fails the call outright.
275
+ const want = EFFORT_LADDER.indexOf(effort);
276
+ for (let i = want; i >= 0; i--) {
277
+ if (levels.includes(EFFORT_LADDER[i]))
278
+ return EFFORT_LADDER[i];
279
+ }
280
+ return levels[0] ?? null;
281
+ }
282
+ //# sourceMappingURL=review-strategy.js.map