@humanbased/crosscheck 1.2.0 → 1.3.0-beta.100

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 (438) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +183 -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 +124 -11
  66. package/dist/__tests__/adoption.test.d.ts +2 -0
  67. package/dist/__tests__/adoption.test.d.ts.map +1 -0
  68. package/dist/__tests__/adoption.test.js +175 -0
  69. package/dist/__tests__/adoption.test.js.map +1 -0
  70. package/dist/__tests__/auto-fix-branch.test.d.ts +2 -0
  71. package/dist/__tests__/auto-fix-branch.test.d.ts.map +1 -0
  72. package/dist/__tests__/auto-fix-branch.test.js +143 -0
  73. package/dist/__tests__/auto-fix-branch.test.js.map +1 -0
  74. package/dist/__tests__/board.test.js +13 -0
  75. package/dist/__tests__/board.test.js.map +1 -1
  76. package/dist/__tests__/can-write-verdict.test.d.ts +2 -0
  77. package/dist/__tests__/can-write-verdict.test.d.ts.map +1 -0
  78. package/dist/__tests__/can-write-verdict.test.js +31 -0
  79. package/dist/__tests__/can-write-verdict.test.js.map +1 -0
  80. package/dist/__tests__/codex-env.test.d.ts +2 -0
  81. package/dist/__tests__/codex-env.test.d.ts.map +1 -0
  82. package/dist/__tests__/codex-env.test.js +70 -0
  83. package/dist/__tests__/codex-env.test.js.map +1 -0
  84. package/dist/__tests__/codex.test.js +100 -25
  85. package/dist/__tests__/codex.test.js.map +1 -1
  86. package/dist/__tests__/comment-bodies.test.js +49 -1
  87. package/dist/__tests__/comment-bodies.test.js.map +1 -1
  88. package/dist/__tests__/commit-subject.test.d.ts +2 -0
  89. package/dist/__tests__/commit-subject.test.d.ts.map +1 -0
  90. package/dist/__tests__/commit-subject.test.js +72 -0
  91. package/dist/__tests__/commit-subject.test.js.map +1 -0
  92. package/dist/__tests__/conflict-resolve.test.js +44 -1
  93. package/dist/__tests__/conflict-resolve.test.js.map +1 -1
  94. package/dist/__tests__/credential-free-origin.test.d.ts +2 -0
  95. package/dist/__tests__/credential-free-origin.test.d.ts.map +1 -0
  96. package/dist/__tests__/credential-free-origin.test.js +59 -0
  97. package/dist/__tests__/credential-free-origin.test.js.map +1 -0
  98. package/dist/__tests__/detector.test.js +87 -1
  99. package/dist/__tests__/detector.test.js.map +1 -1
  100. package/dist/__tests__/error-classification.test.js +34 -0
  101. package/dist/__tests__/error-classification.test.js.map +1 -1
  102. package/dist/__tests__/fix.test.js +69 -0
  103. package/dist/__tests__/fix.test.js.map +1 -1
  104. package/dist/__tests__/harness-section.test.d.ts +2 -0
  105. package/dist/__tests__/harness-section.test.d.ts.map +1 -0
  106. package/dist/__tests__/harness-section.test.js +46 -0
  107. package/dist/__tests__/harness-section.test.js.map +1 -0
  108. package/dist/__tests__/kickass.test.js +31 -0
  109. package/dist/__tests__/kickass.test.js.map +1 -1
  110. package/dist/__tests__/linear-branding.test.d.ts +2 -0
  111. package/dist/__tests__/linear-branding.test.d.ts.map +1 -0
  112. package/dist/__tests__/linear-branding.test.js +156 -0
  113. package/dist/__tests__/linear-branding.test.js.map +1 -0
  114. package/dist/__tests__/linear-client.test.d.ts +2 -0
  115. package/dist/__tests__/linear-client.test.d.ts.map +1 -0
  116. package/dist/__tests__/linear-client.test.js +120 -0
  117. package/dist/__tests__/linear-client.test.js.map +1 -0
  118. package/dist/__tests__/linear-comment.test.d.ts +2 -0
  119. package/dist/__tests__/linear-comment.test.d.ts.map +1 -0
  120. package/dist/__tests__/linear-comment.test.js +151 -0
  121. package/dist/__tests__/linear-comment.test.js.map +1 -0
  122. package/dist/__tests__/linear-identity.test.d.ts +2 -0
  123. package/dist/__tests__/linear-identity.test.d.ts.map +1 -0
  124. package/dist/__tests__/linear-identity.test.js +253 -0
  125. package/dist/__tests__/linear-identity.test.js.map +1 -0
  126. package/dist/__tests__/linear-notify.test.d.ts +2 -0
  127. package/dist/__tests__/linear-notify.test.d.ts.map +1 -0
  128. package/dist/__tests__/linear-notify.test.js +144 -0
  129. package/dist/__tests__/linear-notify.test.js.map +1 -0
  130. package/dist/__tests__/linear-ref.test.d.ts +2 -0
  131. package/dist/__tests__/linear-ref.test.d.ts.map +1 -0
  132. package/dist/__tests__/linear-ref.test.js +261 -0
  133. package/dist/__tests__/linear-ref.test.js.map +1 -0
  134. package/dist/__tests__/linear-test-ref.test.d.ts +2 -0
  135. package/dist/__tests__/linear-test-ref.test.d.ts.map +1 -0
  136. package/dist/__tests__/linear-test-ref.test.js +81 -0
  137. package/dist/__tests__/linear-test-ref.test.js.map +1 -0
  138. package/dist/__tests__/linear-verify.test.d.ts +2 -0
  139. package/dist/__tests__/linear-verify.test.d.ts.map +1 -0
  140. package/dist/__tests__/linear-verify.test.js +132 -0
  141. package/dist/__tests__/linear-verify.test.js.map +1 -0
  142. package/dist/__tests__/linear-worker.test.d.ts +2 -0
  143. package/dist/__tests__/linear-worker.test.d.ts.map +1 -0
  144. package/dist/__tests__/linear-worker.test.js +83 -0
  145. package/dist/__tests__/linear-worker.test.js.map +1 -0
  146. package/dist/__tests__/linear-write-possible.test.d.ts +2 -0
  147. package/dist/__tests__/linear-write-possible.test.d.ts.map +1 -0
  148. package/dist/__tests__/linear-write-possible.test.js +30 -0
  149. package/dist/__tests__/linear-write-possible.test.js.map +1 -0
  150. package/dist/__tests__/loader.test.js +2 -2
  151. package/dist/__tests__/loader.test.js.map +1 -1
  152. package/dist/__tests__/onboard-preservation.test.js +59 -4
  153. package/dist/__tests__/onboard-preservation.test.js.map +1 -1
  154. package/dist/__tests__/optimize.test.js +2 -0
  155. package/dist/__tests__/optimize.test.js.map +1 -1
  156. package/dist/__tests__/pr-status.test.js +213 -3
  157. package/dist/__tests__/pr-status.test.js.map +1 -1
  158. package/dist/__tests__/pr-workflow-state.test.js +247 -7
  159. package/dist/__tests__/pr-workflow-state.test.js.map +1 -1
  160. package/dist/__tests__/repo-picker.test.js +7 -1
  161. package/dist/__tests__/repo-picker.test.js.map +1 -1
  162. package/dist/__tests__/repository-guidance.test.d.ts +2 -0
  163. package/dist/__tests__/repository-guidance.test.d.ts.map +1 -0
  164. package/dist/__tests__/repository-guidance.test.js +107 -0
  165. package/dist/__tests__/repository-guidance.test.js.map +1 -0
  166. package/dist/__tests__/review-comment-body.test.js +35 -0
  167. package/dist/__tests__/review-comment-body.test.js.map +1 -1
  168. package/dist/__tests__/review-models.test.js +19 -3
  169. package/dist/__tests__/review-models.test.js.map +1 -1
  170. package/dist/__tests__/review-strategy.test.d.ts +2 -0
  171. package/dist/__tests__/review-strategy.test.d.ts.map +1 -0
  172. package/dist/__tests__/review-strategy.test.js +397 -0
  173. package/dist/__tests__/review-strategy.test.js.map +1 -0
  174. package/dist/__tests__/reviewed-sha.test.d.ts +2 -0
  175. package/dist/__tests__/reviewed-sha.test.d.ts.map +1 -0
  176. package/dist/__tests__/reviewed-sha.test.js +116 -0
  177. package/dist/__tests__/reviewed-sha.test.js.map +1 -0
  178. package/dist/__tests__/runner.test.js +206 -2
  179. package/dist/__tests__/runner.test.js.map +1 -1
  180. package/dist/__tests__/skill-attribution.test.d.ts +2 -0
  181. package/dist/__tests__/skill-attribution.test.d.ts.map +1 -0
  182. package/dist/__tests__/skill-attribution.test.js +53 -0
  183. package/dist/__tests__/skill-attribution.test.js.map +1 -0
  184. package/dist/__tests__/skill-broker.test.d.ts +2 -0
  185. package/dist/__tests__/skill-broker.test.d.ts.map +1 -0
  186. package/dist/__tests__/skill-broker.test.js +186 -0
  187. package/dist/__tests__/skill-broker.test.js.map +1 -0
  188. package/dist/__tests__/skill-catalog.test.d.ts +2 -0
  189. package/dist/__tests__/skill-catalog.test.d.ts.map +1 -0
  190. package/dist/__tests__/skill-catalog.test.js +40 -0
  191. package/dist/__tests__/skill-catalog.test.js.map +1 -0
  192. package/dist/__tests__/skill-installer.test.d.ts +2 -0
  193. package/dist/__tests__/skill-installer.test.d.ts.map +1 -0
  194. package/dist/__tests__/skill-installer.test.js +96 -0
  195. package/dist/__tests__/skill-installer.test.js.map +1 -0
  196. package/dist/__tests__/skills-config.test.d.ts +2 -0
  197. package/dist/__tests__/skills-config.test.d.ts.map +1 -0
  198. package/dist/__tests__/skills-config.test.js +12 -0
  199. package/dist/__tests__/skills-config.test.js.map +1 -0
  200. package/dist/__tests__/superseded-fix-pr.test.d.ts +2 -0
  201. package/dist/__tests__/superseded-fix-pr.test.d.ts.map +1 -0
  202. package/dist/__tests__/superseded-fix-pr.test.js +225 -0
  203. package/dist/__tests__/superseded-fix-pr.test.js.map +1 -0
  204. package/dist/__tests__/webhook.test.js +60 -0
  205. package/dist/__tests__/webhook.test.js.map +1 -1
  206. package/dist/cli.js +37 -0
  207. package/dist/cli.js.map +1 -1
  208. package/dist/commands/adoption.d.ts +6 -0
  209. package/dist/commands/adoption.d.ts.map +1 -0
  210. package/dist/commands/adoption.js +132 -0
  211. package/dist/commands/adoption.js.map +1 -0
  212. package/dist/commands/detect-step.d.ts.map +1 -1
  213. package/dist/commands/detect-step.js +5 -1
  214. package/dist/commands/detect-step.js.map +1 -1
  215. package/dist/commands/diagnose.d.ts.map +1 -1
  216. package/dist/commands/diagnose.js +2 -2
  217. package/dist/commands/diagnose.js.map +1 -1
  218. package/dist/commands/init.d.ts.map +1 -1
  219. package/dist/commands/init.js +1 -2
  220. package/dist/commands/init.js.map +1 -1
  221. package/dist/commands/issue.js +1 -1
  222. package/dist/commands/issue.js.map +1 -1
  223. package/dist/commands/kickass.d.ts +1 -1
  224. package/dist/commands/kickass.d.ts.map +1 -1
  225. package/dist/commands/kickass.js +36 -22
  226. package/dist/commands/kickass.js.map +1 -1
  227. package/dist/commands/linear-test.d.ts +18 -0
  228. package/dist/commands/linear-test.d.ts.map +1 -0
  229. package/dist/commands/linear-test.js +130 -0
  230. package/dist/commands/linear-test.js.map +1 -0
  231. package/dist/commands/onboard.d.ts +36 -3
  232. package/dist/commands/onboard.d.ts.map +1 -1
  233. package/dist/commands/onboard.js +263 -45
  234. package/dist/commands/onboard.js.map +1 -1
  235. package/dist/commands/optimize.d.ts.map +1 -1
  236. package/dist/commands/optimize.js +1 -0
  237. package/dist/commands/optimize.js.map +1 -1
  238. package/dist/commands/review.d.ts.map +1 -1
  239. package/dist/commands/review.js +65 -6
  240. package/dist/commands/review.js.map +1 -1
  241. package/dist/commands/run.d.ts.map +1 -1
  242. package/dist/commands/run.js +85 -11
  243. package/dist/commands/run.js.map +1 -1
  244. package/dist/commands/scan.d.ts.map +1 -1
  245. package/dist/commands/scan.js +6 -0
  246. package/dist/commands/scan.js.map +1 -1
  247. package/dist/commands/skill.d.ts +2 -0
  248. package/dist/commands/skill.d.ts.map +1 -0
  249. package/dist/commands/skill.js +16 -0
  250. package/dist/commands/skill.js.map +1 -0
  251. package/dist/commands/status.d.ts.map +1 -1
  252. package/dist/commands/status.js +53 -1
  253. package/dist/commands/status.js.map +1 -1
  254. package/dist/commands/watch.d.ts.map +1 -1
  255. package/dist/commands/watch.js +215 -66
  256. package/dist/commands/watch.js.map +1 -1
  257. package/dist/config/loader.d.ts +3 -1
  258. package/dist/config/loader.d.ts.map +1 -1
  259. package/dist/config/loader.js +19 -6
  260. package/dist/config/loader.js.map +1 -1
  261. package/dist/config/review-model-tiers.json +3 -3
  262. package/dist/config/review-strategy.json +204 -0
  263. package/dist/config/schema.d.ts +269 -15
  264. package/dist/config/schema.d.ts.map +1 -1
  265. package/dist/config/schema.js +109 -10
  266. package/dist/config/schema.js.map +1 -1
  267. package/dist/github/client.d.ts +21 -1
  268. package/dist/github/client.d.ts.map +1 -1
  269. package/dist/github/client.js +46 -7
  270. package/dist/github/client.js.map +1 -1
  271. package/dist/github/detector.d.ts.map +1 -1
  272. package/dist/github/detector.js +28 -1
  273. package/dist/github/detector.js.map +1 -1
  274. package/dist/github/merge.d.ts +0 -5
  275. package/dist/github/merge.d.ts.map +1 -1
  276. package/dist/github/merge.js +0 -9
  277. package/dist/github/merge.js.map +1 -1
  278. package/dist/github/reviewed-sha.d.ts +13 -0
  279. package/dist/github/reviewed-sha.d.ts.map +1 -0
  280. package/dist/github/reviewed-sha.js +62 -0
  281. package/dist/github/reviewed-sha.js.map +1 -0
  282. package/dist/github/superseded-fix-pr.d.ts +19 -0
  283. package/dist/github/superseded-fix-pr.d.ts.map +1 -0
  284. package/dist/github/superseded-fix-pr.js +97 -0
  285. package/dist/github/superseded-fix-pr.js.map +1 -0
  286. package/dist/github/webhook.d.ts +8 -1
  287. package/dist/github/webhook.d.ts.map +1 -1
  288. package/dist/github/webhook.js +8 -1
  289. package/dist/github/webhook.js.map +1 -1
  290. package/dist/issues/ticket-ref.d.ts.map +1 -1
  291. package/dist/issues/ticket-ref.js +6 -5
  292. package/dist/issues/ticket-ref.js.map +1 -1
  293. package/dist/lib/adoption.d.ts +64 -0
  294. package/dist/lib/adoption.d.ts.map +1 -0
  295. package/dist/lib/adoption.js +165 -0
  296. package/dist/lib/adoption.js.map +1 -0
  297. package/dist/lib/annotation.d.ts +7 -0
  298. package/dist/lib/annotation.d.ts.map +1 -1
  299. package/dist/lib/annotation.js +11 -8
  300. package/dist/lib/annotation.js.map +1 -1
  301. package/dist/lib/auto-fix-branch.d.ts +35 -0
  302. package/dist/lib/auto-fix-branch.d.ts.map +1 -0
  303. package/dist/lib/auto-fix-branch.js +88 -0
  304. package/dist/lib/auto-fix-branch.js.map +1 -0
  305. package/dist/lib/board.d.ts +3 -0
  306. package/dist/lib/board.d.ts.map +1 -1
  307. package/dist/lib/board.js +4 -2
  308. package/dist/lib/board.js.map +1 -1
  309. package/dist/lib/clone.d.ts +2 -0
  310. package/dist/lib/clone.d.ts.map +1 -1
  311. package/dist/lib/clone.js +69 -10
  312. package/dist/lib/clone.js.map +1 -1
  313. package/dist/lib/comment-bodies.d.ts +37 -0
  314. package/dist/lib/comment-bodies.d.ts.map +1 -1
  315. package/dist/lib/comment-bodies.js +50 -9
  316. package/dist/lib/comment-bodies.js.map +1 -1
  317. package/dist/lib/logger.d.ts.map +1 -1
  318. package/dist/lib/logger.js +17 -1
  319. package/dist/lib/logger.js.map +1 -1
  320. package/dist/lib/pr-picker.d.ts +1 -1
  321. package/dist/lib/pr-picker.d.ts.map +1 -1
  322. package/dist/lib/pr-picker.js +10 -5
  323. package/dist/lib/pr-picker.js.map +1 -1
  324. package/dist/lib/pr-status.d.ts +2 -1
  325. package/dist/lib/pr-status.d.ts.map +1 -1
  326. package/dist/lib/pr-status.js +70 -6
  327. package/dist/lib/pr-status.js.map +1 -1
  328. package/dist/lib/pr-workflow-state.d.ts +17 -1
  329. package/dist/lib/pr-workflow-state.d.ts.map +1 -1
  330. package/dist/lib/pr-workflow-state.js +110 -5
  331. package/dist/lib/pr-workflow-state.js.map +1 -1
  332. package/dist/lib/repo-picker.d.ts +3 -0
  333. package/dist/lib/repo-picker.d.ts.map +1 -1
  334. package/dist/lib/repo-picker.js +45 -10
  335. package/dist/lib/repo-picker.js.map +1 -1
  336. package/dist/lib/repository-guidance.d.ts +2 -0
  337. package/dist/lib/repository-guidance.d.ts.map +1 -0
  338. package/dist/lib/repository-guidance.js +55 -0
  339. package/dist/lib/repository-guidance.js.map +1 -0
  340. package/dist/lib/review-models.d.ts +15 -2
  341. package/dist/lib/review-models.d.ts.map +1 -1
  342. package/dist/lib/review-models.js +26 -6
  343. package/dist/lib/review-models.js.map +1 -1
  344. package/dist/lib/review-strategy.d.ts +92 -0
  345. package/dist/lib/review-strategy.d.ts.map +1 -0
  346. package/dist/lib/review-strategy.js +282 -0
  347. package/dist/lib/review-strategy.js.map +1 -0
  348. package/dist/lib/runner.d.ts +123 -1
  349. package/dist/lib/runner.d.ts.map +1 -1
  350. package/dist/lib/runner.js +919 -101
  351. package/dist/lib/runner.js.map +1 -1
  352. package/dist/lib/vendor.d.ts +1 -0
  353. package/dist/lib/vendor.d.ts.map +1 -1
  354. package/dist/lib/vendor.js +6 -0
  355. package/dist/lib/vendor.js.map +1 -1
  356. package/dist/lib/workflow.d.ts +13 -0
  357. package/dist/lib/workflow.d.ts.map +1 -1
  358. package/dist/lib/workflow.js +24 -1
  359. package/dist/lib/workflow.js.map +1 -1
  360. package/dist/linear/client.d.ts +18 -0
  361. package/dist/linear/client.d.ts.map +1 -0
  362. package/dist/linear/client.js +67 -0
  363. package/dist/linear/client.js.map +1 -0
  364. package/dist/linear/comment.d.ts +20 -0
  365. package/dist/linear/comment.d.ts.map +1 -0
  366. package/dist/linear/comment.js +57 -0
  367. package/dist/linear/comment.js.map +1 -0
  368. package/dist/linear/identity.d.ts +59 -0
  369. package/dist/linear/identity.d.ts.map +1 -0
  370. package/dist/linear/identity.js +187 -0
  371. package/dist/linear/identity.js.map +1 -0
  372. package/dist/linear/notify.d.ts +35 -0
  373. package/dist/linear/notify.d.ts.map +1 -0
  374. package/dist/linear/notify.js +76 -0
  375. package/dist/linear/notify.js.map +1 -0
  376. package/dist/linear/ref.d.ts +13 -0
  377. package/dist/linear/ref.d.ts.map +1 -0
  378. package/dist/linear/ref.js +90 -0
  379. package/dist/linear/ref.js.map +1 -0
  380. package/dist/linear/verify.d.ts +26 -0
  381. package/dist/linear/verify.d.ts.map +1 -0
  382. package/dist/linear/verify.js +67 -0
  383. package/dist/linear/verify.js.map +1 -0
  384. package/dist/reviewers/address.d.ts +1 -1
  385. package/dist/reviewers/address.d.ts.map +1 -1
  386. package/dist/reviewers/address.js +1 -1
  387. package/dist/reviewers/address.js.map +1 -1
  388. package/dist/reviewers/claude.d.ts +4 -1
  389. package/dist/reviewers/claude.d.ts.map +1 -1
  390. package/dist/reviewers/claude.js +39 -7
  391. package/dist/reviewers/claude.js.map +1 -1
  392. package/dist/reviewers/codex-env.d.ts +12 -0
  393. package/dist/reviewers/codex-env.d.ts.map +1 -0
  394. package/dist/reviewers/codex-env.js +54 -0
  395. package/dist/reviewers/codex-env.js.map +1 -0
  396. package/dist/reviewers/codex.d.ts +18 -1
  397. package/dist/reviewers/codex.d.ts.map +1 -1
  398. package/dist/reviewers/codex.js +164 -81
  399. package/dist/reviewers/codex.js.map +1 -1
  400. package/dist/reviewers/conflict-resolve.d.ts +3 -1
  401. package/dist/reviewers/conflict-resolve.d.ts.map +1 -1
  402. package/dist/reviewers/conflict-resolve.js +21 -6
  403. package/dist/reviewers/conflict-resolve.js.map +1 -1
  404. package/dist/reviewers/fix.d.ts +5 -2
  405. package/dist/reviewers/fix.d.ts.map +1 -1
  406. package/dist/reviewers/fix.js +38 -12
  407. package/dist/reviewers/fix.js.map +1 -1
  408. package/dist/skills/attribution.d.ts +4 -0
  409. package/dist/skills/attribution.d.ts.map +1 -0
  410. package/dist/skills/attribution.js +14 -0
  411. package/dist/skills/attribution.js.map +1 -0
  412. package/dist/skills/broker-server.d.ts +2 -0
  413. package/dist/skills/broker-server.d.ts.map +1 -0
  414. package/dist/skills/broker-server.js +17 -0
  415. package/dist/skills/broker-server.js.map +1 -0
  416. package/dist/skills/broker.d.ts +43 -0
  417. package/dist/skills/broker.d.ts.map +1 -0
  418. package/dist/skills/broker.js +311 -0
  419. package/dist/skills/broker.js.map +1 -0
  420. package/dist/skills/catalog.d.ts +28 -0
  421. package/dist/skills/catalog.d.ts.map +1 -0
  422. package/dist/skills/catalog.js +104 -0
  423. package/dist/skills/catalog.js.map +1 -0
  424. package/dist/skills/installer.d.ts +10 -0
  425. package/dist/skills/installer.d.ts.map +1 -0
  426. package/dist/skills/installer.js +138 -0
  427. package/dist/skills/installer.js.map +1 -0
  428. package/dist/skills/integrity.d.ts +4 -0
  429. package/dist/skills/integrity.d.ts.map +1 -0
  430. package/dist/skills/integrity.js +36 -0
  431. package/dist/skills/integrity.js.map +1 -0
  432. package/docs/dynamic-thoroughness.md +738 -0
  433. package/docs/linear-identity-contract.md +139 -0
  434. package/docs/linear-identity.md +293 -0
  435. package/docs/metrics.md +115 -0
  436. package/docs/trust.md +159 -0
  437. package/get-started.md +322 -16
  438. package/package.json +6 -3
@@ -1,11 +1,16 @@
1
1
  import { execa } from 'execa';
2
- import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, rmSync, realpathSync } from 'fs';
2
+ import { readFileSync, realpathSync, rmSync } from 'fs';
3
+ import { randomUUID } from 'crypto';
3
4
  import { tmpdir } from 'os';
4
5
  import { join } from 'path';
5
6
  import { DEFAULT_REVIEW_INSTRUCTIONS } from '../lib/workflow.js';
6
7
  import { resolveCodexModel } from '../lib/review-models.js';
7
8
  import { withTimeoutRetry } from '../lib/with-timeout-retry.js';
8
9
  import { tierTimeoutMs } from './tier-timeouts.js';
10
+ import { codexSkillBrokerArgs, codexSkillsReachable, renderSkillBrokerInstructions } from '../skills/broker.js';
11
+ import { buildCodexEnv } from './codex-env.js';
12
+ import { withCredentialFreeOrigin } from '../lib/clone.js';
13
+ import { loadRepositoryReviewGuidance } from '../lib/repository-guidance.js';
9
14
  // Codex review command outputs [P0]/[P1]/[P2]/[P3] priority markers but never a VERDICT line.
10
15
  // Infer the verdict from the highest severity present and append it so parseVerdict() can
11
16
  // extract it. Only called when the output doesn't already contain a VERDICT: token.
@@ -35,6 +40,60 @@ export function stripRepoDirPaths(text, repoDir) {
35
40
  }
36
41
  return out;
37
42
  }
43
+ // vendors.codex.effort matches the codex CLI's model_reasoning_effort values
44
+ // 1:1 (low/medium/high/xhigh/max/ultra), so this is a whitelist rather than a
45
+ // translation — anything outside it falls back to medium instead of reaching
46
+ // the CLI as an arbitrary string.
47
+ const REASONING_EFFORT_MAP = {
48
+ low: 'low',
49
+ medium: 'medium',
50
+ high: 'high',
51
+ xhigh: 'xhigh',
52
+ max: 'max',
53
+ ultra: 'ultra',
54
+ };
55
+ export function codexReasoningEffort(effort) {
56
+ return REASONING_EFFORT_MAP[effort] ?? 'medium';
57
+ }
58
+ // `codex review --base` scoped the diff by itself; `codex exec` does not, so the
59
+ // prompt has to name the range. It gives the exact command rather than the branch
60
+ // name: the clone creates `refs/remotes/origin/<base>` and no local `<base>`
61
+ // branch, so `git diff <base>...HEAD` — the obvious reading of a bare branch name
62
+ // — fails outright on any non-default base and can leave the agent reviewing an
63
+ // empty diff. `codex exec review --base` is not the alternative it appears to be:
64
+ // there `--base` and a custom prompt are mutually exclusive, so it cannot carry
65
+ // the verdict rule or the skill instructions. Block order matches runClaudeReview
66
+ // exactly, so the same PR gets the same brief whichever vendor draws it:
67
+ // skills before the behaviour block (activation must happen before the review
68
+ // starts, and the behaviour block ends on the verdict rule, so anything after it
69
+ // reads as boilerplate past the end of the prompt), repository guidance after it
70
+ // (reference material consulted while reviewing, not a first step).
71
+ export function buildCodexReviewPrompt(input) {
72
+ return [
73
+ `You are reviewing a pull request titled: "${input.prTitle}".`,
74
+ `The branch \`${input.baseBranch}\` is the base. Review only the changes introduced in this PR.`,
75
+ `Read them with \`git diff origin/${input.baseBranch}...HEAD\` — this checkout has the remote-tracking ref \`origin/${input.baseBranch}\`, not a local \`${input.baseBranch}\` branch.`,
76
+ input.issueContext ?? '',
77
+ input.focusLine ?? '',
78
+ input.customPrompt ?? '',
79
+ input.skillInstructions ?? '',
80
+ input.behaviorInstructions,
81
+ input.repositoryGuidance ?? '',
82
+ ].filter(Boolean).join('\n\n');
83
+ }
84
+ // `codex exec` prints usage as a "tokens used" heading with the count beneath it;
85
+ // `codex review` used an inline "tokens: N". Both are read so the move between
86
+ // subcommands did not silently drop token telemetry. Anchored to the start of a
87
+ // line so the word "tokens" in review prose cannot be mistaken for a usage
88
+ // report, and takes the last match because a retried run reports more than once.
89
+ export function parseCodexTokensUsed(output) {
90
+ const matches = [...output.matchAll(/^[^\S\n]*tokens(?:\s+used\s*\n|\s*:)[^\S\n]*([\d,]+)/gim)];
91
+ const last = matches.at(-1);
92
+ if (!last)
93
+ return undefined;
94
+ const parsed = parseInt(last[1].replace(/,/g, ''), 10);
95
+ return Number.isNaN(parsed) ? undefined : parsed;
96
+ }
38
97
  // Detect transient Codex API errors that should be retried (socket disconnects, rate limits)
39
98
  function isRetryableCodexError(message) {
40
99
  return /socket.*closed|429|rate limit|connection.*reset|econnreset/i.test(message);
@@ -63,108 +122,132 @@ export async function runCodexReview(repoDir, baseBranch, prTitle, quality, vend
63
122
  onRetry,
64
123
  // Linked tracker issue rendered as a prompt block (issues/enrich.ts) — anchors
65
124
  // the review to the stated goal. Omitted when enrichment is off / unresolved.
66
- issueContext) {
125
+ issueContext, skillSession,
126
+ // skills.codex_full_access. Codex reaches the broker only with the sandbox off,
127
+ // so this is what decides whether skills are offered to codex at all.
128
+ codexFullAccess = false) {
67
129
  const model = resolveCodexModel(quality, vendor);
68
- const tmpFile = join(mkdtempSync(join(tmpdir(), 'crosscheck-')), 'review.md');
69
130
  const tierTimeout = tierTimeoutMs(quality.tier);
70
131
  // timeoutMs: 0 → no cap (crazy/halfcrazy); undefined → tier-based default; positive → user-specified
71
132
  const resolvedTimeout = timeoutMs === undefined ? tierTimeout : timeoutMs === 0 ? undefined : timeoutMs;
72
- // --base and [PROMPT] are mutually exclusive in codex review;
73
- // inject focus instructions via a .codex/instructions file instead
133
+ // `codex exec`, not `codex review`: the review subcommand starts no MCP
134
+ // servers at all not the ones passed with -c, not the ones in
135
+ // ~/.codex/config.toml — so the skill broker was unreachable and the prompt's
136
+ // "call list_enabled_skills first" named a tool that did not exist in the
137
+ // session. `exec` takes both a prompt and MCP config, which also retires the
138
+ // temporary Codex profile that only existed because `--base` and [PROMPT] are
139
+ // mutually exclusive in `codex review`.
74
140
  const focusNote = quality.focus.length > 0
75
- ? `Focus areas: ${quality.focus.join(', ')}. `
141
+ ? `Focus areas: ${quality.focus.join(', ')}.`
76
142
  : '';
77
- const customNote = quality.custom_prompt ?? '';
78
- const behaviorInstructions = stepInstructions ?? DEFAULT_REVIEW_INSTRUCTIONS;
79
- const instructionsNote = [issueContext ?? '', focusNote, customNote, behaviorInstructions].filter(Boolean).join('\n\n');
80
- const instructionsPath = `${repoDir}/.codex/instructions`;
81
- // Save original content so we can restore it after the review — prevents the
82
- // fix step's git add -A from committing crosscheck's instructions as a PR change.
83
- let originalInstructions;
84
- try {
85
- originalInstructions = readFileSync(instructionsPath, 'utf8');
86
- }
87
- catch { /* didn't exist */ }
88
- mkdirSync(`${repoDir}/.codex`, { recursive: true });
89
- writeFileSync(instructionsPath, instructionsNote);
90
- try {
91
- // Retry loop for transient Codex API errors (socket disconnects, rate limits)
92
- let lastErr = undefined;
93
- for (let attempt = 1; attempt <= MAX_CODEX_RETRIES; attempt++) {
143
+ const prompt = buildCodexReviewPrompt({
144
+ prTitle,
145
+ baseBranch,
146
+ issueContext,
147
+ focusLine: focusNote,
148
+ customPrompt: quality.custom_prompt,
149
+ // Gated, not merely unused: telling codex to call a tool it cannot reach is
150
+ // how this failed before — 244 runs obliged to call `list_enabled_skills`,
151
+ // every call cancelled, 0 activations.
152
+ skillInstructions: codexSkillsReachable(skillSession, codexFullAccess)
153
+ ? renderSkillBrokerInstructions(skillSession)
154
+ : undefined,
155
+ behaviorInstructions: stepInstructions ?? DEFAULT_REVIEW_INSTRUCTIONS,
156
+ repositoryGuidance: loadRepositoryReviewGuidance(repoDir, baseBranch),
157
+ });
158
+ // Retry loop for transient Codex API errors (socket disconnects, rate limits)
159
+ let lastErr = undefined;
160
+ for (let attempt = 1; attempt <= MAX_CODEX_RETRIES; attempt++) {
161
+ try {
162
+ const modelArgs = model !== 'default' ? ['-c', `model="${model}"`] : [];
163
+ const skillArgs = codexSkillBrokerArgs(skillSession, codexFullAccess);
164
+ const reasoningEffort = codexReasoningEffort(vendor.effort);
165
+ const effortArgs = ['-c', `model_reasoning_effort="${reasoningEffort}"`];
166
+ // The agent's final message is the review. Reading it from a file rather
167
+ // than stdout keeps session chatter out of the posted comment, and leaves
168
+ // stdout free to carry the usage line quiet mode would suppress.
169
+ const lastMessagePath = join(tmpdir(), `crosscheck-codex-review-${randomUUID()}.md`);
170
+ onLog?.(` running: codex exec --base ${baseBranch}${model !== 'default' ? ` -c model="${model}"` : ''} -c model_reasoning_effort="${reasoningEffort}"`);
94
171
  try {
95
- const modelArgs = model !== 'default' ? ['-c', `model="${model}"`] : [];
96
- onLog?.(` running: codex review --base ${baseBranch}${model !== 'default' ? ` -c model="${model}"` : ''}`);
97
- const { result, retried } = await withTimeoutRetry(resolvedTimeout, (t) => execa('codex', ['review', '--base', baseBranch, '--title', prTitle, ...modelArgs], {
172
+ const { result, retried } = await withCredentialFreeOrigin(repoDir, () => withTimeoutRetry(resolvedTimeout, (t) => execa('codex',
173
+ // Prompt on stdin (`-`), not argv: it carries repository guidance and
174
+ // tracker-issue context, which the retired profile file kept out of
175
+ // the process list. runClaudeReview feeds its prompt the same way.
176
+ //
177
+ // --ignore-user-config: `codex exec` reads ~/.codex/config.toml, which
178
+ // `codex review` never did. That would hand a review of untrusted code
179
+ // the operator's own MCP servers and plugins — every connected service
180
+ // reachable from a prompt injection. Crosscheck passes everything it
181
+ // needs with -c, so there is nothing to lose by ignoring the rest.
182
+ // Auth is unaffected: it lives in auth.json, not config.toml.
183
+ ['exec', '--ignore-user-config', '-c', 'project_doc_max_bytes=0', ...modelArgs, ...effortArgs, ...skillArgs, '--output-last-message', lastMessagePath, '-'], {
98
184
  cwd: repoDir,
99
185
  timeout: t,
100
- env: {
101
- ...process.env,
186
+ input: prompt,
187
+ // extendEnv: false or execa merges process.env back in and the
188
+ // allowlist means nothing. Verified: with this, a shell command run
189
+ // by codex finds neither GITHUB_TOKEN nor any other export.
190
+ extendEnv: false,
191
+ env: buildCodexEnv({
102
192
  // Make local dev tools (tsc, jest, etc.) findable if node_modules exists
103
193
  PATH: `${repoDir}/node_modules/.bin:${process.env.PATH ?? ''}`,
104
- },
194
+ }),
105
195
  }), {
106
196
  onRetry: (effectiveMs, delayMs) => (onRetry ?? onLog)?.(` ⏱ codex timed out at ${effectiveMs / 1000}s — waiting ${delayMs / 1000}s and retrying once`),
107
- });
108
- const rawReview = stripRepoDirPaths(result.stdout.trim() || result.stderr.trim(), repoDir);
109
- const tokensMatch = (result.stderr ?? '').match(/\btokens?:\s*([\d,]+)/i);
110
- const tokensUsed = tokensMatch ? parseInt(tokensMatch[1].replace(/,/g, ''), 10) : undefined;
111
- // Append inferred VERDICT when Codex didn't include one (its review command
112
- // uses [P1]/[P2]/[P3] markers but never emits a VERDICT: line on its own).
197
+ }));
198
+ // Fall back to stdout only if the agent wrote no final message — an
199
+ // aborted run leaves the file empty and stdout is then all there is.
200
+ let lastMessage = '';
201
+ try {
202
+ lastMessage = readFileSync(lastMessagePath, 'utf8').trim();
203
+ }
204
+ catch { /* no final message */ }
205
+ const rawReview = stripRepoDirPaths(lastMessage || result.stdout.trim() || result.stderr.trim(), repoDir);
206
+ const tokensUsed = parseCodexTokensUsed(`${result.stdout ?? ''}\n${result.stderr ?? ''}`);
207
+ // Safety net for a run that ignored the verdict rule. `codex exec` follows
208
+ // it (unlike `codex review`, whose own format emits [P0]-[P3] markers and
209
+ // never a VERDICT line), so this should now be the rare path.
113
210
  const review = rawReview.includes('VERDICT:')
114
211
  ? rawReview
115
212
  : `${rawReview}\n\nVERDICT: ${inferVerdictFromCodexOutput(rawReview)}`;
116
- return { review, tokensUsed, model, retried };
213
+ return { review, tokensUsed, model, effort: reasoningEffort, retried };
117
214
  }
118
- catch (err) {
119
- const execa = err;
120
- const rawStderr = execa.stderr ?? '';
121
- const fullMessage = rawStderr || execa.message || '';
122
- // Check if this is a retryable error
123
- if (isRetryableCodexError(fullMessage) && attempt < MAX_CODEX_RETRIES) {
124
- const delay = CODEX_RETRY_DELAY_MS * attempt; // 5s, 10s
125
- onLog?.(` codex: transient error (${fullMessage.slice(0, 80)}), retrying in ${delay / 1000}s (attempt ${attempt}/${MAX_CODEX_RETRIES})...`);
126
- await new Promise(resolve => setTimeout(resolve, delay));
127
- lastErr = err;
128
- continue;
129
- }
130
- // Non-retryable error or final attempt — format and throw
131
- const effectiveMs = execa.effectiveTimeoutMs ?? resolvedTimeout;
132
- const retryNote = execa.retryDelayMs !== undefined ? ' (retried once)' : '';
133
- const summary = execa.timedOut
134
- ? `timed out after ${effectiveMs !== undefined ? effectiveMs / 1000 : '?'}s${retryNote} — PR diff may be too large (tier: ${quality.tier})`
135
- : (extractErrorSummary(rawStderr) ?? execa.message ?? 'unknown error');
136
- const thrown = Object.assign(new Error(`codex: ${summary}`), {
137
- exitCode: execa.exitCode,
138
- timedOut: execa.timedOut,
139
- stderr: rawStderr,
140
- effectiveTimeoutMs: effectiveMs,
141
- retryDelayMs: execa.retryDelayMs,
142
- });
143
- throw thrown;
215
+ finally {
216
+ rmSync(lastMessagePath, { force: true });
144
217
  }
145
218
  }
146
- // Should not reach here, but handle the case where all retries were consumed
147
- if (lastErr)
148
- throw lastErr;
149
- throw new Error('codex: unexpected retry loop exit');
150
- }
151
- finally {
152
- // Restore .codex/instructions to its pre-review state so the fix step's
153
- // git add -A doesn't commit crosscheck's instructions as a PR file change.
154
- try {
155
- if (originalInstructions !== undefined) {
156
- writeFileSync(instructionsPath, originalInstructions);
219
+ catch (err) {
220
+ const execa = err;
221
+ const rawStderr = execa.stderr ?? '';
222
+ const fullMessage = rawStderr || execa.message || '';
223
+ // Check if this is a retryable error
224
+ if (isRetryableCodexError(fullMessage) && attempt < MAX_CODEX_RETRIES) {
225
+ const delay = CODEX_RETRY_DELAY_MS * attempt; // 5s, 10s
226
+ onLog?.(` codex: transient error (${fullMessage.slice(0, 80)}), retrying in ${delay / 1000}s (attempt ${attempt}/${MAX_CODEX_RETRIES})...`);
227
+ await new Promise(resolve => setTimeout(resolve, delay));
228
+ lastErr = err;
229
+ continue;
157
230
  }
158
- else {
159
- rmSync(instructionsPath, { force: true });
160
- }
161
- }
162
- catch { /* ignore */ }
163
- try {
164
- rmSync(tmpFile, { force: true, recursive: true });
231
+ // Non-retryable error or final attempt — format and throw
232
+ const effectiveMs = execa.effectiveTimeoutMs ?? resolvedTimeout;
233
+ const retryNote = execa.retryDelayMs !== undefined ? ' (retried once)' : '';
234
+ const summary = execa.timedOut
235
+ ? `timed out after ${effectiveMs !== undefined ? effectiveMs / 1000 : '?'}s${retryNote} — PR diff may be too large (tier: ${quality.tier})`
236
+ : (extractErrorSummary(rawStderr) ?? execa.message ?? 'unknown error');
237
+ const thrown = Object.assign(new Error(`codex: ${summary}`), {
238
+ exitCode: execa.exitCode,
239
+ timedOut: execa.timedOut,
240
+ stderr: rawStderr,
241
+ effectiveTimeoutMs: effectiveMs,
242
+ retryDelayMs: execa.retryDelayMs,
243
+ });
244
+ throw thrown;
165
245
  }
166
- catch { /* ignore */ }
167
246
  }
247
+ // Should not reach here, but handle the case where all retries were consumed
248
+ if (lastErr)
249
+ throw lastErr;
250
+ throw new Error('codex: unexpected retry loop exit');
168
251
  }
169
252
  export async function checkCodexAuth() {
170
253
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/reviewers/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/reviewers/codex.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
+ import { type SkillActivationSession } from '../skills/broker.js';
1
2
  export declare const PROMPT_TEMPLATE = "This pull request has merge conflicts. Resolve all conflict markers in the files listed below.\n\nPR title: {PR_TITLE}\n\nConflicted files:\n{CONFLICTED_FILES}\n\n{EXTRA_INSTRUCTIONS}\n\nContext: the PR's branch is checked out as HEAD, and the base branch was merged into it. That means the `<<<<<<< HEAD` side is the PR author's intended changes and the `>>>>>>>` side is the base branch. Default to preserving the PR author's intent.\n\nRules for resolving each conflict:\n- Keep ALL meaningful changes from both sides if they are not directly contradictory\n- When both sides modify the same line, prefer the PR author's changes (the `<<<<<<< HEAD` side) over the base branch (the `>>>>>>>` side), unless the PR side clearly breaks existing logic on the base\n- Remove ALL conflict markers: <<<<<<<, =======, >>>>>>>\n\nFor each file, output ONLY the resolved conflict regions using this format:\n\n<edit path=\"relative/path/to/file.ext\">\n<old>\nexact conflict region including all markers (copy verbatim from the file)\n</old>\n<new>\nresolved content with no conflict markers\n</new>\n</edit>\n\nRules for <edit> blocks:\n- <old> must match the file content EXACTLY, including conflict markers and surrounding lines\n- <new> must not contain ANY conflict markers\n- Include 2\u20133 context lines around the conflict region to make the match unambiguous\n- One block per conflict region; multiple blocks per file are fine\n- Output ONLY <edit> blocks. No other text.";
2
3
  export declare function findConflictedFiles(tmpDir: string): string[];
3
4
  export declare function extractConflictWindows(content: string): string;
4
- export declare function runConflictResolveStep(tmpDir: string, prTitle: string, instructions: string, model?: string, timeoutMs?: number): Promise<{
5
+ export declare function runConflictResolveStep(tmpDir: string, prTitle: string, instructions: string, model?: string, timeoutMs?: number, skillSession?: SkillActivationSession, configuredEffort?: string): Promise<{
5
6
  appliedCount: number;
6
7
  resolvedPaths: string[];
7
8
  tokensUsed?: number;
9
+ effort: string;
8
10
  }>;
9
11
  export interface ResolverEdit {
10
12
  filePath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"conflict-resolve.d.ts","sourceRoot":"","sources":["../../src/reviewers/conflict-resolve.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe,u8CAgCgB,CAAA;AAG5C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAO5D;AAQD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAuC9D;AAkBD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,KAAK,SAAY,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0EjF;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAOD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAqB5F"}
1
+ {"version":3,"file":"conflict-resolve.d.ts","sourceRoot":"","sources":["../../src/reviewers/conflict-resolve.ts"],"names":[],"mappings":"AAMA,OAAO,EAAwD,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAUvH,eAAO,MAAM,eAAe,u8CAgCgB,CAAA;AAG5C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAO5D;AAQD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAuC9D;AAkBD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,KAAK,SAAY,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,sBAAsB,EAIrC,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAmFjG;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAOD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAqB5F"}
@@ -3,6 +3,8 @@ import { readFileSync } from 'fs';
3
3
  import { join } from 'path';
4
4
  import { execa } from 'execa';
5
5
  import { applyEdit } from './fix.js';
6
+ import { claudeEffort } from './claude.js';
7
+ import { claudeSkillBrokerArgs, renderSkillBrokerInstructions } from '../skills/broker.js';
6
8
  // Exported so tests can verify the prompt's side-preference guidance stays in
7
9
  // sync with the merge direction in runner.ts (origin/<base> is merged into HEAD,
8
10
  // so HEAD is the PR side and the `>>>>>>>` side is the base branch).
@@ -114,21 +116,34 @@ function buildConflictedFilesBlock(tmpDir, filePaths) {
114
116
  }
115
117
  }).join('\n\n');
116
118
  }
117
- export async function runConflictResolveStep(tmpDir, prTitle, instructions, model = 'default', timeoutMs) {
119
+ export async function runConflictResolveStep(tmpDir, prTitle, instructions, model = 'default', timeoutMs, skillSession,
120
+ // Reasoning effort from vendors.claude.effort. Was never passed here, so the
121
+ // resolver ran at the CLI default while review and fix honored the config;
122
+ // the posted card now reports this value, so it has to be the real one.
123
+ configuredEffort) {
124
+ const effort = claudeEffort(configuredEffort);
118
125
  const conflictedFiles = findConflictedFiles(tmpDir);
119
126
  if (conflictedFiles.length === 0)
120
- return { appliedCount: 0, resolvedPaths: [] };
127
+ return { appliedCount: 0, resolvedPaths: [], effort };
121
128
  const filesBlock = buildConflictedFilesBlock(tmpDir, conflictedFiles);
122
129
  const prompt = PROMPT_TEMPLATE
123
130
  .replace('{PR_TITLE}', prTitle)
124
131
  .replace('{CONFLICTED_FILES}', filesBlock)
125
- .replace('{EXTRA_INSTRUCTIONS}', instructions ? `Additional instructions: ${instructions}` : '');
132
+ .replace('{EXTRA_INSTRUCTIONS}', [instructions ? `Additional instructions: ${instructions}` : '', skillSession ? renderSkillBrokerInstructions(skillSession) : ''].filter(Boolean).join('\n\n'));
126
133
  let output = '';
127
134
  let tokensUsed;
128
135
  try {
129
136
  const modelArgs = model !== 'default' ? ['--model', model] : [];
130
137
  const resolvedTimeout = timeoutMs === undefined ? 180_000 : timeoutMs === 0 ? undefined : timeoutMs;
131
- const { stdout } = await execa('claude', ['--print', '--output-format', 'json', ...modelArgs], {
138
+ const { stdout } = await execa('claude', [
139
+ '--print', '--output-format', 'json', ...modelArgs, '--effort', effort,
140
+ ...claudeSkillBrokerArgs(skillSession),
141
+ ...(skillSession ? ['--allowedTools', [
142
+ 'mcp__crosscheck__list_enabled_skills',
143
+ 'mcp__crosscheck__activate_skill',
144
+ 'mcp__crosscheck__read_skill_file',
145
+ ].join(',')] : []),
146
+ ], {
132
147
  input: prompt,
133
148
  timeout: resolvedTimeout,
134
149
  env: { ...process.env },
@@ -153,7 +168,7 @@ export async function runConflictResolveStep(tmpDir, prTitle, instructions, mode
153
168
  throw err;
154
169
  }
155
170
  if (!output || output === 'NO_CHANGES')
156
- return { appliedCount: 0, resolvedPaths: [], tokensUsed };
171
+ return { appliedCount: 0, resolvedPaths: [], tokensUsed, effort };
157
172
  const fileEdits = new Map();
158
173
  const fileCache = new Map();
159
174
  for (const { filePath, oldText, newText } of parseResolverEdits(output, conflictedFiles)) {
@@ -187,7 +202,7 @@ export async function runConflictResolveStep(tmpDir, prTitle, instructions, mode
187
202
  }
188
203
  catch { /* skip unwritable paths */ }
189
204
  }
190
- return { appliedCount, resolvedPaths, tokensUsed };
205
+ return { appliedCount, resolvedPaths, tokensUsed, effort };
191
206
  }
192
207
  // Parses <edit path="…"><old>…</old><new>…</new></edit> blocks from resolver output.
193
208
  // Filters out anything that escapes tmpDir (`..`, absolute paths) or targets a file
@@ -1 +1 @@
1
- {"version":3,"file":"conflict-resolve.js","sourceRoot":"","sources":["../../src/reviewers/conflict-resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conflict-resolve.js","sourceRoot":"","sources":["../../src/reviewers/conflict-resolve.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,16 @@
1
1
  import type { Config } from '../config/schema.js';
2
+ import { type SkillActivationSession } from '../skills/broker.js';
2
3
  export declare function applyEdit(fileContent: string, oldText: string, newText: string): string | null;
3
- export declare function runFixStep(tmpDir: string, baseRef: string, prTitle: string, reviewComment: string, instructions: string, config: Config, model?: string, timeoutMs?: number): Promise<{
4
+ export declare function runFixStep(tmpDir: string, baseRef: string, prTitle: string, reviewComment: string, instructions: string, config: Config, model?: string, timeoutMs?: number, skillSession?: SkillActivationSession): Promise<{
4
5
  appliedCount: number;
5
6
  changedFiles: string[];
6
7
  tokensUsed?: number;
8
+ effort: string;
7
9
  }>;
8
- export declare function runCodexFixStep(tmpDir: string, baseRef: string, prTitle: string, reviewComment: string, instructions: string, model?: string, timeoutMs?: number): Promise<{
10
+ export declare function runCodexFixStep(tmpDir: string, baseRef: string, prTitle: string, reviewComment: string, instructions: string, model?: string, timeoutMs?: number, skillSession?: SkillActivationSession, configuredEffort?: string, codexFullAccess?: boolean): Promise<{
9
11
  appliedCount: number;
10
12
  changedFiles: string[];
11
13
  tokensUsed?: number;
14
+ effort: string;
12
15
  }>;
13
16
  //# sourceMappingURL=fix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/reviewers/fix.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AA6DjD,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9F;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,SAAY,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuIhF;AA2BD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,KAAK,SAAY,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6ChF"}
1
+ {"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/reviewers/fix.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAIjD,OAAO,EAAoG,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AA8DnK,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9F;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,SAAY,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,sBAAsB,GACpC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+IhG;AA2BD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,KAAK,SAAY,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,sBAAsB,EAIrC,gBAAgB,CAAC,EAAE,MAAM,EAGzB,eAAe,UAAQ,GACtB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAkDhG"}
@@ -3,6 +3,11 @@ import { mkdirSync, readFileSync, writeFileSync } from 'fs';
3
3
  import { dirname, join } from 'path';
4
4
  import { execa } from 'execa';
5
5
  import { tierTimeoutMs } from './tier-timeouts.js';
6
+ import { claudeEffort } from './claude.js';
7
+ import { codexReasoningEffort } from './codex.js';
8
+ import { claudeSkillBrokerArgs, codexSkillBrokerArgs, codexSkillsReachable, renderSkillBrokerInstructions } from '../skills/broker.js';
9
+ import { buildCodexEnv } from './codex-env.js';
10
+ import { withCredentialFreeOrigin } from '../lib/clone.js';
6
11
  // Minimum ratio of new lines to original lines before we reject a full-file write.
7
12
  // Guards against Claude silently truncating large files.
8
13
  const MIN_SIZE_RATIO = 0.6;
@@ -63,7 +68,8 @@ export function applyEdit(fileContent, oldText, newText) {
63
68
  return null;
64
69
  return fileContent.slice(0, idx) + newText + fileContent.slice(idx + oldText.length);
65
70
  }
66
- export async function runFixStep(tmpDir, baseRef, prTitle, reviewComment, instructions, config, model = 'default', timeoutMs) {
71
+ export async function runFixStep(tmpDir, baseRef, prTitle, reviewComment, instructions, config, model = 'default', timeoutMs, skillSession) {
72
+ const effort = claudeEffort(config.vendors?.claude?.effort);
67
73
  let diff = '';
68
74
  try {
69
75
  diff = execSync(`git diff origin/${baseRef}...HEAD`, { cwd: tmpDir, encoding: 'utf8' });
@@ -78,14 +84,21 @@ export async function runFixStep(tmpDir, baseRef, prTitle, reviewComment, instru
78
84
  .replace('{PR_TITLE}', prTitle)
79
85
  .replace('{REVIEW_COMMENT}', reviewComment.slice(0, 8000))
80
86
  .replace('{DIFF}', diff.slice(0, 16000))
81
- .replace('{EXTRA_INSTRUCTIONS}', instructions ? `Additional instructions: ${instructions}` : '');
87
+ .replace('{EXTRA_INSTRUCTIONS}', [instructions ? `Additional instructions: ${instructions}` : '', skillSession ? renderSkillBrokerInstructions(skillSession) : ''].filter(Boolean).join('\n\n'));
82
88
  let output = '';
83
89
  let tokensUsed;
84
90
  try {
85
91
  const modelArgs = model !== 'default' ? ['--model', model] : [];
86
- const effort = config.vendors?.claude?.effort ?? 'medium';
87
92
  const resolvedTimeout = timeoutMs === undefined ? tierTimeoutMs(config.quality.tier) : timeoutMs === 0 ? undefined : timeoutMs;
88
- const { stdout } = await execa('claude', ['--print', '--output-format', 'json', ...modelArgs, '--effort', effort], {
93
+ const { stdout } = await execa('claude', [
94
+ '--print', '--output-format', 'json', ...modelArgs, '--effort', effort,
95
+ ...claudeSkillBrokerArgs(skillSession),
96
+ ...(skillSession ? ['--allowedTools', [
97
+ 'mcp__crosscheck__list_enabled_skills',
98
+ 'mcp__crosscheck__activate_skill',
99
+ 'mcp__crosscheck__read_skill_file',
100
+ ].join(',')] : []),
101
+ ], {
89
102
  input: prompt,
90
103
  timeout: resolvedTimeout,
91
104
  env: { ...process.env },
@@ -110,7 +123,7 @@ export async function runFixStep(tmpDir, baseRef, prTitle, reviewComment, instru
110
123
  throw err;
111
124
  }
112
125
  if (!output || output === 'NO_CHANGES')
113
- return { appliedCount: 0, changedFiles: [], tokensUsed };
126
+ return { appliedCount: 0, changedFiles: [], tokensUsed, effort };
114
127
  let appliedCount = 0;
115
128
  // Primary: apply <edit path="..."><old>...</old><new>...</new></edit> blocks.
116
129
  // This format only outputs changed sections — structurally prevents truncation.
@@ -198,7 +211,7 @@ export async function runFixStep(tmpDir, baseRef, prTitle, reviewComment, instru
198
211
  catch { /* skip unwritable paths */ }
199
212
  }
200
213
  }
201
- return { appliedCount, changedFiles: writtenFiles, tokensUsed };
214
+ return { appliedCount, changedFiles: writtenFiles, tokensUsed, effort };
202
215
  }
203
216
  // Codex fix: codex is an agentic tool that edits files directly on disk.
204
217
  // We pass the fix context as a prompt, run codex in full-auto mode, then
@@ -224,7 +237,15 @@ Please address the issues raised in the review. Rules:
224
237
  - Do not refactor unrelated code, rename variables, or add tests unless asked
225
238
  - If a comment requires deeper understanding of business logic, skip it
226
239
  - If there are no actionable code changes, exit immediately without modifying any files`;
227
- export async function runCodexFixStep(tmpDir, baseRef, prTitle, reviewComment, instructions, model = 'default', timeoutMs) {
240
+ export async function runCodexFixStep(tmpDir, baseRef, prTitle, reviewComment, instructions, model = 'default', timeoutMs, skillSession,
241
+ // Reasoning effort from vendors.codex.effort. Was never passed here, so a
242
+ // configured effort applied to the review and then silently dropped for the
243
+ // fix; the posted card now reports this value, so it has to be the real one.
244
+ configuredEffort,
245
+ // skills.codex_full_access — see runCodexReview. The fix step reads the same
246
+ // untrusted review comment and diff, so it is gated identically.
247
+ codexFullAccess = false) {
248
+ const effort = codexReasoningEffort(configuredEffort ?? 'medium');
228
249
  let diff = '';
229
250
  try {
230
251
  diff = execSync(`git diff origin/${baseRef}...HEAD`, { cwd: tmpDir, encoding: 'utf8' });
@@ -239,15 +260,20 @@ export async function runCodexFixStep(tmpDir, baseRef, prTitle, reviewComment, i
239
260
  .replace('{PR_TITLE}', prTitle)
240
261
  .replace('{REVIEW_COMMENT}', reviewComment.slice(0, 8000))
241
262
  .replace('{DIFF}', diff.slice(0, 16000))
242
- .replace('{EXTRA_INSTRUCTIONS}', instructions ? `Additional instructions: ${instructions}` : '');
263
+ .replace('{EXTRA_INSTRUCTIONS}', [instructions ? `Additional instructions: ${instructions}` : '', codexSkillsReachable(skillSession, codexFullAccess) ? renderSkillBrokerInstructions(skillSession) : ''].filter(Boolean).join('\n\n'));
243
264
  const resolvedTimeout = timeoutMs === undefined ? 300_000 : timeoutMs === 0 ? undefined : timeoutMs;
244
265
  const modelArgs = model !== 'default' ? ['-c', `model="${model}"`] : [];
245
266
  try {
246
- await execa('codex', ['exec', ...modelArgs, prompt], {
267
+ await withCredentialFreeOrigin(tmpDir, () => execa('codex',
268
+ // --ignore-user-config and the env allowlist for the same reason as the
269
+ // review path: this step reads an untrusted diff, and with
270
+ // skills.codex_full_access it runs unsandboxed.
271
+ ['exec', '--ignore-user-config', ...modelArgs, '-c', `model_reasoning_effort="${effort}"`, ...codexSkillBrokerArgs(skillSession, codexFullAccess), prompt], {
247
272
  cwd: tmpDir,
248
273
  timeout: resolvedTimeout,
249
- env: { ...process.env, CODEX_QUIET_MODE: '1', HOME: process.env.HOME ?? '' },
250
- });
274
+ extendEnv: false,
275
+ env: buildCodexEnv({ CODEX_QUIET_MODE: '1' }),
276
+ }));
251
277
  }
252
278
  catch (err) {
253
279
  const msg = err instanceof Error ? err.message : String(err);
@@ -263,6 +289,6 @@ export async function runCodexFixStep(tmpDir, baseRef, prTitle, reviewComment, i
263
289
  ...(changedOutput ? changedOutput.split('\n').filter(Boolean) : []),
264
290
  ...(untrackedOutput ? untrackedOutput.split('\n').filter(Boolean) : []),
265
291
  ];
266
- return { appliedCount: changedFiles.length, changedFiles };
292
+ return { appliedCount: changedFiles.length, changedFiles, effort };
267
293
  }
268
294
  //# sourceMappingURL=fix.js.map