codex-orchestrator 0.1.51 → 2.0.1

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 (570) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +45 -389
  3. package/dist/src/index.d.ts +16 -46
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +8 -24
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/v2/acceptance-proof.d.ts +111 -0
  8. package/dist/src/v2/acceptance-proof.d.ts.map +1 -0
  9. package/dist/src/v2/acceptance-proof.js +427 -0
  10. package/dist/src/v2/acceptance-proof.js.map +1 -0
  11. package/dist/src/v2/adapters/command.d.ts.map +1 -0
  12. package/dist/src/v2/adapters/command.js.map +1 -0
  13. package/dist/src/v2/adapters/durable-atomic-file.d.ts.map +1 -0
  14. package/dist/src/v2/adapters/durable-atomic-file.js.map +1 -0
  15. package/dist/src/v2/adapters/gh-cli.d.ts.map +1 -0
  16. package/dist/src/v2/adapters/gh-cli.js.map +1 -0
  17. package/dist/src/v2/adapters/gh-issue-adapter.d.ts.map +1 -0
  18. package/dist/src/v2/adapters/gh-issue-adapter.js.map +1 -0
  19. package/dist/src/v2/adapters/gh-pull-request-adapter.d.ts.map +1 -0
  20. package/dist/src/v2/adapters/gh-pull-request-adapter.js.map +1 -0
  21. package/dist/src/v2/adapters/issues.d.ts.map +1 -0
  22. package/dist/src/v2/adapters/issues.js.map +1 -0
  23. package/dist/src/v2/adapters/mission-coordinator-lock.d.ts.map +1 -0
  24. package/dist/src/v2/adapters/mission-coordinator-lock.js.map +1 -0
  25. package/dist/src/v2/adapters/path-policy.d.ts.map +1 -0
  26. package/dist/src/v2/adapters/path-policy.js.map +1 -0
  27. package/dist/src/v2/adapters/pull-requests.d.ts.map +1 -0
  28. package/dist/src/v2/adapters/pull-requests.js.map +1 -0
  29. package/dist/src/v2/adapters/target-activity-fence.d.ts.map +1 -0
  30. package/dist/src/{runner → v2/adapters}/target-activity-fence.js +1 -1
  31. package/dist/src/v2/adapters/target-activity-fence.js.map +1 -0
  32. package/dist/src/{git → v2/adapters}/worktree.d.ts +1 -1
  33. package/dist/src/v2/adapters/worktree.d.ts.map +1 -0
  34. package/dist/src/{git → v2/adapters}/worktree.js +2 -2
  35. package/dist/src/v2/adapters/worktree.js.map +1 -0
  36. package/dist/src/v2/atomic-store.d.ts +36 -0
  37. package/dist/src/v2/atomic-store.d.ts.map +1 -0
  38. package/dist/src/v2/atomic-store.js +328 -0
  39. package/dist/src/v2/atomic-store.js.map +1 -0
  40. package/dist/src/v2/candidate-cli.d.ts +22 -0
  41. package/dist/src/v2/candidate-cli.d.ts.map +1 -0
  42. package/dist/src/v2/candidate-cli.js +161 -0
  43. package/dist/src/v2/candidate-cli.js.map +1 -0
  44. package/dist/src/v2/checked-change.d.ts +49 -0
  45. package/dist/src/v2/checked-change.d.ts.map +1 -0
  46. package/dist/src/v2/checked-change.js +139 -0
  47. package/dist/src/v2/checked-change.js.map +1 -0
  48. package/dist/src/v2/cli-contract.d.ts +8 -0
  49. package/dist/src/v2/cli-contract.d.ts.map +1 -0
  50. package/dist/src/v2/cli-contract.js +32 -0
  51. package/dist/src/v2/cli-contract.js.map +1 -0
  52. package/dist/src/v2/codex-process.d.ts +71 -0
  53. package/dist/src/v2/codex-process.d.ts.map +1 -0
  54. package/dist/src/v2/codex-process.js +404 -0
  55. package/dist/src/v2/codex-process.js.map +1 -0
  56. package/dist/src/v2/config.d.ts +45 -0
  57. package/dist/src/v2/config.d.ts.map +1 -0
  58. package/dist/src/v2/config.js +139 -0
  59. package/dist/src/v2/config.js.map +1 -0
  60. package/dist/src/v2/containment.d.ts +55 -0
  61. package/dist/src/v2/containment.d.ts.map +1 -0
  62. package/dist/src/v2/containment.js +370 -0
  63. package/dist/src/v2/containment.js.map +1 -0
  64. package/dist/src/v2/implementation-report.d.ts +18 -0
  65. package/dist/src/v2/implementation-report.d.ts.map +1 -0
  66. package/dist/src/v2/implementation-report.js +147 -0
  67. package/dist/src/v2/implementation-report.js.map +1 -0
  68. package/dist/src/v2/legacy-cutover.d.ts +52 -0
  69. package/dist/src/v2/legacy-cutover.d.ts.map +1 -0
  70. package/dist/src/v2/legacy-cutover.js +87 -0
  71. package/dist/src/v2/legacy-cutover.js.map +1 -0
  72. package/dist/src/v2/mobile-lease.d.ts +97 -0
  73. package/dist/src/v2/mobile-lease.d.ts.map +1 -0
  74. package/dist/src/v2/mobile-lease.js +253 -0
  75. package/dist/src/v2/mobile-lease.js.map +1 -0
  76. package/dist/src/v2/proof-report.d.ts +118 -0
  77. package/dist/src/v2/proof-report.d.ts.map +1 -0
  78. package/dist/src/v2/proof-report.js +703 -0
  79. package/dist/src/v2/proof-report.js.map +1 -0
  80. package/dist/src/v2/proof-store.d.ts +42 -0
  81. package/dist/src/v2/proof-store.d.ts.map +1 -0
  82. package/dist/src/v2/proof-store.js +180 -0
  83. package/dist/src/v2/proof-store.js.map +1 -0
  84. package/dist/src/v2/report-envelope.d.ts +4 -0
  85. package/dist/src/v2/report-envelope.d.ts.map +1 -0
  86. package/dist/src/v2/report-envelope.js +46 -0
  87. package/dist/src/v2/report-envelope.js.map +1 -0
  88. package/dist/src/v2/run-issue.d.ts +213 -0
  89. package/dist/src/v2/run-issue.d.ts.map +1 -0
  90. package/dist/src/v2/run-issue.js +906 -0
  91. package/dist/src/v2/run-issue.js.map +1 -0
  92. package/dist/src/v2/run-store.d.ts +136 -0
  93. package/dist/src/v2/run-store.d.ts.map +1 -0
  94. package/dist/src/v2/run-store.js +346 -0
  95. package/dist/src/v2/run-store.js.map +1 -0
  96. package/dist/src/v2/runtime-assets.d.ts +31 -0
  97. package/dist/src/v2/runtime-assets.d.ts.map +1 -0
  98. package/dist/src/v2/runtime-assets.js +473 -0
  99. package/dist/src/v2/runtime-assets.js.map +1 -0
  100. package/dist/src/v2/runtime.d.ts +137 -0
  101. package/dist/src/v2/runtime.d.ts.map +1 -0
  102. package/dist/src/v2/runtime.js +847 -0
  103. package/dist/src/v2/runtime.js.map +1 -0
  104. package/dist/src/v2/setup-cli.d.ts +5 -0
  105. package/dist/src/v2/setup-cli.d.ts.map +1 -0
  106. package/dist/src/v2/setup-cli.js +83 -0
  107. package/dist/src/v2/setup-cli.js.map +1 -0
  108. package/dist/src/v2/setup-runtime.d.ts +6 -0
  109. package/dist/src/v2/setup-runtime.d.ts.map +1 -0
  110. package/dist/src/v2/setup-runtime.js +213 -0
  111. package/dist/src/v2/setup-runtime.js.map +1 -0
  112. package/dist/src/v2/setup-store.d.ts +19 -0
  113. package/dist/src/v2/setup-store.d.ts.map +1 -0
  114. package/dist/src/v2/setup-store.js +208 -0
  115. package/dist/src/v2/setup-store.js.map +1 -0
  116. package/dist/src/v2/setup.d.ts +147 -0
  117. package/dist/src/v2/setup.d.ts.map +1 -0
  118. package/dist/src/v2/setup.js +529 -0
  119. package/dist/src/v2/setup.js.map +1 -0
  120. package/docs/deep-dive.md +54 -803
  121. package/internal-skills/acceptance-proof/SKILL.md +14 -0
  122. package/internal-skills/acceptance-proof/references/android.md +14 -0
  123. package/internal-skills/acceptance-proof/references/browser.md +13 -0
  124. package/internal-skills/acceptance-proof/references/ios.md +14 -0
  125. package/internal-skills/acceptance-proof/tools/android-lease.mjs +280 -0
  126. package/internal-skills/acceptance-proof/tools/ios-lease.mjs +288 -0
  127. package/internal-skills/agent-auto/SKILL.md +14 -0
  128. package/package.json +11 -18
  129. package/bridge-runtime.json +0 -2719
  130. package/dist/src/bridge-runtime.d.ts +0 -17
  131. package/dist/src/bridge-runtime.d.ts.map +0 -1
  132. package/dist/src/bridge-runtime.js +0 -170
  133. package/dist/src/bridge-runtime.js.map +0 -1
  134. package/dist/src/cli.d.ts +0 -3
  135. package/dist/src/cli.d.ts.map +0 -1
  136. package/dist/src/cli.js +0 -569
  137. package/dist/src/cli.js.map +0 -1
  138. package/dist/src/codex/command-adapter.d.ts +0 -47
  139. package/dist/src/codex/command-adapter.d.ts.map +0 -1
  140. package/dist/src/codex/command-adapter.js +0 -169
  141. package/dist/src/codex/command-adapter.js.map +0 -1
  142. package/dist/src/codex/mobile-device-guard.d.ts +0 -7
  143. package/dist/src/codex/mobile-device-guard.d.ts.map +0 -1
  144. package/dist/src/codex/mobile-device-guard.js +0 -63
  145. package/dist/src/codex/mobile-device-guard.js.map +0 -1
  146. package/dist/src/config/constants.d.ts +0 -6
  147. package/dist/src/config/constants.d.ts.map +0 -1
  148. package/dist/src/config/constants.js +0 -19
  149. package/dist/src/config/constants.js.map +0 -1
  150. package/dist/src/config/schema.d.ts +0 -234
  151. package/dist/src/config/schema.d.ts.map +0 -1
  152. package/dist/src/config/schema.js +0 -673
  153. package/dist/src/config/schema.js.map +0 -1
  154. package/dist/src/fs/durable-atomic-file.d.ts.map +0 -1
  155. package/dist/src/fs/durable-atomic-file.js.map +0 -1
  156. package/dist/src/git/base-branch.d.ts +0 -26
  157. package/dist/src/git/base-branch.d.ts.map +0 -1
  158. package/dist/src/git/base-branch.js +0 -45
  159. package/dist/src/git/base-branch.js.map +0 -1
  160. package/dist/src/git/worktree.d.ts.map +0 -1
  161. package/dist/src/git/worktree.js.map +0 -1
  162. package/dist/src/github/gh-cli.d.ts.map +0 -1
  163. package/dist/src/github/gh-cli.js.map +0 -1
  164. package/dist/src/github/gh-issue-adapter.d.ts.map +0 -1
  165. package/dist/src/github/gh-issue-adapter.js.map +0 -1
  166. package/dist/src/github/gh-pull-request-adapter.d.ts.map +0 -1
  167. package/dist/src/github/gh-pull-request-adapter.js.map +0 -1
  168. package/dist/src/github/issues.d.ts.map +0 -1
  169. package/dist/src/github/issues.js.map +0 -1
  170. package/dist/src/github/pull-requests.d.ts.map +0 -1
  171. package/dist/src/github/pull-requests.js.map +0 -1
  172. package/dist/src/package-info.d.ts +0 -6
  173. package/dist/src/package-info.d.ts.map +0 -1
  174. package/dist/src/package-info.js +0 -13
  175. package/dist/src/package-info.js.map +0 -1
  176. package/dist/src/path-policy.d.ts.map +0 -1
  177. package/dist/src/path-policy.js.map +0 -1
  178. package/dist/src/process/command.d.ts.map +0 -1
  179. package/dist/src/process/command.js.map +0 -1
  180. package/dist/src/review-handoff.d.ts +0 -3
  181. package/dist/src/review-handoff.d.ts.map +0 -1
  182. package/dist/src/review-handoff.js +0 -8
  183. package/dist/src/review-handoff.js.map +0 -1
  184. package/dist/src/runner/acceptance-proof-loop.d.ts +0 -97
  185. package/dist/src/runner/acceptance-proof-loop.d.ts.map +0 -1
  186. package/dist/src/runner/acceptance-proof-loop.js +0 -404
  187. package/dist/src/runner/acceptance-proof-loop.js.map +0 -1
  188. package/dist/src/runner/acceptance-proof-runner.d.ts +0 -24
  189. package/dist/src/runner/acceptance-proof-runner.d.ts.map +0 -1
  190. package/dist/src/runner/acceptance-proof-runner.js +0 -121
  191. package/dist/src/runner/acceptance-proof-runner.js.map +0 -1
  192. package/dist/src/runner/acceptance-proof.d.ts +0 -189
  193. package/dist/src/runner/acceptance-proof.d.ts.map +0 -1
  194. package/dist/src/runner/acceptance-proof.js +0 -594
  195. package/dist/src/runner/acceptance-proof.js.map +0 -1
  196. package/dist/src/runner/agent-attempt.d.ts +0 -105
  197. package/dist/src/runner/agent-attempt.d.ts.map +0 -1
  198. package/dist/src/runner/agent-attempt.js +0 -245
  199. package/dist/src/runner/agent-attempt.js.map +0 -1
  200. package/dist/src/runner/android-visual-proof-command.d.ts +0 -26
  201. package/dist/src/runner/android-visual-proof-command.d.ts.map +0 -1
  202. package/dist/src/runner/android-visual-proof-command.js +0 -592
  203. package/dist/src/runner/android-visual-proof-command.js.map +0 -1
  204. package/dist/src/runner/auto-visual-proof-command.d.ts +0 -15
  205. package/dist/src/runner/auto-visual-proof-command.d.ts.map +0 -1
  206. package/dist/src/runner/auto-visual-proof-command.js +0 -64
  207. package/dist/src/runner/auto-visual-proof-command.js.map +0 -1
  208. package/dist/src/runner/browser-proof-contract.d.ts +0 -134
  209. package/dist/src/runner/browser-proof-contract.d.ts.map +0 -1
  210. package/dist/src/runner/browser-proof-contract.js +0 -400
  211. package/dist/src/runner/browser-proof-contract.js.map +0 -1
  212. package/dist/src/runner/browser-visual-proof-command.d.ts +0 -101
  213. package/dist/src/runner/browser-visual-proof-command.d.ts.map +0 -1
  214. package/dist/src/runner/browser-visual-proof-command.js +0 -532
  215. package/dist/src/runner/browser-visual-proof-command.js.map +0 -1
  216. package/dist/src/runner/command-utils.d.ts +0 -15
  217. package/dist/src/runner/command-utils.d.ts.map +0 -1
  218. package/dist/src/runner/command-utils.js +0 -228
  219. package/dist/src/runner/command-utils.js.map +0 -1
  220. package/dist/src/runner/completion-report.d.ts +0 -121
  221. package/dist/src/runner/completion-report.d.ts.map +0 -1
  222. package/dist/src/runner/completion-report.js +0 -381
  223. package/dist/src/runner/completion-report.js.map +0 -1
  224. package/dist/src/runner/context-snapshot.d.ts +0 -33
  225. package/dist/src/runner/context-snapshot.d.ts.map +0 -1
  226. package/dist/src/runner/context-snapshot.js +0 -99
  227. package/dist/src/runner/context-snapshot.js.map +0 -1
  228. package/dist/src/runner/daemon-command.d.ts +0 -30
  229. package/dist/src/runner/daemon-command.d.ts.map +0 -1
  230. package/dist/src/runner/daemon-command.js +0 -262
  231. package/dist/src/runner/daemon-command.js.map +0 -1
  232. package/dist/src/runner/doctor-command.d.ts +0 -41
  233. package/dist/src/runner/doctor-command.d.ts.map +0 -1
  234. package/dist/src/runner/doctor-command.js +0 -177
  235. package/dist/src/runner/doctor-command.js.map +0 -1
  236. package/dist/src/runner/durable-run-summary.d.ts +0 -80
  237. package/dist/src/runner/durable-run-summary.d.ts.map +0 -1
  238. package/dist/src/runner/durable-run-summary.js +0 -200
  239. package/dist/src/runner/durable-run-summary.js.map +0 -1
  240. package/dist/src/runner/flutter-sdk-discovery.d.ts +0 -5
  241. package/dist/src/runner/flutter-sdk-discovery.d.ts.map +0 -1
  242. package/dist/src/runner/flutter-sdk-discovery.js +0 -103
  243. package/dist/src/runner/flutter-sdk-discovery.js.map +0 -1
  244. package/dist/src/runner/fresh-context-review.d.ts +0 -22
  245. package/dist/src/runner/fresh-context-review.d.ts.map +0 -1
  246. package/dist/src/runner/fresh-context-review.js +0 -177
  247. package/dist/src/runner/fresh-context-review.js.map +0 -1
  248. package/dist/src/runner/handoff-evidence.d.ts +0 -141
  249. package/dist/src/runner/handoff-evidence.d.ts.map +0 -1
  250. package/dist/src/runner/handoff-evidence.js +0 -543
  251. package/dist/src/runner/handoff-evidence.js.map +0 -1
  252. package/dist/src/runner/hygiene-cleanup.d.ts +0 -15
  253. package/dist/src/runner/hygiene-cleanup.d.ts.map +0 -1
  254. package/dist/src/runner/hygiene-cleanup.js +0 -25
  255. package/dist/src/runner/hygiene-cleanup.js.map +0 -1
  256. package/dist/src/runner/ios-visual-proof-command.d.ts +0 -25
  257. package/dist/src/runner/ios-visual-proof-command.d.ts.map +0 -1
  258. package/dist/src/runner/ios-visual-proof-command.js +0 -353
  259. package/dist/src/runner/ios-visual-proof-command.js.map +0 -1
  260. package/dist/src/runner/issue-state-machine.d.ts +0 -39
  261. package/dist/src/runner/issue-state-machine.d.ts.map +0 -1
  262. package/dist/src/runner/issue-state-machine.js +0 -124
  263. package/dist/src/runner/issue-state-machine.js.map +0 -1
  264. package/dist/src/runner/issue-tree.d.ts +0 -65
  265. package/dist/src/runner/issue-tree.d.ts.map +0 -1
  266. package/dist/src/runner/issue-tree.js +0 -474
  267. package/dist/src/runner/issue-tree.js.map +0 -1
  268. package/dist/src/runner/lifecycle-events.d.ts +0 -44
  269. package/dist/src/runner/lifecycle-events.d.ts.map +0 -1
  270. package/dist/src/runner/lifecycle-events.js +0 -108
  271. package/dist/src/runner/lifecycle-events.js.map +0 -1
  272. package/dist/src/runner/local-execution-session.d.ts +0 -112
  273. package/dist/src/runner/local-execution-session.d.ts.map +0 -1
  274. package/dist/src/runner/local-execution-session.js +0 -1064
  275. package/dist/src/runner/local-execution-session.js.map +0 -1
  276. package/dist/src/runner/local-state.d.ts +0 -44
  277. package/dist/src/runner/local-state.d.ts.map +0 -1
  278. package/dist/src/runner/local-state.js +0 -150
  279. package/dist/src/runner/local-state.js.map +0 -1
  280. package/dist/src/runner/mission-activation.d.ts +0 -29
  281. package/dist/src/runner/mission-activation.d.ts.map +0 -1
  282. package/dist/src/runner/mission-activation.js +0 -54
  283. package/dist/src/runner/mission-activation.js.map +0 -1
  284. package/dist/src/runner/mission-agent-broker.d.ts +0 -53
  285. package/dist/src/runner/mission-agent-broker.d.ts.map +0 -1
  286. package/dist/src/runner/mission-agent-broker.js +0 -182
  287. package/dist/src/runner/mission-agent-broker.js.map +0 -1
  288. package/dist/src/runner/mission-cancellation.d.ts +0 -77
  289. package/dist/src/runner/mission-cancellation.d.ts.map +0 -1
  290. package/dist/src/runner/mission-cancellation.js +0 -180
  291. package/dist/src/runner/mission-cancellation.js.map +0 -1
  292. package/dist/src/runner/mission-canonical-path.d.ts +0 -34
  293. package/dist/src/runner/mission-canonical-path.d.ts.map +0 -1
  294. package/dist/src/runner/mission-canonical-path.js +0 -121
  295. package/dist/src/runner/mission-canonical-path.js.map +0 -1
  296. package/dist/src/runner/mission-capability-kernel.d.ts +0 -34
  297. package/dist/src/runner/mission-capability-kernel.d.ts.map +0 -1
  298. package/dist/src/runner/mission-capability-kernel.js +0 -158
  299. package/dist/src/runner/mission-capability-kernel.js.map +0 -1
  300. package/dist/src/runner/mission-check-policy.d.ts +0 -17
  301. package/dist/src/runner/mission-check-policy.d.ts.map +0 -1
  302. package/dist/src/runner/mission-check-policy.js +0 -31
  303. package/dist/src/runner/mission-check-policy.js.map +0 -1
  304. package/dist/src/runner/mission-coordinator-lock.d.ts.map +0 -1
  305. package/dist/src/runner/mission-coordinator-lock.js.map +0 -1
  306. package/dist/src/runner/mission-deployment.d.ts +0 -21
  307. package/dist/src/runner/mission-deployment.d.ts.map +0 -1
  308. package/dist/src/runner/mission-deployment.js +0 -108
  309. package/dist/src/runner/mission-deployment.js.map +0 -1
  310. package/dist/src/runner/mission-evaluation.d.ts +0 -61
  311. package/dist/src/runner/mission-evaluation.d.ts.map +0 -1
  312. package/dist/src/runner/mission-evaluation.js +0 -183
  313. package/dist/src/runner/mission-evaluation.js.map +0 -1
  314. package/dist/src/runner/mission-executor-probe.d.ts +0 -10
  315. package/dist/src/runner/mission-executor-probe.d.ts.map +0 -1
  316. package/dist/src/runner/mission-executor-probe.js +0 -180
  317. package/dist/src/runner/mission-executor-probe.js.map +0 -1
  318. package/dist/src/runner/mission-git-contracts.d.ts +0 -75
  319. package/dist/src/runner/mission-git-contracts.d.ts.map +0 -1
  320. package/dist/src/runner/mission-git-contracts.js +0 -201
  321. package/dist/src/runner/mission-git-contracts.js.map +0 -1
  322. package/dist/src/runner/mission-git-runtime-owner-ref.d.ts +0 -13
  323. package/dist/src/runner/mission-git-runtime-owner-ref.d.ts.map +0 -1
  324. package/dist/src/runner/mission-git-runtime-owner-ref.js +0 -111
  325. package/dist/src/runner/mission-git-runtime-owner-ref.js.map +0 -1
  326. package/dist/src/runner/mission-git-transaction.d.ts +0 -97
  327. package/dist/src/runner/mission-git-transaction.d.ts.map +0 -1
  328. package/dist/src/runner/mission-git-transaction.js +0 -1009
  329. package/dist/src/runner/mission-git-transaction.js.map +0 -1
  330. package/dist/src/runner/mission-identifiers.d.ts +0 -31
  331. package/dist/src/runner/mission-identifiers.d.ts.map +0 -1
  332. package/dist/src/runner/mission-identifiers.js +0 -75
  333. package/dist/src/runner/mission-identifiers.js.map +0 -1
  334. package/dist/src/runner/mission-input-snapshot.d.ts +0 -21
  335. package/dist/src/runner/mission-input-snapshot.d.ts.map +0 -1
  336. package/dist/src/runner/mission-input-snapshot.js +0 -63
  337. package/dist/src/runner/mission-input-snapshot.js.map +0 -1
  338. package/dist/src/runner/mission-ownership.d.ts +0 -38
  339. package/dist/src/runner/mission-ownership.d.ts.map +0 -1
  340. package/dist/src/runner/mission-ownership.js +0 -88
  341. package/dist/src/runner/mission-ownership.js.map +0 -1
  342. package/dist/src/runner/mission-patch-audit.d.ts +0 -21
  343. package/dist/src/runner/mission-patch-audit.d.ts.map +0 -1
  344. package/dist/src/runner/mission-patch-audit.js +0 -186
  345. package/dist/src/runner/mission-patch-audit.js.map +0 -1
  346. package/dist/src/runner/mission-path-language.d.ts +0 -6
  347. package/dist/src/runner/mission-path-language.d.ts.map +0 -1
  348. package/dist/src/runner/mission-path-language.js +0 -106
  349. package/dist/src/runner/mission-path-language.js.map +0 -1
  350. package/dist/src/runner/mission-permit-authority.d.ts +0 -26
  351. package/dist/src/runner/mission-permit-authority.d.ts.map +0 -1
  352. package/dist/src/runner/mission-permit-authority.js +0 -145
  353. package/dist/src/runner/mission-permit-authority.js.map +0 -1
  354. package/dist/src/runner/mission-plan-parent-coordinator.d.ts +0 -87
  355. package/dist/src/runner/mission-plan-parent-coordinator.d.ts.map +0 -1
  356. package/dist/src/runner/mission-plan-parent-coordinator.js +0 -441
  357. package/dist/src/runner/mission-plan-parent-coordinator.js.map +0 -1
  358. package/dist/src/runner/mission-plan-parent.d.ts +0 -156
  359. package/dist/src/runner/mission-plan-parent.d.ts.map +0 -1
  360. package/dist/src/runner/mission-plan-parent.js +0 -589
  361. package/dist/src/runner/mission-plan-parent.js.map +0 -1
  362. package/dist/src/runner/mission-process-executor.d.ts +0 -25
  363. package/dist/src/runner/mission-process-executor.d.ts.map +0 -1
  364. package/dist/src/runner/mission-process-executor.js +0 -182
  365. package/dist/src/runner/mission-process-executor.js.map +0 -1
  366. package/dist/src/runner/mission-publication-git.d.ts +0 -21
  367. package/dist/src/runner/mission-publication-git.d.ts.map +0 -1
  368. package/dist/src/runner/mission-publication-git.js +0 -61
  369. package/dist/src/runner/mission-publication-git.js.map +0 -1
  370. package/dist/src/runner/mission-publication.d.ts +0 -192
  371. package/dist/src/runner/mission-publication.d.ts.map +0 -1
  372. package/dist/src/runner/mission-publication.js +0 -1001
  373. package/dist/src/runner/mission-publication.js.map +0 -1
  374. package/dist/src/runner/mission-quarantine-patch-executor.d.ts +0 -29
  375. package/dist/src/runner/mission-quarantine-patch-executor.d.ts.map +0 -1
  376. package/dist/src/runner/mission-quarantine-patch-executor.js +0 -121
  377. package/dist/src/runner/mission-quarantine-patch-executor.js.map +0 -1
  378. package/dist/src/runner/mission-repository-executor.d.ts +0 -54
  379. package/dist/src/runner/mission-repository-executor.d.ts.map +0 -1
  380. package/dist/src/runner/mission-repository-executor.js +0 -192
  381. package/dist/src/runner/mission-repository-executor.js.map +0 -1
  382. package/dist/src/runner/mission-repository-observer.d.ts +0 -8
  383. package/dist/src/runner/mission-repository-observer.d.ts.map +0 -1
  384. package/dist/src/runner/mission-repository-observer.js +0 -24
  385. package/dist/src/runner/mission-repository-observer.js.map +0 -1
  386. package/dist/src/runner/mission-reservations.d.ts +0 -15
  387. package/dist/src/runner/mission-reservations.d.ts.map +0 -1
  388. package/dist/src/runner/mission-reservations.js +0 -116
  389. package/dist/src/runner/mission-reservations.js.map +0 -1
  390. package/dist/src/runner/mission-resolution-loop.d.ts +0 -172
  391. package/dist/src/runner/mission-resolution-loop.d.ts.map +0 -1
  392. package/dist/src/runner/mission-resolution-loop.js +0 -318
  393. package/dist/src/runner/mission-resolution-loop.js.map +0 -1
  394. package/dist/src/runner/mission-runtime-owner.d.ts +0 -36
  395. package/dist/src/runner/mission-runtime-owner.d.ts.map +0 -1
  396. package/dist/src/runner/mission-runtime-owner.js +0 -174
  397. package/dist/src/runner/mission-runtime-owner.js.map +0 -1
  398. package/dist/src/runner/mission-safe-executor.d.ts +0 -96
  399. package/dist/src/runner/mission-safe-executor.d.ts.map +0 -1
  400. package/dist/src/runner/mission-safe-executor.js +0 -288
  401. package/dist/src/runner/mission-safe-executor.js.map +0 -1
  402. package/dist/src/runner/mission-sandbox.d.ts +0 -16
  403. package/dist/src/runner/mission-sandbox.d.ts.map +0 -1
  404. package/dist/src/runner/mission-sandbox.js +0 -91
  405. package/dist/src/runner/mission-sandbox.js.map +0 -1
  406. package/dist/src/runner/mission-scheduler.d.ts +0 -57
  407. package/dist/src/runner/mission-scheduler.d.ts.map +0 -1
  408. package/dist/src/runner/mission-scheduler.js +0 -205
  409. package/dist/src/runner/mission-scheduler.js.map +0 -1
  410. package/dist/src/runner/mission-scope-expansion.d.ts +0 -47
  411. package/dist/src/runner/mission-scope-expansion.d.ts.map +0 -1
  412. package/dist/src/runner/mission-scope-expansion.js +0 -147
  413. package/dist/src/runner/mission-scope-expansion.js.map +0 -1
  414. package/dist/src/runner/mission-state-machine.d.ts +0 -118
  415. package/dist/src/runner/mission-state-machine.d.ts.map +0 -1
  416. package/dist/src/runner/mission-state-machine.js +0 -316
  417. package/dist/src/runner/mission-state-machine.js.map +0 -1
  418. package/dist/src/runner/mission-state-store.d.ts +0 -70
  419. package/dist/src/runner/mission-state-store.d.ts.map +0 -1
  420. package/dist/src/runner/mission-state-store.js +0 -916
  421. package/dist/src/runner/mission-state-store.js.map +0 -1
  422. package/dist/src/runner/mobile-device-lease.d.ts +0 -11
  423. package/dist/src/runner/mobile-device-lease.d.ts.map +0 -1
  424. package/dist/src/runner/mobile-device-lease.js +0 -121
  425. package/dist/src/runner/mobile-device-lease.js.map +0 -1
  426. package/dist/src/runner/mobile-visual-proof-command.d.ts +0 -17
  427. package/dist/src/runner/mobile-visual-proof-command.d.ts.map +0 -1
  428. package/dist/src/runner/mobile-visual-proof-command.js +0 -168
  429. package/dist/src/runner/mobile-visual-proof-command.js.map +0 -1
  430. package/dist/src/runner/plan-auto-command.d.ts +0 -35
  431. package/dist/src/runner/plan-auto-command.d.ts.map +0 -1
  432. package/dist/src/runner/plan-auto-command.js +0 -918
  433. package/dist/src/runner/plan-auto-command.js.map +0 -1
  434. package/dist/src/runner/plan-auto-recovery.d.ts +0 -83
  435. package/dist/src/runner/plan-auto-recovery.d.ts.map +0 -1
  436. package/dist/src/runner/plan-auto-recovery.js +0 -303
  437. package/dist/src/runner/plan-auto-recovery.js.map +0 -1
  438. package/dist/src/runner/prompt.d.ts +0 -68
  439. package/dist/src/runner/prompt.d.ts.map +0 -1
  440. package/dist/src/runner/prompt.js +0 -202
  441. package/dist/src/runner/prompt.js.map +0 -1
  442. package/dist/src/runner/proof-routing.d.ts +0 -73
  443. package/dist/src/runner/proof-routing.d.ts.map +0 -1
  444. package/dist/src/runner/proof-routing.js +0 -182
  445. package/dist/src/runner/proof-routing.js.map +0 -1
  446. package/dist/src/runner/proof-strategy.d.ts +0 -21
  447. package/dist/src/runner/proof-strategy.d.ts.map +0 -1
  448. package/dist/src/runner/proof-strategy.js +0 -26
  449. package/dist/src/runner/proof-strategy.js.map +0 -1
  450. package/dist/src/runner/recovery.d.ts +0 -25
  451. package/dist/src/runner/recovery.d.ts.map +0 -1
  452. package/dist/src/runner/recovery.js +0 -89
  453. package/dist/src/runner/recovery.js.map +0 -1
  454. package/dist/src/runner/review-gate-policy.d.ts +0 -13
  455. package/dist/src/runner/review-gate-policy.d.ts.map +0 -1
  456. package/dist/src/runner/review-gate-policy.js +0 -241
  457. package/dist/src/runner/review-gate-policy.js.map +0 -1
  458. package/dist/src/runner/review-gates.d.ts +0 -28
  459. package/dist/src/runner/review-gates.d.ts.map +0 -1
  460. package/dist/src/runner/review-gates.js +0 -328
  461. package/dist/src/runner/review-gates.js.map +0 -1
  462. package/dist/src/runner/rework-policy.d.ts +0 -48
  463. package/dist/src/runner/rework-policy.d.ts.map +0 -1
  464. package/dist/src/runner/rework-policy.js +0 -150
  465. package/dist/src/runner/rework-policy.js.map +0 -1
  466. package/dist/src/runner/run-log.d.ts +0 -18
  467. package/dist/src/runner/run-log.d.ts.map +0 -1
  468. package/dist/src/runner/run-log.js +0 -53
  469. package/dist/src/runner/run-log.js.map +0 -1
  470. package/dist/src/runner/runner-handoff-decision.d.ts +0 -48
  471. package/dist/src/runner/runner-handoff-decision.d.ts.map +0 -1
  472. package/dist/src/runner/runner-handoff-decision.js +0 -93
  473. package/dist/src/runner/runner-handoff-decision.js.map +0 -1
  474. package/dist/src/runner/safety.d.ts +0 -14
  475. package/dist/src/runner/safety.d.ts.map +0 -1
  476. package/dist/src/runner/safety.js +0 -31
  477. package/dist/src/runner/safety.js.map +0 -1
  478. package/dist/src/runner/scope-isolation-policy.d.ts +0 -17
  479. package/dist/src/runner/scope-isolation-policy.d.ts.map +0 -1
  480. package/dist/src/runner/scope-isolation-policy.js +0 -82
  481. package/dist/src/runner/scope-isolation-policy.js.map +0 -1
  482. package/dist/src/runner/scoped-auto-command.d.ts +0 -90
  483. package/dist/src/runner/scoped-auto-command.d.ts.map +0 -1
  484. package/dist/src/runner/scoped-auto-command.js +0 -561
  485. package/dist/src/runner/scoped-auto-command.js.map +0 -1
  486. package/dist/src/runner/scoped-recovery.d.ts +0 -78
  487. package/dist/src/runner/scoped-recovery.d.ts.map +0 -1
  488. package/dist/src/runner/scoped-recovery.js +0 -601
  489. package/dist/src/runner/scoped-recovery.js.map +0 -1
  490. package/dist/src/runner/session-home.d.ts +0 -8
  491. package/dist/src/runner/session-home.d.ts.map +0 -1
  492. package/dist/src/runner/session-home.js +0 -18
  493. package/dist/src/runner/session-home.js.map +0 -1
  494. package/dist/src/runner/status-command.d.ts +0 -38
  495. package/dist/src/runner/status-command.d.ts.map +0 -1
  496. package/dist/src/runner/status-command.js +0 -97
  497. package/dist/src/runner/status-command.js.map +0 -1
  498. package/dist/src/runner/target-activity-fence.d.ts.map +0 -1
  499. package/dist/src/runner/target-activity-fence.js.map +0 -1
  500. package/dist/src/runner/terminal-outcome.d.ts +0 -58
  501. package/dist/src/runner/terminal-outcome.d.ts.map +0 -1
  502. package/dist/src/runner/terminal-outcome.js +0 -73
  503. package/dist/src/runner/terminal-outcome.js.map +0 -1
  504. package/dist/src/runner/visual-proof-runner.d.ts +0 -27
  505. package/dist/src/runner/visual-proof-runner.d.ts.map +0 -1
  506. package/dist/src/runner/visual-proof-runner.js +0 -379
  507. package/dist/src/runner/visual-proof-runner.js.map +0 -1
  508. package/dist/src/runner/worktree-cleanup.d.ts +0 -27
  509. package/dist/src/runner/worktree-cleanup.d.ts.map +0 -1
  510. package/dist/src/runner/worktree-cleanup.js +0 -63
  511. package/dist/src/runner/worktree-cleanup.js.map +0 -1
  512. package/dist/src/setup/codex-command-resolver.d.ts +0 -10
  513. package/dist/src/setup/codex-command-resolver.d.ts.map +0 -1
  514. package/dist/src/setup/codex-command-resolver.js +0 -91
  515. package/dist/src/setup/codex-command-resolver.js.map +0 -1
  516. package/dist/src/setup/github-label-adapter.d.ts +0 -13
  517. package/dist/src/setup/github-label-adapter.d.ts.map +0 -1
  518. package/dist/src/setup/github-label-adapter.js +0 -28
  519. package/dist/src/setup/github-label-adapter.js.map +0 -1
  520. package/dist/src/setup/labels.d.ts +0 -27
  521. package/dist/src/setup/labels.d.ts.map +0 -1
  522. package/dist/src/setup/labels.js +0 -42
  523. package/dist/src/setup/labels.js.map +0 -1
  524. package/dist/src/setup/project-config.d.ts +0 -24
  525. package/dist/src/setup/project-config.d.ts.map +0 -1
  526. package/dist/src/setup/project-config.js +0 -678
  527. package/dist/src/setup/project-config.js.map +0 -1
  528. package/dist/src/setup/prompt-sync.d.ts +0 -14
  529. package/dist/src/setup/prompt-sync.d.ts.map +0 -1
  530. package/dist/src/setup/prompt-sync.js +0 -228
  531. package/dist/src/setup/prompt-sync.js.map +0 -1
  532. package/dist/src/setup/setup-command.d.ts +0 -29
  533. package/dist/src/setup/setup-command.d.ts.map +0 -1
  534. package/dist/src/setup/setup-command.js +0 -304
  535. package/dist/src/setup/setup-command.js.map +0 -1
  536. package/dist/src/setup/skill-runtime-v2-preparation.d.ts +0 -56
  537. package/dist/src/setup/skill-runtime-v2-preparation.d.ts.map +0 -1
  538. package/dist/src/setup/skill-runtime-v2-preparation.js +0 -304
  539. package/dist/src/setup/skill-runtime-v2-preparation.js.map +0 -1
  540. package/dist/src/setup/workflows.d.ts +0 -10
  541. package/dist/src/setup/workflows.d.ts.map +0 -1
  542. package/dist/src/setup/workflows.js +0 -41
  543. package/dist/src/setup/workflows.js.map +0 -1
  544. package/prompts/setup-skill.md +0 -12
  545. package/prompts/workflows/acceptance-proof.md +0 -29
  546. package/prompts/workflows/breakdown-review.md +0 -48
  547. package/prompts/workflows/issue-breakdown.md +0 -155
  548. package/prompts/workflows/issue-tree-orchestration.md +0 -163
  549. package/prompts/workflows/prd.md +0 -80
  550. package/prompts/workflows/scoped-implementation.md +0 -129
  551. package/prompts/workflows/triage.md +0 -149
  552. /package/dist/src/{process → v2/adapters}/command.d.ts +0 -0
  553. /package/dist/src/{process → v2/adapters}/command.js +0 -0
  554. /package/dist/src/{fs → v2/adapters}/durable-atomic-file.d.ts +0 -0
  555. /package/dist/src/{fs → v2/adapters}/durable-atomic-file.js +0 -0
  556. /package/dist/src/{github → v2/adapters}/gh-cli.d.ts +0 -0
  557. /package/dist/src/{github → v2/adapters}/gh-cli.js +0 -0
  558. /package/dist/src/{github → v2/adapters}/gh-issue-adapter.d.ts +0 -0
  559. /package/dist/src/{github → v2/adapters}/gh-issue-adapter.js +0 -0
  560. /package/dist/src/{github → v2/adapters}/gh-pull-request-adapter.d.ts +0 -0
  561. /package/dist/src/{github → v2/adapters}/gh-pull-request-adapter.js +0 -0
  562. /package/dist/src/{github → v2/adapters}/issues.d.ts +0 -0
  563. /package/dist/src/{github → v2/adapters}/issues.js +0 -0
  564. /package/dist/src/{runner → v2/adapters}/mission-coordinator-lock.d.ts +0 -0
  565. /package/dist/src/{runner → v2/adapters}/mission-coordinator-lock.js +0 -0
  566. /package/dist/src/{path-policy.d.ts → v2/adapters/path-policy.d.ts} +0 -0
  567. /package/dist/src/{path-policy.js → v2/adapters/path-policy.js} +0 -0
  568. /package/dist/src/{github → v2/adapters}/pull-requests.d.ts +0 -0
  569. /package/dist/src/{github → v2/adapters}/pull-requests.js +0 -0
  570. /package/dist/src/{runner → v2/adapters}/target-activity-fence.d.ts +0 -0
@@ -1,594 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { readFile } from 'node:fs/promises';
3
- import { join } from 'node:path';
4
- import { globMatches, normalizePath, uniqueSortedPaths } from '../path-policy.js';
5
- import { scopedArtifactTypes } from './completion-report.js';
6
- export const uiEvidenceFailureDimensions = [
7
- 'workflow',
8
- 'viewport',
9
- 'freshness',
10
- 'layout',
11
- 'copy',
12
- 'source-input',
13
- ];
14
- export async function readAcceptanceProofReport(path) {
15
- let content = '';
16
- try {
17
- content = await readFile(path, 'utf8');
18
- }
19
- catch (error) {
20
- if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
21
- return { kind: 'missing' };
22
- }
23
- throw error;
24
- }
25
- try {
26
- const parsed = JSON.parse(content);
27
- const validation = validateAcceptanceProofReportShape(parsed);
28
- if (!validation.ok) {
29
- return { kind: 'invalid', message: formatAcceptanceProofShapeErrors(validation.errors), errors: validation.errors };
30
- }
31
- return { kind: 'valid', report: parsed };
32
- }
33
- catch (error) {
34
- const message = error instanceof Error ? error.message : 'Invalid acceptance proof report';
35
- return { kind: 'invalid', message, errors: [message] };
36
- }
37
- }
38
- export function validateAcceptanceProofReportShape(value) {
39
- const errors = [];
40
- const record = valueRecord(value);
41
- if (!record) {
42
- return { ok: false, errors: ['report must be an object'] };
43
- }
44
- if (!['passed', 'needs-rework', 'blocked'].includes(String(record.status))) {
45
- errors.push('status must be passed, needs-rework, or blocked');
46
- }
47
- validateCriteriaShape(record.criteria, errors);
48
- validateArtifactsShape(record.artifacts, errors);
49
- if ('uiEvidence' in record && valueRecord(record.uiEvidence) === undefined) {
50
- errors.push('uiEvidence must be an object');
51
- }
52
- validateProofScriptRepairShape(record.proofScriptRepair, errors);
53
- validateProofPhaseDiffShape(record.proofPhaseDiff, errors);
54
- validateReworkRequestShape(record.reworkRequest, errors);
55
- validateStringArrayShape(record.residualRisks, 'residualRisks', errors);
56
- return {
57
- ok: errors.length === 0,
58
- errors,
59
- };
60
- }
61
- export function formatAcceptanceProofShapeErrors(errors) {
62
- return `Invalid acceptance proof report: ${errors.join('; ')}`;
63
- }
64
- export function renderAcceptanceProofReportTemplate() {
65
- return JSON.stringify({
66
- status: 'passed',
67
- criteria: [{
68
- id: 'ac-1',
69
- description: 'Describe the acceptance criterion being proven.',
70
- status: 'passed',
71
- confidence: 'high',
72
- reasoningSummary: 'Summarize why the linked artifacts prove this criterion.',
73
- artifactRefs: ['.codex-orchestrator/proofs/issue-000/artifact.txt'],
74
- }],
75
- artifacts: [{
76
- type: 'smoke-output',
77
- path: '.codex-orchestrator/proofs/issue-000/artifact.txt',
78
- description: 'Describe the proof artifact.',
79
- }],
80
- proofPhaseDiff: {
81
- allowedProofPaths: ['.codex-orchestrator/proofs/issue-000/artifact.txt'],
82
- forbiddenProductPaths: [],
83
- },
84
- residualRisks: [],
85
- }, null, 2);
86
- }
87
- export async function createAcceptanceProofDiffCapture(input) {
88
- const beforeProofChangedFiles = uniqueSortedPaths(input.changedFiles);
89
- const beforeProofChangedFileSet = new Set(beforeProofChangedFiles);
90
- const beforeProofFileHashes = await snapshotFileHashes(input.worktreePath, beforeProofChangedFiles);
91
- return {
92
- async collectProofPhaseChangedFiles(changedFiles) {
93
- const afterProofChangedFiles = uniqueSortedPaths(changedFiles);
94
- return uniqueSortedPaths([
95
- ...afterProofChangedFiles.filter((path) => !beforeProofChangedFileSet.has(path)),
96
- ...await changedFileHashes(input.worktreePath, beforeProofFileHashes),
97
- ]);
98
- },
99
- };
100
- }
101
- export function evaluateAcceptanceProofReport(input) {
102
- const reasons = [];
103
- const warnings = [...input.report.residualRisks];
104
- if (input.report.status !== 'passed') {
105
- reasons.push(`Acceptance proof ${input.report.status}: ${input.report.reworkRequest?.summary ?? 'proof did not pass'}`);
106
- }
107
- if (input.report.criteria.length === 0) {
108
- reasons.push('Acceptance proof report has no criteria.');
109
- }
110
- const artifactRefs = new Set(input.report.artifacts.flatMap((artifact) => [
111
- artifact.path,
112
- artifact.url,
113
- artifact.description,
114
- ].filter((value) => typeof value === 'string' && value.length > 0)));
115
- if (input.artifactExists) {
116
- const missingArtifactPaths = input.report.artifacts
117
- .map((artifact) => artifact.path)
118
- .filter((path) => typeof path === 'string' && path.length > 0)
119
- .filter((path) => !input.artifactExists?.(path));
120
- if (missingArtifactPaths.length > 0) {
121
- reasons.push(`Acceptance proof references missing artifact path(s): ${missingArtifactPaths.join(', ')}.`);
122
- }
123
- }
124
- for (const criterion of input.report.criteria) {
125
- if (criterion.status !== 'passed') {
126
- reasons.push(`Acceptance proof criterion ${criterion.id} has status ${criterion.status}.`);
127
- }
128
- if (criterion.confidence !== 'high') {
129
- reasons.push(`Acceptance proof criterion ${criterion.id} has confidence ${criterion.confidence}.`);
130
- }
131
- if (criterion.artifactRefs.length === 0) {
132
- reasons.push(`Acceptance proof criterion ${criterion.id} has no artifact evidence.`);
133
- continue;
134
- }
135
- const missingRefs = criterion.artifactRefs.filter((ref) => !artifactRefs.has(ref));
136
- if (missingRefs.length > 0) {
137
- reasons.push(`Acceptance proof criterion ${criterion.id} references missing artifact(s): ${missingRefs.join(', ')}.`);
138
- }
139
- }
140
- validateUiEvidence({
141
- report: input.report,
142
- artifactRefs,
143
- reasons,
144
- });
145
- const forbiddenProductPaths = [
146
- ...input.report.proofPhaseDiff.forbiddenProductPaths,
147
- ...classifyAcceptanceProofDiff(input.config, input.proofPhaseChangedFiles).forbiddenProductPaths,
148
- ];
149
- const uniqueForbiddenProductPaths = Array.from(new Set(forbiddenProductPaths.map(normalizePath))).sort();
150
- if (uniqueForbiddenProductPaths.length > 0) {
151
- reasons.push(`Acceptance proof produced product-code changes during acceptance proof: ${uniqueForbiddenProductPaths.join(', ')}.`);
152
- }
153
- return {
154
- ok: reasons.length === 0,
155
- reasons,
156
- warnings,
157
- };
158
- }
159
- export function buildAcceptanceProofReportOutcome(input) {
160
- const evaluation = evaluateAcceptanceProofReport({
161
- config: input.config,
162
- report: input.report,
163
- proofPhaseChangedFiles: input.proofPhaseChangedFiles,
164
- artifactExists: input.artifactExists,
165
- });
166
- const status = acceptanceProofStatus(input.report, evaluation.ok, input.commandExitCode);
167
- const artifactPaths = artifactPathsFromAcceptanceProofReport(input.report, input.proofPhaseChangedFiles);
168
- const validation = [{
169
- command: input.command,
170
- status: status === 'passed' ? 'passed' : 'failed',
171
- summary: status === 'passed'
172
- ? input.passedSummary(input.report)
173
- : `${input.failedSummaryPrefix} ${status}: ${[
174
- input.commandExitCode === 0 ? undefined : input.commandOutputSummary,
175
- ...evaluation.reasons,
176
- ].filter(Boolean).join('; ')}`,
177
- }];
178
- const evidence = {
179
- status,
180
- promptPath: input.promptPath,
181
- reportPath: input.reportPath,
182
- artifactDir: input.artifactDir,
183
- artifactPaths,
184
- validation,
185
- blockers: status === 'passed' ? [] : validation.map((line) => line.summary),
186
- residualRisks: uniqueStrings(evaluation.warnings),
187
- reworkRequest: input.report.reworkRequest,
188
- };
189
- return {
190
- status,
191
- validation,
192
- artifacts: input.report.artifacts,
193
- artifactPaths,
194
- blockers: evidence.blockers,
195
- residualRisks: evidence.residualRisks,
196
- evidence,
197
- };
198
- }
199
- export function buildBlockedAcceptanceProofOutcome(input) {
200
- const validation = [{
201
- command: input.command,
202
- status: 'failed',
203
- summary: input.commandExitCode === 0
204
- ? input.validationSummary
205
- : `${input.validationSummary} ${input.commandOutputSummary ?? `Command exited with code ${input.commandExitCode}`}`,
206
- }];
207
- const evidence = {
208
- status: 'blocked',
209
- promptPath: input.promptPath,
210
- reportPath: input.reportPath,
211
- artifactDir: input.artifactDir,
212
- artifactPaths: input.artifactPaths,
213
- validation,
214
- blockers: input.blockers,
215
- residualRisks: input.residualRisks,
216
- };
217
- return {
218
- status: 'blocked',
219
- validation,
220
- artifacts: input.artifactPaths.map((path) => ({
221
- type: 'other',
222
- path,
223
- description: `acceptance proof artifact ${path}`,
224
- })),
225
- artifactPaths: input.artifactPaths,
226
- blockers: input.blockers,
227
- residualRisks: input.residualRisks,
228
- evidence,
229
- };
230
- }
231
- export function buildForbiddenAcceptanceProofDiffEvidence(input) {
232
- const normalizedForbiddenPaths = uniqueSortedPaths(input.forbiddenProductPaths);
233
- const summary = `Acceptance proof produced product-code changes during acceptance proof: ${normalizedForbiddenPaths.join(', ')}.`;
234
- const validation = [{
235
- command: input.command,
236
- status: 'failed',
237
- summary,
238
- }];
239
- return {
240
- status: 'blocked',
241
- promptPath: input.baseEvidence?.promptPath,
242
- reportPath: input.baseEvidence?.reportPath ?? input.reportPath ?? '',
243
- artifactDir: input.baseEvidence?.artifactDir ?? input.artifactDir ?? '',
244
- artifactPaths: uniqueSortedPaths([
245
- ...(input.baseEvidence?.artifactPaths ?? []),
246
- ...input.artifactPaths,
247
- ]),
248
- validation,
249
- blockers: [summary],
250
- residualRisks: input.baseEvidence?.residualRisks ?? [],
251
- reworkRequest: input.baseEvidence?.reworkRequest,
252
- };
253
- }
254
- export function artifactPathsFromAcceptanceProofReport(report, changedFiles) {
255
- return Array.from(new Set([
256
- ...changedFiles,
257
- ...report.artifacts.flatMap((artifact) => artifact.path ? [normalizePath(artifact.path)] : []),
258
- ])).sort((left, right) => left.localeCompare(right));
259
- }
260
- function acceptanceProofStatus(report, evaluationOk, exitCode) {
261
- if (exitCode !== 0 || report.status === 'blocked') {
262
- return 'blocked';
263
- }
264
- if (!evaluationOk || report.status === 'needs-rework') {
265
- return 'needs-rework';
266
- }
267
- return 'passed';
268
- }
269
- function uniqueStrings(values) {
270
- return Array.from(new Set(values));
271
- }
272
- function validateUiEvidence(input) {
273
- const uiProofRequired = input.report.artifacts.some((artifact) => artifact.type === 'screenshot' || artifact.type === 'ui-dump');
274
- if (!uiProofRequired && input.report.uiEvidence === undefined) {
275
- return;
276
- }
277
- const uiEvidence = input.report.uiEvidence;
278
- if (!uiEvidence) {
279
- for (const dimension of uiEvidenceFailureDimensions) {
280
- addUiEvidenceReason(input.reasons, dimension, 'UI artifacts require a complete UI Evidence Contract.');
281
- }
282
- return;
283
- }
284
- validateWorkflowScope(input.report, uiEvidence, input.reasons);
285
- validateViewportCoverage(uiEvidence, input.artifactRefs, input.reasons);
286
- validateArtifactFreshness(uiEvidence, input.artifactRefs, input.reasons);
287
- validateLayoutReview(uiEvidence, input.artifactRefs, input.reasons);
288
- validateCopyReview(uiEvidence, input.artifactRefs, input.reasons);
289
- validateSourceInputs(uiEvidence, input.reasons);
290
- }
291
- function validateWorkflowScope(report, uiEvidence, reasons) {
292
- const workflowScope = valueRecord(uiEvidence.workflowScope);
293
- if (!workflowScope) {
294
- addUiEvidenceReason(reasons, 'workflow', 'workflowScope is required.');
295
- return;
296
- }
297
- if (!nonEmptyString(workflowScope.entrypoint)) {
298
- addUiEvidenceReason(reasons, 'workflow', 'workflowScope.entrypoint is required.');
299
- }
300
- if (!nonEmptyString(workflowScope.screenState)) {
301
- addUiEvidenceReason(reasons, 'workflow', 'workflowScope.screenState is required.');
302
- }
303
- if (!nonEmptyStringArray(workflowScope.path)) {
304
- addUiEvidenceReason(reasons, 'workflow', 'workflowScope.path must include the user path to the screen.');
305
- }
306
- const authPath = workflowScope.authPath;
307
- if (authPath !== undefined && !['real-login', 'seeded-session', 'not-required', 'blocked'].includes(String(authPath))) {
308
- addUiEvidenceReason(reasons, 'workflow', 'workflowScope.authPath is invalid.');
309
- }
310
- if (authPath === 'seeded-session' && !nonEmptyString(workflowScope.authShortcutReason)) {
311
- addUiEvidenceReason(reasons, 'workflow', 'seeded-session auth requires authShortcutReason.');
312
- }
313
- if (authPath === 'blocked' && report.status === 'passed') {
314
- addUiEvidenceReason(reasons, 'workflow', 'blocked auth cannot accompany a passed proof report.');
315
- }
316
- }
317
- function validateViewportCoverage(uiEvidence, artifactRefs, reasons) {
318
- const viewportCoverage = uiEvidence.viewportCoverage;
319
- if (!Array.isArray(viewportCoverage) || viewportCoverage.length === 0) {
320
- addUiEvidenceReason(reasons, 'viewport', 'viewportCoverage must include at least one viewport.');
321
- return;
322
- }
323
- const requiredByValues = ['desktop-web-layout', 'mobile-or-responsive', 'issue-specific', 'other'];
324
- for (const [index, viewport] of viewportCoverage.entries()) {
325
- const record = valueRecord(viewport);
326
- if (!record) {
327
- addUiEvidenceReason(reasons, 'viewport', `viewportCoverage[${index}] must be an object.`);
328
- continue;
329
- }
330
- if (!nonEmptyString(record.name)) {
331
- addUiEvidenceReason(reasons, 'viewport', `viewportCoverage[${index}].name is required.`);
332
- }
333
- if (!positiveInteger(record.width) || !positiveInteger(record.height)) {
334
- addUiEvidenceReason(reasons, 'viewport', `viewportCoverage[${index}] must include positive integer width and height.`);
335
- }
336
- if (!requiredByValues.includes(String(record.requiredBy))) {
337
- addUiEvidenceReason(reasons, 'viewport', `viewportCoverage[${index}].requiredBy is invalid.`);
338
- }
339
- if (record.requiredBy === 'desktop-web-layout' && positiveInteger(record.width) && Number(record.width) < 1280) {
340
- addUiEvidenceReason(reasons, 'viewport', 'desktop-web-layout viewport width must be at least 1280.');
341
- }
342
- validateMappedRefs(record.artifactRefs, artifactRefs, reasons, 'viewport', `viewportCoverage[${index}].artifactRefs`);
343
- }
344
- }
345
- function validateArtifactFreshness(uiEvidence, artifactRefs, reasons) {
346
- const freshness = valueRecord(uiEvidence.artifactFreshness);
347
- if (!freshness) {
348
- addUiEvidenceReason(reasons, 'freshness', 'artifactFreshness is required.');
349
- return;
350
- }
351
- if (freshness.checkedAfterFinalRun !== true) {
352
- addUiEvidenceReason(reasons, 'freshness', 'artifactFreshness.checkedAfterFinalRun must be true.');
353
- }
354
- validateMappedRefs(freshness.currentArtifactRefs, artifactRefs, reasons, 'freshness', 'artifactFreshness.currentArtifactRefs');
355
- }
356
- function validateLayoutReview(uiEvidence, artifactRefs, reasons) {
357
- const layoutReview = valueRecord(uiEvidence.layoutReview);
358
- if (!layoutReview) {
359
- addUiEvidenceReason(reasons, 'layout', 'layoutReview is required.');
360
- return;
361
- }
362
- if (layoutReview.checked !== true) {
363
- addUiEvidenceReason(reasons, 'layout', 'layoutReview.checked must be true.');
364
- }
365
- validateMappedFindings(layoutReview.findings, artifactRefs, reasons, 'layout', 'layoutReview.findings');
366
- }
367
- function validateCopyReview(uiEvidence, artifactRefs, reasons) {
368
- const copyReview = valueRecord(uiEvidence.copyReview);
369
- if (!copyReview) {
370
- addUiEvidenceReason(reasons, 'copy', 'copyReview is required.');
371
- return;
372
- }
373
- if (copyReview.checked !== true) {
374
- addUiEvidenceReason(reasons, 'copy', 'copyReview.checked must be true.');
375
- }
376
- validateOptionalStringArray(copyReview.acceptedTerms, reasons, 'copy', 'copyReview.acceptedTerms');
377
- validateOptionalStringArray(copyReview.rejectedTermsAbsent, reasons, 'copy', 'copyReview.rejectedTermsAbsent');
378
- validateMappedFindings(copyReview.findings, artifactRefs, reasons, 'copy', 'copyReview.findings');
379
- }
380
- function validateSourceInputs(uiEvidence, reasons) {
381
- const sourceInputs = valueRecord(uiEvidence.sourceInputs);
382
- if (!sourceInputs) {
383
- addUiEvidenceReason(reasons, 'source-input', 'sourceInputs is required.');
384
- return;
385
- }
386
- if (!nonEmptyStringArray(sourceInputs.acceptanceCriteriaRefs)) {
387
- addUiEvidenceReason(reasons, 'source-input', 'sourceInputs.acceptanceCriteriaRefs is required.');
388
- }
389
- if (!nonEmptyStringArray(sourceInputs.implementationEvidenceRefs)) {
390
- addUiEvidenceReason(reasons, 'source-input', 'sourceInputs.implementationEvidenceRefs is required.');
391
- }
392
- for (const key of ['reproductionSignalRefs', 'manualQaPlanRefs', 'runtimeValidationRefs']) {
393
- validateOptionalStringArray(sourceInputs[key], reasons, 'source-input', `sourceInputs.${key}`);
394
- }
395
- }
396
- function validateMappedFindings(value, artifactRefs, reasons, dimension, label) {
397
- if (!Array.isArray(value) || value.length === 0) {
398
- addUiEvidenceReason(reasons, dimension, `${label} must include at least one mapped finding.`);
399
- return;
400
- }
401
- for (const [index, finding] of value.entries()) {
402
- const record = valueRecord(finding);
403
- if (!record) {
404
- addUiEvidenceReason(reasons, dimension, `${label}[${index}] must be an object.`);
405
- continue;
406
- }
407
- if (!nonEmptyString(record.summary)) {
408
- addUiEvidenceReason(reasons, dimension, `${label}[${index}].summary is required.`);
409
- }
410
- validateMappedRefs(record.artifactRefs, artifactRefs, reasons, dimension, `${label}[${index}].artifactRefs`);
411
- }
412
- }
413
- function validateMappedRefs(value, artifactRefs, reasons, dimension, label) {
414
- if (!nonEmptyStringArray(value)) {
415
- addUiEvidenceReason(reasons, dimension, `${label} must include at least one artifact reference.`);
416
- return;
417
- }
418
- const missingRefs = value.filter((ref) => !artifactRefs.has(ref));
419
- if (missingRefs.length > 0) {
420
- addUiEvidenceReason(reasons, dimension, `${label} references missing artifact(s): ${missingRefs.join(', ')}.`);
421
- }
422
- }
423
- function validateOptionalStringArray(value, reasons, dimension, label) {
424
- if (value === undefined) {
425
- return;
426
- }
427
- if (!nonEmptyStringArray(value)) {
428
- addUiEvidenceReason(reasons, dimension, `${label} must be a non-empty string array when present.`);
429
- }
430
- }
431
- function addUiEvidenceReason(reasons, dimension, reason) {
432
- reasons.push(`UI Evidence ${dimension}: ${reason}`);
433
- }
434
- function valueRecord(value) {
435
- return typeof value === 'object' && value !== null && !Array.isArray(value)
436
- ? value
437
- : undefined;
438
- }
439
- function nonEmptyString(value) {
440
- return typeof value === 'string' && value.trim().length > 0;
441
- }
442
- function nonEmptyStringArray(value) {
443
- return Array.isArray(value) && value.length > 0 && value.every(nonEmptyString);
444
- }
445
- function positiveInteger(value) {
446
- return Number.isInteger(value) && Number(value) > 0;
447
- }
448
- export function classifyAcceptanceProofDiff(config, proofPhaseChangedFiles) {
449
- const proofOwnedPathGlobs = config.reviewGates.acceptanceProof.proofOwnedPathGlobs;
450
- const allowedProofPaths = [];
451
- const forbiddenProductPaths = [];
452
- for (const path of proofPhaseChangedFiles.map(normalizePath)) {
453
- if (proofOwnedPathGlobs.some((pattern) => globMatches(pattern, path))) {
454
- allowedProofPaths.push(path);
455
- }
456
- else {
457
- forbiddenProductPaths.push(path);
458
- }
459
- }
460
- return {
461
- allowedProofPaths: allowedProofPaths.sort(),
462
- forbiddenProductPaths: forbiddenProductPaths.sort(),
463
- };
464
- }
465
- async function snapshotFileHashes(worktreePath, paths) {
466
- const hashes = new Map();
467
- await Promise.all(paths.map(async (path) => {
468
- hashes.set(path, await fileHash(join(worktreePath, path)));
469
- }));
470
- return hashes;
471
- }
472
- async function changedFileHashes(worktreePath, before) {
473
- const changed = [];
474
- await Promise.all(Array.from(before.entries()).map(async ([path, hash]) => {
475
- if (await fileHash(join(worktreePath, path)) !== hash) {
476
- changed.push(path);
477
- }
478
- }));
479
- return uniqueSortedPaths(changed);
480
- }
481
- async function fileHash(path) {
482
- try {
483
- return createHash('sha256').update(await readFile(path)).digest('hex');
484
- }
485
- catch (error) {
486
- if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
487
- return undefined;
488
- }
489
- throw error;
490
- }
491
- }
492
- export function assertAcceptanceProofReport(value) {
493
- const validation = validateAcceptanceProofReportShape(value);
494
- if (!validation.ok) {
495
- throw new Error(formatAcceptanceProofShapeErrors(validation.errors));
496
- }
497
- }
498
- function validateCriteriaShape(value, errors) {
499
- if (!Array.isArray(value)) {
500
- errors.push('criteria must be an array');
501
- return;
502
- }
503
- for (const [index, item] of value.entries()) {
504
- if (typeof item !== 'object' || item === null || Array.isArray(item)) {
505
- errors.push(`criteria[${index}] must be an object`);
506
- continue;
507
- }
508
- const record = item;
509
- for (const key of ['id', 'description', 'reasoningSummary']) {
510
- if (typeof record[key] !== 'string' || record[key].trim().length === 0) {
511
- errors.push(`criteria[${index}].${key} must be a non-empty string`);
512
- }
513
- }
514
- if (!['passed', 'failed', 'unknown'].includes(String(record.status))) {
515
- errors.push(`criteria[${index}].status is invalid`);
516
- }
517
- if (!['high', 'medium', 'low'].includes(String(record.confidence))) {
518
- errors.push(`criteria[${index}].confidence is invalid`);
519
- }
520
- validateStringArrayShape(record.artifactRefs, `criteria[${index}].artifactRefs`, errors);
521
- }
522
- }
523
- function validateArtifactsShape(value, errors) {
524
- if (!Array.isArray(value)) {
525
- errors.push('artifacts must be an array');
526
- return;
527
- }
528
- for (const [index, item] of value.entries()) {
529
- if (typeof item !== 'object' || item === null || Array.isArray(item)) {
530
- errors.push(`artifacts[${index}] must be an object`);
531
- continue;
532
- }
533
- const record = item;
534
- if (!scopedArtifactTypes.includes(record.type)) {
535
- errors.push(`artifacts[${index}].type is invalid`);
536
- }
537
- if (typeof record.description !== 'string' || record.description.trim().length === 0) {
538
- errors.push(`artifacts[${index}].description must be a non-empty string`);
539
- }
540
- if ('path' in record && typeof record.path !== 'string') {
541
- errors.push(`artifacts[${index}].path must be a string`);
542
- }
543
- if ('url' in record && typeof record.url !== 'string') {
544
- errors.push(`artifacts[${index}].url must be a string`);
545
- }
546
- if (!record.path && !record.url) {
547
- errors.push(`artifacts[${index}] must include path or url`);
548
- }
549
- }
550
- }
551
- function validateProofScriptRepairShape(value, errors) {
552
- if (value === undefined) {
553
- return;
554
- }
555
- const record = valueRecord(value);
556
- if (!record) {
557
- errors.push('proofScriptRepair must be an object');
558
- return;
559
- }
560
- validateStringArrayShape(record.changedPaths, 'proofScriptRepair.changedPaths', errors);
561
- if (typeof record.summary !== 'string' || record.summary.trim().length === 0) {
562
- errors.push('proofScriptRepair.summary must be a non-empty string');
563
- }
564
- }
565
- function validateProofPhaseDiffShape(value, errors) {
566
- const record = valueRecord(value);
567
- if (!record) {
568
- errors.push('proofPhaseDiff must be an object');
569
- return;
570
- }
571
- validateStringArrayShape(record.allowedProofPaths, 'proofPhaseDiff.allowedProofPaths', errors);
572
- validateStringArrayShape(record.forbiddenProductPaths, 'proofPhaseDiff.forbiddenProductPaths', errors);
573
- }
574
- function validateReworkRequestShape(value, errors) {
575
- if (value === undefined) {
576
- return;
577
- }
578
- const record = valueRecord(value);
579
- if (!record) {
580
- errors.push('reworkRequest must be an object');
581
- return;
582
- }
583
- if (typeof record.summary !== 'string' || record.summary.trim().length === 0) {
584
- errors.push('reworkRequest.summary must be a non-empty string');
585
- }
586
- validateStringArrayShape(record.requiredChanges, 'reworkRequest.requiredChanges', errors);
587
- validateStringArrayShape(record.evidenceRefs, 'reworkRequest.evidenceRefs', errors);
588
- }
589
- function validateStringArrayShape(value, key, errors) {
590
- if (!Array.isArray(value) || value.some((item) => typeof item !== 'string')) {
591
- errors.push(`${key} must be a string array`);
592
- }
593
- }
594
- //# sourceMappingURL=acceptance-proof.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acceptance-proof.js","sourceRoot":"","sources":["../../../src/runner/acceptance-proof.ts"],"names":[],"mappings":"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"}